- 28 Nov, 2017 5 commits
-
-
Eugene Kosov authored
-
Aleksey Midenkov authored
-
Eugene Kosov authored
-
Marko Mäkelä authored
row_prebuilt_t::versioned_write: Cache the value of TABLE::versioned_write() in ha_innobase::build_template()
-
Marko Mäkelä authored
-
- 27 Nov, 2017 17 commits
-
-
Aleksey Midenkov authored
-
Aleksey Midenkov authored
-
Aleksey Midenkov authored
-
Aleksey Midenkov authored
-
Marko Mäkelä authored
-
Aleksey Midenkov authored
-
Aleksey Midenkov authored
-
Aleksey Midenkov authored
-
Eugene Kosov authored
-
Eugene Kosov authored
-
Aleksey Midenkov authored
Disabled DROP and SURVIVE modes.
-
Aleksey Midenkov authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
THD::vers_update_trt, trx_t::vers_update_trt, trx_savept_t::vers_update_trt: Remove. Instead, determine from trx_t::mod_tables whether versioned columns were affected by the transaction. handlerton::prepare_commit_versioned: Replaces vers_get_trt_data. Return the transaction start ID and also the commit ID, in case the transaction modified any system-versioned columns (0 if not). TR_table::store_data(): Remove (merge with update() below). TR_table::update(): Add the parameters start_id, end_id. ha_commit_trans(): Remove a condition on SQLCOM_ALTER_TABLE. If we need something special for ALTER TABLE...ALGORITHM=INPLACE, that can be done inside InnoDB by modifying trx_t::mod_tables. innodb_prepare_commit_versioned(): Renamed from innodb_get_trt_data(). Check trx_t::mod_tables to see if any changes to versioned columns are present. trx_mod_table_time_t: A pair of logical timestamps, replacing the undo_no_t in trx_mod_tables_t. Keep track of not only the first modification to a persistent table in each transaction, but also the first modification of a versioned column in a table. dtype_t, dict_col_t: Add the accessor is_any_versioned(), to check if the type refers to a system-versioned user or system column. upd_t::affects_versioned(): Check if an update affects a versioned column. trx_undo_report_row_operation(): If a versioned column is affected by the update, invoke trx_mod_table_time_t::set_versioned(). trx_rollback_to_savepoint_low(): If all changes to versioned columns were rolled back, invoke trx_mod_table_time_t::rollback_versioned(), so that trx_mod_table_time_t::is_versioned() will no longer hold.
-
Marko Mäkelä authored
Both bits DATA_VERSIONED will be set in prtype if the column is system-versioned. The bits will be 0 for normal unversioned columns. For the special columns identifying the logical start and end times of versions, only one bit will be set: DATA_VERS_START or DATA_VERS_END. create_table_info_t::create_table_def(), prepare_inplace_alter_table_dict(): Set prtype |= DATA_VERSIONED for system-versioned columns. dfield_t::is_version_historical_end(): Determine if a data tuple field is_version_end() and contains a timestamp in the past (not TRX_ID_MAX). dtype_t, dict_col_t: Add the accessors is_versioned(), is_version_start(), is_version_end(). trx_id_max_bytes[]: The bit pattern of TRX_ID_MAX, for use with memcmp().
-
Eugene Kosov authored
-
Marko Mäkelä authored
-
- 23 Nov, 2017 14 commits
-
-
Aleksey Midenkov authored
Merge branch '10.3' into trunk
-
Aleksey Midenkov authored
Related to #212. Extra update of sys_trx_start removed [#87].
-
Marko Mäkelä authored
-
Aleksey Midenkov authored
Windows platform is suffered with this problem.
-
Aleksey Midenkov authored
-
Marko Mäkelä authored
-
Sergey Vojtovich authored
-
Sergey Vojtovich authored
Big endian checksum is needed to workaround 10+ years old bug, where checksum was calculated incorrectly on big endian hardware. We can still checksum such tablespaces using software implementation of CRC32.
-
Sergey Vojtovich authored
-
Monty authored
- make hp_mask an inline function (short and called 16 times) - Simplify hp_search. Biggest benefit is for doing key lookup without a matching row. Matching rows may be a bit slower, but is offseted by having hp_mask inlined.
-
Marko Mäkelä authored
The non-persistent UPDATE_TIME for InnoDB tables was not being updated consistently at transaction commit. If a transaction is partly rolled back so that in the end it will not modify a table that it intended to modify, the update_time will be updated nevertheless. This will also happen when InnoDB fails to write an undo log record for the intended modification. If a transaction is committed internally in InnoDB, instead of being committed from the SQL interface, then the trx_t::mod_tables will not be applied to the update_time of the tables. trx_t::mod_tables: Replace the std::set<dict_table_t*> with std::map<dict_table_t*,undo_no_t>, so that the very first modification within the transaction is identified. trx_undo_report_row_operation(): Update mod_tables for every operation after the undo log record was successfully written. trx_rollback_to_savepoint_low(): After partial rollback, erase from trx_t::mod_tables any tables for which all changes were rolled back. trx_commit_in_memory(): Tighten some assertions and simplify conditions. Invoke trx_update_mod_tables_timestamp() if persistent tables were affected. trx_commit_for_mysql(): Remove the call to trx_update_mod_tables_timestamp(), as it is now invoked at the lower level, in trx_commit_in_memory(). trx_rollback_finish(): Clear mod_tables before invoking trx_commit(), because the trx_commit_in_memory() would otherwise wrongly process mod_tables after a full ROLLBACK.
-
Marko Mäkelä authored
-
Michael Widenius authored
-
Michael Widenius authored
TODO: - Make get_thd_memroot() inline - To do this, we need to reduce dependence of include files, especially so that sql_class.h is not depending in item.h
-
- 22 Nov, 2017 4 commits
-
-
Aleksey Midenkov authored
Added schema check logging messages.
-
Eugene Kosov authored
-
Eugene Kosov authored
-
Aleksey Midenkov authored
-