Annotation of embedaddon/php/ext/pdo_mysql/tests/pdo_mysql_attr_max_buffer_size.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: MySQL PDO->__construct(), PDO::MYSQL_ATTR_MAX_BUFFER_SIZE
                      3: --SKIPIF--
                      4: <?php
                      5: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
                      6: require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
                      7: MySQLPDOTest::skip();
                      8: if (MySQLPDOTest::isPDOMySQLnd())
                      9:        die("skip PDO::MYSQL_ATTR_MAX_BUFFER_SIZE not supported with mysqlnd");
                     10: ?>
                     11: --FILE--
                     12: <?php
                     13:        require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
                     14: 
                     15:        function try_buffer_size($offset, $buffer_size) {
                     16: 
                     17:                try {
                     18: 
                     19:                        $dsn = MySQLPDOTest::getDSN();
                     20:                        $user = PDO_MYSQL_TEST_USER;
                     21:                        $pass = PDO_MYSQL_TEST_PASS;
                     22: 
                     23:                        /* unsigned overflow possible ? */
                     24:                        $db = new PDO($dsn, $user, $pass,
                     25:                        array(
                     26:                                PDO::MYSQL_ATTR_MAX_BUFFER_SIZE => $buffer_size,
                     27:                                /* buffer is only relevant with native PS */
                     28:                                PDO::MYSQL_ATTR_DIRECT_QUERY => 0,
                     29:                                PDO::ATTR_EMULATE_PREPARES => 0,
                     30:                        ));
                     31: 
                     32:                        $db->exec('DROP TABLE IF EXISTS test');
                     33:                        $db->exec(sprintf('CREATE TABLE test(id INT, val LONGBLOB) ENGINE = %s', PDO_MYSQL_TEST_ENGINE));
                     34: 
                     35:                        // 10 * (10 * 1024) = 10 * (10 * 1k) = 100k
                     36:                        $db->exec('INSERT INTO test(id, val) VALUES (1, REPEAT("01234567890", 10240))');
                     37: 
                     38:                        $stmt = $db->prepare('SELECT id, val FROM test');
                     39:                        $stmt->execute();
                     40: 
                     41:                        $id = $val = NULL;
                     42:                        $stmt->bindColumn(1, $id);
                     43:                        $stmt->bindColumn(2, $val);
                     44:                        while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
                     45:                                printf("[%03d] id = %d, val = %s... (length: %d)\n",
                     46:                                        $offset, $id, substr($val, 0, 10), strlen($val));
                     47:                        }
                     48:                        $db->exec('DROP TABLE IF EXISTS test');
                     49: 
                     50:                } catch (PDOException $e) {
                     51:                        printf("[%03d] %s, [%s] %s\n",
                     52:                                $offset,
                     53:                                $e->getMessage(),
                     54:                                (is_object($db)) ? $db->errorCode() : 'n/a',
                     55:                                (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
                     56:                }
                     57:        }
                     58: 
                     59:        try_buffer_size(1, -1);
                     60:        try_buffer_size(2, 1000);
                     61:        try_buffer_size(3, NULL);
                     62:        try_buffer_size(4, 2000);
                     63: 
                     64:        print "done!";
                     65: ?>
                     66: --CLEAN--
                     67: <?php
                     68: require dirname(__FILE__) . '/mysql_pdo_test.inc';
                     69: $db = MySQLPDOTest::factory();
                     70: $db->exec('DROP TABLE IF EXISTS test');
                     71: ?>
                     72: --EXPECTF--
                     73: [001] id = 1, val = 0123456789... (length: %d)
                     74: [002] id = 1, val = 0123456789... (length: 1000)
                     75: [003] id = 1, val = 0123456789... (length: %d)
                     76: [004] id = 1, val = 0123456789... (length: 2000)
                     77: done!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>