Sergey Nuyanzin created FLINK-39694:
---------------------------------------
Summary: Outer join on nested field fails with Conversion to
relational algebra failed to preserve datatypes
Key: FLINK-39694
URL: https://issues.apache.org/jira/browse/FLINK-39694
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)