}
);
-# 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)
# 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,
'(
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'
);
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',
);