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

Crash on recovery after server kill during instant ADD COLUMN

    XMLWordPrintable

    Details

      Description

      If a table contains a virtual column and the server is killed at the time a non-virtual column is first being instantly added to the table, recovery will fail:

      10.3 81ab9ea63f5d3ad4909bb75552008d6b035a371b

      mysqld: /mariadb/10.3/storage/innobase/include/dict0dict.ic:463: dict_v_col_t *dict_table_get_nth_v_col(const dict_table_t *, ulint): Assertion `pos < table->n_v_def' failed.
      #7  0x000055613821054c in dict_table_get_nth_v_col (table=table@entry=0x55613a421f10, pos=pos@entry=7319) at /mariadb/10.3/storage/innobase/include/dict0dict.ic:463
      #8  0x000055613821a6e4 in trx_undo_read_v_cols (table=<optimized out>, table@entry=0x55613a421f10, ptr=0x55613a3996b4 "", ptr@entry=0x55613a3995e5 "\003\031", row=<optimized out>, in_purge=false) at /mariadb/10.3/storage/innobase/trx/trx0rec.cc:2486
      #9  0x00005561383f6406 in row_undo_ins_parse_undo_rec (node=0x55613a413020, dict_locked=1) at /mariadb/10.3/storage/innobase/row/row0uins.cc:471
      #10 row_undo_ins (node=<optimized out>, node@entry=0x55613a413020, thr=thr@entry=0x55613a412e50) at /mariadb/10.3/storage/innobase/row/row0uins.cc:566
      #11 0x00005561381b4f5b in row_undo (node=0x55613a413020, thr=<optimized out>) at /mariadb/10.3/storage/innobase/row/row0undo.cc:302
      #12 row_undo_step (thr=<optimized out>, thr@entry=0x55613a412e50) at /mariadb/10.3/storage/innobase/row/row0undo.cc:361
      #13 0x00005561380f6c49 in que_thr_step (thr=<optimized out>) at /mariadb/10.3/storage/innobase/que/que0que.cc:1037
      #14 que_run_threads_low (thr=0x55613a412e50) at /mariadb/10.3/storage/innobase/que/que0que.cc:1101
      #15 que_run_threads (thr=<optimized out>) at /mariadb/10.3/storage/innobase/que/que0que.cc:1141
      #16 0x000055613821eb9a in trx_rollback_active (trx=0x7f91906580d0) at /mariadb/10.3/storage/innobase/trx/trx0roll.cc:654
      #17 trx_rollback_recovered (all=false) at /mariadb/10.3/storage/innobase/trx/trx0roll.cc:810
      

      The reason is that we are wrongly attempting to read virtual column information for the TRX_UNDO_INSERT_METADATA record.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              marko Marko Mäkelä
              Reporter:
              marko Marko Mäkelä
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Git Integration