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

          elenst Elena Stepanova added a comment - - edited

          10.2 b8fdd56a4d6

          mysqld: /data/src/10.2/sql/sql_error.cc:380: void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*): Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed.
          180528 14:29:37 [ERROR] mysqld got signal 6 ;
           
          #7  0x00007fc81c38dee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
          #8  0x000055d960bdf387 in Diagnostics_area::set_ok_status (this=0x7fc79c005c90, affected_rows=0, last_insert_id=0, message=0x0) at /data/src/10.2/sql/sql_error.cc:380
          #9  0x000055d960b91853 in my_ok (thd=0x7fc79c000b00, affected_rows=0, id=0, message=0x0) at /data/src/10.2/sql/sql_class.h:4477
          #10 0x000055d960c0a6b6 in do_execute_sp (thd=0x7fc79c000b00, sp=0x7fc79c0572f8) at /data/src/10.2/sql/sql_parse.cc:2920
          #11 0x000055d960c139fd in mysql_execute_command (thd=0x7fc79c000b00) at /data/src/10.2/sql/sql_parse.cc:5835
          #12 0x000055d960c19e0f in mysql_parse (thd=0x7fc79c000b00, rawbuf=0x7fc79c010f78 "BEGIN NOT ATOMIC\n  DECLARE a INT;\n  DECLARE c CURSOR FOR SELECT NAME_CONST('x','y') FROM t1;\n  OPEN c;\n  FETCH c INTO a;\n  CLOSE c;\nEND", length=135, parser_state=0x7fc80c2c0250, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:8002
          #13 0x000055d960c078b8 in dispatch_command (command=COM_QUERY, thd=0x7fc79c000b00, packet=0x7fc79c0191a1 "BEGIN NOT ATOMIC\n  DECLARE a INT;\n  DECLARE c CURSOR FOR SELECT NAME_CONST('x','y') FROM t1;\n  OPEN c;\n  FETCH c INTO a;\n  CLOSE c;\nEND;", packet_length=136, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1821
          #14 0x000055d960c0621b in do_command (thd=0x7fc79c000b00) at /data/src/10.2/sql/sql_parse.cc:1375
          #15 0x000055d960d55930 in do_handle_one_connection (connect=0x55d9650327c0) at /data/src/10.2/sql/sql_connect.cc:1335
          #16 0x000055d960d556bd in handle_one_connection (arg=0x55d9650327c0) at /data/src/10.2/sql/sql_connect.cc:1241
          #17 0x00007fc81e064494 in start_thread (arg=0x7fc80c2c1700) at pthread_create.c:333
          #18 0x00007fc81c44a93f in clone () from /lib/x86_64-linux-gnu/libc.so.6
          

          elenst Elena Stepanova added a comment - - edited 10.2 b8fdd56a4d6 mysqld: /data/src/10.2/sql/sql_error.cc:380: void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*): Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed. 180528 14:29:37 [ERROR] mysqld got signal 6 ;   #7 0x00007fc81c38dee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6 #8 0x000055d960bdf387 in Diagnostics_area::set_ok_status (this=0x7fc79c005c90, affected_rows=0, last_insert_id=0, message=0x0) at /data/src/10.2/sql/sql_error.cc:380 #9 0x000055d960b91853 in my_ok (thd=0x7fc79c000b00, affected_rows=0, id=0, message=0x0) at /data/src/10.2/sql/sql_class.h:4477 #10 0x000055d960c0a6b6 in do_execute_sp (thd=0x7fc79c000b00, sp=0x7fc79c0572f8) at /data/src/10.2/sql/sql_parse.cc:2920 #11 0x000055d960c139fd in mysql_execute_command (thd=0x7fc79c000b00) at /data/src/10.2/sql/sql_parse.cc:5835 #12 0x000055d960c19e0f in mysql_parse (thd=0x7fc79c000b00, rawbuf=0x7fc79c010f78 "BEGIN NOT ATOMIC\n DECLARE a INT;\n DECLARE c CURSOR FOR SELECT NAME_CONST('x','y') FROM t1;\n OPEN c;\n FETCH c INTO a;\n CLOSE c;\nEND", length=135, parser_state=0x7fc80c2c0250, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:8002 #13 0x000055d960c078b8 in dispatch_command (command=COM_QUERY, thd=0x7fc79c000b00, packet=0x7fc79c0191a1 "BEGIN NOT ATOMIC\n DECLARE a INT;\n DECLARE c CURSOR FOR SELECT NAME_CONST('x','y') FROM t1;\n OPEN c;\n FETCH c INTO a;\n CLOSE c;\nEND;", packet_length=136, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1821 #14 0x000055d960c0621b in do_command (thd=0x7fc79c000b00) at /data/src/10.2/sql/sql_parse.cc:1375 #15 0x000055d960d55930 in do_handle_one_connection (connect=0x55d9650327c0) at /data/src/10.2/sql/sql_connect.cc:1335 #16 0x000055d960d556bd in handle_one_connection (arg=0x55d9650327c0) at /data/src/10.2/sql/sql_connect.cc:1241 #17 0x00007fc81e064494 in start_thread (arg=0x7fc80c2c1700) at pthread_create.c:333 #18 0x00007fc81c44a93f in clone () from /lib/x86_64-linux-gnu/libc.so.6

          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.