X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fresultset%2Fas_subselect_rs.t;h=c0f811051c302d8968f2c5315c1eba98b6a31fc7;hb=859b7922ff43f671aa6bf2f00d7c8b05ec0cedbb;hp=1453f63216ebfb84c465ed5355b1ae522dc3f65d;hpb=ec78160496ad2dbacb21b0f39350d5b42162a827;p=dbsrgits%2FDBIx-Class.git diff --git a/t/resultset/as_subselect_rs.t b/t/resultset/as_subselect_rs.t index 1453f63..c0f8110 100644 --- a/t/resultset/as_subselect_rs.t +++ b/t/resultset/as_subselect_rs.t @@ -27,7 +27,7 @@ my $book_rs = $schema->resultset ('BooksInLibrary')->search ({}, { join => 'owne is_same_sql_bind ( $book_rs->as_subselect_rs->as_query, - '(SELECT me.id, me.source, me.owner, me.title, me.price + '(SELECT me.id, me.source, me.owner, me.title, me.price FROM ( SELECT me.id, me.source, me.owner, me.title, me.price FROM books me @@ -35,8 +35,40 @@ is_same_sql_bind ( WHERE ( source = ? ) ) me )', - [ [ source => 'Library' ] ], + [ [ { sqlt_datatype => 'varchar', sqlt_size => 100, dbic_colname => 'source' } + => 'Library' ] ], 'Resultset-class attributes do not seep outside of the subselect', ); +$schema->storage->debug(1); + +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;