- 28 Jul, 2022 2 commits
-
-
Thirunarayanan Balathandayuthapani authored
loss of debug sync signal
-
Daniel Black authored
At some point the incrementing of the transaction counter got dropped. Thanks Agustin for the bug report.
-
- 27 Jul, 2022 7 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Starting with commit da094188 (MDEV-24393), MariaDB will no longer acquire advisory file locks on InnoDB data files by default, because it would create a large number of entries in Linux /proc/locks. The motivation for acquiring the file locks is to prevent accidental concurrent startup of multiple server processes on the same data files. Such mistake still turns out to be relatively common, based on corruption bug reports from the community. To prevent corruption due to concurrent startup attempts, the Aria storage engine would unconditionally acquire an advisory lock on one of its log files. Solution: InnoDB will always lock its system tablespace files. (Ever since commit 685d958e the InnoDB log file will not necessarily be open while the server is running, because it can be accessed via memory-mapped I/O.) If more protection is desired, then the option --external-locking can be used. The mandatory advisory lock also fixes intermittent failures of some crash recovery tests. It turns out that when the mtr test harness kills and restarts the server, it will not actually ensure that the old process has terminated before starting the new one.
-
Oleksandr Byelkin authored
-
Marko Mäkelä authored
After reverting commit commit 39f45f6f all combinations of this test would crash the server.
-
Igor Babaev authored
This bug could cause a crash of the server when executing queries containing ANY/ALL predicands with redundant subqueries in GROUP BY clauses. These subqueries are eliminated by remove_redundant_subquery_clause() together with elimination of GROUP BY list containing these subqueries. However the references to the elements of the GROUP BY remained in the JOIN::all_fields list of the right operand of of the ALL/ANY predicand. Later these references confused make_aggr_tables_info() when forming proper execution structures after ALL/ANY predicands had been replaced with expressions containing MIN/MAX set functions. The patch just removes these references from JOIN::all_fields list used by the subquery of the ALL/ANY predicand when its GROUP BY clause is eliminated. Approved by Oleksandr Byelkin <sanja@mariadb.com>
-
- 26 Jul, 2022 17 commits
-
-
Sergei Golubchik authored
followup for 4bc34ef3
-
Marko Mäkelä authored
prepare_inplace_add_virtual(): Over-estimate the size of the arrays by not subtracting table->s->virtual_fields (which may refer to stored, not virtual generated columns). InnoDB only distinguishes virtual columns.
-
Andrei authored
... on semisync slave To provide semisync master crash-recovery the same server-id transactions were made to accept for execution on the semisync slave when the strict gtid mode (see MDEV-27760). That however caused out-of-order error on a master's transaction server of the circular setup. The error was fair in the sense of the gtid strict mode rule as indeed under the condition of the circular setup the replicated transaction already exists in the local binlog. This is fixed by the commit to ignore on the gtid strict mode semisync slave those gtids that exist in the slave's binlog that effectively restores the default same-server-id ignore policy. At the same time the fixes complies with MDEV-21117 semisync slave recovery to accept the same server-id transactions that do not exist in local binlog.
-
Daniel Black authored
SHOW ENGINE INNODB STATUS and SHOW GLOBAL VARIABLES were blocking on the locks used to access the history length in MDEV-29141. While the reason for the blockage was elsewhere, we should make these monitoring commands less blocking as there is a trx_sys.history_size_approx function that can be used. SHOW ENGINE INNODB STATUS and SHOW GLOBAL STATUS LIKE 'innodb_history_list_length' and Innodb Monitors can use trx_sys.history_size_approx().
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Thirunarayanan Balathandayuthapani authored
- Import tablespace re-evicts and reload the table definition. During that time, innodb has to load the table even though the secondary fts index marked as corrupted
-
Thirunarayanan Balathandayuthapani authored
- InnoDB should ignore the single word followed by apostrophe while tokenising the document. Example is that if the input string is O'brien then right now, InnoDB seperates into two tokens as O, brien. But after this patch, InnoDB can ignore the token 'O' and consider only 'brien'.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
The logic on Windows was originally simplified in commit 4bca1a78 for storage/xtradb and later in commit 6304c0bf for storage/innobase.
-
Marko Mäkelä authored
Unlike GCC, clang could optimize away alloca() and thus the ALLOCATE_MEM_ON_STACK() instrumentation. To make it harder, let us invoke a non-inline function on the entire allocated buffer.
-
Andrei authored
The hang may be caused by a 1pc branch that was fixed by MDEV-26031 in 10.6 and up. That commit did not look relevant in 10.5 and below so was not pushed to the low branches. To possibly tackle the reported issue the MDEV-26031 is backported now with a test that unlike 10.6 does not expose the former bug in 10.5. It is only needed for checking a refined logics inside MYSQL_BIN_LOG::write_transaction_to_binlog. The latter is made to do away with xid-unlogging (which is suspected to have been at fault) for xid-less transaction.
-
Mikhail Chalov authored
This commit replaces sprintf(buf, ...) with snprintf(buf, sizeof(buf), ...), specifically in the "easy" cases where buf is allocated with a size known at compile time. The changes make sure we are not write outside array/string bounds which will lead to undefined behaviour. In case the code is trying to write outside bounds - safe version of functions simply cut the string messages so we process this gracefully. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc. bsonudf.cpp warnings cleanup by Daniel Black Reviewer: Daniel Black
-
Thirunarayanan Balathandayuthapani authored
- Remove the FILE_MODIFY message in backup_file_op()
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Rucha Deodhar authored
This commit is a fixup for MDEV-28762 Analysis: Some recursive json functions dont check for stack control Fix: Add check_stack_overrun(). The last argument is NULL because it is not used
-
- 25 Jul, 2022 7 commits
-
-
Brandon Nesterenko authored
Problem: ======= This patch addresses two issues: 1. An incident event can be incorrectly reported for transactions which are rolled back successfully. That is, an incident event should only be generated for failed “non-transactional transactions” (i.e., those which modify non-transactional tables) because they cannot be rolled back. 2. When the mariadb slave (error) stops at receiving the incident event there's no description of what led to it. Neither in the event nor in the master's error log. Solution: ======== Before reporting an incident event for a transaction, first validate that it is “non-transactional” (i.e. cannot be safely rolled back). To determine if a transaction is non-transactional, lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE) is used because it is set previously in THD::decide_logging_format(). Additionally, when an incident event is written, write an error message to the server’s error log to indicate the underlying issue. Reviewed by: =========== Andrei Elkin <andrei.elkin@mariadb.com>
-
Rucha Deodhar authored
-
Marko Mäkelä authored
Spotted by Thirunarayanan Balathandayuthapani.
-
Vlad Lesin authored
Get rid of BTR_ESTIMATE and btr_cur_t::path_arr. Before the fix btr_estimate_n_rows_in_range_low() used two btr_cur_search_to_nth_level() calls to create two arrays of tree path, the array per border. And then it tried to estimate the number of rows diving level-by-level with the array elements. As the path pages are unlatched during the arrays iterating, the tree could be modified, the estimation function called itself until the number of attempts exceed. After the fix the estimation happens during search process. Roughly, the algorithm is the following. Dive in the left page, then if there are pages between left and right ones, read a few pages to the right, if the right page is reached, fetch it and count the exact number of rows, otherwise count the estimated number of rows, and fetch the right page. The latching order corresponds to WL#6326 rules, i.e.: (2.1) [same as (1.1)]: Page latches must be acquired in descending order of tree level. (2.2) When acquiring a node pointer page latch at level L, we must hold the left sibling page latch (at level L) or some ancestor latch (at level>L). When we dive to the level down, the parent page is unlatched only after the the current level page is latched. When we estimate the number of rows on some level, we latch the left border, then fetch the next page, and then fetch the next page unlatching the previous page after the current page is latched until the right border is reached. I.e. the left sibling is always latched when we acquire page latch on the same level. When we reach the right border, the current page is unlatched, and then the right border is latched. Following to (2.2) rule, we can do this because the right border's parent is latched.
-
Thirunarayanan Balathandayuthapani authored
- Remove the FILE_MODIFY message from mariabackup which was displaying the list of file names which were modified since the previous checkpoint.
-
Marko Mäkelä authored
dict_load_foreigns(): Use a correctly sized buffer for the maximum-length SYS_FOREIGN.ID. In case of overflow, do not crash the server but instead return DB_CORRUPTION.
-
Brad Smith authored
-
- 23 Jul, 2022 1 commit
-
-
Rucha Deodhar authored
This commit is a fixup for MDEV-28762 Analysis: Some recursive json functions dont check for stack control Fix: Add check_stack_overrun(). The last argument is NULL because it is not used
-
- 22 Jul, 2022 3 commits
-
-
Oleksandr Byelkin authored
-
haomi123 authored
-
Oleksandr Byelkin authored
-
- 21 Jul, 2022 2 commits
-
-
Oleksandr Byelkin authored
-
Oleksandr Byelkin authored
It is legal that open table can leave unopened tables in SP and other parts of the code shoud expect it.
-
- 20 Jul, 2022 1 commit
-
-
Rucha Deodhar authored
Analysis: Some recursive json functions dont check for stack control Fix: Add check_stack_overrun(). The last argument is NULL because it is not used
-