mirror of
https://github.com/apache/impala.git
synced 2026-01-07 00:02:28 -05:00
This is the first set of changes required to start getting our functional test infrastructure moved from JUnit to Python. After investigating a number of option, I decided to go with a python test executor named py.test (http://pytest.org/). It is very flexible, open source (MIT licensed), and will enable us to do some cool things like parallel test execution. As part of this change, we now use our "test vectors" for query test execution. This will be very nice because it means if load the "core" dataset you know you will be able to run the "core" query tests (specified by --exploration_strategy when running the tests). You will see that now each combination of table format + query exec options is treated like an individual test case. this will make it much easier to debug exactly where something failed. These new tests can be run using the script at tests/run-tests.sh
712 lines
31 KiB
Plaintext
712 lines
31 KiB
Plaintext
====
|
|
---- QUERY
|
|
# Showing contents of alltypestiny for convenience
|
|
select * from alltypestiny
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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,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,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
|
|
====
|
|
---- QUERY
|
|
# Only UNION ALL, no nested unions
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,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
|
|
====
|
|
---- QUERY
|
|
# Only UNION ALL with limit inside operands. One of the operands also has an order by.
|
|
select * from alltypestiny where year=2009 and month=1 limit 1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=1 order by int_col limit 1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2 limit 1
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00
|
|
====
|
|
---- QUERY
|
|
# Only UNION DISTINCT, no nested unions
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=2
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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
|
|
====
|
|
---- QUERY
|
|
# Only UNION ALL, mixed selects with and without from clauses, no nested unions
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select 2009,1,0,true,0,0,0,0,0,0,'01/01/09','0',cast('2009-01-01 00:00:00' as timestamp)
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select 2009,1,1,false,1,1,1,10,1.1,10.1,'01/01/09','1',cast('2009-01-01 00:01:00' as timestamp)
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, double, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,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.1,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,1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00
|
|
====
|
|
---- QUERY
|
|
# Only UNION DISTINCT, mixed selects with and without from clauses, no nested unions
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select 2009,1,0,true,0,0,0,0,cast(0 as float),0,'01/01/09','0',cast('2009-01-01 00:00:00' as timestamp)
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select 2009,1,1,false,1,1,1,10,cast(1.1 as float),10.1,'01/01/09','1',cast('2009-01-01 00:01:00' as timestamp)
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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
|
|
====
|
|
---- QUERY
|
|
# Mixed UNION ALL/DISTINCT but effectively only UNION DISTINCT, no nested unions,
|
|
# with order by and limit
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=2)
|
|
order by 3 limit 3
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00
|
|
====
|
|
---- QUERY
|
|
# Mixed UNION ALL/DISTINCT, no nested unions, with order by and limit
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2)
|
|
order by 3,4 limit 3
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00
|
|
====
|
|
---- QUERY
|
|
# Mixed UNION ALL/DISTINCT, no nested unions, with order by and limit
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2)
|
|
order by 3,4 limit 4
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: Only UNION ALL, first operand is nested
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=1
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,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
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: Only UNION ALL, second operand is nested
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,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
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: Only UNION DISTINCT, first operand is nested
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=1
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: Only UNION DISTINCT, second operand is nested
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION ALL doesn't absorb nested union with DISTINCT,
|
|
# first operand is nested
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=1
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,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
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION ALL doesn't absorb nested union with DISTINCT,
|
|
# second operand is nested
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,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
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION ALL absorbs the children but not directly the operands
|
|
# of a nested union with mixed ALL/DISTINCT, first operand is nested
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=1
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,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,3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01:00
|
|
2009,2,3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01:00
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION ALL absorbs the children but not directly the operands
|
|
# of a nested union with mixed ALL/DISTINCT, second operand is nested
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,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,3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01:00
|
|
2009,2,3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01:00
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION ALL doesn't absorb the children of a nested union
|
|
# with mixed ALL/DISTINCT and limit, second operand is nested
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2)
|
|
limit 10)
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,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,3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01:00
|
|
2009,2,3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01:00
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION ALL doesn't absorb nested union with order by and limit,
|
|
# first operand is nested
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2)
|
|
order by 3 limit 3)
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=1
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION ALL doesn't absorb nested union with order by and limit,
|
|
# second operand is nested
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2)
|
|
order by 3 limit 3)
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION DISTINCT absorbs nested union with ALL
|
|
# first operand is nested
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=1
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION DISTINCT absorbs nested union with ALL,
|
|
# second operand is nested
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION DISTINCT absorbs nested union with mixed ALL/DISTINCT,
|
|
# first operand is nested
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=1
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION DISTINCT absorbs nested union with mixed ALL/DISTINCT,
|
|
# second operand is nested
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION DISTINCT doesn't absorb nested union with order by and limit,
|
|
# first operand is nested
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2)
|
|
order by 3 limit 3)
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=1
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00
|
|
====
|
|
---- QUERY
|
|
# Union unnesting: UNION DISTINCT doesn't absorb nested union with order by and limit,
|
|
# first operand is nested
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2)
|
|
order by 3 limit 3)
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=1
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00
|
|
====
|
|
---- QUERY
|
|
# Complex union unnesting: Multiple levels of UNION ALL, fully unnestable
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=3)))
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,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,3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01:00
|
|
2009,2,3,false,1,1,1,10,1.100000023841858,10.1,'02/01/09','1',2009-02-01 00:01: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
|
|
====
|
|
---- QUERY
|
|
# Complex union unnesting: Multiple levels of UNION DISTINCT, fully unnestable
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=2
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=2
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=3)))
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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,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
|
|
====
|
|
---- QUERY
|
|
# Complex union unnesting: Partially unnestable up to 2nd level
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=3)
|
|
order by 3 limit 3)))
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,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,3,4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00
|
|
====
|
|
---- QUERY
|
|
# Complex union unnesting: Partially unnestable up to 1st level
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=3)
|
|
order by 3 limit 3)))
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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,3,4,true,0,0,0,0,0,0,'03/01/09','0',2009-03-01 00:00:00
|
|
====
|
|
---- QUERY
|
|
# Complex union unnesting: Multiple nested unions to test all rules in a single query
|
|
select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=2)
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=2
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=3)
|
|
order by 3 limit 3)
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=3
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=4)
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=4
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=5)
|
|
order by 3 limit 3)
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,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,3,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,4,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
|
|
====
|
|
---- QUERY
|
|
# UNION ALL in subquery
|
|
select x.* from
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=1) x
|
|
union all
|
|
(select * from alltypestiny where year=2009 and month=2)
|
|
order by 3 limit 5
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,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,2,2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00
|
|
====
|
|
---- QUERY
|
|
# UNION DISTINCT in subquery
|
|
select x.* from
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=1) x
|
|
union distinct
|
|
(select * from alltypestiny where year=2009 and month=2)
|
|
order by 3 limit 3
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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,2,2,true,0,0,0,0,0,0,'02/01/09','0',2009-02-01 00:00:00
|
|
====
|
|
---- QUERY
|
|
# UNION ALL in subquery with a WHERE condition in the outer select.
|
|
select x.* from
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select * from alltypestiny where year=2009 and month=1) x
|
|
where x.int_col < 5 and x.bool_col = false
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
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
|
|
====
|
|
---- QUERY
|
|
# UNION DISTINCT in subquery with a WHERE condition in the outer select.
|
|
select x.* from
|
|
(select * from alltypestiny where year=2009 and month=1
|
|
union distinct
|
|
select * from alltypestiny where year=2009 and month=1) x
|
|
where x.int_col < 5 and x.bool_col = false
|
|
---- TYPES
|
|
int, int, int, boolean, tinyint, smallint, int, bigint, float, double, string, string, timestamp
|
|
---- RESULTS
|
|
2009,1,1,false,1,1,1,10,1.100000023841858,10.1,'01/01/09','1',2009-01-01 00:01:00
|
|
====
|
|
---- QUERY
|
|
# Test UNION ALL with only constant selects (no table descriptors).
|
|
select 1, 1.0, 'hello'
|
|
union all
|
|
select 2, 2.0, 'world'
|
|
union all
|
|
select 3, 3.0, 'foo'
|
|
union all
|
|
select 3, 3.0, 'bar'
|
|
---- TYPES
|
|
tinyint, float, string
|
|
---- RESULTS
|
|
1,1,'hello'
|
|
2,2,'world'
|
|
3,3,'bar'
|
|
3,3,'foo'
|
|
====
|
|
---- QUERY
|
|
# Test UNION ALL with mixed constant and non-constant selects. Also tests implicit casts.
|
|
select 10, 10.0, "abcde"
|
|
union all
|
|
select int_col, float_col, string_col
|
|
from alltypestiny where year=2009 and month=1
|
|
union all
|
|
select 20, 20.0, "fghijkl"
|
|
union all
|
|
select tinyint_col, double_col, string_col
|
|
from alltypestiny where year=2009 and month=1
|
|
---- TYPES
|
|
int, double, string
|
|
---- RESULTS
|
|
0,0,'0'
|
|
0,0,'0'
|
|
1,1.100000023841858,'1'
|
|
1,10.1,'1'
|
|
10,10,'abcde'
|
|
20,20,'fghijkl'
|
|
====
|
|
---- QUERY
|
|
# Test UNION ALL on large tables with a few constant selects to excercise backend logic.
|
|
select count(*) from (
|
|
select * from alltypes
|
|
union all
|
|
select 2009,1,0,true,0,0,0,0,cast(0 as float),0,'01/01/09','0',cast('2009-01-01 00:00:00' as timestamp)
|
|
union all
|
|
select * from alltypes
|
|
union all
|
|
select 2009,1,1,false,1,1,1,10,cast(1.1 as float),10.1,'01/01/09','1',cast('2009-01-01 00:01:00' as timestamp)
|
|
union all
|
|
select 2009,1,2,true,2,2,2,20,cast(2.2 as float),20.2,'01/01/09','2',cast('2009-01-01 00:02:00.10' as timestamp)
|
|
) x
|
|
---- TYPES
|
|
bigint
|
|
---- RESULTS
|
|
14603
|
|
====
|
|
---- QUERY
|
|
# Test UNION DISTINCT on large tables with a few constant selects to excercise backend logic.
|
|
select count(*) from (
|
|
select * from alltypes
|
|
union distinct
|
|
select 2009,1,0,true,0,0,0,0,cast(0 as float),0,'01/01/09','0',cast('2009-01-01 00:00:00' as timestamp)
|
|
union distinct
|
|
select * from alltypes
|
|
union distinct
|
|
select 2009,1,1,false,1,1,1,10,cast(1.1 as float),10.1,'01/01/09','1',cast('2009-01-01 00:01:00' as timestamp)
|
|
union distinct
|
|
select 2009,1,2,true,2,2,2,20,cast(2.2 as float),20.2,'01/01/09','2',cast('2009-01-01 00:02:00.10' as timestamp)
|
|
) x
|
|
---- TYPES
|
|
bigint
|
|
---- RESULTS
|
|
7300
|
|
====
|