[ 
https://issues.apache.org/jira/browse/CALCITE-988?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maryann Xue resolved CALCITE-988.
---------------------------------
    Resolution: Fixed

> FilterToProjectUnifyRule.invert(MutableRel, MutableRel, MutableProject) works 
> incorrectly
> -----------------------------------------------------------------------------------------
>
>                 Key: CALCITE-988
>                 URL: https://issues.apache.org/jira/browse/CALCITE-988
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Maryann Xue
>            Assignee: Maryann Xue
>            Priority: Minor
>             Fix For: 1.6.0
>
>         Attachments: CALCITE-988.patch
>
>
> The below code does not "invert" but only projects what's been projected. A 
> type mismatch exception would be thrown when creating the new MutableProject.
> {code}
>       for (Ord<RexNode> expr : Ord.zip(project.getProjects())) {
>         if (expr.e instanceof RexInputRef) {
>           final int target = ((RexInputRef) expr.e).getIndex();
>           exprList.set(expr.i,
>               rexBuilder.ensureType(expr.e.getType(),
>                   RexInputRef.of(target, input.rowType),
>                   false));
>         } else {
>           throw MatchFailed.INSTANCE;
>         }
>       }
> {code}
> However, the exposure of this bug is quite low. Actually I couldn't find a 
> query that would go through this code path, coz looks like any query that has 
> a Filter will have a Project on top of that, which makes it go the other 
> branch and use the other invert() method. A filtered view will produce a 
> Filter on top of another Filter thus can reproduce this problem.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to