Marios Trivyzas created FLINK-25930: ---------------------------------------
Summary: Remove identity casting from ScalarOperatorGens Key: FLINK-25930 URL: https://issues.apache.org/jira/browse/FLINK-25930 Project: Flink Issue Type: Sub-task Reporter: Marios Trivyzas Following: [https://github.com/apache/flink/pull/18582] we could remove the following code from {*}ScalarOperatorGens{*}: {noformat} case (_, _) if isInteroperable(operand.resultType, targetType) => operand.copy(resultType = targetType) {noformat} and use our *IdentityCastRule* instead but there is an issue. Currently the *isInteroperable* allows casting between types with different nullability whereas the *IdentityCastRule* uses the {*}LogicalTypeCasts#{*}{*}supportsAvoidingCast{*} which in turn uses the *CastAvoidanceChecker* which doesn't allow to cast from a nullable type to the same but non-nullable type, i.e. INT -> INT NOT NULL {noformat} if (sourceType.isNullable() && !targetType.isNullable() || sourceType.getClass() != targetType.getClass() || // TODO drop this line once we remove legacy types sourceType.getTypeRoot() != targetType.getTypeRoot()) { return false; }{noformat} -- This message was sent by Atlassian Jira (v8.20.1#820001)