lob_043.phpt 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. --TEST--
  2. Bug #49560 (LOB resource destructor and refcount test)
  3. --EXTENSIONS--
  4. oci8
  5. --SKIPIF--
  6. <?php
  7. $target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs
  8. require(__DIR__.'/skipif.inc');
  9. if (getenv('SKIP_SLOW_TESTS')) die('skip slow tests excluded by request');
  10. ?>
  11. --FILE--
  12. <?php
  13. require(__DIR__.'/connect.inc');
  14. // Initialization
  15. $stmtarray = array(
  16. "drop table lob_043_tab",
  17. "create table lob_043_tab(id number, c1 clob)",
  18. "begin
  19. for i in 1..50000 loop
  20. insert into lob_043_tab (id, c1) values (i, i || ' abcdefghijklmnopq');
  21. end loop;
  22. end;",
  23. );
  24. oci8_test_sql_execute($c, $stmtarray);
  25. // Run Test
  26. function f1($c)
  27. {
  28. $s = oci_parse($c, 'select id, c1 from lob_043_tab order by id');
  29. oci_execute($s);
  30. $r = array();
  31. while (($row = oci_fetch_array($s, OCI_RETURN_NULLS+OCI_ASSOC+OCI_RETURN_LOBS)) !== false) {
  32. $r[] = $row['C1'];
  33. }
  34. echo "f1 ended\n";
  35. return $r;
  36. }
  37. function f2($c)
  38. {
  39. $s = oci_parse($c, 'select id, c1 from lob_043_tab order by id');
  40. oci_execute($s);
  41. $r = array();
  42. while (($row = oci_fetch_array($s, OCI_RETURN_NULLS+OCI_ASSOC)) !== false) {
  43. $r[] = $row['C1'];
  44. }
  45. echo "f2 ended\n";
  46. return $r;
  47. }
  48. echo "Test 1\n";
  49. $r = f1($c);
  50. /*
  51. foreach ($r as $v) {
  52. echo $v, "\n";
  53. }
  54. */
  55. echo "Test 2\n";
  56. $r = f2($c);
  57. /*
  58. foreach ($r as $v) {
  59. echo $v->load(), "\n";
  60. }
  61. */
  62. // Clean up
  63. $stmtarray = array(
  64. "drop table lob_043_tab"
  65. );
  66. oci8_test_sql_execute($c, $stmtarray);
  67. oci_close($c);
  68. ?>
  69. --EXPECT--
  70. Test 1
  71. f1 ended
  72. Test 2
  73. f2 ended