[ https://issues.apache.org/jira/browse/HIVE-24564?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Krisztian Kasa resolved HIVE-24564. ----------------------------------- Resolution: Fixed Pushed to master. ThanksĀ [~jcamachorodriguez] for review. > 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: 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)