Uploaded image for project: 'MariaDB ColumnStore'
  1. MariaDB ColumnStore
  2. MCOL-5215

UNION on DECIMAL returns incorrect results

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • None
    • 23.02.1
    • PrimProc
    • None

    Description

      Here is an example SQL script with wrong outputs when UNOIN of MCS computes with DECIMAL with 38 digits precision when the precision is saturated.

      An example wrong case is a UNION with DECIMAL(38) and DECIMAL(38,38). The result type in the system is a DECIMAL(38,38), which is wrong and can not represent any number with digits before the `.`.

      SET default_storage_engine=ColumnStore;
      CREATE TABLE t1 (a DECIMAL(38), b DECIMAL(38,10), c DECIMAL(38,38));
      INSERT INTO t1 VALUES (-125, -1.25, -0.125);
      SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT c FROM t1) tu ORDER BY a
      

      +-------------------------------------------+
      | a                                         |
      +-------------------------------------------+
      | -0.12500000000000000000000000000000000000 |
      |  0.90447576074723148144860474975423823872 |
      +-------------------------------------------+
      2 rows in set (0.031 sec)
      

      The correct behaviour is to throw a warning when the precision of DECIMAL is saturated. However, there are some cases to be discussed.

      Attachments

        Issue Links

          Activity

            For QA:

            We have added a new error message if the UNION operation exceeds the currently supported maximum DECIMAL precision of 38 digits:

            ERROR 1178 (42000): The storage engine for the table doesn't support MCS-2060: Union operation exceeds maximum DECIMAL precision of 38
            

            Once the support for MCOL-5417 is added, the above query in the issue description should execute as expected and this error message will be removed.

            tntnatbry Gagan Goel (Inactive) added a comment - For QA: We have added a new error message if the UNION operation exceeds the currently supported maximum DECIMAL precision of 38 digits: ERROR 1178 (42000): The storage engine for the table doesn't support MCS-2060: Union operation exceeds maximum DECIMAL precision of 38 Once the support for MCOL-5417 is added, the above query in the issue description should execute as expected and this error message will be removed.

            Build verified:

            engine: 4d4e4ad30dd2ec494ea9d323e1fa7fa69e97243e
            server: 1916028f898cf672a8b79d2b585b1d74f8bcd7db
            buildNo: 6965

            Verified with the test case in the description.

            dleeyh Daniel Lee (Inactive) added a comment - Build verified: engine: 4d4e4ad30dd2ec494ea9d323e1fa7fa69e97243e server: 1916028f898cf672a8b79d2b585b1d74f8bcd7db buildNo: 6965 Verified with the test case in the description.

            People

              tntnatbry Gagan Goel (Inactive)
              Jigao Luo Jigao Luo
              Gagan Goel Gagan Goel (Inactive)
              Daniel Lee Daniel Lee (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.