====
---- QUERY
# IMPALA-4866: Hash join node does not apply limits correctly
# Test that a join query applies the limits correctly when output_batch gets
# populated in OutputNullAwareProbe. If the output_batch is full after invoking
# this function, the ReachedLimit check wont be be correctly applied without this
# change
set batch_size=6;
select id, int_col, bigint_col from functional.alltypesagg a
where int_col not in (select int_col from functional.alltypestiny t
where a.id = t.id) limit 10995;
---- RUNTIME_PROFILE
row_regex: .*RowsProduced: 10.99..\W10995\W
====
---- QUERY
# Test to verify that is limit_ is correctly enforced when
# output_batch is at AtCapacity.
set batch_size=6;
set buffer_pool_limit=180m;
select * from tpch.lineitem t1 full outer join tpch.lineitem t2 on
t1.l_orderkey = t2.l_orderkey limit 10;
---- RUNTIME_PROFILE
row_regex: .*RowsProduced: 10 .
====
---- QUERY
# IMPALA-4866: Hash join node does not apply limits correctly
# Test to ensure that the limit is correctly applied on a right
# join. Without this change this query returns 10 rows(batch_size)
set batch_size=10;
select straight_join t1.id, t2.id from functional.alltypes t1
right join functional.alltypes t2 on t1.id = t2.int_col + 100000
limit 5;
---- RUNTIME_PROFILE
row_regex: .*RowsProduced: 5 .
====
---- QUERY
# IMPALA-4866: Hash join node does not apply limits correctly
# Test to ensure that the limit is correctly applied on a inner
# join. Without this change this query returns 10 rows(batch_size)
set batch_size=10;
select straight_join t1.id, t2.id from functional.alltypes t1
inner join functional.alltypes t2 on t1.id = t2.id limit 5;
---- RUNTIME_PROFILE
row_regex: .*RowsProduced: 5 .
====
