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)