summaryrefslogtreecommitdiff
path: root/ext/oci8/tests/bug42496_2.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/oci8/tests/bug42496_2.phpt')
-rw-r--r--ext/oci8/tests/bug42496_2.phpt55
1 files changed, 55 insertions, 0 deletions
diff --git a/ext/oci8/tests/bug42496_2.phpt b/ext/oci8/tests/bug42496_2.phpt
new file mode 100644
index 0000000..71854f3
--- /dev/null
+++ b/ext/oci8/tests/bug42496_2.phpt
@@ -0,0 +1,55 @@
+--TEST--
+Bug #42496 (LOB fetch leaks cursors, eventually failing with ORA-1000 maximum open cursors reached)
+--SKIPIF--
+<?php
+$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
+require(dirname(__FILE__).'/skipif.inc');
+if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
+?>
+--FILE--
+<?php
+
+require dirname(__FILE__).'/connect.inc';
+
+// Initialization
+
+$stmtarray = array(
+ "DROP table bug42496_2_tab",
+ "CREATE table bug42496_2_tab(c1 CLOB, c2 CLOB)",
+ "INSERT INTO bug42496_2_tab VALUES('test1', 'test1')",
+ "INSERT INTO bug42496_2_tab VALUES('test2', 'test2')",
+ "INSERT INTO bug42496_2_tab VALUES('test3', 'test3')"
+);
+
+oci8_test_sql_execute($c, $stmtarray);
+
+// Run Test
+
+echo "Test 2\n";
+
+for ($i = 0; $i < 15000; $i++) {
+ $s = oci_parse($c, "SELECT * from bug42496_2_tab");
+ if (oci_execute($s)) {
+ $arr = array();
+ while ($arr = oci_fetch_assoc($s)) {
+ $arr['C1']->free();
+ $arr['C2']->free();
+ }
+ }
+ oci_free_statement($s);
+}
+
+echo "Done\n";
+
+// Cleanup
+
+$stmtarray = array(
+ "DROP table bug42496_2_tab"
+);
+
+oci8_test_sql_execute($c, $stmtarray);
+
+?>
+--EXPECTF--
+Test 2
+Done