mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-01 22:40:39 +02:00
[ticket/9685] Test for databases that are able to nest transactions
If a database is unable to nest transactions the dbal should implement sql_buffer_nested_transactions to signal that buffering of the outer results and closing of the outer transaction is required to open the inner transaction. PHPBB3-9685
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||||
|
require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
|
||||||
|
|
||||||
class phpbb_dbal_select_test extends phpbb_database_test_case
|
class phpbb_dbal_select_test extends phpbb_database_test_case
|
||||||
{
|
{
|
||||||
@@ -317,4 +318,27 @@ class phpbb_dbal_select_test extends phpbb_database_test_case
|
|||||||
|
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_nested_transactions()
|
||||||
|
{
|
||||||
|
$db = $this->new_dbal();
|
||||||
|
|
||||||
|
// nested transactions should work on systems that do not require
|
||||||
|
// buffering of nested transactions, so ignore the ones that need
|
||||||
|
// buffering
|
||||||
|
if ($db->sql_buffer_nested_transactions())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = 'SELECT user_id FROM phpbb_users ORDER BY user_id ASC';
|
||||||
|
$result1 = $db->sql_query($sql);
|
||||||
|
|
||||||
|
$db->sql_transaction('begin');
|
||||||
|
$result2 = $db->sql_query($sql);
|
||||||
|
$row = $db->sql_fetchrow($result2);
|
||||||
|
$db->sql_transaction('commit');
|
||||||
|
|
||||||
|
$this->assertEquals('1', $row['user_id']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user