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:
-------------------------------
Summary: Cast to row type should throw exception when contains null/not null constraint (was: cast to row type should throw exception when contains null/not null constraint)
> 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)