xref: /PHP-8.3/ext/oci8/tests/bug71600.phpt (revision a53e5617)
1--TEST--
2Bug #71600 (oci_fetch_all result in segfault when select more than 8 columns)
3--EXTENSIONS--
4oci8
5--SKIPIF--
6<?php
7require_once 'skipifconnectfailure.inc';
8$target_dbs = array('oracledb' => true, 'timesten' => true);  // test runs on these DBs
9require __DIR__.'/skipif.inc';
10?>
11--FILE--
12<?php
13
14require __DIR__.'/connect.inc';
15
16// Initialize
17
18$stmtarray = array(
19         "create table bug71600_tab (col1 number, col2 number, col3 number,
20                                     col4 number, col5 number, col6 number,
21                                     col7 number, col8 number, col9 number)",
22         "insert into bug71600_tab values(1, 2, 3, 4, 5, 6, 7, 8, 9)",
23         "insert into bug71600_tab values(11, 12, 13, 14, 15, 16, 17, 18, 19)"
24);
25
26oci8_test_sql_execute($c, $stmtarray);
27
28// Run test
29
30$sql = "select col1,col2,col3,col4,col5,col6,col7,col8,col9 from bug71600_tab";
31
32echo "Test 1\n";
33$stmt = oci_parse($c, $sql);
34
35echo "Executing SELECT statament...\n";
36oci_execute($stmt,OCI_DEFAULT);
37
38echo "Fetching data by columns...\n";
39oci_fetch_all($stmt, $result);
40oci_free_statement($stmt);
41
42$rsRows=(count($result,1)/($rows = count($result,0)))-1;
43echo "$rsRows Records Found\n";
44$rsCount=0;
45while($rsCount < $rsRows)
46{
47  $col1   =$result['COL1'][$rsCount];
48  $col9   =$result['COL9'][$rsCount];
49  echo "$rsCount|$col1|$col9\n";
50  $rsCount++;
51}
52
53echo "Test 2\n";
54$stmt = oci_parse($c, $sql);
55
56echo "Re-executing SELECT statament...\n";
57oci_execute($stmt,OCI_DEFAULT);
58
59echo "Fetching data by rows...\n";
60oci_fetch_all($stmt, $result, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
61oci_free_statement($stmt);
62
63$rsRows=count($result,0);
64echo "$rsRows Records Found\n";
65$rsCount=0;
66while($rsCount < $rsRows)
67{
68  $col1 = $result[$rsCount]['COL1'];
69  $col9 = $result[$rsCount]['COL9'];
70  echo "$rsCount|$col1|$col9\n";
71  $rsCount++;
72}
73
74
75// Cleanup
76
77$stmtarray = array(
78    "drop table bug71600_tab"
79);
80
81oci8_test_sql_execute($c, $stmtarray);
82
83?>
84--EXPECT--
85Test 1
86Executing SELECT statament...
87Fetching data by columns...
882 Records Found
890|1|9
901|11|19
91Test 2
92Re-executing SELECT statament...
93Fetching data by rows...
942 Records Found
950|1|9
961|11|19
97