[ https://issues.apache.org/jira/browse/CALCITE-2973?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16823090#comment-16823090 ]
Lai Zhou edited comment on CALCITE-2973 at 4/23/19 2:16 AM: ------------------------------------------------------------ [~zabetak],[~hyuan], should we keep EnumerableJoin as an `EquiJoin`or change it to extend `Join`? I have a try to change it to extend `Join`, but the FilterJoinRule can't work. It can't push down the remain condition into the inputs of the join correctly. see [https://github.com/apache/calcite/blob/ee83efd360793ef4201f4cdfc2af8d837b76ca69/core/src/main/java/org/apache/calcite/rel/rules/FilterJoinRule.java#L165] If we keep EnumerableJoin as an `EquiJoin`, we need to introduce a field for EnumerableJoin to reference the join condition, as we need to extract remain part condition of it.So what's the better way? was (Author: hhlai1990): [~zabetak],[~hyuan], should we keep EnumerableJoin as an `EquiJoin`or change it to extend `Join`? I have a try to change it to extend `Join`, but the FilterJoinRule can't work. It can't push down the remain condition into a filter after an inner join correctly. see [https://github.com/apache/calcite/blob/ee83efd360793ef4201f4cdfc2af8d837b76ca69/core/src/main/java/org/apache/calcite/rel/rules/FilterJoinRule.java#L165|https://github.com/apache/calcite/blob/ee83efd360793ef4201f4cdfc2af8d837b76ca69/core/src/main/java/org/apache/calcite/rel/rules/FilterJoinRule.java#L165] If we keep EnumerableJoin as an `EquiJoin`, we need to introduce a field for EnumerableJoin to reference the join condition, as we need to extract remain part condition of it.So what's the better way? > Allow theta joins that have equi conditions to be executed using a hash join > algorithm > -------------------------------------------------------------------------------------- > > Key: CALCITE-2973 > URL: https://issues.apache.org/jira/browse/CALCITE-2973 > Project: Calcite > Issue Type: New Feature > Components: core > Affects Versions: 1.19.0 > Reporter: Lai Zhou > Priority: Minor > Labels: pull-request-available > Time Spent: 10m > Remaining Estimate: 0h > > Now the EnumerableMergeJoinRule only supports an inner and equi join. > If users make a theta-join query for a large dataset (such as 10000*10000), > the nested-loop join process will take dozens of time than the sort-merge > join process . > So if we can apply merge-join or hash-join rule for a theta join, it will > improve the performance greatly. -- This message was sent by Atlassian JIRA (v7.6.3#76005)