From: Jess Robinson Date: Mon, 26 Apr 2010 19:45:32 +0000 (+0000) Subject: Add tests using select/as to sqlahacks X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a5f843e3e7eab3519f2aa2d4ec234365c0da469e;p=dbsrgits%2FDBIx-Class-Historic.git Add tests using select/as to sqlahacks --- diff --git a/t/sqlahacks/limit_dialects/rownumberover.t b/t/sqlahacks/limit_dialects/rownumberover.t new file mode 100644 index 0000000..42cf33e --- /dev/null +++ b/t/sqlahacks/limit_dialects/rownumberover.t @@ -0,0 +1,36 @@ +use strict; +use warnings; + +use Test::More; +use lib qw(t/lib); +use DBICTest; +use DBIC::SqlMakerTest; + +my $schema = DBICTest->init_schema; + +delete $schema->storage->_sql_maker->{_cached_syntax}; +$schema->storage->_sql_maker->limit_dialect ('RowNumberOver'); + +my $rs_selectas_rno = $schema->resultset ('BooksInLibrary')->search ({}, { '+select' => ['owner.name'], '+as' => ['owner_name'], join => 'owner', rows => 1 }); + +is_same_sql_bind( $rs_selectas_rno->search({})->as_query, + "(SELECT + me.id, me.source, me.owner, me.title, me.price, + owner.name + FROM + (SELECT me.*, + ROW_NUMBER() OVER( ) AS rno__row__index + FROM + (SELECT me.id, me.source, me.owner, me.title, me.price, owner.name + FROM books me + JOIN owners owner ON owner.id = me.owner + WHERE ( source = ? ) + ) me + ) me + JOIN owners owner ON owner.id = me.owner + WHERE rno__row__index BETWEEN 1 AND 1 )", + [ [ 'source', 'Library' ] ], + ); + + +done_testing; diff --git a/t/sqlahacks/limit_dialects/toplimit.t b/t/sqlahacks/limit_dialects/toplimit.t index 3323574..b449850 100644 --- a/t/sqlahacks/limit_dialects/toplimit.t +++ b/t/sqlahacks/limit_dialects/toplimit.t @@ -119,7 +119,7 @@ my @tests = ( my @default_tests = ( undef, '', {}, [] ); -plan (tests => scalar @tests + scalar @default_tests + 1); +# plan (tests => scalar @tests + scalar @default_tests + 1); test_order ($_) for @tests; default_test_order ($_) for @default_tests; @@ -150,3 +150,19 @@ me.id, me.source, me.owner, me.title, me.price, owner.id, owner.name FROM ORDER BY title)' , [ [ source => 'Library' ], [ source => 'Library' ] ], ); + +my $rs_selectas_top = $schema->resultset ('BooksInLibrary')->search ({}, { '+select' => ['owner.name'], '+as' => ['owner_name'], join => 'owner', rows => 1 }); + +is_same_sql_bind( $rs_selectas_top->search({})->as_query, + "(SELECT + TOP 1 me.id, me.source, me.owner, me.title, me.price, + owner.name + FROM books me + JOIN owners owner ON owner.id = me.owner + WHERE ( source = ? ) + ORDER BY me.id ASC + )", + [ [ 'source', 'Library' ] ], + ); + +done_testing;