[ 
https://issues.apache.org/jira/browse/HIVE-26524?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17612291#comment-17612291
 ] 

Krisztian Kasa commented on HIVE-26524:
---------------------------------------

The [PR #3588|https://github.com/apache/hive/pull/3588] changes some existing q 
test:
* antijoin.q - The predicate {{b.value > 'val_1'}} was changed to {{b.value is 
null}} in query
{code}
explain select a.key from t1_n55 a left join t2_n33 b on a.key = b.key where 
b.key is null and b.value > 'val_1';
{code}
because the goal is testing anti join however the original predicate was 
evaluated to always false: when {{b.key is null}} is true then {{a.key = 
b.key}} is false and the values coming from the right are nulls so {{b.value > 
'val_1'}} can not be true.
* some auto_join tests - joins which has always false conditions like 
{code}
ON src1.key = src2.key AND src1.key < 10 AND src2.key > 10
{code}
are removed due to the optimization but the goal of the tests are testing auto 
join conversion so the condition was changed to filter out the majority of the 
rows but not all of them.


> Use Calcite to remove sections of a query plan known never produces rows
> ------------------------------------------------------------------------
>
>                 Key: HIVE-26524
>                 URL: https://issues.apache.org/jira/browse/HIVE-26524
>             Project: Hive
>          Issue Type: Improvement
>          Components: CBO
>            Reporter: Krisztian Kasa
>            Assignee: Krisztian Kasa
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 5h 20m
>  Remaining Estimate: 0h
>
> Calcite has a set of rules to remove sections of a query plan known never 
> produces any rows. In some cases the whole plan can be removed. Such plans 
> are represented with a single {{Values}} operators with no tuples. ex.:
> {code:java}
> select y + 1 from (select a1 y, b1 z from t1 where b1 > 10) q WHERE 1=0
> {code}
> {code:java}
> HiveValues(tuples=[[]])
> {code}
> Other cases when plan has outer join or set operators some branches can be 
> replaced with empty values moving forward in some cases the join/set operator 
> can be removed
> {code:java}
> select a2, b2 from t2 where 1=0
> union
> select a1, b1 from t1
> {code}
> {code:java}
> HiveAggregate(group=[{0, 1}])
>   HiveTableScan(table=[[default, t1]], table:alias=[t1])
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to