[ 
https://issues.apache.org/jira/browse/FLINK-25930?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17486581#comment-17486581
 ] 

Marios Trivyzas commented on FLINK-25930:
-----------------------------------------

[~slinkydeveloper] Those are the calls to the generateCast:
{noformat}
CAST(=($6, ARRAY(1, 2, 3))):VARCHAR(2147483647) CHARACTER SET "UTF-16LE" NOT 
NULL
CAST($6):INTEGER NOT NULL ARRAY
CAST(=(CAST($6):INTEGER NOT NULL ARRAY, ARRAY(1, 2, 3))):VARCHAR(2147483647) 
CHARACTER SET "UTF-16LE" NOT NULL{noformat}

> 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
>            Priority: Major
>
> 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)

Reply via email to