summaryrefslogtreecommitdiff
path: root/ext/pdo_mysql/tests
diff options
context:
space:
mode:
authorJohannes Schlüter <johannes@php.net>2012-03-05 23:38:15 +0000
committerJohannes Schlüter <johannes@php.net>2012-03-05 23:38:15 +0000
commitb526e0e410c8a8e88768776d91d0ef32036581b5 (patch)
tree33ca5f62ca86df97eefd817a711a3530b8788aa5 /ext/pdo_mysql/tests
parent2c43149f21d67fa3614972585b78bb5dbf1cc00e (diff)
downloadphp-git-b526e0e410c8a8e88768776d91d0ef32036581b5.tar.gz
Fix Bug #61207 PDO::nextRowset() after a multi-statement query doesn't always work
Diffstat (limited to 'ext/pdo_mysql/tests')
-rw-r--r--ext/pdo_mysql/tests/bug_61207.phpt103
1 files changed, 103 insertions, 0 deletions
diff --git a/ext/pdo_mysql/tests/bug_61207.phpt b/ext/pdo_mysql/tests/bug_61207.phpt
new file mode 100644
index 0000000000..917b322180
--- /dev/null
+++ b/ext/pdo_mysql/tests/bug_61207.phpt
@@ -0,0 +1,103 @@
+--TEST--
+PDO MySQL Bug #61207 (PDO::nextRowset() after a multi-statement query doesn't always work)
+--SKIPIF--
+<?php
+if (!extension_loaded('pdo') || !extension_loaded('pdo_mysql')) die('skip not loaded');
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+
+$link = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+
+$link->query('create table `bug61207`( `id` int )');
+
+$handle1 = $link->prepare('insert into bug61207(id) values(1);
+ select * from bug61207 where id = ?;
+ update bug61207 set id = 2 where id = ?;');
+
+$handle1->bindValue('1', '1');
+$handle1->bindValue('2', '1');
+
+$handle1->execute();
+$i = 1;
+print("Handle 1:\n");
+do {
+ print('Rowset ' . $i++ . "\n");
+ if ($handle1->columnCount() > 0)
+ print("Results detected\n");
+} while($handle1->nextRowset());
+
+$handle2 = $link->prepare('select * from bug61207 where id = ?;
+ update bug61207 set id = 1 where id = ?;');
+
+$handle2->bindValue('1', '2');
+$handle2->bindValue('2', '2');
+
+$handle2->execute();
+
+$i = 1;
+print("Handle 2:\n");
+do {
+ print('Rowset ' . $i++ . "\n");
+ if ($handle2->columnCount() > 0)
+ print("Results detected\n");
+} while($handle2->nextRowset());
+
+$handle3 = $link->prepare('update bug61207 set id = 2 where id = ?;
+ select * from bug61207 where id = ?;');
+
+$handle3->bindValue('1', '1');
+$handle3->bindValue('2', '2');
+
+$handle3->execute();
+
+$i = 1;
+print("Handle 3:\n");
+do {
+ print('Rowset ' . $i++ . "\n");
+ if ($handle3->columnCount() > 0)
+ print("Results detected\n");
+} while($handle3->nextRowset());
+
+$handle4 = $link->prepare('insert into bug61207(id) values(3);
+ update bug61207 set id = 2 where id = ?;
+ select * from bug61207 where id = ?;');
+
+$handle4->bindValue('1', '3');
+$handle4->bindValue('2', '2');
+
+$handle4->execute();
+
+$i = 1;
+print("Handle 4:\n");
+do {
+ print('Rowset ' . $i++ . "\n");
+ if ($handle1->columnCount() > 0)
+ print("Results detected\n");
+} while($handle1->nextRowset());
+
+$link->query("DROP TABLE bug61207");
+?>
+--EXPECT--
+Handle 1:
+Rowset 1
+Rowset 2
+Results detected
+Rowset 3
+Handle 2:
+Rowset 1
+Results detected
+Rowset 2
+Handle 3:
+Rowset 1
+Rowset 2
+Results detected
+Handle 4:
+Rowset 1
+Rowset 2
+Rowset 3
+Results detected