X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fprefetch%2Fcorrelated.t;h=694cf0b776f5dd7e1cc72294dc672aacbcfd97f9;hb=65ad59ab00bf973e5fd7a375927fd831e6b6e6dc;hp=7e7690de5ce66b60418446f74ca95e94f9f9b9e9;hpb=36fd7f073078f8f36277b467910ab68676361edf;p=dbsrgits%2FDBIx-Class.git diff --git a/t/prefetch/correlated.t b/t/prefetch/correlated.t index 7e7690d..694cf0b 100644 --- a/t/prefetch/correlated.t +++ b/t/prefetch/correlated.t @@ -2,7 +2,6 @@ use strict; use warnings; use Test::More; -use Test::Exception; use lib qw(t/lib); use DBICTest; use DBIC::SqlMakerTest; @@ -24,7 +23,7 @@ my $c_rs = $cdrs->search ({}, { '+columns' => { sibling_count => $cdrs->search( { 'siblings.artist' => { -ident => 'me.artist' }, - 'siblings.cdid' => { '!=' => ['-and', { -ident => 'me.cdid' }, 'bogus condition'] }, + 'siblings.cdid' => { '!=' => ['-and', { -ident => 'me.cdid' }, 23414] }, }, { alias => 'siblings' }, )->count_rs->as_query, }, @@ -46,16 +45,19 @@ is_same_sql_bind( LEFT JOIN track tracks ON tracks.cd = me.cdid WHERE me.artist != ? - ORDER BY tracks.cd )', [ # subselect - [ 'siblings.cdid' => 'bogus condition' ], - [ 'me.artist' => 2 ], + [ { sqlt_datatype => 'integer', dbic_colname => 'siblings.cdid' } + => 23414 ], + + [ { sqlt_datatype => 'integer', dbic_colname => 'me.artist' } + => 2 ], # outher WHERE - [ 'me.artist' => 2 ], + [ { sqlt_datatype => 'integer', dbic_colname => 'me.artist' } + => 2 ], ], 'Expected SQL on correlated realiased subquery' ); @@ -81,12 +83,6 @@ is ($queries, 1, 'Only 1 query fired to retrieve everything'); $schema->storage->debug($orig_debug); $schema->storage->debugcb(undef); -# try to unbalance the select - -# first add a lone non-as-ed select -# it should be reordered to appear at the end without throwing prefetch/bind off -$c_rs = $c_rs->search({}, { '+select' => \[ 'me.cdid + ?', [ __add => 1 ] ] }); - # now add an unbalanced select/as pair $c_rs = $c_rs->search ({}, { '+select' => $cdrs->search( @@ -99,7 +95,6 @@ $c_rs = $c_rs->search ({}, { '+as' => [qw/active_from active_to/], }); - is_same_sql_bind( $c_rs->as_query, '( @@ -116,28 +111,28 @@ is_same_sql_bind( WHERE siblings.artist = me.artist AND me.artist != ? ), - tracks.trackid, tracks.cd, tracks.position, tracks.title, tracks.last_updated_on, tracks.last_updated_at, - me.cdid + ? + tracks.trackid, tracks.cd, tracks.position, tracks.title, tracks.last_updated_on, tracks.last_updated_at FROM cd me LEFT JOIN track tracks ON tracks.cd = me.cdid WHERE me.artist != ? - ORDER BY tracks.cd )', [ # first subselect - [ 'siblings.cdid' => 'bogus condition' ], - [ 'me.artist' => 2 ], + [ { sqlt_datatype => 'integer', dbic_colname => 'siblings.cdid' } + => 23414 ], - # second subselect - [ 'me.artist' => 2 ], + [ { sqlt_datatype => 'integer', dbic_colname => 'me.artist' } + => 2 ], - # the addition - [ __add => 1 ], + # second subselect + [ { sqlt_datatype => 'integer', dbic_colname => 'me.artist' } + => 2 ], # outher WHERE - [ 'me.artist' => 2 ], + [ { sqlt_datatype => 'integer', dbic_colname => 'me.artist' } + => 2 ], ], 'Expected SQL on correlated realiased subquery' );