X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fresultset%2Fas_subselect_rs.t;h=6d7597756ded534a501064da93c98333ab6654c2;hb=961d79dbe25ef8a92e867fcc84914b4bf568c11d;hp=8644079f723b54119b2b9483cb42183089458b41;hpb=8273e845426f0187b4ad6c4a1b42286fa09a648f;p=dbsrgits%2FDBIx-Class.git diff --git a/t/resultset/as_subselect_rs.t b/t/resultset/as_subselect_rs.t index 8644079..6d75977 100644 --- a/t/resultset/as_subselect_rs.t +++ b/t/resultset/as_subselect_rs.t @@ -5,8 +5,7 @@ use Test::More; use Test::Exception; use lib qw(t/lib); -use DBICTest; -use DBIC::SqlMakerTest; +use DBICTest ':DiffSQL'; my $schema = DBICTest->init_schema(); @@ -40,4 +39,32 @@ is_same_sql_bind ( 'Resultset-class attributes do not seep outside of the subselect', ); +is_same_sql_bind( + $schema->resultset('CD')->search ({}, { + rows => 2, + join => [ 'genre', { artist => 'cds' } ], + distinct => 1, + columns => { + title => 'me.title', + artist__name => 'artist.name', + genre__name => 'genre.name', + cds_for_artist => \ '(SELECT COUNT(*) FROM cds WHERE cd.artist = artist.id)', + }, + order_by => { -desc => 'me.year' }, + })->count_rs->as_query, + '( + SELECT COUNT( * ) + FROM ( + SELECT artist.name AS artist__name, (SELECT COUNT(*) FROM cds WHERE cd.artist = artist.id), genre.name AS genre__name, me.title, me.year + FROM cd me + LEFT JOIN genre genre + ON genre.genreid = me.genreid + JOIN artist artist ON artist.artistid = me.artist + GROUP BY artist.name, (SELECT COUNT(*) FROM cds WHERE cd.artist = artist.id), genre.name, me.title, me.year + LIMIT ? + ) me + )', + [ [{ sqlt_datatype => 'integer' } => 2 ] ], +); + done_testing;