blob: 37c986cd54c18e64040eb60f5412b59afda79190 [file] [log] [blame]
====
---- QUERY
# Based on Aggregation Queries
select int_col, sum(float_col)
from alltypessmall
where id < 5
group by 1
order by 2
limit 3
---- RESULTS
0,0
1,1.100000023841858
2,2.200000047683716
---- TYPES
INT, DOUBLE
====
---- QUERY
# Run query without order by
select tinyint_col, count(*)
from alltypesagg
group by 1
limit 10
---- RESULTS
3,1000
NULL,2000
2,1000
4,1000
8,1000
1,1000
6,1000
5,1000
7,1000
9,1000
---- TYPES
TINYINT, BIGINT
====
---- QUERY
# Same query order by asc first col
select tinyint_col, count(*)
from alltypesagg
group by 1
order by 1
limit 10
---- RESULTS
1,1000
2,1000
3,1000
4,1000
5,1000
6,1000
7,1000
8,1000
9,1000
NULL,2000
---- TYPES
TINYINT, BIGINT
====
---- QUERY
# Same query order by asc first col, NULL should be last
# because it compares greater.
select tinyint_col, count(*)
from alltypesagg
group by 1
order by 1
limit 10
---- RESULTS
1,1000
2,1000
3,1000
4,1000
5,1000
6,1000
7,1000
8,1000
9,1000
NULL,2000
---- TYPES
TINYINT, BIGINT
====
---- QUERY
# Same query order by asc first col, NULL should be first
select tinyint_col, count(*)
from alltypesagg
group by 1
order by 1 nulls first
limit 10
---- RESULTS
NULL,2000
1,1000
2,1000
3,1000
4,1000
5,1000
6,1000
7,1000
8,1000
9,1000
---- TYPES
TINYINT, BIGINT
====
---- QUERY
# Same query but first col desc.
# NULL should be first because it compares greater
select tinyint_col, count(*)
from alltypesagg
group by 1
order by 1 desc
limit 20
---- RESULTS
NULL,2000
9,1000
8,1000
7,1000
6,1000
5,1000
4,1000
3,1000
2,1000
1,1000
---- TYPES
TINYINT, BIGINT
====
---- QUERY
# Same query as above but NULL should be last
select tinyint_col, count(*)
from alltypesagg
group by 1
order by 1 desc nulls last
limit 20
---- RESULTS
9,1000
8,1000
7,1000
6,1000
5,1000
4,1000
3,1000
2,1000
1,1000
NULL,2000
---- TYPES
TINYINT, BIGINT
====
---- QUERY
select date_string_col,int_col
from alltypesagg
order by date_string_col, int_col desc
limit 10
---- RESULTS
'01/01/10',NULL
'01/01/10',NULL
'01/01/10',999
'01/01/10',998
'01/01/10',997
'01/01/10',996
'01/01/10',995
'01/01/10',994
'01/01/10',993
'01/01/10',992
---- TYPES
STRING, INT
====
---- QUERY
# order by with null tuples in tuple row
select j.*, d.* from JoinTbl j full outer join DimTbl d
on (j.test_id = d.id)
order by j.test_id, j.test_name, j.test_zip, j.alltypes_id, d.name
limit 100
---- RESULTS
1001,'Name1',94611,5000,1001,'Name1',94611
1002,'Name2',94611,5000,1002,'Name2',94611
1003,'Name3',94611,5000,1003,'Name3',94612
1004,'Name4',94611,5000,1004,'Name4',94612
1005,'Name5',94611,5000,1005,'Name5',94613
1006,'Name16',94612,5000,1006,'Name6',94613
1006,'Name16',94612,15000,1006,'Name6',94613
1006,'Name16',94616,5000,1006,'Name6',94613
1006,'Name16',94616,15000,1006,'Name6',94613
1006,'Name6',94616,5000,1006,'Name6',94613
1006,'Name6',94616,15000,1006,'Name6',94613
1106,'Name16',94612,5000,NULL,'NULL',NULL
1106,'Name16',94612,15000,NULL,'NULL',NULL
1106,'Name16',94616,5000,NULL,'NULL',NULL
1106,'Name16',94616,15000,NULL,'NULL',NULL
1106,'Name6',94612,5000,NULL,'NULL',NULL
1106,'Name6',94612,15000,NULL,'NULL',NULL
1106,'Name6',94616,5000,NULL,'NULL',NULL
1106,'Name6',94616,15000,NULL,'NULL',NULL
NULL,'NULL',NULL,NULL,1010,'Name10',94615
NULL,'NULL',NULL,NULL,1007,'Name7',94614
NULL,'NULL',NULL,NULL,1008,'Name8',94614
NULL,'NULL',NULL,NULL,1009,'Name9',94615
---- TYPES
BIGINT, STRING, INT, INT, BIGINT, STRING, INT
====
---- QUERY
# order by multiple cols with nulls
select tinyint_col % 3, smallint_col % 3, count(*)
from alltypesagg
where day = 1
group by 1, 2
order by 1, 2
limit 20
---- RESULTS
0,0,120
0,1,90
0,2,90
1,0,90
1,1,120
1,2,90
2,0,90
2,1,90
2,2,120
NULL,0,30
NULL,1,30
NULL,2,30
NULL,NULL,10
---- TYPES
TINYINT, SMALLINT, BIGINT
====
---- QUERY
select tinyint_col % 3, smallint_col % 3, count(*)
from alltypesagg
where day = 1
group by 1, 2
order by 1, 2 desc
limit 20
---- RESULTS
0,2,90
0,1,90
0,0,120
1,2,90
1,1,120
1,0,90
2,2,120
2,1,90
2,0,90
NULL,NULL,10
NULL,2,30
NULL,1,30
NULL,0,30
---- TYPES
TINYINT, SMALLINT, BIGINT
====
---- QUERY
select tinyint_col % 3, smallint_col % 3, count(*)
from alltypesagg
where day = 1
group by 1, 2
order by 1 desc, 2
limit 20
---- RESULTS
NULL,0,30
NULL,1,30
NULL,2,30
NULL,NULL,10
2,0,90
2,1,90
2,2,120
1,0,90
1,1,120
1,2,90
0,0,120
0,1,90
0,2,90
---- TYPES
TINYINT, SMALLINT, BIGINT
====
---- QUERY
select tinyint_col % 3, smallint_col % 3, count(*)
from alltypesagg
where day = 1
group by 1, 2
order by 1 desc, 2 desc
limit 20
---- RESULTS
NULL,NULL,10
NULL,2,30
NULL,1,30
NULL,0,30
2,2,120
2,1,90
2,0,90
1,2,90
1,1,120
1,0,90
0,2,90
0,1,90
0,0,120
---- TYPES
TINYINT, SMALLINT, BIGINT
====
---- QUERY
# Multiple ordering columns with asc/desc and nulls first/last
select tinyint_col % 3, smallint_col % 3, count(*)
from alltypesagg
where day = 1
group by 1, 2
order by 2 desc nulls last, 1 asc nulls first
limit 20
---- RESULTS
NULL,2,30
0,2,90
1,2,90
2,2,120
NULL,1,30
0,1,90
1,1,120
2,1,90
NULL,0,30
0,0,120
1,0,90
2,0,90
NULL,NULL,10
---- TYPES
TINYINT, SMALLINT, BIGINT
====
---- QUERY
select date_string_col
from alltypessmall
order by date_string_col desc
limit 50
---- RESULTS
'04/03/09'
'04/03/09'
'04/03/09'
'04/03/09'
'04/03/09'
'04/02/09'
'04/02/09'
'04/02/09'
'04/02/09'
'04/02/09'
'04/02/09'
'04/02/09'
'04/02/09'
'04/02/09'
'04/02/09'
'04/01/09'
'04/01/09'
'04/01/09'
'04/01/09'
'04/01/09'
'04/01/09'
'04/01/09'
'04/01/09'
'04/01/09'
'04/01/09'
'03/03/09'
'03/03/09'
'03/03/09'
'03/03/09'
'03/03/09'
'03/02/09'
'03/02/09'
'03/02/09'
'03/02/09'
'03/02/09'
'03/02/09'
'03/02/09'
'03/02/09'
'03/02/09'
'03/02/09'
'03/01/09'
'03/01/09'
'03/01/09'
'03/01/09'
'03/01/09'
'03/01/09'
'03/01/09'
'03/01/09'
'03/01/09'
'03/01/09'
---- TYPES
STRING
====
---- QUERY
# Based on join queries
select a.tinyint_col, b.id, a.string_col
from alltypesagg a join alltypessmall b on (a.tinyint_col = b.id)
where a.month=1
and a.day=1
and a.tinyint_col + b.tinyint_col < 5
and a.string_col > '88'
and b.bool_col = false
order by a.string_col
limit 5
---- RESULTS
1,1,'881'
1,1,'891'
1,1,'901'
1,1,'91'
1,1,'911'
---- TYPES
TINYINT, INT, STRING
====
---- QUERY
select a.tinyint_col, b.id, a.string_col
from alltypesagg a join alltypessmall b on (a.tinyint_col = b.id)
where a.month=1
and a.day=1
and a.tinyint_col + b.tinyint_col < 5
and a.string_col > '88'
and b.bool_col = false
order by a.string_col desc
limit 5
---- RESULTS
1,1,'991'
1,1,'981'
1,1,'971'
1,1,'961'
1,1,'951'
---- TYPES
TINYINT, INT, STRING
====
---- QUERY
select a.smallint_col, b.id, a.tinyint_col, c.id, a.int_col, b.float_col, c.string_col
from alltypesagg a
join alltypessmall b on (a.smallint_col = b.id)
join alltypessmall c on (a.tinyint_col = c.id)
where a.month=1
and a.day=1
and a.int_col > 899
and b.float_col > 4.5
and c.string_col < '7'
and a.int_col + b.float_col + cast(c.string_col as float) < 1000
order by c.string_col desc, a.smallint_col
limit 10
---- RESULTS
6,6,6,6,906,6.599999904632568,'6'
16,16,6,6,916,6.599999904632568,'6'
56,56,6,6,956,6.599999904632568,'6'
66,66,6,6,966,6.599999904632568,'6'
5,5,5,5,905,5.5,'5'
15,15,5,5,915,5.5,'5'
55,55,5,5,955,5.5,'5'
65,65,5,5,965,5.5,'5'
34,34,4,4,934,9.899999618530273,'4'
44,44,4,4,944,9.899999618530273,'4'
---- TYPES
SMALLINT, INT, TINYINT, INT, INT, FLOAT, STRING
====
---- QUERY
# Order by a column that is not in the select list
# Query with ordering column in select list
# Don't include date_string_col, it comes back in random order.
select int_col, tinyint_col
from alltypessmall
order by int_col desc
limit 20
---- RESULTS
9,9
9,9
9,9
9,9
9,9
9,9
9,9
9,9
8,8
8,8
8,8
8,8
8,8
8,8
8,8
8,8
7,7
7,7
7,7
7,7
---- TYPES
INT, TINYINT
====
---- QUERY
# Same query with ordering col not in select list
select tinyint_col
from alltypessmall
order by int_col desc
limit 20
---- RESULTS
9
9
9
9
9
9
9
9
8
8
8
8
8
8
8
8
7
7
7
7
---- TYPES
TINYINT
====
---- QUERY
# Order by many exprs
select year, month, count(*)
from alltypes
group by 1, 2
order by 1, 2
limit 100
---- RESULTS
2009,1,310
2009,2,280
2009,3,310
2009,4,300
2009,5,310
2009,6,300
2009,7,310
2009,8,310
2009,9,300
2009,10,310
2009,11,300
2009,12,310
2010,1,310
2010,2,280
2010,3,310
2010,4,300
2010,5,310
2010,6,300
2010,7,310
2010,8,310
2010,9,300
2010,10,310
2010,11,300
2010,12,310
---- TYPES
INT, INT, BIGINT
====
---- QUERY
# More Complex Ordering Exprs
select int_col % 7, count(*), avg(tinyint_col)
from alltypesagg
group by 1
order by avg(tinyint_col)
limit 10
---- RESULTS
4,1570,4.984496124031008
6,1560,4.9921875
1,1570,4.992248062015504
3,1580,5
5,1570,5.007751937984496
0,1560,5.0078125
2,1570,5.015503875968992
NULL,20,NULL
---- TYPES
INT, BIGINT, DOUBLE
====
---- QUERY
select int_col % 7, count(*), max(int_col)
from alltypesagg
group by 1
order by max(int_col)
limit 10
---- RESULTS
6,1560,993
0,1560,994
1,1570,995
2,1570,996
3,1580,997
4,1570,998
5,1570,999
NULL,20,NULL
---- TYPES
INT, BIGINT, INT
====
---- QUERY
select int_col % 5, count(*), avg(tinyint_col) - avg(float_col)
from alltypesagg
group by 1
order by avg(tinyint_col) - avg(float_col) desc
limit 10
---- RESULTS
NULL,20,NULL
1,2000,-544.8499889141322
2,2000,-544.9500045645237
0,2980,-545
3,2000,-545.0499953591824
4,2000,-545.1500110459327
---- TYPES
INT, BIGINT, DOUBLE
====
---- QUERY
select int_col
from alltypessmall
order by int_col % 5, int_col
limit 100
---- RESULTS
0
0
0
0
0
0
0
0
0
0
0
0
5
5
5
5
5
5
5
5
1
1
1
1
1
1
1
1
1
1
1
1
6
6
6
6
6
6
6
6
2
2
2
2
2
2
2
2
2
2
2
2
7
7
7
7
7
7
7
7
3
3
3
3
3
3
3
3
3
3
3
3
8
8
8
8
8
8
8
8
4
4
4
4
4
4
4
4
4
4
4
4
9
9
9
9
9
9
9
9
---- TYPES
INT
====
---- QUERY
# All select list items have an implicit alias. Test that the order by column ref
# "int_col" is correctly aliased to t1.int_col, and therefore it is not an
# ambiguous reference.
select t1.int_col from alltypessmall t1, alltypessmall t2 where t1.id = t2.id
order by int_col
limit 2
---- RESULTS
0
0
---- TYPES
INT
====
---- QUERY
select date_sub(timestamp_col, id), timestamp_col, id
from alltypessmall order by 1 limit 20
---- RESULTS
2008-12-10 00:24:00.960000000,2009-01-03 00:24:00.960000000,24
2008-12-11 00:23:00.930000000,2009-01-03 00:23:00.930000000,23
2008-12-12 00:22:00.910000000,2009-01-03 00:22:00.910000000,22
2008-12-13 00:21:00.900000000,2009-01-03 00:21:00.900000000,21
2008-12-14 00:19:00.810000000,2009-01-02 00:19:00.810000000,19
2008-12-14 00:20:00.900000000,2009-01-03 00:20:00.900000000,20
2008-12-15 00:18:00.730000000,2009-01-02 00:18:00.730000000,18
2008-12-16 00:17:00.660000000,2009-01-02 00:17:00.660000000,17
2008-12-16 00:24:00.960000000,2009-02-03 00:24:00.960000000,49
2008-12-17 00:16:00.600000000,2009-01-02 00:16:00.600000000,16
2008-12-17 00:23:00.930000000,2009-02-03 00:23:00.930000000,48
2008-12-18 00:15:00.550000000,2009-01-02 00:15:00.550000000,15
2008-12-18 00:22:00.910000000,2009-02-03 00:22:00.910000000,47
2008-12-19 00:14:00.510000000,2009-01-02 00:14:00.510000000,14
2008-12-19 00:21:00.900000000,2009-02-03 00:21:00.900000000,46
2008-12-19 00:24:00.960000000,2009-03-03 00:24:00.960000000,74
2008-12-20 00:13:00.480000000,2009-01-02 00:13:00.480000000,13
2008-12-20 00:19:00.810000000,2009-02-02 00:19:00.810000000,44
2008-12-20 00:20:00.900000000,2009-02-03 00:20:00.900000000,45
2008-12-20 00:23:00.930000000,2009-03-03 00:23:00.930000000,73
---- DBAPI_RESULTS
2008-12-10 00:24:00.960000,2009-01-03 00:24:00.960000,24
2008-12-11 00:23:00.930000,2009-01-03 00:23:00.930000,23
2008-12-12 00:22:00.910000,2009-01-03 00:22:00.910000,22
2008-12-13 00:21:00.900000,2009-01-03 00:21:00.900000,21
2008-12-14 00:19:00.810000,2009-01-02 00:19:00.810000,19
2008-12-14 00:20:00.900000,2009-01-03 00:20:00.900000,20
2008-12-15 00:18:00.730000,2009-01-02 00:18:00.730000,18
2008-12-16 00:17:00.660000,2009-01-02 00:17:00.660000,17
2008-12-16 00:24:00.960000,2009-02-03 00:24:00.960000,49
2008-12-17 00:16:00.600000,2009-01-02 00:16:00.600000,16
2008-12-17 00:23:00.930000,2009-02-03 00:23:00.930000,48
2008-12-18 00:15:00.550000,2009-01-02 00:15:00.550000,15
2008-12-18 00:22:00.910000,2009-02-03 00:22:00.910000,47
2008-12-19 00:14:00.510000,2009-01-02 00:14:00.510000,14
2008-12-19 00:21:00.900000,2009-02-03 00:21:00.900000,46
2008-12-19 00:24:00.960000,2009-03-03 00:24:00.960000,74
2008-12-20 00:13:00.480000,2009-01-02 00:13:00.480000,13
2008-12-20 00:19:00.810000,2009-02-02 00:19:00.810000,44
2008-12-20 00:20:00.900000,2009-02-03 00:20:00.900000,45
2008-12-20 00:23:00.930000,2009-03-03 00:23:00.930000,73
---- TYPES
TIMESTAMP, TIMESTAMP, INT
====
---- QUERY
# Test of order by with NULL tuple rows (from an outer join)
select t1.id, t1.int_col, t2.id, t2.int_col
from alltypesagg t1
left outer join alltypessmall t2
on (t1.int_col = t2.int_col)
order by t1.id,t2.id limit 10
---- RESULTS
0,NULL,NULL,NULL
0,NULL,NULL,NULL
1,1,1,1
1,1,11,1
1,1,21,1
1,1,26,1
1,1,36,1
1,1,46,1
1,1,51,1
1,1,61,1
---- TYPES
int,int,int,int
====
---- QUERY
# Test limit 0 from sub query
select sum(a.int_col) from
(select int_col from functional.alltypes order by int_col limit 0) a
---- RESULTS
NULL
---- TYPES
bigint
====
---- QUERY
# Test queries with divide by 0 (cast to string to avoid nan != nan issues)
select cast(if(id % 2 = 0, cast(id/3 as int), -id) / if(id > 4 or id = 0, 0, 1) as string)
from alltypestiny order by
if(id % 2 = 0, cast(id/3 as int), -id) / if(id > 4 or id = 0, 0, 1) desc limit 100;
---- RESULTS
'inf'
'1'
'0'
'-1'
'-3'
'-inf'
'-inf'
'nan'
---- TYPES
STRING
====
---- QUERY
# Test queries with divide by 0 (cast to string to avoid nan != nan issues)
select CAST(if(id % 2 = 0, cast(id/3 as int), -id) / if(id > 4 or id = 0, 0, 1) as STRING)
from alltypestiny order by
if(id % 2 = 0, cast(id/3 as int), -id) / if(id > 4 or id = 0, 0, 1) asc limit 100;
---- RESULTS
'nan'
'-inf'
'-inf'
'-3'
'-1'
'0'
'1'
'inf'
====
---- QUERY
# Taken from limit.test
# With an offset of 0
select * from alltypesagg where day is not null order by id limit 10 offset 0
---- RESULTS
0,true,NULL,NULL,NULL,NULL,NULL,NULL,'01/01/10','0',2010-01-01 00:00:00,2010,1,1
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/10','1',2010-01-01 00:01:00,2010,1,1
2,true,2,2,2,20,2.200000047683716,20.2,'01/01/10','2',2010-01-01 00:02:00.100000000,2010,1,1
3,false,3,3,3,30,3.299999952316284,30.3,'01/01/10','3',2010-01-01 00:03:00.300000000,2010,1,1
4,true,4,4,4,40,4.400000095367432,40.4,'01/01/10','4',2010-01-01 00:04:00.600000000,2010,1,1
5,false,5,5,5,50,5.5,50.5,'01/01/10','5',2010-01-01 00:05:00.100000000,2010,1,1
6,true,6,6,6,60,6.599999904632568,60.59999999999999,'01/01/10','6',2010-01-01 00:06:00.150000000,2010,1,1
7,false,7,7,7,70,7.699999809265137,70.7,'01/01/10','7',2010-01-01 00:07:00.210000000,2010,1,1
8,true,8,8,8,80,8.800000190734863,80.8,'01/01/10','8',2010-01-01 00:08:00.280000000,2010,1,1
9,false,9,9,9,90,9.899999618530273,90.89999999999999,'01/01/10','9',2010-01-01 00:09:00.360000000,2010,1,1
---- DBAPI_RESULTS
0,true,NULL,NULL,NULL,NULL,NULL,NULL,'01/01/10','0',2010-01-01 00:00:00,2010,1,1
1,false,1,1,1,10,1.100000023841,10.1,'01/01/10','1',2010-01-01 00:01:00,2010,1,1
2,true,2,2,2,20,2.200000047683,20.2,'01/01/10','2',2010-01-01 00:02:00.100000,2010,1,1
3,false,3,3,3,30,3.299999952316,30.3,'01/01/10','3',2010-01-01 00:03:00.300000,2010,1,1
4,true,4,4,4,40,4.400000095367,40.4,'01/01/10','4',2010-01-01 00:04:00.600000,2010,1,1
5,false,5,5,5,50,5.5,50.5,'01/01/10','5',2010-01-01 00:05:00.100000,2010,1,1
6,true,6,6,6,60,6.599999904632,60.59999999999999,'01/01/10','6',2010-01-01 00:06:00.150000,2010,1,1
7,false,7,7,7,70,7.699999809265,70.7,'01/01/10','7',2010-01-01 00:07:00.210000,2010,1,1
8,true,8,8,8,80,8.800000190734,80.8,'01/01/10','8',2010-01-01 00:08:00.280000,2010,1,1
9,false,9,9,9,90,9.899999618530,90.89999999999999,'01/01/10','9',2010-01-01 00:09:00.360000,2010,1,1
---- TYPES
int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp, int, int, int
====
---- QUERY
# Taken from limit.test
# With a non-zero offset
select * from alltypesagg where day is not null order by id limit 10 offset 5
---- RESULTS
5,false,5,5,5,50,5.5,50.5,'01/01/10','5',2010-01-01 00:05:00.100000000,2010,1,1
6,true,6,6,6,60,6.599999904632568,60.59999999999999,'01/01/10','6',2010-01-01 00:06:00.150000000,2010,1,1
7,false,7,7,7,70,7.699999809265137,70.7,'01/01/10','7',2010-01-01 00:07:00.210000000,2010,1,1
8,true,8,8,8,80,8.800000190734863,80.8,'01/01/10','8',2010-01-01 00:08:00.280000000,2010,1,1
9,false,9,9,9,90,9.899999618530273,90.89999999999999,'01/01/10','9',2010-01-01 00:09:00.360000000,2010,1,1
10,true,NULL,10,10,100,11,101,'01/01/10','10',2010-01-01 00:10:00.450000000,2010,1,1
11,false,1,11,11,110,12.10000038146973,111.1,'01/01/10','11',2010-01-01 00:11:00.550000000,2010,1,1
12,true,2,12,12,120,13.19999980926514,121.2,'01/01/10','12',2010-01-01 00:12:00.660000000,2010,1,1
13,false,3,13,13,130,14.30000019073486,131.3,'01/01/10','13',2010-01-01 00:13:00.780000000,2010,1,1
14,true,4,14,14,140,15.39999961853027,141.4,'01/01/10','14',2010-01-01 00:14:00.910000000,2010,1,1
---- DBAPI_RESULTS
5,false,5,5,5,50,5.5,50.5,'01/01/10','5',2010-01-01 00:05:00.100000,2010,1,1
6,true,6,6,6,60,6.599999904632,60.59999999999999,'01/01/10','6',2010-01-01 00:06:00.150000,2010,1,1
7,false,7,7,7,70,7.699999809265,70.7,'01/01/10','7',2010-01-01 00:07:00.210000,2010,1,1
8,true,8,8,8,80,8.800000190734,80.8,'01/01/10','8',2010-01-01 00:08:00.280000,2010,1,1
9,false,9,9,9,90,9.899999618530,90.89999999999999,'01/01/10','9',2010-01-01 00:09:00.360000,2010,1,1
10,true,NULL,10,10,100,11,101,'01/01/10','10',2010-01-01 00:10:00.450000,2010,1,1
11,false,1,11,11,110,12.10000038146,111.1,'01/01/10','11',2010-01-01 00:11:00.550000,2010,1,1
12,true,2,12,12,120,13.19999980926,121.2,'01/01/10','12',2010-01-01 00:12:00.660000,2010,1,1
13,false,3,13,13,130,14.30000019073,131.3,'01/01/10','13',2010-01-01 00:13:00.780000,2010,1,1
14,true,4,14,14,140,15.39999961853,141.4,'01/01/10','14',2010-01-01 00:14:00.910000,2010,1,1
---- TYPES
int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp, int, int, int
====
---- QUERY
# Taken from limit.test
# With an offset that reduces the result size (limit is much bigger than number of rows)
select id from functional.alltypessmall order by 1 limit 10000 offset 99;
---- RESULTS
99
---- TYPES
int
====
---- QUERY
# Taken from limit.test
# With an offset that is bigger than the number of rows
select id from functional.alltypessmall order by 1 limit 1 offset 1000;
---- RESULTS
---- TYPES
int
====
---- QUERY
# Taken from limit.test
# Offset within a subquery
select x.id from (
select id from alltypesagg order by id limit 5 offset 5) x
order by x.id
limit 100 offset 4;
---- RESULTS
8
---- TYPES
int
====
---- QUERY
# Taken from joins.test
# cross join
select t1.id, t2.id from alltypestiny t1 cross join alltypestiny t2
where (t1.id < 3 and t2.id < 3)
order by t1.id, t2.id limit 100
---- RESULTS
0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2
---- TYPES
int, int
====
---- QUERY
# Taken from joins.test
# cross join with nulls and constant table
select id, tinyint_col, t1.c from functional.alltypesagg
cross join (values(NULL c, 1, 2)) as t1
order by tinyint_col nulls first, id, t1.c
limit 6
---- RESULTS
0,NULL,NULL
0,NULL,NULL
10,NULL,NULL
10,NULL,NULL
20,NULL,NULL
20,NULL,NULL
---- TYPES
int, tinyint, null
---- HS2_TYPES
# HS2 maps NULL to BOOLEAN
int, tinyint, boolean
====
---- QUERY
# check cross joins within a subquery
# Taken from joins.test
select t1.id as t1_id, t2_id, t3_id from alltypestiny t1
cross join (select t2.id as t2_id, t3.id as t3_id from alltypestiny t2
cross join alltypestiny t3) t4
where t1.id < 2 and t2_id < 2 and t3_id < 2
order by t1.id, t2_id, t3_id
limit 10
---- RESULTS
0,0,0
0,0,1
0,1,0
0,1,1
1,0,0
1,0,1
1,1,0
1,1,1
---- TYPES
int, int, int
====
---- QUERY
# join with three tables and then a cross join, extra where predicates, extra scan
# predicates, nulls in joins cols (alltypesagg.tinyint_col contains nulls instead of
# 0s)
# Taken from joins.test
select a.smallint_col, b.id, a.tinyint_col, c.id, a.int_col, b.float_col, c.string_col, d.id
from alltypesagg a
join alltypessmall b on (a.smallint_col = b.id)
join alltypessmall c on (a.tinyint_col = c.id)
cross join alltypestiny d
where a.month=1
and a.day=1
and a.int_col > 899
and b.float_col > 4.5
and c.string_col < '4'
and a.int_col + b.float_col + cast(c.string_col as float) < 1000
and d.id < 2
order by a.id, b.id, c.id, d.id
limit 100
---- RESULTS
31,31,1,1,931,6.599999904632568,'1',0
31,31,1,1,931,6.599999904632568,'1',1
32,32,2,2,932,7.699999809265137,'2',0
32,32,2,2,932,7.699999809265137,'2',1
33,33,3,3,933,8.800000190734863,'3',0
33,33,3,3,933,8.800000190734863,'3',1
41,41,1,1,941,6.599999904632568,'1',0
41,41,1,1,941,6.599999904632568,'1',1
42,42,2,2,942,7.699999809265137,'2',0
42,42,2,2,942,7.699999809265137,'2',1
43,43,3,3,943,8.800000190734863,'3',0
43,43,3,3,943,8.800000190734863,'3',1
81,81,1,1,981,6.599999904632568,'1',0
81,81,1,1,981,6.599999904632568,'1',1
82,82,2,2,982,7.699999809265137,'2',0
82,82,2,2,982,7.699999809265137,'2',1
83,83,3,3,983,8.800000190734863,'3',0
83,83,3,3,983,8.800000190734863,'3',1
91,91,1,1,991,6.599999904632568,'1',0
91,91,1,1,991,6.599999904632568,'1',1
---- DBAPI_RESULTS
31,31,1,1,931,6.599999904632,'1',0
31,31,1,1,931,6.599999904632,'1',1
32,32,2,2,932,7.699999809265,'2',0
32,32,2,2,932,7.699999809265,'2',1
33,33,3,3,933,8.800000190734,'3',0
33,33,3,3,933,8.800000190734,'3',1
41,41,1,1,941,6.599999904632,'1',0
41,41,1,1,941,6.599999904632,'1',1
42,42,2,2,942,7.699999809265,'2',0
42,42,2,2,942,7.699999809265,'2',1
43,43,3,3,943,8.800000190734,'3',0
43,43,3,3,943,8.800000190734,'3',1
81,81,1,1,981,6.599999904632,'1',0
81,81,1,1,981,6.599999904632,'1',1
82,82,2,2,982,7.699999809265,'2',0
82,82,2,2,982,7.699999809265,'2',1
83,83,3,3,983,8.800000190734,'3',0
83,83,3,3,983,8.800000190734,'3',1
91,91,1,1,991,6.599999904632,'1',0
91,91,1,1,991,6.599999904632,'1',1
---- TYPES
SMALLINT, INT, TINYINT, INT, INT, FLOAT, STRING, INT
====
---- QUERY
# join against subquery with limit;
# predicate pushdown is prevented in presence of order by/limit clause; variant w/ join
# Taken from subquery-limit.test
select alltypes.id, a.id
from alltypes
join (
select a.id, a.bool_col
from alltypessmall a join alltypessmall using (id)
order by a.id limit 10
) a using (id)
where a.bool_col = true
order by
a.id
limit 5
---- RESULTS
0,0
2,2
4,4
6,6
8,8
---- TYPES
INT, INT
====
---- QUERY
# Mixed UNION ALL/DISTINCT but effectively only UNION DISTINCT, no nested unions,
# with order by and limit
# Taken from union.test
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union all
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union all
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2
union distinct
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2)
order by 1 limit 3
---- RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
---- DBAPI_RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
---- TYPES
int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp, int, int
====
---- QUERY
# Mixed UNION ALL/DISTINCT, no nested unions, with order by and limit
# Taken from union.test
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union distinct
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union all
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2
union all
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2)
order by 1,2 limit 3
---- RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
---- DBAPI_RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
---- TYPES
int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp, int, int
====
---- QUERY
# Mixed UNION ALL/DISTINCT, no nested unions, with order by and limit
# Taken from union.test
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union all
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union distinct
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2
union all
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2)
order by 1,2 limit 4
---- RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
---- DBAPI_RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
---- TYPES
int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp, int, int
====
---- QUERY
# Complex union unnesting: Partially unnestable up to 2nd level
# Taken from union.test
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union all
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union distinct
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2
union all
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2
union distinct
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=3)
order by 1 limit 3)))
order by 12, 13, 1
limit 20
---- RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01:00,2009,2
4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00,2009,3
---- DBAPI_RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
1,false,1,1,1,10,1.100000023841,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
3,false,1,1,1,10,1.10000002384158,10.1,'02/01/09','1',2009-02-01 00:01:00,2009,2
4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00,2009,3
---- TYPES
int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp, int, int
====
---- QUERY
# Complex union unnesting: Partially unnestable up to 1st level
# Taken from union.test
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union distinct
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union distinct
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2
union all
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2
union distinct
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=3)
order by 1 limit 3)))
order by 12, 13, 1
limit 20
---- RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01:00,2009,2
4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00,2009,3
---- DBAPI_RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
3,false,1,1,1,10,1.100000023841,10.1,'02/01/09','1',2009-02-01 00:01:00,2009,2
4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00,2009,3
---- TYPES
int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp, int, int
====
---- QUERY
# Complex union unnesting: Multiple nested unions to test all rules in a single query
# Taken from union.test
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union distinct
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union all
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2)
union distinct
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2
union all
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=3)
order by 1 limit 3)
union all
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=3
union all
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=4)
union all
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=4
union all
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=5)
order by 1 limit 3)
order by 12, 13, 1
limit 20
---- RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01:00,2009,2
4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00,2009,3
4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00,2009,3
5,false,1,1,1,10,1.100000023841858,10.1,'03/01/09','1',2009-03-01 00:01:00,2009,3
6,true,0,0,0,0,0,0,'04/01/09','0',2009-04-01 00:00:00,2009,4
6,true,0,0,0,0,0,0,'04/01/09','0',2009-04-01 00:00:00,2009,4
7,false,1,1,1,10,1.100000023841858,10.1,'04/01/09','1',2009-04-01 00:01:00,2009,4
7,false,1,1,1,10,1.100000023841858,10.1,'04/01/09','1',2009-04-01 00:01:00,2009,4
---- DBAPI_RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
3,false,1,1,1,10,1.100000023841,10.1,'02/01/09','1',2009-02-01 00:01:00,2009,2
4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00,2009,3
4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00,2009,3
5,false,1,1,1,10,1.100000023841,10.1,'03/01/09','1',2009-03-01 00:01:00,2009,3
6,true,0,0,0,0,0,0,'04/01/09','0',2009-04-01 00:00:00,2009,4
6,true,0,0,0,0,0,0,'04/01/09','0',2009-04-01 00:00:00,2009,4
7,false,1,1,1,10,1.100000023841,10.1,'04/01/09','1',2009-04-01 00:01:00,2009,4
7,false,1,1,1,10,1.100000023841,10.1,'04/01/09','1',2009-04-01 00:01:00,2009,4
---- TYPES
int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp, int, int
====
---- QUERY
# UNION ALL in subquery
# Taken from union.test
select x.id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union all
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1) x
union all
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2)
order by 1 limit 5
---- RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
---- DBAPI_RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
1,false,1,1,1,10,1.100000023841,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
---- TYPES
int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp, int, int
====
---- QUERY
# UNION DISTINCT in subquery
# Taken from union.test
select x.id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1
union distinct
select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=1) x
union distinct
(select id, bool_col, tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col, date_string_col, string_col, timestamp_col, year, month from alltypestiny where year=2009 and month=2)
order by 1 limit 3
---- RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
---- DBAPI_RESULTS
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
1,false,1,1,1,10,1.100000023841,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
---- TYPES
int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp, int, int
====
---- QUERY
values(1+1, 2, 5.0, 'a') order by 1 limit 10
---- RESULTS
2,2,5.0,'a'
---- TYPES
SMALLINT, TINYINT, DECIMAL, STRING
====
---- QUERY
values((1+8, 2, 5.0, 'a'), (2, 3, 6.0, 'b'), (3, 4, 7.0, 'c')) order by 1 desc limit 2
---- RESULTS
9,2,5.0,'a'
3,4,7.0,'c'
---- TYPES
SMALLINT, TINYINT, DECIMAL, STRING
====
---- QUERY
# Basic test with a single with-clause view that references a virtual view.
# Taken from with-clause.test
with t as (select abc x, xyz y from functional.complex_view)
select x, y from t order by y limit 10
---- RESULTS
2,'0'
2,'1'
---- TYPES
BIGINT, STRING
====
---- QUERY
# Multiple views in with-clause. All views are used in a union.
# Taken from with-clause.test
with t1 as (select int_col x, bigint_col y from functional.alltypestiny),
t2 as (select 1 x , 10 y), t3 as (values(2 x , 20 y), (3, 30))
select * from t1 union all select * from t2 union all (select * from t3) order by x limit 20
---- RESULTS
0,0
0,0
0,0
0,0
1,10
1,10
1,10
1,10
1,10
2,20
3,30
---- TYPES
INT, BIGINT
====
---- QUERY
# Self-join of with-clause table to make sure the join op is properly set
# in the cloned inline-view instances.
# Taken from with-clause.test
with t as (select int_col x, bigint_col y from functional.alltypestiny order by id limit 2)
select * from t t1 left outer join t t2 on t1.y = t2.x full outer join t t3 on t2.y = t3.x
order by t1.x limit 10
---- RESULTS
0,0,0,0,0,0
1,10,NULL,NULL,NULL,NULL
NULL,NULL,NULL,NULL,1,10
---- TYPES
INT, BIGINT, INT, BIGINT, INT, BIGINT
====
---- QUERY
select * from functional.alltypestiny order by 2,1 limit 10
---- RESULTS
1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01:00,2009,2
5,false,1,1,1,10,1.100000023841858,10.1,'03/01/09','1',2009-03-01 00:01:00,2009,3
7,false,1,1,1,10,1.100000023841858,10.1,'04/01/09','1',2009-04-01 00:01:00,2009,4
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00,2009,3
6,true,0,0,0,0,0,0,'04/01/09','0',2009-04-01 00:00:00,2009,4
---- DBAPI_RESULTS
1,false,1,1,1,10,1.100000023841,10.1,'01/01/09','1',2009-01-01 00:01:00,2009,1
3,false,1,1,1,10,1.100000023841,10.1,'02/01/09','1',2009-02-01 00:01:00,2009,2
5,false,1,1,1,10,1.100000023841,10.1,'03/01/09','1',2009-03-01 00:01:00,2009,3
7,false,1,1,1,10,1.100000023841,10.1,'04/01/09','1',2009-04-01 00:01:00,2009,4
0,true,0,0,0,0,0,0,'01/01/09','0',2009-01-01 00:00:00,2009,1
2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00,2009,2
4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00,2009,3
6,true,0,0,0,0,0,0,'04/01/09','0',2009-04-01 00:00:00,2009,4
---- TYPES
INT, BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, STRING, STRING, TIMESTAMP, INT, INT
====
---- QUERY
# Test that codegen of ordering expression with intermediate char value doesn't crash.
# The cast expression is evaluated as part of tuple comparison.
select cast(string_col as char(20)) from alltypes order by 1 limit 5
---- RESULTS
'0 '
'0 '
'0 '
'0 '
'0 '
---- TYPES
CHAR
====
---- QUERY
# Test queries with the maximum value for the limit and offset
select string_col from alltypes order by 1 limit 9223372036854775807
offset 9223372036854775807
---- RESULTS
---- TYPES
STRING
====