mirror of
https://github.com/php/php-src.git
synced 2026-04-29 19:23:22 +02:00
for the transactions test case, detect working transactions before attempting to run the tests.
Additional ugliness required because mysql does stupid stuff like this: mysql> CREATE TABLE foo (id int) TYPE=innodb; Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> SHOW CREATE TABLE foo; CREATE TABLE `foo` ( `id` int(11) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 In addition, BEGIN, COMMIT and ROLLBACK all succeed, even when no tables support transactions.
This commit is contained in:
@@ -7,15 +7,19 @@ $dir = getenv('REDIR_TEST_DIR');
|
||||
if (false == $dir) die('skip no driver');
|
||||
require_once $dir . 'pdo_test.inc';
|
||||
PDOTest::skip();
|
||||
/* TODO:
|
||||
|
||||
$db = PDOTest::factory();
|
||||
try {
|
||||
$db->beginTransaction();
|
||||
} catch (PDOException $e) {
|
||||
# check sqlstate to see if transactions
|
||||
# are not implemented; if so, skip
|
||||
die('skip no working transactions: ' . $e->getMessage());
|
||||
}
|
||||
|
||||
if ($db->getAttribute(PDO_ATTR_DRIVER_NAME) == 'mysql') {
|
||||
if (false === PDOTest::detect_transactional_mysql_engine($db)) {
|
||||
die('skip your mysql configuration does not support working transactions');
|
||||
}
|
||||
}
|
||||
*/
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
@@ -23,7 +27,7 @@ require getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
|
||||
$db = PDOTest::factory();
|
||||
|
||||
if ($db->getAttribute(PDO_ATTR_DRIVER_NAME) == 'mysql') {
|
||||
$suf = ' Type=InnoDB';
|
||||
$suf = ' Type=' . PDOTest::detect_transactional_mysql_engine($db);
|
||||
} else {
|
||||
$suf = '';
|
||||
}
|
||||
|
||||
@@ -43,6 +43,15 @@ class PDOTest {
|
||||
die("skip " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
static function detect_transactional_mysql_engine($db) {
|
||||
foreach ($db->query('show engines') as $row) {
|
||||
if ($row[1] == 'YES' && ($row[0] == 'INNOBASE' || $row[0] == 'BDB')) {
|
||||
return $row[0];
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user