mirror of
https://github.com/apache/impala.git
synced 2026-01-29 12:00:20 -05:00
This change packs StringValue and CollectionValue slots to ensure they now occupy 12 bytes instead of 16 bytes. This reduces the memory requirements and improves the performance. Since Kudu tuples are populated using a memcopy, 4 bytes of padding was added to StringSlots in Kudu tables. Testing: Ran core tests. Added static asserts to ensure the value sizes are as expected. Performance tests on TPCH-40 produced 3.96% improvement. Change-Id: I32f3b06622c087e4aa288e8db1bf4581b10d386a Reviewed-on: http://gerrit.cloudera.org:8080/11599 Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com> Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
112 lines
3.2 KiB
Plaintext
112 lines
3.2 KiB
Plaintext
# This file contains tests where we don't want the python test framework to supply the
|
|
# debug_action value because the test won't succeed with all possible debug_action values.
|
|
====
|
|
---- QUERY
|
|
# Tests for the case where a spilled partition has 0 probe rows and so we don't build the
|
|
# hash table in a partitioned hash join. Always runs with the minimum reservation to force
|
|
# spilling.
|
|
# INNER JOIN
|
|
set debug_action="-1:OPEN:SET_DENY_RESERVATION_PROBABILITY@1.0";
|
|
select straight_join count(*)
|
|
from
|
|
lineitem a, lineitem b
|
|
where
|
|
a.l_partkey = 1 and
|
|
a.l_orderkey = b.l_orderkey;
|
|
---- TYPES
|
|
BIGINT
|
|
---- RESULTS
|
|
173
|
|
---- RUNTIME_PROFILE
|
|
row_regex: .*NumHashTableBuildsSkipped: .* \([1-9][0-9]*\)
|
|
====
|
|
---- QUERY
|
|
# spilled partition with 0 probe rows, NULL AWARE LEFT ANTI JOIN
|
|
set debug_action="-1:OPEN:SET_DENY_RESERVATION_PROBABILITY@1.0";
|
|
select straight_join count(*)
|
|
from
|
|
lineitem a
|
|
where
|
|
a.l_partkey not in (select l_partkey from lineitem where l_partkey > 10)
|
|
and a.l_partkey < 1000;
|
|
---- TYPES
|
|
BIGINT
|
|
---- RESULTS
|
|
287
|
|
---- RUNTIME_PROFILE
|
|
row_regex: .*NumHashTableBuildsSkipped: .* \([1-9][0-9]*\)
|
|
====
|
|
---- QUERY
|
|
# spilled partition with 0 probe rows, RIGHT OUTER JOIN
|
|
set debug_action="-1:OPEN:SET_DENY_RESERVATION_PROBABILITY@1.0";
|
|
select straight_join count(*)
|
|
from
|
|
supplier right outer join lineitem on s_suppkey = l_suppkey
|
|
where s_acctbal > 0 and s_acctbal < 10;
|
|
---- TYPES
|
|
BIGINT
|
|
---- RESULTS
|
|
12138
|
|
---- RUNTIME_PROFILE
|
|
row_regex: .*NumHashTableBuildsSkipped: .* \([1-9][0-9]*\)
|
|
====
|
|
---- QUERY
|
|
# spilled partition with 0 probe rows, RIGHT ANTI JOIN
|
|
set debug_action="-1:OPEN:SET_DENY_RESERVATION_PROBABILITY@1.0";
|
|
with x as (select * from supplier limit 10)
|
|
select straight_join count(*)
|
|
from
|
|
x right anti join lineitem on s_suppkey + 100 = l_suppkey;
|
|
---- TYPES
|
|
BIGINT
|
|
---- RESULTS
|
|
5995258
|
|
---- RUNTIME_PROFILE
|
|
row_regex: .*NumHashTableBuildsSkipped: .* \([1-9][0-9]*\)
|
|
====
|
|
---- QUERY
|
|
# Aggregation query that will OOM and fail to spill because of IMPALA-3304 without
|
|
# any help from DEBUG_ACTION.
|
|
set mem_limit=80m;
|
|
select l_orderkey, group_concat(l_comment) comments
|
|
from lineitem
|
|
group by l_orderkey
|
|
order by comments desc
|
|
limit 5
|
|
---- CATCH
|
|
Memory limit exceeded
|
|
====
|
|
---- QUERY
|
|
# Top-N query with large limit that will OOM because spilling is not implemented:
|
|
# IMPALA-3471. It does not need any help from DEBUG_ACTION.
|
|
set topn_bytes_limit=-1;
|
|
set mem_limit=100m;
|
|
select *
|
|
from lineitem
|
|
order by l_orderkey desc
|
|
limit 6000000
|
|
---- CATCH
|
|
Memory limit exceeded
|
|
====
|
|
---- QUERY
|
|
# Hash join that will fail to repartition and therefore fail from out-of-memory because
|
|
# of a large number of duplicate keys on the build side: IMPALA-4857. It does not need
|
|
# any help from DEBUG_ACTION.
|
|
set mem_limit=250m;
|
|
select straight_join *
|
|
from supplier join /* +broadcast */ lineitem on s_suppkey = l_linenumber
|
|
order by l_tax desc
|
|
limit 5
|
|
---- CATCH
|
|
row_regex:.*Cannot perform hash join at node with id .*. Repartitioning did not reduce the size of a spilled partition.*
|
|
====
|
|
---- QUERY
|
|
# Analytic query with certain kinds of large windows can't be spilled: IMPALA-5738. It
|
|
# does not need any help from DEBUG_ACTION.
|
|
set mem_limit=100m;
|
|
select avg(l_tax) over (order by l_orderkey rows between 100000000 preceding and 10000000 following)
|
|
from lineitem
|
|
---- CATCH
|
|
Memory limit exceeded
|
|
====
|