[ 
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)

Reply via email to