Annotation of embedaddon/php/ext/pdo_mysql/tests/bug_39858.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Bug #39858 (Lost connection to MySQL server during query by a repeated call stored proced)
! 3: --SKIPIF--
! 4: <?php
! 5: if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip not loaded');
! 6: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
! 7: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
! 8: MySQLPDOTest::skip();
! 9: $db = MySQLPDOTest::factory();
! 10:
! 11: $row = $db->query('SELECT VERSION() as _version')->fetch(PDO::FETCH_ASSOC);
! 12: $matches = array();
! 13: if (!preg_match('/^(\d+)\.(\d+)\.(\d+)/ismU', $row['_version'], $matches))
! 14: die(sprintf("skip Cannot determine MySQL Server version\n"));
! 15:
! 16: $version = $matches[0] * 10000 + $matches[1] * 100 + $matches[2];
! 17: if ($version < 50000)
! 18: die(sprintf("skip Need MySQL Server 5.0.0+, found %d.%02d.%02d (%d)\n",
! 19: $matches[0], $matches[1], $matches[2], $version));
! 20: ?>
! 21: --FILE--
! 22: <?php
! 23: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
! 24: $db = MySQLPDOTest::factory();
! 25: $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
! 26:
! 27: function bug_39858($db) {
! 28:
! 29: $db->exec("DROP PROCEDURE IF EXISTS p");
! 30: $db->exec("
! 31: CREATE PROCEDURE p()
! 32: NOT DETERMINISTIC
! 33: CONTAINS SQL
! 34: SQL SECURITY DEFINER
! 35: COMMENT ''
! 36: BEGIN
! 37: SELECT 2 * 2;
! 38: END;");
! 39:
! 40: $stmt = $db->prepare("CALL p()");
! 41: $stmt->execute();
! 42: do {
! 43: var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
! 44: } while ($stmt->nextRowset());
! 45:
! 46: $stmt = $db->prepare("CALL p()");
! 47: $stmt->execute();
! 48: do {
! 49: var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
! 50: } while ($stmt->nextRowset());
! 51: $stmt->closeCursor();
! 52:
! 53: }
! 54:
! 55: printf("Emulated Prepared Statements...\n");
! 56: $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
! 57: bug_39858($db);
! 58:
! 59: printf("Native Prepared Statements...\n");
! 60: $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
! 61: bug_39858($db);
! 62:
! 63: print "done!";
! 64: ?>
! 65: --CLEAN--
! 66: <?php
! 67: require dirname(__FILE__) . '/mysql_pdo_test.inc';
! 68: $db = MySQLPDOTest::factory();
! 69: $db->exec("DROP PROCEDURE IF EXISTS p");
! 70: ?>
! 71: --EXPECTF--
! 72: Emulated Prepared Statements...
! 73: array(1) {
! 74: [0]=>
! 75: array(1) {
! 76: [%u|b%"2 * 2"]=>
! 77: %unicode|string%(1) "4"
! 78: }
! 79: }
! 80: array(1) {
! 81: [0]=>
! 82: array(1) {
! 83: [%u|b%"2 * 2"]=>
! 84: %unicode|string%(1) "4"
! 85: }
! 86: }
! 87: Native Prepared Statements...
! 88: array(1) {
! 89: [0]=>
! 90: array(1) {
! 91: [%u|b%"2 * 2"]=>
! 92: %unicode|string%(1) "4"
! 93: }
! 94: }
! 95: array(1) {
! 96: [0]=>
! 97: array(1) {
! 98: [%u|b%"2 * 2"]=>
! 99: %unicode|string%(1) "4"
! 100: }
! 101: }
! 102: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>