Argh.. committing missing test file for load_namespaces tests
[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 $schema->storage->_sql_maker->limit_dialect ('RowNumberOver');
12
13 my $rs_selectas_col = $schema->resultset ('BooksInLibrary')->search ({}, {
14   '+select' => ['owner.name'],
15   '+as' => ['owner.name'],
16   join => 'owner',
17   rows => 1,
18 });
19
20 is_same_sql_bind(
21   $rs_selectas_col->as_query,
22   '(
23     SELECT  me.id, me.source, me.owner, me.title, me.price,
24             owner.name
25       FROM (
26         SELECT  me.*,
27                 ROW_NUMBER() OVER( ) AS rno__row__index
28           FROM (
29             SELECT  me.id, me.source, me.owner, me.title, me.price,
30                     owner.name
31               FROM books me
32               JOIN owners owner ON owner.id = me.owner
33             WHERE ( source = ? )
34           ) me
35       ) me
36       JOIN owners owner ON owner.id = me.owner
37     WHERE rno__row__index BETWEEN 1 AND 1
38   )',
39   [  [ 'source', 'Library' ] ],
40 );
41
42
43 my $rs_selectas_rel = $schema->resultset ('BooksInLibrary')->search ({}, {
44   '+select' => ['owner.name'],
45   '+as' => ['owner_name'],
46   join => 'owner',
47   rows => 1
48 });
49
50 is_same_sql_bind(
51   $rs_selectas_rel->as_query,
52   '(
53     SELECT  me.id, me.source, me.owner, me.title, me.price,
54             owner.name
55       FROM (
56         SELECT  me.*,
57                 ROW_NUMBER() OVER( ) AS rno__row__index
58           FROM (
59             SELECT  me.id, me.source, me.owner, me.title, me.price,
60                     owner.name
61               FROM books me
62               JOIN owners owner ON owner.id = me.owner
63             WHERE ( source = ? )
64           ) me
65       ) me
66       JOIN owners owner ON owner.id = me.owner
67     WHERE rno__row__index BETWEEN 1 AND 1
68   )',
69   [ [ 'source', 'Library' ] ],
70 );
71
72 done_testing;