Files
impala/testdata/workloads/functional-query/queries/QueryTest/empty.test
Dimitris Tsirogiannis dd5ecb9deb IMPALA-1960: Illegal reference to non-materialized tuple when query has
an empty select-project-join block

This commit fixes an issue where an aggregation expr may reference a
non-materialized slot if the query contains an empty select-project-join
block. This fix ensures that all the exprs in an aggregation reference
materialized slots/tuples.

Change-Id: Ic2cc9818061b3f06ab1d1cebf4e604352c2df6d1
Reviewed-on: http://gerrit.cloudera.org:8080/348
Reviewed-by: Dimitris Tsirogiannis <dtsirogiannis@cloudera.com>
Tested-by: Internal Jenkins
2015-04-21 23:29:14 +00:00

132 lines
2.8 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
====