bug63176.phpt 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. --TEST--
  2. Bug #63176 (Segmentation fault when instantiate 2 persistent PDO to the same db server)
  3. --EXTENSIONS--
  4. pdo_mysql
  5. --SKIPIF--
  6. <?php
  7. require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
  8. MySQLPDOTest::skip();
  9. ?>
  10. --FILE--
  11. <?php
  12. require(__DIR__. DIRECTORY_SEPARATOR . 'config.inc');
  13. class PDO2 extends PDO {
  14. protected $transLevel;
  15. }
  16. class PDO3 extends PDO {
  17. protected $tomato;
  18. }
  19. class ModelA {
  20. public function __construct($h) {
  21. var_dump($h);
  22. if ($h) {
  23. $this->db = new PDO2(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_USER, PDO_MYSQL_TEST_PASS, array(PDO::ATTR_PERSISTENT => true));
  24. } else {
  25. $this->db = new PDO3(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_USER, PDO_MYSQL_TEST_PASS, array(PDO::ATTR_PERSISTENT => true));
  26. }
  27. $this->db->query('SELECT 1')->fetchAll();
  28. }
  29. }
  30. $a = new ModelA(true);
  31. $b = new ModelA(false);
  32. var_dump($a);
  33. var_dump($b);
  34. ?>
  35. --EXPECTF--
  36. bool(true)
  37. bool(false)
  38. object(ModelA)#%d (1) {
  39. ["db"]=>
  40. object(PDO2)#%d (1) {
  41. ["transLevel":protected]=>
  42. NULL
  43. }
  44. }
  45. object(ModelA)#%d (1) {
  46. ["db"]=>
  47. object(PDO3)#%d (1) {
  48. ["tomato":protected]=>
  49. NULL
  50. }
  51. }