hailong wang created FLINK-19659: ------------------------------------ Summary: 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
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)