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

handler::update_auto_increment(): Assertion `nr != 0' failed. | SIGABRT in handler::update_auto_increment

Details

    Description

      # mysqld options required for replay:  --sql_mode= 
      CREATE TABLE t (c INT AUTO_INCREMENT KEY);
      SET @@SESSION.insert_id=-0;  # Or -1, -2 etc.
      INSERT INTO t VALUES(0);
      

      Leads to:

      mysqld: /data/git/10.5_dbg/sql/handler.cc:3541: int handler::update_auto_increment(): Assertion `nr != 0' failed.
      

      Core was generated by `/data/MD180320-mariadb-10.5.2-linux-x86_64-dbg/bin/mysqld --no-defaults --core-'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __pthread_kill (threadid=<optimized out>, signo=signo@entry=6)
          at ../sysdeps/unix/sysv/linux/pthread_kill.c:57
      [Current thread is 1 (Thread 0x7fdd5b114700 (LWP 4790))]
      (gdb) bt
      #0  __pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:57
      #1  0x00005621b7f597d4 in my_write_core (sig=sig@entry=6) at /data/git/10.5_dbg/mysys/stacktrace.c:518
      #2  0x00005621b7702b5f in handle_fatal_signal (sig=6) at /data/git/10.5_dbg/sql/signal_handler.cc:325
      #3  <signal handler called>
      #4  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
      #5  0x00007fdd59858801 in __GI_abort () at abort.c:79
      #6  0x00007fdd5984839a in __assert_fail_base (fmt=0x7fdd599cf7d8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x5621b826048b "nr != 0", file=file@entry=0x5621b82609e0 "/data/git/10.5_dbg/sql/handler.cc", line=line@entry=3541, function=function@entry=0x5621b8263fc0 <handler::update_auto_increment()::__PRETTY_FUNCTION__> "int handler::update_auto_increment()") at assert.c:92
      #7  0x00007fdd59848412 in __GI___assert_fail (assertion=assertion@entry=0x5621b826048b "nr != 0", file=file@entry=0x5621b82609e0 "/data/git/10.5_dbg/sql/handler.cc", line=line@entry=3541, function=function@entry=0x5621b8263fc0 <handler::update_auto_increment()::__PRETTY_FUNCTION__> "int handler::update_auto_increment()") at assert.c:101
      #8  0x00005621b770f10a in handler::update_auto_increment (this=this@entry=0x7fdd3182eca0) at /data/git/10.5_dbg/sql/handler.cc:3541
      #9  0x00005621b7ad1c32 in ha_innobase::write_row (this=0x7fdd3182eca0, record=0x7fdd318491a8 "\377") at /data/git/10.5_dbg/storage/innobase/handler/ha_innodb.cc:7710
      #10 0x00005621b77160b4 in handler::ha_write_row (this=0x7fdd3182eca0, buf=0x7fdd318491a8 "\377") at /data/git/10.5_dbg/sql/handler.cc:6798
      #11 0x00005621b741a9cd in write_record (thd=thd@entry=0x7fdd31815088, table=table@entry=0x7fdd318ee088, info=info@entry=0x7fdd5b112a80, sink=sink@entry=0x0) at /data/git/10.5_dbg/sql/sql_insert.cc:2055
      #12 0x00005621b74258bf in mysql_insert (thd=thd@entry=0x7fdd31815088, table_list=0x7fdd31874178, fields=..., values_list=..., update_fields=..., update_values=..., duplic=DUP_ERROR, ignore=false, result=0x0) at /data/git/10.5_dbg/sql/sql_insert.cc:1080
      #13 0x00005621b745cc50 in mysql_execute_command (thd=thd@entry=0x7fdd31815088) at /data/git/10.5_dbg/sql/sql_parse.cc:4507
      #14 0x00005621b74687a5 in mysql_parse (thd=thd@entry=0x7fdd31815088, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x7fdd5b113450, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /data/git/10.5_dbg/sql/sql_parse.cc:7926
      #15 0x00005621b7454664 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x7fdd31815088, packet=packet@entry=0x7fdd31867089 "INSERT INTO t VALUES(0)", packet_length=packet_length@entry=23, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /data/git/10.5_dbg/sql/sql_parse.cc:1839
      #16 0x00005621b7452eaf in do_command (thd=0x7fdd31815088) at /data/git/10.5_dbg/sql/sql_parse.cc:1358
      #17 0x00005621b75aca09 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x7fdd3762b3a8, put_in_cache=put_in_cache@entry=true) at /data/git/10.5_dbg/sql/sql_connect.cc:1422
      #18 0x00005621b75acd38 in handle_one_connection (arg=arg@entry=0x7fdd3762b3a8) at /data/git/10.5_dbg/sql/sql_connect.cc:1319
      #19 0x00005621b7a09cfc in pfs_spawn_thread (arg=0x7fdd58c45888) at /data/git/10.5_dbg/storage/perfschema/pfs.cc:2201
      #20 0x00007fdd5a53b6db in start_thread (arg=0x7fdd5b114700) at pthread_create.c:463
      #21 0x00007fdd5993988f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      

      Bug confirmed present in:
      MariaDB: 10.2.32 (dbg), 10.3.23 (dbg), 10.4.13 (dbg), 10.5.2 (dbg)

      Bug confirmed not present in:
      MariaDB: 10.1.45 (dbg), 10.1.45 (opt), 10.2.32 (opt), 10.3.23 (opt), 10.4.13 (opt), 10.5.2 (opt)
      MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.47 (dbg), 5.6.47 (opt), 5.7.29 (dbg), 5.7.29 (opt), 8.0.19 (dbg), 8.0.19 (opt)

      Attachments

        Issue Links

          Activity

            SET SESSION insert_id=0;
            CREATE TABLE t (a SERIAL KEY,b INT);
            INSERT INTO t (b) VALUES (1);
            

            Leads to:

            10.6.0 bfb4761ca04704d68dba51f76d7c9967f880a6ee (Debug)

            mysqld: /test/10.6_dbg/sql/handler.cc:3660: int handler::update_auto_increment(): Assertion `nr != 0' failed.
            

            10.6.0 bfb4761ca04704d68dba51f76d7c9967f880a6ee (Debug)

            Core was generated by `/test/MD110221-mariadb-10.6.0-linux-x86_64-dbg/bin/mysqld --no-defaults --core-'.
            Program terminated with signal SIGABRT, Aborted.
            #0  __pthread_kill (threadid=<optimized out>, signo=signo@entry=6)
                at ../sysdeps/unix/sysv/linux/pthread_kill.c:56
            [Current thread is 1 (Thread 0x147c200b1700 (LWP 2994100))]
            (gdb) bt
            #0  __pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:56
            #1  0x0000561c887b055c in my_write_core (sig=sig@entry=6) at /test/10.6_dbg/mysys/stacktrace.c:424
            #2  0x0000561c87f484de in handle_fatal_signal (sig=6) at /test/10.6_dbg/sql/signal_handler.cc:330
            #3  <signal handler called>
            #4  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
            #5  0x0000147c2266d859 in __GI_abort () at abort.c:79
            #6  0x0000147c2266d729 in __assert_fail_base (fmt=0x147c22803588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x561c88aa9070 "nr != 0", file=0x561c88aa88ff "/test/10.6_dbg/sql/handler.cc", line=3660, function=<optimized out>) at assert.c:92
            #7  0x0000147c2267ef36 in __GI___assert_fail (assertion=assertion@entry=0x561c88aa9070 "nr != 0", file=file@entry=0x561c88aa88ff "/test/10.6_dbg/sql/handler.cc", line=line@entry=3660, function=function@entry=0x561c88aaa970 "int handler::update_auto_increment()") at assert.c:101
            #8  0x0000561c87f54419 in handler::update_auto_increment (this=this@entry=0x147bdc025c80) at /test/10.6_dbg/sql/handler.cc:3660
            #9  0x0000561c883540a8 in ha_innobase::write_row (this=0x147bdc025c80, record=0x147bdc025818 <incomplete sequence \375>) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:7324
            #10 0x0000561c87f5c826 in handler::ha_write_row (this=0x147bdc025c80, buf=0x147bdc025818 <incomplete sequence \375>) at /test/10.6_dbg/sql/handler.cc:7151
            #11 0x0000561c87c32547 in write_record (thd=thd@entry=0x147bdc000db8, table=table@entry=0x147bdc022148, info=info@entry=0x147c200afc60, sink=sink@entry=0x0) at /test/10.6_dbg/sql/sql_insert.cc:2106
            #12 0x0000561c87c3ec0a in mysql_insert (thd=thd@entry=0x147bdc000db8, table_list=0x147bdc0127a0, fields=@0x147bdc005e30: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x147bdc012fc0, last = 0x147bdc012fc0, elements = 1}, <No data fields>}, values_list=@0x147bdc005e78: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x147bdc013500, last = 0x147bdc013500, elements = 1}, <No data fields>}, update_fields=@0x147bdc005e60: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x561c89251300 <end_of_list>, last = 0x147bdc005e60, elements = 0}, <No data fields>}, update_values=@0x147bdc005e48: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x561c89251300 <end_of_list>, last = 0x147bdc005e48, elements = 0}, <No data fields>}, duplic=DUP_ERROR, ignore=false, result=0x0) at /test/10.6_dbg/sql/sql_insert.cc:1099
            #13 0x0000561c87c857a2 in mysql_execute_command (thd=thd@entry=0x147bdc000db8) at /test/10.6_dbg/sql/sql_parse.cc:4453
            #14 0x0000561c87c7021a in mysql_parse (thd=thd@entry=0x147bdc000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x147c200b03d0) at /test/10.6_dbg/sql/sql_parse.cc:7906
            #15 0x0000561c87c7e30b in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x147bdc000db8, packet=packet@entry=0x147bdc01aac9 "INSERT INTO t (b) VALUES (1)", packet_length=packet_length@entry=28) at /test/10.6_dbg/sql/sql_class.h:1295
            #16 0x0000561c87c8163d in do_command (thd=0x147bdc000db8) at /test/10.6_dbg/sql/sql_parse.cc:1365
            #17 0x0000561c87ddd1ab in do_handle_one_connection (connect=<optimized out>, connect@entry=0x561c8ac86448, put_in_cache=put_in_cache@entry=true) at /test/10.6_dbg/sql/sql_connect.cc:1410
            #18 0x0000561c87ddd8af in handle_one_connection (arg=arg@entry=0x561c8ac86448) at /test/10.6_dbg/sql/sql_connect.cc:1312
            #19 0x0000561c8829127d in pfs_spawn_thread (arg=0x561c8ab6b998) at /test/10.6_dbg/storage/perfschema/pfs.cc:2201
            #20 0x0000147c22b7b609 in start_thread (arg=<optimized out>) at pthread_create.c:477
            #21 0x0000147c2276a293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
            

            Bug confirmed present in:
            MariaDB: 10.2.37 (dbg), 10.3.28 (dbg), 10.4.18 (dbg), 10.5.9 (dbg), 10.6.0 (dbg)

            Bug (or feature/syntax) confirmed not present in:
            MariaDB: 10.2.37 (opt), 10.3.28 (opt), 10.4.18 (opt), 10.5.9 (opt), 10.6.0 (opt)
            MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt), 5.7.33 (dbg), 5.7.33 (opt), 8.0.23 (dbg), 8.0.23 (opt)

            Roel Roel Van de Paar added a comment - SET SESSION insert_id=0; CREATE TABLE t (a SERIAL KEY,b INT); INSERT INTO t (b) VALUES (1); Leads to: 10.6.0 bfb4761ca04704d68dba51f76d7c9967f880a6ee (Debug) mysqld: /test/10.6_dbg/sql/handler.cc:3660: int handler::update_auto_increment(): Assertion `nr != 0' failed. 10.6.0 bfb4761ca04704d68dba51f76d7c9967f880a6ee (Debug) Core was generated by `/test/MD110221-mariadb-10.6.0-linux-x86_64-dbg/bin/mysqld --no-defaults --core-'. Program terminated with signal SIGABRT, Aborted. #0 __pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:56 [Current thread is 1 (Thread 0x147c200b1700 (LWP 2994100))] (gdb) bt #0 __pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ../sysdeps/unix/sysv/linux/pthread_kill.c:56 #1 0x0000561c887b055c in my_write_core (sig=sig@entry=6) at /test/10.6_dbg/mysys/stacktrace.c:424 #2 0x0000561c87f484de in handle_fatal_signal (sig=6) at /test/10.6_dbg/sql/signal_handler.cc:330 #3 <signal handler called> #4 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #5 0x0000147c2266d859 in __GI_abort () at abort.c:79 #6 0x0000147c2266d729 in __assert_fail_base (fmt=0x147c22803588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x561c88aa9070 "nr != 0", file=0x561c88aa88ff "/test/10.6_dbg/sql/handler.cc", line=3660, function=<optimized out>) at assert.c:92 #7 0x0000147c2267ef36 in __GI___assert_fail (assertion=assertion@entry=0x561c88aa9070 "nr != 0", file=file@entry=0x561c88aa88ff "/test/10.6_dbg/sql/handler.cc", line=line@entry=3660, function=function@entry=0x561c88aaa970 "int handler::update_auto_increment()") at assert.c:101 #8 0x0000561c87f54419 in handler::update_auto_increment (this=this@entry=0x147bdc025c80) at /test/10.6_dbg/sql/handler.cc:3660 #9 0x0000561c883540a8 in ha_innobase::write_row (this=0x147bdc025c80, record=0x147bdc025818 <incomplete sequence \375>) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.cc:7324 #10 0x0000561c87f5c826 in handler::ha_write_row (this=0x147bdc025c80, buf=0x147bdc025818 <incomplete sequence \375>) at /test/10.6_dbg/sql/handler.cc:7151 #11 0x0000561c87c32547 in write_record (thd=thd@entry=0x147bdc000db8, table=table@entry=0x147bdc022148, info=info@entry=0x147c200afc60, sink=sink@entry=0x0) at /test/10.6_dbg/sql/sql_insert.cc:2106 #12 0x0000561c87c3ec0a in mysql_insert (thd=thd@entry=0x147bdc000db8, table_list=0x147bdc0127a0, fields=@0x147bdc005e30: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x147bdc012fc0, last = 0x147bdc012fc0, elements = 1}, <No data fields>}, values_list=@0x147bdc005e78: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x147bdc013500, last = 0x147bdc013500, elements = 1}, <No data fields>}, update_fields=@0x147bdc005e60: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x561c89251300 <end_of_list>, last = 0x147bdc005e60, elements = 0}, <No data fields>}, update_values=@0x147bdc005e48: {<base_list> = {<Sql_alloc> = {<No data fields>}, first = 0x561c89251300 <end_of_list>, last = 0x147bdc005e48, elements = 0}, <No data fields>}, duplic=DUP_ERROR, ignore=false, result=0x0) at /test/10.6_dbg/sql/sql_insert.cc:1099 #13 0x0000561c87c857a2 in mysql_execute_command (thd=thd@entry=0x147bdc000db8) at /test/10.6_dbg/sql/sql_parse.cc:4453 #14 0x0000561c87c7021a in mysql_parse (thd=thd@entry=0x147bdc000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x147c200b03d0) at /test/10.6_dbg/sql/sql_parse.cc:7906 #15 0x0000561c87c7e30b in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x147bdc000db8, packet=packet@entry=0x147bdc01aac9 "INSERT INTO t (b) VALUES (1)", packet_length=packet_length@entry=28) at /test/10.6_dbg/sql/sql_class.h:1295 #16 0x0000561c87c8163d in do_command (thd=0x147bdc000db8) at /test/10.6_dbg/sql/sql_parse.cc:1365 #17 0x0000561c87ddd1ab in do_handle_one_connection (connect=<optimized out>, connect@entry=0x561c8ac86448, put_in_cache=put_in_cache@entry=true) at /test/10.6_dbg/sql/sql_connect.cc:1410 #18 0x0000561c87ddd8af in handle_one_connection (arg=arg@entry=0x561c8ac86448) at /test/10.6_dbg/sql/sql_connect.cc:1312 #19 0x0000561c8829127d in pfs_spawn_thread (arg=0x561c8ab6b998) at /test/10.6_dbg/storage/perfschema/pfs.cc:2201 #20 0x0000147c22b7b609 in start_thread (arg=<optimized out>) at pthread_create.c:477 #21 0x0000147c2276a293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Bug confirmed present in: MariaDB: 10.2.37 (dbg), 10.3.28 (dbg), 10.4.18 (dbg), 10.5.9 (dbg), 10.6.0 (dbg) Bug (or feature/syntax) confirmed not present in: MariaDB: 10.2.37 (opt), 10.3.28 (opt), 10.4.18 (opt), 10.5.9 (opt), 10.6.0 (opt) MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt), 5.7.33 (dbg), 5.7.33 (opt), 8.0.23 (dbg), 8.0.23 (opt)

            Additional testcase

            CREATE TEMPORARY TABLE t0 (id INT AUTO_INCREMENT KEY,a INT,INDEX (a));
            SET SESSION insert_id=0;
            INSERT INTO t0 (a) VALUES (0),(0),(0),(0);
            

            Roel Roel Van de Paar added a comment - Additional testcase CREATE TEMPORARY TABLE t0 (id INT AUTO_INCREMENT KEY ,a INT , INDEX (a)); SET SESSION insert_id=0; INSERT INTO t0 (a) VALUES (0),(0),(0),(0);

            sanja When you have a moment, a fix for this bug would be helpful. Thank you.

            Roel Roel Van de Paar added a comment - sanja When you have a moment, a fix for this bug would be helpful. Thank you.
            sanja Oleksandr Byelkin added a comment - - edited

            After discussing with Monty we figured out that insert_id shoud not have value of 0 (because 0 and NULL are special values which mean insert next value)

            sanja Oleksandr Byelkin added a comment - - edited After discussing with Monty we figured out that insert_id shoud not have value of 0 (because 0 and NULL are special values which mean insert next value)

            commit 054dcdbeef649628e3e53cc538f243c55d8e7f87 (HEAD -> bb-10.2-MDEV-22118, origin/bb-10.2-MDEV-22118)
            Author: Oleksandr Byelkin <sanja@mariadb.com>
            Date:   Thu Sep 16 20:51:22 2021 +0200
             
                MDEV-22118: handler::update_auto_increment(): Assertion `nr != 0' failed. | SIGABRT in handler::update_auto_increment
                
                Changed insert_id default and range to exclude 0 (because it is special value)
            

            sanja Oleksandr Byelkin added a comment - commit 054dcdbeef649628e3e53cc538f243c55d8e7f87 (HEAD -> bb-10.2-MDEV-22118, origin/bb-10.2-MDEV-22118) Author: Oleksandr Byelkin <sanja@mariadb.com> Date: Thu Sep 16 20:51:22 2021 +0200   MDEV-22118: handler::update_auto_increment(): Assertion `nr != 0' failed. | SIGABRT in handler::update_auto_increment Changed insert_id default and range to exclude 0 (because it is special value)

            People

              holyfoot Alexey Botchkov
              Roel Roel Van de Paar
              Votes:
              0 Vote for this issue
              Watchers:
              6 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.