xref: /PHP-7.4/ext/oci8/tests/bug43492.phpt (revision 26dfce7f)
1--TEST--
2Bug #43492 (Nested cursor leaks)
3--SKIPIF--
4<?php
5$target_dbs = array('oracledb' => true, 'timesten' => false);  // test runs on these DBs
6require(__DIR__.'/skipif.inc');
7?>
8--FILE--
9<?php
10
11require __DIR__.'/connect.inc';
12
13$stmtarray = array(
14    "DROP table bug43492_tab",
15    "CREATE TABLE bug43492_tab(col1 VARCHAR2(1))",
16    "INSERT INTO bug43492_tab VALUES ('A')",
17    "INSERT INTO bug43492_tab VALUES ('B')",
18    "INSERT INTO bug43492_tab VALUES ('C')",
19    "INSERT INTO bug43492_tab VALUES ('D')",
20    "INSERT INTO bug43492_tab VALUES ('E')",
21    "INSERT INTO bug43492_tab VALUES ('F')",
22    "INSERT INTO bug43492_tab VALUES ('G')",
23    "INSERT INTO bug43492_tab VALUES ('H')",
24    "INSERT INTO bug43492_tab VALUES ('I')",
25    "INSERT INTO bug43492_tab VALUES ('J')"
26);
27
28oci8_test_sql_execute($c, $stmtarray);
29
30/*
31
32While fetching data from a ref cursor, the parent statement needs to
33be around.  Also when the parent statement goes out of scope, it is
34not automatically released which causes a cursor leak.
35
36If either or both of the lines marked (*) are removed, then the script
37will fail with the error "ORA-01000: maximum open cursors exceeded".
38
39*/
40
41function fetch($c, $i) {
42    global $s;   //  (*) Allow parent statement to be available when child is used
43    $s = ociparse($c, 'select cursor(select * from bug43492_tab) c from bug43492_tab');
44    ociexecute($s, OCI_DEFAULT);
45    ocifetchinto($s, $result, OCI_ASSOC);
46    ociexecute($result['C'], OCI_DEFAULT);
47    return $result['C'];
48}
49
50for($i = 0; $i < 300; $i++) {
51    $cur = fetch($c, $i);
52    for($j = 0; $j < 10; $j++) {
53        ocifetchinto($cur, $row, OCI_NUM);
54        echo "$row[0] ";
55    }
56    echo "\n";
57    ocifreestatement($cur);
58    ocifreestatement($s);   // (*) Free the parent statement cleanly
59}
60
61echo "Done\n";
62
63// Cleanup
64
65$stmtarray = array(
66    "DROP table bug43492_tab"
67);
68
69oci8_test_sql_execute($c, $stmtarray);
70
71?>
72--EXPECT--
73A B C D E F G H I J
74A B C D E F G H I J
75A B C D E F G H I J
76A B C D E F G H I J
77A B C D E F G H I J
78A B C D E F G H I J
79A B C D E F G H I J
80A B C D E F G H I J
81A B C D E F G H I J
82A B C D E F G H I J
83A B C D E F G H I J
84A B C D E F G H I J
85A B C D E F G H I J
86A B C D E F G H I J
87A B C D E F G H I J
88A B C D E F G H I J
89A B C D E F G H I J
90A B C D E F G H I J
91A B C D E F G H I J
92A B C D E F G H I J
93A B C D E F G H I J
94A B C D E F G H I J
95A B C D E F G H I J
96A B C D E F G H I J
97A B C D E F G H I J
98A B C D E F G H I J
99A B C D E F G H I J
100A B C D E F G H I J
101A B C D E F G H I J
102A B C D E F G H I J
103A B C D E F G H I J
104A B C D E F G H I J
105A B C D E F G H I J
106A B C D E F G H I J
107A B C D E F G H I J
108A B C D E F G H I J
109A B C D E F G H I J
110A B C D E F G H I J
111A B C D E F G H I J
112A B C D E F G H I J
113A B C D E F G H I J
114A B C D E F G H I J
115A B C D E F G H I J
116A B C D E F G H I J
117A B C D E F G H I J
118A B C D E F G H I J
119A B C D E F G H I J
120A B C D E F G H I J
121A B C D E F G H I J
122A B C D E F G H I J
123A B C D E F G H I J
124A B C D E F G H I J
125A B C D E F G H I J
126A B C D E F G H I J
127A B C D E F G H I J
128A B C D E F G H I J
129A B C D E F G H I J
130A B C D E F G H I J
131A B C D E F G H I J
132A B C D E F G H I J
133A B C D E F G H I J
134A B C D E F G H I J
135A B C D E F G H I J
136A B C D E F G H I J
137A B C D E F G H I J
138A B C D E F G H I J
139A B C D E F G H I J
140A B C D E F G H I J
141A B C D E F G H I J
142A B C D E F G H I J
143A B C D E F G H I J
144A B C D E F G H I J
145A B C D E F G H I J
146A B C D E F G H I J
147A B C D E F G H I J
148A B C D E F G H I J
149A B C D E F G H I J
150A B C D E F G H I J
151A B C D E F G H I J
152A B C D E F G H I J
153A B C D E F G H I J
154A B C D E F G H I J
155A B C D E F G H I J
156A B C D E F G H I J
157A B C D E F G H I J
158A B C D E F G H I J
159A B C D E F G H I J
160A B C D E F G H I J
161A B C D E F G H I J
162A B C D E F G H I J
163A B C D E F G H I J
164A B C D E F G H I J
165A B C D E F G H I J
166A B C D E F G H I J
167A B C D E F G H I J
168A B C D E F G H I J
169A B C D E F G H I J
170A B C D E F G H I J
171A B C D E F G H I J
172A B C D E F G H I J
173A B C D E F G H I J
174A B C D E F G H I J
175A B C D E F G H I J
176A B C D E F G H I J
177A B C D E F G H I J
178A B C D E F G H I J
179A B C D E F G H I J
180A B C D E F G H I J
181A B C D E F G H I J
182A B C D E F G H I J
183A B C D E F G H I J
184A B C D E F G H I J
185A B C D E F G H I J
186A B C D E F G H I J
187A B C D E F G H I J
188A B C D E F G H I J
189A B C D E F G H I J
190A B C D E F G H I J
191A B C D E F G H I J
192A B C D E F G H I J
193A B C D E F G H I J
194A B C D E F G H I J
195A B C D E F G H I J
196A B C D E F G H I J
197A B C D E F G H I J
198A B C D E F G H I J
199A B C D E F G H I J
200A B C D E F G H I J
201A B C D E F G H I J
202A B C D E F G H I J
203A B C D E F G H I J
204A B C D E F G H I J
205A B C D E F G H I J
206A B C D E F G H I J
207A B C D E F G H I J
208A B C D E F G H I J
209A B C D E F G H I J
210A B C D E F G H I J
211A B C D E F G H I J
212A B C D E F G H I J
213A B C D E F G H I J
214A B C D E F G H I J
215A B C D E F G H I J
216A B C D E F G H I J
217A B C D E F G H I J
218A B C D E F G H I J
219A B C D E F G H I J
220A B C D E F G H I J
221A B C D E F G H I J
222A B C D E F G H I J
223A B C D E F G H I J
224A B C D E F G H I J
225A B C D E F G H I J
226A B C D E F G H I J
227A B C D E F G H I J
228A B C D E F G H I J
229A B C D E F G H I J
230A B C D E F G H I J
231A B C D E F G H I J
232A B C D E F G H I J
233A B C D E F G H I J
234A B C D E F G H I J
235A B C D E F G H I J
236A B C D E F G H I J
237A B C D E F G H I J
238A B C D E F G H I J
239A B C D E F G H I J
240A B C D E F G H I J
241A B C D E F G H I J
242A B C D E F G H I J
243A B C D E F G H I J
244A B C D E F G H I J
245A B C D E F G H I J
246A B C D E F G H I J
247A B C D E F G H I J
248A B C D E F G H I J
249A B C D E F G H I J
250A B C D E F G H I J
251A B C D E F G H I J
252A B C D E F G H I J
253A B C D E F G H I J
254A B C D E F G H I J
255A B C D E F G H I J
256A B C D E F G H I J
257A B C D E F G H I J
258A B C D E F G H I J
259A B C D E F G H I J
260A B C D E F G H I J
261A B C D E F G H I J
262A B C D E F G H I J
263A B C D E F G H I J
264A B C D E F G H I J
265A B C D E F G H I J
266A B C D E F G H I J
267A B C D E F G H I J
268A B C D E F G H I J
269A B C D E F G H I J
270A B C D E F G H I J
271A B C D E F G H I J
272A B C D E F G H I J
273A B C D E F G H I J
274A B C D E F G H I J
275A B C D E F G H I J
276A B C D E F G H I J
277A B C D E F G H I J
278A B C D E F G H I J
279A B C D E F G H I J
280A B C D E F G H I J
281A B C D E F G H I J
282A B C D E F G H I J
283A B C D E F G H I J
284A B C D E F G H I J
285A B C D E F G H I J
286A B C D E F G H I J
287A B C D E F G H I J
288A B C D E F G H I J
289A B C D E F G H I J
290A B C D E F G H I J
291A B C D E F G H I J
292A B C D E F G H I J
293A B C D E F G H I J
294A B C D E F G H I J
295A B C D E F G H I J
296A B C D E F G H I J
297A B C D E F G H I J
298A B C D E F G H I J
299A B C D E F G H I J
300A B C D E F G H I J
301A B C D E F G H I J
302A B C D E F G H I J
303A B C D E F G H I J
304A B C D E F G H I J
305A B C D E F G H I J
306A B C D E F G H I J
307A B C D E F G H I J
308A B C D E F G H I J
309A B C D E F G H I J
310A B C D E F G H I J
311A B C D E F G H I J
312A B C D E F G H I J
313A B C D E F G H I J
314A B C D E F G H I J
315A B C D E F G H I J
316A B C D E F G H I J
317A B C D E F G H I J
318A B C D E F G H I J
319A B C D E F G H I J
320A B C D E F G H I J
321A B C D E F G H I J
322A B C D E F G H I J
323A B C D E F G H I J
324A B C D E F G H I J
325A B C D E F G H I J
326A B C D E F G H I J
327A B C D E F G H I J
328A B C D E F G H I J
329A B C D E F G H I J
330A B C D E F G H I J
331A B C D E F G H I J
332A B C D E F G H I J
333A B C D E F G H I J
334A B C D E F G H I J
335A B C D E F G H I J
336A B C D E F G H I J
337A B C D E F G H I J
338A B C D E F G H I J
339A B C D E F G H I J
340A B C D E F G H I J
341A B C D E F G H I J
342A B C D E F G H I J
343A B C D E F G H I J
344A B C D E F G H I J
345A B C D E F G H I J
346A B C D E F G H I J
347A B C D E F G H I J
348A B C D E F G H I J
349A B C D E F G H I J
350A B C D E F G H I J
351A B C D E F G H I J
352A B C D E F G H I J
353A B C D E F G H I J
354A B C D E F G H I J
355A B C D E F G H I J
356A B C D E F G H I J
357A B C D E F G H I J
358A B C D E F G H I J
359A B C D E F G H I J
360A B C D E F G H I J
361A B C D E F G H I J
362A B C D E F G H I J
363A B C D E F G H I J
364A B C D E F G H I J
365A B C D E F G H I J
366A B C D E F G H I J
367A B C D E F G H I J
368A B C D E F G H I J
369A B C D E F G H I J
370A B C D E F G H I J
371A B C D E F G H I J
372A B C D E F G H I J
373Done
374