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