Reformat tests/comments a bit
[dbsrgits/DBIx-Class.git] / t / sqlahacks / limit_dialects / rownumberover.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5 use lib qw(t/lib);
6 use DBICTest;
7 use DBIC::SqlMakerTest;
8
9 my $schema = DBICTest->init_schema;
10
11 delete $schema->storage->_sql_maker->{_cached_syntax};
12 $schema->storage->_sql_maker->limit_dialect ('RowNumberOver');
13
14 my $rs_selectas_col = $schema->resultset ('BooksInLibrary')->search ({}, {
15   '+select' => ['owner.name'],
16   '+as' => ['owner.name'],
17   join => 'owner',
18   rows => 1,
19 });
20
21 use Data::Dumper;
22 $Data::Dumper::Maxdepth = 4;
23 #die Dumper $rs_selectas_col->_resolved_attrs;
24
25 is_same_sql_bind(
26   $rs_selectas_col->as_query,
27   '(
28     SELECT  me.id, me.source, me.owner, me.title, me.price,
29             owner.name
30       FROM (
31         SELECT  me.*,
32                 ROW_NUMBER() OVER( ) AS rno__row__index
33           FROM (
34             SELECT  me.id, me.source, me.owner, me.title, me.price,
35                     owner.name
36               FROM books me
37               JOIN owners owner ON owner.id = me.owner
38             WHERE ( source = ? )
39           ) me
40       ) me
41       JOIN owners owner ON owner.id = me.owner
42     WHERE rno__row__index BETWEEN 1 AND 1
43   )',
44   [  [ 'source', 'Library' ] ],
45 );
46
47
48 my $rs_selectas_rel = $schema->resultset ('BooksInLibrary')->search ({}, {
49   '+select' => ['owner.name'],
50   '+as' => ['owner_name'],
51   join => 'owner',
52   rows => 1
53 });
54
55 is_same_sql_bind(
56   $rs_selectas_rel->as_query,
57   '(
58     SELECT  me.id, me.source, me.owner, me.title, me.price,
59             owner.name
60       FROM (
61         SELECT  me.*,
62                 ROW_NUMBER() OVER( ) AS rno__row__index
63           FROM (
64             SELECT  me.id, me.source, me.owner, me.title, me.price,
65                     owner.name
66               FROM books me
67               JOIN owners owner ON owner.id = me.owner
68             WHERE ( source = ? )
69           ) me
70       ) me
71       JOIN owners owner ON owner.id = me.owner
72     WHERE rno__row__index BETWEEN 1 AND 1
73   )',
74   [ [ 'source', 'Library' ] ],
75 );
76
77 done_testing;