[
https://issues.apache.org/jira/browse/CALCITE-4771?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17703882#comment-17703882
]
Julian Hyde commented on CALCITE-4771:
--------------------------------------
I found a solution to this issue as a 'fixup' while I was merged your PR for
CALCITE-5557. I added a check whether the function is in the operator list (and
not a {{SqlUnresolvedFunction}}). That captures the idea that the function must
have been referenced explicitly by the parser, as opposed to looked up by name
(which would be inappropriate for a SPECIAL function). See
[SqlFunction|https://github.com/apache/calcite/blob/93b11cb1dcd93bd09da66555b1d6ae423e7f8b21/core/src/main/java/org/apache/calcite/sql/SqlFunction.java#L259-L267].
> change the value of the CAST function to be nullable
> -----------------------------------------------------
>
> Key: CALCITE-4771
> URL: https://issues.apache.org/jira/browse/CALCITE-4771
> Project: Calcite
> Issue Type: Improvement
> Reporter: xuyang
> Assignee: Dan Zou
> Priority: Major
> Attachments: image-2021-09-16-11-43-55-743.png
>
>
> In the sql "SELECT CAST('haha' AS INT)",the value the function CAST returns
> will be parsed into NOT NULL, because when parsing, the type CAST returns is
> from the INT and the nullable attribute is from the 'haha', which doesn't
> consider the condition that parsing a string to an int could be invalid and
> return NULL values.
> I think there are two ways to improve this question:
> * One is to change the value of the CAST function to be nullable, which
> avoids the invalid parsing.
> * The other way is to introduce a function named TRY_CAST, which is used in
> SQL Server.If the parsing fails, TRY_CAST will return NULL instead of throws
> exception that a NOT NULL field will be set with our unexpected value NULL.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)