Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-1749

[C++] Handle range of Decimal128 values that require 39 digits to be displayed

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 0.7.1
    • 0.8.0
    • C++

    Description

      2 ** 127 - 1 and -2 ** 127 both require a 39th digit to be displayed as a decimal string.

      This means we do not have the ability to display decimal values above 10 ** 38 - 1 even though we have the ability to store them.

      For reference, Impala returns NULL when trying to cast 2 ** 127 - 1 to DECIMAL(38, 0).

      A few next steps are in order:

      1. Explicitly test this behavior
      2. Avoid crashing or displaying garbage when we cannot display a number that can be stored
      3. Make a decision about whether we want to eventually support range of values from 10 ** 38 to 2 ** 127 - 1 positive and -2 ** 127 to -10 ** 38 negative. This would require a larger integer type to hold the value just before being converted to a string.

      Attachments

        Issue Links

          Activity

            People

              cpcloud Phillip Cloud
              cpcloud Phillip Cloud
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: