1--TEST-- 2Bug #42496 (LOB fetch leaks cursors, eventually failing with ORA-1000 maximum open cursors reached) 3--EXTENSIONS-- 4oci8 5--SKIPIF-- 6<?php 7$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs 8require(__DIR__.'/skipif.inc'); 9if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request'); 10?> 11--FILE-- 12<?php 13 14require __DIR__.'/connect.inc'; 15 16// Initialization 17 18$stmtarray = array( 19 "DROP table bug42496_1_tab", 20 "CREATE table bug42496_1_tab(c1 CLOB, c2 CLOB)", 21 "INSERT INTO bug42496_1_tab VALUES('test1', 'test1')", 22 "INSERT INTO bug42496_1_tab VALUES('test2', 'test2')", 23 "INSERT INTO bug42496_1_tab VALUES('test3', 'test3')" 24); 25 26oci8_test_sql_execute($c, $stmtarray); 27 28// Run Test 29 30echo "Test 1\n"; 31 32for ($i = 0; $i < 15000; $i++) { 33 $s = oci_parse($c, "SELECT * from bug42496_1_tab"); 34 oci_define_by_name($s, "C1", $col1); 35 oci_define_by_name($s, "C2", $col2); 36 if (oci_execute($s)) { 37 $arr = array(); 38 while ($arr = oci_fetch_assoc($s)) { 39 $arr['C1']->free(); 40 $arr['C2']->free(); 41 } 42 } 43 oci_free_statement($s); 44} 45 46echo "Done\n"; 47 48// Cleanup 49 50$stmtarray = array( 51 "DROP table bug42496_1_tab" 52); 53 54oci8_test_sql_execute($c, $stmtarray); 55 56?> 57--EXPECT-- 58Test 1 59Done 60