Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
None
-
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.