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

Server crash or assertion failure upon CONVERT <temporary table> TO PARTITION

    XMLWordPrintable

Details

    Description

      --source include/have_partition.inc
       
      create table t1 (a int) partition by range (a) (
        partition p0 values less than (100)
      );
      insert into t1 values (1);
       
      create temporary table t (a int);
      insert into t values (150);
       
      alter table t1 convert table t to partition pn values less than (200);
       
      # Cleanup
      drop table t1;
      

      10.11 9a7deb1c36f9ed08a1ce48e7fd635b45c721dcd6 non-debug build

      #2  <signal handler called>
      #3  0x00005640a8ecd9da in MDL_lock::incompatible_granted_types_bitmap (this=<optimized out>) at /data/bld/10.11-rel/sql/mdl.cc:595
      #4  MDL_ticket::has_stronger_or_equal_type (this=this@entry=0x0, type=type@entry=MDL_EXCLUSIVE) at /data/bld/10.11-rel/sql/mdl.cc:1903
      #5  0x00005640a8ecf88c in MDL_context::upgrade_shared_lock (this=this@entry=0x7f4ae0000dc0, mdl_ticket=0x0, new_type=new_type@entry=MDL_EXCLUSIVE, lock_wait_timeout=86400) at /data/bld/10.11-rel/sql/mdl.cc:2610
      #6  0x00005640a8d3f5f5 in wait_while_table_is_used (thd=thd@entry=0x7f4ae0000c68, table=table@entry=0x7f4ae01a0128, function=function@entry=HA_EXTRA_PREPARE_FOR_RENAME) at /data/bld/10.11-rel/sql/sql_base.cc:1373
      #7  0x00005640a8dc0801 in fast_alter_partition_table (thd=thd@entry=0x7f4ae0000c68, table=table@entry=0x7f4ae0101fa8, alter_info=alter_info@entry=0x7f4af15a3360, alter_ctx=alter_ctx@entry=0x7f4af15a2650, create_info=create_info@entry=0x7f4af15a34d0, table_list=0x7f4ae0010c90) at /data/bld/10.11-rel/sql/sql_partition.cc:7666
      #8  0x00005640a8e64032 in mysql_alter_table (thd=thd@entry=0x7f4ae0000c68, new_db=new_db@entry=0x7f4ae0005808, new_name=new_name@entry=0x7f4ae0005c68, create_info=create_info@entry=0x7f4af15a34d0, table_list=<optimized out>, table_list@entry=0x7f4ae0010c90, recreate_info=recreate_info@entry=0x7f4af15a3340, alter_info=<optimized out>, order_num=<optimized out>, order=<optimized out>, ignore=<optimized out>, if_exists=<optimized out>) at /data/bld/10.11-rel/sql/sql_table.cc:10666
      #9  0x00005640a8eca1ea in Sql_cmd_alter_table::execute (this=<optimized out>, thd=0x7f4ae0000c68) at /data/bld/10.11-rel/sql/sql_alter.cc:688
      #10 0x00005640a8dab4f6 in mysql_execute_command (thd=thd@entry=0x7f4ae0000c68, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /data/bld/10.11-rel/sql/sql_parse.cc:6027
      #11 0x00005640a8dafa85 in mysql_parse (thd=0x7f4ae0000c68, rawbuf=<optimized out>, length=<optimized out>, parser_state=<optimized out>) at /data/bld/10.11-rel/sql/sql_parse.cc:8031
      #12 0x00005640a8db19c5 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x7f4ae0000c68, packet=packet@entry=0x7f4ae0102979 "alter table t1 convert table t to partition pn values less than (200)", packet_length=packet_length@entry=69, blocking=blocking@entry=true) at /data/bld/10.11-rel/sql/sql_parse.cc:1993
      #13 0x00005640a8db2fd7 in do_command (thd=0x7f4ae0000c68, blocking=blocking@entry=true) at /data/bld/10.11-rel/sql/sql_parse.cc:1407
      #14 0x00005640a8ec53b7 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x5640ab6f15d8, put_in_cache=put_in_cache@entry=true) at /data/bld/10.11-rel/sql/sql_connect.cc:1416
      #15 0x00005640a8ec574d in handle_one_connection (arg=arg@entry=0x5640ab6f15d8) at /data/bld/10.11-rel/sql/sql_connect.cc:1318
      #16 0x00005640a91d66e7 in pfs_spawn_thread (arg=0x5640ab6ab008) at /data/bld/10.11-rel/storage/perfschema/pfs.cc:2201
      #17 0x00007f4af6ea8044 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
      #18 0x00007f4af6f2861c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
      

      10.11 9a7deb1c36f9ed08a1ce48e7fd635b45c721dcd6

      mariadbd: /data/bld/10.11-asan/sql/sql_base.cc:1368: bool wait_while_table_is_used(THD*, TABLE*, ha_extra_function): Assertion `!table->s->tmp_table' failed.
      231228  1:13:02 [ERROR] mysqld got signal 6 ;
       
      #9  0x00007faada453e32 in __GI___assert_fail (assertion=0x563a0464ace0 "!table->s->tmp_table", file=0x563a046499e0 "/data/bld/10.11-asan/sql/sql_base.cc", line=1368, function=0x563a0464ad20 "bool wait_while_table_is_used(THD*, TABLE*, ha_extra_function)") at ./assert/assert.c:101
      #10 0x0000563a024869db in wait_while_table_is_used (thd=0x62c0000b0218, table=0x61900009dd98, function=HA_EXTRA_PREPARE_FOR_RENAME) at /data/bld/10.11-asan/sql/sql_base.cc:1368
      #11 0x0000563a026a1a98 in fast_alter_partition_table (thd=0x62c0000b0218, table=0x619000098d98, alter_info=0x7faad2c1bf60, alter_ctx=0x7faad2c1b0d0, create_info=0x7faad2c1c110, table_list=0x6290000e6398) at /data/bld/10.11-asan/sql/sql_partition.cc:7666
      #12 0x0000563a02940b89 in mysql_alter_table (thd=0x62c0000b0218, new_db=0x62c0000b4f80, new_name=0x62c0000b53e0, create_info=0x7faad2c1c110, table_list=0x6290000e6398, recreate_info=0x7faad2c1bec0, alter_info=0x7faad2c1bf60, order_num=0, order=0x0, ignore=false, if_exists=false) at /data/bld/10.11-asan/sql/sql_table.cc:10666
      #13 0x0000563a02b09259 in Sql_cmd_alter_table::execute (this=0x6290000e7a40, thd=0x62c0000b0218) at /data/bld/10.11-asan/sql/sql_alter.cc:688
      #14 0x0000563a02650ab8 in mysql_execute_command (thd=0x62c0000b0218, is_called_from_prepared_stmt=false) at /data/bld/10.11-asan/sql/sql_parse.cc:6027
      #15 0x0000563a0265db0d in mysql_parse (thd=0x62c0000b0218, rawbuf=0x6290000e6238 "alter table t1 convert table t to partition pn values less than (200)", length=69, parser_state=0x7faad2c1d9e0) at /data/bld/10.11-asan/sql/sql_parse.cc:8031
      #16 0x0000563a0263398d in dispatch_command (command=COM_QUERY, thd=0x62c0000b0218, packet=0x629000258219 "alter table t1 convert table t to partition pn values less than (200)", packet_length=69, blocking=true) at /data/bld/10.11-asan/sql/sql_parse.cc:1894
      #17 0x0000563a026306ba in do_command (thd=0x62c0000b0218, blocking=true) at /data/bld/10.11-asan/sql/sql_parse.cc:1407
      #18 0x0000563a02aea420 in do_handle_one_connection (connect=0x608000002eb8, put_in_cache=true) at /data/bld/10.11-asan/sql/sql_connect.cc:1416
      #19 0x0000563a02ae9de1 in handle_one_connection (arg=0x608000002e38) at /data/bld/10.11-asan/sql/sql_connect.cc:1318
      #20 0x0000563a036e61e0 in pfs_spawn_thread (arg=0x617000005b98) at /data/bld/10.11-asan/storage/perfschema/pfs.cc:2201
      #21 0x00007faada4a8044 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
      #22 0x00007faada52861c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
      

      Reproducible with at least MyISAM and InnoDB.
      EXCHANGE PARTITION with a temporary table produces an error:

      ER_PARTITION_EXCHANGE_TEMP_TABLE (1733): Table to exchange with partition is temporary: 't'
      

      Maybe it's the expected outcome here as well.

      Result on a release build:
      server crash as above

      Attachments

        Issue Links

          Activity

            People

              holyfoot Alexey Botchkov
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.