Ruben Quesada Lopez created CALCITE-2930:
--------------------------------------------

             Summary: FilterCorrelateRule on a Correlate with SemiJoinType SEMI 
(or ANTI) throws IllegalStateException
                 Key: CALCITE-2930
                 URL: https://issues.apache.org/jira/browse/CALCITE-2930
             Project: Calcite
          Issue Type: Bug
            Reporter: Ruben Quesada Lopez


FilterCorrelateRule#onMatch method executes the following:
{code:java}
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(),
        !corr.getJoinType().toJoinType().generatesNullsOnRight(),
        aboveFilters,
        leftFilters,
        rightFilters);
    ...
{code}

If the Correlate object has SemiJoinType SEMI (or ANTI), the 
{{corr.getJoinType().toJoinType()}} will throw a IllegalStateException:
{code}
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)
{code} 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to