bug68371.phpt 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. --TEST--
  2. PDO PgSQL Bug #38671 (PDO#getAttribute() cannot be called with platform-specific attribute names)
  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. ?>
  12. --FILE--
  13. <?php
  14. require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
  15. $pdo = PDOTest::test_factory(__DIR__ . '/common.phpt');
  16. $pdo->setAttribute (\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
  17. $attrs = array(
  18. // Extensive test: default value and set+get values
  19. PDO::ATTR_EMULATE_PREPARES => array(null, true, false),
  20. PDO::PGSQL_ATTR_DISABLE_PREPARES => array(null, true, false),
  21. // Just test the default
  22. PDO::ATTR_AUTOCOMMIT => array(null),
  23. PDO::ATTR_PREFETCH => array(null),
  24. PDO::ATTR_TIMEOUT => array(null),
  25. PDO::ATTR_ERRMODE => array(null),
  26. PDO::ATTR_SERVER_VERSION => array(null),
  27. PDO::ATTR_CLIENT_VERSION => array(null),
  28. PDO::ATTR_SERVER_INFO => array(null),
  29. PDO::ATTR_CONNECTION_STATUS => array(null),
  30. PDO::ATTR_CASE => array(null),
  31. PDO::ATTR_CURSOR_NAME => array(null),
  32. PDO::ATTR_CURSOR => array(null),
  33. PDO::ATTR_ORACLE_NULLS => array(null),
  34. PDO::ATTR_PERSISTENT => array(null),
  35. PDO::ATTR_STATEMENT_CLASS => array(null),
  36. PDO::ATTR_FETCH_TABLE_NAMES => array(null),
  37. PDO::ATTR_FETCH_CATALOG_NAMES => array(null),
  38. PDO::ATTR_DRIVER_NAME => array(null),
  39. PDO::ATTR_STRINGIFY_FETCHES => array(null),
  40. PDO::ATTR_MAX_COLUMN_LEN => array(null),
  41. PDO::ATTR_DEFAULT_FETCH_MODE => array(null),
  42. );
  43. foreach ($attrs as $a => $vals) {
  44. foreach ($vals as $v) {
  45. try {
  46. if (!isset($v)) {
  47. var_dump($pdo->getAttribute($a));
  48. } else {
  49. $pdo->setAttribute($a, $v);
  50. if ($pdo->getAttribute($a) === $v) {
  51. echo "OK\n";
  52. } else {
  53. throw new \Exception('KO');
  54. }
  55. }
  56. } catch (\Exception $e) {
  57. if ($e->getCode() == 'IM001') {
  58. echo "ERR\n";
  59. } else {
  60. echo "ERR {$e->getMessage()}\n";
  61. }
  62. }
  63. }
  64. }
  65. ?>
  66. --EXPECTF--
  67. bool(false)
  68. OK
  69. OK
  70. bool(false)
  71. OK
  72. OK
  73. ERR
  74. ERR
  75. ERR
  76. int(2)
  77. string(%d) "%s"
  78. string(%d) "%s"
  79. string(%d) "%s"
  80. string(31) "%s"
  81. int(2)
  82. ERR
  83. ERR
  84. int(0)
  85. bool(false)
  86. array(1) {
  87. [0]=>
  88. string(12) "PDOStatement"
  89. }
  90. ERR
  91. ERR
  92. string(5) "pgsql"
  93. ERR
  94. ERR
  95. int(4)