[ https://issues.apache.org/jira/browse/HIVE-12478?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15047639#comment-15047639 ]
Laljo John Pullokkaran commented on HIVE-12478: ----------------------------------------------- Once HIVE-11918, HIVE-11110 goes in we should invoke PPD, JoinTransitive Inference & Constant folding as one rule. This rule would fire recursively until all the transitive inference is done. One of the challenge is to recognize that we have pushed a filter already and not try to push it again. We have three options: 1. Use RelMDPredicates in calcite 2. Implement a metadata provider that can answer if a predicate got already pushed (similar to RelMDPredicates in calcite) 3. Enhance RuleRegistry to capture if an expression already pushed pat an operator. #1 doesn't work when expressions might have transformed due to constant folding #2 would be better; but it kind of goes against current Calcite design which assumes metadata to be derivable (i.e no state maintenance) That leaves us with #3. [~jcamachorodriguez] Could you take a look > Improve Hive/Calcite Trasitive Predicate inference > -------------------------------------------------- > > Key: HIVE-12478 > URL: https://issues.apache.org/jira/browse/HIVE-12478 > Project: Hive > Issue Type: Bug > Affects Versions: 1.2.1 > Reporter: Laljo John Pullokkaran > Assignee: Laljo John Pullokkaran > > HiveJoinPushTransitivePredicatesRule does not pull up predicates for > transitive inference if they contain more than one column. > EXPLAIN select * from srcpart join (select ds as ds, ds as `date` from > srcpart where (ds = '2008-04-08' and value=1)) s on (srcpart.ds = s.ds); -- This message was sent by Atlassian JIRA (v6.3.4#6332)