- 03 Mar, 2021 2 commits
-
-
Thirunarayanan Balathandayuthapani authored
- This issue is caused by commit deadec4e (MDEV-24569). InnoDB fails to read the change buffer bitmap page from dropped tablespace. In ibuf_bitmap_get_map_page_func(), InnoDB should fetch the page using BUF_GET_POSSIBLY_FREED mode. Callers of ibuf_bitmap_get_map_page() should be adjusted in that case.
-
Thirunarayanan Balathandayuthapani authored
This is after-merge fix of f33e57a9. In btr_search_drop_page_hash_index(), InnoDB should take the exclusive lock on the AHI latch if index is already freed to avoid the freed memory access during buf_pool_resize()
-
- 02 Mar, 2021 1 commit
-
-
Marko Mäkelä authored
The test case encryption.innodb_encrypt_freed was failing in MemorySanitizer builds. recv_recover_page(): Mark non-recovered pages as freed. fil_crypt_rotate_page(): Before comparing the block->frame contents, check if the block was marked as freed. Other places: Whenever using BUF_GET_POSSIBLY_FREED, check the block->page.status before accessing the page frame. (Both uses of BUF_GET_IF_IN_POOL should be correct now.)
-
- 01 Mar, 2021 2 commits
-
-
Sergei Golubchik authored
disable warnings, as they're different on 32bit platforms Closes #1757
-
Nayuta Yanagisawa authored
Add missing DBUG_RETURN to my_malloc.
-
- 26 Feb, 2021 3 commits
-
-
Thirunarayanan Balathandayuthapani authored
- This is caused by commit deadec4e (MDEV-24569). InnoDB fails to set the tablespace associated with mini-transacton while resetting the change buffer bitmap bits of the page.
-
Daniel Black authored
-
Daniel Black authored
-
- 25 Feb, 2021 8 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Varun Gupta authored
-
Daniel Black authored
-
Daniel Black authored
Correcting an incorrect merge from 10.2
-
Daniel Black authored
-
Daniel Black authored
-
Daniel Black authored
Backport of 4bc31a90 Include client libraries for auth caching_sha2_password and sha256_password in the libmariadb3 client library package.
-
- 24 Feb, 2021 9 commits
-
-
Daniel Black authored
Like the 10.2 version 1635686b, except C++ on internal functions for my_assume_aligned. volatile != atomic. volatile has no memory barrier schemantics, its for mmaped IO so lets allow some optimizer gains and stop pretending it helps with memory atomicity. The MDEV lists a SEGV an assumption is made that an address was partially read. As C packs structs strictly in order and on arm64 the cache line size is 128 bits. A pointer (link - 64 bits), followed by a hashnr (uint32 - 32 bits), leaves the following key (uchar * 64 bits), neither naturally aligned to any pointer and worse, split across a cache line which is the processors view of an atomic reservation of memory. lf_dynarray_lvalue is assumed to return a 64 bit aligned address. As a solution move the 32bit hashnr to the end so we don't get the *key pointer split across two cache lines. Tested by: Krunal Bauskar Reviewer: Marko Mäkelä
-
Daniel Black authored
volatile != atomic. volatile has no memory barrier schemantics, its for mmaped IO so lets allow some optimizer gains and stop pretending it helps with memory atomicity. The MDEV lists a SEGV an assumption is made that an address was partially read. As C packs structs strictly in order and on arm64 the cache line size is 128 bits. A pointer (link - 64 bits), followed by a hashnr (uint32 - 32 bits), leaves the following key (uchar * 64 bits), neither naturally aligned to any pointer and worse, split across a cache line which is the processors view of an atomic reservation of memory. lf_dynarray_lvalue is assumed to return a 64 bit aligned address. As a solution move the 32bit hashnr to the end so we don't get the *key pointer split across two cache lines. Tested by: Krunal Bauskar Reviewer: Marko Mäkelä
-
Igor Babaev authored
This bug caused crashes of the server when processing queries with table value constructors (TVC) that contained subqueries and were used itself as subselects. For such TVCs the following transformation is applied at the prepare stage: VALUES (v1), ... (vn) => SELECT * FROM (VALUES (v1), ... (vn)) tvc_x. This transformation allows to reduce the problem of evaluation of TVCs used as subselects to the problem of evaluation of regular subselects. The transformation is implemented in the wrap_tvc(). The code the function to mimic the behaviour of the parser when processing the result of the transformation. However this imitation was not free of some flaws. First the function called the method exclude() that completely destroyed the select tree structures below the transformed TVC. Second the function used the procedure mysql_new_select to create st_select_lex nodes for both wrapping select of the transformation and TVC. This also led to constructing of invalid select tree structures. The patch actually re-engineers the code of wrap_tvc(). Approved by Oleksandr Byelkin <sanja@mariadb.com>
-
Jan Lindström authored
Problem was that we used heap allocated key using too small array. Fixed by using dynamic memory allocation using actual needed size.
-
Jan Lindström authored
Null poiter reference in case where bf_thd has no trx .e.g. when we have MDL-conflict.
-
Jan Lindström authored
Null poiter reference in case where bf_thd has no trx .e.g. when we have MDL-conflict.
-
Sergei Petrunia authored
The problem was in and_all_keys(), the code of MDEV-9759 which calculates the new tree weight: First, it didn't take into account the case when (next->next_key_part=tmp) == NULL and dereferenced a NULL pointer when getting tmp->weight. Second, "if (param->alloced_sel_args > SEL_ARG::MAX_SEL_ARGS) break" could leave the loop with incorrect value of weight. Fixed by introducing SEL_ARG::update_weight_locally() and calling it at the end of the function. This allows to avoid caring about all the above cases.
-
Daniel Black authored
filename_hash is a function from libiberty.a from the system but also an expored name in the perf schema static library. We'll use a different name.
-
Marko Mäkelä authored
-
- 23 Feb, 2021 11 commits
-
-
Vicențiu Ciorbaru authored
-
Vicențiu Ciorbaru authored
-
Vicențiu Ciorbaru authored
Introduced by 85828b8f This is running 2 git processes in parallel, which, if unlucky can cause either of them to fail with "File already exists" error.
-
Marko Mäkelä authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Robert Bindar authored
Given PASSWORD EXPIRE and PASSWORD EXPIRE [NEVER|INTERVAL x DAY] are two different mechanisms, SHOW CREATE USER should display all the information required to restore the state of an account which includes both a manual expired state and an automatic policy. The solution proposed here keeps a CREATE USER ... PASSWORD EXPIRE statement and adds an aditional ALTER USER .. PASSWORD EXPIRE [NEVER|INTERVAL x DAY] when necessary This way a tool can restore almost the complete state of an account as it was before a dump. The only information left still is the value of the password_last_changed column from mysql.global_priv
-
Marko Mäkelä authored
-
Sergei Golubchik authored
-
Thirunarayanan Balathandayuthapani authored
- The commit 5fd3c747(MDEV-24709) resets the recv_no_ibuf_operations in recv_recovery_from_checkpoint_start(), but InnoDB fails to reset the variable recv_no_log_write() during that time and that leads to the assert failure.
-
Sergei Golubchik authored
-
- 22 Feb, 2021 4 commits
-
-
Sergei Golubchik authored
-
Monty authored
This was caused by two different bugs: 1) Information_schema tables where not locked by lock_tables, but get_lock_data() was not filtering these out. This caused a crash when mysql_unlock_some_tables() tried to unlock tables early, including not locked information schema tables. Fixed by not locking SYSTEM_TMP_TABLES 2) In some cases the optimizer will notice that we do not need to read the information_schema tables at all. In this case join_tab->read_record is not set, which caused a crash in get_schema_tables_result() Fixed by ignoring const tables in get_schema_tables_result()
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-