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