Daniel Fiala created CASSANDRA-14170:
----------------------------------------
Summary: 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
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: [email protected]
For additional commands, e-mail: [email protected]