- 26 Jul, 2022 8 commits
-
-
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
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.
-
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
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 25 Jul, 2022 5 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.
-
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 1 commit
-
-
Oleksandr Byelkin authored
-
- 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
-
- 18 Jul, 2022 9 commits
-
-
Aleksey Midenkov authored
Passing $opt_parallel as $childs is wrong: child can be killed before it connects and you will never decrement $childs for this. Another problem is (and that is the cause of this bug): child can be killed and never close server socket. This can happen f.ex. after unmaskable KILL signal. In such case the socket is closed by reaping the child but that never happens inside reading the socket loop in run_test_server(). The proper design is the waitless reap of children inside the socket loop and if there is no more children we finish the socket loop. Since there is Windows variation where we don't control the children via waitpid(), all the clients must normally close the socket and only this can finish the socket loop. For Unix variation we reckon that case as all children closed the socket but not all yet died and for that we do final waiting waitpid() (was done before the patch as well). To be more complete, we now handle 3 end-of-game scenarios in Unix: 1. all children closed socket, all children died: everything is handled by the socket loop; 2. all children closed socket, not all yet died: we wait for alive children to die after exiting the socket loop; 3. not all children closed socket, all children died: everything is handled by the socket loop. For Windows end-of-game scenario is only one: All children close the socket.
-
Aleksey Midenkov authored
The case for "Unknown process $ret_pid exited" is never known to be valid. Such state is not documented for waitpid().
-
Aleksey Midenkov authored
-
Aleksey Midenkov authored
-
Aleksey Midenkov authored
66832e3a introduced change that prints core dumps in very detailed format. That's completely out of user-friendliness but serves as a measure for debugging hard-reproducible bugs. The proper way to implement this: 1. it must be controlled by command-line and environment variable; 2. detailed traces must be default for buildbots only, for user invocations normal stack traces should be printed. Options for control are: MTR_PRINT_CORE and --print-core that accept the following values: no Don't print core short Print stack trace of failed thread medium Print stack traces of all threads detailed Print all stack traces with debug context custom:<code> Use debugger commands <code> to print stack trace Default setting is: short (see env_or_default() call in pre_setup()) For environment variable wrong values are silently ignored (falls back to default setting, see env_or_default()). Command-line option --print-core (or -C) overrides environment variable. Its default value is 'short' if not specified explicitly (same env_or_default() call in pre_setup()). Explicit values are checked for validity. --print-method option can specify by which debugger we print cores. For Windows there is only one choice: cdb. For Unix the values are: gdb, dbx, lldb, auto. Default value is: auto In 'auto' we try to use all possible debuggers until success.
-
Aleksey Midenkov authored
setup_boot_args(), setup_client_args(), setup_args() traversing datastructures on each invocation. Even if performance is not important to perl script (though it definitely saves some CO2), this nonetheless provokes some code-reading questions. Reading and debugging such code is not convenient. The better way is to prepare all the data in advance in an easily readable form as well as do the validation step before any further processing. Use mtr_report() instead of die() like the other code does. TODO: do_args() does even more data processing magic. Prepare that data according the above strategy in advance in pre_setup() if possible.
-
Aleksey Midenkov authored
GetOpt::Long bundling option for convenient one-char verbosity levels: -v General verbosity (file and execute operations) -vv High verbosity (algorithmic considerations) -vvv Debug verbosity (anything else)
-
Aleksey Midenkov authored
Do we still need this Sun Studio hack?
-
Vladislav Vaintroub authored
-
- 17 Jul, 2022 1 commit
-
-
Vladislav Vaintroub authored
On all Unix platforms, link libexecinfo as system library, if it contains backtrace_symbols_fd function, and libc does not contain this function Also remove cmake/os/OpenBSD.cmake, as after the fix it serves no purpose.
-
- 14 Jul, 2022 2 commits
-
-
Oleksandr Byelkin authored
Remove table_count from Query_tables_list (not used, moved to MYSQL_LOCK). Rename table_count from LEX to avoid mixing it with other counters of tables.
-
Oleg Smirnov authored
1. For INSERT..SELECT statements: don't include table/view the data is inserted into in the list of leaf tables 2. Remove duplicated and dead code related to table_count
-
- 13 Jul, 2022 1 commit
-
-
Brandon Nesterenko authored
Problem: ======== When using sequences, the function sequence_definition::write(TABLE *table, bool all_fields) is used to save DML/DDL updates to sequence tables (e.g. nextval, setval, and alter). Prior to this patch, the value all_fields was always false when invoked via nextval and setval, which forced the bitmap to only include changed columns. Solution: ======== Change all_fields when invoked via nextval and setval to be reliant on binlog_row_image, such that it is false when binlog_row_image is MINIMAL, and true otherwise. Reviewed By: =========== Andrei Elkin <andrei.elkin@mariadb.com>
-
- 11 Jul, 2022 3 commits
-
-
Sergei Golubchik authored
followup for 57f5c319
-
Marko Mäkelä authored
This reverts the revert 4f62dfe6 and fixes the hang that was introduced when ctrl_mutex was removed. The test mariabackup.compress_qpress covers this code, but the test is skipped if a stand-alone qpress executable is not available. It is not available in many software repositories, possibly because the code base has not been updated since 2010. This was tested with an executable that was compile from the source code at http://www.quicklz.com/qpress-11-source.zip (after adding a missing #include <unistd.h> for the definition of isatty()). Compared to the grandparent commit (before the revert), the changes are as follows: comp_thread_ctxt_t::done_cond: A separate condition for completed compression, signaling that thd->to_len has been updated. compress_write(): Replace some threads[i] with thd. Reset thd->to_len = 0 after consuming the compressed data. compress_worker_thread_func(): After consuming the uncompressed data, set thd->data_avail = FALSE. After compressing, signal thd->done_cond.
-
Vladislav Vaintroub authored
This reverts commit 863c3eda.
-
- 10 Jul, 2022 1 commit
-
-
Sergei Golubchik authored
Apparently newer libedit is readline-compatible enough to be detected as a readline, with USE_NEW_READLINE_INTERFACE defined and USE_LIBEDIT_INTERFACE not defined. Let's set the locale unconditionally, independently from the readline/libedit variant. It's already happening anyway now, unless one specifies --default-character-set explicitly.
-
- 07 Jul, 2022 2 commits
-
-
Sergei Petrunia authored
optimize_semi_joins() calls update_sj_state() to update semi-join optimization state in the JOIN class. greedy_search() algorithm considers different join prefixes, and then picks one table to put into the join prefix. Most of the semi-join optimization state is in the table's entry in the join->positions[cur_prefix_size]. However, it also needs to call update_sj_state() to update the semi-join optimization state in the JOIN class. There is one exception, which is the cause of this bug: when we're inside optimize_semi_join_nests() and are optimizing a subquery, optimize_semi_joins() does nothing, it doesn't call update_sj_state(). greedy_search() must not do that either.
-
Vladislav Vaintroub authored
Add check for path length if CreateFile fails with ERROR_PATH_NOT_FOUND.
-
- 06 Jul, 2022 2 commits
-
-
Alexander Barkov authored
This problem was earlier fixed by the patch for MDEV-21445.
-
Alexander Barkov authored
-