1. 03 Oct, 2017 7 commits
  2. 02 Oct, 2017 10 commits
    • Marko Mäkelä's avatar
      Fixes for indexed virtual columns · 9255bdb0
      Marko Mäkelä authored
      dict_col_t::name(): Also work with virtual columns
      
      dict_v_idx_t: Add a constructor
      
      dict_index_t::commit_instant_copy(): Work with virtual columns
      
      ha_innobase_inplace_ctx::commit_instant(): Properly adjust base_col[]
      and clear v_indexes, to be populated by dict_index_t::commit_instant_copy().
      9255bdb0
    • Marko Mäkelä's avatar
      Fix errors in CREATE FULLTEXT INDEX · d9ac1e2e
      Marko Mäkelä authored
      d9ac1e2e
    • Marko Mäkelä's avatar
      Re-enable the encryption tests · 4d8617ab
      Marko Mäkelä authored
      4d8617ab
    • Marko Mäkelä's avatar
      Adjust tests for instant ADD COLUMN · 58f2c842
      Marko Mäkelä authored
      58f2c842
    • Marko Mäkelä's avatar
    • Marko Mäkelä's avatar
      Enable instant ADD COLUMN · e9f6906d
      Marko Mäkelä authored
      We must split the creation of table or index metadata from the
      creation of the dictionary table records and the creation of
      the data. In this way, we can transform a table-rebuilding operation
      into an instant ADD COLUMN operation. Dictionary objects will only
      be added to cache when table rebuilding or index creation is needed.
      The ctx->instant_table will never be added to cache.
      
      innodb_update_n_cols(): Renamed from innobase_update_n_virtual().
      Call my_error() if an error occurs.
      
      innobase_add_instant_try(): Call my_error() if an error occurs.
      
      create_index_dict(): Replaces row_merge_create_index_graph().
      
      prepare_inplace_alter_table_dict(): First create the ctx->new_table,
      and only then decide if the table really needs to be rebuilt.
      e9f6906d
    • Marko Mäkelä's avatar
      Add system columns to tables before creating the table · ebf539dd
      Marko Mäkelä authored
      dict_create_sys_tables_tuple(), dict_create_table_step(): Omit the
      system columns (which will now exist in the dict_table_t object
      already at this point).
      
      dict_create_table_step(): Expect the callers to invoke
      dict_table_add_system_columns().
      
      pars_create_table(): Before creating the table creation execution graph,
      invoke dict_table_add_system_columns().
      
      row_create_table_for_mysql(): Expect all callers to invoke
      dict_table_add_system_columns().
      ebf539dd
    • Marko Mäkelä's avatar
      Do not modify the table when adding it to the cache · 5ffdb98f
      Marko Mäkelä authored
      dict_table_t::add_to_cache(): Modified from dict_table_add_to_cache().
      Let the callers invoke dict_table_add_system_columns() and if needed,
      set can_be_evicted.
      5ffdb98f
    • Marko Mäkelä's avatar
      Remove dict_table_t::big_rows · 1ef59971
      Marko Mäkelä authored
      The field dict_table_t::big_rows was only used for determining if
      the adaptive hash index should be used when the internal InnoDB SQL
      parser is used. That parser is only used for modifying the InnoDB
      data dictionary, updating persistent tables, and for fulltext indexes.
      1ef59971
    • Marko Mäkelä's avatar
      Remove a constant parameter commit=false · 4268343f
      Marko Mäkelä authored
      4268343f
  3. 01 Oct, 2017 7 commits
  4. 29 Sep, 2017 10 commits
  5. 28 Sep, 2017 6 commits
    • Marko Mäkelä's avatar
      Revert the changes to row_undo_mod_clust_low() [Do not insert off-pages columns on rollback] · f6be3a00
      Marko Mäkelä authored
      The space management and recovery of operations on off-page columns
      relies on the undo log records. Inserting off-page columns during
      rollback could break this.
      
      The solution to the rollback problem is simple: Do not duplicate
      'default row' data in individual records. In this way, the ROLLBACK
      of an UPDATE to a record that was originally written before instant
      ADD COLUMN, would never have to insert off-page records, even if
      there were instantly added BLOB columns with long DEFAULT values.
      This will also reduce space consumption (a simple form of compression).
      
      dtuple_t::trim(index): Omit a redundant suffix of an index tuple right
      before insert or update. After instant ADD COLUMN, if the last fields
      of a clustered index tuple match the 'default row', there will be no
      need to store them. While trimming the entry, we must hold a page latch,
      so that the table cannot be emptied and the 'default row' be deleted.
      
      btr_cur_optimistic_update(), btr_cur_pessimistic_update(),
      row_upd_clust_rec_by_insert(), row_ins_clust_index_entry_low():
      Invoke dtuple_t::trim() if needed.
      
      row_ins_clust_index_entry(): Restore dtuple_t::n_fields after calling
      row_ins_clust_index_entry_low().
      
      rec_get_converted_size(), rec_get_converted_size_comp(): Allow the number
      of fields to be between n_core_fields and n_fields.
      
      rec_convert_dtuple_to_rec_comp(): Assign the status bits based on the
      number of fields.
      f6be3a00
    • Marko Mäkelä's avatar
      fa33a430
    • Marko Mäkelä's avatar
    • Marko Mäkelä's avatar
      Fix some warnings · 22d96965
      Marko Mäkelä authored
      22d96965
    • Marko Mäkelä's avatar
    • Marko Mäkelä's avatar
      Allow a table to lose instantness during instant ADD COLUMN (when it becomes empty) · 6f56a750
      Marko Mäkelä authored
      innobase_add_instant_try(): If the table is empty, remove the 'default row'
      instead of adding one.
      
      dict_index_t::commit_instant_copy(): Allow !instant.is_instant() for
      the clustered index.
      
      ha_innobase_inplace_ctx::commit_instant(): Allow !instant_table->is_instant()
      6f56a750