You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Feng Zhu (Jira)" <ji...@apache.org> on 2019/11/07 06:46:00 UTC
[jira] [Comment Edited] (CALCITE-3435) floor(mod(33.5,7)) wrongly
returns 5.5
[ https://issues.apache.org/jira/browse/CALCITE-3435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16968971#comment-16968971 ]
Feng Zhu edited comment on CALCITE-3435 at 11/7/19 6:45 AM:
------------------------------------------------------------
After investigate some materials, it seems that many products follow the rule in MS-SQL[1][2][3][4].
{code:java}
e1[s1, p1] % e2[s2, p2]
s = max(s1, s2)
p = min(p1-s1, p2-s2) + max(s1, s2){code}
Therefore, I open a PR to implement the logic. Could you take a look when you have time?
[1] MS-SQL: [https://msdn.microsoft.com/en-us/library/ms190476.aspx]
[2] Apache Hive: [https://cwiki.apache.org/confluence/download/attachments/27362075/Hive_Decimal_Precision_Scale_Support.pdf]
[3] Apache Spark: [https://github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/DecimalPrecision.scala]
[4] Impala: [https://impala.apache.org/docs/build/html/topics/impala_decimal.html]
was (Author: donnyzone):
After investigate some materials, it seems that many products follow the rule in MS-SQL^[1][2][3][4]^.
{code:java}
e1[s1, p1] % e2[s2, p2]
s = max(s1, s2)
p = min(p1-s1, p2-s2) + max(s1, s2){code}
Therefore, I open a PR to implement the logic. Could you take a look when you have time?
[1] MS-SQL: https://msdn.microsoft.com/en-us/library/ms190476.aspx
[2] Apache Hive: https://cwiki.apache.org/confluence/download/attachments/27362075/Hive_Decimal_Precision_Scale_Support.pdf
[3] Apache Spark: https://github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/DecimalPrecision.scala
[4] Impala: https://impala.apache.org/docs/build/html/topics/impala_decimal.html
> floor(mod(33.5,7)) wrongly returns 5.5
> --------------------------------------
>
> Key: CALCITE-3435
> URL: https://issues.apache.org/jira/browse/CALCITE-3435
> Project: Calcite
> Issue Type: Bug
> Affects Versions: 1.16.0, 1.21.0
> Reporter: jiezouSH
> Assignee: Feng Zhu
> Priority: Minor
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> mod's return type is
> chain(DECIMAL_MOD_NULLABLE, ARG1_NULLABLE),
> but mod(33.5,7)'s result is 5.5, not in line with ARG1_NULLABLE.
> This causes floor(mod(33.5,7)) wrongly returns 5.5
--
This message was sent by Atlassian Jira
(v8.3.4#803005)