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

Prepared statements with DATE literals do not honor NO_ZERO_IN_DATE

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • 10.0.9
    • 10.0.11
    • None
    • None

    Description

      SET sql_mode=DEFAULT;
      PREPARE stmt FROM "SELECT (SELECT DATE'2001-00-00') AS c";
      EXECUTE stmt;
      SET sql_mode='no_zero_in_date';
      EXECUTE stmt;

      returns:

      +------------+
      | c          |
      +------------+
      | 2001-00-00 |
      +------------+
      1 row in set (0.00 sec)

      for both EXECUTE.
      This is wrong. The second EXECUTE should return NULL.

      If I change the script slightly:

      SET sql_mode=DEFAULT;
      PREPARE stmt FROM "SELECT (SELECT DATE('2001-00-00')) AS c";
      EXECUTE stmt;
      SET sql_mode='no_zero_in_date';
      EXECUTE stmt;

      it correctly returns '2001-00-00' for the first EXECUTE and NULL for the second EXECUTE,
      as expected.

      Attachments

        Activity

          bar Alexander Barkov created issue -
          bar Alexander Barkov made changes -
          Field Original Value New Value
          Description {code}
          SET sql_mode=DEFAULT;
          PREPARE stmt FROM "SELECT (SELECT DATE'2001-00-00') AS c";
          EXECUTE stmt;
          SET sql_mode='no_zero_in_date';
          EXECUTE stmt;
          {code}

          returns:

          {code}
          +------------+
          | c |
          +------------+
          | 2001-00-00 |
          +------------+
          1 row in set (0.00 sec)
          {code}
          for both EXECUTE.
          This is wrong. The second EXECUTE should return NULL.
          {code}
          SET sql_mode=DEFAULT;
          PREPARE stmt FROM "SELECT (SELECT DATE'2001-00-00') AS c";
          EXECUTE stmt;
          SET sql_mode='no_zero_in_date';
          EXECUTE stmt;
          {code}

          returns:

          {code}
          +------------+
          | c |
          +------------+
          | 2001-00-00 |
          +------------+
          1 row in set (0.00 sec)
          {code}
          for both EXECUTE.
          This is wrong. The second EXECUTE should return NULL.

          If I change the script slightly:
          {code}
          SET sql_mode=DEFAULT;
          PREPARE stmt FROM "SELECT (SELECT DATE('2001-00-00')) AS c";
          EXECUTE stmt;
          SET sql_mode='no_zero_in_date';
          EXECUTE stmt;
          {code}
          it correctly returns '2001-00-00' for the first EXECUTE and NULL for the second EXECUTE,
          as expected.
          bar Alexander Barkov made changes -
          Affects Version/s 10.0.9 [ 14400 ]
          serg Sergei Golubchik made changes -
          Fix Version/s 10.0.11 [ 15200 ]
          bar Alexander Barkov made changes -
          Summary Prepares statements with DATE literals do not honor NO_ZERO_IN_DATE Prepared statements with DATE literals do not honor NO_ZERO_IN_DATE
          bar Alexander Barkov made changes -
          Status Open [ 1 ] In Progress [ 3 ]

          Pushed into 10.0.

          bar Alexander Barkov added a comment - Pushed into 10.0.
          bar Alexander Barkov made changes -
          Resolution Fixed [ 1 ]
          Status In Progress [ 3 ] Closed [ 6 ]
          serg Sergei Golubchik made changes -
          Workflow defaullt [ 37713 ] MariaDB v2 [ 43651 ]
          ratzpo Rasmus Johansson (Inactive) made changes -
          Workflow MariaDB v2 [ 43651 ] MariaDB v3 [ 62793 ]
          serg Sergei Golubchik made changes -
          Workflow MariaDB v3 [ 62793 ] MariaDB v4 [ 147714 ]

          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.