Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.18.0, 1.19.0
-
None
Description
FilterCorrelateRule#onMatch method executes the following:
public void onMatch(RelOptRuleCall call) { final Filter filter = call.rel(0); final Correlate corr = call.rel(1); ... RelOptUtil.classifyFilters( corr, aboveFilters, JoinRelType.INNER, false, !corr.getJoinType().toJoinType().generatesNullsOnLeft(), // *** HERE! !corr.getJoinType().toJoinType().generatesNullsOnRight(), // *** HERE! aboveFilters, leftFilters, rightFilters); ...
If the Correlate object has SemiJoinType SEMI (or ANTI), the corr.getJoinType().toJoinType() will throw a IllegalStateException:
Caused by: java.lang.IllegalStateException: Unable to convert SEMI to JoinRelType at org.apache.calcite.sql.SemiJoinType.toJoinType(SemiJoinType.java:83) at org.apache.calcite.rel.rules.FilterCorrelateRule.onMatch(FilterCorrelateRule.java:89) at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:205)
Attachments
Issue Links
- links to