Annotation of embedaddon/php/ext/pdo_mysql/tests/bug_39858.phpt, revision 1.1.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>