Uploaded image for project: 'Apache Drill'
  1. Apache Drill
  2. DRILL-2199

Wrong results while using case expression with decimal data type

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • None
    • None
    • None

    Description

      Consider the below SQL statement:

      "select
      case when true then cast(employee_id as decimal(15, 5)) else cast('0.0' as decimal(5, 2)) end
      from cp.`employee.json` where employee_id = 1"

      This should return 1.00000 instead Drill returns 100000. In the case statement the first expression (condition expression) is nullable and the else expression is non-nullable. For our codegen to work correctly we make the non-nullable expression also nullable using convertToNullableXHolder() functions. These functions however do not preserve the scale and precision of the input, hence the output we get is the unscaled value of the decimal.

      Fix is to make the converToNullableDecimalHolder() functions preserve the scale and precision by returning the correct major type.

      Attachments

        1. DRILL-2199.patch
          12 kB
          Mehant Baid

        Activity

          People

            mehant Mehant Baid
            mehant Mehant Baid
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: