mirror of
https://github.com/apache/impala.git
synced 2025-12-30 12:02:10 -05:00
This changes the code to use the lddqu and movdqu instructions (via Intel intrinsics) to allow unaligned memory access. Change-Id: I39b2b47bb717d5ac9727512a24fcf8a8a6a8dcc6 Reviewed-on: http://gerrit.cloudera.org:8080/4205 Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com> Reviewed-by: Dan Hecht <dhecht@cloudera.com> Tested-by: Internal Jenkins
2497 lines
61 KiB
Plaintext
2497 lines
61 KiB
Plaintext
====
|
|
---- QUERY
|
|
# Regression test for IMPALA-938
|
|
select smallint_col, int_col, (cast("1970-01-01" as timestamp) + interval smallint_col days)
|
|
from functional.alltypes where smallint_col = 1 limit 1
|
|
---- RESULTS
|
|
1,1,1970-01-02 00:00:00
|
|
---- TYPES
|
|
smallint, int, timestamp
|
|
====
|
|
---- QUERY
|
|
# check that add_months alias is working
|
|
select ADD_MONTHS(cast('2013-02-18 16:46:00.01' as timestamp), 1)
|
|
---- RESULTS
|
|
2013-03-18 16:46:00.010000000
|
|
---- TYPES
|
|
timestamp
|
|
====
|
|
---- QUERY
|
|
# test extract with non-constant field name
|
|
select b.unit, extract(a.ts, b.unit) from
|
|
(values(cast('2013-02-18 16:46:00.01' as timestamp) ts)) a
|
|
cross join
|
|
(values('year' unit), ('month'), ('day'), ('hour'), ('minute'), ('second'),
|
|
('millisecond'), ('epoch' )) b
|
|
---- RESULTS
|
|
'year',2013
|
|
'month',2
|
|
'day',18
|
|
'hour',16
|
|
'minute',46
|
|
'second',0
|
|
'millisecond',10
|
|
'epoch',1361205960
|
|
---- TYPES
|
|
string, int
|
|
====
|
|
---- QUERY
|
|
# EXTRACT fields from timestamp
|
|
select EXTRACT(timestamp_col, 'yEar'), EXTRACT(timestamp_col, 'MilliSECond')
|
|
from alltypesagg order by id limit 5
|
|
---- RESULTS
|
|
2010,0
|
|
2010,0
|
|
2010,0
|
|
2010,100
|
|
2010,300
|
|
---- TYPES
|
|
int, int
|
|
====
|
|
---- QUERY
|
|
# IS NULL predicate
|
|
select count(*) from alltypesagg
|
|
---- RESULTS
|
|
11000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where tinyint_col is null
|
|
---- RESULTS
|
|
2000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where tinyint_col is not null
|
|
---- RESULTS
|
|
9000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
# =
|
|
select count(*) from alltypesagg where tinyint_col = 1
|
|
---- RESULTS
|
|
1000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where smallint_col = 1
|
|
---- RESULTS
|
|
100
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where int_col = 1
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where bigint_col = 10
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where float_col = cast(1.1 as float)
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where double_col = 10.1
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where date_string_col = '01/01/10'
|
|
---- RESULTS
|
|
1100
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
# <>
|
|
select count(*) from alltypesagg where tinyint_col <> 1
|
|
---- RESULTS
|
|
8000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where smallint_col <> 1
|
|
---- RESULTS
|
|
10700
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where int_col <> 1
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where bigint_col <> 1
|
|
---- RESULTS
|
|
10980
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where float_col <> cast(1.1 as float)
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where double_col <> 10.1
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
# <
|
|
select count(*) from alltypesagg where tinyint_col < 2
|
|
---- RESULTS
|
|
1000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where smallint_col < 2
|
|
---- RESULTS
|
|
100
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where int_col < 2
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where bigint_col < 20
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where float_col < 2.2
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where double_col < 20.2
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
# >
|
|
select count(*) from alltypesagg where tinyint_col > 1
|
|
---- RESULTS
|
|
8000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where smallint_col > 1
|
|
---- RESULTS
|
|
10700
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where int_col > 1
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where bigint_col > 10
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where float_col > cast(1.1 as float)
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where double_col > 10.1
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
# <=
|
|
select count(*) from alltypesagg where tinyint_col <= 1
|
|
---- RESULTS
|
|
1000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where smallint_col <= 1
|
|
---- RESULTS
|
|
100
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where int_col <= 1
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where bigint_col <= 10
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where float_col <= cast(1.1 as float)
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where double_col <= 10.1
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
# >=
|
|
select count(*) from alltypesagg where tinyint_col >= 2
|
|
---- RESULTS
|
|
8000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where smallint_col >= 2
|
|
---- RESULTS
|
|
10700
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where int_col >= 2
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where bigint_col >= 20
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where float_col >= 2.2
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where double_col >= 20.2
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- 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)
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- 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)
|
|
---- RESULTS
|
|
10970
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
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),
|
|
ROUND(SUM(tinyint_col) + SUM(smallint_col) + SUM(int_col) + SUM(bigint_col) +
|
|
SUM(float_col), 4),
|
|
ROUND(SUM(tinyint_col + smallint_col + int_col + bigint_col + float_col), 4),
|
|
ROUND(SUM(tinyint_col) + SUM(smallint_col) + SUM(int_col) + SUM(bigint_col) +
|
|
SUM(float_col) + SUM(double_col), 4),
|
|
ROUND(SUM(tinyint_col + smallint_col + int_col + bigint_col + float_col + double_col), 4)
|
|
from alltypesaggnonulls
|
|
---- TYPES
|
|
bigint, bigint, bigint, bigint, bigint, bigint, double, double, double, double
|
|
---- RESULTS
|
|
540000,540000,5535000,5535000,55485000,55485000,60979499.9998,60979499.9998,111428999.9998,111428999.9998
|
|
====
|
|
---- QUERY
|
|
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),
|
|
ROUND(-1 * SUM(tinyint_col) - SUM(smallint_col) - SUM(int_col) -
|
|
SUM(bigint_col) - SUM(float_col), 4),
|
|
ROUND(SUM(-1 * tinyint_col - smallint_col - int_col - bigint_col - float_col), 4),
|
|
ROUND(-1 * SUM(tinyint_col) - SUM(smallint_col) - SUM(int_col) -
|
|
SUM(bigint_col) - SUM(float_col) - SUM(double_col), 4),
|
|
ROUND(SUM(-1 * tinyint_col - smallint_col - int_col -
|
|
bigint_col - float_col - double_col), 4)
|
|
from alltypesaggnonulls
|
|
---- TYPES
|
|
bigint, bigint, bigint, bigint, bigint, bigint, double, double, double, double
|
|
---- RESULTS
|
|
-540000,-540000,-5535000,-5535000,-55485000,-55485000,-60979499.9998,-60979499.9998,-111428999.9998,-111428999.9998
|
|
====
|
|
---- QUERY
|
|
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),
|
|
ROUND(MAX(tinyint_col) * MAX(smallint_col) * MAX(int_col) *
|
|
MAX(bigint_col) * MAX(float_col), 4),
|
|
ROUND(MAX(tinyint_col * smallint_col * int_col * bigint_col * float_col), 4),
|
|
ROUND(MAX(tinyint_col) * MAX(smallint_col) * MAX(int_col) *
|
|
MAX(bigint_col) * MAX(float_col) * MAX(double_col), 4),
|
|
ROUND(MAX(tinyint_col * smallint_col * int_col * bigint_col * float_col * double_col), 4)
|
|
from alltypesaggnonulls
|
|
---- TYPES
|
|
int, int, 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
|
|
====
|
|
---- QUERY
|
|
# LIKE exprs w/ the like/regex pattern coming from a column
|
|
select * from LikeTbl
|
|
---- 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.*'
|
|
---- TYPES
|
|
string, string, string, string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, match_like_col from LikeTbl
|
|
where str_col LIKE match_like_col
|
|
---- 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%'
|
|
'','%'
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, match_like_col from LikeTbl
|
|
where str_col NOT LIKE match_like_col
|
|
---- RESULTS
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, match_like_col from LikeTbl
|
|
where str_col LIKE no_match_like_col
|
|
---- RESULTS
|
|
'','%'
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, no_match_like_col from LikeTbl
|
|
where str_col NOT LIKE no_match_like_col
|
|
---- 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%'
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, match_regex_col from LikeTbl
|
|
where str_col REGEXP match_regex_col
|
|
---- 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.*'
|
|
'','.*'
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, no_match_regex_col from LikeTbl
|
|
where str_col REGEXP no_match_regex_col
|
|
---- RESULTS
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, match_regex_col from LikeTbl
|
|
where str_col NOT REGEXP match_regex_col
|
|
---- RESULTS
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, no_match_regex_col from LikeTbl
|
|
where str_col NOT REGEXP no_match_regex_col
|
|
---- 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'
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select 1+2
|
|
---- RESULTS
|
|
3
|
|
---- TYPES
|
|
smallint
|
|
====
|
|
---- 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
|
|
---- 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
|
|
---- TYPES
|
|
timestamp, string, int, int, int, int, int, int, int, int
|
|
====
|
|
---- QUERY
|
|
# IN predicate
|
|
select NULL in (1, 2, 3)
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select NULL in (1, NULL, 3)
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select 1 in (2, NULL, 1)
|
|
---- RESULTS
|
|
true
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select 1 in (1, NULL, 2)
|
|
---- RESULTS
|
|
true
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select 1 in (2, NULL, 3)
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select 1 in (2, 3, 4)
|
|
---- RESULTS
|
|
false
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select NULL not in (1, 2, 3)
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select NULL not in (1, NULL, 3)
|
|
---- RESULTS
|
|
NULL
|
|
====
|
|
---- QUERY
|
|
select 1 not in (2, NULL, 1)
|
|
---- RESULTS
|
|
false
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select 1 not in (1, NULL, 2)
|
|
---- RESULTS
|
|
false
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select 1 not in (2, NULL, 3)
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select 1 not in (2, 3, 4)
|
|
---- RESULTS
|
|
true
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
# IN predicate with NULLs and other types
|
|
select NULL in ('a', NULL, 'b')
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select NULL not in ('a', NULL, 'b')
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select NULL not in (1.0, NULL, 2.0)
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select NULL in (1.0, NULL, 2.0)
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select NULL in (true, NULL, false)
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select NULL not in (true, NULL, false)
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select true in (NULL, false)
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select true not in (NULL, false)
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where true in (bool_col, tinyint_col)
|
|
---- RESULTS
|
|
7000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where true not in (bool_col, tinyint_col)
|
|
---- RESULTS
|
|
4000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where 1 in (tinyint_col, smallint_col, int_col, bigint_col)
|
|
---- RESULTS
|
|
1000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where 1 not in (tinyint_col, smallint_col, int_col, bigint_col)
|
|
---- RESULTS
|
|
8000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where 10.1 in (tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col)
|
|
---- RESULTS
|
|
10
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where 10.1 not in (tinyint_col, smallint_col, int_col, bigint_col, float_col, double_col)
|
|
---- RESULTS
|
|
8990
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where '01/01/10' in (date_string_col, string_col, 'abc')
|
|
---- RESULTS
|
|
1100
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where '01/01/10' not in (date_string_col, string_col, 'abc')
|
|
---- RESULTS
|
|
9900
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where cast('2010-01-01 00:00:00' as timestamp) in (timestamp_col)
|
|
---- RESULTS
|
|
2
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where cast('2010-01-01 00:00:00' as timestamp) not in (timestamp_col)
|
|
---- RESULTS
|
|
10998
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
# Regression test for IMPALA-1810
|
|
SELECT tinyint_col, id FROM alltypestiny t1 WHERE t1.tinyint_col IN (154.58, t1.id)
|
|
---- RESULTS
|
|
0,0
|
|
1,1
|
|
---- TYPES
|
|
tinyint,int
|
|
====
|
|
---- QUERY
|
|
# Regression test for IMPALA-1810
|
|
SELECT month, t1.tinyint_col FROM alltypestiny t1
|
|
WHERE t1.month NOT IN (355.8, t1.tinyint_col)
|
|
---- RESULTS
|
|
2,0
|
|
2,1
|
|
3,0
|
|
3,1
|
|
1,0
|
|
4,0
|
|
4,1
|
|
---- TYPES
|
|
int,tinyint
|
|
====
|
|
---- QUERY
|
|
select month, tinyint_col, int_col, float_col FROM alltypestiny
|
|
WHERE month IN (cast(tinyint_col as decimal(34,0)), int_col + 1, 12345, float_col)
|
|
---- RESULTS
|
|
2,1,1,1.1
|
|
1,0,0,0
|
|
1,1,1,1.1
|
|
---- TYPES
|
|
int,tinyint,int,float
|
|
====
|
|
---- QUERY
|
|
# Regression test for IMPALA-1949
|
|
select bool_col = (tinyint_col in (1,2)) from alltypestiny
|
|
---- RESULTS
|
|
false
|
|
false
|
|
false
|
|
false
|
|
false
|
|
false
|
|
false
|
|
false
|
|
---- TYPES
|
|
boolean
|
|
====
|
|
---- QUERY
|
|
# CASE expr - Basic functionality
|
|
select date_string_col, count(*) from alltypesagg where case date_string_col when "01/06/10" then (true)
|
|
else (false) end group by 1
|
|
---- RESULTS
|
|
'01/06/10',1100
|
|
---- TYPES
|
|
STRING, BIGINT
|
|
====
|
|
---- QUERY
|
|
select date_string_col, count(*) from alltypesagg where case date_string_col when "01/06/10" then (false)
|
|
else (true) end group by 1
|
|
---- RESULTS
|
|
'01/08/10',1100
|
|
'01/09/10',1100
|
|
'01/02/10',1100
|
|
'01/01/10',1100
|
|
'01/03/10',1100
|
|
'01/04/10',1100
|
|
'01/10/10',1100
|
|
'01/07/10',1100
|
|
'01/05/10',1100
|
|
---- TYPES
|
|
STRING, BIGINT
|
|
====
|
|
---- QUERY
|
|
# CASE expr - then expr will return NULL
|
|
select date_string_col, count(*) from alltypesagg where case date_string_col when "01/06/10" then (NULL)
|
|
else (false) end is null group by 1
|
|
---- RESULTS
|
|
'01/06/10',1100
|
|
---- TYPES
|
|
STRING, BIGINT
|
|
====
|
|
---- QUERY
|
|
select date_string_col, count(*) from alltypesagg where case date_string_col when NULL then (NULL) else
|
|
(false) end is null group by 1
|
|
---- RESULTS
|
|
---- TYPES
|
|
STRING, BIGINT
|
|
====
|
|
---- QUERY
|
|
select tinyint_col, count(*) from alltypesagg where case tinyint_col when 5 then true when 6 then
|
|
true else NULL end group by 1
|
|
---- RESULTS
|
|
6,1000
|
|
5,1000
|
|
---- TYPES
|
|
TINYINT, BIGINT
|
|
====
|
|
---- QUERY
|
|
# CASE expr - test multiple when exprs, ensure NULL when expr does not return
|
|
# corresponding then expr
|
|
select tinyint_col, count(*) from alltypesagg where case tinyint_col when NULL then true else false end group by 1
|
|
---- RESULTS
|
|
---- TYPES
|
|
TINYINT, BIGINT
|
|
====
|
|
---- QUERY
|
|
# CASE expr - test return else works with NULL
|
|
select tinyint_col, count(*) from alltypesagg where case tinyint_col when 1 then true else NULL end
|
|
is null group by 1
|
|
---- RESULTS
|
|
3,1000
|
|
NULL,2000
|
|
2,1000
|
|
4,1000
|
|
8,1000
|
|
6,1000
|
|
5,1000
|
|
7,1000
|
|
9,1000
|
|
---- TYPES
|
|
TINYINT, BIGINT
|
|
====
|
|
---- QUERY
|
|
# CASE expr - test that case statement without else expr returns NULL on no match
|
|
select tinyint_col, count(*) from alltypesagg where case tinyint_col when 1 then true end
|
|
is null group by 1
|
|
---- RESULTS
|
|
3,1000
|
|
NULL,2000
|
|
2,1000
|
|
4,1000
|
|
8,1000
|
|
6,1000
|
|
5,1000
|
|
7,1000
|
|
9,1000
|
|
---- TYPES
|
|
TINYINT, BIGINT
|
|
====
|
|
---- QUERY
|
|
select tinyint_col, count(*) from alltypesagg where case when (tinyint_col = 1) then true when
|
|
(tinyint_col = 2) then true else false end group by 1
|
|
---- RESULTS
|
|
2,1000
|
|
1,1000
|
|
---- TYPES
|
|
TINYINT, BIGINT
|
|
====
|
|
---- QUERY
|
|
# CASE expr - Test basic functionality with strings
|
|
select date_string_col, count(*) from alltypesagg where case date_string_col when "01/06/10" then true
|
|
when "01/02/10" then false when "01/08/10" then true end group by 1
|
|
---- RESULTS
|
|
'01/08/10',1100
|
|
'01/06/10',1100
|
|
---- TYPES
|
|
STRING, BIGINT
|
|
====
|
|
---- QUERY
|
|
select date_string_col, sum(case date_string_col when "01/06/10" then 2 else 0 end) from alltypesagg group by 1
|
|
---- RESULTS
|
|
'01/08/10',0
|
|
'01/09/10',0
|
|
'01/02/10',0
|
|
'01/06/10',2200
|
|
'01/01/10',0
|
|
'01/03/10',0
|
|
'01/04/10',0
|
|
'01/10/10',0
|
|
'01/07/10',0
|
|
'01/05/10',0
|
|
---- TYPES
|
|
STRING, BIGINT
|
|
====
|
|
---- QUERY
|
|
select date_string_col, sum(case date_string_col when "01/06/10" then 2 when "01/02/10" then 1 else 0 end)
|
|
from alltypesagg group by 1
|
|
---- RESULTS
|
|
'01/08/10',0
|
|
'01/09/10',0
|
|
'01/02/10',1100
|
|
'01/06/10',2200
|
|
'01/01/10',0
|
|
'01/03/10',0
|
|
'01/04/10',0
|
|
'01/10/10',0
|
|
'01/07/10',0
|
|
'01/05/10',0
|
|
---- TYPES
|
|
STRING, BIGINT
|
|
====
|
|
---- QUERY
|
|
select bool_col, count(*) from alltypesagg where(case bool_col when true then "true" when false
|
|
then "false" end = "true") group by 1
|
|
---- RESULTS
|
|
true,6000
|
|
---- TYPES
|
|
BOOLEAN, BIGINT
|
|
====
|
|
---- QUERY
|
|
# CASE expr - test when other expr types
|
|
select id, count(*) from alltypesagg where case id when 8999 then cast(1 as int) else
|
|
cast(0 as int) end = 1 group by 1
|
|
---- RESULTS
|
|
8999,1
|
|
---- TYPES
|
|
INT, BIGINT
|
|
====
|
|
---- QUERY
|
|
select bool_col, count(*) from alltypesagg where case bool_col when false then true else false end group by 1
|
|
---- RESULTS
|
|
false,5000
|
|
---- TYPES
|
|
BOOLEAN, BIGINT
|
|
====
|
|
---- QUERY
|
|
select smallint_col, count(*) from alltypesagg where case smallint_col when 90 then cast(1 as smallint)
|
|
else cast(0 as smallint) end = 1 group by 1
|
|
---- RESULTS
|
|
90,200
|
|
---- TYPES
|
|
SMALLINT, BIGINT
|
|
====
|
|
---- QUERY
|
|
select int_col, count(*) from alltypesagg where case int_col when 90 then cast(1 as int)
|
|
else cast(0 as int) end = 1 group by 1
|
|
---- RESULTS
|
|
90,20
|
|
---- TYPES
|
|
INT, BIGINT
|
|
====
|
|
---- QUERY
|
|
select bigint_col, count(*) from alltypesagg where case bigint_col when 90 then cast(1 as bigint)
|
|
else cast(0 as bigint) end = 1 group by 1
|
|
---- RESULTS
|
|
90,10
|
|
---- TYPES
|
|
BIGINT, BIGINT
|
|
====
|
|
---- QUERY
|
|
select float_col, count(*) from alltypesagg where case float_col when 1089 then cast(1.0 as float)
|
|
else cast(0.0 as float) end = 1.0 group by 1
|
|
---- RESULTS
|
|
1089,20
|
|
---- TYPES
|
|
FLOAT, BIGINT
|
|
====
|
|
---- QUERY
|
|
select double_col, count(*) from alltypesagg where case double_col when 9999 then cast(1.0 as double)
|
|
else cast(0.0 as double) end = 1.0 group by 1
|
|
---- RESULTS
|
|
9999,20
|
|
---- TYPES
|
|
DOUBLE, BIGINT
|
|
====
|
|
---- QUERY
|
|
select date_string_col, count(*) from alltypesagg where case date_string_col when "01/08/10" then "true"
|
|
else "false" end = "true" group by 1
|
|
---- RESULTS
|
|
'01/08/10',1100
|
|
---- TYPES
|
|
STRING, BIGINT
|
|
====
|
|
---- QUERY
|
|
select timestamp_col, count(*) from alltypesagg where case timestamp_col when
|
|
"2010-01-08 18:02:05.100000000" then true else false end group by 1
|
|
---- RESULTS
|
|
2010-01-08 18:02:05.100000000,1
|
|
---- TYPES
|
|
TIMESTAMP, BIGINT
|
|
====
|
|
---- QUERY
|
|
select decode(id, 1, 100) from alltypesagg where day = 1 and id < 3
|
|
---- RESULTS
|
|
100
|
|
NULL
|
|
NULL
|
|
---- TYPES
|
|
TINYINT
|
|
====
|
|
---- QUERY
|
|
select id
|
|
from alltypesagg
|
|
where day = 1 and id < 3 and decode(tinyint_col, null, 4) is not null
|
|
---- RESULTS
|
|
0
|
|
---- TYPES
|
|
INT
|
|
====
|
|
---- QUERY
|
|
select distinct decode(id, tinyint_col, round(float_col)) from alltypestiny
|
|
---- RESULTS
|
|
NULL
|
|
0
|
|
1
|
|
---- TYPES
|
|
BIGINT
|
|
====
|
|
---- QUERY
|
|
select decode(tinyint_col, null, -2), count(*)
|
|
from alltypesagg
|
|
where day = 1 and decode(smallint_col, 11, -1, id) < 10
|
|
group by 1
|
|
---- RESULTS
|
|
-2,1
|
|
NULL,19
|
|
---- TYPES
|
|
TINYINT,BIGINT
|
|
====
|
|
---- QUERY
|
|
# BETWEEN predicate
|
|
select count(*) from alltypesagg where tinyint_col between 1 and 2
|
|
---- RESULTS
|
|
2000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where tinyint_col not between 1 and 2
|
|
---- RESULTS
|
|
7000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where smallint_col between 1 and 20
|
|
---- RESULTS
|
|
2200
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where smallint_col not between 1 and 20
|
|
---- RESULTS
|
|
8600
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where int_col between 1 and 200
|
|
---- RESULTS
|
|
2200
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where int_col not between 1 and 200
|
|
---- RESULTS
|
|
8780
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where bigint_col between 1 and 2000
|
|
---- RESULTS
|
|
2200
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where bigint_col not between 1 and 2000
|
|
---- RESULTS
|
|
8780
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where float_col between cast(1.0 as float) and cast(110.0 as float)
|
|
---- RESULTS
|
|
1100
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg
|
|
where float_col not between cast(1.0 as float) and cast(110.0 as float)
|
|
---- RESULTS
|
|
9880
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where double_col between 1.0 and 110.0
|
|
---- RESULTS
|
|
110
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where double_col not between 1.0 and 110.0
|
|
---- RESULTS
|
|
10870
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where date_string_col
|
|
between '01/01/10' and '01/05/10'
|
|
---- RESULTS
|
|
5500
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select count(*) from alltypesagg where date_string_col
|
|
not between '01/01/10' and '01/05/10'
|
|
---- RESULTS
|
|
5500
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- 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)
|
|
---- RESULTS
|
|
110
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- 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)
|
|
---- RESULTS
|
|
10890
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
# Test pid() function, this should only return one pid. If pid() were not implemented
|
|
# correctly via the global state variable, this could return multiple pids.
|
|
select pid() p from functional.alltypes
|
|
union distinct select pid() p from functional.alltypes
|
|
group by p
|
|
---- RESULTS
|
|
# Matches a single pid
|
|
row_regex: \d+
|
|
---- TYPES
|
|
int
|
|
====
|
|
---- QUERY
|
|
# Test NOW() function.
|
|
select now()
|
|
---- 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})?
|
|
---- TYPES
|
|
timestamp
|
|
====
|
|
---- QUERY
|
|
select now(), now(), now(), now()
|
|
---- 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
|
|
---- TYPES
|
|
timestamp, timestamp, timestamp, timestamp
|
|
====
|
|
---- QUERY
|
|
select now(), now(), now(), now() from alltypestiny
|
|
---- 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
|
|
---- TYPES
|
|
timestamp, timestamp, timestamp, timestamp
|
|
====
|
|
---- QUERY
|
|
# Check that now() returns the same value when evaluated on different nodes
|
|
# (alltypessmall is partitioned)
|
|
select min(now()), max(now()) from alltypessmall
|
|
---- 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
|
|
---- TYPES
|
|
timestamp, timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2019-01-01 00:00:00,2019-01-01 00:00:00,1999-01-01 00:00:00
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2019-01-01 00:00:00,1999-01-01 00:00:00
|
|
---- TYPES
|
|
timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- 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
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp,timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- 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
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- 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
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp,timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- 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
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- 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
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp,timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- 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
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-02 01:00:00,2009-01-02 01:00:00,2008-12-30 23:00:00
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-02 01:00:00,2008-12-30 23:00:00
|
|
---- TYPES
|
|
timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-02 01:33:00,2009-01-02 01:33:00,2008-12-30 22:27:00
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-02 01:33:00,2008-12-30 22:27:00
|
|
---- TYPES
|
|
timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-02 01:00:33,2009-01-02 01:00:33,2008-12-30 22:59:27
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-02 01:00:33,2008-12-30 22:59:27
|
|
---- TYPES
|
|
timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-02 01:00:00.033000000,2009-01-02 01:00:00.033000000,2008-12-30 22:59:59.967000000
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-02 01:00:00.033000000,2008-12-30 22:59:59.967000000
|
|
---- TYPES
|
|
timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-01 00:00:00.001033000,2009-01-01 00:00:00.001033000,2008-12-31 23:59:59.998967000
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-01 00:00:00.001033000,2008-12-31 23:59:59.998967000
|
|
---- TYPES
|
|
timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-01 00:00:00.000001033,2009-01-01 00:00:00.000001033,2008-12-31 23:59:59.999998967
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009-01-01 00:00:00.000001033,2008-12-31 23:59:59.999998967
|
|
---- TYPES
|
|
timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- 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
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- 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
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2013-02-28 00:00:00,2012-02-28 00:00:00,2012-12-31 00:00:00,2012-01-01 00:00:00
|
|
---- TYPES
|
|
timestamp,timestamp,timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
NULL,NULL
|
|
---- TYPES
|
|
timestamp,timestamp
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2009,4
|
|
2009,4
|
|
2009,4
|
|
---- TYPES
|
|
int,int
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
2000
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select round(float_col, 3), round(float_col, 4) from functional.alltypestiny limit 2;
|
|
---- RESULTS
|
|
0.000,0.0000
|
|
1.100,1.1000
|
|
---- TYPES
|
|
double,double
|
|
====
|
|
---- QUERY
|
|
# Test that round outputs correct number of decimal places despite floating-point
|
|
# imprecisions
|
|
select round(cast(1.1 as float), 2), round(cast(1.2 as float), 4),
|
|
round(cast(1.111 as double), 2);
|
|
---- RESULTS
|
|
1.1,1.2,1.11
|
|
---- TYPES
|
|
double,double,double
|
|
====
|
|
---- 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
|
|
---- RESULTS
|
|
1
|
|
---- TYPES
|
|
BIGINT
|
|
====
|
|
---- QUERY
|
|
# Test a fix of codegen/non-codegen exprs(IMPALA-350)
|
|
select count(*) from alltypes where id < 10 and string_col REGEXP '^1'
|
|
---- RESULTS
|
|
1
|
|
---- TYPES
|
|
BIGINT
|
|
====
|
|
---- QUERY
|
|
# Test a fix of codegen/non-codegen for floating-point modulo(IMPALA-391)
|
|
select float_col, double_col, float_col % double_col,
|
|
double_col % NULL, NULL % double_col from alltypessmall limit 10
|
|
---- 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
|
|
---- TYPES
|
|
FLOAT,DOUBLE,DOUBLE,DOUBLE,DOUBLE
|
|
====
|
|
---- QUERY
|
|
select unix_timestamp(tmp.val, tmp.fmt) from (values
|
|
('1970-01-01 00:00:00' as val, 'yyyy-MM-dd HH:mm:ss' as fmt),
|
|
('01:01:01 02/1971/02', 'HH:mm:ss dd/yyyy/MM'),
|
|
('1972||mar||03||030303', 'yyyy||MMM||dd||HHmmss')) as tmp
|
|
---- RESULTS
|
|
0
|
|
34304461
|
|
68439783
|
|
---- TYPES
|
|
bigint
|
|
====
|
|
---- QUERY
|
|
select from_unixtime(tmp.val, tmp.fmt) from (values
|
|
(0 as val, 'yyyy-MM-dd HH:mm:ss' as fmt),
|
|
(34304461, 'HH:mm:ss dd/yyyy/MM'),
|
|
(68439783, 'yyyy||MMM||dd||HHmmss')) as tmp
|
|
---- RESULTS
|
|
'1970-01-01 00:00:00'
|
|
'01:01:01 02/1971/02'
|
|
'1972||Mar||03||030303'
|
|
---- TYPES
|
|
string
|
|
====
|
|
---- QUERY
|
|
select to_timestamp(tmp.val) from (values
|
|
(0 as val),
|
|
(34304461),
|
|
(68439783)) as tmp
|
|
---- RESULTS
|
|
1970-01-01 00:00:00
|
|
1971-02-02 01:01:01
|
|
1972-03-03 03:03:03
|
|
---- TYPES
|
|
TIMESTAMP
|
|
====
|
|
---- QUERY
|
|
select to_timestamp(tmp.val, tmp.fmt) from (values
|
|
('1970-01-01 00:00:00' as val, 'yyyy-MM-dd HH:mm:ss' as fmt),
|
|
('01:01:01 02/1971/02', 'HH:mm:ss dd/yyyy/MM'),
|
|
('1972||Mar||03||030303', 'yyyy||MMM||dd||HHmmss')) as tmp
|
|
---- RESULTS
|
|
1970-01-01 00:00:00
|
|
1971-02-02 01:01:01
|
|
1972-03-03 03:03:03
|
|
---- TYPES
|
|
TIMESTAMP
|
|
====
|
|
---- QUERY
|
|
select from_timestamp(tmp.val, tmp.fmt) from (values
|
|
('1970-01-01 00:00:00' as val, 'yyyy-MM-dd HH:mm:ss' as fmt),
|
|
('1971-02-02 01:01:01', 'yyyy-MM-dd HH:mm:ss'),
|
|
('1972-03-03 03:03:03', 'yyyy-MM-dd HH:mm:ss')) as tmp
|
|
---- RESULTS
|
|
'1970-01-01 00:00:00'
|
|
'1971-02-02 01:01:01'
|
|
'1972-03-03 03:03:03'
|
|
---- TYPES
|
|
string
|
|
====
|
|
---- QUERY
|
|
select 1.1 * 1.1 + cast(1.1 as float)
|
|
---- RESULTS
|
|
2.310000023841858
|
|
---- TYPES
|
|
double
|
|
====
|
|
---- QUERY
|
|
select 1.1 * 1.1 + cast(1.1 as decimal(2,1))
|
|
---- RESULTS
|
|
2.31
|
|
---- TYPES
|
|
decimal
|
|
====
|
|
---- QUERY
|
|
select 1.1 * 1.1 + 1.1
|
|
---- RESULTS
|
|
2.31
|
|
---- TYPES
|
|
decimal
|
|
====
|
|
---- QUERY
|
|
select 1.1 * 1.1 + float_col from functional.alltypestiny limit 2;
|
|
---- RESULTS
|
|
1.21
|
|
2.310000023841858
|
|
---- TYPES
|
|
double
|
|
====
|
|
---- QUERY
|
|
select 1.1 * 1.1 + c3 from functional.decimal_tiny limit 2;
|
|
---- RESULTS
|
|
1.21
|
|
1.31
|
|
---- TYPES
|
|
decimal
|
|
====
|
|
---- QUERY
|
|
# Test weird log values (these are annoying to check in expr-test)
|
|
select log(1,2), log(1,1), log(0,2), log(2,0), log(0,0);
|
|
---- RESULTS
|
|
Infinity,NaN,-0,-Infinity,Nan
|
|
---- TYPES
|
|
double,double,double,double,double
|
|
====
|
|
---- QUERY
|
|
# Test that abs() retains the type of the paramter IMPALA-1424
|
|
select abs(cast(1 as int)), abs(cast(1 as smallint)),
|
|
abs(cast(1 as tinyint)), abs(cast(8589934592 as bigint)),
|
|
abs(cast(-1.3 as double)), abs(cast(-1.3 as float)),
|
|
abs(cast(-1.32223 as decimal(8,3)))
|
|
---- RESULTS
|
|
1,1,1,8589934592,1.3,1.299999952316284,1.322
|
|
---- TYPES
|
|
int, smallint, tinyint, bigint, double, float, decimal
|
|
====
|
|
---- QUERY
|
|
# Regression test for IMPALA-1508
|
|
select timestamp_col FROM alltypesagg
|
|
ORDER BY timestamp_col + INTERVAL bigint_col YEAR ASC limit 1
|
|
---- RESULTS
|
|
2010-01-01 00:01:00
|
|
---- TYPES
|
|
TIMESTAMP
|
|
====
|
|
---- QUERY
|
|
# Test Expr::GetConstant()
|
|
select int_col, bigint_col from functional_avro_snap.alltypestiny
|
|
where abs(cast(int_col as decimal(8,0))) >
|
|
negative(abs(cast(bigint_col as decimal(20, 0))))
|
|
---- RESULTS
|
|
1,10
|
|
1,10
|
|
1,10
|
|
1,10
|
|
---- TYPES
|
|
INT,BIGINT
|
|
====
|
|
---- QUERY
|
|
# Test for IMPALA-1756 (Builtin)
|
|
select int_col from functional.alltypes where regexp_replace('abc', '*', 'cde') = 'cde'
|
|
limit 10
|
|
---- TYPES
|
|
INT
|
|
---- RESULTS
|
|
---- CATCH
|
|
AnalysisException: Error evaluating "regexp_replace('abc', '*', 'cde') = 'cde'"
|
|
CAUSED BY: InternalException: Could not compile regexp pattern: *
|
|
Error: no argument for repetition operator: *
|
|
====
|
|
---- QUERY
|
|
# Test for IMPALA-1756 (UDF)
|
|
select int_col from functional.alltypes where
|
|
madlib_vector_get(0, madlib_vector(1.0, 2.0, NULL)) = 1.0 limit 10
|
|
---- TYPES
|
|
INT
|
|
---- RESULTS
|
|
---- CATCH
|
|
AnalysisException: Error evaluating "madlib_vector_get(0, madlib_vector(1.0, 2.0, NULL)) = 1.0"
|
|
CAUSED BY: InternalException: madlib vector entry 2 is NULL
|
|
====
|
|
---- QUERY
|
|
select * from (select 'abc' as x, '*' as y, 'def' as z from functional.alltypestiny) v
|
|
where regexp_replace(x, y, z) = 'cde'
|
|
---- RESULTS
|
|
---- CATCH
|
|
AnalysisException: Error evaluating "regexp_replace('abc', '*', 'def') = 'cde'"
|
|
CAUSED BY: InternalException: Could not compile regexp pattern: *
|
|
Error: no argument for repetition operator: *
|
|
====
|
|
---- QUERY
|
|
# Test for factorial operator
|
|
select distinct int_col, int_col! from functional.alltypes order by 1
|
|
---- RESULTS
|
|
0,1
|
|
1,1
|
|
2,2
|
|
3,6
|
|
4,24
|
|
5,120
|
|
6,720
|
|
7,5040
|
|
8,40320
|
|
9,362880
|
|
---- TYPES
|
|
INT,BIGINT
|
|
====
|
|
---- QUERY
|
|
# Test for IMPALA-2141: Tests for propogation of error for a UDF with constant parameters
|
|
# in the select list.
|
|
select madlib_vector(1.0, 2.0, NULL);
|
|
---- RESULTS
|
|
---- CATCH
|
|
madlib vector entry 2 is NULL
|
|
====
|
|
---- QUERY
|
|
# Test countset
|
|
select tinyint_col, countset(tinyint_col), countset(tinyint_col, 0),
|
|
smallint_col, countset(smallint_col), countset(smallint_col, 0),
|
|
int_col, countset(int_col), countset(int_col, 0),
|
|
bigint_col, countset(bigint_col), countset(bigint_col, 0)
|
|
from alltypestiny
|
|
where id <= 1
|
|
order by id
|
|
---- RESULTS
|
|
0,0,8,0,0,16,0,0,32,0,0,64
|
|
1,1,7,1,1,15,1,1,31,10,2,62
|
|
---- TYPES
|
|
TINYINT,INT,INT,SMALLINT,INT,INT,INT,INT,INT,BIGINT,INT,INT
|
|
====
|
|
---- QUERY
|
|
# Test basic bitwise ops
|
|
select bitand(tinyint_col, int_col),
|
|
bitor(smallint_col, bigint_col),
|
|
bitxor(tinyint_col, smallint_col),
|
|
bitxor(int_col, bigint_col),
|
|
bitxor(int_col, bitnot(int_col)),
|
|
bitnot(tinyint_col)
|
|
from alltypes
|
|
where id <= 3
|
|
order by id
|
|
---- RESULTS
|
|
0,0,0,0,-1,-1
|
|
1,11,0,11,-1,-2
|
|
2,22,0,22,-1,-3
|
|
3,31,0,29,-1,-4
|
|
---- TYPES
|
|
INT,BIGINT,SMALLINT,BIGINT,INT,TINYINT
|
|
====
|
|
---- QUERY
|
|
# Test getbit and setbit
|
|
select bigint_col,
|
|
getbit(bigint_col,0),
|
|
getbit(bigint_col,1),
|
|
getbit(bigint_col,int_col),
|
|
setbit(bigint_col,0),
|
|
setbit(bigint_col,1,0)
|
|
from alltypes
|
|
where id <= 3
|
|
order by id
|
|
---- RESULTS
|
|
0,0,0,0,1,0
|
|
10,0,1,1,11,8
|
|
20,0,0,1,21,20
|
|
30,0,1,1,31,28
|
|
---- TYPES
|
|
BIGINT,TINYINT,TINYINT,TINYINT,BIGINT,BIGINT
|
|
====
|
|
---- QUERY
|
|
# Test shifts and rotates
|
|
select int_col,
|
|
shiftright(int_col,1),
|
|
shiftleft(int_col,2),
|
|
rotateleft(int_col,30),
|
|
rotateright(int_col,2)
|
|
from alltypes
|
|
where id <= 3
|
|
order by id
|
|
---- RESULTS
|
|
0,0,0,0,0
|
|
1,0,4,1073741824,1073741824
|
|
2,1,8,-2147483648,-2147483648
|
|
3,1,12,-1073741824,-1073741824
|
|
---- TYPES
|
|
INT,INT,INT,INT,INT
|
|
====
|
|
---- QUERY
|
|
select str_col, match_regex_col from LikeTbl
|
|
where REGEXP_LIKE(str_col, match_regex_col)
|
|
---- 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.*'
|
|
'','.*'
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, no_match_regex_col from LikeTbl
|
|
where REGEXP_LIKE(str_col, no_match_regex_col)
|
|
---- RESULTS
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, match_regex_col from LikeTbl
|
|
where NOT REGEXP_LIKE(str_col, match_regex_col)
|
|
---- RESULTS
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select translate(tmp.str, '\n', '@'), match_like_col
|
|
from (values('one\ntwo' as str), ('\n')) as tmp, LikeTbl
|
|
where tmp.str LIKE match_like_col
|
|
---- RESULTS
|
|
'one@two','%one%'
|
|
'one@two','%two%'
|
|
'one@two','%'
|
|
'one@two','%'
|
|
'@','%'
|
|
'@','%'
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, no_match_regex_col from LikeTbl
|
|
where NOT REGEXP_LIKE(str_col, no_match_regex_col)
|
|
---- 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'
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, match_regex_col from LikeTbl
|
|
where REGEXP_LIKE(upper(str_col), lower(match_regex_col), 'i')
|
|
---- 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.*'
|
|
'','.*'
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, match_regex_col from LikeTbl
|
|
where REGEXP_LIKE(str_col, match_regex_col, 'c')
|
|
---- 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.*'
|
|
'','.*'
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select str_col, match_regex_col from LikeTbl
|
|
where REGEXP_LIKE(upper(str_col), lower(match_regex_col), 'c')
|
|
---- RESULTS
|
|
'','.*'
|
|
---- TYPES
|
|
string, string
|
|
====
|
|
---- QUERY
|
|
select tmp.str from (values
|
|
('testfield' as str),
|
|
('multi\nfield'),
|
|
('multi\nfield\ntwo')) as tmp
|
|
where regexp_like(tmp.str, '^multi.*$')
|
|
---- RESULTS
|
|
----TYPES
|
|
string
|
|
====
|
|
---- QUERY
|
|
select translate(tmp.str, '\n', '@') from (values
|
|
('testfield' as str),
|
|
('multi\nfield'),
|
|
('multi\nfield\ntwo')) as tmp
|
|
where regexp_like(tmp.str, '^multi.*$', 'n')
|
|
---- RESULTS
|
|
'multi@field'
|
|
'multi@field@two'
|
|
---- TYPES
|
|
string
|
|
====
|
|
---- QUERY
|
|
select translate(tmp.str, '\n', '@') from (values
|
|
('testfield' as str),
|
|
('multi\nfield'),
|
|
('multi\nfield\ntwo')) as tmp
|
|
where regexp_like(tmp.str, '^fiel.*$', 'n')
|
|
---- RESULTS
|
|
---- TYPES
|
|
string
|
|
====
|
|
---- QUERY
|
|
select translate(tmp.str, '\n', '@') from (values
|
|
('testfield' as str),
|
|
('multi\nfield'),
|
|
('multi\nfield\ntwo')) as tmp
|
|
where regexp_like(tmp.str, '^fiel.*$', 'm')
|
|
---- RESULTS
|
|
'multi@field'
|
|
'multi@field@two'
|
|
---- TYPES
|
|
string
|
|
====
|
|
---- QUERY
|
|
select translate(tmp.str, '\n', '@') from (values
|
|
('testfield' as str),
|
|
('multi\nfield'),
|
|
('multi\nfield\ntwo')) as tmp
|
|
where regexp_like(tmp.str, '^fiel.*$', 'mn')
|
|
---- RESULTS
|
|
'multi@field'
|
|
'multi@field@two'
|
|
---- TYPES
|
|
string
|
|
====
|
|
---- QUERY
|
|
select translate(tmp.str, '\n', '@') from (values
|
|
('testfield' as str),
|
|
('multi\nfield'),
|
|
('multi\nfield\ntwo')) as tmp
|
|
where regexp_like('', '', '')
|
|
---- RESULTS
|
|
'testfield'
|
|
'multi@field'
|
|
'multi@field@two'
|
|
---- TYPES
|
|
string
|
|
====
|
|
---- QUERY
|
|
select translate(tmp.str, '\n', '@') from (values
|
|
('testfield' as str),
|
|
('multi\nfield'),
|
|
('multi\nfield\ntwo')) as tmp
|
|
where regexp_like('', '')
|
|
---- RESULTS
|
|
'testfield'
|
|
'multi@field'
|
|
'multi@field@two'
|
|
---- TYPES
|
|
string
|
|
====
|
|
---- QUERY
|
|
select split_part(tmp.str, tmp.delim, pos) from (values
|
|
('abc@@def@@ghi' as str, '@@' as delim, 1 as pos),
|
|
('@@123@@456', '@@', 1),
|
|
('@@123@@456', '@@', 2),
|
|
('@@', '@@', 1),
|
|
('abc~!~def~!~!~ghi', '~!~', 3),
|
|
('abc', '@@', 1),
|
|
('xyz!!qwe', '!!', 500),
|
|
(NULL, NULL, 1),
|
|
('abc', NULL, 2),
|
|
(NULL, '@@', 1),
|
|
(NULL, '!!', 1)
|
|
) as tmp
|
|
---- RESULTS
|
|
'abc'
|
|
''
|
|
'123'
|
|
''
|
|
'!~ghi'
|
|
'abc'
|
|
''
|
|
'NULL'
|
|
'NULL'
|
|
'NULL'
|
|
'NULL'
|
|
---- TYPES
|
|
string
|
|
====
|
|
---- QUERY
|
|
# Regression test for IMPALA-2290: non-constant args to btrim in parallel context
|
|
# (i.e. predicates evaluated by scans)
|
|
select count(*) from tpch_parquet.lineitem where btrim(l_comment, l_comment) != ""
|
|
---- RESULTS
|
|
0
|
|
---- TYPES
|
|
BIGINT
|
|
====
|
|
---- QUERY
|
|
# Test for IMPALA-1746: QueryExecState doesn't check for query cancellation or errors
|
|
select dayofyear(trunc('2014-11-11', string_col)) from functional.alltypestiny limit 1;
|
|
---- CATCH
|
|
Invalid Truncate Unit: 0
|
|
====
|
|
---- QUERY
|
|
select regexp_match_count(tmp.str, tmp.pattern) from (values
|
|
('aaa' as str, 'a' as pattern),
|
|
('aaa', 'aa'),
|
|
('aaaa', 'aa'),
|
|
('', ''),
|
|
('', '.*'),
|
|
('abxcy1234a', 'a.x'),
|
|
('abxcy1234a', 'a.x.*a'),
|
|
('abxcy1234a', 'a.x.*k'),
|
|
('aaa123a', 'a*'),
|
|
('aaa123a', 'a?'),
|
|
('a.x.y.*a', 'a\.x\.y\.\*a'),
|
|
('0123456789', '.*'),
|
|
('0123456789', '.+'),
|
|
('0123456789', '.?'),
|
|
('abcab', '(a|ab|abc)'),
|
|
('abc123efg', '[\\d]'),
|
|
('abc123efg', '[\\d]+'),
|
|
('abc123efg', '[\^\\d]'),
|
|
('a1b2c3d4e5!!!', '[\\w\\d]'),
|
|
('a1b2c3d4e5!!!', '\\w\\d')) as tmp
|
|
---- RESULTS
|
|
3
|
|
1
|
|
2
|
|
1
|
|
1
|
|
1
|
|
1
|
|
0
|
|
6
|
|
8
|
|
1
|
|
2
|
|
1
|
|
11
|
|
2
|
|
3
|
|
1
|
|
6
|
|
10
|
|
5
|
|
---- TYPES
|
|
int
|
|
====
|
|
---- QUERY
|
|
select regexp_match_count(tmp.str, tmp.pattern, tmp.start_pos, tmp.params) from (values
|
|
('aaa' as str, 'A' as pattern, 1 as start_pos, 'i' as params),
|
|
('aaa', 'A', 1, 'c'),
|
|
('this\nis\nnewline', '.*', 1, ''),
|
|
('this\nis\nnewline', '.*', 1, 'n'),
|
|
('IPhone\nIPad\nIPod', '^I.*$', 1, ''),
|
|
('IPhone\nIPad\nIPod', '^I.*$', 1, 'n'),
|
|
('IPhone\nIPad\nIPod', '^I.*$', 1, 'm'),
|
|
('iPhone\niPad\niPod', '^I.*$', 1, 'in'),
|
|
('iPhone\niPad\niPod', '^I.*$', 1, 'cin'),
|
|
('iPhone\niPad\niPod', '^I.*$', 1, 'im'),
|
|
('iPhone\niPad\niPod', '^I.*$', 1, 'imn'),
|
|
('aaa', 'a', 3, ''),
|
|
('aaa', 'a', 4, ''),
|
|
('aaa', 'a*', 4, '')) as tmp
|
|
---- RESULTS
|
|
3
|
|
0
|
|
6
|
|
2
|
|
0
|
|
1
|
|
3
|
|
1
|
|
1
|
|
3
|
|
1
|
|
1
|
|
0
|
|
1
|
|
---- TYPES
|
|
int
|
|
====
|
|
---- QUERY
|
|
select regexp_match_count(tmp.str, tmp.pattern, tmp.start_pos, tmp.params) from (values
|
|
('a' as str, 'a' as pattern, -1 as start_pos, '' as params),
|
|
('foobar', 'foobar', 1, 'i'),
|
|
('iPhone\niPad\niPod', '^I.*$', 1, 'imn')) as tmp
|
|
---- CATCH
|
|
Illegal starting position -1
|
|
====
|
|
---- QUERY
|
|
select regexp_match_count(tmp.str, tmp.pattern, tmp.start_pos, tmp.params) from (values
|
|
('a' as str, 'a' as pattern, 1 as start_pos, 'xyz' as params),
|
|
('foobar', 'foobar', 1, 'i'),
|
|
('iPhone\niPad\niPod', '^I.*$', 1, 'imn')) as tmp
|
|
---- CATCH
|
|
Illegal match parameter x
|
|
====
|
|
---- QUERY
|
|
# IMPALA-2147: IS [NOT] DISTINCT FROM and "<=>"
|
|
select NULL <=> NULL
|
|
---- RESULTS
|
|
true
|
|
---- TYPES
|
|
BOOLEAN
|
|
====
|
|
---- QUERY
|
|
select NULL <=> 1
|
|
---- RESULTS
|
|
false
|
|
---- TYPES
|
|
BOOLEAN
|
|
====
|
|
---- QUERY
|
|
select NULL <=> "foo"
|
|
---- RESULTS
|
|
false
|
|
---- TYPES
|
|
BOOLEAN
|
|
====
|
|
---- QUERY
|
|
select NULL IS DISTINCT FROM NULL
|
|
---- RESULTS
|
|
false
|
|
---- TYPES
|
|
BOOLEAN
|
|
====
|
|
---- QUERY
|
|
select NULL IS DISTINCT FROM 3.14
|
|
---- RESULTS
|
|
true
|
|
---- TYPES
|
|
BOOLEAN
|
|
====
|
|
---- QUERY
|
|
select cast(0 as bigint) IS DISTINCT FROM NULL
|
|
---- RESULTS
|
|
true
|
|
---- TYPES
|
|
BOOLEAN
|
|
====
|
|
---- QUERY
|
|
select 2.78 IS DISTINCT FROM 3.14
|
|
---- RESULTS
|
|
true
|
|
---- TYPES
|
|
BOOLEAN
|
|
====
|
|
---- QUERY
|
|
select 2.78 IS NOT DISTINCT FROM 3.14
|
|
---- RESULTS
|
|
false
|
|
---- TYPES
|
|
BOOLEAN
|
|
====
|
|
---- QUERY
|
|
# IMPALA-2184: Codegen does not catch exceptions in FROM_UNIXTIME()
|
|
# Make sure codegen is enabled
|
|
set EXEC_SINGLE_NODE_ROWS_THRESHOLD=0;
|
|
select min(from_unixtime(ts))
|
|
from (values (1429705108399870 as ts), (1429704907057354)) invalid_timestamps;
|
|
---- RESULTS
|
|
''
|
|
---- TYPES
|
|
STRING
|
|
====
|
|
---- QUERY
|
|
# IMPALA-2184/IMPALA-2868
|
|
select CAST(1312822084003 as timestamp) FROM alltypestiny GROUP BY 1
|
|
---- RESULTS
|
|
NULL
|
|
---- TYPES
|
|
timestamp
|
|
====
|
|
---- QUERY
|
|
# base64 encoding/decoding
|
|
select count(*) from functional.alltypes
|
|
where length(string_col) > 0 &&
|
|
length(base64encode(string_col)) <= length(string_col)
|
|
---- RESULTS
|
|
0
|
|
---- TYPES
|
|
BIGINT
|
|
====
|
|
---- QUERY
|
|
# base64 encoding/decoding
|
|
select count (*) from functional.alltypes
|
|
where base64decode(base64encode(string_col)) IS DISTINCT FROM string_col
|
|
---- RESULTS
|
|
0
|
|
---- TYPES
|
|
BIGINT
|
|
====
|
|
---- QUERY
|
|
# base64 decoding a string of invalid length (must be divisible by 4)
|
|
select base64decode('foo')
|
|
---- RESULTS
|
|
'NULL'
|
|
---- TYPES
|
|
STRING
|
|
---- ERRORS
|
|
UDF WARNING: Invalid base64 string; input length is 3, which is not a multiple of 4.
|
|
====
|
|
---- QUERY
|
|
# base64 decoding a string with invalid characters
|
|
select base64decode('abc%')
|
|
---- RESULTS
|
|
'NULL'
|
|
---- TYPES
|
|
STRING
|
|
---- ERRORS
|
|
UDF WARNING: Could not base64 decode input in space 4; actual output length 0
|
|
====
|
|
---- QUERY
|
|
# IMPALA-1731: test parsing infinity values
|
|
select cast('inf' as double), cast('InFinity' as float),
|
|
cast('inf ' as float), cast(' infinity ' as double),
|
|
cast('infinite' as double), cast('1.23inf' as double), cast('1inf' as float)
|
|
---- RESULTS
|
|
Infinity,Infinity,Infinity,Infinity,NULL,NULL,NULL
|
|
---- TYPES
|
|
double,float,float,double,double,double,float
|
|
====
|
|
---- QUERY
|
|
# IMPALA-1731: test parsing NaN values
|
|
select cast('nan' as double), cast('NaN' as float), cast(' nan ' as double),
|
|
cast('nana' as double), cast('1.23nan' as double), cast('1nan' as float)
|
|
---- RESULTS
|
|
NaN,NaN,NaN,NULL,NULL,NULL
|
|
---- TYPES
|
|
double,float,double,double,double,float
|
|
====
|
|
---- QUERY
|
|
# IMPALA-3868: test parsing float with multiple dots
|
|
select cast('1.23' as double), cast('.1.23' as float), cast('123.456.' as double),
|
|
cast('1.23.456' as double), cast('1.23.4.5' as float), cast('0..e' as double)
|
|
---- RESULTS
|
|
1.23,NULL,NULL,NULL,NULL,NULL
|
|
---- TYPES
|
|
double,float,double,double,float,double
|
|
====
|
|
---- QUERY
|
|
# IMPALA-4058: reverse assumed memory was 16-byte aligned; reverse 16, 17, 32, 33, and 64
|
|
# byte strings
|
|
select reverse('123456789abcdef0'), reverse('123456789abcdef01'),
|
|
reverse('123456789abcdef0!@#$%^&*(ABCDEF)'),
|
|
reverse('123456789abcdef0!@#$%^&*(ABCDEF)`'),
|
|
reverse('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ345678901234')
|
|
---- RESULTS
|
|
'0fedcba987654321','10fedcba987654321',')FEDCBA(*&^%$#@!0fedcba987654321','`)FEDCBA(*&^%$#@!0fedcba987654321','432109876543ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba'
|
|
---- TYPES
|
|
STRING,STRING,STRING,STRING,STRING
|
|
====
|