05large_object.phpt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. --TEST--
  2. PostgreSQL large object
  3. --EXTENSIONS--
  4. pgsql
  5. --SKIPIF--
  6. <?php include("skipif.inc"); ?>
  7. --FILE--
  8. <?php
  9. include('config.inc');
  10. $db = pg_connect($conn_str);
  11. echo "create/write/close LO\n";
  12. pg_exec ($db, "begin");
  13. $oid = pg_lo_create ($db);
  14. if (!$oid) echo ("pg_lo_create() error\n");
  15. $handle = pg_lo_open ($db, $oid, "w");
  16. if (!$handle) echo ("pg_lo_open() error\n");
  17. pg_lo_write ($handle, "large object data");
  18. pg_lo_close ($handle);
  19. pg_exec ($db, "commit");
  20. echo "open/read/tell/seek/close LO\n";
  21. pg_exec ($db, "begin");
  22. $handle = pg_lo_open ($db, $oid, "w");
  23. var_dump(pg_lo_read($handle, 5));
  24. var_dump(pg_lo_tell($handle));
  25. var_dump(pg_lo_seek($handle, 2, /* PGSQL_SEEK_CUR */)); // This is the default so move cursor from 5
  26. var_dump(pg_lo_read($handle, 100)); // Read to the end because chunk is larger then remaining content
  27. var_dump(pg_lo_tell($handle));
  28. var_dump(pg_lo_seek($handle, 0, PGSQL_SEEK_SET)); /* Reset cursor to beginning */
  29. var_dump(pg_lo_read($handle));
  30. var_dump(pg_lo_seek($handle, -4, PGSQL_SEEK_END)); /* Seek from the end */
  31. var_dump(pg_lo_read($handle));
  32. pg_lo_close($handle);
  33. pg_exec ($db, "commit");
  34. echo "open/read_all/close LO\n";
  35. pg_exec ($db, "begin");
  36. $handle = pg_lo_open ($db, $oid, "w");
  37. /* Will write to stdout */
  38. $bytesWritten = pg_lo_read_all($handle);
  39. echo "\n";
  40. var_dump($bytesWritten);
  41. if (pg_last_error($db)) echo "pg_lo_read_all() error\n".pg_last_error();
  42. pg_lo_close($handle);
  43. pg_exec ($db, "commit");
  44. echo "unlink LO\n";
  45. pg_exec ($db, "begin");
  46. pg_lo_unlink($db, $oid) or print("pg_lo_unlink() error 1\n");
  47. pg_exec ($db, "commit");
  48. // more pg_lo_unlink() tests
  49. echo "Test without connection\n";
  50. pg_exec ($db, "begin");
  51. $oid = pg_lo_create ($db) or print("pg_lo_create() error\n");
  52. pg_lo_unlink($oid) or print("pg_lo_unlink() error 2\n");
  53. pg_exec ($db, "commit");
  54. echo "Test with string oid value\n";
  55. pg_exec ($db, "begin");
  56. $oid = pg_lo_create ($db) or print("pg_lo_create() error\n");
  57. pg_lo_unlink($db, (string)$oid) or print("pg_lo_unlink() error 3\n");
  58. pg_exec ($db, "commit");
  59. echo "import/export LO\n";
  60. $path = __DIR__ . '/';
  61. pg_query($db, 'begin');
  62. $oid = pg_lo_import($db, $path . 'php.gif');
  63. pg_query($db, 'commit');
  64. pg_query($db, 'begin');
  65. @unlink($path . 'php.gif.exported');
  66. pg_lo_export($db, $oid, $path . 'php.gif.exported');
  67. if (!file_exists($path . 'php.gif.exported')) {
  68. echo "Export failed\n";
  69. }
  70. @unlink($path . 'php.gif.exported');
  71. pg_query($db, 'commit');
  72. /* invalid OID values */
  73. try {
  74. pg_lo_create(-15);
  75. } catch (\ValueError $e) {
  76. echo $e->getMessage(), \PHP_EOL;
  77. }
  78. try {
  79. pg_lo_create($db, -15);
  80. } catch (\ValueError $e) {
  81. echo $e->getMessage(), \PHP_EOL;
  82. }
  83. try {
  84. pg_lo_create('giberrish');
  85. } catch (\ValueError $e) {
  86. echo $e->getMessage(), \PHP_EOL;
  87. }
  88. try {
  89. pg_lo_create($db, 'giberrish');
  90. } catch (\ValueError $e) {
  91. echo $e->getMessage(), \PHP_EOL;
  92. }
  93. echo "OK";
  94. ?>
  95. --EXPECTF--
  96. create/write/close LO
  97. open/read/tell/seek/close LO
  98. string(5) "large"
  99. int(5)
  100. bool(true)
  101. string(10) "bject data"
  102. int(17)
  103. bool(true)
  104. string(17) "large object data"
  105. bool(true)
  106. string(4) "data"
  107. open/read_all/close LO
  108. large object data
  109. int(17)
  110. unlink LO
  111. Test without connection
  112. Deprecated: pg_lo_unlink(): Automatic fetching of PostgreSQL connection is deprecated in %s on line %d
  113. Test with string oid value
  114. import/export LO
  115. Deprecated: pg_lo_create(): Automatic fetching of PostgreSQL connection is deprecated in %s on line %d
  116. Invalid OID value passed
  117. Invalid OID value passed
  118. Deprecated: pg_lo_create(): Automatic fetching of PostgreSQL connection is deprecated in %s on line %d
  119. Invalid OID value passed
  120. Invalid OID value passed
  121. OK