Skip to content

Commit 6f95273

Browse files
ext/pdo_mysql: Improve tests cleanup (#11879)
This allows the tests to be run in parallel.
1 parent 44467eb commit 6f95273

File tree

61 files changed

+1831
-870
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+1831
-870
lines changed

ext/pdo_mysql/tests/bug44327.phpt

+11-7
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,13 @@ $db = MySQLPDOTest::factory();
2424

2525
print "----------------------------------\n";
2626

27-
@$db->exec("DROP TABLE test");
28-
$db->exec("CREATE TABLE test (id INT)");
29-
$db->exec("INSERT INTO test(id) VALUES (1)");
30-
$stmt = $db->prepare("SELECT id FROM test");
27+
$db->exec("CREATE TABLE test_44327 (id INT)");
28+
$db->exec("INSERT INTO test_44327(id) VALUES (1)");
29+
$stmt = $db->prepare("SELECT id FROM test_44327");
3130
$stmt->execute();
3231
$row = $stmt->fetch(PDO::FETCH_LAZY);
3332
var_dump($row);
3433
var_dump($row->queryString);
35-
@$db->exec("DROP TABLE test");
3634

3735
print "----------------------------------\n";
3836

@@ -41,6 +39,12 @@ $db = MySQLPDOTest::factory();
4139
$row = $stmt->fetch();
4240
var_dump($row->queryString);
4341

42+
?>
43+
--CLEAN--
44+
<?php
45+
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
46+
$db = MySQLPDOTest::factory();
47+
$db->exec("DROP TABLE test_44327");
4448
?>
4549
--EXPECTF--
4650
object(PDORow)#%d (2) {
@@ -55,11 +59,11 @@ string(17) "SELECT 1 AS "one""
5559
----------------------------------
5660
object(PDORow)#5 (2) {
5761
["queryString"]=>
58-
string(19) "SELECT id FROM test"
62+
string(25) "SELECT id FROM test_44327"
5963
["id"]=>
6064
string(1) "1"
6165
}
62-
string(19) "SELECT id FROM test"
66+
string(25) "SELECT id FROM test_44327"
6367
----------------------------------
6468

6569
Warning: Attempt to read property "queryString" on false in %s on line %d

ext/pdo_mysql/tests/bug46292.phpt

+4-6
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,11 @@ MySQLPDOTest::skip();
2727
$pdoDb->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
2828
$pdoDb->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
2929

30-
$pdoDb->query('DROP TABLE IF EXISTS testz');
30+
$pdoDb->query('CREATE TABLE test_46292 (name VARCHAR(20) NOT NULL, value INT)');
3131

32-
$pdoDb->query('CREATE TABLE testz (name VARCHAR(20) NOT NULL, value INT)');
32+
$pdoDb->query("INSERT INTO test_46292 VALUES ('myclass', 1), ('myclass2', 2), ('myclass', NULL), ('myclass3', NULL)");
3333

34-
$pdoDb->query("INSERT INTO testz VALUES ('myclass', 1), ('myclass2', 2), ('myclass', NULL), ('myclass3', NULL)");
35-
36-
$stmt = $pdoDb->prepare("SELECT * FROM testz");
34+
$stmt = $pdoDb->prepare("SELECT * FROM test_46292");
3735

3836
var_dump($stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE | PDO::FETCH_GROUP));
3937
$stmt->execute();
@@ -46,7 +44,7 @@ MySQLPDOTest::skip();
4644
<?php
4745
require __DIR__ . '/mysql_pdo_test.inc';
4846
$db = MySQLPDOTest::factory();
49-
$db->exec('DROP TABLE IF EXISTS testz');
47+
$db->exec('DROP TABLE IF EXISTS test_46292');
5048
?>
5149
--EXPECTF--
5250
bool(true)

ext/pdo_mysql/tests/bug66528.phpt

+4-5
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,10 @@ $dbh = MySQLPDOTest::factory();
1616
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
1717
$dbh->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
1818

