Paul Jackson created CALCITE-6126:
-------------------------------------
Summary: Return type check fails with OVER without AS
Key: CALCITE-6126
URL: https://issues.apache.org/jira/browse/CALCITE-6126
Project: Calcite
Issue Type: Bug
Components: core
Reporter: Paul Jackson
The following {{RelMetadataTest}} test fails:
{{@Test void testOverNoPartitioning() {}}
{{ sql("select max(empno) over (rows between 2 preceding and 0 following) from
emp")}}
{{ .assertThatAreColumnsUnique(bitSetOf(0), is(false))}}
{{ .assertThatUniqueKeysAre();}}
{{}}}
With this error:
{{java.lang.AssertionError: Conversion to relational algebra failed to preserve
datatypes:}}
{{validated type:}}
{{RecordType(INTEGER EXPR$0) NOT NULL}}
{{converted type:}}
{{RecordType(INTEGER NOT NULL EXPR$0) NOT NULL}}
{{rel:}}
{{LogicalProject(EXPR$0=[MAX($0) OVER ()])}}
{{ LogicalTableScan(table=[[CATALOG, SALES, EMP]])}}
{{ at
org.apache.calcite.sql2rel.SqlToRelConverter.checkConvertedType(SqlToRelConverter.java:507)}}
{{ at
org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:622)}}
{{ at
org.apache.calcite.sql.test.AbstractSqlTester.convertSqlToRel2(AbstractSqlTester.java:541)}}
{{ at
org.apache.calcite.sql.test.SqlTester.convertSqlToRel(SqlTester.java:291)}}
{{ at
org.apache.calcite.test.RelMetadataFixture.sqlToRel(RelMetadataFixture.java:189)}}
{{ at
org.apache.calcite.test.RelSupplier$SqlRelSupplier.apply2(RelSupplier.java:104)}}
{{ at
org.apache.calcite.test.RelMetadataFixture.toRel(RelMetadataFixture.java:195)}}
{{ at
org.apache.calcite.test.RelMetadataFixture.assertThatAreColumnsUnique(RelMetadataFixture.java:508)}}
The query parses without error if the expression is aliased:
{{@Test void testOverNoPartitioning() {}}
{{sql("select max(empno) over (rows between 2 preceding and 0 following) maxEmp
from emp")}}
{{.assertThatAreColumnsUnique(bitSetOf(0), is(false))}}
{{.assertThatUniqueKeysAre();}}
{{{}}{}}}{{{}{}}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)