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

Assertion `field->col->is_binary() || field->prefix_len % field->col->mbmaxlen == 0' failed in dict_index_add_to_cache

    XMLWordPrintable

    Details

      Description

      Further to MDEV-22899:

      CREATE TABLE t (id INT KEY,a VARCHAR(16) collate utf8_unicode_ci DEFAULT'',INDEX (a (4))) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ENGINE=InnoDB;
      ALTER TABLE t CHANGE a a VARCHAR(3000) CHARACTER SET utf8mb4;
      

      Leads to:

      10.6.5 9ac1ac006197c8979db1dc73f4e983f623e831e8 (Debug)

      mysqld: /test/10.6_dbg/storage/innobase/dict/dict0dict.cc:2089: dberr_t dict_index_add_to_cache(dict_index_t*&, ulint, const dict_add_v_col_t*): Assertion `field->col->is_binary() || field->prefix_len % field->col->mbmaxlen == 0' failed.
      

      10.6.5 9ac1ac006197c8979db1dc73f4e983f623e831e8 (Debug)

      Core was generated by `/test/MD160821-mariadb-10.6.5-linux-x86_64-dbg/bin/mysqld --no-defaults --core-'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      [Current thread is 1 (Thread 0x14b878537700 (LWP 2901835))]
      (gdb) bt
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      #1  0x000014b88399c859 in __GI_abort () at abort.c:79
      #2  0x000014b88399c729 in __assert_fail_base (fmt=0x14b883b32588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55eba32cd918 "field->col->is_binary() || field->prefix_len % field->col->mbmaxlen == 0", file=0x55eba32cc5f8 "/test/10.6_dbg/storage/innobase/dict/dict0dict.cc", line=2089, function=<optimized out>) at assert.c:92
      #3  0x000014b8839adf36 in __GI___assert_fail (assertion=assertion@entry=0x55eba32cd918 "field->col->is_binary() || field->prefix_len % field->col->mbmaxlen == 0", file=file@entry=0x55eba32cc5f8 "/test/10.6_dbg/storage/innobase/dict/dict0dict.cc", line=line@entry=2089, function=function@entry=0x55eba32cd778 "dberr_t dict_index_add_to_cache(dict_index_t*&, ulint, const dict_add_v_col_t*)") at assert.c:101
      #4  0x000055eba2d48323 in dict_index_add_to_cache (index=@0x14b838022b30: 0x14b838022668, page_no=page_no@entry=4294967295, add_v=<optimized out>) at /test/10.6_dbg/storage/innobase/include/dict0mem.h:725
      #5  0x000055eba2d35914 in dict_create_index_step (thr=thr@entry=0x14b838040cd0) at /test/10.6_dbg/storage/innobase/dict/dict0crea.cc:1226
      #6  0x000055eba2b4486b in que_thr_step (thr=0x14b838040cd0) at /test/10.6_dbg/storage/innobase/que/que0que.cc:663
      #7  que_run_threads_low (thr=0x14b838040cd0) at /test/10.6_dbg/storage/innobase/que/que0que.cc:709
      #8  que_run_threads (thr=thr@entry=0x14b838040cd0) at /test/10.6_dbg/storage/innobase/que/que0que.cc:729
      #9  0x000055eba2a548e1 in create_index_dict (trx=0x14b87a7f2390, index=index@entry=0x14b838022668, mode=mode@entry=FIL_ENCRYPTION_DEFAULT, key_id=key_id@entry=1, add_v=add_v@entry=0x0) at /test/10.6_dbg/storage/innobase/handler/handler0alter.cc:6111
      #10 0x000055eba2a5e277 in prepare_inplace_alter_table_dict (ha_alter_info=ha_alter_info@entry=0x14b878532f50, altered_table=altered_table@entry=0x14b878533010, old_table=<optimized out>, table_name=<optimized out>, flags=<optimized out>, flags2=<optimized out>, fts_doc_id_col=<optimized out>, add_fts_doc_id=<optimized out>, add_fts_doc_id_idx=<optimized out>) at /test/10.6_dbg/storage/innobase/handler/handler0alter.cc:6967
      #11 0x000055eba2a63967 in ha_innobase::prepare_inplace_alter_table (this=<optimized out>, altered_table=<optimized out>, ha_alter_info=<optimized out>) at /test/10.6_dbg/storage/innobase/handler/ha_innodb.h:699
      #12 0x000055eba264ff17 in handler::ha_prepare_inplace_alter_table (this=0x14b838029380, altered_table=altered_table@entry=0x14b878533010, ha_alter_info=ha_alter_info@entry=0x14b878532f50) at /test/10.6_dbg/sql/handler.cc:5171
      #13 0x000055eba2425cb9 in mysql_inplace_alter_table (thd=thd@entry=0x14b838000db8, table_list=0x14b8380140c0, table=table@entry=0x14b8380214c8, altered_table=altered_table@entry=0x14b878533010, ha_alter_info=ha_alter_info@entry=0x14b878532f50, target_mdl_request=target_mdl_request@entry=0x14b878533810, ddl_log_state=0x14b878532ea0, trigger_param=0x14b8785333e0, alter_ctx=0x14b8785346b0) at /test/10.6_dbg/sql/sql_table.cc:7326
      #14 0x000055eba2438ee5 in mysql_alter_table (thd=thd@entry=0x14b838000db8, new_db=new_db@entry=0x14b8380059b8, new_name=new_name@entry=0x14b838005dd0, create_info=create_info@entry=0x14b8785354d0, table_list=<optimized out>, table_list@entry=0x14b8380140c0, alter_info=alter_info@entry=0x14b8785353e0, order_num=<optimized out>, order=<optimized out>, ignore=<optimized out>, if_exists=<optimized out>) at /test/10.6_dbg/sql/sql_table.cc:10205
      #15 0x000055eba24c8257 in Sql_cmd_alter_table::execute (this=<optimized out>, thd=0x14b838000db8) at /test/10.6_dbg/sql/structs.h:568
      #16 0x000055eba2362ce6 in mysql_execute_command (thd=thd@entry=0x14b838000db8, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /test/10.6_dbg/sql/sql_parse.cc:5997
      #17 0x000055eba2349955 in mysql_parse (thd=thd@entry=0x14b838000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x14b878536400) at /test/10.6_dbg/sql/sql_parse.cc:8030
      #18 0x000055eba235857a in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x14b838000db8, packet=packet@entry=0x14b83800b759 "ALTER TABLE t CHANGE a a VARCHAR(3000) CHARACTER SET utf8mb4", packet_length=packet_length@entry=60, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_class.h:1357
      #19 0x000055eba235b993 in do_command (thd=0x14b838000db8, blocking=blocking@entry=true) at /test/10.6_dbg/sql/sql_parse.cc:1404
      #20 0x000055eba24c0264 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55eba5cdccc8, put_in_cache=put_in_cache@entry=true) at /test/10.6_dbg/sql/sql_connect.cc:1418
      #21 0x000055eba24c0869 in handle_one_connection (arg=arg@entry=0x55eba5cdccc8) at /test/10.6_dbg/sql/sql_connect.cc:1312
      #22 0x000055eba296f1ec in pfs_spawn_thread (arg=0x55eba5bc5768) at /test/10.6_dbg/storage/perfschema/pfs.cc:2201
      #23 0x000014b883eab609 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #24 0x000014b883a99293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      

      10.7.0 52505bf20de0ce77a5c0b0a74af021051987bb0d (Debug)

      mysqld: /test/10.7_dbg/storage/innobase/dict/dict0dict.cc:2089: dberr_t dict_index_add_to_cache(dict_index_t*&, ulint, const dict_add_v_col_t*): Assertion `field->col->is_binary() || field->prefix_len % field->col->mbmaxlen == 0' failed.
      

      10.7.0 52505bf20de0ce77a5c0b0a74af021051987bb0d (Debug)

      Core was generated by `/test/MD160821-mariadb-10.7.0-linux-x86_64-dbg/bin/mysqld --no-defaults --core-'.
      Program terminated with signal SIGABRT, Aborted.
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      [Current thread is 1 (Thread 0x1515d00bc700 (LWP 2902334))]
      (gdb) bt
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      #1  0x00001515da722859 in __GI_abort () at abort.c:79
      #2  0x00001515da722729 in __assert_fail_base (fmt=0x1515da8b8588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55a6378557a8 "field->col->is_binary() || field->prefix_len % field->col->mbmaxlen == 0", file=0x55a637854488 "/test/10.7_dbg/storage/innobase/dict/dict0dict.cc", line=2089, function=<optimized out>) at assert.c:92
      #3  0x00001515da733f36 in __GI___assert_fail (assertion=assertion@entry=0x55a6378557a8 "field->col->is_binary() || field->prefix_len % field->col->mbmaxlen == 0", file=file@entry=0x55a637854488 "/test/10.7_dbg/storage/innobase/dict/dict0dict.cc", line=line@entry=2089, function=function@entry=0x55a637855608 "dberr_t dict_index_add_to_cache(dict_index_t*&, ulint, const dict_add_v_col_t*)") at assert.c:101
      #4  0x000055a6372cfe5b in dict_index_add_to_cache (index=@0x151584021bf0: 0x151584021728, page_no=page_no@entry=4294967295, add_v=<optimized out>) at /test/10.7_dbg/storage/innobase/include/dict0mem.h:725
      #5  0x000055a6372bde86 in dict_create_index_step (thr=thr@entry=0x15158403ff80) at /test/10.7_dbg/storage/innobase/dict/dict0crea.cc:1226
      #6  0x000055a6370ce5f1 in que_thr_step (thr=0x15158403ff80) at /test/10.7_dbg/storage/innobase/que/que0que.cc:663
      #7  que_run_threads_low (thr=0x15158403ff80) at /test/10.7_dbg/storage/innobase/que/que0que.cc:709
      #8  que_run_threads (thr=thr@entry=0x15158403ff80) at /test/10.7_dbg/storage/innobase/que/que0que.cc:729
      #9  0x000055a636fdf219 in create_index_dict (trx=0x1515d1578390, index=index@entry=0x151584021728, mode=mode@entry=FIL_ENCRYPTION_DEFAULT, key_id=key_id@entry=1, add_v=add_v@entry=0x0) at /test/10.7_dbg/storage/innobase/handler/handler0alter.cc:6111
      #10 0x000055a636fe8baf in prepare_inplace_alter_table_dict (ha_alter_info=ha_alter_info@entry=0x1515d00b7f50, altered_table=altered_table@entry=0x1515d00b8010, old_table=<optimized out>, table_name=<optimized out>, flags=<optimized out>, flags2=<optimized out>, fts_doc_id_col=<optimized out>, add_fts_doc_id=<optimized out>, add_fts_doc_id_idx=<optimized out>) at /test/10.7_dbg/storage/innobase/handler/handler0alter.cc:6967
      #11 0x000055a636fee29f in ha_innobase::prepare_inplace_alter_table (this=<optimized out>, altered_table=<optimized out>, ha_alter_info=<optimized out>) at /test/10.7_dbg/storage/innobase/handler/ha_innodb.h:699
      #12 0x000055a636c21da9 in handler::ha_prepare_inplace_alter_table (this=0x151584028480, altered_table=altered_table@entry=0x1515d00b8010, ha_alter_info=ha_alter_info@entry=0x1515d00b7f50) at /test/10.7_dbg/sql/handler.cc:5171
      #13 0x000055a6369f6851 in mysql_inplace_alter_table (thd=thd@entry=0x151584000db8, table_list=0x151584013da0, table=table@entry=0x151584020328, altered_table=altered_table@entry=0x1515d00b8010, ha_alter_info=ha_alter_info@entry=0x1515d00b7f50, target_mdl_request=target_mdl_request@entry=0x1515d00b8810, ddl_log_state=0x1515d00b7ea0, trigger_param=0x1515d00b83e0, alter_ctx=0x1515d00b96b0) at /test/10.7_dbg/sql/sql_table.cc:7326
      #14 0x000055a636a09a5f in mysql_alter_table (thd=thd@entry=0x151584000db8, new_db=new_db@entry=0x1515840059b8, new_name=new_name@entry=0x151584005dd0, create_info=create_info@entry=0x1515d00ba4d0, table_list=<optimized out>, table_list@entry=0x151584013da0, alter_info=alter_info@entry=0x1515d00ba3e0, order_num=<optimized out>, order=<optimized out>, ignore=<optimized out>, if_exists=<optimized out>) at /test/10.7_dbg/sql/sql_table.cc:10205
      #15 0x000055a636a98dc9 in Sql_cmd_alter_table::execute (this=<optimized out>, thd=0x151584000db8) at /test/10.7_dbg/sql/structs.h:568
      #16 0x000055a636921e3c in mysql_execute_command (thd=thd@entry=0x151584000db8, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /test/10.7_dbg/sql/sql_parse.cc:5997
      #17 0x000055a636908ac3 in mysql_parse (thd=thd@entry=0x151584000db8, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x1515d00bb400) at /test/10.7_dbg/sql/sql_parse.cc:8030
      #18 0x000055a6369176c8 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x151584000db8, packet=packet@entry=0x15158400b739 "ALTER TABLE t CHANGE a a VARCHAR(3000) CHARACTER SET utf8mb4", packet_length=packet_length@entry=60, blocking=blocking@entry=true) at /test/10.7_dbg/sql/sql_class.h:1357
      #19 0x000055a63691aae9 in do_command (thd=0x151584000db8, blocking=blocking@entry=true) at /test/10.7_dbg/sql/sql_parse.cc:1404
      #20 0x000055a636a90dd6 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55a63a2a06a8, put_in_cache=put_in_cache@entry=true) at /test/10.7_dbg/sql/sql_connect.cc:1418
      #21 0x000055a636a913db in handle_one_connection (arg=arg@entry=0x55a63a2a06a8) at /test/10.7_dbg/sql/sql_connect.cc:1312
      #22 0x000055a636ef9ce4 in pfs_spawn_thread (arg=0x55a63a1c95e8) at /test/10.7_dbg/storage/perfschema/pfs.cc:2201
      #23 0x00001515dac31609 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #24 0x00001515da81f293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      

      Bug confirmed present in:
      MariaDB: 10.4.22 (dbg), 10.5.13 (dbg), 10.6.5 (dbg), 10.7.0 (dbg)

      Bug (or feature/syntax) confirmed not present in:
      MariaDB: 10.2.41 (dbg), 10.2.41 (opt), 10.3.32 (dbg), 10.3.32 (opt), 10.4.22 (opt), 10.5.13 (opt), 10.6.5 (opt), 10.7.0 (opt)
      MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt), 5.7.35 (dbg), 5.7.35 (opt), 8.0.26 (dbg), 8.0.26 (opt)

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              kevg Eugene Kosov
              Reporter:
              Roel Roel Van de Paar
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Git Integration