- 29 Apr, 2024 3 commits
-
-
Alexander Barkov authored
Backporting add782a1 from 10.6, this fixes the problem.
-
Alexander Barkov authored
Regexp_processor_pcre::fix_owner() called Regexp_processor_pcre::compile(), which could fail on the regex syntax error in the pattern and put an error into the diagnostics area. However, the callers: - Item_func_regex::fix_length_and_dec() - Item_func_regexp_instr::fix_length_and_dec() still returned "false" in such cases, which made the code crash later inside Diagnostics_area::set_ok_status(). Fix: - Change the return type of fix_onwer() from "void" to "bool" and return "true" whenever an error is put to the DA (e.g. on the syntax error in the pattern). - Fixing fix_length_and_dec() of the mentioned Item_func_xxx classes to return "true" if fix_onwer() returned "true".
-
Yuchen Pei authored
We have to #undef my_error and find it from udfs when spider is not installed.
-
- 28 Apr, 2024 2 commits
-
-
Oleksandr Byelkin authored
-
Oleksandr Byelkin authored
pcre2 - fix CMAKE_C_FLAGS for MSVC for external project by Vladislav Vaintroub <vvaintroub@gmail.com>
-
- 27 Apr, 2024 1 commit
-
-
Alexander Barkov authored
MDEV-33534 UBSAN: Negation of -X cannot be represented in type 'long long int'; cast to an unsigned type to negate this value to itself in my_double_round from sql/item_func.cc| The negation in this line: ulonglong abs_dec= dec_negative ? -dec : dec; did not take into account that 'dec' can be the smallest possible signed negative value -9223372036854775808. Its negation is an operation with an undefined behavior. Fixing the code to use Longlong_hybrid, which implements a safe method to get an absolute value.
-
- 26 Apr, 2024 1 commit
-
-
Hugo Wen authored
Previously, when running mysqlbinlog without providing a binlog file, it would print the entire help text, which was very verbose and made it difficult to identify the actual issue. Now change the behavior to print a more concise error message instead: "ERROR: Please provide the log file(s). Run with '--help' for usage instructions." This makes the error output more user-friendly and easier to understand, especially when running the tool in scripts or automated processes. 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.
-
- 25 Apr, 2024 5 commits
-
-
Jan Lindström authored
Based on logs we might start SST before donor has reached Primary state. Because this test shutdowns all nodes we need to make sure when we start nodes that previous nodes have reached Primary state and joined the cluster. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Marko Mäkelä authored
mtr_t::commit_shrink(): Do not assert that some previously clean pages will be flagged as modified by this mini-transaction. It could be the case that there had been no recent write-back of any of the undo tablespace pages that we are modifying when truncating the tablespace. It suffices to assert that some pages were modified again: ut_ad(m_modifications). This fixes up commit f5fddae3
-
Kristian Nielsen authored
The test could fail with a duplicate key error because switching to non-GTID mode could start at the wrong old-style position. The position could be wrong when the previous GTID connect was stopped before receiving the fake GTID list event which gives the old-style position corresponding to the GTID connected position. Work-around by injecting an extra event and syncing the slave before switching to non-GTID mode. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Marko Mäkelä authored
Starting with GCC 10, let us enable _GLIBCXX_DEBUG as well as _GLIBCXX_ASSERTIONS which have an impact on the GNU libstdc++. On GCC 8, we observed a compilation failure related to some missing type conversion. Even though clang on GNU/Linux would default to using libstdc++ and enabling the debugging seems to work with clang-18, we will not enable this on clang, in case it would lead to compilation errors. For the clang libc++ before clang-15 there was _LIBCPP_DEBUG, but according to llvm/llvm-project@f3966eaf869b7bdd9113ab9d5b78469eb0f5f028 and llvm/llvm-project@13ea1343231fa4ae12fe9fba4c789728465783d7 and llvm/llvm-project@ff573a42cd1f1d05508f165dc3e645a0ec17edb5 it looks like that for proper results, a specially built debug version of libc++ would have to be used in order to enable equivalent checks. This should help catch bugs like the one that commit 455a15fd fixed. Reviewed by: Sergei Golubchik
-
Marko Mäkelä authored
While commit 75b7cd68 was a significant improvement, we occasionally got test failures of debug builds. One of the affected tests is innodb.innodb-64k-crash.
-
- 24 Apr, 2024 3 commits
-
-
Sergei Golubchik authored
MDL wait consists of short 1 second waits (this is not configurable) repeated until lock_wait_timeout is reached. The stage is changed to Waiting and back every second. To have predictable result in the test the query should filter all sequences of X, "Waiting for MDL", X, leaving just X.
-
Sergei Golubchik authored
it allocates 1GB of memory, it causes failures in CI
-
Sergei Golubchik authored
like other galera tests do
-
- 23 Apr, 2024 3 commits
-
-
Meng-Hsiu Chiang authored
`FindZLIB` module uses variable `ZLIB_ROOT`[1] to look for libraries. By setting the variable, `FindZLIB` is able to search the libraries that installed in a non-system path (/workspace/mylib for example). And when using `z` in `LINK_LIBRARIES()` CMake tries to lookup the library in system path by default. It doesn't work if the library isn't installed in the path, and use ${ZLIB_LIBRARY} which set by FindZLIB solve the issue. 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. [1]: https://cmake.org/cmake/help/latest/module/FindZLIB.html#hints
-
Sergei Golubchik authored
followup for 061adae9
-
Alexander Barkov authored
This problem was earlier fixed by the patch for MDEV 33344. Adding a test case only.
-
- 22 Apr, 2024 2 commits
-
-
Alexander Barkov authored
There is a convention that Item::val_int() and Item::val_real() return SQL NULL doing effectively what this code does: null_value= true; return 0; // Always return 0 for SQL NULL This is done to optimize boolean value evaluation: if Item::val_int() or Item::val_real() returned 1 - that always means TRUE and never can means SQL NULL. This convention helps to avoid unnecessary testing Item::null_value after getting a non-zero return value. Item_func_min_max did not follow this convention. It could return a non-zero value together with null_value==true. This made evaluate_join_record() erroneously misinterpret SQL NULL as TRUE in this call: select_cond_result= MY_TEST(select_cond->val_int()); Fixing Item_func_min_max to follow the convention.
-
Markus Staab authored
-
- 20 Apr, 2024 2 commits
-
-
Kristian Nielsen authored
The slave IO thread sets MYSQL_SET_CHARSET_DIR. The code for this option however is not thread-safe in sql-common/client.c. The value set is temporarily written to mysys global variable `charsets-dir` and can be seen by other threads running in parallel, which can result in use-after-free error. Problem was visible as random failures of test cases in suite multi_source with Valgrind or MSAN. Work-around by not setting this option for slave connect, it is redundant anyway as it is just setting the default value. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
Kristian Nielsen authored
The root cause of the failure is a bug in the Linux network stack: https://lore.kernel.org/netdev/87sf0ldk41.fsf@urd.knielsen-hq.org/T/#u If the slave does a connect(2) at the exact same time that kill -9 of the master process closes the listening socket, the FIN or RST packet is lost in the kernel, and the slave ends up timing out waiting for the initial communication from the server. This timeout defaults to --slave-net-timeout=120, which causes include/master_gtid_wait.inc to time out first and fail the test. Work-around this problem by reducing the --slave-net-timeout for this test case. If this problem turns up in other tests, we can consider reducing the default value for all tests. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
-
- 19 Apr, 2024 3 commits
-
-
Sergei Golubchik authored
disable until fixed
-
Zhibo Zhang authored
As of version 3.2.0, OpenSSL updated the error message in new versions ("https://github.com/openssl/openssl/commit/81b741f68984"). Update the tests and result files such that they are compatible with both original and new error messages. 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.
-
Marko Mäkelä authored
mtr_t::memmove(): Revert to the parent of commit a032f14b where there was supposed to be an equivalent change that would avoid hitting a warning in some old version of GCC when this change was part of another 10.6 based developmet branch. For some reason, this change is not equivalent but will cause massive amounts of backup failures in the stress tests run by Matthias Leich, caught by commit 4179f93d in 10.6.
-
- 18 Apr, 2024 2 commits
-
-
Vladislav Vaintroub authored
-
mariadb-DebarunBanerjee authored
When the change buffer records for a page span across multiple change buffer leaf pages or the starting record is at the beginning of a page with a left sibling, ibuf_delete_recs deletes only the records in first page and fails to move to subsequent pages. Subsequently a slow shutdown hangs trying to delete those left over records. Fix-A: Position the cursor to an user record in B-tree and exit only when all records are exhausted. Fix-B: Make sure we call ibuf_delete_recs during slow shutdown for pages with IBUF entries to cleanup any previously left over records.
-
- 17 Apr, 2024 11 commits
-
-
Brandon Nesterenko authored
If replicating an event in ROW format, and InnoDB detects a deadlock while searching for a row, the row event will error and rollback in InnoDB and indicate that the binlog cache also needs to be cleared, i.e. by marking thd->transaction_rollback_request. In the normal case, this will trigger an error in Rows_log_event::do_apply_event() and cause a rollback. During the Rows_log_event::do_apply_event() cleanup of a successful event application, there is a DBUG_ASSERT in log_event_server.cc::rows_event_stmt_cleanup(), which sets the expectation that thd->transaction_rollback_request cannot be set because the general rollback (i.e. not the InnoDB rollback) should have happened already. However, if the replica is configured to skip deadlock errors, the rows event logic will clear the error and continue on, as if no error happened. This results in thd->transaction_rollback_request being set while in rows_event_stmt_cleanup(), thereby triggering the assertion. This patch fixes this in the following ways: 1) The assertion is invalid, and thereby removed. 2) The rollback case is forced in rows_event_stmt_cleanup() if transaction_rollback_request is set. Note the differing behavior between transactions which are skipped due to deadlock errors and other errors. When a transaction is skipped due to an ignored deadlock error, the entire transaction is rolled back and skipped (though note MDEV-33930 which allows statements in the same transaction after the deadlock-inducing one to commit). When a transaction is skipped due to ignoring a different error, only the erroring statements are rolled-back and skipped - the rest of the transaction will execute as normal. The effect of this can be seen in the test results. The added test case to rpl_skip_error.test shows that only statements which are ignored due to non-deadlock errors are ignored in larger transactions. A diff between rpl_temporary_error2_skip_all.result and rpl_temporary_error2.result shows that all statements in the errored transaction are rolled back (diff pasted below): : diff rpl_temporary_error2.result rpl_temporary_error2_skip_all.result 49c49 < 2 1 --- > 2 NULL 51c51 < 4 1 --- > 4 NULL 53c53 < * There will be two rows in t2 due to the retry. --- > * There will be one row in t2 because the ignored deadlock does not retry. 57d56 < 1 59c58 < 1 --- > 0 Reviewed By: ============ Andrei Elkin <andrei.elkin@mariadb.com>
-
Vladislav Vaintroub authored
On Windows systems, occurrences of ERROR_SHARING_VIOLATION due to conflicting share modes between processes accessing the same file can result in CreateFile failures. mysys' my_open() already incorporates a workaround by implementing wait/retry logic on Windows. But this does not help if files are opened using shell redirection like mysqltest traditionally did it, i.e via --echo exec "some text" > output_file In such cases, it is cmd.exe, that opens the output_file, and it won't do any sharing-violation retries. This commit addresses the issue by introducing a new built-in command, 'write_line', in mysqltest. This new command serves as a brief alternative to 'write_file', with a single line output, that also resolves variables like "exec" would. Internally, this command will use my_open(), and therefore retry-on-error logic. Hopefully this will eliminate the very sporadic "can't open file because it is used by another process" error on CI.
-
Vladislav Vaintroub authored
Latest Visual Studio complains about invalid format, it breaks formatting in the IDE
-
Vladislav Vaintroub authored
It uses shutdown/restart etc, features not compatible the embedded. also add have_debug.inc , since it uses debug_dbug variable
-
Vladislav Vaintroub authored
Also, disable MSVC LTO for static client libraries - they won't be usable for end-users.
-
mariadb-DebarunBanerjee authored
MDEV-33431 Latching order violation reported fil_system.sys_space.latch and ibuf_pessimistic_insert_mutex Issue: ------ The actual order of acquisition of the IBUF pessimistic insert mutex (SYNC_IBUF_PESS_INSERT_MUTEX) and IBUF header page latch (SYNC_IBUF_HEADER) w.r.t space latch (SYNC_FSP) differs from the order defined in sync0types.h. It was not discovered earlier as the path to ibuf_remove_free_page was not covered by the mtr test. Ideal order and one defined in sync0types.h is as follows. SYNC_IBUF_HEADER -> SYNC_IBUF_PESS_INSERT_MUTEX -> SYNC_FSP In ibuf_remove_free_page, we acquire space latch earlier and we have the order as follows resulting in the assert with innodb_sync_debug=on. SYNC_FSP -> SYNC_IBUF_HEADER -> SYNC_IBUF_PESS_INSERT_MUTEX Fix: --- We do maintain this order in other places and there doesn't seem to be any real issue here. To reduce impact in GA versions, we avoid doing extensive changes in mutex ordering to match the current SYNC_IBUF_PESS_INSERT_MUTEX order. Instead we relax the ordering check for IBUF pessimistic insert mutex using SYNC_NO_ORDER_CHECK.
-
Vladislav Vaintroub authored
Previous solution, that would entirely switch timer off, turned out to be deadlock prone. This patch fixed previous attempt to switch between long/short interval periods in MDEV-24295. Now, initial state of the timer is fixed (it is ON). Also, avoid switching timer to longer periods if there is any activity in the pool.
-
Vladislav Vaintroub authored
This reverts commit 09bae92c.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
This fixes up the merge commit 9b182756
-
Jan Lindström authored
Test was waiting INSERT-clause to make rollback but wait_condition was too tight. State could be Freeing items or Rollback. Fixed wait_condition to expect one of them.
-
- 16 Apr, 2024 2 commits
-
-
Sergei Golubchik authored
create_partitioning_metadata() should only mark transaction r/w if it actually did anything (that is, the table is partitioned). otherwise it's a no-op, called even for temporary tables and it shouldn't do anything at all
-
Oleksandr Byelkin authored
-