[
https://issues.apache.org/jira/browse/CALCITE-3627?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17008919#comment-17008919
]
Stamatis Zampetakis commented on CALCITE-3627:
----------------------------------------------
I agree that NullPolicy.ANY is not appropriate for the row value constructor.
However, I am bit confused with wording in the summary and description of this
case. Can you clearly state what happens with the current code without your
changes? What do the following queries return?
{code:sql}
SELECT ROW(cast(null as int), 1);
SELECT ROW(1, cast(null as int));
SELECT ROW(cast(null as int), cast(null as int));
{code}
> Incorrect null semantic for ROW function
> ----------------------------------------
>
> Key: CALCITE-3627
> URL: https://issues.apache.org/jira/browse/CALCITE-3627
> Project: Calcite
> Issue Type: Bug
> Components: core
> Reporter: Feng Zhu
> Assignee: Feng Zhu
> Priority: Major
> Labels: pull-request-available
> Time Spent: 50m
> Remaining Estimate: 0h
>
> In CALCITE-2464, an in-depth discussion on nullability of structured type has
> been conducted.
> According to SQL standards, a record's value (with structure type) is
> considered null if and only if all of its fields are null.
> Based on that, the *ROW* function's return type can be nullable.
> Moreover, current implementor for ROW function's _*NullPolicy*_
> (_NullPolicy.ANY_) contradicts its runtime behavior.
> {code:java}
> Query:
> select ROW(1, cast(null as int))
> Result:
> {1, null}{code}
> However, according to the NullPolicy, the result should be null.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)