- 10 Mar, 2022 2 commits
-
-
Marko Mäkelä authored
buf_page_get_low(): Assert that the block not be read-fixed. It may be write-fixed while we only hold a shared latch on the page. Page writes are protected by U latches, which are compatible with S. In all other places where we assert that the block not be IO-fixed, we are holding U or X latch, which does prevent concurrent file I/O.
-
Daniel Black authored
Cannot have a function trx_has_lock_x hot and cold.
-
- 09 Mar, 2022 3 commits
-
-
Daniel Black authored
There is only a very small range of gcc compiler versions that allow the built_{htm} functions to be defined without -mhtm being specified as a global C{,XX}FLAGS. Because the design is centered around enable HTM only in the functional blocks that use it, this breaks on the inclusion of the htmxlintrin.h header that includes this. As a partial mitigation, extented to GNU/clang compilers, transaction functions gain the attribute "hot". In general the use of htm is around the optimistic transaction ability of the function. The key part of using the hot attribute is to place these functions together so that a maximization of icache, tlb and OS paging can ensure that these can be ready to execute by any thread/cpu with the minimum amount of overhead. POWER is particularly affected here because the xbegin/xend functions are not inline. srw_lock.cc requires the -mhtm cflag, both in the storage engine and the unit tests.
-
Otto Kekäläinen authored
-
Otto Kekäläinen authored
The commits a73acf6c and 4d74bac8 updated the PCRE library to a new version, which in turn requires CMake 3.0. That does not exist in CentOS 7 nor 8, so builds started failing. Actually the build should not be downloading anything at all. The root cause was that pcre2-devel was missing from the dependencies. This was originally not detected, as the download fallback had masked the issue.
-
- 08 Mar, 2022 3 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 07 Mar, 2022 7 commits
-
-
Vlad Lesin authored
-
Vlad Lesin authored
-
Vlad Lesin authored
-
Vlad Lesin authored
MDEV-27025 allows to insert records before the record on which DELETE is locked, as a result the DELETE misses those records, what causes serious ACID violation. Revert MDEV-27025, MDEV-27550. The test which shows the scenario of ACID violation is added.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Daniel Black authored
During an increase in resize, the new curr_size got a value less than old_size. As n_chunks_new and n_chunks have a strong correlation to the resizing operation in progress, we can use them and remove the need for old_size. For convienece the n_chunks_new < n_chunks is now the is_shrinking function. The volatile compiler optimization on n_chunks{,_new} is removed as real mutex uses are needed. Other n_chunks_new/n_chunks methods: n_chunks_new and n_chunks almost always read and altered under the pool mutex. Exceptions are: * i_s_innodb_buffer_page_fill, * buf_pool_t::is_uncompressed (via is_blocked_field) These need reexamining for the need of a mutex, however comments indicates this already. get_n_pages has uses in buffer pool load, recover log memory exhaustion estimates and innodb status so take the minimum number of chunks for safety. The buf_pool_t::running_out function also uses curr_size/old_size. We replace this hot function calculation with just n_chunks_new. This is the new size of the chunks before the resizing occurs. If we are resizing down, we've already got the case we had previously (as the minimum). If we are resizing upwards, we are taking an optimistic view that there will be buffer chunks available for locks. As this memory allocation is occurring immediately next the resizing function it seems likely. Compiler hint UNIV_UNLIKELY removed to leave it to the branch predictor to make an informed decision. Added test case of a smaller size than the Marko/Roel original in JIRA reducing the size to 256M. SEGV hits roughly 1/10 times but its better than a 21G memory size. Reviewer: Marko
-
- 04 Mar, 2022 3 commits
-
-
Julius Goryavsky authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
The virtual member function handler::reset_auto_increment(ulonglong) is only ever invoked by the default implementation of the virtual member function handler::truncate(). Because ha_innobase::truncate() overrides handler::truncate() without ever invoking handler::truncate(), some InnoDB member functions are never called. ha_innobase::innobase_reset_autoinc(), ha_innobase::reset_auto_increment(): Removed (unreachable code). ha_innobase::delete_all_rows(): Removed. The default implementation handler::delete_all_rows() works just as fine.
-
- 03 Mar, 2022 4 commits
-
-
Thirunarayanan Balathandayuthapani authored
- InnoDB FTS DDL decrements the FTS_DOC_ID when there is a deleted marked record involved. FTS_DOC_ID must never be reused. The purpose of FTS_DOC_ID is to be a unique row identifier that will be changed whenever a fulltext indexed column is updated.
-
Marko Mäkelä authored
btr_cur_optimistic_insert(): Disregard DEBUG_DBUG injection to invoke btr_page_reorganize() if the page (and the table) is empty. Otherwise, an assertion would fail in btr_page_reorganize_low() because PAGE_MAX_TRX_ID is 0 in an empty secondary index leaf page.
-
Rucha Deodhar authored
maturity level Fix: Bumped maturity of the mysql_json plugin to gamma.
-
Otto Kekäläinen authored
Among others: existance -> existence reinitialze -> reinitialize successfuly -> successfully
-
- 01 Mar, 2022 11 commits
-
-
Marko Mäkelä authored
create_table_info_t::innobase_table_flags(): Ignore page_compressed and page_compression_level on TEMPORARY tables. ha_innobase::truncate(): Add a debug assertion that create() must succeed on temporary tables.
-
Marko Mäkelä authored
-
Sergei Petrunia authored
-
Monty authored
Fixed by not sending --group option to the server (for now) Reviwer: Sergei Golubchik
-
Monty authored
-
Marko Mäkelä authored
udf_handler::fix_fields(): Execute an assignment outside "if" so that GCC 12 will not issue a bogus-looking warning. Also, deduplicate some error handling code.
-
Thirunarayanan Balathandayuthapani authored
- Server incorrectly downgrading the MDL after prepare phase when table is empty. mdl_exclusive_after_prepare is being set in prepare phase only. But mdl_exclusive_after_prepare condition was misplaced and checked before prepare phase by commit d270525d and it is now changed to check after prepare phase. - main.innodb_mysql_sync test case was changed to avoid locking optimization when table is empty.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
The test innodb.log_file_size would occasionally crash in a debug assertion failure in srv_prepare_to_delete_redo_log_file(). In the core dump, the assertion would hold. buf_pool_t::any_io_pending(): Avoid dirty reads by acquiring buf_pool.mutex. This function is only being invoked in debug builds, so we do not care about any performance impact.
-
Marko Mäkelä authored
Already the detection part of have_crypt.inc must be skipped in WITH_MSAN builds until the SIGSEGV in the crypt() interceptor has been fixed.
-
- 28 Feb, 2022 7 commits
-
-
Monty authored
The follwoing could happen if InnoDB did some background work while test was running: @@ -5,6 +5,8 @@ SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME MDL_SHARED_HIGH_PRIO Table metadata lock test t1 +MDL_SHARED Table metadata lock mysql innodb_table_stats +MDL_SHARED Table metadata lock mysql innodb_index_stat
-
Marko Mäkelä authored
-
Marko Mäkelä authored
We will move all tests of the ENCRYPT() function to the test main.func_crypt, which will be disabled in MSAN builds for now.
-
Marko Mäkelä authored
In merge cc1d9062 the 32-bit builds were broken.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-