Files
impala/testdata/workloads/functional-query/queries/QueryTest/exprs.test
Alex Behm 1497002013 Added SHOW TABLE/COLUMN STATS command.
Fixed the following stats-related bugs:
- Per-partition row count was not distributed properly via CatalogService
- HBase column stats were not loaded and distributed properly

Enhancements to test framework:
- Allow regex specification of expected row or column values
- Fixed expected results of some tests because the test framework
  did not catch that they were incorrect

Change-Id: I1fa8e710bbcf0ddb62b961fdd26ecd9ce7b75d51
Reviewed-on: http://gerrit.ent.cloudera.com:8080/813
Reviewed-by: Alex Behm <alex.behm@cloudera.com>
Tested-by: jenkins
2014-01-08 10:53:51 -08:00

1351 lines
36 KiB
Plaintext

====
---- QUERY
# IS NULL predicate
select count(*) from alltypesagg
---- TYPES
bigint
---- RESULTS
10000
====
---- QUERY
select count(*) from alltypesagg where tinyint_col is null
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg where tinyint_col is not null
---- TYPES
bigint
---- RESULTS
9000
====
---- QUERY
# =
select count(*) from alltypesagg where tinyint_col = 1
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg where smallint_col = 1
---- TYPES
bigint
---- RESULTS
100
====
---- QUERY
select count(*) from alltypesagg where int_col = 1
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg where bigint_col = 10
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg where float_col = cast(1.1 as float)
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg where double_col = 10.1
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg where date_string_col = '01/01/10'
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
# <>
select count(*) from alltypesagg where tinyint_col <> 1
---- TYPES
bigint
---- RESULTS
8000
====
---- QUERY
select count(*) from alltypesagg where smallint_col <> 1
---- TYPES
bigint
---- RESULTS
9800
====
---- QUERY
select count(*) from alltypesagg where int_col <> 1
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg where bigint_col <> 1
---- TYPES
bigint
---- RESULTS
9990
====
---- QUERY
select count(*) from alltypesagg where float_col <> cast(1.1 as float)
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg where double_col <> 10.1
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
# <
select count(*) from alltypesagg where tinyint_col < 2
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg where smallint_col < 2
---- TYPES
bigint
---- RESULTS
100
====
---- QUERY
select count(*) from alltypesagg where int_col < 2
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg where bigint_col < 20
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg where float_col < 2.2
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg where double_col < 20.2
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
# >
select count(*) from alltypesagg where tinyint_col > 1
---- TYPES
bigint
---- RESULTS
8000
====
---- QUERY
select count(*) from alltypesagg where smallint_col > 1
---- TYPES
bigint
---- RESULTS
9800
====
---- QUERY
select count(*) from alltypesagg where int_col > 1
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg where bigint_col > 10
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg where float_col > cast(1.1 as float)
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg where double_col > 10.1
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
# <=
select count(*) from alltypesagg where tinyint_col <= 1
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg where smallint_col <= 1
---- TYPES
bigint
---- RESULTS
100
====
---- QUERY
select count(*) from alltypesagg where int_col <= 1
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg where bigint_col <= 10
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg where float_col <= cast(1.1 as float)
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
select count(*) from alltypesagg where double_col <= 10.1
---- TYPES
bigint
---- RESULTS
10
====
---- QUERY
# >=
select count(*) from alltypesagg where tinyint_col >= 2
---- TYPES
bigint
---- RESULTS
8000
====
---- QUERY
select count(*) from alltypesagg where smallint_col >= 2
---- TYPES
bigint
---- RESULTS
9800
====
---- QUERY
select count(*) from alltypesagg where int_col >= 2
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg where bigint_col >= 20
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg where float_col >= 2.2
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
select count(*) from alltypesagg where double_col >= 20.2
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
# Type synonym check: DOUBLE = REAL
select count(*) from alltypesagg where double_col >= 20.2 and cast(double_col as double) = cast(double_col as real)
---- TYPES
bigint
---- RESULTS
9980
====
---- QUERY
# Type synonym check: INT = INTEGER
select count(*) from alltypesagg where double_col >= 20.2 and cast(double_col as int) = cast(double_col as integer)
---- 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
#---- 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
#---- 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
#---- 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), dayofyear(timestamp_col), weekofyear(timestamp_col),
hour(timestamp_col), minute(timestamp_col), second(timestamp_col)
from alltypessmall
---- 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
# IN predicate with NULLs and other types
select NULL in ('a', NULL, 'b')
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select NULL not in ('a', NULL, 'b')
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select NULL not in (1.0, NULL, 2.0)
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select NULL in (1.0, NULL, 2.0)
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select NULL in (true, NULL, false)
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select NULL not in (true, NULL, false)
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select true in (NULL, false)
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select true not in (NULL, false)
---- TYPES
boolean
---- RESULTS
NULL
====
---- QUERY
select count(*) from alltypesagg
where true in (bool_col, tinyint_col)
---- TYPES
bigint
---- RESULTS
6000
====
---- QUERY
select count(*) from alltypesagg
where true not in (bool_col, tinyint_col)
---- TYPES
bigint
---- RESULTS
4000
====
---- QUERY
select count(*) from alltypesagg
where 1 in (tinyint_col, smallint_col, int_col, bigint_col)
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg
where 1 not in (tinyint_col, smallint_col, int_col, bigint_col)
---- TYPES
bigint
---- RESULTS
8000
====
---- QUERY
select count(*) from alltypesagg
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
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
where '01/01/10' in (date_string_col, string_col, 'abc')
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg
where '01/01/10' not in (date_string_col, string_col, 'abc')
---- TYPES
bigint
---- RESULTS
9000
====
---- QUERY
select count(*) from alltypesagg
where cast('2010-01-01 00:00:00' as timestamp) in (timestamp_col)
---- TYPES
bigint
---- RESULTS
1
====
---- QUERY
select count(*) from alltypesagg
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 where tinyint_col between 1 and 2
---- TYPES
bigint
---- RESULTS
2000
====
---- QUERY
select count(*) from alltypesagg where tinyint_col not between 1 and 2
---- TYPES
bigint
---- RESULTS
7000
====
---- QUERY
select count(*) from alltypesagg where smallint_col between 1 and 20
---- TYPES
bigint
---- RESULTS
2000
====
---- QUERY
select count(*) from alltypesagg where smallint_col not between 1 and 20
---- TYPES
bigint
---- RESULTS
7900
====
---- QUERY
select count(*) from alltypesagg where int_col between 1 and 200
---- TYPES
bigint
---- RESULTS
2000
====
---- QUERY
select count(*) from alltypesagg where int_col not between 1 and 200
---- TYPES
bigint
---- RESULTS
7990
====
---- QUERY
select count(*) from alltypesagg where bigint_col between 1 and 2000
---- TYPES
bigint
---- RESULTS
2000
====
---- QUERY
select count(*) from alltypesagg where bigint_col not between 1 and 2000
---- TYPES
bigint
---- RESULTS
7990
====
---- QUERY
select count(*) from alltypesagg
where float_col between cast(1.0 as float) and cast(110.0 as float)
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
select count(*) from alltypesagg
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 where double_col between 1.0 and 110.0
---- TYPES
bigint
---- RESULTS
100
====
---- QUERY
select count(*) from alltypesagg where double_col not between 1.0 and 110.0
---- TYPES
bigint
---- RESULTS
9890
====
---- QUERY
select count(*) from alltypesagg where date_string_col
between '01/01/10' and '01/05/10'
---- TYPES
bigint
---- RESULTS
5000
====
---- QUERY
select count(*) from alltypesagg where date_string_col
not between '01/01/10' and '01/05/10'
---- TYPES
bigint
---- RESULTS
5000
====
---- QUERY
select count(*) from alltypesagg 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 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'
row_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.
row_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.
row_regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
row_regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
row_regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
row_regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
row_regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
row_regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
row_regex: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{9})?),\1,\1,\1
row_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.
row_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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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
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
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
where (cast('2012-01-01 09:10:11' as timestamp) + interval tinyint_col seconds)
+ interval 10 years IS NULL
---- TYPES
bigint
---- RESULTS
1000
====
---- QUERY
# Test rounding (IMPALA-266)
select round(8.072, 3), round(8, 3), round(8.0719999999,3), round(8.072, 0),
round(8.072, 4), 8, 8.0;
---- TYPES
double, double, double, double, double, tinyint, float
---- RESULTS
8.072,8.000,8.072,8,8.0720,8,8
====
---- QUERY
# Test a fix of codegen/non-codegen exprs(IMPALA-350)
# Test having a thread-safe expr followed by a non thread-safe one and
# vice versa.
select count(*) from alltypes where string_col REGEXP '^1' and id < 10
---- TYPES
BIGINT
---- RESULTS
1
====
---- QUERY
# Test a fix of codegen/non-codegen exprs(IMPALA-350)
select count(*) from alltypes where id < 10 and string_col REGEXP '^1'
---- TYPES
BIGINT
---- RESULTS
1
====
---- QUERY
# Test a fix of codegen/non-codegen for floating-point modulo(IMPALA-391)
# TODO: Remove this test when IMPALA-498 is resolved.
select float_col, double_col, float_col % double_col,
double_col % NULL, NULL % double_col from alltypessmall limit 10
---- TYPES
FLOAT,DOUBLE,DOUBLE,DOUBLE,DOUBLE
---- RESULTS
0,0,NULL,NULL,NULL
1.100000023841858,10.1,1.100000023841858,NULL,NULL
2.200000047683716,20.2,2.200000047683716,NULL,NULL
3.299999952316284,30.3,3.299999952316284,NULL,NULL
4.400000095367432,40.4,4.400000095367432,NULL,NULL
5.5,50.5,5.5,NULL,NULL
6.599999904632568,60.6,6.599999904632568,NULL,NULL
7.699999809265137,70.7,7.699999809265137,NULL,NULL
8.800000190734863,80.8,8.800000190734863,NULL,NULL
9.899999618530273,90.90000000000001,9.899999618530273,NULL,NULL
====