19-
$dbh->exec('DROP TABLE IF EXISTS test');
20-
$dbh->exec('CREATE TABLE test (a int) engine=innodb');
19+
$dbh->exec('CREATE TABLE test_66528 (a int) engine=innodb');
2120
$dbh->beginTransaction();
22-
$dbh->exec('INSERT INTO test (a) VALUES (1), (2)');
23-
$stmt = $dbh->query('SELECT * FROM test');
21+
$dbh->exec('INSERT INTO test_66528 (a) VALUES (1), (2)');
22+
$stmt = $dbh->query('SELECT * FROM test_66528');
2423

2524
try {
2625
$dbh->commit();
@@ -44,7 +43,7 @@ try {
4443
--CLEAN--
4544
<?php
4645
require __DIR__ . '/mysql_pdo_test.inc';
47-
MySQLPDOTest::dropTestTable();
46+
MySQLPDOTest::dropTestTable(NULL, 'test_66528');
4847
?>
4948
--EXPECT--
5049
SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

ext/pdo_mysql/tests/bug70862.phpt

+3-4
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ MySQLPDOTest::skip();
1212
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
1313
$db = MySQLPDOTest::factory();
1414

15-
$db->exec('DROP TABLE IF EXISTS test');
16-
$db->exec(sprintf('CREATE TABLE test(id INT, label BLOB)'));
15+
$db->exec(sprintf('CREATE TABLE test_70862(id INT, label BLOB)'));
1716

1817
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
1918
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
@@ -29,7 +28,7 @@ MySQLPDOTest::skip();
2928

3029
$f = fopen("hello://there", "r");
3130

32-
$stmt = $db->prepare('INSERT INTO test(id, label) VALUES (1, :para)');
31+
$stmt = $db->prepare('INSERT INTO test_70862(id, label) VALUES (1, :para)');
3332
$stmt->bindParam(":para", $f, PDO::PARAM_LOB);
3433
$stmt->execute();
3534

@@ -41,7 +40,7 @@ MySQLPDOTest::skip();
4140
<?php
4241
require __DIR__ . '/mysql_pdo_test.inc';
4342
$db = MySQLPDOTest::factory();
44-
$db->exec('DROP TABLE IF EXISTS test');
43+
$db->exec('DROP TABLE IF EXISTS test_70862');
4544
?>
4645
--EXPECT--
4746
string(0) ""

ext/pdo_mysql/tests/bug75177.phpt

+5-9
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,17 @@ if (!MySQLPDOTest::isPDOMySQLnd()) die('skip only for mysqlnd');
1313
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
1414
$pdo = MySQLPDOTest::factory();
1515

16-
$tbl = "test";
17-
$pdo->query("DROP TABLE IF EXISTS $tbl");
18-
$pdo->query("CREATE TABLE $tbl (`bit` bit(8)) ENGINE=InnoDB");
19-
$pdo->query("INSERT INTO $tbl (`bit`) VALUES (1)");
20-
$pdo->query("INSERT INTO $tbl (`bit`) VALUES (0b011)");
21-
$pdo->query("INSERT INTO $tbl (`bit`) VALUES (0b01100)");
16+
$pdo->query("CREATE TABLE test_75177 (`bit` bit(8)) ENGINE=InnoDB");
17+
$pdo->query("INSERT INTO test_75177 (`bit`) VALUES (1), (0b011), (0b01100)");
2218

2319
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
24-
$ret = $pdo->query("SELECT * FROM $tbl")->fetchAll();
20+
$ret = $pdo->query("SELECT * FROM test_75177")->fetchAll();
2521
foreach ($ret as $i) {
2622
var_dump($i["bit"]);
2723
}
2824

2925
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
30-
$ret = $pdo->query("SELECT * FROM $tbl")->fetchAll();
26+
$ret = $pdo->query("SELECT * FROM test_75177")->fetchAll();
3127
foreach ($ret as $i) {
3228
var_dump($i["bit"]);
3329
}
@@ -36,7 +32,7 @@ foreach ($ret as $i) {
3632
--CLEAN--
3733
<?php
3834
require dirname(__FILE__) . '/mysql_pdo_test.inc';
39-
MySQLPDOTest::dropTestTable();
35+
MySQLPDOTest::dropTestTable(NULL, 'test_75177');
4036
?>
4137
--EXPECT--
4238
int(1)

ext/pdo_mysql/tests/bug79375.phpt

+7-7
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,13 @@ function createDB(): PDO {
2222

2323
$db = createDB();
2424
$db2 = createDB();
25-
$db->query('DROP TABLE IF EXISTS test');
26-
$db->query('CREATE TABLE test (first int) ENGINE = InnoDB');
27-
$db->query('INSERT INTO test VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9)');
25+
$db->query('CREATE TABLE test_79375 (first int) ENGINE = InnoDB');
26+
$db->query('INSERT INTO test_79375 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9)');
2827

2928
function testNormalQuery(PDO $db, string $name) {
3029
$db->exec("SET innodb_lock_wait_timeout = 1");
3130
$db->exec("START TRANSACTION");
32-
$query = "SELECT first FROM test WHERE first = 1 FOR UPDATE";
31+
$query = "SELECT first FROM test_79375 WHERE first = 1 FOR UPDATE";
3332
echo "Running query on $name\n";
3433
try {
3534
$stmt = $db->query($query);
@@ -42,7 +41,7 @@ function testNormalQuery(PDO $db, string $name) {
4241
function testPrepareExecute(PDO $db, string $name) {
4342
$db->exec("SET innodb_lock_wait_timeout = 1");
4443
$db->exec("START TRANSACTION");
45-
$query = "SELECT first FROM test WHERE first = 1 FOR UPDATE";
44+
$query = "SELECT first FROM test_79375 WHERE first = 1 FOR UPDATE";
4645
echo "Running query on $name\n";
4746
$stmt = $db->prepare($query);
4847
try {
@@ -57,7 +56,7 @@ function testUnbuffered(PDO $db, string $name) {
5756
$db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
5857
$db->exec("SET innodb_lock_wait_timeout = 1");
5958
$db->exec("START TRANSACTION");
60-
$query = "SELECT first FROM test WHERE first = 1 FOR UPDATE";
59+
$query = "SELECT first FROM test_79375 WHERE first = 1 FOR UPDATE";
6160
echo "Running query on $name\n";
6261
$stmt = $db->prepare($query);
6362
$stmt->execute();
@@ -96,7 +95,8 @@ echo "\n";
9695
--CLEAN--
9796
<?php
9897
require __DIR__ . '/mysql_pdo_test.inc';
99-
MySQLPDOTest::dropTestTable();
98+
$db = MySQLPDOTest::factory();
99+
$db->exec('DROP TABLE IF EXISTS test_79375');
100100
?>
101101
--EXPECT--
102102
Running query on first connection

ext/pdo_mysql/tests/bug80458.phpt

+22-26
Original file line numberDiff line numberDiff line change
@@ -17,41 +17,38 @@ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
1717
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
1818
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
1919

20-
$db->query('DROP TABLE IF EXISTS test');
21-
$db->query('CREATE TABLE test (first int) ENGINE = InnoDB');
22-
$res = $db->query('INSERT INTO test(first) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16)');
20+
$db->query('CREATE TABLE test_80458 (first int) ENGINE = InnoDB');
21+
$res = $db->query('INSERT INTO test_80458(first) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16)');
2322
var_dump($res->fetchAll());
2423

25-
$stmt = $db->prepare('DELETE FROM test WHERE first=1');
24+
$stmt = $db->prepare('DELETE FROM test_80458 WHERE first=1');
2625
$stmt->execute();
2726
var_dump($stmt->fetchAll());
2827

29-
$res = $db->query('DELETE FROM test WHERE first=2');
28+
$res = $db->query('DELETE FROM test_80458 WHERE first=2');
3029
var_dump($res->fetchAll());
3130

32-
$stmt2 = $db->prepare('DELETE FROM test WHERE first=3');
31+
$stmt2 = $db->prepare('DELETE FROM test_80458 WHERE first=3');
3332
$stmt2->execute();
3433
foreach($stmt2 as $row){
3534
// expect nothing
3635
}
3736

38-
$stmt3 = $db->prepare('DELETE FROM test WHERE first=4');
37+
$stmt3 = $db->prepare('DELETE FROM test_80458 WHERE first=4');
3938
$stmt3->execute();
4039
var_dump($stmt3->fetch(PDO::FETCH_ASSOC));
4140

42-
$stmt = $db->prepare('SELECT first FROM test WHERE first=5');
41+
$stmt = $db->prepare('SELECT first FROM test_80458 WHERE first=5');
4342
$stmt->execute();
4443
var_dump($stmt->fetchAll());
4544

46-
$db->exec('DROP PROCEDURE IF EXISTS nores');
47-
$db->exec('CREATE PROCEDURE nores() BEGIN DELETE FROM test WHERE first=6; END;');
45+
$db->exec('CREATE PROCEDURE nores() BEGIN DELETE FROM test_80458 WHERE first=6; END;');
4846
$stmt4 = $db->prepare('CALL nores()');
4947
$stmt4->execute();
5048
var_dump($stmt4->fetchAll());
5149
$db->exec('DROP PROCEDURE IF EXISTS nores');
5250

53-
$db->exec('DROP PROCEDURE IF EXISTS ret');
54-
$db->exec('CREATE PROCEDURE ret() BEGIN SELECT first FROM test WHERE first=7; END;');
51+
$db->exec('CREATE PROCEDURE ret() BEGIN SELECT first FROM test_80458 WHERE first=7; END;');
5552
$stmt5 = $db->prepare('CALL ret()');
5653
$stmt5->execute();
5754
var_dump($stmt5->fetchAll());
@@ -63,36 +60,32 @@ $db->exec('DROP PROCEDURE IF EXISTS ret');
6360
print("Emulated prepares\n");
6461
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
6562

66-
$stmt = $db->prepare('DELETE FROM test WHERE first=8');
63+
$stmt = $db->prepare('DELETE FROM test_80458 WHERE first=8');
6764
$stmt->execute();
6865
var_dump($stmt->fetchAll());
6966

70-
$res = $db->query('DELETE FROM test WHERE first=9');
67+
$res = $db->query('DELETE FROM test_80458 WHERE first=9');
7168
var_dump($res->fetchAll());
7269

73-
$stmt2 = $db->prepare('DELETE FROM test WHERE first=10');
70+
$stmt2 = $db->prepare('DELETE FROM test_80458 WHERE first=10');
7471
$stmt2->execute();
7572
foreach($stmt2 as $row){
7673
// expect nothing
7774
}
7875

79-
$stmt3 = $db->prepare('DELETE FROM test WHERE first=11');
76+
$stmt3 = $db->prepare('DELETE FROM test_80458 WHERE first=11');
8077
$stmt3->execute();
8178
var_dump($stmt3->fetch(PDO::FETCH_ASSOC));
8279

83-
$stmt = $db->prepare('SELECT first FROM test WHERE first=12');
80+
$stmt = $db->prepare('SELECT first FROM test_80458 WHERE first=12');
8481
$stmt->execute();
8582
var_dump($stmt->fetchAll());
8683

87-
$db->exec('DROP PROCEDURE IF EXISTS nores');
88-
$db->exec('CREATE PROCEDURE nores() BEGIN DELETE FROM test WHERE first=13; END;');
84+
$db->exec('CREATE PROCEDURE nores() BEGIN DELETE FROM test_80458 WHERE first=13; END;');
8985
$stmt4 = $db->prepare('CALL nores()');
9086
$stmt4->execute();
9187
var_dump($stmt4->fetchAll());
92-
$db->exec('DROP PROCEDURE IF EXISTS nores');
93-
94-
$db->exec('DROP PROCEDURE IF EXISTS ret');
95-
$db->exec('CREATE PROCEDURE ret() BEGIN SELECT first FROM test WHERE first=14; END;');
88+
$db->exec('CREATE PROCEDURE ret() BEGIN SELECT first FROM test_80458 WHERE first=14; END;');
9689
$stmt5 = $db->prepare('CALL ret()');
9790
$stmt5->execute();
9891
var_dump($stmt5->fetchAll());
@@ -103,19 +96,22 @@ $db->exec('DROP PROCEDURE IF EXISTS ret');
10396
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
10497
$db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
10598

106-
$stmt = $db->prepare('DELETE FROM test WHERE first=15');
99+
$stmt = $db->prepare('DELETE FROM test_80458 WHERE first=15');
107100
$stmt->execute();
108101
var_dump($stmt->fetchAll());
109102

110-
$stmt = $db->prepare('SELECT first FROM test WHERE first=16');
103+
$stmt = $db->prepare('SELECT first FROM test_80458 WHERE first=16');
111104
$stmt->execute();
112105
var_dump($stmt->fetchAll());
113106

114107
?>
115108
--CLEAN--
116109
<?php
117110
require __DIR__ . '/mysql_pdo_test.inc';
118-
MySQLPDOTest::dropTestTable();
111+
$db = MySQLPDOTest::factory();
112+
MySQLPDOTest::dropTestTable($db, 'test_80458');
113+
$db->exec('DROP PROCEDURE IF EXISTS nores');
114+
$db->exec('DROP PROCEDURE IF EXISTS ret');
119115
?>
120116
--EXPECT--
121117
array(0) {

ext/pdo_mysql/tests/bug80808.phpt

+10-5
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,20 @@ MySQLPDOTest::skip();
1313
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
1414
$pdo = MySQLPDOTest::factory();
1515

16-
$pdo->exec('DROP TABLE IF EXISTS test');
17-
$pdo->exec('CREATE TABLE test (postcode INT(4) UNSIGNED ZEROFILL)');
18-
$pdo->exec('INSERT INTO test (postcode) VALUES (\'0800\')');
16+
$pdo->exec('CREATE TABLE test_80808 (postcode INT(4) UNSIGNED ZEROFILL)');
17+
$pdo->exec('INSERT INTO test_80808 (postcode) VALUES (\'0800\')');
1918

2019
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
21-
var_dump($pdo->query('SELECT * FROM test')->fetchColumn(0));
20+
var_dump($pdo->query('SELECT * FROM test_80808')->fetchColumn(0));
2221
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
23-
var_dump($pdo->query('SELECT * FROM test')->fetchColumn(0));
22+
var_dump($pdo->query('SELECT * FROM test_80808')->fetchColumn(0));
2423

24+
?>
25+
--CLEAN--
26+
<?php
27+
require __DIR__ . '/mysql_pdo_test.inc';
28+
$db = MySQLPDOTest::factory();
29+
$db->exec('DROP TABLE IF EXISTS test_80808');
2530
?>
2631
--EXPECT--
2732
string(4) "0800"

ext/pdo_mysql/tests/bug80908.phpt

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,13 @@ function createDB(): PDO {
2020
}
2121

2222
$db = createDB();
23-
$db->exec('DROP TABLE IF EXISTS test');
24-
$db->exec('CREATE TABLE test (`id` bigint(20) unsigned AUTO_INCREMENT, `name` varchar(5), primary key (`id`)) ENGINE = InnoDB AUTO_INCREMENT=10376293541461622799');
23+
$db->exec('CREATE TABLE test_80908 (`id` bigint(20) unsigned AUTO_INCREMENT, `name` varchar(5), primary key (`id`)) ENGINE = InnoDB AUTO_INCREMENT=10376293541461622799');
2524

2625
function testLastInsertId(PDO $db) {
2726
echo "Running test lastInsertId\n";
2827
$db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
2928
try {
30-
$db->exec("insert into test (`name`) values ('bar')");
29+
$db->exec("insert into test_80908 (`name`) values ('bar')");
3130
$id = $db->lastInsertId();
3231
echo "Last insert id is " . $id . "\n";
3332
} catch (PDOException $e) {
@@ -43,7 +42,8 @@ echo "\n";
4342
--CLEAN--
4443
<?php
4544
require __DIR__ . '/mysql_pdo_test.inc';
46-
MySQLPDOTest::dropTestTable();
45+
$db = MySQLPDOTest::factory();
46+
$db->exec('DROP TABLE IF EXISTS test_80908');
4747
?>
4848
--EXPECT--
4949
Running test lastInsertId

0 commit comments

Comments
 (0)