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>