oci_execute_segfault.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. --TEST--
  2. oci_execute() segfault after repeated bind of LOB descriptor
  3. --SKIPIF--
  4. <?php
  5. $target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
  6. require(dirname(__FILE__).'/skipif.inc');
  7. ?>
  8. --FILE--
  9. <?php
  10. require dirname(__FILE__).'/connect.inc';
  11. require dirname(__FILE__).'/create_table.inc';
  12. $ora_sql = "INSERT INTO
  13. ".$schema.$table_name." (blob, clob)
  14. VALUES (empty_blob(), empty_clob())
  15. RETURNING
  16. blob
  17. INTO :v_blob ";
  18. $s = oci_parse($c, $ora_sql);
  19. $blob = oci_new_descriptor($c, OCI_D_LOB);
  20. oci_bind_by_name($s, ":v_blob", $blob, -1, OCI_B_BLOB);
  21. oci_execute($s, OCI_DEFAULT);
  22. var_dump($blob->save("some binary data"));
  23. oci_bind_by_name($s, ":v_blob", $blob, -1, OCI_B_BLOB);
  24. oci_execute($s, OCI_DEFAULT);
  25. var_dump($blob->save("some more binary data"));
  26. $query = 'SELECT blob, DBMS_LOB.GETLENGTH(blob) FROM '.$schema.$table_name.' ORDER BY 2';
  27. $s = oci_parse ($c, $query);
  28. oci_execute($s, OCI_DEFAULT);
  29. while ($arr = oci_fetch_assoc($s)) {
  30. $result = $arr['BLOB']->load();
  31. var_dump($result);
  32. }
  33. require dirname(__FILE__).'/drop_table.inc';
  34. echo "Done\n";
  35. ?>
  36. --EXPECT--
  37. bool(true)
  38. bool(true)
  39. string(16) "some binary data"
  40. string(21) "some more binary data"
  41. Done