[ 
https://issues.apache.org/jira/browse/FLINK-19659?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

hailong wang updated FLINK-19659:
---------------------------------
    Description: 
Currently, Array type supports `equals` and `not_equals` when element is the 
same or can not be cased. For example,
{code:java}
Array[1] <> Array[1] -> true{code}
{code:java}
Array[1] <> Array[cast(x'01' as binary)] -> false
{code}
But for the element types which are castable, it will throw error,
{code:java}
org.apache.flink.table.planner.codegen.CodeGenException: Unsupported cast from 
'ARRAY<INT NOT NULL> NOT NULL' to 'ARRAY<BIGINT NOT NULL> NOT 
NULL'.org.apache.flink.table.planner.codegen.CodeGenException: Unsupported cast 
from 'ARRAY<INT NOT NULL> NOT NULL' to 'ARRAY<BIGINT NOT NULL> NOT NULL'. at 
org.apache.flink.table.planner.codegen.calls.ScalarOperatorGens$.generateCast(ScalarOperatorGens.scala:1295)
 at 
org.apache.flink.table.planner.codegen.ExprCodeGenerator.generateCallExpression(ExprCodeGenerator.scala:703)
 at 
org.apache.flink.table.planner.codegen.ExprCodeGenerator.visitCall(ExprCodeGenerator.scala:498)
 at 
org.apache.flink.table.planner.codegen.ExprCodeGenerator.visitCall(ExprCodeGenerator.scala:55)
 at org.apache.calcite.rex.RexCall.accept(RexCall.java:288){code}
But the result should be false or true,  for example,
{code:java}
/Array[1] <> Array[cast(1 as bigint)] -> true
{code}
 

BTW, Map and MultiSet type are same as this, If it did, I am pleasure to open 
other issue to track those.

  was:
Currently, Array type supports `equals` and `not_equals` when element is the 
same or can not be cased. For example,
{code:java}
Array[1] <> Array[1] -> true{code}
{code:java}
Array[1] <> Array[cast(x'01' as binary)] -> false
{code}
But for the element types which are castable, it will throw error,
{code:java}
org.apache.flink.table.planner.codegen.CodeGenException: Unsupported cast from 
'ARRAY<INT NOT NULL> NOT NULL' to 'ARRAY<BIGINT NOT NULL> NOT 
NULL'.org.apache.flink.table.planner.codegen.CodeGenException: Unsupported cast 
from 'ARRAY<INT NOT NULL> NOT NULL' to 'ARRAY<BIGINT NOT NULL> NOT NULL'. at 
org.apache.flink.table.planner.codegen.calls.ScalarOperatorGens$.generateCast(ScalarOperatorGens.scala:1295)
 at 
org.apache.flink.table.planner.codegen.ExprCodeGenerator.generateCallExpression(ExprCodeGenerator.scala:703)
 at 
org.apache.flink.table.planner.codegen.ExprCodeGenerator.visitCall(ExprCodeGenerator.scala:498)
 at 
org.apache.flink.table.planner.codegen.ExprCodeGenerator.visitCall(ExprCodeGenerator.scala:55)
 at org.apache.calcite.rex.RexCall.accept(RexCall.java:288){code}
But the result should be false or true,  for example,
{code:java}
/Array[1] <> Array[cast(1 as bigint)] -> true
{code}
BTW, Map and MultiSet type are same as this, If it did, I am pleasure to open 
other issue to track those.

 


> Array type supports equals and not_equals operator when element types are 
> different but castable
> ------------------------------------------------------------------------------------------------
>
>                 Key: FLINK-19659
>                 URL: https://issues.apache.org/jira/browse/FLINK-19659
>             Project: Flink
>          Issue Type: New Feature
>          Components: Table SQL / Planner
>    Affects Versions: 1.11.0
>            Reporter: hailong wang
>            Priority: Major
>
> Currently, Array type supports `equals` and `not_equals` when element is the 
> same or can not be cased. For example,
> {code:java}
> Array[1] <> Array[1] -> true{code}
> {code:java}
> Array[1] <> Array[cast(x'01' as binary)] -> false
> {code}
> But for the element types which are castable, it will throw error,
> {code:java}
> org.apache.flink.table.planner.codegen.CodeGenException: Unsupported cast 
> from 'ARRAY<INT NOT NULL> NOT NULL' to 'ARRAY<BIGINT NOT NULL> NOT 
> NULL'.org.apache.flink.table.planner.codegen.CodeGenException: Unsupported 
> cast from 'ARRAY<INT NOT NULL> NOT NULL' to 'ARRAY<BIGINT NOT NULL> NOT 
> NULL'. at 
> org.apache.flink.table.planner.codegen.calls.ScalarOperatorGens$.generateCast(ScalarOperatorGens.scala:1295)
>  at 
> org.apache.flink.table.planner.codegen.ExprCodeGenerator.generateCallExpression(ExprCodeGenerator.scala:703)
>  at 
> org.apache.flink.table.planner.codegen.ExprCodeGenerator.visitCall(ExprCodeGenerator.scala:498)
>  at 
> org.apache.flink.table.planner.codegen.ExprCodeGenerator.visitCall(ExprCodeGenerator.scala:55)
>  at org.apache.calcite.rex.RexCall.accept(RexCall.java:288){code}
> But the result should be false or true,  for example,
> {code:java}
> /Array[1] <> Array[cast(1 as bigint)] -> true
> {code}
>  
> BTW, Map and MultiSet type are same as this, If it did, I am pleasure to open 
> other issue to track those.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to