X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fsqlmaker%2Flimit_dialects%2Ftoplimit.t;h=fc1c7fbe0825b7a065a568e686ec956180f43f82;hb=69d3c2708f5564ce38d5878fa694b04f6740cde0;hp=630f32d7cb7a9d4b323f9b8052dfc873a8e4367b;hpb=f7e5fd18a414d3e3a29dbfb68039fc50b452f2ce;p=dbsrgits%2FDBIx-Class.git diff --git a/t/sqlmaker/limit_dialects/toplimit.t b/t/sqlmaker/limit_dialects/toplimit.t index 630f32d..fc1c7fb 100644 --- a/t/sqlmaker/limit_dialects/toplimit.t +++ b/t/sqlmaker/limit_dialects/toplimit.t @@ -43,6 +43,44 @@ for my $null_order ( ); } +{ +my $subq = $schema->resultset('Owners')->search({ + 'count.id' => { -ident => 'owner.id' }, +}, { alias => 'owner' })->count_rs; + +my $rs_selectas_rel = $schema->resultset('BooksInLibrary')->search ({}, { + columns => [ + { owner_name => 'owner.name' }, + { owner_books => $subq->as_query }, + ], + join => 'owner', + rows => 2, + offset => 3, +}); + +is_same_sql_bind( + $rs_selectas_rel->as_query, + '( + SELECT TOP 2 owner_name, owner_books + FROM ( + SELECT TOP 5 owner.name AS owner_name, + ( SELECT COUNT( * ) + FROM owners owner + WHERE ( count.id = owner.id ) + ) AS owner_books + FROM books me + JOIN owners owner ON owner.id = me.owner + WHERE ( source = ? ) + ORDER BY me.id + ) me + ORDER BY me.id DESC + )', + [ [ { sqlt_datatype => 'varchar', sqlt_size => 100, dbic_colname => 'source' } + => 'Library' ] ], + 'pagination with subqueries works' +); + +} for my $ord_set ( { @@ -184,7 +222,7 @@ my $rs_selectas_top = $schema->resultset ('BooksInLibrary')->search ({}, { '+select' => ['owner.name'], '+as' => ['owner_name'], join => 'owner', - rows => 1 + rows => 1 }); is_same_sql_bind( $rs_selectas_top->search({})->as_query,