• Marko Mäkelä's avatar
    Try to support ADD/DROP/reorder with virtual columns · 6e4c840b
    Marko Mäkelä authored
    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.
    6e4c840b
dict0mem.cc 48.6 KB