Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
1.17.0
Description
Calcite enumerable convention offers four ways to perform a join over two inputs:
- EnumerableJoin
- EnumerableThetaJoin
- EnumerableSemiJoin
- EnumerableCorrelate
The algorithms that are used by the afforementioned operators :
- org.apache.calcite.linq4j.EnumerableDefaults#join_
- org.apache.calcite.linq4j.EnumerableDefaults#thetaJoin
- org.apache.calcite.linq4j.EnumerableDefaults#semiJoin
- org.apache.calcite.linq4j.EnumerableDefaults#correlateJoin
in many cases can preserves the order of the left (outer) input. However, this information is not reflected in the RelTraitSet and thus cannot be exploited by the optimizer. Without this information, sort operators following the join cannot be removed (using SortRemoveRule) leading to suboptimal plans.
Attachments
Issue Links
- links to