diff options
Diffstat (limited to 'tests/oci_execute_segfault.phpt')
-rw-r--r-- | tests/oci_execute_segfault.phpt | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/oci_execute_segfault.phpt b/tests/oci_execute_segfault.phpt new file mode 100644 index 0000000000..9ba7d770fd --- /dev/null +++ b/tests/oci_execute_segfault.phpt @@ -0,0 +1,48 @@ +--TEST-- +oci_execute() segfault after repeated bind of LOB descriptor +--SKIPIF-- +<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?> +--FILE-- +<?php + +require dirname(__FILE__).'/connect.inc'; +require dirname(__FILE__).'/create_table.inc'; + +$ora_sql = "INSERT INTO + ".$schema.$table_name." (blob, clob) + VALUES (empty_blob(), empty_clob()) + RETURNING + blob + INTO :v_blob "; + +$s = oci_parse($c, $ora_sql); +$blob = oci_new_descriptor($c, OCI_D_LOB); +oci_bind_by_name($s, ":v_blob", $blob, -1, OCI_B_BLOB); +oci_execute($s, OCI_DEFAULT); +var_dump($blob->save("some binary data")); + +oci_bind_by_name($s, ":v_blob", $blob, -1, OCI_B_BLOB); +oci_execute($s, OCI_DEFAULT); +var_dump($blob->save("some more binary data")); + +$query = 'SELECT blob, DBMS_LOB.GETLENGTH(blob) FROM '.$schema.$table_name.' ORDER BY 2'; + +$s = oci_parse ($c, $query); +oci_execute($s, OCI_DEFAULT); + +while ($arr = oci_fetch_assoc($s)) { + $result = $arr['BLOB']->load(); + var_dump($result); +} + +require dirname(__FILE__).'/drop_table.inc'; + +echo "Done\n"; + +?> +--EXPECT-- +bool(true) +bool(true) +string(16) "some binary data" +string(21) "some more binary data" +Done |