- 20 Jan, 2021 1 commit
-
-
Marko Mäkelä authored
row_merge_read_clustered_index(): Check bulk_trx_id at the correct spot. row_sel(), row_sel_try_search_shortcut(), row_sel_try_search_shortcut_for_mysql(): Check bulk_trx_id. ReadView::changes_visible(trx_id_t) const: New accessor for the case where the trx_id_t is not read from a potentially corrupted index page but directly from the memory. In this case, we can skip a sanity check.
-
- 19 Jan, 2021 4 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 18 Jan, 2021 4 commits
-
-
Thirunarayanan Balathandayuthapani authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
FIXME: We must check index->table->bulk_trx_id in or after btr_pcur_open_at_index_side() and btr_cur_search_to_nth_level(), while holding a latch on a leaf page.
-
Thirunarayanan Balathandayuthapani authored
dict_table_t::bulk_trx_id: Stores the bulk insert transaction id. Protected by exclusive lock of the table. It can be used by other connection read operation to identify whether to read the table ins_node_t::bulk_insert: Flag to indicate the bulk insert of the table. trx_mod_table_time_t::bulk_insert_undo: Enable undo logging for the consecutive insert during bulk insert operation. Introduced new undo log record "TRX_UNDO_EMPTY". It should be first undo log during bulk insert operation. While rollback, if innodb encounters the undo record then it should empty the table dict_table_t::empty_table(): Basically it empties all the indexes associated with table . This is undo operation of bulk insert operation. Metadata record should be retained during this rollback operation dict_table_t::remove_bulk_trx(): Resets the bulk_trx_id row_log_table_empty(): If the table is being created during empty_table() then log the EMPTY operation in the online log row_log_online_op(): If the secondary index is being created during empty_table() then log ROW_OP_EMPTY operation in online log row_log_table_apply_empty(): Applies the ROW_T_EMPTY to the table that was being rebuild. It does call empty_table() to empty the table. btr_root_page_init(): Initialize the root page of the b-tree. It is used during dict_index_t::empty() and btr_create(). btr_cur_ins_lock_and_undo(): During first insert of bulk insert operation, write UNDO_EMPTY undo log of it and reset DB_TRX_ID and DB_ROLL_PTR. trx_mark_sql_stat_end(): Set the bulk_insert_undo for bulk operation of the table. So that consecutive insert does allow undo operation. row_search_mvcc(): check whether the current transaction can view the table records based on bulk_trx_id. row_merge_read_clustered_index(): Avoid the table read if the bulk transaction id of the table is not visible within current transaction read view. - HA_EXTRA_IGNORE_INSERT flag in ha_innobase::extra() is to indicate insert/load/alter ignore statement. So that bulk transaction can write the undo log for the consecutive insert operation within the transaction. row_ins_step(): Removed the transaction id written for the data tuple to be inserted. This is moved to btr_cur_ins_lock_and_undo() and it is written after writing undo log for the insert operation. - Add new insert in many test case to avoid the hang. Because MDEV-515 takes X-lock of the table for first insert. So concurrent insert will wait for X-lock to be released.
-
- 15 Jan, 2021 1 commit
-
-
Daniel Black authored
Attempting to sign up to https://bestpractices.coreinfrastructure.org/en/projects complains with "Implementation languages is too long (maximum is 254 characters)" Looking at: curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/MariaDB/server/languages It does appear that we're (just) over the limit. As github is based on https://github.com/github/linguist, let's just play nice and make our languages look realistic.
-
- 14 Jan, 2021 4 commits
-
-
Marko Mäkelä authored
Revert an accidental update of ColumnStore. A different submodule is being used between MariaDB 10.5 and 10.6. The submodule was accidentally updated to the 10.5 version in the merge.
-
Marko Mäkelä authored
fseg_page_is_free(): Because MDEV-24167 changed fil_space_t::latch to a simple non-recursive rw-lock, we must avoid acquiring a shared latch if the current thread already holds an exclusive latch. This affects the test innodb.innodb_bug59733, which is exercising the change buffer. fil_space_t::is_owner(): Make available in non-debug builds.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Starting with MDEV-15528, we will avoid writing freed pages back to data files. During stress testing, the assertion mach_read_from_4(frame + 4U) == block.page.id().page_no() failed in log_phys_t::apply(), because before the server was killed and restarted, change buffer merge was executed on a previously freed page. During recovery, the assertion would fail when InnoDB would apply a FREE_PAGE and a WRITE record to the page. ibuf_merge_or_delete_for_page(): Before applying any changes, check whether the secondary index leaf page has already been freed according to the allocation bitmap page. If it is freed, then we must reset the bits in change buffer bitmap page. ibuf_reset_bitmap(): Auxiliary function for repeated code. mtr_t::sx_lock_space(): Replaces mtr_t::x_lock_space(). Due to the lazy approach of the change buffer, The function ibuf_merge_or_delete_for_page() may be executed in buf_page_create() while the tablespace is already X-latched. An S-latch must not be acquired while the thread already holds an X-latch, but a redundant SX-latch is fine. The fix was developed by Thirunarayanan Balathandayuthapani.
-
- 13 Jan, 2021 1 commit
-
-
Marko Mäkelä authored
The parameter innodb_idle_flush_pct that was introduced in MariaDB Server 10.1.2 by MDEV-6932 has no effect ever since the InnoDB changes from MySQL 5.7.9 were applied in commit 2e814d47. Let us declare the parameter as MARIADB_REMOVED_OPTION. For earlier versions, commit ea9cd97f declared the parameter deprecated.
-
- 12 Jan, 2021 7 commits
-
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
4. update columnstore
-
Sergei Golubchik authored
3. Embed plugin version into the DEB package version this assumes that -DDEB is only used from within autobake-deb.sh
-
Sergei Golubchik authored
and not ${binary:Version}, which is the version of the current package, whatever it is.
-
Sergei Golubchik authored
2. Embed plugin version into the RPM package version introduce SERVER_VERSION, because plugins can overwrite VERSION (and columnstore actually does)
-
Sergei Golubchik authored
1. specify plugin version in MYSQL_ADD_PLUGIN
-
- 11 Jan, 2021 4 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
The fix of MDEV-17556 (commit e25623e7 and commit 61a362c9) has been omitted due to conflicts and will have to be applied separately later.
-
- 10 Jan, 2021 1 commit
-
-
Brad Smith authored
Reviewer: Daniel Black
-
- 09 Jan, 2021 3 commits
-
-
Vladislav Vaintroub authored
-
Daniele Sciascia authored
- Galera cluster must be in node 1 and 2, and acts as slave for node 3 - Sync point commit_monitor_enter_sync was renamed to commit_monitor_master_enter_sync in 4.x Reviewed-by:
Jan Lindström <jan.lindstrom@mariadb.com>
-
Jan Lindström authored
MDEV-24546 : AddressSanitizer: initialization-order-fiasco on address ... in Sys_var_integer from __static_initialization_and_destruction_0, possibly inside global var wsrep_gtid_server Galera parameter wsrep_gtid_domain_id was defined using a class where actual parameter was not a first member. Fixed this by using normal variable and assigning this value to class member value.
-
- 08 Jan, 2021 6 commits
-
-
Jan Lindström authored
A race condition may occur between the execution of transaction commit, and an execution of a KILL statement that would attempt to abort that transaction. MDEV-17092 worked around this race condition by modifying InnoDB code. After that issue was closed, Sergey Vojtovich pointed out that this race condition would better be fixed above the storage engine layer: If you look carefully into the above, you can conclude that thd->free_connection() can be called concurrently with KILL/thd->awake(). Which is the bug. And it is partially fixed in THD::~THD(), that is destructor waits for KILL completion: Fix: Add necessary mutex operations to THD::free_connection() and move WSREP specific code also there. This ensures that no one is using THD while we do free_connection(). These mutexes will also ensures that there can't be concurrent KILL/THD::awake(). innobase_kill_query We can now remove usage of trx_sys_mutex introduced on MDEV-17092. trx_t::free() Poison trx->state and trx->mysql_thd This patch is validated with an RQG run similar to the one that reproduced MDEV-17092.
-
Marko Mäkelä authored
-
Nikita Malyavin authored
-
Jan Lindström authored
-
Marko Mäkelä authored
-
Nikita Malyavin authored
The assertion failed in handler::ha_reset upon SELECT under READ UNCOMMITTED from table with index on virtual column. This was the debug-only failure, though the problem is mush wider: * MY_BITMAP is a structure containing my_bitmap_map, the latter is a raw bitmap. * read_set, write_set and vcol_set of TABLE are the pointers to MY_BITMAP * The rest of MY_BITMAPs are stored in TABLE and TABLE_SHARE * The pointers to the stored MY_BITMAPs, like orig_read_set etc, and sometimes all_set and tmp_set, are assigned to the pointers. * Sometimes tmp_use_all_columns is used to substitute the raw bitmap directly with all_set.bitmap * Sometimes even bitmaps are directly modified, like in TABLE::update_virtual_field(): bitmap_clear_all(&tmp_set) is called. The last three bullets in the list, when used together (which is mostly always) make the program flow cumbersome and impossible to follow, notwithstanding the errors they cause, like this MDEV-17556, where tmp_set pointer was assigned to read_set, write_set and vcol_set, then its bitmap was substituted with all_set.bitmap by dbug_tmp_use_all_columns() call, and then bitmap_clear_all(&tmp_set) was applied to all this. To untangle this knot, the rule should be applied: * Never substitute bitmaps! This patch is about this. orig_*, all_set bitmaps are never substituted already. This patch changes the following function prototypes: * tmp_use_all_columns, dbug_tmp_use_all_columns to accept MY_BITMAP** and to return MY_BITMAP * instead of my_bitmap_map* * tmp_restore_column_map, dbug_tmp_restore_column_maps to accept MY_BITMAP* instead of my_bitmap_map* These functions now will substitute read_set/write_set/vcol_set directly, and won't touch underlying bitmaps.
-
- 07 Jan, 2021 4 commits
-
-
Alice Sherepa authored
MDEV-16272 rpl.rpl_semisync_ali_issues failed in buildbot, SHOW variable was done instead of waiting for the value of that variable
-
Alexey Yurchenko authored
Ensure consistent use of logging macros in wsrep-related code Reviewed-by:
Jan Lindström <jan.lindstrom@mariadb.com>
-
Marko Mäkelä authored
buf_LRU_get_free_block(): Increment the counter after acquiring buf_pool.mutex. buf_pool.stat.LRU_waits: Replaces export_vars.innodb_buffer_pool_wait_free and srv_stats.buf_pool_wait_free. Reads of the counter will remain dirty, not acquiring the mutex.
-
Oleksandr Byelkin authored
Use the same variable in both scopes (from where we have "goto error" and target of the goto)
-