Try to support ADD/DROP/reorder with virtual columns
FIXME: The virtual column code does not really support any reordering of virtual columns. The function check_v_col_in_order() should be removed and all the code fixed. ha_innobase::check_if_supported_inplace_alter(): For now, forbid ADD COLUMN of a stored column together with ADD/DROP of virtual columns. This works around an assertion failure in gcol.innodb_virtual_basic line 541. dict_table_t::instant_column(): Copy and adjust v_cols[]. dict_table_t::rollback_instant(): Roll back v_cols[]. innobase_build_col_map(): Skip added virtual columns. prepare_inplace_add_virtual(): Correctly compute num_to_add_vcol. Remove some unnecessary code. Note that the call to innodb_base_col_setup() should be executed later. innobase_add_virtual_try(), innobase_drop_virtual_try(): Let the caller invoke innodb_update_cols(). ha_innobase::commit_inplace_alter_table(): Add a FIXME comment that we should not reload the table when virtual columns are added or dropped. Currently, reloading is the only way to add the base columns of virtual columns into the InnoDB data dictionary cache. innobase_instant_try(): If any virtual column is dropped, rewrite all virtual column metadata. Use a shortcut only for adding virtual columns. This is because innobase_drop_virtual_try() assumes that the dropped virtual columns still exist in the cache.
Showing
Please register or sign in to comment