[
https://issues.apache.org/jira/browse/FLINK-36122?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
xuyang updated FLINK-36122:
---------------------------
Description:
Add this test to CalcTest to reproduce it:
{code:java}
@Test
def testRowTypeEquality(): Unit = {
util.addTable(s"""
|CREATE TABLE src (
| my_row ROW(a INT, b STRING)
|) WITH (
| 'connector' = 'values'
| )
|""".stripMargin)
util.verifyExecPlan(s"""
|SELECT my_row = ROW(1, 'str') from src
|""".stripMargin)
} {code}
Currently, the plan is:
{code:java}
LogicalProject(EXPR$0=[=(CAST($0):RecordType(INTEGER a, VARCHAR(2147483647)
CHARACTER SET "UTF-16LE" b), CAST(ROW(1, _UTF-16LE'str')):RecordType(INTEGER a,
VARCHAR(2147483647) CHARACTER SET "UTF-16LE" b) NOT NULL)])
+- LogicalTableScan(table=[[default_catalog, default_database, src]]) {code}
Actually it can be:
{code:java}
LogicalProject(EXPR$0=[=($0, CAST(ROW(1,
_UTF-16LE'str')):RecordType:peek_no_expand(INTEGER a, VARCHAR(2147483647)
CHARACTER SET "UTF-16LE" b) NOT NULL)])
+- LogicalTableScan(table=[[default_catalog, default_database, src]]) {code}
> Redundant cast in outer layer when comparing Row Types for equality
> -------------------------------------------------------------------
>
> Key: FLINK-36122
> URL: https://issues.apache.org/jira/browse/FLINK-36122
> Project: Flink
> Issue Type: Improvement
> Components: Table SQL / Planner
> Affects Versions: 1.20.0, 1.19.1
> Reporter: xuyang
> Priority: Minor
>
> Add this test to CalcTest to reproduce it:
> {code:java}
> @Test
> def testRowTypeEquality(): Unit = {
> util.addTable(s"""
> |CREATE TABLE src (
> | my_row ROW(a INT, b STRING)
> |) WITH (
> | 'connector' = 'values'
> | )
> |""".stripMargin)
> util.verifyExecPlan(s"""
> |SELECT my_row = ROW(1, 'str') from src
> |""".stripMargin)
> } {code}
> Currently, the plan is:
> {code:java}
> LogicalProject(EXPR$0=[=(CAST($0):RecordType(INTEGER a, VARCHAR(2147483647)
> CHARACTER SET "UTF-16LE" b), CAST(ROW(1, _UTF-16LE'str')):RecordType(INTEGER
> a, VARCHAR(2147483647) CHARACTER SET "UTF-16LE" b) NOT NULL)])
> +- LogicalTableScan(table=[[default_catalog, default_database, src]]) {code}
> Actually it can be:
> {code:java}
> LogicalProject(EXPR$0=[=($0, CAST(ROW(1,
> _UTF-16LE'str')):RecordType:peek_no_expand(INTEGER a, VARCHAR(2147483647)
> CHARACTER SET "UTF-16LE" b) NOT NULL)])
> +- LogicalTableScan(table=[[default_catalog, default_database, src]]) {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)