X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Ffrom_subquery.t;h=34b88dc4257830de833c199705ce18b07dc28a34;hb=37aafa2ede65e38af8fe9eda374ad4626290932f;hp=3fd6cb0c0c812dc52704a4cb8d1d078aad660b66;hpb=2a2ca43fa8c62a99c36c983b1af3b31e2375f0ac;p=dbsrgits%2FDBIx-Class.git diff --git a/t/from_subquery.t b/t/from_subquery.t index 3fd6cb0..34b88dc 100644 --- a/t/from_subquery.t +++ b/t/from_subquery.t @@ -1,19 +1,14 @@ use strict; -use warnings FATAL => 'all'; +use warnings; use Test::More; -BEGIN { - eval "use SQL::Abstract 1.49"; - plan $@ - ? ( skip_all => "Needs SQLA 1.49+" ) - : ( tests => 8 ); -} - use lib qw(t/lib); use DBICTest; use DBIC::SqlMakerTest; +plan tests => 8; + my $schema = DBICTest->init_schema(); my $art_rs = $schema->resultset('Artist'); my $cdrs = $schema->resultset('CD'); @@ -23,11 +18,9 @@ my $cdrs = $schema->resultset('CD'); artist_id => { 'in' => $art_rs->search({}, { rows => 1 })->get_column( 'id' )->as_query }, }); - my $arr = $cdrs2->as_query; - my ($query, @bind) = @{$$arr}; is_same_sql_bind( - $query, \@bind, - "SELECT me.cdid,me.artist,me.title,me.year,me.genreid,me.single_track FROM cd me WHERE artist_id IN ( SELECT id FROM artist me LIMIT 1 )", + $cdrs2->as_query, + "(SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track FROM cd me WHERE artist_id IN ( SELECT me.id FROM artist me LIMIT 1 ))", [], ); } @@ -42,11 +35,9 @@ my $cdrs = $schema->resultset('CD'); }, ); - my $arr = $rs->as_query; - my ($query, @bind) = @{$$arr}; is_same_sql_bind( - $query, \@bind, - "SELECT (SELECT id FROM cd me LIMIT 1) FROM artist me", + $rs->as_query, + "(SELECT (SELECT me.id FROM cd me LIMIT 1) FROM artist me)", [], ); } @@ -61,11 +52,9 @@ my $cdrs = $schema->resultset('CD'); }, ); - my $arr = $rs->as_query; - my ($query, @bind) = @{$$arr}; is_same_sql_bind( - $query, \@bind, - "SELECT me.artistid, me.name, me.rank, me.charfield, (SELECT id FROM cd me LIMIT 1) FROM artist me", + $rs->as_query, + "(SELECT me.artistid, me.name, me.rank, me.charfield, (SELECT me.id FROM cd me LIMIT 1) FROM artist me)", [], ); } @@ -82,12 +71,14 @@ my $cdrs = $schema->resultset('CD'); }, ); - my $arr = $rs->as_query; - my ($query, @bind) = @{$$arr}; is_same_sql_bind( - $query, \@bind, - "SELECT cd2.cdid, cd2.artist, cd2.title, cd2.year, cd2.genreid, cd2.single_track FROM (SELECT me.cdid,me.artist,me.title,me.year,me.genreid,me.single_track FROM cd me WHERE ( id > ? ) ) cd2", - [ [ 'id', 20 ] ], + $rs->as_query, + "(SELECT cd2.cdid, cd2.artist, cd2.title, cd2.year, cd2.genreid, cd2.single_track FROM ( + SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track FROM cd me WHERE ( id > ? ) + ) cd2)", + [ + [ 'id', 20 ] + ], ); } @@ -100,11 +91,10 @@ my $cdrs = $schema->resultset('CD'); { 'me.artistid' => 'cds_artist' } ] ] }); - my $arr = $art_rs2->as_query; - my ($query, @bind) = @{$$arr}; is_same_sql_bind( - $query, \@bind, - "SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me JOIN (SELECT me.artist as cds_artist FROM cd me) cds ON me.artistid = cds_artist", [] + $art_rs2->as_query, + "(SELECT me.artistid, me.name, me.rank, me.charfield FROM artist me JOIN (SELECT me.artist as cds_artist FROM cd me) cds ON me.artistid = cds_artist)", + [] ); @@ -129,18 +119,19 @@ my $cdrs = $schema->resultset('CD'); }, ); - my $arr = $rs->as_query; - my ($query, @bind) = @{$$arr}; is_same_sql_bind( - $query, \@bind, - "SELECT cd2.cdid, cd2.artist, cd2.title, cd2.year, cd2.genreid, cd2.single_track - FROM - (SELECT cd3.cdid,cd3.artist,cd3.title,cd3.year,cd3.genreid,cd3.single_track - FROM - (SELECT me.cdid,me.artist,me.title,me.year,me.genreid,me.single_track + $rs->as_query, + "(SELECT cd2.cdid, cd2.artist, cd2.title, cd2.year, cd2.genreid, cd2.single_track + FROM + (SELECT cd3.cdid, cd3.artist, cd3.title, cd3.year, cd3.genreid, cd3.single_track + FROM + (SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track FROM cd me WHERE ( id < ? ) ) cd3 - WHERE ( id > ? ) ) cd2", - [ [ 'id', 40 ], [ 'id', 20 ] ], + WHERE ( id > ? ) ) cd2)", + [ + [ 'id', 40 ], + [ 'id', 20 ] + ], ); } @@ -154,11 +145,9 @@ my $cdrs = $schema->resultset('CD'); )->get_column('year')->max_rs->as_query, }, }); - my $arr = $rs->as_query; - my ($query, @bind) = @{$$arr}; is_same_sql_bind( - $query, \@bind, - "SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track FROM cd me WHERE year = (SELECT MAX(inner.year) FROM cd inner WHERE artistid = me.artistid)", + $rs->as_query, + "(SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track FROM cd me WHERE year = (SELECT MAX(inner.year) FROM cd inner WHERE artistid = me.artistid))", [], ); } @@ -174,13 +163,11 @@ my $cdrs = $schema->resultset('CD'); }, ); - my $arr = $rs->as_query; - my ($query, @bind) = @{$$arr}; is_same_sql_bind( - $query, \@bind, - "SELECT cd2.cdid, cd2.artist, cd2.title, cd2.year, cd2.genreid, cd2.single_track FROM (SELECT me.cdid,me.artist,me.title,me.year,me.genreid,me.single_track FROM cd me WHERE ( title = ? ) ) cd2", + $rs->as_query, + "(SELECT cd2.cdid, cd2.artist, cd2.title, cd2.year, cd2.genreid, cd2.single_track FROM ( + SELECT me.cdid, me.artist, me.title, me.year, me.genreid, me.single_track FROM cd me WHERE ( title = ? ) + ) cd2)", [ [ 'title', 'Thriller' ] ], ); } - -__END__