Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-7146

NULLIF returns unexpected result with a YEAR field

Details

    Description

      DROP TABLE IF EXISTS t1;
      CREATE TABLE t1 (a YEAR(2));
      INSERT INTO t1 VALUES (0);
      SELECT a,NULLIF(a,2000),NULLIF(2001,a) FROM t1;

      returns

      +------+----------------+----------------+
      | a    | NULLIF(a,2000) | NULLIF(2001,a) |
      +------+----------------+----------------+
      |   00 |           NULL |              1 |
      +------+----------------+----------------+

      This is Ok that YEAR=00 is compared as equal to 2000, but the return value for NULLIF(2001,a) does not look Ok. The expected values is 2001, not 1.

      Attachments

        Activity

          bar Alexander Barkov created issue -
          bar Alexander Barkov made changes -
          Field Original Value New Value
          Summary NULLIF return unexpected result with a YEAR field NULLIF returns unexpected result with a YEAR field
          bar Alexander Barkov made changes -
          Description {code:sq}
          DROP TABLE IF EXISTS t1;
          CREATE TABLE t1 (a YEAR(2));
          INSERT INTO t1 VALUES (0);
          SELECT a,NULLIF(a,2000),NULLIF(2001,a) FROM t1;
          {code}
          returns
          {noformat}
          +------+----------------+----------------+
          | a | NULLIF(a,2000) | NULLIF(2001,a) |
          +------+----------------+----------------+
          | 00 | NULL | 1 |
          +------+----------------+----------------+
          {noformat}

          This is Ok that YEAR=00 is compared as equal to 2000, but the return value for NULLIF(2001,a) does not look Ok. The expected values is 2001, not 1.
          {code:sql}
          DROP TABLE IF EXISTS t1;
          CREATE TABLE t1 (a YEAR(2));
          INSERT INTO t1 VALUES (0);
          SELECT a,NULLIF(a,2000),NULLIF(2001,a) FROM t1;
          {code}
          returns
          {noformat}
          +------+----------------+----------------+
          | a | NULLIF(a,2000) | NULLIF(2001,a) |
          +------+----------------+----------------+
          | 00 | NULL | 1 |
          +------+----------------+----------------+
          {noformat}

          This is Ok that YEAR=00 is compared as equal to 2000, but the return value for NULLIF(2001,a) does not look Ok. The expected values is 2001, not 1.
          bar Alexander Barkov made changes -
          Component/s OTHER [ 10125 ]
          Fix Version/s 10.1.2 [ 15801 ]
          Fix Version/s 10.1 [ 16100 ]
          Resolution Fixed [ 1 ]
          Status Open [ 1 ] Closed [ 6 ]
          serg Sergei Golubchik made changes -
          Component/s Temporal Types [ 11000 ]
          Component/s OTHER [ 10125 ]
          ratzpo Rasmus Johansson (Inactive) made changes -
          Workflow MariaDB v2 [ 58630 ] MariaDB v3 [ 65527 ]
          serg Sergei Golubchik made changes -
          Workflow MariaDB v3 [ 65527 ] MariaDB v4 [ 148495 ]

          People

            bar Alexander Barkov
            bar Alexander Barkov
            Votes:
            0 Vote for this issue
            Watchers:
            2 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.