bug48764.phpt 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. --TEST--
  2. Bug #48764 (PDO_pgsql::query always uses implicit prepared statements if v3 proto available)
  3. --EXTENSIONS--
  4. pdo
  5. pdo_pgsql
  6. --SKIPIF--
  7. <?php
  8. require __DIR__ . '/config.inc';
  9. require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
  10. PDOTest::skip();
  11. $db = PDOTest::factory();
  12. $client_version = $db->getAttribute(PDO::ATTR_CLIENT_VERSION);
  13. $server_version = $db->getAttribute(PDO::ATTR_SERVER_VERSION);
  14. if (version_compare($server_version, '7.4', '<') || version_compare($client_version, '7.4', '<') || version_compare($server_version, '10', '>=')) {
  15. die('skip');
  16. }
  17. ?>
  18. --FILE--
  19. <?php
  20. require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
  21. $db = PDOTest::test_factory(__DIR__ . '/common.phpt');
  22. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  23. echo "Test 1\n";
  24. bug($db);
  25. echo "Test 2\n";
  26. bug($db, array(PDO::ATTR_EMULATE_PREPARES => 0));
  27. bug($db, array(PDO::ATTR_EMULATE_PREPARES => 1));
  28. echo "Test 3\n";
  29. $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
  30. bug($db);
  31. $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
  32. bug($db);
  33. putenv('PDOTEST_ATTR='.serialize(array(
  34. PDO::ATTR_EMULATE_PREPARES => 1,
  35. )));
  36. $db = PDOTest::factory('PDO', false);
  37. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  38. echo "Test 4\n";
  39. bug($db);
  40. bug($db, array(PDO::ATTR_EMULATE_PREPARES => 0));
  41. putenv('PDOTEST_ATTR');
  42. function bug($db, $options = array()) {
  43. try {
  44. $stmt = $db->prepare("SELECT ?", $options);
  45. $stmt->execute(array(1));
  46. echo "OK\n";
  47. } catch (PDOException $e) {
  48. // Indetermined data type when using native prepared statements
  49. echo $e->getCode()."\n";
  50. }
  51. }
  52. ?>
  53. --EXPECT--
  54. Test 1
  55. 42P18
  56. Test 2
  57. 42P18
  58. OK
  59. Test 3
  60. OK
  61. 42P18
  62. Test 4
  63. OK
  64. 42P18