mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/17337] Correctly handle transaction test on MyISAM (non-transactional)
PHPBB-17337
This commit is contained in:
parent
f3460fe9eb
commit
dd3ebe2b71
1 changed files with 22 additions and 2 deletions
|
@ -77,6 +77,13 @@ class phpbb_dbal_write_test extends phpbb_database_test_case
|
||||||
{
|
{
|
||||||
$db = $this->new_dbal();
|
$db = $this->new_dbal();
|
||||||
|
|
||||||
|
$is_myisam = false;
|
||||||
|
if ($db->get_sql_layer() === 'mysqli')
|
||||||
|
{
|
||||||
|
$table_status = $db->get_table_status('phpbb_config');
|
||||||
|
$is_myisam = isset($table_status['Engine']) && $table_status['Engine'] === 'MyISAM';
|
||||||
|
}
|
||||||
|
|
||||||
$db->sql_transaction('begin');
|
$db->sql_transaction('begin');
|
||||||
|
|
||||||
$sql = "DELETE FROM phpbb_config
|
$sql = "DELETE FROM phpbb_config
|
||||||
|
@ -92,8 +99,21 @@ class phpbb_dbal_write_test extends phpbb_database_test_case
|
||||||
$rows = $db->sql_fetchrowset($result);
|
$rows = $db->sql_fetchrowset($result);
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
|
if (!$is_myisam)
|
||||||
|
{
|
||||||
$this->assertEquals(2, count($rows));
|
$this->assertEquals(2, count($rows));
|
||||||
$this->assertEquals('config1', $rows[0]['config_name']);
|
$this->assertEquals('config1', $rows[0]['config_name']);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Rollback does not work on MyISAM
|
||||||
|
$this->assertEquals(1, count($rows));
|
||||||
|
$this->assertEquals('config2', $rows[0]['config_name']);
|
||||||
|
|
||||||
|
// Restore deleted config value on MyISAM
|
||||||
|
$sql = "INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('config1', 'foo', 0)";
|
||||||
|
$db->sql_query($sql);
|
||||||
|
}
|
||||||
|
|
||||||
$db->sql_transaction('begin');
|
$db->sql_transaction('begin');
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue