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

Server crash when using a NAME_CONST() with a CURSOR

Details

    Description

      This script makes the server crash in a debug build:

      SET sql_mode=STRICT_ALL_TABLES;
      CREATE OR REPLACE TABLE t1 (a INT);
      INSERT INTO t1 VALUES (10);
      DELIMITER $$
      BEGIN NOT ATOMIC
        DECLARE a INT;
        DECLARE c CURSOR FOR SELECT NAME_CONST('x','y') FROM t1;
        OPEN c;
        FETCH c INTO a;
        CLOSE c;
      END;
      $$
      DELIMITER ;
      

      If I change sql_mode to empty, it works fine:

      SET sql_mode='';
      CREATE OR REPLACE TABLE t1 (a INT);
      INSERT INTO t1 VALUES (10);
      DELIMITER $$
      BEGIN NOT ATOMIC
        DECLARE a INT;
        DECLARE c CURSOR FOR SELECT NAME_CONST('x','y') FROM t1;
        OPEN c;
        FETCH c INTO a;
        CLOSE c;
      END;
      $$
      DELIMITER ;
      

      Attachments

        Activity

          bar Alexander Barkov created issue -
          bar Alexander Barkov made changes -
          Field Original Value New Value
          Description This script makes the server crash in a debug build:
          {code:sql}
          SET sql_mode=STRICT_ALL_TABLES;
          DELIMITER $$
          BEGIN NOT ATOMIC
            DECLARE a INT;
            DECLARE c CURSOR FOR SELECT NAME_CONST('x','y') FROM t1;
            OPEN c;
            FETCH c INTO a;
            CLOSE c;
          END;
          $$
          DELIMITER ;
          {code}

          If I change {{sql_mode}} to empty, it works fine:
          {code:sql}
          SET sql_mode='';
          DELIMITER $$
          BEGIN NOT ATOMIC
            DECLARE a INT;
            DECLARE c CURSOR FOR SELECT NAME_CONST('x','y') FROM t1;
            OPEN c;
            FETCH c INTO a;
            CLOSE c;
          END;
          $$
          DELIMITER ;
          {code}
          This script makes the server crash in a debug build:
          {code:sql}
          SET sql_mode=STRICT_ALL_TABLES;
          CREATE OR REPLACE TABLE t1 (a INT);
          INSERT INTO t1 VALUES (10);
          DELIMITER $$
          BEGIN NOT ATOMIC
            DECLARE a INT;
            DECLARE c CURSOR FOR SELECT NAME_CONST('x','y') FROM t1;
            OPEN c;
            FETCH c INTO a;
            CLOSE c;
          END;
          $$
          DELIMITER ;
          {code}

          If I change {{sql_mode}} to empty, it works fine:
          {code:sql}
          SET sql_mode='';
          CREATE OR REPLACE TABLE t1 (a INT);
          INSERT INTO t1 VALUES (10);
          DELIMITER $$
          BEGIN NOT ATOMIC
            DECLARE a INT;
            DECLARE c CURSOR FOR SELECT NAME_CONST('x','y') FROM t1;
            OPEN c;
            FETCH c INTO a;
            CLOSE c;
          END;
          $$
          DELIMITER ;
          {code}
          bar Alexander Barkov made changes -
          issue.field.resolutiondate 2018-06-13 19:37:40.0 2018-06-13 19:37:40.251
          bar Alexander Barkov made changes -
          Fix Version/s 10.2.16 [ 23110 ]
          Fix Version/s 10.3.8 [ 23113 ]
          Fix Version/s 10.4.0 [ 23115 ]
          Fix Version/s 10.2 [ 14601 ]
          Resolution Fixed [ 1 ]
          Status Open [ 1 ] Closed [ 6 ]
          serg Sergei Golubchik made changes -
          Workflow MariaDB v3 [ 87476 ] MariaDB v4 [ 154434 ]

          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.