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