]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 374012: Use transactions inside of Bugzilla::Object
authormkanat%bugzilla.org <>
Sat, 24 Mar 2007 05:10:01 +0000 (05:10 +0000)
committermkanat%bugzilla.org <>
Sat, 24 Mar 2007 05:10:01 +0000 (05:10 +0000)
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=LpSolit

Bugzilla/Object.pm

index 6775d471901bd99056859dda622c8dcf25c151a3..ee1be2f9fe8e0766303b36b217f096554ccd4f3a 100644 (file)
@@ -171,6 +171,8 @@ sub update {
     my $table    = $self->DB_TABLE;
     my $id_field = $self->ID_FIELD;
 
+    $dbh->bz_start_transaction();
+
     my $old_self = $self->new($self->id);
     
     my (@update_columns, @values, %changes);
@@ -199,6 +201,8 @@ sub update {
     $dbh->do("UPDATE $table SET $columns WHERE $id_field = ?", undef, 
              @values, $self->id) if @values;
 
+    $dbh->bz_commit_transaction();
+
     return \%changes;
 }
 
@@ -210,9 +214,13 @@ sub create {
     my ($class, $params) = @_;
     my $dbh = Bugzilla->dbh;
 
+    $dbh->bz_start_transaction();
     $class->check_required_create_fields($params);
     my $field_values = $class->run_create_validators($params);
-    return $class->insert_create_data($field_values);
+    my $object = $class->insert_create_data($field_values);
+    $dbh->bz_commit_transaction();
+
+    return $object;
 }
 
 sub check_required_create_fields {