[
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)