[
https://issues.apache.org/jira/browse/CALCITE-7910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated CALCITE-7910:
------------------------------------
Labels: pull-request-available (was: )
> Minus and Intersect lose StructKind of nested ROW types in row type derivation
> ------------------------------------------------------------------------------
>
> Key: CALCITE-7910
> URL: https://issues.apache.org/jira/browse/CALCITE-7910
> Project: Calcite
> Issue Type: Bug
> Components: core
> Reporter: Sergey Nuyanzin
> Assignee: Sergey Nuyanzin
> Priority: Major
> Labels: pull-request-available
>
> Repro with {{PROJECT_FILTER_TRANSPOSE}} and {{MINUS_FILTER_TO_FILTER}}:
> {code:sql}
> SELECT contactno, coord_ne FROM customer.contact_peek
> EXCEPT
> SELECT contactno, coord_ne FROM customer.contact_peek WHERE contactno = 2
> {code}
> it fails as
> {noformat}
> java.lang.AssertionError: Cannot add expression of different type to set:
> set type is RecordType(INTEGER NOT NULL CONTACTNO, RecordType(INTEGER NOT
> NULL M, RecordType(INTEGER NOT NULL A, INTEGER NOT NULL B) NOT NULL SUB) NOT
> NULL COORD_NE) NOT NULL
> expression type is RecordType(INTEGER NOT NULL CONTACTNO,
> RecordType:peek_no_expand(INTEGER NOT NULL M,
> RecordType:peek_no_expand(INTEGER NOT NULL A, INTEGER NOT NULL B) NOT NULL
> SUB) NOT NULL COORD_NE) NOT NULL
> set is
> rel#33:LogicalMinus.(input#0=HepRelVertex#29,input#1=HepRelVertex#32,all=false)
> expression is LogicalAggregate(group=[{0, 1}])
> LogicalFilter(condition=[<>($0, 2)])
> LogicalProject(CONTACTNO=[$0], COORD_NE=[$5])
> LogicalTableScan(table=[[CATALOG, CUSTOMER, CONTACT_PEEK]])
> Type mismatch:
> rowtype of original rel: RecordType(INTEGER NOT NULL CONTACTNO,
> RecordType(INTEGER NOT NULL M, RecordType(INTEGER NOT NULL A, INTEGER NOT
> NULL B) NOT NULL SUB) NOT NULL COORD_NE) NOT NULL
> rowtype of new rel: RecordType(INTEGER NOT NULL CONTACTNO,
> RecordType:peek_no_expand(INTEGER NOT NULL M,
> RecordType:peek_no_expand(INTEGER NOT NULL A, INTEGER NOT NULL B) NOT NULL
> SUB) NOT NULL COORD_NE) NOT NULL
> Difference:
> COORD_NE: RecordType(INTEGER NOT NULL M, RecordType(INTEGER NOT NULL A,
> INTEGER NOT NULL B) NOT NULL SUB) NOT NULL ->
> RecordType:peek_no_expand(INTEGER NOT NULL M,
> RecordType:peek_no_expand(INTEGER NOT NULL A, INTEGER NOT NULL B) NOT NULL
> SUB) NOT NULL
>
> {noformat}
> seems related to CALCITE-6451
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)