You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Ruben Q L (Jira)" <ji...@apache.org> on 2023/06/28 20:24:00 UTC

[jira] [Updated] (CALCITE-5731) cast to row type should throw exception when contains null/not null constraint

     [ https://issues.apache.org/jira/browse/CALCITE-5731?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ruben Q L updated CALCITE-5731:
-------------------------------
    Fix Version/s:     (was: 1.35.0)

> cast to row type should throw exception when contains null/not null constraint
> ------------------------------------------------------------------------------
>
>                 Key: CALCITE-5731
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5731
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.35.0
>            Reporter: Jacky Lau
>            Assignee: Jacky Lau
>            Priority: Major
>              Labels: pull-request-available
>
> the cast standard grammar it here from iso 2016
> {code:java}
> // code placeholder
> <cast specification> ::=
> CAST <left paren> <cast operand> AS <cast target> <right paren>
> <cast operand> ::=
> <value expression>
> | <implicitly typed value specification>
> <cast target> ::=
> <domain name>
> | <data type>
> <data type> ::=
> <predefined type>
> | <row type>
> | <path-resolved user-defined type name>
> | <reference type>
> | <collection type>
> <collection type> ::=
> <array type>
> | <multiset type>
> <array type> ::=
> <data type> ARRAY
> [ <left bracket or trigraph> <maximum cardinality> <right bracket or trigraph> ] {code}
>  
> not null/ null are constraint, can not be in cast, only can be in ddl
> {code:java}
> // this simple type and collection type will throw exception in calcite now
> expr("cast(x as integer ^not^ null)")
>     .fails("(?s).*Encountered \"not\" at .*");
> expr("cast(x as integer ^not^ null array)")
>     .fails("(?s).*Encountered \"not\" at .*");
> expr("cast(x as integer array ^not^ null)")
>     .fails("(?s).*Encountered \"not\" at .*"); 
> // but the followings are not 
> expr("cast(x as row(f0 int ^not^ null))")
>     .fails("(?s).*Encountered \"not\" at .*");
> expr("cast(x as row(f0 varchar ^null^))")
>     .fails("(?s).*Encountered \"null\" at .*");
> expr("cast(x as row(f0 int ^not^ null, f1 varchar ^null^))")
>     .fails("(?s).*Encountered \"not\" at .*");{code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)