Ian Bertolacci created CALCITE-5272: ---------------------------------------
Summary: RelBuilder/RexBuilder allow creation of invalid CASE expression Key: CALCITE-5272 URL: https://issues.apache.org/jira/browse/CALCITE-5272 Project: Calcite Issue Type: Bug Affects Versions: 1.30.0 Reporter: Ian Bertolacci It is possible (and easy) to create the invalid CASE expression†{{`CASE ELSE 1 END`}} using either RelBuilder or RexBuilder. (†Or at least and expression which Calcite then cannot parse.) {code:scala} val relBuilder: RelBuilder = ... val rexBuilder: RexBuilder = ... val typeFactory = relBuilder.getTypeFactory // Invalid case expression that can be built val caseExprRel = relBuilder.call(SqlStdOperatorTable.CASE, relBuilder.literal(1)) val caseExprRex = rexBuilder.makeCall(SqlStdOperatorTable.CASE, rexBuilder. makeBigintLiteral(BigDecimal.valueOf(1))) // RelNode tree with project containing invalid case expressions val node = relBuilder.values( java.util.Arrays.asList( java.util.Arrays.asList(relBuilder.literal(0)) ), typeFactory.builder().add("x", typeFactory.createSqlType(SqlTypeName.INTEGER)).build() ) .project(caseExprRel, caseExprRex) .build() {code} Gives the RelNode tree: {code} 1:LogicalProject($f0=[CASE(1)], $f1=[CASE(1:BIGINT)]) 0:LogicalValues(tuples=[[{ 0 }]]) {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)