[ https://issues.apache.org/jira/browse/CALCITE-3535?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16985079#comment-16985079 ]
Jin Xing edited comment on CALCITE-3535 at 11/29/19 3:46 PM: ------------------------------------------------------------- I have an idea but not strongly related to this issue ~ Currently EnumerableJoinRule creates the physical enumerable Join operators -- EnumerableHashJoin and EnumerableNestedLoopJoin. But Calcite has a separate rule EnumerableMergeJoin to create EnumerableMergeJoin. Intuitively I have doubt on the name of EnumerableJoinRule.java. It seems to be too general, but it only creates some(NOT ALL) physical JOIN operators. EnumerableJoinRule checks if there's equi-condition, it thinks EnumerableHashJoin is always better than EnumerableNestedLoopJoin. But there might be some scenarios that it's not true. After CALCITE-3546, EnumerableNestedLoopJoin becomes more memory efficient. How do you think ? Ruben ~ was (Author: jinxing6...@126.com): I have an idea but not strongly related to this issue ~ Currently EnumerableJoinRule creates the physical enumerable Join operators -- EnumerableHashJoin and EnumerableNestedLoopJoin. But Calcite has a separate rule EnumerableMergeJoin to create EnumerableMergeJoin. Intuitively I have doubt on the name of EnumerableJoinRule.java. It seems to be too general, but it only creates some(NOT ALL) physical JOIN operators. EnumerableJoinRule checks if there's equi-condition, it thinks EnumerableHashJoin is always better than EnumerableNestedLoopJoin. But there might be some scenarios that it's not true. After CALCITE-3546, EnumerableNestedLoopJoin becomes more memory efficient. How do you think ? Ruben ~ > EnumerableJoinRule: remove unnecessary Filter on top of INNER Join > ------------------------------------------------------------------ > > Key: CALCITE-3535 > URL: https://issues.apache.org/jira/browse/CALCITE-3535 > Project: Calcite > Issue Type: Task > Components: core > Affects Versions: 1.21.0 > Reporter: Ruben Q L > Assignee: Ruben Q L > Priority: Minor > Labels: pull-request-available > Fix For: 1.22.0 > > Time Spent: 20m > Remaining Estimate: 0h > > With the implementation of CALCITE-2973, now EnumerableHashJoin supports all > type of conditions (not just equi joins). However, there is still one > [TODO|https://github.com/apache/calcite/blob/07c1efbb2b42a0e27f9d01968d357d9c1e17cd51/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoinRule.java#L89] > in EnumerableHashJoinRule that, in case of an INNER Join, creates a Filter > with the non-equi conditions on top of the EnumerableHashJoin (created only > with the equi-conditions), this filter is not really needed, since now > EnumerableHashJoinRule can support the full condition: equi and non-equi > items. -- This message was sent by Atlassian Jira (v8.3.4#803005)