[
https://issues.apache.org/jira/browse/CALCITE-7270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18042912#comment-18042912
]
Mihai Budiu commented on CALCITE-7270:
--------------------------------------
I have renamed the issue to tackle DuckDB for now.
I have chosen DuckDB because is statically typed and it has a separate operator
for integer division. The solution could probably be applied to MySQL as well,
which has DIV (but DIV has different semantics and typing rules).
DuckDB has / which always performs floating point division (another
non-standard behavior!), and // which performs integer division. (Even on
decimals, it performs the division then truncates the result, but with a
DECIMAL type).
In DuckDB integer division by zero produces NULL. So providing a solution for
DuckDB will require handling the original problem raised by this issue.
> Add support for the DuckDB integer division operator //
> -------------------------------------------------------
>
> 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
> Labels: pull-request-available
>
> 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)