Files
impala/testdata/workloads/functional-query/queries/QueryTest/exprs.test
Lenni Kuff ef48f65e76 Add test framework for running Impala query tests via Python
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
2014-01-08 10:46:50 -08:00

1232 lines
34 KiB
Plaintext

====
---- QUERY
# IS NULL predicate
select count(*) from alltypesagg$TABLE
---- TYPES
bigint
---- RESULTS
10000
====
---- QUERY
select count(*) from alltypesagg$TABLE where tinyint_col is null
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg$TABLE where tinyint_col is not null
---- TYPES
bigint
---- RESULTS
9000
====
---- QUERY
# =
select count(*) from alltypesagg$TABLE where tinyint_col = 1
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg$TABLE where smallint_col = 1
---- TYPES
bigint
---- RESULTS
100
====
---- QUERY
select count(*) from alltypesagg$TABLE where int_col = 1
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg$TABLE where bigint_col = 10
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg$TABLE where float_col = cast(1.1 as float)
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg$TABLE where double_col = 10.1
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg$TABLE where date_string_col = '01/01/10'
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
# <>
select count(*) from alltypesagg$TABLE where tinyint_col <> 1
---- TYPES
bigint
---- RESULTS
8000
====
---- QUERY
select count(*) from alltypesagg$TABLE where smallint_col <> 1
---- TYPES
bigint
---- RESULTS
9800
====
---- QUERY
select count(*) from alltypesagg$TABLE where int_col <> 1
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg$TABLE where bigint_col <> 1
---- TYPES
bigint
---- RESULTS
9990
====
---- QUERY
select count(*) from alltypesagg$TABLE where float_col <> cast(1.1 as float)
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg$TABLE where double_col <> 10.1
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
# <
select count(*) from alltypesagg$TABLE where tinyint_col < 2
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg$TABLE where smallint_col < 2
---- TYPES
bigint
---- RESULTS
100
====
---- QUERY
select count(*) from alltypesagg$TABLE where int_col < 2
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg$TABLE where bigint_col < 20
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg$TABLE where float_col < 2.2
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg$TABLE where double_col < 20.2
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
# >
select count(*) from alltypesagg$TABLE where tinyint_col > 1
---- TYPES
bigint
---- RESULTS
8000
====
---- QUERY
select count(*) from alltypesagg$TABLE where smallint_col > 1
---- TYPES
bigint
---- RESULTS
9800
====
---- QUERY
select count(*) from alltypesagg$TABLE where int_col > 1
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg$TABLE where bigint_col > 10
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg$TABLE where float_col > cast(1.1 as float)
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg$TABLE where double_col > 10.1
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
# <=
select count(*) from alltypesagg$TABLE where tinyint_col <= 1
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg$TABLE where smallint_col <= 1
---- TYPES
bigint
---- RESULTS
100
====
---- QUERY
select count(*) from alltypesagg$TABLE where int_col <= 1
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg$TABLE where bigint_col <= 10
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg$TABLE where float_col <= cast(1.1 as float)
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg$TABLE where double_col <= 10.1
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
# >=
select count(*) from alltypesagg$TABLE where tinyint_col >= 2
---- TYPES
bigint
---- RESULTS
8000
====
---- QUERY
select count(*) from alltypesagg$TABLE where smallint_col >= 2
---- TYPES
bigint
---- RESULTS
9800
====
---- QUERY
select count(*) from alltypesagg$TABLE where int_col >= 2
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg$TABLE where bigint_col >= 20
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg$TABLE where float_col >= 2.2
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg$TABLE where double_col >= 20.2
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
# TODO: figure out why the last col has a diff
# result: 111428999.9997675
# +
#select
#SUM(tinyint_col) + SUM(smallint_col),
#SUM(tinyint_col + smallint_col),
#SUM(tinyint_col) + SUM(smallint_col) + SUM(int_col),
#SUM(tinyint_col + smallint_col + int_col),
#SUM(tinyint_col) + SUM(smallint_col) + SUM(int_col) + SUM(bigint_col),
#SUM(tinyint_col + smallint_col + int_col + bigint_col),
#SUM(tinyint_col) + SUM(smallint_col) + SUM(int_col) + SUM(bigint_col) + SUM(float_col),
#SUM(tinyint_col + smallint_col + int_col + bigint_col + float_col),
#SUM(tinyint_col) + SUM(smallint_col) + SUM(int_col) + SUM(bigint_col) + SUM(float_col) + SUM(double_col),
#SUM(tinyint_col + smallint_col + int_col + bigint_col + float_col + double_col)
#from alltypesaggnonulls$TABLE
#---- TYPES
#bigint, bigint, bigint, bigint, bigint, bigint, double, double, double, double
#---- RESULTS
#540000,540000,5535000,5535000,55485000,55485000,60979499.99976754,60979499.99976754,111428999.9997675,111428999.9997676
#====
## -
#select
#-1 * SUM(tinyint_col) - SUM(smallint_col),
#SUM(-1 * tinyint_col - smallint_col),
#-1 * SUM(tinyint_col) - SUM(smallint_col) - SUM(int_col),
#SUM(-1 * tinyint_col - smallint_col - int_col),
#-1 * SUM(tinyint_col) - SUM(smallint_col) - SUM(int_col) - SUM(bigint_col),
#SUM(-1 * tinyint_col - smallint_col - int_col - bigint_col),
#-1 * SUM(tinyint_col) - SUM(smallint_col) - SUM(int_col) - SUM(bigint_col) - SUM(float_col),
#SUM(-1 * tinyint_col - smallint_col - int_col - bigint_col - float_col),
#-1 * SUM(tinyint_col) - SUM(smallint_col) - SUM(int_col) - SUM(bigint_col) - SUM(float_col) - SUM(double_col),
#SUM(-1 * tinyint_col - smallint_col - int_col - bigint_col - float_col - double_col)
#from alltypesaggnonulls$TABLE
#---- TYPES
#bigint, bigint, bigint, bigint, bigint, bigint, double, double, double, double
#---- RESULTS
#-540000,-540000,-5535000,-5535000,-55485000,-55485000,-60979499.99976754,-60979499.99976754,-111428999.9997675,-111428999.9997676
#====
# *
#select
#MAX(tinyint_col) * MAX(smallint_col),
#MAX(tinyint_col * smallint_col),
#MAX(tinyint_col) * MAX(smallint_col) * MAX(int_col),
#MAX(tinyint_col * smallint_col * int_col),
#MAX(tinyint_col) * MAX(smallint_col) * MAX(int_col) * MAX(bigint_col),
#MAX(tinyint_col * smallint_col * int_col * bigint_col),
#MAX(tinyint_col) * MAX(smallint_col) * MAX(int_col) * MAX(bigint_col) * MAX(float_col),
#MAX(tinyint_col * smallint_col * int_col * bigint_col * float_col),
#MAX(tinyint_col) * MAX(smallint_col) * MAX(int_col) * MAX(bigint_col) * MAX(float_col) * MAX(double_col),
#MAX(tinyint_col * smallint_col * int_col * bigint_col * float_col * double_col)
#from alltypesaggnonulls$TABLE
#---- TYPES
#bigint, bigint, bigint, bigint, bigint, bigint, double, double, double, double
#---- RESULTS
#891,891,890109,890109,8892188910,8892188910,9771626610293.455,9771626610293.455,9.859473533519994e+16,9.859473533519994e+16
#====
# LIKE exprs w/ the like/regex pattern coming from a column
select * from LikeTbl
---- TYPES
string, string, string, string, string
---- RESULTS
'NULL','%','NULL','.*','X'
'','%','','.*','X'
'beginning of line','begin%','not begin%','^begin.*','^not begin.*'
'eight','%eight%','n%eight%','.*eight.*','n.*eight.*'
'end of line','%line','%line end','.*line$','.*line end$'
'five','%five%','n%five%','.*five.*','n.*five.*'
'four','%four%','n%four%','.*four.*','n.*four.*'
'middle of line','%of%','%of','^.*of.*$','.*of$'
'nine','%nine%','n%nine%','.*nine.*','n.*nine.*'
'one','%one%','n%one%','.*one.*','n.*one.*'
'seven','%seven%','n%seven%','.*seven.*','n.*seven.*'
'six','%six%','n%six%','.*six.*','n.*six.*'
'ten','%ten%','n%ten%','.*ten.*','n.*ten.*'
'three','%three%','n%three%','.*three.*','n.*three.*'
'two','%two%','n%two%','.*two.*','n.*two.*'
====
---- QUERY
select str_col, match_like_col from LikeTbl
where str_col LIKE match_like_col
---- TYPES
string, string
---- RESULTS
'beginning of line','begin%'
'eight','%eight%'
'end of line','%line'
'five','%five%'
'four','%four%'
'middle of line','%of%'
'nine','%nine%'
'one','%one%'
'seven','%seven%'
'six','%six%'
'ten','%ten%'
'three','%three%'
'two','%two%'
'','%'
====
---- QUERY
select str_col, match_like_col from LikeTbl
where str_col NOT LIKE match_like_col
---- TYPES
string, string
---- RESULTS
====
---- QUERY
select str_col, match_like_col from LikeTbl
where str_col LIKE no_match_like_col
---- TYPES
string, string
---- RESULTS
'','%'
====
---- QUERY
select str_col, no_match_like_col from LikeTbl
where str_col NOT LIKE no_match_like_col
---- TYPES
string, string
---- RESULTS
'beginning of line','not begin%'
'eight','n%eight%'
'end of line','%line end'
'five','n%five%'
'four','n%four%'
'middle of line','%of'
'nine','n%nine%'
'one','n%one%'
'seven','n%seven%'
'six','n%six%'
'ten','n%ten%'
'three','n%three%'
'two','n%two%'
====
---- QUERY
select str_col, match_regex_col from LikeTbl
where str_col REGEXP match_regex_col
---- TYPES
string, string
---- RESULTS
'beginning of line','^begin.*'
'eight','.*eight.*'
'end of line','.*line$'
'five','.*five.*'
'four','.*four.*'
'middle of line','^.*of.*$'
'nine','.*nine.*'
'one','.*one.*'
'seven','.*seven.*'
'six','.*six.*'
'ten','.*ten.*'
'three','.*three.*'
'two','.*two.*'
'','.*'
====
---- QUERY
select str_col, no_match_regex_col from LikeTbl
where str_col REGEXP no_match_regex_col
---- TYPES
string, string
---- RESULTS
====
---- QUERY
select str_col, match_regex_col from LikeTbl
where str_col NOT REGEXP match_regex_col
---- TYPES
string, string
---- RESULTS
====
---- QUERY
select str_col, no_match_regex_col from LikeTbl
where str_col NOT REGEXP no_match_regex_col
---- TYPES
string, string
---- RESULTS
'beginning of line','^not begin.*'
'eight','n.*eight.*'
'end of line','.*line end$'
'five','n.*five.*'
'four','n.*four.*'
'middle of line','.*of$'
'nine','n.*nine.*'
'one','n.*one.*'
'seven','n.*seven.*'
'six','n.*six.*'
'ten','n.*ten.*'
'three','n.*three.*'
'two','n.*two.*'
'','X'
====
---- QUERY
select 1+2
---- TYPES
bigint
---- RESULTS
3
====
---- QUERY
select timestamp_col, to_date(timestamp_col), year(timestamp_col), month(timestamp_col),
dayofmonth(timestamp_col), day(timestamp_col), weekofyear(timestamp_col),
hour(timestamp_col), minute(timestamp_col), second(timestamp_col)
from alltypessmall$TABLE
---- TYPES
timestamp, string, int, int, int, int, int, int, int, int
---- RESULTS
2009-01-01 00:00:00,'2009-01-01',2009,1,1,1,1,0,0,0
2009-01-01 00:01:00,'2009-01-01',2009,1,1,1,1,0,1,0
2009-01-01 00:02:00.100000000,'2009-01-01',2009,1,1,1,1,0,2,0
2009-01-01 00:03:00.300000000,'2009-01-01',2009,1,1,1,1,0,3,0
2009-01-01 00:04:00.600000000,'2009-01-01',2009,1,1,1,1,0,4,0
2009-01-01 00:05:00.100000000,'2009-01-01',2009,1,1,1,1,0,5,0
2009-01-01 00:06:00.150000000,'2009-01-01',2009,1,1,1,1,0,6,0
2009-01-01 00:07:00.210000000,'2009-01-01',2009,1,1,1,1,0,7,0
2009-01-01 00:08:00.280000000,'2009-01-01',2009,1,1,1,1,0,8,0
2009-01-01 00:09:00.360000000,'2009-01-01',2009,1,1,1,1,0,9,0
2009-01-02 00:10:00.450000000,'2009-01-02',2009,1,2,2,1,0,10,0
2009-01-02 00:11:00.450000000,'2009-01-02',2009,1,2,2,1,0,11,0
2009-01-02 00:12:00.460000000,'2009-01-02',2009,1,2,2,1,0,12,0
2009-01-02 00:13:00.480000000,'2009-01-02',2009,1,2,2,1,0,13,0
2009-01-02 00:14:00.510000000,'2009-01-02',2009,1,2,2,1,0,14,0
2009-01-02 00:15:00.550000000,'2009-01-02',2009,1,2,2,1,0,15,0
2009-01-02 00:16:00.600000000,'2009-01-02',2009,1,2,2,1,0,16,0
2009-01-02 00:17:00.660000000,'2009-01-02',2009,1,2,2,1,0,17,0
2009-01-02 00:18:00.730000000,'2009-01-02',2009,1,2,2,1,0,18,0
2009-01-02 00:19:00.810000000,'2009-01-02',2009,1,2,2,1,0,19,0
2009-01-03 00:20:00.900000000,'2009-01-03',2009,1,3,3,1,0,20,0
2009-01-03 00:21:00.900000000,'2009-01-03',2009,1,3,3,1,0,21,0
2009-01-03 00:22:00.910000000,'2009-01-03',2009,1,3,3,1,0,22,0
2009-01-03 00:23:00.930000000,'2009-01-03',2009,1,3,3,1,0,23,0
2009-01-03 00:24:00.960000000,'2009-01-03',2009,1,3,3,1,0,24,0
2009-02-01 00:00:00,'2009-02-01',2009,2,1,32,5,0,0,0
2009-02-01 00:01:00,'2009-02-01',2009,2,1,32,5,0,1,0
2009-02-01 00:02:00.100000000,'2009-02-01',2009,2,1,32,5,0,2,0
2009-02-01 00:03:00.300000000,'2009-02-01',2009,2,1,32,5,0,3,0
2009-02-01 00:04:00.600000000,'2009-02-01',2009,2,1,32,5,0,4,0
2009-02-01 00:05:00.100000000,'2009-02-01',2009,2,1,32,5,0,5,0
2009-02-01 00:06:00.150000000,'2009-02-01',2009,2,1,32,5,0,6,0
2009-02-01 00:07:00.210000000,'2009-02-01',2009,2,1,32,5,0,7,0
2009-02-01 00:08:00.280000000,'2009-02-01',2009,2,1,32,5,0,8,0
2009-02-01 00:09:00.360000000,'2009-02-01',2009,2,1,32,5,0,9,0
2009-02-02 00:10:00.450000000,'2009-02-02',2009,2,2,33,6,0,10,0
2009-02-02 00:11:00.450000000,'2009-02-02',2009,2,2,33,6,0,11,0
2009-02-02 00:12:00.460000000,'2009-02-02',2009,2,2,33,6,0,12,0
2009-02-02 00:13:00.480000000,'2009-02-02',2009,2,2,33,6,0,13,0
2009-02-02 00:14:00.510000000,'2009-02-02',2009,2,2,33,6,0,14,0
2009-02-02 00:15:00.550000000,'2009-02-02',2009,2,2,33,6,0,15,0
2009-02-02 00:16:00.600000000,'2009-02-02',2009,2,2,33,6,0,16,0
2009-02-02 00:17:00.660000000,'2009-02-02',2009,2,2,33,6,0,17,0
2009-02-02 00:18:00.730000000,'2009-02-02',2009,2,2,33,6,0,18,0
2009-02-02 00:19:00.810000000,'2009-02-02',2009,2,2,33,6,0,19,0
2009-02-03 00:20:00.900000000,'2009-02-03',2009,2,3,34,6,0,20,0
2009-02-03 00:21:00.900000000,'2009-02-03',2009,2,3,34,6,0,21,0
2009-02-03 00:22:00.910000000,'2009-02-03',2009,2,3,34,6,0,22,0
2009-02-03 00:23:00.930000000,'2009-02-03',2009,2,3,34,6,0,23,0
2009-02-03 00:24:00.960000000,'2009-02-03',2009,2,3,34,6,0,24,0
2009-03-01 00:00:00,'2009-03-01',2009,3,1,60,9,0,0,0
2009-03-01 00:01:00,'2009-03-01',2009,3,1,60,9,0,1,0
2009-03-01 00:02:00.100000000,'2009-03-01',2009,3,1,60,9,0,2,0
2009-03-01 00:03:00.300000000,'2009-03-01',2009,3,1,60,9,0,3,0
2009-03-01 00:04:00.600000000,'2009-03-01',2009,3,1,60,9,0,4,0
2009-03-01 00:05:00.100000000,'2009-03-01',2009,3,1,60,9,0,5,0
2009-03-01 00:06:00.150000000,'2009-03-01',2009,3,1,60,9,0,6,0
2009-03-01 00:07:00.210000000,'2009-03-01',2009,3,1,60,9,0,7,0
2009-03-01 00:08:00.280000000,'2009-03-01',2009,3,1,60,9,0,8,0
2009-03-01 00:09:00.360000000,'2009-03-01',2009,3,1,60,9,0,9,0
2009-03-02 00:10:00.450000000,'2009-03-02',2009,3,2,61,10,0,10,0
2009-03-02 00:11:00.450000000,'2009-03-02',2009,3,2,61,10,0,11,0
2009-03-02 00:12:00.460000000,'2009-03-02',2009,3,2,61,10,0,12,0
2009-03-02 00:13:00.480000000,'2009-03-02',2009,3,2,61,10,0,13,0
2009-03-02 00:14:00.510000000,'2009-03-02',2009,3,2,61,10,0,14,0
2009-03-02 00:15:00.550000000,'2009-03-02',2009,3,2,61,10,0,15,0
2009-03-02 00:16:00.600000000,'2009-03-02',2009,3,2,61,10,0,16,0
2009-03-02 00:17:00.660000000,'2009-03-02',2009,3,2,61,10,0,17,0
2009-03-02 00:18:00.730000000,'2009-03-02',2009,3,2,61,10,0,18,0
2009-03-02 00:19:00.810000000,'2009-03-02',2009,3,2,61,10,0,19,0
2009-03-03 00:20:00.900000000,'2009-03-03',2009,3,3,62,10,0,20,0
2009-03-03 00:21:00.900000000,'2009-03-03',2009,3,3,62,10,0,21,0
2009-03-03 00:22:00.910000000,'2009-03-03',2009,3,3,62,10,0,22,0
2009-03-03 00:23:00.930000000,'2009-03-03',2009,3,3,62,10,0,23,0
2009-03-03 00:24:00.960000000,'2009-03-03',2009,3,3,62,10,0,24,0
2009-04-01 00:00:00,'2009-04-01',2009,4,1,91,14,0,0,0
2009-04-01 00:01:00,'2009-04-01',2009,4,1,91,14,0,1,0
2009-04-01 00:02:00.100000000,'2009-04-01',2009,4,1,91,14,0,2,0
2009-04-01 00:03:00.300000000,'2009-04-01',2009,4,1,91,14,0,3,0
2009-04-01 00:04:00.600000000,'2009-04-01',2009,4,1,91,14,0,4,0
2009-04-01 00:05:00.100000000,'2009-04-01',2009,4,1,91,14,0,5,0
2009-04-01 00:06:00.150000000,'2009-04-01',2009,4,1,91,14,0,6,0
2009-04-01 00:07:00.210000000,'2009-04-01',2009,4,1,91,14,0,7,0
2009-04-01 00:08:00.280000000,'2009-04-01',2009,4,1,91,14,0,8,0
2009-04-01 00:09:00.360000000,'2009-04-01',2009,4,1,91,14,0,9,0
2009-04-02 00:10:00.450000000,'2009-04-02',2009,4,2,92,14,0,10,0
2009-04-02 00:11:00.450000000,'2009-04-02',2009,4,2,92,14,0,11,0
2009-04-02 00:12:00.460000000,'2009-04-02',2009,4,2,92,14,0,12,0
2009-04-02 00:13:00.480000000,'2009-04-02',2009,4,2,92,14,0,13,0
2009-04-02 00:14:00.510000000,'2009-04-02',2009,4,2,92,14,0,14,0
2009-04-02 00:15:00.550000000,'2009-04-02',2009,4,2,92,14,0,15,0
2009-04-02 00:16:00.600000000,'2009-04-02',2009,4,2,92,14,0,16,0
2009-04-02 00:17:00.660000000,'2009-04-02',2009,4,2,92,14,0,17,0
2009-04-02 00:18:00.730000000,'2009-04-02',2009,4,2,92,14,0,18,0
2009-04-02 00:19:00.810000000,'2009-04-02',2009,4,2,92,14,0,19,0
2009-04-03 00:20:00.900000000,'2009-04-03',2009,4,3,93,14,0,20,0
2009-04-03 00:21:00.900000000,'2009-04-03',2009,4,3,93,14,0,21,0
2009-04-03 00:22:00.910000000,'2009-04-03',2009,4,3,93,14,0,22,0
2009-04-03 00:23:00.930000000,'2009-04-03',2009,4,3,93,14,0,23,0
2009-04-03 00:24:00.960000000,'2009-04-03',2009,4,3,93,14,0,24,0
====
---- QUERY
# IN predicate
select NULL in (1, 2, 3)
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select NULL in (1, NULL, 3)
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select 1 in (2, NULL, 1)
---- TYPES
boolean
---- RESULTS
true
====
---- QUERY
select 1 in (1, NULL, 2)
---- TYPES
boolean
---- RESULTS
true
====
---- QUERY
select 1 in (2, NULL, 3)
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select 1 in (2, 3, 4)
---- TYPES
boolean
---- RESULTS
false
====
---- QUERY
select NULL not in (1, 2, 3)
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select NULL not in (1, NULL, 3)
----
boolean
---- RESULTS
NULL
====
---- QUERY
select 1 not in (2, NULL, 1)
---- TYPES
boolean
---- RESULTS
false
====
---- QUERY
select 1 not in (1, NULL, 2)
---- TYPES
boolean
---- RESULTS
false
====
---- QUERY
select 1 not in (2, NULL, 3)
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select 1 not in (2, 3, 4)
---- TYPES
boolean
---- RESULTS
true
====
---- QUERY
select count(*) from alltypesagg$TABLE
where true in (bool_col, tinyint_col)
---- TYPES
bigint
---- RESULTS
6000
====
---- QUERY
select count(*) from alltypesagg$TABLE
where true not in (bool_col, tinyint_col)
---- TYPES
bigint
---- RESULTS
4000
====
---- QUERY
select count(*) from alltypesagg$TABLE
where 1 in (tinyint_col, smallint_col, int_col, bigint_col)
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg$TABLE
where 1 not in (tinyint_col, smallint_col, int_col, bigint_col)
---- TYPES
bigint
---- RESULTS
8000
====
---- QUERY
select count(*) from alltypesagg$TABLE
where 10.1 in (tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col)
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg$TABLE
where 10.1 not in (tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col)
---- TYPES
bigint
---- RESULTS
8990
====
---- QUERY
select count(*) from alltypesagg$TABLE
where '01/01/10' in (date_string_col, string_col, 'abc')
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg$TABLE
where '01/01/10' not in (date_string_col, string_col, 'abc')
---- TYPES
bigint
---- RESULTS
9000
====
---- QUERY
select count(*) from alltypesagg$TABLE
where cast('2010-01-01 00:00:00' as timestamp) in (timestamp_col)
---- TYPES
bigint
---- RESULTS
1
====
---- QUERY
select count(*) from alltypesagg$TABLE
where cast('2010-01-01 00:00:00' as timestamp) not in (timestamp_col)
---- TYPES
bigint
---- RESULTS
9999
====
---- QUERY
# BETWEEN predicate
select count(*) from alltypesagg$TABLE where tinyint_col between 1 and 2
---- TYPES
bigint
---- RESULTS
2000
====
---- QUERY
select count(*) from alltypesagg$TABLE where tinyint_col not between 1 and 2
---- TYPES
bigint
---- RESULTS
7000
====
---- QUERY
select count(*) from alltypesagg$TABLE where smallint_col between 1 and 20
---- TYPES
bigint
---- RESULTS
2000
====
---- QUERY
select count(*) from alltypesagg$TABLE where smallint_col not between 1 and 20
---- TYPES
bigint
---- RESULTS
7900
====
---- QUERY
select count(*) from alltypesagg$TABLE where int_col between 1 and 200
---- TYPES
bigint
---- RESULTS
2000
====
---- QUERY
select count(*) from alltypesagg$TABLE where int_col not between 1 and 200
---- TYPES
bigint
---- RESULTS
7990
====
---- QUERY
select count(*) from alltypesagg$TABLE where bigint_col between 1 and 2000
---- TYPES
bigint
---- RESULTS
2000
====
---- QUERY
select count(*) from alltypesagg$TABLE where bigint_col not between 1 and 2000
---- TYPES
bigint
---- RESULTS
7990
====
---- QUERY
select count(*) from alltypesagg$TABLE
where float_col between cast(1.0 as float) and cast(110.0 as float)
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg$TABLE
where float_col not between cast(1.0 as float) and cast(110.0 as float)
---- TYPES
bigint
---- RESULTS
8990
====
---- QUERY
select count(*) from alltypesagg$TABLE where double_col between 1.0 and 110.0
---- TYPES
bigint
---- RESULTS
100
====
---- QUERY
select count(*) from alltypesagg$TABLE where double_col not between 1.0 and 110.0
---- TYPES
bigint
---- RESULTS
9890
====
---- QUERY
select count(*) from alltypesagg$TABLE where date_string_col
between '01/01/10' and '01/05/10'
---- TYPES
bigint
---- RESULTS
5000
====
---- QUERY
select count(*) from alltypesagg$TABLE where date_string_col
not between '01/01/10' and '01/05/10'
---- TYPES
bigint
---- RESULTS
5000
====
---- QUERY
select count(*) from alltypesagg$TABLE where timestamp_col
between cast('2010-01-01 00:00:00' as timestamp)
and cast('2010-01-01 01:40:00' as timestamp)
---- TYPES
bigint
---- RESULTS
100
====
---- QUERY
select count(*) from alltypesagg$TABLE where timestamp_col
not between cast('2010-01-01 00:00:00' as timestamp)
and cast('2010-01-01 01:40:00' as timestamp)
---- TYPES
bigint
---- RESULTS
9900
====
---- QUERY
# Test NOW() function.
select now()
---- TYPES
timestamp
---- RESULTS
# Matches a single date of the form 'yyyy-MM-dd HH:mm:ss'
# or 'yyyy-MM-dd HH:mm:ss.SSSSSS'
regex: \d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?
====
---- QUERY
select now(), now(), now(), now()
---- TYPES
timestamp, timestamp, timestamp, timestamp
---- RESULTS
# Matches four identical timestamps separated by commas.
regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
====
---- QUERY
select now(), now(), now(), now() from alltypestiny
---- TYPES
timestamp, timestamp, timestamp, timestamp
---- RESULTS
# Matches four identical timestamps separated by commas.
regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
====
---- QUERY
# Check that now() returns the same value when evaluated on different nodes
# (alltypessmall is partitioned)
select min(now()), max(now()) from alltypessmall
---- TYPES
timestamp, timestamp
---- RESULTS
# Matches two identical timestamps separated by commas.
regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1
====
---- QUERY
# Timestamp arithmetic tests (lowest timestamp_col has value 2009-01-01 00:00:00).
# Add/sub years, non-function-call like version.
select timestamp_col + interval 10 years,
interval 10 years + timestamp_col,
timestamp_col - interval 10 years
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp
---- RESULTS
2019-01-01 00:00:00,2019-01-01 00:00:00,1999-01-01 00:00:00
====
---- QUERY
# Add/sub years, function-call like version.
select date_add(timestamp_col, interval 10 years),
date_sub(timestamp_col, interval 10 years)
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp
---- RESULTS
2019-01-01 00:00:00,1999-01-01 00:00:00
====
---- QUERY
# Add/sub months, non-function-call like version.
select timestamp_col + interval 13 months,
timestamp_col + interval 1 month,
interval 13 months + timestamp_col,
interval 1 month + timestamp_col,
timestamp_col - interval 13 months,
timestamp_col - interval 1 month
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp,timestamp,timestamp,timestamp
---- RESULTS
2010-02-01 00:00:00,2009-02-01 00:00:00,2010-02-01 00:00:00,2009-02-01 00:00:00,2007-12-01 00:00:00,2008-12-01 00:00:00
====
---- QUERY
# Add/sub months, function-call like version.
select date_add(timestamp_col, interval 13 months),
date_add(timestamp_col, interval 1 month),
date_sub(timestamp_col, interval 13 months),
date_sub(timestamp_col, interval 1 month)
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp,timestamp
---- RESULTS
2010-02-01 00:00:00,2009-02-01 00:00:00,2007-12-01 00:00:00,2008-12-01 00:00:00
====
---- QUERY
# Add/sub weeks, non-function-call like version.
select timestamp_col + interval 2 weeks,
timestamp_col + interval 53 weeks,
interval 2 weeks + timestamp_col,
interval 53 weeks + timestamp_col,
timestamp_col - interval 2 weeks,
timestamp_col - interval 53 weeks
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp,timestamp,timestamp,timestamp
---- RESULTS
2009-01-15 00:00:00,2010-01-07 00:00:00,2009-01-15 00:00:00,2010-01-07 00:00:00,2008-12-18 00:00:00,2007-12-27 00:00:00
====
---- QUERY
# Add/sub weeks, function-call like version.
select date_add(timestamp_col, interval 2 weeks),
date_add(timestamp_col, interval 53 weeks),
date_sub(timestamp_col, interval 2 weeks),
date_sub(timestamp_col, interval 53 weeks)
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp,timestamp
---- RESULTS
2009-01-15 00:00:00,2010-01-07 00:00:00,2008-12-18 00:00:00,2007-12-27 00:00:00
====
---- QUERY
# Add/sub days, non-function-call like version.
select timestamp_col + interval 10 days,
timestamp_col + interval 10 days,
interval 10 days + timestamp_col,
interval 10 days + timestamp_col,
timestamp_col - interval 10 days,
timestamp_col - interval 365 days
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp,timestamp,timestamp,timestamp
---- RESULTS
2009-01-11 00:00:00,2009-01-11 00:00:00,2009-01-11 00:00:00,2009-01-11 00:00:00,2008-12-22 00:00:00,2008-01-02 00:00:00
====
---- QUERY
# Add/sub days, function-call like version.
select date_add(timestamp_col, interval 10 days),
date_add(timestamp_col, interval 10 days),
date_sub(timestamp_col, interval 10 days),
date_sub(timestamp_col, interval 365 days)
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp,timestamp
---- RESULTS
2009-01-11 00:00:00,2009-01-11 00:00:00,2008-12-22 00:00:00,2008-01-02 00:00:00
====
---- QUERY
# Add/sub hours, non-function-call like version.
select timestamp_col + interval 25 hours,
interval 25 hours + timestamp_col,
timestamp_col - interval 25 hours
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp
---- RESULTS
2009-01-02 01:00:00,2009-01-02 01:00:00,2008-12-30 23:00:00
====
---- QUERY
# Add/sub hours, function-call like version.
select date_add(timestamp_col, interval 25 hours),
date_sub(timestamp_col, interval 25 hours)
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp
---- RESULTS
2009-01-02 01:00:00,2008-12-30 23:00:00
====
---- QUERY
# Add/sub minutes (1533 minutes are 25h33m), non-function-call like version.
select timestamp_col + interval 1533 minutes,
interval 1533 minutes + timestamp_col,
timestamp_col - interval 1533 minutes
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp
---- RESULTS
2009-01-02 01:33:00,2009-01-02 01:33:00,2008-12-30 22:27:00
====
---- QUERY
# Add/sub minutes (1533 minutes are 25h33m), function-call like version.
select date_add(timestamp_col, interval 1533 minutes),
date_sub(timestamp_col, interval 1533 minutes)
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp
---- RESULTS
2009-01-02 01:33:00,2008-12-30 22:27:00
====
---- QUERY
# Add/sub seconds (90033 seconds are 25h33s), non-function-call like version.
select timestamp_col + interval 90033 seconds,
interval 90033 seconds + timestamp_col,
timestamp_col - interval 90033 seconds
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp
---- RESULTS
2009-01-02 01:00:33,2009-01-02 01:00:33,2008-12-30 22:59:27
====
---- QUERY
# Add/sub seconds (90033 seconds are 25h33s), function-call like version.
select date_add(timestamp_col, interval 90033 seconds),
date_sub(timestamp_col, interval 90033 seconds)
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp
---- RESULTS
2009-01-02 01:00:33,2008-12-30 22:59:27
====
---- QUERY
# Add/sub milliseconds (90000033 seconds are 25h33ms), non-function-call like version.
select timestamp_col + interval 90000033 milliseconds,
interval 90000033 milliseconds + timestamp_col,
timestamp_col - interval 90000033 milliseconds
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp
---- RESULTS
2009-01-02 01:00:00.033000000,2009-01-02 01:00:00.033000000,2008-12-30 22:59:59.967000000
====
---- QUERY
# Add/sub milliseconds (90000033 seconds are 25h33ms), function-call like version.
select date_add(timestamp_col, interval 90000033 milliseconds),
date_sub(timestamp_col, interval 90000033 milliseconds)
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp
---- RESULTS
2009-01-02 01:00:00.033000000,2008-12-30 22:59:59.967000000
====
---- QUERY
# Add/sub microseconds, non-function-call like version.
select timestamp_col + interval 1033 microseconds,
interval 1033 microseconds + timestamp_col,
timestamp_col - interval 1033 microseconds
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp
---- RESULTS
2009-01-01 00:00:00.001033000,2009-01-01 00:00:00.001033000,2008-12-31 23:59:59.998967000
====
---- QUERY
# Add/sub microseconds, function-call like version.
select date_add(timestamp_col, interval 1033 microseconds),
date_sub(timestamp_col, interval 1033 microseconds)
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp
---- RESULTS
2009-01-01 00:00:00.001033000,2008-12-31 23:59:59.998967000
====
---- QUERY
# Add/sub nanoseconds, non-function-call like version.
select timestamp_col + interval 1033 nanoseconds,
interval 1033 nanoseconds + timestamp_col,
timestamp_col - interval 1033 nanoseconds
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp
---- RESULTS
2009-01-01 00:00:00.000001033,2009-01-01 00:00:00.000001033,2008-12-31 23:59:59.999998967
====
---- QUERY
# Add/sub nanoseconds, function-call like version.
select date_add(timestamp_col, interval 1033 nanoseconds),
date_sub(timestamp_col, interval 1033 nanoseconds)
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp
---- RESULTS
2009-01-01 00:00:00.000001033,2008-12-31 23:59:59.999998967
====
---- QUERY
# Chaining of arithmetic operations (only non-function-call like version).
select timestamp_col + interval 10 years + interval 2 months + interval 5 days,
interval 10 years + timestamp_col + interval 2 months + interval 5 days,
timestamp_col + interval 10 years - interval 2 months + interval 5 days,
interval 10 years + timestamp_col - interval 2 months + interval 5 days,
timestamp_col - interval 10 years - interval 2 months - interval 5 days
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp,timestamp,timestamp
---- RESULTS
2019-03-06 00:00:00,2019-03-06 00:00:00,2018-11-06 00:00:00,2018-11-06 00:00:00,1998-10-27 00:00:00
====
---- QUERY
select timestamp_col + interval 10 hours + interval 2 minutes + interval 5 seconds
+ interval 3 milliseconds + interval 3 microseconds + interval 3 nanoseconds,
interval 10 hours + timestamp_col + interval 2 minutes + interval 5 seconds
+ interval 3 milliseconds + interval 3 microseconds + interval 3 nanoseconds,
timestamp_col + interval 10 hours - interval 2 minutes + interval 5 seconds
- interval 3 milliseconds + interval 3 microseconds - interval 3 nanoseconds,
interval 10 hours + timestamp_col + interval 2 minutes + interval 5 seconds
- interval 3 milliseconds + interval 3 microseconds - interval 3 nanoseconds,
timestamp_col - interval 10 hours - interval 2 minutes - interval 5 seconds
- interval 3 milliseconds - interval 3 microseconds - interval 3 nanoseconds
from alltypes$TABLE order by id limit 1
---- TYPES
timestamp,timestamp,timestamp,timestamp,timestamp
---- RESULTS
2009-01-01 10:02:05.003003003,2009-01-01 10:02:05.003003003,2009-01-01 09:58:04.997002997,2009-01-01 10:02:04.997002997,2008-12-31 13:57:54.996996997
====
---- QUERY
# Test corner cases and also timestamp arithmetic without from clause.
select cast("2012-02-29 00:00:00" as timestamp) + interval 1 year,
cast("2013-02-28 00:00:00" as timestamp) - interval 1 year,
cast("2012-01-01 00:00:00" as timestamp) + interval 365 days,
cast("2013-01-01 00:00:00" as timestamp) - interval 366 days
---- TYPES
timestamp,timestamp,timestamp,timestamp
---- RESULTS
2013-02-28 00:00:00,2012-02-29 00:00:00,2012-12-31 00:00:00,2012-01-01 00:00:00
====
---- QUERY
# Test overflow (2147483647 is MAX_INT).
select cast("2012-01-01 00:00:00" as timestamp) + interval 2147483647 years,
cast("2012-01-01 00:00:00" as timestamp) - interval 2147483647 years
---- TYPES
timestamp,timestamp
---- RESULTS
2011-01-01 00:00:00,2013-01-01 00:00:00
====
---- QUERY
# Timestamp arithmetic inside a predicate.
select year, month from alltypes$TABLE
where year = year((cast('2012-01-01 09:10:11' as timestamp) - interval 3 years))
and month = month((cast('2012-01-01 09:10:11' as timestamp) + interval 3 months))
limit 3
---- TYPES
int,int
---- RESULTS
2009,4
2009,4
2009,4
====
---- QUERY
# Test NULLs in second operand
select count(*) from alltypesagg$TABLE
where (cast('2012-01-01 09:10:11' as timestamp) + interval tinyint_col seconds) IS NULL
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
# Test NULLs in first operand
select count(*) from alltypesagg$TABLE
where (cast('2012-01-01 09:10:11' as timestamp) + interval tinyint_col seconds)
+ interval 10 years IS NULL
---- TYPES
bigint
---- RESULTS
1000
====