[
https://issues.apache.org/jira/browse/CALCITE-7270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18036335#comment-18036335
]
Mihai Budiu commented on CALCITE-7270:
--------------------------------------
These are truly distinct operators, and the compiler and runtime need to
distinguish them.
I can't see any other way to do this. It is really the fault of the SQL
standard allowing all these behaviors, or perhaps the fault of implementations
of choosing such exotic interpretations of division.
> Add support for a SAFE_DIVIDE operation
> ---------------------------------------
>
> Key: CALCITE-7270
> URL: https://issues.apache.org/jira/browse/CALCITE-7270
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Affects Versions: 1.41.0
> Reporter: Mihai Budiu
> Priority: Minor
>
> SQL dialects treat DIVISION in different ways: in some dialects division by 0
> produces an exception, while in other dialects (e.q. sqlite) it produces NULL.
> These are really two different operators with the same name. I think they
> should be represented by different operations in the IR: e.g., DIVIDE and
> SAFE_DIVIDE.
> This is reminiscent to the CHECKED arithmetic operations introduced in
> [CALCITE-6685], and the solution could be similar: in that issue whether an
> ADD operation is checked or unchecked is a property of SqlConformance.
> Similarly, we could add a boolean flag to SqlConformance indicating whether
> division is safe or not and a visitor that will rewrite DIVIDE to SAFE_DIVIDE
> when necessary.
> Spawn from [CALCITE-7145]
> I am happy to assign this to myself if people agree.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)