[
https://issues.apache.org/jira/browse/CASSANDRA-14170?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16386024#comment-16386024
]
Andrés de la Peña commented on CASSANDRA-14170:
-----------------------------------------------
Overall the patch looks good to me. However, the new test
[{{testNoLossOfPrecisionForCastToDecimal}}|https://github.com/blerer/cassandra/blob/4b1f5804837ae3164bb183fcb62077683621651a/test/unit/org/apache/cassandra/cql3/functions/CastFctsTest.java#L205-L212]
misses the {{@Test}} annotation. Indeed, it fails due to [a column names
mismatch at the insert
statement|https://github.com/blerer/cassandra/blob/4b1f5804837ae3164bb183fcb62077683621651a/test/unit/org/apache/cassandra/cql3/functions/CastFctsTest.java#L208].
I think it should be [this
way|https://github.com/adelapena/cassandra/commit/be44415a3f61e13720889cfd44482ee1142e8c1d].
If it's ok for you it can be addressed during commit.
Nitpick: there is a misssed blank line in {{getDecimalConversionFunction}}
JavaDoc,
[here|https://github.com/adelapena/cassandra/commit/86f8121f95adb60eef85edbcaf9fb3917ef5207f].
> 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: [email protected]
For additional commands, e-mail: [email protected]