special bind_param_array move to make DBD::InterBase happy (RT#54561)
Rafael Kitover [Fri, 12 Feb 2010 19:43:20 +0000 (19:43 +0000)]
lib/DBIx/Class/Storage/DBI.pm
t/750firebird.t

index 32c6ed1..055d2dc 100644 (file)
@@ -1518,7 +1518,11 @@ sub _execute_array {
 
     my @data = map { $_->[$data_index] } @$data;
 
-    $sth->bind_param_array( $placeholder_index, [@data], $attributes );
+    $sth->bind_param_array(
+      $placeholder_index,
+      [@data],
+      (%$attributes ?  $attributes : ()),
+    );
     $placeholder_index++;
   }
 
index a1f9807..55ed075 100644 (file)
@@ -116,18 +116,17 @@ EOF
     for (1..2) {
       push @pop, { name => "Artist_expkey_$_", artistid => 100 + $_ };
     }
-    # XXX why does insert_bulk not work here?
-    my @foo = $ars->populate (\@pop);
+    $ars->populate (\@pop);
   });
 
 # count what we did so far
   is ($ars->count, 6, 'Simple count works');
 
 # test UPDATE
-  lives_ok {
-    $schema->resultset('Artist')
-           ->search({name => 'foo'})
-           ->update({rank => 4 });
+  lives_and {
+    $ars->search({ name => 'foo' })->update({ rank => 4 });
+
+    is $ars->search({ name => 'foo' })->first->rank, 4;
   } 'Can update a column';
 
   my ($updated) = $schema->resultset('Artist')->search({name => 'foo'});
@@ -151,6 +150,15 @@ EOF
   is( $lim->next->artistid, 102, "iterator->next ok" );
   is( $lim->next, undef, "next past end of resultset ok" );
 
+# test multiple executing cursors
+  {
+    my $rs1 = $ars->search({}, { order_by => { -asc  => 'artistid' }});
+    my $rs2 = $ars->search({}, { order_by => { -desc => 'artistid' }});
+
+    is $rs1->first->artistid, 1,   'multiple cursors';
+    is $rs2->first->artistid, 102, 'multiple cursors';
+  }
+
 # test empty insert
   {
     local $ars->result_source->column_info('artistid')->{is_auto_increment} = 0;