[jira] [Updated] (HIVE-24564) Extend PPD filter transitivity to be able to discover new opportunities

2021-01-27 Thread Jesus Camacho Rodriguez (Jira)


 [ 
https://issues.apache.org/jira/browse/HIVE-24564?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jesus Camacho Rodriguez updated HIVE-24564:
---
Fix Version/s: 4.0.0

> Extend PPD filter transitivity to be able to discover new opportunities
> ---
>
> Key: HIVE-24564
> URL: https://issues.apache.org/jira/browse/HIVE-24564
> Project: Hive
>  Issue Type: Improvement
>  Components: Logical Optimizer
>Reporter: Krisztian Kasa
>Assignee: Krisztian Kasa
>Priority: Major
>  Labels: pull-request-available
> Fix For: 4.0.0
>
>  Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> If a predicate references a value column of one of the parent ReduceSink 
> operators of a Join the predicate can not be copied and pushed down to the 
> other side of the join. However if we a parent equijoin exists in the branch 
> of the RS where 
>  1. the referenced value column is a key column of that join
>  2. and the other side of that join expression is the key column of the RS
>  the column in the predicate can be replaced and the new predicate can be 
> pushed down.
> {code:java}
>Join(... = wr_on)
>   / \
> ...  RS(key: wr_on)
>   |
>   Join(ws1.ws_on = ws2.ws_on)
>   (ws1.ws_on, ws2.ws_on, wr_on)
>   / \
>   RS(key:ws_on)  
> RS(key:ws_on)
> (value: wr_on)
>|  
>  |
>Join(ws1.ws_on = wr.wr_on)   
> TS(ws2)
>/\
>  RS(key:ws_on)  RS(key:wr_on)
>||
> TS(ws1)   TS(wr)
> {code}
> A predicate like
> {code}
> (wr_on in (...))
> {code}
> can not be pushed to TS(ws2) because wr_on is not a key column in 
> Join(ws1.ws_on = ws2.ws_on). But we know that wr_on is equals to ws_on 
> because the join from the left branch. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (HIVE-24564) Extend PPD filter transitivity to be able to discover new opportunities

2020-12-23 Thread ASF GitHub Bot (Jira)


 [ 
https://issues.apache.org/jira/browse/HIVE-24564?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated HIVE-24564:
--
Labels: pull-request-available  (was: )

> Extend PPD filter transitivity to be able to discover new opportunities
> ---
>
> Key: HIVE-24564
> URL: https://issues.apache.org/jira/browse/HIVE-24564
> Project: Hive
>  Issue Type: Improvement
>  Components: Logical Optimizer
>Reporter: Krisztian Kasa
>Assignee: Krisztian Kasa
>Priority: Major
>  Labels: pull-request-available
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> If a predicate references a value column of one of the parent ReduceSink 
> operators of a Join the predicate can not be copied and pushed down to the 
> other side of the join. However if we a parent equijoin exists in the branch 
> of the RS where 
>  1. the referenced value column is a key column of that join
>  2. and the other side of that join expression is the key column of the RS
>  the column in the predicate can be replaced and the new predicate can be 
> pushed down.
> {code:java}
>Join(... = wr_on)
>   / \
> ...  RS(key: wr_on)
>   |
>   Join(ws1.ws_on = ws2.ws_on)
>   (ws1.ws_on, ws2.ws_on, wr_on)
>   / \
>   RS(key:ws_on)  
> RS(key:ws_on)
> (value: wr_on)
>|  
>  |
>Join(ws1.ws_on = wr.wr_on)   
> TS(ws2)
>/\
>  RS(key:ws_on)  RS(key:wr_on)
>||
> TS(ws1)   TS(wr)
> {code}
> A predicate like
> {code}
> (wr_on in (...))
> {code}
> can not be pushed to TS(ws2) because wr_on is not a key column in 
> Join(ws1.ws_on = ws2.ws_on). But we know that wr_on is equals to ws_on 
> because the join from the left branch. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (HIVE-24564) Extend PPD filter transitivity to be able to discover new opportunities

2020-12-23 Thread Krisztian Kasa (Jira)


 [ 
https://issues.apache.org/jira/browse/HIVE-24564?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Krisztian Kasa updated HIVE-24564:
--
Description: 
If a predicate references a value column of one of the parent ReduceSink 
operators of a Join the predicate can not be copied and pushed down to the 
other side of the join. However if we a parent equijoin exists in the branch of 
the RS where 
 1. the referenced value column is a key column of that join
 2. and the other side of that join expression is the key column of the RS
 the column in the predicate can be replaced and the new predicate can be 
pushed down.
{code:java}
   Join(... = wr_on)
  / \
...  RS(key: wr_on)
  |
  Join(ws1.ws_on = ws2.ws_on)
  (ws1.ws_on, ws2.ws_on, wr_on)
  / \
  RS(key:ws_on)  
RS(key:ws_on)
(value: wr_on)
   |   |
   Join(ws1.ws_on = wr.wr_on)   
TS(ws2)
   /\
 RS(key:ws_on)  RS(key:wr_on)
   ||
TS(ws1)   TS(wr)
{code}
A predicate like
{code}
(wr_on in (...))
{code}
can not be pushed to TS(ws2) because wr_on is not a key column in 
Join(ws1.ws_on = ws2.ws_on). But we know that wr_on is equals to ws_on because 
the join from the left branch. 

> Extend PPD filter transitivity to be able to discover new opportunities
> ---
>
> Key: HIVE-24564
> URL: https://issues.apache.org/jira/browse/HIVE-24564
> Project: Hive
>  Issue Type: Improvement
>  Components: Logical Optimizer
>Reporter: Krisztian Kasa
>Assignee: Krisztian Kasa
>Priority: Major
>
> If a predicate references a value column of one of the parent ReduceSink 
> operators of a Join the predicate can not be copied and pushed down to the 
> other side of the join. However if we a parent equijoin exists in the branch 
> of the RS where 
>  1. the referenced value column is a key column of that join
>  2. and the other side of that join expression is the key column of the RS
>  the column in the predicate can be replaced and the new predicate can be 
> pushed down.
> {code:java}
>Join(... = wr_on)
>   / \
> ...  RS(key: wr_on)
>   |
>   Join(ws1.ws_on = ws2.ws_on)
>   (ws1.ws_on, ws2.ws_on, wr_on)
>   / \
>   RS(key:ws_on)  
> RS(key:ws_on)
> (value: wr_on)
>|  
>  |
>Join(ws1.ws_on = wr.wr_on)   
> TS(ws2)
>/\
>  RS(key:ws_on)  RS(key:wr_on)
>||
> TS(ws1)   TS(wr)
> {code}
> A predicate like
> {code}
> (wr_on in (...))
> {code}
> can not be pushed to TS(ws2) because wr_on is not a key column in 
> Join(ws1.ws_on = ws2.ws_on). But we know that wr_on is equals to ws_on 
> because the join from the left branch. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)