Annotation of embedaddon/php/ext/oci8/tests/bug41069.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Bug #41069 (Oracle crash with certain data over a DB-link when prefetch memory limit used - Oracle bug 6039623)
3: --SKIPIF--
4: <?php
5: $target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
6: require(dirname(__FILE__).'/skipif.inc');
7: if (empty($dbase)) die ("skip requires network connection alias for DB link loopback");
8: if ($test_drcp) die("skip DRCP does not support shared database links");
9: ?>
10: --INI--
11: oci8.default_prefetch=5
12: --FILE--
13: <?php
14:
15: require(dirname(__FILE__).'/connect.inc');
16:
17: // Initialization
18:
19: $stmtarray = array(
20: "alter session set nls_date_format = 'MM/DD/YYYY'",
21:
22: "drop database link bug41069_dblink",
23:
24: "drop table bug41069_tab",
25:
26: "create shared database link bug41069_dblink authenticated by $user identified by $password using '$dbase'",
27:
28: "create table bug41069_tab
29: (
30: c1 number(20),
31: c2 varchar2(60 byte),
32: c3 varchar2(1000 byte),
33: c4 varchar2(255 byte),
34: c5 varchar2(2 byte),
35: c6 varchar2(1 byte),
36: c7 varchar2(255 byte),
37: c8 varchar2(50 byte),
38: c9 date,
39: c10 date,
40: c12 number(20),
41: c13 varchar2(20 byte),
42: c15 varchar2(50 byte)
43: )",
44:
45: "insert into bug41069_tab (c1, c2, c5, c6, c9, c10, c12, c15) values
46: (111, 'aaaaaaa', 'b', 'c', '01/17/2008', '01/07/2017', 2222, 'zzzzzzzzzz')",
47:
48: "insert into bug41069_tab (c1, c2, c3, c4, c5, c6, c7, c9, c10, c12, c13, c15) values
49: (112, 'aaaaaaa', 'bbbbbbbb', 'ccccccc', 'd', 'e', 'rrrrrrr', '04/16/2007', '04/16/2007', 2223, 'xxxxxxxx', 'zzzzzzzz')",
50:
51: "insert into bug41069_tab (c1, c2, c3, c4, c5, c6, c7, c9, c10, c12, c15) values
52: (113, 'aaaaaaa', 'bbbbbbbbbb', 'cccccc', 'e', 'f', 'dddd', '12/04/2006', '12/04/2006', 2224, 'zzzzzzz')"
53: );
54:
55: oci8_test_sql_execute($c, $stmtarray);
56:
57:
58: // Run Tests
59:
60: echo "Test 1: non-DB link case that always worked\n";
61: $stid = oci_parse($c, 'select * from bug41069_tab order by c1');
62: oci_execute($stid, OCI_DEFAULT);
63: oci_fetch_all($stid, $results, 0, -1, OCI_ASSOC+OCI_FETCHSTATEMENT_BY_ROW);
64: var_dump($results);
65:
66: echo "Test 2: Should not crash\n";
67: $stid = oci_parse($c, 'select * from bug41069_tab@bug41069_dblink order by c1');
68: oci_execute($stid, OCI_DEFAULT);
69: oci_fetch_all($stid, $results, 0, -1, OCI_ASSOC+OCI_FETCHSTATEMENT_BY_ROW);
70: var_dump($results);
71:
72: // Cleanup
73:
74: $c = oci_new_connect($user, $password, $dbase);
75:
76: $stmtarray = array(
77: "drop database link bug41069_dblink",
78: "drop table bug41069_tab"
79: );
80:
81: oci8_test_sql_execute($c, $stmtarray);
82:
83: echo "Done\n";
84:
85: ?>
86: --EXPECT--
87: Test 1: non-DB link case that always worked
88: array(3) {
89: [0]=>
90: array(13) {
91: ["C1"]=>
92: string(3) "111"
93: ["C2"]=>
94: string(7) "aaaaaaa"
95: ["C3"]=>
96: NULL
97: ["C4"]=>
98: NULL
99: ["C5"]=>
100: string(1) "b"
101: ["C6"]=>
102: string(1) "c"
103: ["C7"]=>
104: NULL
105: ["C8"]=>
106: NULL
107: ["C9"]=>
108: string(10) "01/17/2008"
109: ["C10"]=>
110: string(10) "01/07/2017"
111: ["C12"]=>
112: string(4) "2222"
113: ["C13"]=>
114: NULL
115: ["C15"]=>
116: string(10) "zzzzzzzzzz"
117: }
118: [1]=>
119: array(13) {
120: ["C1"]=>
121: string(3) "112"
122: ["C2"]=>
123: string(7) "aaaaaaa"
124: ["C3"]=>
125: string(8) "bbbbbbbb"
126: ["C4"]=>
127: string(7) "ccccccc"
128: ["C5"]=>
129: string(1) "d"
130: ["C6"]=>
131: string(1) "e"
132: ["C7"]=>
133: string(7) "rrrrrrr"
134: ["C8"]=>
135: NULL
136: ["C9"]=>
137: string(10) "04/16/2007"
138: ["C10"]=>
139: string(10) "04/16/2007"
140: ["C12"]=>
141: string(4) "2223"
142: ["C13"]=>
143: string(8) "xxxxxxxx"
144: ["C15"]=>
145: string(8) "zzzzzzzz"
146: }
147: [2]=>
148: array(13) {
149: ["C1"]=>
150: string(3) "113"
151: ["C2"]=>
152: string(7) "aaaaaaa"
153: ["C3"]=>
154: string(10) "bbbbbbbbbb"
155: ["C4"]=>
156: string(6) "cccccc"
157: ["C5"]=>
158: string(1) "e"
159: ["C6"]=>
160: string(1) "f"
161: ["C7"]=>
162: string(4) "dddd"
163: ["C8"]=>
164: NULL
165: ["C9"]=>
166: string(10) "12/04/2006"
167: ["C10"]=>
168: string(10) "12/04/2006"
169: ["C12"]=>
170: string(4) "2224"
171: ["C13"]=>
172: NULL
173: ["C15"]=>
174: string(7) "zzzzzzz"
175: }
176: }
177: Test 2: Should not crash
178: array(3) {
179: [0]=>
180: array(13) {
181: ["C1"]=>
182: string(3) "111"
183: ["C2"]=>
184: string(7) "aaaaaaa"
185: ["C3"]=>
186: NULL
187: ["C4"]=>
188: NULL
189: ["C5"]=>
190: string(1) "b"
191: ["C6"]=>
192: string(1) "c"
193: ["C7"]=>
194: NULL
195: ["C8"]=>
196: NULL
197: ["C9"]=>
198: string(10) "01/17/2008"
199: ["C10"]=>
200: string(10) "01/07/2017"
201: ["C12"]=>
202: string(4) "2222"
203: ["C13"]=>
204: NULL
205: ["C15"]=>
206: string(10) "zzzzzzzzzz"
207: }
208: [1]=>
209: array(13) {
210: ["C1"]=>
211: string(3) "112"
212: ["C2"]=>
213: string(7) "aaaaaaa"
214: ["C3"]=>
215: string(8) "bbbbbbbb"
216: ["C4"]=>
217: string(7) "ccccccc"
218: ["C5"]=>
219: string(1) "d"
220: ["C6"]=>
221: string(1) "e"
222: ["C7"]=>
223: string(7) "rrrrrrr"
224: ["C8"]=>
225: NULL
226: ["C9"]=>
227: string(10) "04/16/2007"
228: ["C10"]=>
229: string(10) "04/16/2007"
230: ["C12"]=>
231: string(4) "2223"
232: ["C13"]=>
233: string(8) "xxxxxxxx"
234: ["C15"]=>
235: string(8) "zzzzzzzz"
236: }
237: [2]=>
238: array(13) {
239: ["C1"]=>
240: string(3) "113"
241: ["C2"]=>
242: string(7) "aaaaaaa"
243: ["C3"]=>
244: string(10) "bbbbbbbbbb"
245: ["C4"]=>
246: string(6) "cccccc"
247: ["C5"]=>
248: string(1) "e"
249: ["C6"]=>
250: string(1) "f"
251: ["C7"]=>
252: string(4) "dddd"
253: ["C8"]=>
254: NULL
255: ["C9"]=>
256: string(10) "12/04/2006"
257: ["C10"]=>
258: string(10) "12/04/2006"
259: ["C12"]=>
260: string(4) "2224"
261: ["C13"]=>
262: NULL
263: ["C15"]=>
264: string(7) "zzzzzzz"
265: }
266: }
267: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>