Massive rewrite of bind handling, and overall simplification of ::Storage::DBI
[dbsrgits/DBIx-Class.git] / t / prefetch / with_limit.t
index f6729b1..977a3f9 100644 (file)
@@ -31,7 +31,7 @@ my $use_prefetch = $no_prefetch->search(
   }
 );
 
-# add a floating +select to make sure it does nto throw things off
+# add a floating +select to make sure it does not throw things off
 # we also expect it to appear in both selectors, as we can not know
 # for sure which part of the query it applies to (may be order_by,
 # maybe something else)
@@ -39,11 +39,15 @@ my $use_prefetch = $no_prefetch->search(
 # we use a reference to the same array in bind vals, because
 # is_deeply picks up this difference too (not sure if bug or
 # feature)
-my $bind_one = [ __add => 1 ];
 $use_prefetch = $use_prefetch->search({}, {
-  '+select' => \[ 'me.artistid + ?', $bind_one ],
+  '+select' => \[ 'me.artistid + ?', [ \ 'inTEger' => 1 ] ],
 });
 
+my $bind_int_resolved = sub { [ { sqlt_datatype => 'inTEger' } => 1 ] };
+my $bind_vc_resolved = sub { [
+  { sqlt_datatype => 'varchar', sqlt_size => 100, dbic_colname => 'tracks.title' }
+    => 'blah-blah-1234568'
+] };
 is_same_sql_bind (
   $use_prefetch->as_query,
   '(
@@ -77,12 +81,12 @@ is_same_sql_bind (
     ORDER BY name DESC, cds.artist, cds.year ASC
   )',
   [
-    $bind_one,  # outer select
-    $bind_one,  # inner select
-    [ 'tracks.title' => 'blah-blah-1234568' ], # inner where
-    $bind_one,  # inner group_by
-    [ 'tracks.title' => 'blah-blah-1234568' ], # outer where
-    $bind_one,  # outer group_by
+    $bind_int_resolved->(),  # outer select
+    $bind_int_resolved->(),  # inner select
+    $bind_vc_resolved->(), # inner where
+    $bind_int_resolved->(),  # inner group_by
+    $bind_vc_resolved->(), # outer where
+    $bind_int_resolved->(),  # outer group_by
   ],
   'Expected SQL on complex limited prefetch'
 );
@@ -184,12 +188,12 @@ is_same_sql_bind (
     WHERE ( ( artist.name = ? AND me.year = ? ) )
     ORDER BY tracks.cd
   )',
-  [
-    [ 'artist.name' => 'foo' ],
-    [ 'me.year'     => 2010  ],
-    [ 'artist.name' => 'foo' ],
-    [ 'me.year'     => 2010  ],
-  ],
+  [ map {
+    [ { sqlt_datatype => 'varchar', sqlt_size => 100, dbic_colname => 'artist.name' }
+      => 'foo' ],
+    [ { sqlt_datatype => 'varchar', sqlt_size => 100, dbic_colname => 'me.year' }
+      => 2010 ],
+  } (1,2)],
   'No grouping of non-multiplying resultsets',
 );