- 03 Jan, 2022 2 commits
-
-
Marko Mäkelä authored
trx_purge_truncate_history(): Avoid a deadlock with buf_pool_t::release_freed_page(). Page latches are not supposed to be waited for while holding a mutex like buf_pool.mutex or buf_pool.flush_list_mutex. This regression was caused by commit aaef2e1d (MDEV-27058). Before that, trx_purge_truncate_history() would buffer-fix the block, release buf_pool.flush_list_mutex, and then wait for the exclusive page latch. This bug led to occasional failures of the test innodb.undo_truncate_recover.
-
Andrei authored
The reason of the double lock was an extraneous ha_flush_logs(). Unlike the upstream it is unnecessary in Mariadb that exploits a binlog checkpoint mechanism for not letting PURGE or RESET-MASTER to trouble transaction recovery. That is in case should a trx be prepared but its binlog file gone, the trx then is committed on disk too. Those facts have been always verified by existing tests of binlog.binlog_{checkpoint,xa_recover}.test. A regression test for the bug is included though.
-
- 31 Dec, 2021 1 commit
-
-
Jesús Marín authored
Cambiar mysql por maria
-
- 23 Dec, 2021 1 commit
-
-
Nayuta Yanagisawa authored
MDEV-27184 Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed, Assertion `str.alloced_length() >= str.length() + data_len' failed Spider crashes on a query that inserts some rows including float. This is because Spider allocates a string of insufficient length.
-
- 22 Dec, 2021 1 commit
-
-
Marko Mäkelä authored
Some tools on Microsoft Windows refuse to work with symbolic links. Let us simply copy the relatively small files instead.
-
- 21 Dec, 2021 2 commits
-
-
Marko Mäkelä authored
eval_substr(): Do not allow the string buffer of the first argument to be extended. Trim the length of the returned result if it would exceed the end of the buffer.
-
Thirunarayanan Balathandayuthapani authored
- InnoDB fails to write the page0 while trying to attempt recover the page0 from doublewrite buffer and incorrect size is being passed to the os_file_write(). Fix is that InnoDB should proper close the parenthesis for function os_file_write() in deferred_dblwr() and InnoDB should free the newly created tablespace in case of error in deferred_dblwr().
-
- 19 Dec, 2021 1 commit
-
-
Sergei Petrunia authored
In mysql_execute_command(), move optimizer trace initialization to be after run_set_statement_if_requested() call. Unfortunately, mysql_execute_command() code uses "goto error" a lot, and this means optimizer trace code cannot use RAII objects. Work this around by: - Make Opt_trace_start a non-RAII object, add init() method. - Move the code that writes the top-level object and array into Opt_trace_start::init().
-
- 16 Dec, 2021 1 commit
-
-
Vladislav Vaintroub authored
-
- 14 Dec, 2021 1 commit
-
-
Julius Goryavsky authored
1. Galera SST scripts should use ssl_capath (not ssl_ca) for CA directory. The current implementation tries to automatically detect the path using the trailing slash in the ssl_ca variable value, but this approach is not compatible with the server configuration. Now, by analogy with the server, SST scripts also use a separate ssl_capath variable. In addition, a similar tcapath variable has been added for the old-style configuration (in the "sst" section). 2. Openssl utility detection made more reliable. 3. Removed extra spaces in automatically generated command lines - to simplify debugging of the SST scripts. 4. In general, the code for detecting the presence or absence of auxiliary utilities has been improved - it is made more reliable in some configurations (and for shells other than bash).
-
- 12 Dec, 2021 3 commits
-
-
Thirunarayanan Balathandayuthapani authored
- Addressing the format issue in deferred_dblwr() and changed the function comment.
-
Thirunarayanan Balathandayuthapani authored
InnoDB fails to identify the deferred tablespace after recovery. Problem is that InnoDB fails to rename the tablespace present in recovered tablespace. Fix is that InnoDB should try to rename the recovered tablespace when tablespace is being deferred
-
Thirunarayanan Balathandayuthapani authored
This patch reverts the commit cab8f4b5. InnoDB fails to restore page0 from doublewrite buffer when the tablespace is being deferred. In that case, InnoDB doesn't find INIT_PAGE redo log record for page0 and it leads to failure. InnoDB should recovery page0 from doublewrite buffer for the deferred tablespace before applying the redo log records. Added deferred_dblwr() to restore page0 of deferred tablespace from doublewrite buffer
-
- 10 Dec, 2021 1 commit
-
-
Marko Mäkelä authored
In commit 49e2c8f0 (MDEV-25743) some more use of the printf-style format "%.*s" was added. The length parameter is of type int, not size_t. On 64-bit platforms that follow the LLP64 convention (such as 64-bit Microsoft Windows), sizeof(int)==4 and sizeof(size_t)==8. Let us explicitly cast the lengths to the correct type in order to avoid any trouble.
-
- 07 Dec, 2021 8 commits
-
-
Sergei Golubchik authored
-
Sergei Golubchik authored
BUG#31761802 STATISTICS ANY QUERIES USING VIEWS ARE SUMMARIZED TOGETHER WITH THE VIEW DEFINITION SELECT test case only
-
Sergei Golubchik authored
now when SLES12.3 is gone, we can enforce it
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Marko Mäkelä authored
During startup, InnoDB must write a FILE_CHECKPOINT record. However, before MDEV-12353 (in MariaDB Server 10.2, 10.3, 10.4) the corresponding record MLOG_CHECKPOINT was encoded in a different way. When we are upgrading from a logically empty 10.2, 10.3, or 10.4 redo log, we must not write anything to the old log file, because if the server were killed during the upgrade, we would end up with a corrupted log file, and both the old and the new server would refuse to start up. On upgrade, we must simply create a new logically empty log file and replace the old ib_logfile0 with that.
-
Eugene Kosov authored
This is a low hanging fruit. Before this patch std::map::emplace() was a ~50% of the whole recv_sys_t::parse() operation in by test. After the fix it's only ~20%. recv_sys_t::parse() recv_sys_t::pages is a collection of all pages to recovery. Often, there are multiple changes for a single page. Often, they go in a row and for such cases let's avoid lookup in a std::map. cached_pages_it serves as a cache of size 1. recv_sys_t::add(): replace page_id argument with a std::map::iterator
-
Sergei Golubchik authored
-
- 06 Dec, 2021 4 commits
-
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Eugene Kosov authored
-
- 04 Dec, 2021 2 commits
-
-
Marko Mäkelä authored
page_zip_des_t::clear(): Avoid a bogus GCC warning with some pointer arithmetics. Yes, storing the unrelated member "fix" in this object is ugly, but it avoids memory alignment overhead on 64-bit architectures.
-
Marko Mäkelä authored
-
- 03 Dec, 2021 6 commits
-
-
Marko Mäkelä authored
In commit aae3f921 recv_apply_hashed_log_recs() was replaced by recv_sys_t::apply().
-
Eugene Kosov authored
log_write_buf(): do not cast to size_t which prevents to write to files which a bigger that 4G and remove useless assertion
-
Marko Mäkelä authored
-
Marko Mäkelä authored
A part of the test main.long_unique attempts to insert records with two 60,000,001-byte columns. Let us move that test into a separate file main.long_unique_big, declared as big test, so that it can be skipped in environments with limited memory.
-
Christopher Odenbach authored
How 'bout know?
-
Christopher Odenbach authored
Hi, if the pid-file option is configured more than once (e.g. multiple times in different files), my_print_defaults prints it twice, resulting in the logrotate postrotate script failing because of a syntax error. Debian fixed this already (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=830976#42). Perhaps you could implement this small change in the other branches as well? Thanks, Christopher
-
- 02 Dec, 2021 1 commit
-
-
Lukas Javorsky authored
Include gronnga and groonga-normalizer-mysql install path
-
- 01 Dec, 2021 3 commits
-
-
Marko Mäkelä authored
Several EXTENDED type records have already been implemented.
-
Thirunarayanan Balathandayuthapani authored
- Replaced the pointer parameter of validate_for_recovery() with uint32_t
-
Jan Lindström authored
* galera_kill_applier : we should make sure that node has correct number of wsrep appliers * galera_bad_wsrep_new_cluster: This test restarts both nodes, so it is bad on mtr. Make sure it is run alone * galera_update_limit : Make sure we have PK when needed galera_as_slave_replay : bf abort was not consistent * galera_unicode_pk : Add wait_conditions so that all nodes are part of cluster and DDL and INSERT has replicated before any further operations are done. * galera_bf_abort_at_after_statement : Add wait_conditions to make sure all nodes are part of cluster and that DDL and INSERT has replicated. Make sure we reset DEBUG_SYNC.
-
- 30 Nov, 2021 2 commits
-
-
Martin Beck authored
MariaDB server crashes on ARM (weak memory model architecture) while concurrently executing l_find to load node->key and add_to_purgatory to store node->key = NULL. l_find then uses key (which is NULL), to pass it to a comparison function. The specific problem is the out-of-order execution that happens on a weak memory model architecture. Two essential reorderings are possible, which need to be prevented. a) As l_find has no barriers in place between the optimistic read of the key field lf_hash.cc#L117 and the verification of link lf_hash.cc#L124, the processor can reorder the load to happen after the while-loop. In that case, a concurrent thread executing add_to_purgatory on the same node can be scheduled to store NULL at the key field lf_alloc-pin.c#L253 before key is loaded in l_find. b) A node is marked as deleted by a CAS in l_delete lf_hash.cc#L247 and taken off the list with an upfollowing CAS lf_hash.cc#L252. Only if both CAS succeed, the key field is written to by add_to_purgatory. However, due to a missing barrier, the relaxed store of key lf_alloc-pin.c#L253 can be moved ahead of the two CAS operations, which makes the value of the local purgatory list stored by add_to_purgatory visible to all threads operating on the list. As the node is not marked as deleted yet, the same error occurs in l_find. This change three accesses to be atomic. * optimistic read of key in l_find lf_hash.cc#L117 * read of link for verification lf_hash.cc#L124 * write of key in add_to_purgatory lf_alloc-pin.c#L253 Reviewers: Sergei Vojtovich, Sergei Golubchik Fixes: MDEV-23510 / d30c1331a18d875e553f3fcf544997e4f33fb943
-
Martin Beck authored
Per bug report, cycles was woefully insufficient to detect any implementation error.
-