EnumerableJoin EnumerableMergeJoin EnumerableSemiJoin all only support 
equi-join condition[1], and there are some
rules that match EquiJoin specificly, like FilterJoinRule will not push 
non-equi join predicates into the join condition[2], so what is the original 
intention that these join enumetables only have equi-join implementation ?

Do you think there is necessity to support non-join conditions for these joins 
? I just found that there is a PR to support a hash-theta-join for theta join 
with equi-join condition[3].


[1] 
https://github.com/apache/calcite/blob/ee83efd360793ef4201f4cdfc2af8d837b76ca69/linq4j/src/main/java/org/apache/calcite/linq4j/EnumerableDefaults.java#L1125
[2] 
https://github.com/apache/calcite/blob/ee83efd360793ef4201f4cdfc2af8d837b76ca69/core/src/main/java/org/apache/calcite/rel/rules/FilterJoinRule.java#L165
[3] https://github.com/apache/calcite/pull/1156

Best,
Danny Chan

Reply via email to