Mihai Budiu created CALCITE-6742:
------------------------------------
Summary: StandardConvertletTable.convertCall loses casts from ROW
comparisons
Key: CALCITE-6742
URL: https://issues.apache.org/jira/browse/CALCITE-6742
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.38.0
Reporter: Mihai Budiu
The code in convertCall looks like this:
{code:java}
if (op.kind == SqlKind.EQUALS) {
final RexNode expr0 = RexUtil.removeCast(exprs.get(0));
final RexNode expr1 = RexUtil.removeCast(exprs.get(1));
if (expr0.getKind() == SqlKind.ROW && expr1.getKind() == SqlKind.ROW) {
final RexCall call0 = (RexCall) expr0;
final RexCall call1 = (RexCall) expr1;
final List<RexNode> eqList = new ArrayList<>();
Pair.forEach(call0.getOperands(), call1.getOperands(), (x, y) ->
eqList.add(rexBuilder.makeCall(call.getParserPosition(), op, x,
y)));
return RexUtil.composeConjunction(rexBuilder, eqList);
}
}
{code}
The casts removed from expr0 and expr1 are simply ignored. They should not be
stripped out. In the worst case, they should be decomposed into field-wise
casts and inserted on the corresponding field comparisons.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)