xref: /PHP-8.0/ext/oci8/tests/bug42496_1.phpt (revision f8d79582)
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_1_tab",
18    "CREATE table bug42496_1_tab(c1 CLOB, c2 CLOB)",
19    "INSERT INTO bug42496_1_tab VALUES('test1', 'test1')",
20    "INSERT INTO bug42496_1_tab VALUES('test2', 'test2')",
21    "INSERT INTO bug42496_1_tab VALUES('test3', 'test3')"
22);
23
24oci8_test_sql_execute($c, $stmtarray);
25
26// Run Test
27
28echo "Test 1\n";
29
30for ($i = 0; $i < 15000; $i++) {
31    $s = oci_parse($c, "SELECT * from bug42496_1_tab");
32    oci_define_by_name($s, "C1", $col1);
33    oci_define_by_name($s, "C2", $col2);
34    if (oci_execute($s)) {
35        $arr = array();
36        while ($arr = oci_fetch_assoc($s)) {
37            $arr['C1']->free();
38            $arr['C2']->free();
39        }
40    }
41    oci_free_statement($s);
42}
43
44echo "Done\n";
45
46// Cleanup
47
48$stmtarray = array(
49    "DROP table bug42496_1_tab"
50);
51
52oci8_test_sql_execute($c, $stmtarray);
53
54?>
55--EXPECT--
56Test 1
57Done
58