mirror of
https://github.com/apache/impala.git
synced 2026-01-10 18:00:14 -05:00
We need to carefully check that the intermediate value fits in an int64_t and the final size fits in an int. If they don't we raise an error and fail the query. Testing: Added a couple of backend tests to exercise the overflow check code paths. Change-Id: I872ce77bc2cb29116881c27ca2a5216f722cdb2a Reviewed-on: http://gerrit.cloudera.org:8080/11889 Reviewed-by: Thomas Marshall <thomasmarshall@cmu.edu> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
234 lines
9.7 KiB
Plaintext
234 lines
9.7 KiB
Plaintext
====
|
|
---- QUERY
|
|
# IMPALA-1619 group_concat() error
|
|
select length(group_concat(l_comment, "!")) from (
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem) a
|
|
---- CATCH
|
|
Concatenated string length larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
# IMPALA-2620: Allocation by UDF/UDA need to take into account of memory limit.
|
|
SET mem_limit=512m;
|
|
select length(group_concat(l_comment, "!")) from (
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem union all
|
|
select l_comment from tpch_parquet.lineitem) a
|
|
---- CATCH
|
|
Memory limit exceeded
|
|
====
|
|
---- QUERY
|
|
#IMPALA-3350: Results of string functions can exceed 1GB.
|
|
select length(concat_ws(',', s, s, s, s)) from (
|
|
select group_concat(l_comment, "!") s from (
|
|
select l_comment from tpch.lineitem union all
|
|
select l_comment from tpch.lineitem) t1
|
|
) t2
|
|
---- CATCH
|
|
String length larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
select length(repeat(s, 10)) from (
|
|
select group_concat(l_comment, "!") s from (
|
|
select l_comment from tpch.lineitem union all
|
|
select l_comment from tpch.lineitem) t1
|
|
) t2
|
|
---- CATCH
|
|
repeat() result is larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
select length(lpad(s, 1073741830, '!')) from (
|
|
select group_concat(l_comment, "!") s from (
|
|
select l_comment from tpch.lineitem union all
|
|
select l_comment from tpch.lineitem) t1
|
|
) t2
|
|
---- CATCH
|
|
String length larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
select length(rpad(s, 1073741830, '~')) from (
|
|
select group_concat(l_comment, "!") s from (
|
|
select l_comment from tpch.lineitem union all
|
|
select l_comment from tpch.lineitem) t1
|
|
) t2
|
|
---- CATCH
|
|
String length larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
select space(1073741830);
|
|
---- CATCH
|
|
String length larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
select length(regexp_replace(s, '.', '++++++++')) from (
|
|
select group_concat(l_comment, "!") s from (
|
|
select l_comment from tpch.lineitem union all
|
|
select l_comment from tpch.lineitem) t1
|
|
) t2
|
|
---- CATCH
|
|
String length larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
select length(replace(s, ' ', '++++++++')) from (
|
|
select group_concat(l_comment, "!") s from (
|
|
select l_comment from tpch.lineitem union all
|
|
select l_comment from tpch.lineitem) t1
|
|
) t2
|
|
---- RESULTS
|
|
625718301
|
|
=====
|
|
---- QUERY
|
|
select replace(x, '+', '000') from (select (replace(s, ' ', '++++++++')) x from (
|
|
select group_concat(l_comment, "!") s from (
|
|
select l_comment from tpch.lineitem union all
|
|
select l_comment from tpch.lineitem) t1
|
|
) t2) t3;
|
|
---- CATCH
|
|
String length larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
select trunc(timestamp_col, space(1073741830)) from functional.alltypes
|
|
---- CATCH
|
|
String length larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
select extract(timestamp_col, space(1073741830)) from functional.alltypes
|
|
---- CATCH
|
|
String length larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
select length(madlib_encode_vector(concat_ws(',', s, s, s, s))) from (
|
|
select group_concat(l_comment, "!") s from (
|
|
select l_comment from tpch.lineitem union all
|
|
select l_comment from tpch.lineitem) t1
|
|
) t2
|
|
---- CATCH
|
|
String length larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
select length(madlib_decode_vector(concat_ws(',', s, s, s, s))) from (
|
|
select group_concat(l_comment, "!") s from (
|
|
select l_comment from tpch.lineitem union all
|
|
select l_comment from tpch.lineitem) t1
|
|
) t2
|
|
---- CATCH
|
|
String length larger than allowed limit of 1 GB character data
|
|
=====
|
|
---- QUERY
|
|
# IMPALA-4874: Generate a large row made up of multiple large strings to test RPC
|
|
# transmission. This uses hashing to make this difficult to compress,
|
|
# which results in a larger row batch.
|
|
select length(group_concat(h, "!")),
|
|
length(group_concat(h, "-"))
|
|
from (
|
|
select cast(fnv_hash(concat(l_comment, 'a')) as string) as h from tpch_parquet.lineitem union all
|
|
select cast(fnv_hash(concat(l_comment, 'b')) as string) as h from tpch_parquet.lineitem union all
|
|
select cast(fnv_hash(concat(l_comment, 'c')) as string) as h from tpch_parquet.lineitem union all
|
|
select cast(fnv_hash(concat(l_comment, 'd')) as string) as h from tpch_parquet.lineitem union all
|
|
select cast(fnv_hash(concat(l_comment, 'e')) as string) as h from tpch_parquet.lineitem) a;
|
|
---- TYPES
|
|
INT,INT
|
|
---- RESULTS
|
|
611468161,611468161
|
|
=====
|
|
---- QUERY
|
|
select repeat('the quick brown fox', 1024 * 1024 * 100)
|
|
---- CATCH
|
|
repeat() result is larger than allowed limit of 1 GB character data
|
|
=====
|