1. 14 Nov, 2017 4 commits
  2. 13 Nov, 2017 27 commits
  3. 10 Nov, 2017 8 commits
  4. 09 Nov, 2017 1 commit
    • Marko Mäkelä's avatar
      MDEV-13795/MDEV-14332 Corruption during online table-rebuilding ALTER when VIRTUAL columns exist · 5d142f99
      Marko Mäkelä authored
      When MySQL 5.7 introduced indexed virtual columns, it introduced
      several bugs into the online table-rebuilding ALTER, that is,
      the row_log_table_apply() family of functions.
      
      The online_log format that was introduced for online table-rebuilding
      ALTER in MySQL 5.6 should be sufficient. Ideally, any indexed virtual
      column values would be evaluated based on the log records in the temporary
      file. There is no need to log virtual column values.
      
      (For ADD INDEX, that is row_log_apply(), we always must log the values of
      the keys, no matter if the columns are virtual.)
      
      Because omitting the virtual column values removes any chance of
      row_log_table_apply() working with indexed virtual columns, we
      will for now refuse LOCK=NONE in table-rebuilding ALTER operations
      when indexes on virtual columns exist. This restriction would be
      lifted in MDEV-14341.
      
      innobase_indexed_virtual_exist(): New predicate, to determine if
      indexed virtual columns exist in a table definition.
      
      ha_innobase::check_if_supported_inplace_alter(): Refuse online rebuild
      if indexed virtual columns exist.
      
      rec_get_converted_size_temp_v(), rec_convert_dtuple_to_temp_v(): Remove.
      
      row_log_table_delete(), row_log_table_update(, row_log_table_insert():
      Remove parameters for virtual columns.
      
      trx_undo_read_v_rows(): Remove the col_map parameter.
      
      row_log_table_apply(): Do not deal with virtual columns.
      5d142f99