[jira] [Updated] (HIVE-24564) Extend PPD filter transitivity to be able to discover new opportunities
[ 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
[ 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
[ 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)