[
https://issues.apache.org/jira/browse/CALCITE-7238?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mihai Budiu reassigned CALCITE-7238:
------------------------------------
Assignee: Mihai Budiu
> Query that creates a ROW value triggers an assertion failure in
> SqlToRelConverter
> ---------------------------------------------------------------------------------
>
> Key: CALCITE-7238
> URL: https://issues.apache.org/jira/browse/CALCITE-7238
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.40.0
> Reporter: Mihai Budiu
> Assignee: Mihai Budiu
> Priority: Minor
>
> Here is a test that fails in SqlToRelConverterTest:
> {code:java}
> sql("WITH tbl(r) AS (VALUES(1)) SELECT\n"
> + "ARRAY(SELECT r, r FROM tbl)").ok();
> {code}
> This is the stack trace:
> {code}
> java.lang.AssertionError: Conversion to relational algebra failed to preserve
> datatypes:
> validated type:
> RecordType(RecordType(INTEGER NOT NULL R, INTEGER NOT NULL R) NOT NULL ARRAY
> NOT NULL EXPR$0) NOT NULL
> converted type:
> RecordType(RecordType(INTEGER NOT NULL R, INTEGER NOT NULL R0) NOT NULL ARRAY
> NOT NULL EXPR$0) NOT NULL
> rel:
> LogicalProject(EXPR$0=[$1])
> LogicalJoin(condition=[true], joinType=[inner])
> LogicalValues(tuples=[[{ 0 }]])
> Collect(field=[EXPR$0])
> LogicalProject(R=[$0], R0=[$0])
> LogicalValues(tuples=[[{ 1 }]])
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.checkConvertedType(SqlToRelConverter.java:526)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:645)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertWith(SqlToRelConverter.java:4916)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3957)
> at
> org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:630)
> at
> org.apache.calcite.sql.test.AbstractSqlTester.convertSqlToRel2(AbstractSqlTester.java:570)
> at
> org.apache.calcite.sql.test.AbstractSqlTester.assertSqlConvertsTo(AbstractSqlTester.java:511)
> at
> org.apache.calcite.sql.test.AbstractSqlTester.assertConvertsTo(AbstractSqlTester.java:489)
> {code}
> The problem seems to be that the inferred original type is actually
> incorrect, since it is a ROW type with two fields with the same name (R).
> After conversion the fields are renamed, which makes the types not match.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)