bug71600.phpt 2.1 KB

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