- 21 Dec, 2023 2 commits
-
-
Marko Mäkelä authored
Correctly merge 1ac03fd9 (superceding a52cd4ae). Fixes up the merge commit fd0b47f9
-
Daniel Black authored
Silence a few more un-actionable warnings. Use ignoring result on write to make sure compilers don't complain.
-
- 20 Dec, 2023 3 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Daniel Black authored
Errors outputted as notes are weird, and when a user cannot do anything about them, why output them at all. Point taken, removed these, and left positive message on initialization (from Marko). Thanks Elena Stepanova.
-
- 19 Dec, 2023 9 commits
-
-
Marko Mäkelä authored
mariadb-backup wasn't meant to have memory pressure sensors so restrict the operation to SRV_OPERATIONAL_NORMAL mode. Reviewed by Daniel Black.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
trx_purge_truncate_history(): If a fast shutdown has been initiated, disregard innodb_undo_log_truncate=ON and return.
-
Kristian Nielsen authored
The previous patch for MDEV-10653 changes the rpl_parallel::workers_idle() function to use Relay_log_info::last_inuse_relaylog to check for idle workers. But the code was missing a NULL check. Also, there was one place during SQL slave thread start which was missing mutex synchronisation when updating inuse_relaylog. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
The error-injection inject_mdev8031 simulates a deadlock kill in a specific place, by setting killed_for_retry to RETRY_KILL_KILLED directly. If a real deadlock kill triggers at the same time, it is possible for the thread to complete its transaction retry and set rgi_slave to NULL before the real readlock kill can complete in the background. This will cause a segfault due to null-pointer access. Fix by changing the error injection to do a real background deadlock kill, which ensures that the thread will wait for any pending background kills to complete. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
Item::val_str() sets the Item::null_value flag, so call it before checking the flag, not after. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Marko Mäkelä authored
trx_purge_truncate_history(): Release buf_pool.flush_list_mutex and 'dummily' acquire and release buf_pool.mutex before starting a rescan of buf_pool.flush_list, to ensure that the buf_flush_page_cleaner thread (which may be holding buf_pool.mutex) will be able to proceed. This fixes up commit 5dbe7a8c (MDEV-32757). Tested by: Axel Schwenke (on Ubuntu 18.04 and Ubuntu 20.04) Reviewed by: Vladislav Lesin
-
hsser authored
This commit addresses the file leakage problem encountered with the mysql_upgrade --check-if-upgrade-is-needed command.
-
- 18 Dec, 2023 7 commits
-
-
Sergei Golubchik authored
e.g. it could be {"errors":["no handler for route \"mariadbtest/data/1\". route entry not found."]}
-
Sergei Golubchik authored
ASAN uses *a lot* more stack. use not_asan.inc for tests that recursively put a lot of data on the stack
-
Sergei Golubchik authored
"InnoDB: The last skipped log record LSN X is not equal to page LSN Y" is not an actionable message for the user, so it should be a note, not a warning
-
Sergei Golubchik authored
to iterate over all status variables one should use LOCK_all_status_vars not LOCK_status this fixes sporadic mutex lock inversion in plugins.password_reuse_check: * acl_cache->lock is taken over complex operations that might increment status counters (under LOCK_status). * acl_cache->lock is needed to get the values of Acl% status variables when iterating over status variables
-
Sergei Golubchik authored
-
Marko Mäkelä authored
buf_read_ahead_linear(): Suppress a warning of comparing potentially uninitialized FIL_PAGE_PREV and FIL_PAGE_NEXT fields.
-
Marko Mäkelä authored
-
- 17 Dec, 2023 3 commits
-
-
Sergei Golubchik authored
it can be invoked with ms=0. In that case dict_stats_func is invoked immediately, it calls dict_stats_process_entry_from_recalc_pool() which at the end might try to call dict_stats_schedule() again to queue another recalc. And it can happen that the first dict_stats_schedule(0) call didn't release dict_stats_mutex yet, so the second dict_stats_schedule() won't queue a recalc. And as a result the table won't have its stats recalculated at all, not now, not later. This causes innodb.innodb_stats_auto_recalc to fail sporadically. This commit doesn't fix it but makes it less likely to occur which happens to be enough for the test to pass. Proper fix is coming soon.
-
Sergei Golubchik authored
use signal_ddl_recovery_done callback for that. also make the server to call signal_ddl_recovery_done() when loading plugins at run-time (so that plugins would't need to detect that on their own)
-
Sergei Golubchik authored
-
- 15 Dec, 2023 5 commits
-
-
Marko Mäkelä authored
trx_purge_truncate_history(): Release buf_pool.flush_list_mutex before starting a rescan of buf_pool.flush_list, to ensure that the buf_flush_page_cleaner thread (which may be holding buf_pool.mutex) will be able to proceed. This fixes up commit a0f02f74 (MDEV-32757). Tested by: Axel Schwenke Reviewed by: Vladislav Lesin
-
Sergei Golubchik authored
see also 4eca64e3
-
Thirunarayanan Balathandayuthapani authored
- InnoDB should write all zeros into a table and its indexes statistics members when table is unreadable.
-
Thirunarayanan Balathandayuthapani authored
-
Sergei Golubchik authored
followup for ad796aaa
-
- 14 Dec, 2023 5 commits
-
-
Sisi Huang authored
-
Sergei Golubchik authored
-
Marko Mäkelä authored
row_ins_clust_index_entry_low(): Invoke btr_set_instant() in the same mini-transaction that has successfully inserted the metadata record. In this way, if inserting the metadata record fails before any undo log record was written for it, the index root page will remain consistent. innobase_instant_try(): Remove the btr_set_instant() call. This is a 10.6 version of c17aca2f. Tested by: Matthias Leich Reviewed by: Thirunarayanan Balathandayuthapani
-
Marko Mäkelä authored
During mariadb-backup --backup, a table could be renamed, created and dropped. We could have both oldname.ibd and oldname.new, and one of the files would be deleted before the InnoDB recovery starts. The desired end result would be that we will recover both oldname.ibd and newname.ibd. During normal crash recovery, at most one file operation (create, rename, delete) may require to be replayed from the write-ahead log before the DDL recovery starts. deferred_spaces.create(): In mariadb-backup --prepare, try to create the file in case it does not exist. fil_name_process(): Display a message about not found files not only if innodb_force_recovery is set, but also in mariadb-backup --prepare. If we are processing a FILE_RENAME for a tablespace whose recovery is deferred, suppress the message and adjust the file name in case fil_ibd_load() returns FIL_LOAD_NOT_FOUND or FIL_LOAD_DEFER. fil_ibd_load(): Remove a redundant file name comparison. The caller already compared that the file names are different. We used to wrongly return FIL_LOAD_OK instead of FIL_LOAD_ID_CHANGED if only the schema name differed, such as a/t1.ibd and b/t1.ibd. Tested by: Matthias Leich Reviewed by: Thirunarayanan Balathandayuthapani
-
Marko Mäkelä authored
-
- 13 Dec, 2023 6 commits
-
-
Marko Mäkelä authored
ha_innobase::compare_key_parts(): If a full column index is being replaced with a column prefix index, return Compare_keys::NotEqual.
-
Daniel Black authored
opt_kill_long_query_type being an enum could be 0 corresponding to ALL. When ALL is specified, the CONNECTION ADMIN is still required. Also check REPLICA MONITOR privilege and make the tests find the results by recording stderr. Noticed thanks to bug report by Tim van Dijen. Fixes: 79b58f1c
-
Rex authored
Consider this query SELECT t1.* FROM t1, (SELECT t2.b FROM t2 WHERE NOT EXISTS (SELECT 1 FROM t3) GROUP BY b) sq where sq.b = t1.a; If SELECT 1 FROM t3 is expensive, for example t3 has > thd->variables.expensive_subquery_limit, first evaluation is deferred to mysql_derived_fill(). There it is noted that, in the above case NOT EXISTS (SELECT 1 FROM t3) is constant and false. This causes the join variable zero_result_cause to be set to "Impossible WHERE noticed after reading const tables" and the handler for this join is never "opened" via handler::ha_open. When mysql_derived_fill() is called for the next group of results, this unopened handler is not taken into account. reviewed by Igor Babaev (igor@mariadb.com)
-
Marko Mäkelä authored
row_ins_clust_index_entry_low(): Invoke btr_set_instant() in the same mini-transaction that has successfully inserted the metadata record. In this way, if inserting the metadata record fails before any undo log record was written for it, the index root page will remain consistent. innobase_instant_try(): Remove the btr_set_instant() call. Reviewed by: Thirunarayanan Balathandayuthapani Tested by: Matthias Leich
-
Sergei Golubchik authored
more robust plugins.compression test
-
Daniel Black authored
Like all IF NOT EXISTS syntax, a Note should be generated. The original commit of Seqeuences cleared the IF NOT EXISTS part in the sql/sql_yacc.yy with lex->create_info.init(). Without this bit set there was no way it could do anything other than error. To remedy this removal, the sql_yacc.yy components have been minimised as they where all set at the beginning of the ALTER. This way the opt_if_not_exists correctly set the IF_EXISTS flag. In MDEV-13005 (bb4dd70e) the error code changed, requiring ER_UNKNOWN_SEQUENCES to be handled in the function No_such_table_error_handler::handle_condition.
-