arrayrefs for on_connect_do
Matt S Trout [Tue, 21 Aug 2007 18:50:00 +0000 (18:50 +0000)]
lib/DBIx/Class/Storage/DBI.pm
t/92storage_on_connect_do.t

index 9e621ab..3338b93 100644 (file)
@@ -795,9 +795,10 @@ sub _do_query {
     $action->($self);
   }
   else {
-    $self->debugobj->query_start($action) if $self->debug();
-    $self->_dbh->do($action);
-    $self->debugobj->query_end($action) if $self->debug();
+    my @to_run = (ref $action eq 'ARRAY') ? (@$action) : ($action);
+    $self->_query_start(@to_run);
+    $self->_dbh->do(@to_run);
+    $self->_query_end(@to_run);
   }
 
   return $self;
index a736272..0c35923 100644 (file)
@@ -14,13 +14,19 @@ my $schema = DBICTest->init_schema(
 ok $schema->connection(
     DBICTest->_database,
     {
-        on_connect_do       => ['CREATE TABLE TEST_empty (id INTEGER)'],
+        on_connect_do       => [
+            'CREATE TABLE TEST_empty (id INTEGER)',
+            [ 'INSERT INTO TEST_empty VALUES (?)', {}, 2 ],
+        ],
         on_disconnect_do    =>
             [\&check_exists, 'DROP TABLE TEST_empty', \&check_dropped],
     },
 ), 'connection()';
 
-ok $schema->storage->dbh->do('SELECT 1 FROM TEST_empty'), 'on_connect_do() worked';
+is_deeply
+  $schema->storage->dbh->selectall_arrayref('SELECT * FROM TEST_empty'),
+  [ [ 2 ] ],
+  'on_connect_do() worked';
 eval { $schema->storage->dbh->do('SELECT 1 FROM TEST_nonexistent'); };
 ok $@, 'Searching for nonexistent table dies';