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