]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 374024: Abstract-out isolation level in Bugzilla::DB so drivers can choose their...
authormkanat%bugzilla.org <>
Thu, 15 Mar 2007 13:15:53 +0000 (13:15 +0000)
committermkanat%bugzilla.org <>
Thu, 15 Mar 2007 13:15:53 +0000 (13:15 +0000)
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> (module owner) a=mkanat

Bugzilla/DB.pm

index 095ba27a646bf332318f04174b0257951df38058..098a9414c98e7950a694adeed25632f9f5e67062 100644 (file)
@@ -50,6 +50,7 @@ use Storable qw(dclone);
 #####################################################################
 
 use constant BLOB_TYPE => DBI::SQL_BLOB;
+use constant ISOLATION_LEVEL => 'REPEATABLE READ';
 
 # Set default values for what used to be the enum types.  These values
 # are no longer stored in localconfig.  If we are upgrading from a
@@ -876,7 +877,7 @@ sub bz_start_transaction {
         # what we need in Bugzilla to be safe, for what we do.
         # Different DBs have different defaults for their isolation
         # level, so we just set it here manually.
-        $self->do('SET TRANSACTION ISOLATION LEVEL REPEATABLE READ');
+        $self->do('SET TRANSACTION ISOLATION LEVEL ' . $self->ISOLATION_LEVEL);
         $self->{private_bz_transaction_count} = 1;
     }
 }
@@ -1198,13 +1199,21 @@ should be always preffered over hard-coding SQL commands.
 Subclasses of Bugzilla::DB are required to define certain constants. These
 constants are required to be subroutines or "use constant" variables.
 
-=over 4
+=over
 
 =item C<BLOB_TYPE>
 
 The C<\%attr> argument that must be passed to bind_param in order to 
 correctly escape a C<LONGBLOB> type.
 
+=item C<ISOLATION_LEVEL>
+
+The argument that this database should send to 
+C<SET TRANSACTION ISOLATION LEVEL> when starting a transaction. If you
+override this in a subclass, the isolation level you choose should
+be as strict as or more strict than the default isolation level defined in
+L<Bugzilla::DB>.
+
 =back