Files
impala/testdata/workloads/functional-query/queries/QueryTest/empty.test
Alex Behm 6866c3045b IMPALA-2430: Mark unused collection-typed slots as non-materialized.
The bug: During planning, when generating an EmptySetNode for a query
block (or a portion thereof) that contained relative table refs we still
populated the corresponding collection-typed slots in the parent scan,
ultimately hitting a sanity DCHECK in the BE.

The fix: Since those collection-typed slots are never used, the
corresponding parent scan should not materilaize them. When creating
an EmptySetNode we mark the appropriate collection-typed slots
as non-materialized.

Change-Id: If0b9c37c46c0e27be7f1b47c395c8c90b499e323
Reviewed-on: http://gerrit.cloudera.org:8080/1092
Reviewed-by: Alex Behm <alex.behm@cloudera.com>
Tested-by: Internal Jenkins
2015-10-01 13:58:43 -07:00

186 lines
4.1 KiB
Plaintext

====
---- QUERY
# testtbl is empty
select * from testtbl
---- TYPES
bigint, string, int
---- RESULTS
====
---- QUERY
# month ends at 12
select int_col from alltypessmall where month > 100
---- TYPES
int
---- RESULTS
====
---- QUERY
# Empty partitioned table test
select field from emptytable
---- TYPES
string
---- RESULTS
====
---- QUERY
# Constant conjunct.
select t1.id, t2.id
from functional.alltypestiny t1
left outer join functional.alltypes t2
on t1.id = t2.id
where false
---- TYPES
int, int
---- RESULTS
====
---- QUERY
# Constant conjunct in query block with an aggregation.
select count(int_col), avg(double_col), count(*)
from functional.alltypes
where null
---- TYPES
bigint, double, bigint
---- RESULTS
0,NULL,0
====
---- QUERY
# Constant conjunct in inline view.
select e.id, f.id
from functional.alltypessmall f
inner join
(select t1.id
from functional.alltypestiny t1
left outer join functional.alltypes t2
on t1.id = t2.id
where 1 + 3 > 10) e
on e.id = f.id
---- TYPES
int, int
---- RESULTS
====
---- QUERY
# Limit 0
select t1.id, t2.id
from functional.alltypestiny t1
left outer join functional.alltypes t2
on t1.id = t2.id
limit 0
---- TYPES
int, int
---- RESULTS
====
---- QUERY
# Limit 0 in query block with an aggregation
select count(int_col), avg(double_col), count(*)
from functional.alltypes
limit 0
---- TYPES
bigint, double, bigint
---- RESULTS
====
---- QUERY
# Limit 0 in inline view
select e.id, f.id
from functional.alltypessmall f
inner join
(select t1.id
from functional.alltypestiny t1
left outer join functional.alltypes t2
on t1.id = t2.id
limit 0) e
on e.id = f.id
---- TYPES
int, int
---- RESULTS
====
---- QUERY
# IMPALA-1234: Analytic with constant empty result set failed precondition check in FE
select MIN(int_col) OVER () FROM alltypes limit 0
---- RESULTS
---- TYPES
INT
====
---- QUERY
# IMPALA-1524: Materialize all tuples produced by an EmptySet node.
SELECT
COALESCE(580, MAX(t2.year), 150) AS int_col FROM (
SELECT
t1.bool_col,
COALESCE(LAG(-826, 69) OVER (
ORDER BY t1.bool_col DESC, COALESCE(t2.int_col, t2.smallint_col, t2.id)), 279, -764) AS int_col,
COALESCE(t2.int_col, t2.smallint_col, t2.id) AS int_col_2
FROM functional.alltypestiny t1
INNER JOIN functional.alltypestiny t2
ON ((t2.bigint_col) = (t1.id)) AND ((t2.timestamp_col) = (t1.timestamp_col))) t1
INNER JOIN functional.alltypes t2 ON (t2.year) = (t1.int_col_2)
WHERE (-339.22) IN (-922.68, -254.84)
---- RESULTS
580
---- TYPES
INT
====
---- QUERY
# IMPALA-1960: Exprs in the aggregation that reference slots from an inline view when
# the select stmt has an empty select-project-join portion.
select sum(T.id), count(T.int_col)
from
(select id, int_col, bigint_col from functional.alltypestiny) T
where false
---- RESULTS
NULL,0
---- TYPES
BIGINT, BIGINT
====
---- QUERY
# IMPALA-2088: Test empty union operands with analytic functions.
select lead(-496, 81) over (order by t1.double_col desc, t1.id asc)
from functional.alltypestiny t1 where 5 = 6
union
select 794.67
from functional.alltypes t1 where 5 = 6
union all
select coalesce(10.4, int_col)
from functional.alltypes where false
---- RESULTS
---- TYPES
DECIMAL
====
---- QUERY
# IMPALA-2406: condition filters out all rows from subquery during planning.
select *
from (select 10 as i, 2 as j, '2013' as s) as t
where t.i < 10;
---- RESULTS
---- TYPES
TINYINT,TINYINT,STRING
====
---- QUERY
# IMPALA-2430: Test empty blocks containing relative table refs.
select c_custkey, v1.cnt, v2.o_orderkey, v3.l_linenumber, v4.cnt
from tpch_nested_parquet.customer c
left outer join
(select count(*) cnt from c.c_orders
where false) v1
left outer join
(select o_orderkey from c.c_orders
where 20 < 10) v2
left outer join
(select l_linenumber from c.c_orders.o_lineitems
where "a" in ("b", "c")) v3
left outer join
(select count(*) cnt from c.c_orders o left outer join
(select l_linenumber from o.o_lineitems
where null) nv) v4
where c_custkey < 10
---- RESULTS
1,0,NULL,NULL,6
2,0,NULL,NULL,7
3,0,NULL,NULL,0
4,0,NULL,NULL,20
5,0,NULL,NULL,4
6,0,NULL,NULL,0
7,0,NULL,NULL,16
8,0,NULL,NULL,13
9,0,NULL,NULL,0
---- TYPES
BIGINT,BIGINT,BIGINT,INT,BIGINT
====