Commit | Line | Data |
a5f843e3 |
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 | |
a5f843e3 |
11 | $schema->storage->_sql_maker->limit_dialect ('RowNumberOver'); |
12 | |
41eac664 |
13 | my $rs_selectas_col = $schema->resultset ('BooksInLibrary')->search ({}, { |
14 | '+select' => ['owner.name'], |
15 | '+as' => ['owner.name'], |
16 | join => 'owner', |
17 | rows => 1, |
18 | }); |
a5f843e3 |
19 | |
41eac664 |
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 | ); |
a5f843e3 |
71 | |
72 | done_testing; |