[ 
https://issues.apache.org/jira/browse/CALCITE-5720?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17726894#comment-17726894
 ] 

Benchao Li commented on CALCITE-5720:
-------------------------------------

I looked into this again, {{JoinPushTransitivePredicatesRule}}'s comment has 
explained the reason in some degree, and I think it's reasonable to keep it out 
of core ruleset for now since the limitation of simplification.

And I'm thinking that current issue is still worth to solve because we are 
aiming to push down predicates above the {{Join}} to both sides. 
{{JoinPushTransitivePredicatesRule}} can do more than this, but the goal is 
different, it's trying to pull up predicates from one side, and push to another 
side.

What do you think about this?

> improve FilterJoinRule to push filter into both join sides
> ----------------------------------------------------------
>
>                 Key: CALCITE-5720
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5720
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>            Reporter: Suhan Mao
>            Priority: Major
>
> In flink source code, 
> [FlinkFilterJoinRule|https://github.com/apache/flink/blob/master/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/logical/FlinkFilterJoinRule.java],
>  the FilterJoinRule is improved to handle more cases:
> for the above filter of inner/left/right join or the join condition of inner 
> join, the predicate which field references are all from one side join 
> condition can be pushed into another join side. Such as:
> `SELECT * FROM MyTable1 join MyTable2 ON a1 = a2 AND a1 = 2`
> `SELECT * FROM MyTable1, MyTable2 WHERE a1 = a2 AND a1 = 2 `
>  
> I would like to add the improvement to exist FilterJoinRule class.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to