bug76815.phpt 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. --TEST--
  2. Bug #76815: PDOStatement cannot be GCed/closeCursor-ed when a PROCEDURE resultset SIGNAL
  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_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
  13. $pdo = MySQLPDOTest::factory();
  14. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  15. $pdo->query('DROP FUNCTION IF EXISTS tst');
  16. $pdo->query('DROP PROCEDURE IF EXISTS tst2');
  17. $pdo->query('CREATE FUNCTION tst() RETURNS VARCHAR(5) DETERMINISTIC BEGIN RETURN \'x12345\'; END');
  18. $pdo->query('CREATE PROCEDURE tst2() BEGIN SELECT tst(); END');
  19. $st = $pdo->prepare('CALL tst2()');
  20. try {
  21. $st->execute();
  22. } catch (PDOException $ex) {
  23. echo $ex->getMessage(), "\n";
  24. }
  25. unset($st);
  26. echo "Ok.\n";
  27. ?>
  28. --CLEAN--
  29. <?php
  30. require_once __DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc';
  31. $pdo = MySQLPDOTest::factory();
  32. $pdo->query('DROP FUNCTION IF EXISTS tst');
  33. $pdo->query('DROP PROCEDURE IF EXISTS tst2');
  34. ?>
  35. --EXPECT--
  36. SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'tst()' at row 1
  37. Ok.