Aitozi created FLINK-31755:
------------------------------
Summary: ROW function can not work with RewriteIntersectAllRule
Key: FLINK-31755
URL: https://issues.apache.org/jira/browse/FLINK-31755
Project: Flink
Issue Type: Bug
Components: Table SQL / Planner
Reporter: Aitozi
Reproduce case:
{code:java}
create table row_sink (
`b` ROW<b1 STRING, b2 INT>
) with (
'connector' = 'values'
)
util.verifyRelPlanInsert(
"INSERT INTO row_sink " +
"SELECT ROW(a, b) FROM complex_type_src intersect all " +
"SELECT ROW(c, d) FROM complex_type_src ")
{code}
It will fails with
{code:java}
Caused by: java.lang.IllegalArgumentException: Type mismatch:
rel rowtype: RecordType(RecordType:peek_no_expand(VARCHAR(2147483647) CHARACTER
SET "UTF-16LE" EXPR$0, INTEGER EXPR$1) NOT NULL EXPR$0) NOT NULL
equiv rowtype: RecordType(RecordType(VARCHAR(2147483647) CHARACTER SET
"UTF-16LE" EXPR$0, INTEGER EXPR$1) NOT NULL EXPR$0) NOT NULL
Difference:
EXPR$0: RecordType:peek_no_expand(VARCHAR(2147483647) CHARACTER SET "UTF-16LE"
EXPR$0, INTEGER EXPR$1) NOT NULL -> RecordType(VARCHAR(2147483647) CHARACTER
SET "UTF-16LE" EXPR$0, INTEGER EXPR$1) NOT NULL
at
org.apache.calcite.plan.volcano.VolcanoPlanner.register(VolcanoPlanner.java:592)
at
org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlanner.java:613)
at
org.apache.calcite.plan.volcano.VolcanoRuleCall.transformTo(VolcanoRuleCall.java:144)
... 68 more
{code}
The reason is:
ROW function will generates the {{FULLY_QUALIFIED}} type. But after the
{{RewriteIntersectAllRule}} optimization, it will produce the
{{PEEK_FIELDS_NO_EXPAND}}. So the volcan planner complains with type mismatch.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)