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

Various assertion failures due to MDEV-15562 instant ALTER TABLE

    Details

      Description

      10.4 b9a9055793ab8b9a50200e2f5560246

      mysqld: /10.4/src/storage/innobase/handler/handler0alter.cc:348: void dict_index_t::instant_add_field(const dict_index_t&): Assertion `fields[i].same(instant.fields[i])' failed.
      181114 17:22:54 [ERROR] mysqld got signal 6 ;
       
      stdlib/abort.c:91(__GI_abort)[0x7eff6adf602a]
      assert/assert.c:92(__assert_fail_base)[0x7eff6adecbd7]
      /lib/x86_64-linux-gnu/libc.so.6(+0x2dc82)[0x7eff6adecc82]
      handler/handler0alter.cc:349(dict_index_t::instant_add_field(dict_index_t const&))[0x561842709dd7]
      handler/handler0alter.cc:491(dict_table_t::instant_column(dict_table_t const&, unsigned long const*))[0x56184270c46e]
      handler/handler0alter.cc:5251(innobase_instant_try(Alter_inplace_info const*, ha_innobase_inplace_ctx*, TABLE const*, TABLE const*, trx_t*))[0x5618426d9c30]
      handler/handler0alter.cc:9890(commit_try_norebuild(Alter_inplace_info*, ha_innobase_inplace_ctx*, TABLE*, TABLE const*, trx_t*, char const*))[0x561842716ebf]
      handler/handler0alter.cc:10519(ha_innobase::commit_inplace_alter_table(TABLE*, Alter_inplace_info*, bool))[0x5618426fb413]
      sql/handler.cc:4458(handler::ha_commit_inplace_alter_table(TABLE*, Alter_inplace_info*, bool))[0x561841e55b14]
      sql/sql_table.cc:7601(mysql_inplace_alter_table(THD*, TABLE_LIST*, TABLE*, TABLE*, Alter_inplace_info*, enum_alter_inplace_result, MDL_request*, Alter_table_ctx*))[0x56184196a731]
      sql/sql_table.cc:9692(mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool))[0x561841976f18]
      sql/sql_alter.cc:497(Sql_cmd_alter_table::execute(THD*))[0x561841ab5916]
      sql/sql_parse.cc:6289(mysql_execute_command(THD*))[0x56184176f692]
      sql/sql_parse.cc:8091(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x561841779ea1]
      sql/sql_parse.cc:1853(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool))[0x561841754d9e]
      sql/sql_parse.cc:1396(do_command(THD*))[0x561841751f36]
      sql/sql_connect.cc:1402(do_handle_one_connection(CONNECT*))[0x561841aa6da7]
      sql/sql_connect.cc:1309(handle_one_connection)[0x561841aa6784]
      /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba)[0x7eff6ba316ba]
      x86_64/clone.S:111(clone)[0x7eff6aec641d]
       
      Trying to get some variables.
      Some pointers may be invalid and cause the dump to abort.
      Query (0x62b000085288): ALTER TABLE `AA` ADD COLUMN ( icol1 TINYINT UNSIGNED ZEROFILL NOT NULL );
      

      mysqld: /10.4/src/storage/innobase/row/row0sel.cc:2905: void row_sel_field_store_in_mysql_format_func(byte*, const mysql_row_templ_t*, const dict_index_t*, ulint, const byte*, ulint): Assertion `(templ->is_virtual && !field) || (field && field->prefix_len ? field->prefix_len == len : templ->mysql_col_len == len)' failed.
      181114 17:24:58 [ERROR] mysqld got signal 6 ;
       
      linux/raise.c:54(__GI_raise)[0x7fde2d4f8428]
      stdlib/abort.c:91(__GI_abort)[0x7fde2d4fa02a]
      assert/assert.c:92(__assert_fail_base)[0x7fde2d4f0bd7]
      /lib/x86_64-linux-gnu/libc.so.6(+0x2dc82)[0x7fde2d4f0c82]
      row/row0sel.cc:2909(row_sel_field_store_in_mysql_format_func(unsigned char*, mysql_row_templ_t const*, dict_index_t const*, unsigned long, unsigned char const*, unsigned long))[0x55e20889704a]
      row/row0sel.cc:3073(row_sel_store_mysql_field_func(unsigned char*, row_prebuilt_t*, unsigned char const*, dict_index_t const*, unsigned long const*, unsigned long, mysql_row_templ_t const*))[0x55e208898153]
      row/row0sel.cc:3200(row_sel_store_mysql_rec(unsigned char*, row_prebuilt_t*, unsigned char const*, dtuple_t const*, bool, dict_index_t const*, unsigned long const*))[0x55e208899044]
      row/row0sel.cc:5480(row_search_mvcc(unsigned char*, page_cur_mode_t, row_prebuilt_t*, unsigned long, unsigned long))[0x55e2088a3732]
      handler/ha_innodb.cc:9258(ha_innobase::index_read(unsigned char*, unsigned char const*, unsigned int, ha_rkey_function))[0x55e2085867b7]
      handler/ha_innodb.cc:9635(ha_innobase::index_first(unsigned char*))[0x55e20858925f]
      handler/ha_innodb.cc:9728(ha_innobase::rnd_next(unsigned char*))[0x55e20858983e]
      sql/handler.cc:2765(handler::ha_rnd_next(unsigned char*))[0x55e207d61fd0]
      sql/records.cc:481(rr_sequential(READ_RECORD*))[0x55e2080f8127]
      sql/records.h:73(READ_RECORD::read_record())[0x55e20750e252]
      sql/sql_select.cc:20295(join_init_read_record(st_join_table*))[0x55e207791fc9]
      sql/sql_select.cc:19359(sub_select(JOIN*, st_join_table*, bool))[0x55e20778b9cf]
      sql/sql_select.cc:18902(do_select(JOIN*, Procedure*))[0x55e20778a027]
      sql/sql_select.cc:4082(JOIN::exec_inner())[0x55e207728be5]
      sql/sql_select.cc:3877(JOIN::exec())[0x55e20772692a]
      sql/sql_select.cc:4283(mysql_select(THD*, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*))[0x55e207729cb5]
      sql/sql_select.cc:385(handle_select(THD*, LEX*, select_result*, unsigned long))[0x55e207704205]
      sql/sql_parse.cc:6554(execute_sqlcom_select(THD*, TABLE_LIST*))[0x55e20768a8fc]
      sql/sql_parse.cc:3773(mysql_execute_command(THD*))[0x55e207679056]
      sql/sql_parse.cc:8091(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x55e207692ea1]
      sql/sql_parse.cc:1853(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool))[0x55e20766dd9e]
      sql/sql_parse.cc:1396(do_command(THD*))[0x55e20766af36]
      sql/sql_connect.cc:1402(do_handle_one_connection(CONNECT*))[0x55e2079bfda7]
      sql/sql_connect.cc:1309(handle_one_connection)[0x55e2079bf784]
      /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba)[0x7fde2e1356ba]
      x86_64/clone.S:111(clone)[0x7fde2d5ca41d]
       
      Trying to get some variables.
      Some pointers may be invalid and cause the dump to abort.
      Query (0x62b00007e288): select * from AA
      

      mysqld: /10.4/src/storage/innobase/row/row0merge.cc:766: ulint row_merge_buf_add(row_merge_buf_t*, dict_index_t*, const dict_table_t*, const dict_table_t*, fts_psort_t*, const dtuple_t*, const row_ext_t*, doc_id_t*, mem_heap_t*, dberr_t*, mem_heap_t**, TABLE*, trx_t*): Assertion `len <= col->len || ((col->mtype) == 5 || (col->mtype) == 14)' failed.
      181114 17:29:39 [ERROR] mysqld got signal 6 ;
       
      linux/raise.c:54(__GI_raise)[0x7f574c9f3428]
      stdlib/abort.c:91(__GI_abort)[0x7f574c9f502a]
      assert/assert.c:92(__assert_fail_base)[0x7f574c9ebbd7]
      /lib/x86_64-linux-gnu/libc.so.6(+0x2dc82)[0x7f574c9ebc82]
      row/row0merge.cc:769(row_merge_buf_add(row_merge_buf_t*, dict_index_t*, dict_table_t const*, dict_table_t const*, fts_psort_t*, dtuple_t const*, row_ext_t const*, unsigned long*, mem_block_info_t*, dberr_t*, mem_block_info_t**, TABLE*, trx_t*))[0x55cb6d0aeea8]
      row/row0merge.cc:2383(row_merge_read_clustered_index(trx_t*, TABLE*, dict_table_t const*, dict_table_t*, bool, dict_index_t**, dict_index_t*, fts_psort_t*, merge_file_t*, unsigned long const*, unsigned long, dtuple_t const*, dict_add_v_col_t const*, unsigned long const*, unsigned long, ib_sequence_t&, unsigned char*, bool, pfs_os_file_t*, ut_stage_alter_t*, double, unsigned char*, TABLE*, bool))[0x55cb6d0b8507]
      row/row0merge.cc:4766(row_merge_build_indexes(trx_t*, dict_table_t*, dict_table_t*, bool, dict_index_t**, unsigned long const*, unsigned long, TABLE*, dtuple_t const*, unsigned long const*, unsigned long, ib_sequence_t&, bool, ut_stage_alter_t*, dict_add_v_col_t const*, TABLE*, bool))[0x55cb6d0c4a1b]
      handler/handler0alter.cc:8041(ha_innobase::inplace_alter_table(TABLE*, Alter_inplace_info*))[0x55cb6cebdc6f]
      sql/handler.h:4184(handler::ha_inplace_alter_table(TABLE*, Alter_inplace_info*))[0x55cb6c14d4ee]
      sql/sql_table.cc:7555(mysql_inplace_alter_table(THD*, TABLE_LIST*, TABLE*, TABLE*, Alter_inplace_info*, enum_alter_inplace_result, MDL_request*, Alter_table_ctx*))[0x55cb6c137339]
      sql/sql_table.cc:9692(mysql_alter_table(THD*, st_mysql_const_lex_string const*, st_mysql_const_lex_string const*, HA_CREATE_INFO*, TABLE_LIST*, Alter_info*, unsigned int, st_order*, bool))[0x55cb6c143f18]
      sql/sql_table.cc:10604(mysql_recreate_table(THD*, TABLE_LIST*, bool))[0x55cb6c149fcd]
      sql/sql_admin.cc:58(admin_recreate_table(THD*, TABLE_LIST*))[0x55cb6c294f99]
      sql/sql_admin.cc:1027(mysql_admin_table(THD*, TABLE_LIST*, st_ha_check_opt*, char const*, thr_lock_type, bool, bool, unsigned int, int (*)(THD*, TABLE_LIST*, st_ha_check_opt*), int (handler::*)(THD*, st_ha_check_opt*), int (*)(THD*, TABLE_LIST*, st_ha_check_opt*)))[0x55cb6c29bf14]
      sql/sql_admin.cc:1375(Sql_cmd_optimize_table::execute(THD*))[0x55cb6c29ea20]
      sql/sql_parse.cc:6289(mysql_execute_command(THD*))[0x55cb6bf3c692]
      sql/sql_parse.cc:8091(mysql_parse(THD*, char*, unsigned int, Parser_state*, bool, bool))[0x55cb6bf46ea1]
      sql/sql_parse.cc:1853(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool))[0x55cb6bf21d9e]
      sql/sql_parse.cc:1396(do_command(THD*))[0x55cb6bf1ef36]
      sql/sql_connect.cc:1402(do_handle_one_connection(CONNECT*))[0x55cb6c273da7]
      sql/sql_connect.cc:1309(handle_one_connection)[0x55cb6c273784]
      /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba)[0x7f574d6306ba]
      x86_64/clone.S:111(clone)[0x7f574cac541d]
       
      Trying to get some variables.
      Some pointers may be invalid and cause the dump to abort.
      Query (0x62b00007e288): optimize table AA
      

      On the non-debug build:

      2018-11-14 17:56:47 17 [ERROR] InnoDB: Page old data size 64130 new data size 166, page old max ins size 0 new max ins size 16084
      2018-11-14 17:56:47 17 [ERROR] InnoDB: Submit a detailed bug report to https://jira.mariadb.org/
      

      to reproduce:

      perl ./runall-trials.pl --basedir=/git/10.4 --vardir=/1q --duration=350 --threads=6   --reporters=Backtrace,ErrorLog,Deadlock --validators=TransformerNoComparator --views  --mysqld=--log_output=FILE --mysqld=--max-statement-time=30 --engine=Aria   --grammar=conf/mariadb/instant_add.yy --mysqld=--performance-schema --gendata --vcols --transformers=ExecuteAsIntersect,ExecuteAsExcept,ExecuteAsCTE,ExecuteAsExecuteImmediate,ExecuteAsDeleteReturning,ExecuteAsInsertSelect,ExecuteAsUnion,ExecuteAsUpdateDelete,ExecuteAsView,ExecuteAsPreparedTwice --trials=10 --force
      

        Attachments

        1. `instant.n_core_fields == n_core_fields' .7z
          5.03 MB
        2. &fields[n_fields.7z
          3.77 MB
        3. dt.7z
          1.71 MB
        4. instant.n_nullable.7z
          2.03 MB

          Issue Links

            Activity

              People

              • Assignee:
                marko Marko Mäkelä
                Reporter:
                alice Alice Sherepa
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: