Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-14170

Loss of digits when doing CAST from varint/bigint to decimal

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Low
    • Resolution: Fixed
    • Fix Version/s: 3.11.3, 4.0, 4.0-alpha1
    • Component/s: Legacy/CQL
    • Labels:
      None
    • Environment:

      Tested with Cassandra 3.11.1 but this issue is present since the implementation of cast functions.

    • Severity:
      Low

      Description

      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)

       

        Attachments

          Activity

            People

            • Assignee:
              blerer Benjamin Lerer
              Reporter:
              danfiala Daniel Fiala
              Authors:
              Benjamin Lerer
              Reviewers:
              Andres de la Peña
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: