From 496ad3d1ff432cd04ee3a1a6c90d38e61450d606 Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Thu, 15 Mar 2007 09:29:45 +0000 Subject: Bug 374004: Enable transaction code and use it in some installation places Patch By Max Kanat-Alexander (module owner) a=mkanat --- Bugzilla/DB/Mysql.pm | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) (limited to 'Bugzilla/DB') diff --git a/Bugzilla/DB/Mysql.pm b/Bugzilla/DB/Mysql.pm index 582a2a7b8..582df3d54 100644 --- a/Bugzilla/DB/Mysql.pm +++ b/Bugzilla/DB/Mysql.pm @@ -207,14 +207,23 @@ sub bz_lock_tables { ThrowCodeError("already_locked", { current => $self->{private_bz_tables_locked}, new => $list }); } else { + $self->bz_start_transaction(); $self->do('LOCK TABLE ' . $list); - $self->{private_bz_tables_locked} = $list; } } sub bz_unlock_tables { my ($self, $abort) = @_; + + if ($self->bz_in_transaction) { + if ($abort) { + $self->bz_rollback_transaction(); + } + else { + $self->bz_commit_transaction(); + } + } # Check first if there was previous matching lock if (!$self->{private_bz_tables_locked}) { @@ -223,28 +232,10 @@ sub bz_unlock_tables { ThrowCodeError("no_matching_lock"); } else { $self->do("UNLOCK TABLES"); - $self->{private_bz_tables_locked} = ""; } } -# As Bugzilla currently runs on MyISAM storage, which does not support -# transactions, these functions die when called. -# Maybe we should just ignore these calls for now, but as we are not -# using transactions in MySQL yet, this just hints the developers. -sub bz_start_transaction { - die("Attempt to start transaction on DB without transaction support"); -} - -sub bz_commit_transaction { - die("Attempt to commit transaction on DB without transaction support"); -} - -sub bz_rollback_transaction { - die("Attempt to rollback transaction on DB without transaction support"); -} - - sub _bz_get_initial_schema { my ($self) = @_; return $self->_bz_build_schema_from_disk(); -- cgit v1.2.3-24-g4f1b