Mihai Budiu created CALCITE-6764:
------------------------------------
Summary: Field access from a nullable ROW should be nullable
Key: CALCITE-6764
URL: https://issues.apache.org/jira/browse/CALCITE-6764
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.38.0
Reporter: Mihai Budiu
Consider the following SQL:
{code:sql}
CREATE TABLE T(p MAP<VARCHAR, ROW(k VARCHAR, v VARCHAR)>);
SELECT p['a'].k FROM T;
{code}
The MAP values are ROW values, which can be null.
The type of p['a'] is nullable, so p['a'].k should also be nullable.
The validator will crash while validating this query with the following error:
{code}
java.lang.RuntimeException: java.lang.AssertionError: Conversion to relational
algebra failed to preserve datatypes:
validated type:
RecordType(VARCHAR EXPR$0) NOT NULL
converted type:
RecordType(VARCHAR NOT NULL EXPR$0) NOT NULL
rel:
LogicalProject(EXPR$0=[ITEM($0, 'a').k])
LogicalTableScan(table=[[schema, t]])
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)