factor out subclass-specific _execute_array callback
Rafael Kitover [Wed, 30 Sep 2009 07:00:59 +0000 (07:00 +0000)]
lib/DBIx/Class/Storage/DBI.pm
lib/DBIx/Class/Storage/DBI/Sybase.pm

index 04180f0..a6609f5 100644 (file)
@@ -1391,7 +1391,7 @@ sub insert_bulk {
 }
 
 sub _execute_array {
-  my ($self, $source, $sth, $bind, $cols, $data, $after_exec_cb) = @_;
+  my ($self, $source, $sth, $bind, $cols, $data, @extra) = @_;
 
   my $guard = $self->txn_scope_guard unless $self->{transaction_depth} != 0;
 
@@ -1420,10 +1420,8 @@ sub _execute_array {
     $placeholder_index++;
   }
 
-  my $rv;
-  eval {
-    $rv = $sth->execute_array({ArrayTupleStatus => $tuple_status});
-    $after_exec_cb->() if $after_exec_cb;
+  my $rv = eval {
+    $self->_dbh_execute_array($sth, $tuple_status, @extra);
   };
   my $err = $@ || $sth->errstr;
 
@@ -1451,6 +1449,12 @@ sub _execute_array {
   return $rv;
 }
 
+sub _dbh_execute_array {
+    my ($self, $sth, $tuple_status, @extra) = @_;
+
+    return $sth->execute_array({ArrayTupleStatus => $tuple_status});
+}
+
 sub _execute_array_empty {
   my ($self, $sth, $count) = @_;
 
index 3a8531d..b6352e0 100644 (file)
@@ -664,6 +664,15 @@ EOF
   }
 }
 
+sub _dbh_execute_array {
+  my ($self, $sth, $tuple_status, $cb) = @_;
+
+  my $rv = $self->next::method($sth, $tuple_status);
+  $cb->() if $cb;
+
+  return $rv;
+}
+
 # Make sure blobs are not bound as placeholders, and return any non-empty ones
 # as a hash.
 sub _remove_blob_cols {