bug68199.phpt 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. --TEST--
  2. Bug #68199 (PDO::pgsqlGetNotify doesn't support NOTIFY payloads)
  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. if (version_compare($db->getAttribute(PDO::ATTR_SERVER_VERSION), '9.0.0') < 0) {
  13. die("skip Requires 9.0+");
  14. }
  15. ?>
  16. --FILE--
  17. <?php
  18. require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
  19. $db = PDOTest::test_factory(__DIR__ . '/common.phpt');
  20. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  21. // pgsqlGetPid should return something meaningful
  22. $pid = $db->pgsqlGetPid();
  23. var_dump($pid > 0);
  24. // No listen, no notifies
  25. var_dump($db->pgsqlGetNotify());
  26. // Listen started, no notifies
  27. $db->exec("LISTEN notifies_phpt");
  28. var_dump($db->pgsqlGetNotify());
  29. // No parameters with payload, use default PDO::FETCH_NUM
  30. $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_NUM);
  31. $db->exec("NOTIFY notifies_phpt, 'payload'");
  32. $notify = $db->pgsqlGetNotify();
  33. var_dump(count($notify));
  34. var_dump($notify[0]);
  35. var_dump($notify[1] == $pid);
  36. var_dump($notify[2]);
  37. // No parameters with payload, use default PDO::FETCH_ASSOC
  38. $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
  39. $db->exec("NOTIFY notifies_phpt, 'payload'");
  40. $notify = $db->pgsqlGetNotify();
  41. var_dump(count($notify));
  42. var_dump($notify['message']);
  43. var_dump($notify['pid'] == $pid);
  44. var_dump($notify['payload']);
  45. // Test PDO::FETCH_NUM as parameter with payload
  46. $db->exec("NOTIFY notifies_phpt, 'payload'");
  47. $notify = $db->pgsqlGetNotify(PDO::FETCH_NUM);
  48. var_dump(count($notify));
  49. var_dump($notify[0]);
  50. var_dump($notify[1] == $pid);
  51. var_dump($notify[2]);
  52. // Test PDO::FETCH_ASSOC as parameter with payload
  53. $db->exec("NOTIFY notifies_phpt, 'payload'");
  54. $notify = $db->pgsqlGetNotify(PDO::FETCH_ASSOC);
  55. var_dump(count($notify));
  56. var_dump($notify['message']);
  57. var_dump($notify['pid'] == $pid);
  58. var_dump($notify['payload']);
  59. // Test PDO::FETCH_BOTH as parameter with payload
  60. $db->exec("NOTIFY notifies_phpt, 'payload'");
  61. $notify = $db->pgsqlGetNotify(PDO::FETCH_BOTH);
  62. var_dump(count($notify));
  63. var_dump($notify['message']);
  64. var_dump($notify['pid'] == $pid);
  65. var_dump($notify['payload']);
  66. var_dump($notify[0]);
  67. var_dump($notify[1] == $pid);
  68. var_dump($notify[2]);
  69. // Verify that there are no notifies queued
  70. var_dump($db->pgsqlGetNotify());
  71. ?>
  72. --EXPECT--
  73. bool(true)
  74. bool(false)
  75. bool(false)
  76. int(3)
  77. string(13) "notifies_phpt"
  78. bool(true)
  79. string(7) "payload"
  80. int(3)
  81. string(13) "notifies_phpt"
  82. bool(true)
  83. string(7) "payload"
  84. int(3)
  85. string(13) "notifies_phpt"
  86. bool(true)
  87. string(7) "payload"
  88. int(3)
  89. string(13) "notifies_phpt"
  90. bool(true)
  91. string(7) "payload"
  92. int(6)
  93. string(13) "notifies_phpt"
  94. bool(true)
  95. string(7) "payload"
  96. string(13) "notifies_phpt"
  97. bool(true)
  98. string(7) "payload"
  99. bool(false)