- 19 Nov, 2023 2 commits
-
-
Oleksandr Byelkin authored
-
Nikita Malyavin authored
-
- 14 Nov, 2023 4 commits
-
-
Oleksandr Byelkin authored
-
Oleksandr Byelkin authored
MariaDB 11.1.3 release
-
Nikita Malyavin authored
-
Nikita Malyavin authored
In case of a non-recovery XA rollback/commit in the same connection, thon->rollback is called instead of rollback_by_xid, Though previously, thd_ha_data was moved to thd->transaction->xid_state.xid in hton->prepare. Like it wasn't enough, XA PREPARE can be skipped upon user and thus we can end up in hton->commit/rollback with and unprepared XA, so checking xid_state.is_explicit_XA is not enough -- we should check xid_state.get_state_code() == XA_PREPARED, which will also guarantee is_explicit_XA() == true.
-
- 08 Nov, 2023 10 commits
-
-
Oleksandr Byelkin authored
-
Oleksandr Byelkin authored
-
Oleksandr Byelkin authored
-
Oleksandr Byelkin authored
-
Oleksandr Byelkin authored
-
Kristian Nielsen authored
Checking for kill with thd_kill_level() or check_killed() runs apc requests, which takes the LOCK_thd_kill mutex. But this is dangerous, as checking for kill needs to be called while holding many different mutexes, and can lead to cyclic mutex dependency and deadlock. But running apc is only "best effort", so skip running the apc if the LOCK_thd_kill is not available. The apc will then be run on next check of kill signal. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Oleksandr Byelkin authored
-
Thirunarayanan Balathandayuthapani authored
recv_dblwr_t::find_page(): Tablespace flags validity should be checked only for page 0.
-
Oleksandr Byelkin authored
Correctly supress error issuing when saving value in field for comporison
-
Sergei Petrunia authored
Fix the issue introduced in ec2574fd, fix for MDEV-31983: get_quick_record_count() must set quick_count=0 when it got IMPOSSIBLE_RANGE from test_quick_select. Failure to do so will cause an assertion in 11.0, when the number of quick select rows (0) is checked to be lower than the number of found_records (which is capped up to 1).
-
- 07 Nov, 2023 1 commit
-
-
Sergei Golubchik authored
specify algorithm/lock explicitly, don't depend on server settings
-
- 06 Nov, 2023 1 commit
-
-
Thirunarayanan Balathandayuthapani authored
recv_dblwr_t::find_page(): Tablespace flags validity should be checked only for page 0.
-
- 04 Nov, 2023 3 commits
-
-
Marko Mäkelä authored
fil_space_t::drop(): If the caller is not interested in a detached handle, close it immediately.
-
Nikita Malyavin authored
-
Nikita Malyavin authored
XA support for online alter was totally missing. Tying on binlog_hton made this hardly visible: simply having binlog_commit called from xa_commit made an impression that it will automagically work for online alter, which turns out wrong: all binlog does is writes "XA END" into trx cache and flushes it to a real binlog. In comparison, online alter can't do the same, since online replication happens in a single transaction. Solution: make a dedicated XA support. * Extend struct xid_t with a pointer to Online_alter_cache_list * On prepare: move online alter cache from THD::ha_data to XID passed * On XA commit/rollback: use the online alter cache stored in this XID. This makes us pass xid_cache_element->xid to xa_commit/xa_rollback instead of lex->xid * Use manual memory management for online alter cache list, instead of mem_root allocation, since we don't have mem_root connected to the XA transaction.
-
- 02 Nov, 2023 9 commits
-
-
Nikita Malyavin authored
Use standard handlerton functions for savepoint add/rollback. To identify the savepoint, the pointer passed is used. Every table that has online alter in progress maintains a list of savepoints independently. Also this removes setting a value to a global variable savepoint_alloc_size without any protection, which was a race condition bug.
-
Nikita Malyavin authored
-
Nikita Malyavin authored
Move all the functions dedicated to online alter to a newly created online_alter.cc. With that, make many functions static and simplify the static functions naming. Also, rename binlog_log_row_online_alter -> online_alter_log_row.
-
Nikita Malyavin authored
Assertion `!writer.checksum_len || writer.remains == 0' fails upon concurrent online ALTER and transactions with failing statements and binary log enabled. Also another assertion, `pos != (~(my_off_t) 0)', fails in my_seek, upon reinit_io_cache, on a simplified test. This means that IO_CACHE wasn't properly initialized, or had an error before. The overall problem is a deep interference with the effect of an installed binlog_hton: the assumption about that thd->binlog_get_cache_mngr() is, sufficiently, NULL, when we shouldn't run the binlog part of binlog_commit/binlog_rollback, is wrong: as turns out, sometimes the binlog handlerton can be not installed in current thd, but binlog_commit can be called on behalf of binlog, as in the bug reported. One separate condition found is XA recovery of the orphaned transaction, when binlog_commit is also called, but it has nothing to do with online alter. Solution: Extract online alter operations into a separate handlerton.
-
Nikita Malyavin authored
-
Nikita Malyavin authored
1032 (Can't find record) could be emitted when ALTER TABLE is execued vs concurrent DELETE/UPDATE/other DML that would require search on the online ALTER's side. Innodb's INPLACE, in comparison, creates a new trx_t and uses it in scope of the alter table context. ALTER TABLE class of statements (i.g. CREATE INDEX, OPTIMIZE, etc.) is expected to be unaffected by the value of current session's transaction isolation. This patch save-and-restores thd->tx_isolation and sets in to ISO_REPEATABLE_READ for almost a whole mysql_alter_table duration, to avoid any possible side-effect of it. This should be primarily done before the lock_tables call, to initialize the storage engine's local value correctly during the store_lock() call. sql_table.cc: set thd->tx_isolation to ISO_REPEATABLE_READ in mysql_alter_table and then restore it to the original value in the end of the call.
-
Rucha Deodhar authored
data from a table similar to other JSON functions Analysis: Since we are fetching values for every row ( because we are running SELECT for all rows of a table ), correct value can be only obtained at the time of calling val_int() because it is called to get value for each row. Fix: Set up hash for each row instead of doing it during fixing fields.
-
Monty authored
The reason was that Event e11 was re-executed before "ALTER EVENT e11 DISABLE" had been executed. Fixed by increasing re-schedule time Other things: - Removed double accounting of 'execution_count'. It was incremented in top->mark_last_executed(thd) that was executed a few lines earlier.
-
Oleg Smirnov authored
Pushing down statements to FederatedX engine is implemented by printing either SELECT_LEX or SELECT_LEX_UNIT into a string and sending that string to the engine. In the case of pushing down a single SELECT having a CTE (WITH clause) there was a problem, because normally single SELECTs were printed using SELECT_LEX::print(). But CTEs are stored in the upper unit of the SELECT_LEX - SELECT_LEX_UNIT, so they were not unfolded in the string produced. The solution is to invoke SELECT_LEX_UNIT::print() when pushing down single SELECT statements (but not those which are parts of units), so the possible CTEs are unfolded and printed. Reviewed by Sergei Petrunia (sergey@mariadb.com)
-
- 01 Nov, 2023 4 commits
-
-
Monty authored
MDEV-32441 SENT_ROWS shows random wrong values when stored function is selected. MDEV-32281 EXAMINED_ROWS is not populated in information_schema.processlist upon SELECT. Added ROWS_SENT to information_schema.processlist This is to have the same information as Percona server (SENT_ROWS) To ensure that information_schema.processlist has correct values for sent_rows and examined_rows I introduced two new variables to hold the total counts so far. This was needed as stored functions and stored procedures will reset the normal counters to be able to count rows for each statement individually for slow query log. Other things: - Selects with functions shows in processlist the total examined_rows and sent_rows by the main statement and all functions. - Stored procedures shows in processlist examined_rows and sent_rows per stored procedure statement. - Fixed some double accounting for sent_rows and examined_rows. - HANDLER operations now also supports send_rows and examined_rows. - Display sizes for MEMORY_USED, MAX_MEMORY_USED, EXAMINED_ROWS and QUERY_ID in information_schema.processlist changed to 10 characters. - EXAMINED_ROWS and SENT_ROWS changed to bigint. - INSERT RETURNING and DELETE RETURNING now updates SENT_ROWS. - As thd is always up to date with examined_rows, we do not need to handle examined row counting for unions or filesort. - I renamed SORT_INFO::examined_rows to m_examined_rows to ensure that we don't get bugs in merges that tries to use examined_rows. - Removed calls of type "thd->set_examined_row_count(0)" as they are not needed anymore. - Removed JOIN::join_examined_rows - Removed not used functions: THD::set_examined_row_count() - Made inline some functions that where called for each row.
-
Monty authored
-
Sergei Golubchik authored
-
Monty authored
-
- 31 Oct, 2023 1 commit
-
-
Marko Mäkelä authored
fil_delete_tablespace(): Invoke fil_space_free_low() directly. This fixes up commit 39e3ca8b
-
- 30 Oct, 2023 4 commits
-
-
Monty authored
Added missing initializer
-
Oleksandr Byelkin authored
-
Sergei Golubchik authored
According to the standart draft UUIDv6 and UUIDv7 values must be compared as opaque raw bytes. Let's only compare with byte-swapping if both values need byte swapping.
-
Sergei Golubchik authored
* modify the test to use different and not monotonous timestamps * rename methods to be unambiguous (for IDE challenged devs) * move byte swap checks into helpers
-
- 28 Oct, 2023 1 commit
-
-
Rex authored
Fixup for MDEV-31983, incorrect test for checking ability to use quick select. Approved by Sergei Petrunia
-