Optimize RowNum limit dialect as per suggestion in RT#61277
[dbsrgits/DBIx-Class.git] / t / sqlmaker / limit_dialects / rownum.t
CommitLineData
327368bc 1use strict;
2use warnings;
3
4use Test::More;
5
6use lib qw(t/lib);
7use DBICTest;
8use DBIC::SqlMakerTest;
9
10my $s = DBICTest->init_schema (no_deploy => 1, );
11$s->storage->sql_maker->limit_dialect ('RowNum');
12
13my $rs = $s->resultset ('CD');
14
15is_same_sql_bind (
16 $rs->search ({}, { rows => 1, offset => 3,columns => [
17 { id => 'foo.id' },
18 { 'bar.id' => 'bar.id' },
19 { bleh => \ 'TO_CHAR (foo.womble, "blah")' },
20 ]})->as_query,
d9672fb9 21 '(
22 SELECT id, bar__id, bleh
327368bc 23 FROM (
24 SELECT id, bar__id, bleh, ROWNUM rownum__index
25 FROM (
26 SELECT foo.id AS id, bar.id AS bar__id, TO_CHAR(foo.womble, "blah") AS bleh
27 FROM cd me
28 ) me
d9672fb9 29 WHERE ROWNUM <= 4
327368bc 30 ) me
d9672fb9 31 WHERE rownum__index >= 4
327368bc 32 )',
33 [],
34 'Rownum subsel aliasing works correctly'
35);
36
f8583f8f 37is_same_sql_bind (
d9672fb9 38 $rs->search ({}, { rows => 2, offset => 3,columns => [
f8583f8f 39 { id => 'foo.id' },
40 { 'ends_with_me.id' => 'ends_with_me.id' },
41 ]})->as_query,
42 '(SELECT id, ends_with_me__id
43 FROM (
44 SELECT id, ends_with_me__id, ROWNUM rownum__index
45 FROM (
46 SELECT foo.id AS id, ends_with_me.id AS ends_with_me__id
47 FROM cd me
48 ) me
d9672fb9 49 WHERE ROWNUM <= 5
f8583f8f 50 ) me
d9672fb9 51 WHERE rownum__index >= 4
f8583f8f 52 )',
53 [],
54 'Rownum subsel aliasing works correctly'
55);
56
327368bc 57done_testing;