From 2569d7460ae8ba771b840f437c3846fc1f2c3e07 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Sun, 12 Jun 2011 11:40:57 +0200 Subject: [PATCH] [ticket/9892] Transaction support for database update sql execution function Updates would fail before because 'begin' as generated by db_tools::sql_create_table would be executed literally. PHPBB3-9892 --- phpBB/install/database_update.php | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 7d7572b204..5bc856250b 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -534,12 +534,23 @@ function _sql($sql, &$errored, &$error_ary, $echo_dot = true) $db->sql_return_on_error(true); - $result = $db->sql_query($sql); - if ($db->sql_error_triggered) + if ($sql === 'begin') { - $errored = true; - $error_ary['sql'][] = $db->sql_error_sql; - $error_ary['error_code'][] = $db->sql_error_returned; + $db->sql_transaction('begin'); + } + else if ($sql === 'commit') + { + $db->sql_transaction('commit'); + } + else + { + $result = $db->sql_query($sql); + if ($db->sql_error_triggered) + { + $errored = true; + $error_ary['sql'][] = $db->sql_error_sql; + $error_ary['error_code'][] = $db->sql_error_returned; + } } $db->sql_return_on_error(false);