You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Robert Hou (JIRA)" <ji...@apache.org> on 2018/08/24 17:38:00 UTC

[jira] [Comment Edited] (DRILL-6710) Drill C++ Client does not handle scale = 0 properly for decimal

    [ https://issues.apache.org/jira/browse/DRILL-6710?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16591966#comment-16591966 ] 

Robert Hou edited comment on DRILL-6710 at 8/24/18 5:37 PM:
------------------------------------------------------------

I think we should have consistent behavior with our multiple clients.  If the Apache JDBC driver accepts this behavior, then our Simba drivers should accept this behavior.

I am not sure there is a universal SQL standard.  It seems Oracle has implemented more than the SQL standard, hence most JDBC clients support negative scale values.  If Drill's implementation is following Oracle's implementation, then we should ask Simba to support it.

If we are following the SQL spec (I think SQL Server follows the SQL spec), then perhaps we should keep scale to be non-negative. I looked at this page:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/precision-scale-and-length-transact-sql?view=sql-server-2017

Does this apply?

{noformat}
Resulting scale is MIN(precision, 38) - max(p1 – s1, p2 – s2), so the fractional part might be rounded to fit into the resulting scale.
{noformat}


was (Author: rhou):
I think we should have consistent behavior with our multiple clients.  If the Apache JDBC driver accepts this behavior, then our Simba drivers should accept this behavior.

I am not sure there is a universal SQL standard.  It seems Oracle has implemented more than the SQL standard, hence most JDBC clients support negative scale values.  If Drill's implementation is following Oracle's implementation, then we should ask Simba to support it.

If we are following the SQL Server design, then perhaps we should keep scale to be non-negative. I looked at this page:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/precision-scale-and-length-transact-sql?view=sql-server-2017

Does this apply?

{noformat}
Resulting scale is MIN(precision, 38) - max(p1 – s1, p2 – s2), so the fractional part might be rounded to fit into the resulting scale.
{noformat}

> Drill C++ Client does not handle scale = 0 properly for decimal
> ---------------------------------------------------------------
>
>                 Key: DRILL-6710
>                 URL: https://issues.apache.org/jira/browse/DRILL-6710
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Execution - Relational Operators
>    Affects Versions: 1.14.0
>            Reporter: Robert Hou
>            Assignee: Sorabh Hamirwasia
>            Priority: Major
>             Fix For: 1.15.0
>
>
> Query is:
> select cast('999999999999999999' as decimal(18,0)) + cast('9999999999999999999999999999999999999' as decimal(38,0)) from data limit 1
> This is the error I get when my test program calls SQLExecDirect:
> The driver reported the following diagnostics whilst running SQLExecDirect
> HY000:1:40140:[MapR][Support] (40140) Scale can't be less than zero.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)