cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benjamin Lerer (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-14170) Loss of digits when doing CAST from varint/bigint to decimal
Date Thu, 15 Feb 2018 09:30:00 GMT

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

Benjamin Lerer commented on CASSANDRA-14170:
--------------------------------------------

[~danfiala] Thanks for reporting the problem.

I pushed a branch [here|https://github.com/apache/cassandra/compare/cassandra-3.11...blerer:14170-3.11]
to fix the problem and add some extra tests.

The patch can be merge without trouble into trunk and the Unit tests runs fine on both branches.
We do not have DTests for the {{CAST}} operations.

[~adelapena] Could you review?

> Loss of digits when doing CAST from varint/bigint to decimal
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-14170
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14170
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: Tested with Cassandra 3.11.1 but this issue is present since the
implementation of cast functions.
>            Reporter: Daniel Fiala
>            Assignee: Benjamin Lerer
>            Priority: Minor
>
> Cast functions from numeric types to decimal type are implemented as conversion to double
first and then from double to decimal: [https://github.com/apache/cassandra/compare/trunk...blerer:10310-3.0#diff-6aa4a8f76df6c30c5bb4026b8c9251eeR80].
> This can cause loss of digits for big values stored in varint or bigint. It is probably
unexpected because decimal can store such values precisely.
> Examples:
> {{cqlsh> CREATE TABLE cast_bigint_test(k int PRIMARY KEY, bigint_clmn bigint);}}
>  {{cqlsh> INSERT INTO cast_bigint_test(k, decimal_clmn) VALUES(2, 9223372036854775807);}}
>  {{cqlsh> SELECT CAST(bigint_clmn AS decimal) FROM cast_bigint_test;}}
>  {{cast(bigint_clmn as decimal)}}
>  {{------------------------------}}
>  {{9.223372036854776E+18}}
>  {{(1 rows)}}
> {{cqlsh> CREATE TABLE cast_varint_test (k int PRIMARY KEY, varint_clmn varint);}}
>  {{cqlsh> INSERT INTO cast_varint_test(k, varint_clmn) values(2, 1234567890123456789);}}
>  {{cqlsh> SELECT CAST(varint_clmn AS decimal) FROM cast_varint_test;}}
>  {{cast(varint_clmn as decimal)}}
>  {{------------------------------}}
> 1.23456789012345677E+18
>  {{(1 rows)}}
>  



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

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


Mime
View raw message