From: Florent Bruneau Date: Mon, 11 Oct 2010 14:59:36 +0000 (+0200) Subject: Add a guard against overlapping transactions. X-Git-Tag: core/1.1.1~8 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=2e11cb87effddefdaed6da3e1951c935096ab361;p=platal.git Add a guard against overlapping transactions. Signed-off-by: Florent Bruneau --- diff --git a/classes/xdb.php b/classes/xdb.php index c353f54..8df9495 100644 --- a/classes/xdb.php +++ b/classes/xdb.php @@ -194,8 +194,13 @@ class XDB return self::run($query); } + private static $inTransaction = false; public static function startTransaction() { + if (self::$inTransaction) { + throw new XDBException('START TRANSACTION', 'Already in a transaction'); + } + self::$inTransaction = true; self::rawExecute('SET AUTOCOMMIT = 0'); self::rawExecute('START TRANSACTION'); } @@ -204,12 +209,14 @@ class XDB { self::rawExecute('COMMIT'); self::rawExecute('SET AUTOCOMMIT = 1'); + self::$inTransaction = false; } public static function rollback() { self::rawExecute('ROLLBACK'); self::rawExecute('SET AUTOCOMMIT = 1'); + self::$inTransaction = false; } public static function runTransactionV($callback, array $args)