Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-988

FilterToProjectUnifyRule.invert(MutableRel, MutableRel, MutableProject) works incorrectly

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • 1.6.0
    • None
    • None

    Description

      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.

            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;
              }
            }
      

      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.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            maryannxue Wei Xue
            maryannxue Wei Xue
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment