- 20 Jan, 2018 9 commits
-
-
Sergey Vojtovich authored
Remove rw_trx_list.
-
Sergey Vojtovich authored
Let lock_print_info_all_transactions() iterate rw_trx_hash instead of rw_trx_list. When printing info of locks for transactions, InnoDB monitor doesn't attempt to read relevant page from disk anymore. The code was prone to race conditions. Note that TrxListIterator didn't work as advertised: it iterated rw_trx_list only.
-
Sergey Vojtovich authored
Let trx_rollback_recovered() iterate rw_trx_hash instead of rw_trx_list.
-
Sergey Vojtovich authored
Let lock_validate_table_locks(), lock_rec_other_trx_holds_expl(), lock_table_locks_lookup(), trx_recover_for_mysql(), trx_get_trx_by_xid(), trx_roll_must_shutdown(), fetch_data_into_cache() iterate rw_trx_hash instead of rw_trx_list.
-
Sergey Vojtovich authored
Removed trx_sys_validate_trx_list(): with rw_trx_hash elements are not required to be ordered by transaction id. Transaction state is now guarded by asserts in rw_trx_hash_t.
-
Sergey Vojtovich authored
Removed trx_sys_t::n_prepared_recovered_trx: never used. Removed trx_sys_t::n_prepared_trx: used only at shutdown, we can perfectly get this value from rw_trx_hash.
-
Sergey Vojtovich authored
Determine minimum transaction id by iterating rw_trx_hash, not rw_trx_list. It is more expensive than previous implementation since it does linear search, especially if there're many concurrent transactions running. But in such case mutex is much bigger evil. And since it doesn't require trx_sys->mutex protection it scales better. For low concurrency performance difference is neglible.
-
Sergey Vojtovich authored
Replaced UT_LIST_GET_LEN(trx_sys->rw_trx_list) with trx_sys->rw_trx_hash.size(). Moved freeing of trx objects at shutdown to rw_trx_hash destructor. Small clean-up in trx_rollback_recovered().
-
Sergey Vojtovich authored
Reduce divergence between trx_sys_t::rw_trx_hash and trx_sys_t::rw_trx_list by not adding recovered COMMITTED transactions to trx_sys_t::rw_trx_list. Such transactions are discarded immediately without creating trx object. This also required to split rollback and cleanup phases of recovery. To reflect these updates the following renames happened: trx_rollback_or_clean_all_recovered() -> trx_rollback_all_recovered() trx_rollback_or_clean_is_active -> trx_rollback_is_active trx_rollback_or_clean_recovered() -> trx_rollback_recovered() trx_cleanup_at_db_startup() -> trx_cleanup_recovered() Also removed a hack from lock_trx_release_locks(). Instead let recovery rollback thread to skip committed XA transactions.
-
- 19 Jan, 2018 1 commit
-
-
Igor Babaev authored
when number of NULLs in IN list reaches in_predicate_conversion_threshold The bug was fixed by removing an assertion that had been set in order just to test whether the code could be ever executed.
-
- 18 Jan, 2018 2 commits
-
-
Daniel Bartholomew authored
-
Marko Mäkelä authored
-
- 17 Jan, 2018 4 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
If InnoDB is killed while ALTER TABLE...ALGORITHM=COPY is in progress, after recovery there could be undo log records some records that were inserted into an intermediate copy of the table. Due to these undo log records, InnoDB would resurrect locks at recovery, and the intermediate table would be locked while we are trying to drop it. This would cause a call to row_rename_table_for_mysql(), either from row_mysql_drop_garbage_tables() or from the rollback of a RENAME operation that was part of the ALTER TABLE. row_rename_table_for_mysql(): Do not attempt to parse FOREIGN KEY constraints when renaming from #sql-something to #sql-something-else, because it does not make any sense. row_drop_table_for_mysql(): When deferring DROP TABLE due to locks, do not rename the table if its name already starts with the #sql- prefix, which is what row_mysql_drop_garbage_tables() uses. Previously, the too strict prefix #sql-ib was used, and some tables were renamed unnecessarily.
-
Marko Mäkelä authored
Follow-up to commit 9ec19b9b
-
- 16 Jan, 2018 24 commits
-
-
Sergei Golubchik authored
-
Sergei Golubchik authored
instead of skipping invalid items in setup_conds(), don't pass them into a JOIN at all (test case in versioning.select2)
-
Sergei Golubchik authored
Revert "MDEV-14786 Server crashes in Item_cond::transform on 2nd execution of SP querying from a view [fixes #436]" This reverts commit 7069071d And add a test to show that optimization steps that a) are repeated for every execution b) create new items cannot be done on the statement arena
-
Sergei Golubchik authored
-
Marko Mäkelä authored
srv_prepare_to_delete_redo_log_files(): Initialize srv_start_lsn.
-
Alexander Barkov authored
1. Moving the following methods from THD to Item_change_list: nocheck_register_item_tree_change() check_and_register_item_tree_change() rollback_item_tree_changes() as they work only with the "change_list" member and don't require anything else from THD. 2. Deriving THD from Item_change_list This change will help to fix "MDEV-14603 signal 11 with short stacktrace" easier.
-
Marko Mäkelä authored
Replace some !rw_lock_own() assertions with the stronger !btr_search_own_any(). Remove some redundant btr_get_search_latch() calls. btr_search_update_hash_ref(): Remove a duplicated assertion. btr_search_build_page_hash_index(): Remove a duplicated assertion. rw_lock_s_lock() asserts that the latch is not being held. btr_search_disable_ref_count(): Remove an assertion. The only caller is acquiring all adaptive hash index latches.
-
Marko Mäkelä authored
innodb_init_param(): Initialize btr_ahi_parts=1 for Mariabackup. btr_search_enabled: Let the adaptive hash index be disabled in Mariabackup. This would potentially only matter during --export, and --export performs a table scan, not many index lookups.
-
Marko Mäkelä authored
innobase_start_or_create_for_mysql(): Only start the data dictionary and transaction subsystems in normal server startup and during mariabackup --export.
-
Marko Mäkelä authored
btr_cur_update_in_place(): Read block->index only once, so that it cannot change to NULL after the first read. When block->index != NULL, it must be equal to index.
-
Otto Kekäläinen authored
This way all the libraries are listed in a logical order and it will later be easier to compare the control file contents to downstream versions.
-
Otto Kekäläinen authored
-
Otto Kekäläinen authored
-
Otto Kekäläinen authored
There was a lot of files generated by the sources that were not installed in any package. This fixes most of those issues, but not all. Files still outside any package are in the not-installed, which is used by dh_install. Also make sure all configuration files are installed to the correct location that matches layout used by Debian official packages.
-
Otto Kekäläinen authored
All man pages that stem from the actual sources should be installed along everything else in .install files.
-
Otto Kekäläinen authored
-
Otto Kekäläinen authored
-
Otto Kekäläinen authored
Matching libmariadb-dev package contents in official Debian repositories, the MariaDB Connector/C files should go into a folder using the 'mariadb' name. For compatibility with sources that expect to find 'mysql' stuff, create a symlink from include/mysql to include/mariadb.
-
Otto Kekäläinen authored
-
Otto Kekäläinen authored
Using this package any source that expects MySQL Client libraries should build without changes. Sources that expect MariaDB Connector C should build using only libmariadb-dev. Current MariaDB Connector/C does not build quite identically in this source tree compared to how it build in Debian official. The remaining differences are tracked in MDEV-14921.
-
Otto Kekäläinen authored
No path is required. These files always reside in the same directory anyway.
-
Otto Kekäläinen authored
We already ship libmysqlclient18 that replaces any existing package with the same name and install symlinks that point to out libmariadb.so. Instead of creating more packages, we add just one more that does the same and provides both libmysqlclient19 and -20 replacements symlinks. This is a clean solution, because systems that only use (and are built against) libmariadb will not need them and if somebody has done a mistake in the linker parameters, they will spot it and can easily update the filename to libmariadb.
-
Otto Kekäläinen authored
- tokuft_logprint should be shipped in the TokuDB plugin - mysql_install_db is needed for installing/upgrading the datadir so it must be in the server core package so users can roll their own upgrades
-
Otto Kekäläinen authored
There is no point in having version suffixes in plugin packages. They will via their control file anyway depend on the correct server or client version. Having version suffices has no benefit and it just complicates upgrades when a new major version name package needs to replace all possible previous version. This issue was overlooked when merging commit 844a5759 from 10.2 into 10.3, so it needs to be manually fixed now.
-