From: mkanat%kerio.com <> Date: Thu, 10 Mar 2005 15:59:48 +0000 (+0000) Subject: Bug 285397: Untested parts of Bugzilla::DB are broken (when running on PostgreSQL) X-Git-Tag: bugzilla-2.19.3~181 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c4804fb41628501553714fd98d0078d05353e930;p=thirdparty%2Fbugzilla.git Bug 285397: Untested parts of Bugzilla::DB are broken (when running on PostgreSQL) Patch By Max Kanat-Alexander r=Tomas.Kopal, a=justdave --- diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm index 59d19b48be..cf1e391f52 100644 --- a/Bugzilla/DB.pm +++ b/Bugzilla/DB.pm @@ -478,12 +478,11 @@ sub bz_start_transaction { my ($self) = @_; if ($self->{private_bz_in_transaction}) { - carp("Can't start transaction within another transaction"); ThrowCodeError("nested_transaction"); } else { # Turn AutoCommit off and start a new transaction $self->begin_work(); - $self->{privateprivate_bz_in_transaction} = 1; + $self->{private_bz_in_transaction} = 1; } } @@ -491,7 +490,6 @@ sub bz_commit_transaction { my ($self) = @_; if (!$self->{private_bz_in_transaction}) { - carp("Can't commit without a transaction"); ThrowCodeError("not_in_transaction"); } else { $self->commit(); @@ -504,7 +502,6 @@ sub bz_rollback_transaction { my ($self) = @_; if (!$self->{private_bz_in_transaction}) { - carp("Can't rollback without a transaction"); ThrowCodeError("not_in_transaction"); } else { $self->rollback(); diff --git a/Bugzilla/DB/Mysql.pm b/Bugzilla/DB/Mysql.pm index 14230b1882..33354cb44f 100644 --- a/Bugzilla/DB/Mysql.pm +++ b/Bugzilla/DB/Mysql.pm @@ -42,7 +42,6 @@ package Bugzilla::DB::Mysql; use strict; use Bugzilla::Error; -use Carp; # This module extends the DB interface via inheritance use base qw(Bugzilla::DB); @@ -149,7 +148,6 @@ sub bz_lock_tables { # Check first if there was no lock before if ($self->{private_bz_tables_locked}) { - carp("Tables already locked"); ThrowCodeError("already_locked"); } else { $self->do('LOCK TABLE ' . join(', ', @tables)); @@ -165,7 +163,6 @@ sub bz_unlock_tables { if (!$self->{private_bz_tables_locked}) { # Abort is allowed even without previous lock for error handling return if $abort; - carp("No matching lock"); ThrowCodeError("no_matching_lock"); } else { $self->do("UNLOCK TABLES"); diff --git a/Bugzilla/DB/Pg.pm b/Bugzilla/DB/Pg.pm index 2ec3000d54..de3260e7a4 100644 --- a/Bugzilla/DB/Pg.pm +++ b/Bugzilla/DB/Pg.pm @@ -42,7 +42,6 @@ package Bugzilla::DB::Pg; use strict; use Bugzilla::Error; -use Carp; # This module extends the DB interface via inheritance use base qw(Bugzilla::DB); @@ -146,7 +145,6 @@ sub bz_lock_tables { # Check first if there was no lock before if ($self->{private_bz_tables_locked}) { - carp("Tables already locked"); ThrowCodeError("already_locked"); } else { my %read_tables; @@ -173,6 +171,7 @@ sub bz_lock_tables { ' IN ROW SHARE MODE') if keys %read_tables; Bugzilla->dbh->do('LOCK TABLE ' . join(', ', keys %write_tables) . ' IN ROW EXCLUSIVE MODE') if keys %write_tables; + $self->{private_bz_tables_locked} = 1; } } @@ -183,10 +182,9 @@ sub bz_unlock_tables { if (!$self->{private_bz_tables_locked}) { # Abort is allowed even without previous lock for error handling return if $abort; - - carp("No matching lock"); ThrowCodeError("no_matching_lock"); } else { + $self->{private_bz_tables_locked} = 0; # End transaction, tables will be unlocked automatically if ($abort) { $self->bz_rollback_transaction();