Brandon Chong created CALCITE-6506: -------------------------------------- Summary: Incorrect RelDataType generated for IN Subquery Key: CALCITE-6506 URL: https://issues.apache.org/jira/browse/CALCITE-6506 Project: Calcite Issue Type: Bug Reporter: Brandon Chong
If a user writes a query like: {{select * from cp."iceberg/orders/orders.parquet" where o_orderkey IN (1, 2, 3)}} It get's rewritten to use a LogicalValues with RelDataType nullable INTEGER row type. The problem is that it's actually NOT NULL. You can see the issue in SqlToRelConverter: {{final RelDataType targetRowType = SqlTypeUtil.promoteToRowType(typeFactory, validator.getValidatedNodeType(leftKeyNode), null); final boolean notIn = call.getOperator().kind == SqlKind.NOT_IN; converted = convertExists(query, RelOptUtil.SubQueryType.IN, subQuery.logic, notIn, targetRowType);}} Note that it's using the type of the leftKeyNode and not right key node. For example: A IN (B, C, D) ... it's using typeof(A) instead of typeof(B, C, D). -- This message was sent by Atlassian Jira (v8.20.10#820010)