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 

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

Reply via email to