You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2018/08/11 18:43:00 UTC

[jira] [Commented] (CALCITE-2464) Struct types are always not nullable

    [ https://issues.apache.org/jira/browse/CALCITE-2464?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16577276#comment-16577276 ] 

Julian Hyde commented on CALCITE-2464:
--------------------------------------

I suspect that the SQL standard has something to do with this.

If I have an ADDRESS struct with fields STREET and ZIPCODE, then ADDRESS is null if and only if all of its fields are. In other words. ADDRESS has no independent existence. In Java terms it is a [value type|http://cr.openjdk.java.net/~jrose/values/values-0.html].

My memory of the standard may be mistaken. Please read it to confirm.

> Struct types are always not nullable
> ------------------------------------
>
>                 Key: CALCITE-2464
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2464
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.17.0
>            Reporter: Stamatis Zampetakis
>            Assignee: Julian Hyde
>            Priority: Major
>
> Struct types are always not nullable. This can lead to bugs in many parts of Calcite (e.g., expression simplification, optimization, code generation) that are considering the nullability of a RelDataType. 
> The method [isNullable|https://github.com/apache/calcite/blob/3c6b5ec759caadabb67f09d7a4963cc7d9386d0c/core/src/main/java/org/apache/calcite/rel/type/RelRecordType.java#L55] in the RelRecordType, which is used to represent a structured type, always returns false. The nullability of the RelRecordType should be a parameter in the constructor as it is the case for various other RelDataTypes. 
> Additionally, the data type cache should also take into account the nullability of the type in order to return a correct equivalent.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)