Sergey Nuyanzin created FLINK-39695:
---------------------------------------

             Summary: Outer join on nested field fails with Conversion to 
relational algebra failed to preserve datatypes
                 Key: FLINK-39695
                 URL: https://issues.apache.org/jira/browse/FLINK-39695
             Project: Flink
          Issue Type: Bug
          Components: Table SQL / Planner
            Reporter: Sergey Nuyanzin
            Assignee: Sergey Nuyanzin


Example schema 1
{code:sql}
`order_id` BIGINT NOT NULL,
PRIMARY KEY (`order_id`) NOT ENFORCED
{code}
schema2
{code:sql}
`r` ROW<`order_id` BIGINT NOT NULL, 
`name` STRING NOT NULL> NOT NULL,
PRIMARY KEY (`r`) NOT ENFORCED
{code}

sink schema
{code:sql}
order_id BIGINT", "detail_id BIGINT
{code}

query
{code:sql}
INSERT INTO lj_nn_sink 
SELECT a.order_id, b.r.order_id 
FROM lj_nn_orders a LEFT JOIN lj_nn_details b 
ON a.order_id = b.r.order_id
{code}

it fails as 
{noformat}
java.lang.AssertionError: Conversion to relational algebra failed to preserve 
datatypes:
validated type:
RecordType(BIGINT NOT NULL order_id, BIGINT order_id0) NOT NULL
converted type:
RecordType(BIGINT NOT NULL order_id, BIGINT NOT NULL order_id0) NOT NULL
rel:
LogicalProject(order_id=[$0], order_id0=[$1.order_id])
  LogicalProject(order_id=[$0], r=[$1])
    LogicalJoin(condition=[=($0, $2)], joinType=[left])
      LogicalTableScan(table=[[default_catalog, default_database, 
lj_nn_orders]])
      LogicalProject(r=[$0], $f1=[$0.order_id])
        LogicalTableScan(table=[[default_catalog, default_database, 
lj_nn_details]])


        at 
org.apache.calcite.sql2rel.SqlToRelConverter.checkConvertedType(SqlToRelConverter.java:553)
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:664)
{noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to