- 10 Jun, 2020 7 commits
-
-
Sujatha authored
Analysis: ======== List of values provided for "replicate_ignore_table" and "replicate_do_table" are stored in HASH. When an empty list is provided the HASH structure doesn't get initialized. Existing code treats empty element list as an error and tries to clean the uninitialized HASH. This results in above MSAN issue. Fix: === The clean up should be initiated only when there is an error while parsing the 'replicate_do_table' or 'replicate_ignore_table' list and the HASH is in initialized state. Otherwise for empty list it should simply return success.
-
Daniel Black authored
This corrects build failures on ppc64{,le} with the WITH_EMBEDDED_SERVER option enabled. MDEV-22641 added an unusual case in which the same object file in was included twice with a different function defination. The original cmake/merge_archives_unix.cmake did not tolerate such eventualities. So we move to the highest voted answer on Stack Overflow for the merging of static libraries. https://stackoverflow.com/questions/3821916/how-to-merge-two-ar-static-libraries-into-one Thin archives generated compile failures and the libtool mechanism would of been another dependency and using .la files that isn't part of a normal cmake output. The straight Apple mechanism of libtool with static archives also failed on Linux. This leaves the MRI script mechansim which was implemented in this change.
-
Marko Mäkelä authored
Let us invoke the debug member functions of mtr_t directly. mtr_t::memo_contains(): Change the parameter type to const rw_lock_t&. This function cannot be invoked on buf_block_t::lock. The function mtr_t::memo_contains_flagged() is intended to be invoked on buf_block_t* or rw_lock_t*, and it along with mtr_t::memo_contains_page_flagged() are the way to check whether a buffer pool page has been latched within a mini-transaction.
-
Marko Mäkelä authored
xdes_get_state(), fseg_get_nth_frag_page_no(), fseg_find_free_frag_page_slot(), fseg_find_last_used_frag_page_slot(), fseg_get_n_frag_pages(), fseg_n_reserved_pages_low(), fseg_print_low(): Remove the unused parameter mtr, and add a const qualifier to the pointer to the buffer pool page frame.
-
Marko Mäkelä authored
This should have been part of commit 70d4e55d.
-
Marko Mäkelä authored
debug_sync_set_action(): Declare the dummy function inline, to silence a warning about declared-but-unused static function. This amends commit 3ccd6766.
-
Julius Goryavsky authored
-
- 09 Jun, 2020 7 commits
-
-
Varun Gupta authored
MDEV-22399: Remove multiple calls to enable and disable Handler::keyread and perform it after the plan refinement phase is done Introduce a function to enable keyreads for indexes and use this function when all the decision of plan refinement phase are done.
-
Marko Mäkelä authored
svr_n_page_hash_locks: Increase from 16 to 64. Before MDEV-15058, we used to have the buf_pool.page_hash partitioned to each instance. rw_lock_lock_word_decr(): Sleep a little in the spinloop. rw_lock_s_lock_low(): Correct a comment. The function does perform spinning. This improves scalability in read-only workloads on a 32-CPU system when the number of concurrent connections exceeds the CPU core count. Thanks to Axel Schwenke for running benchmarks.
-
Marko Mäkelä authored
-
Varun Gupta authored
The issue here is charset for Sort_param::tmp_buffer is cleared when bzero is done for Sort_param. Make sure to set the charset explicitly in the constructor for tmp_buffer.
-
Sergei Golubchik authored
reduce the amount of engine-specific code in the server, particularly as it does not serve any purpose now. may be needed for VP engine, to be reconsidered in MDEV-7795
-
Alexander Barkov authored
Disallow BIT_AND(), BIT_OR(), BIT_XOR() for data types GEOMETRY and INET6, as they cannot return any useful integer values.
-
Eugene Kosov authored
MDEV-22325 ib_logfile0 is too small for innodb_thread_concurrency=0. The size of ib_logfile0 should be bigger than 200 kB * innodb_thread_concurrency. Correct log message. IMO, we shouldn't be very precise in that message as the formula behind it is not trivial. Also performed a little cleanup.
-
- 08 Jun, 2020 6 commits
-
-
Marko Mäkelä authored
buf_LRU_make_block_young(): Merge with buf_page_make_young(). buf_pool_check_no_pending_io(): Remove. Replaced with buf_pool.any_io_pending() and buf_pool.io_pending(), which do not unnecessarily acquire buf_pool.mutex. buf_pool_t::init_flush[]: Use atomic access, so that buf_flush_wait_LRU_batch_end() can avoid acquiring buf_pool.mutex. buf_pool_t::try_LRU_scan: Declare as bool.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
When MDEV-22769 introduced srv_shutdown_state=SRV_SHUTDOWN_INITIATED in commit efc70da5 we forgot to adjust a few checks for SRV_SHUTDOWN_NONE. In the initial shutdown step, we are waiting for the background DROP TABLE queue to be processed or discarded. At that time, some background tasks (such as buffer pool resizing or dumping or encryption key rotation) may be terminated, but others must remain running normally. srv_purge_coordinator_suspend(), srv_purge_coordinator_thread(), srv_start_wait_for_purge_to_start(): Treat SRV_SHUTDOWN_NONE and SRV_SHUTDOWN_INITIATED equally.
-
- 07 Jun, 2020 8 commits
-
-
Marko Mäkelä authored
dict_table_t::parse_name(): Strip any partition or subpartition name before copying the name to the decoding buffer.
-
Monty authored
MDEV-19320 Sequence gets corrupted and produces ER_KEY_NOT_FOUND (Can't find record) after ALTER .. ORDER BY
-
Monty authored
MDEV-19977 Assertion `(0xFUL & mode) == LOCK_S || (0xFUL & mode) == LOCK_X' failed in lock_rec_lock
-
Alexander Barkov authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
create_table_info_t::create_foreign_keys(): Make the create_name buffer long enough for both the database and table name. It is still not long enough to hold partition or subpartition names. Because we do never supported FOREIGN KEY constraints on partitions, we can simply skip the call to innobase_convert_name() on CREATE TABLE.
-
Sachin authored
MDEV-22719 Long unique keys are not created when individual key_part->length < max_key_length but SUM(key_parts->length) > max_key_length Make UNIQUE HASH key in case when key_info->key_length > max_key_length
-
Sachin authored
MDEV-21804 Assertion `marked_for_read()' failed upon INSERT into table with long unique blob under binlog_row_image=NOBLOB Problem:- Calling mark_columns_per_binlog_row_image() earlier may change the result of mark_virtual_columns_for_write() , Since it can set the bitmap on for virtual column, and henceforth mark_virtual_column_deps(field) will never be called in mark_virtual_column_with_deps. This bug is not specific for long unique, It also fails for this case create table t2(id int primary key, a blob, b varchar(20) as (LEFT(a,2)));
-
- 06 Jun, 2020 12 commits
-
-
Marko Mäkelä authored
-
Igor Babaev authored
This bug is the same as the bug MDEV-17024. The crashes caused by these bugs were due to premature cleanups of the unit specifying recursive CTEs that happened in some cases when there were several outer references the same recursive CTE. The problem of premature cleanups for recursive CTEs could be already resolved by the correction in TABLE_LIST::set_as_with_table() introduced in this patch. ALL other changes introduced by the patches for MDEV-17024 and MDEV-22748 guarantee that this clean-ups are performed as soon as possible: when the select containing the last outer reference to a recursive CTE is being cleaned up the specification of the recursive CTE should be cleaned up as well.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
lock_check_trx_id_sanity(): Because the argument of UNIV_LIKELY or __builtin_expect() can be less than sizeof(trx_id_t) on 32-bit systems, it cannot reliably perform an implicit comparison to 0.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Alexander Barkov authored
Bit operators (~ ^ | & << >>) and the function BIT_COUNT() always called val_int() for their arguments. It worked correctly only for INT type arguments. In case of DECIMAL and DOUBLE arguments it did not work well: the argument values were truncated to the maximum SIGNED BIGINT value of 9223372036854775807. Fixing the code as follows: - If the argument if of an integer data type, it works using val_int() as before. - If the argument if of some other data type, it gets the argument value using val_decimal(), to avoid truncation, and then converts the result to ulonglong. Using Item_handled_func to switch between the two approaches easier. As an additional advantage, with Item_handled_func it will be easier to implement overloading in the future, so data type plugings will be able to define their own behavioir of bit operators and BIT_COUNT(). Moving the code from the former val_int() implementations as methods to Longlong_null, to avoid code duplication in the INT and DECIMAL branches.
-
Marko Mäkelä authored
page_zip_fields_decode(): Do not dereference index=NULL. Instead, return NULL early. The only caller does not care about the values of output parameters in that case. This bug was introduced in MySQL 5.7.6 by mysql/mysql-server@9eae0edb7a8e4004328e61157f5f3b39cebe1b2b and in MariaDB 10.2.2 by commit 2e814d47. Thanks to my son for pointing this out after investigating the output of a static analysis tool.
-
Marko Mäkelä authored
-