MDL-50771 oracle: Bind long (>4000byte) text as CLOB
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Sun, 12 Jul 2015 10:19:28 +0000 (12:19 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Mon, 3 Aug 2015 08:50:56 +0000 (10:50 +0200)
commit15c0a8507184cc68833ae2db0c94b3da2d7ae5ae
treeb7dcc3c3109ea2204d6c3cd24f4501183c6bd5ed
parent032a4fe51ccf41cbd3c310d52ca5b7777ffb5123
MDL-50771 oracle: Bind long (>4000byte) text as CLOB

While we already were detecting @ normalise_value()
both BLOBs and CLOBs properly on insert and update
statements (by introspectind the column specs), when
a long TEXT is being passed as part of an arbitrary
SQL, or within the conditions... it was being bound
as VARCHAR, leading to problems if used in combination
with DBMS_LOB functions.

This patch just ensures that any TEXT > 4000 bytes not
detected by normalise_value() will be, always, bound as CLOB,
unconditionally.

Covered with tests both covering its use with DBMS_LOB (the
reported bug) and also in general raw statements.
lib/dml/oci_native_moodle_database.php
lib/dml/tests/dml_test.php