- 01 Oct, 2024 3 commits
-
-
Monty authored
The problem was that when using clang + asan, we do not get a correct value for the thread stack as some local variables are not allocated at the normal stack. It looks like that for example clang 18.1.3, when compiling with -O2 -fsanitize=addressan it puts local variables and things allocated by alloca() in other areas than on the stack. The following code shows the issue Thread 6 "mariadbd" hit Breakpoint 3, do_handle_one_connection (connect=0x5080000027b8, put_in_cache=<optimized out>) at sql/sql_connect.cc:1399 THD *thd; 1399 thd->thread_stack= (char*) &thd; (gdb) p &thd (THD **) 0x7fffedee7060 (gdb) p $sp (void *) 0x7fffef4e7bc0 The address of thd is 24M away from the stack pointer (gdb) info reg ... rsp 0x7fffef4e7bc0 0x7fffef4e7bc0 ... r13 0x7fffedee7060 140737185214560 r13 is pointing to the address of the thd. Probably some kind of "local stack" used by the sanitizer I have verified this with gdb on a recursive call that calls alloca() in a loop. In this case all objects was stored in a local heap, not on the stack. To solve this issue in a portable way, I have added two functions: my_get_stack_pointer() returns the address of the current stack pointer. The code is using asm instructions for intel 32/64 bit, powerpc, arm 32/64 bit and sparc 32/64 bit. Supported compilers are gcc and clang and MSCV. For MSCV 64 bit we are using _AddressOfReturnAddress() As a fallback for other compilers/arch we use the address of a local variable. my_get_stack_bounds() that will return the address of the base stack and stack size using pthread_attr_getstack() or NtCurrentTed() with fallback to using the address of a local variable and user provided stack size. Server changes are: - Moving setting of thread_stack to THD::store_globals() using my_get_stack_bounds(). - Removing setting of thd->thread_stack, except in functions that allocates a lot on the stack before calling store_globals(). When using estimates for stack start, we reduce stack_size with MY_STACK_SAFE_MARGIN (8192) to take into account the stack used before calling store_globals(). I also added a unittest, stack_allocation-t, to verify the new code.
-
Oleksandr Byelkin authored
lock_type is writen in the last SELECT of the unit even if it parsed last, so it should be printed last from the last select of the unit.
-
Thirunarayanan Balathandayuthapani authored
Don't allow the referencing key column from NULL TO NOT NULL when 1) Foreign key constraint type is ON UPDATE SET NULL 2) Foreign key constraint type is ON DELETE SET NULL 3) Foreign key constraint type is UPDATE CASCADE and referenced column declared as NULL Don't allow the referenced key column from NOT NULL to NULL when foreign key constraint type is UPDATE CASCADE and referencing key columns doesn't allow NULL values get_foreign_key_info(): InnoDB sends the information about nullability of the foreign key fields and referenced key fields. fk_check_column_changes(): Enforce the above rules for COPY algorithm innobase_check_foreign_drop_col(): Checks whether the dropped column exists in existing foreign key relation innobase_check_foreign_low() : Enforce the above rules for INPLACE algorithm dict_foreign_t::check_fk_constraint_valid(): This is used by CREATE TABLE statement to check nullability for foreign key relation.
-
- 30 Sep, 2024 7 commits
-
-
Max Kellermann authored
The method was declared to return an unsigned integer, but it is really a boolean (and used as such by all callers). A secondary change is the addition of "const" and "noexcept" to this method. In ha_mroonga.cpp, I also added "inline" to the two helper methods of referenced_by_foreign_key(). This allows the compiler to flatten the method.
-
Sergei Golubchik authored
MDEV-33373 part 2: Unexpected ER_FILE_NOT_FOUND upon reading from logging table after crash recovery CSV engine shoud set my_errno if use it.
-
Oleksandr Byelkin authored
MDEV-33373 part 1: Unexpected ER_FILE_NOT_FOUND upon reading from logging table after crash recovery We have found that my_errno can be "passed" to the next commad in some cases. It is practically impossible to check/fix all cases of my_errno in the server, plugins and engines so we will reset it as we reset other errors. The test case will be fixed by CSV engine fix so will be added with it (see part2).
-
Yuchen Pei authored
Rollback is not supposed to fail. This prevents false failures in spider rollback.
-
Yuchen Pei authored
ha_spider::update_create_info() ha_spider::append_lock_tables_list()
-
Yuchen Pei authored
-
Yuchen Pei authored
A fixup of MDEV-26858
-
- 29 Sep, 2024 1 commit
-
-
Julius Goryavsky authored
-
- 27 Sep, 2024 3 commits
-
-
sjaakola authored
Added new test scenario in galera.galera_bf_kill test to make the issue surface. The tetst scenario has a multi statement transaction containing a KILL command. When the KILL is submitted, another transaction is replicated, which causes BF abort for the KILL command processing. Handling BF abort rollback while executing KILL command causes node hanging, in this scenario. sql_kill() and sql_kill_user() functions have now fix, to perform implicit commit before starting the KILL command execution. BEcause of the implicit commit, the KILL execution will not happen inside transaction context anymore. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Vladislav Vaintroub authored
-
Vladislav Vaintroub authored
Chocolatey package manager installs this one.
-
- 26 Sep, 2024 1 commit
-
-
Tony Chen authored
SSL_CTX_set_ciphersuites() sets the TLSv1.3 cipher suites. SSL_CTX_set_cipher_list() sets the ciphers for TLSv1.2 and below. The current TLS configuration logic will not perform SSL_CTX_set_cipher_list() to configure TLSv1.2 ciphers if the call to SSL_CTX_set_ciphersuites() was successful. The call to SSL_CTX_set_ciphersuites() is successful if any TLSv1.3 cipher suite is passed into `--ssl-cipher`. This is a potential security vulnerability because users trying to restrict specific secure ciphers for TLSv1.3 and TLSv1.2, would unknowingly still have the database support insecure TLSv1.2 ciphers. For example: If setting `--ssl_cipher=TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256`, the database would still support all possible TLSv1.2 ciphers rather than only ECDHE-RSA-AES128-GCM-SHA256. The solution is to execute both SSL_CTX_set_ciphersuites() and SSL_CTX_set_cipher_list() even if the first call succeeds. This allows the configuration of exactly which TLSv1.3 and TLSv1.2 ciphers to support. Note that there is 1 behavior change with this. When specifying only TLSv1.3 ciphers to `--ssl-cipher`, the database will not support any TLSv1.2 cipher. However, this does not impose a security risk and considering TLSv1.3 is the modern protocol, this behavior should be fine. All TLSv1.3 ciphers are still supported if only TLSv1.2 ciphers are specified through `--ssl-cipher`. 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 Sep, 2024 8 commits
-
-
Denis Protivensky authored
It's read for every command execution, and during slave replication for every applied event. It's also planned to be used during write set applying, so it means mostly every server thread is going to compete for the mutex covering this variable, especially considering how rarely it changes. Converting wsrep_ready to atomic relaxes the things. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Jan Lindström authored
Add wait_until_ready waits after wsrep_on is set on again to make sure that node is ready for next step before continuing. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Jan Lindström authored
Stabilize test by reseting DEBUG_SYNC and add wait_condition for expected table contents. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Teemu Ollakka authored
The crash report terminates prematurely when Galera library was not loaded. As a fix, check whether the provider is loaded before shutting down Galera connections. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
-
Dave Gosselin authored
Move memory allocations performed during Sys_var_gtid_binlog_state::do_check to Sys_var_gtid_binlog_state::global_update where they will be freed before the latter method returns.
-
Sergei Petrunia authored
A call to dbug_print_join_prefix(join_positions, idx, s) returns a const char* ponter to string with current join prefix, including the table being added to it.
-
Daniel Black authored
All the options that where in buildbot, should be in the server making it accessible to all without any special invocation. If WITH_MSAN=ON, we want to make sure that the compiler options are supported and it will result in an error if not supported. We make the -WITH_MSAN=ON append -stdlib=libc++ to the CXX_FLAGS if supported. With SECURITY_HARDENING options the bootstrap currently crashes, so for now, we disable SECRUITY_HARDENING if there is MSAN enable. Option WITH_DBUG_TRACE has no effect in MSAN builds.
-
Lena Startseva authored
This is a limitation of the view protocol. Tests were fixed with workaround (via disable/enable service connection)
-
- 24 Sep, 2024 3 commits
-
-
Max Kellermann authored
Each time a listener socket becomes ready, MariaDB calls accept() ten times (MAX_ACCEPT_RETRY), even if all but the first one return EAGAIN because there are no more connections. This causes unnecessary CPU usage - on our server, the CPU load of that thread, which does nothing but accept(), saturates one CPU core by ~45%. The loop should stop after the first EAGAIN. Perf report: 11.01% mariadbd libc.so.6 [.] accept4 6.42% mariadbd [kernel.kallsyms] [k] finish_task_switch.isra.0 5.50% mariadbd [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore 5.50% mariadbd [kernel.kallsyms] [k] syscall_enter_from_user_mode 4.59% mariadbd [kernel.kallsyms] [k] __fget_light 3.67% mariadbd [kernel.kallsyms] [k] kmem_cache_alloc 2.75% mariadbd [kernel.kallsyms] [k] fput 2.75% mariadbd [kernel.kallsyms] [k] mod_objcg_state 1.83% mariadbd [kernel.kallsyms] [k] __inode_wait_for_writeback 1.83% mariadbd [kernel.kallsyms] [k] __sys_accept4 1.83% mariadbd [kernel.kallsyms] [k] _raw_spin_unlock_irq 1.83% mariadbd [kernel.kallsyms] [k] alloc_inode 1.83% mariadbd [kernel.kallsyms] [k] call_rcu
-
Sergei Golubchik authored
put the command line at the end. so that when a very long command line is truncated, it doesn't take the actual error message with it
-
Sergei Golubchik authored
set transferfmt in .cnf file like other galera tests do. otherwise it defaults to socat when mtr detected that only nc is available
-
- 23 Sep, 2024 3 commits
-
-
Oleksandr Byelkin authored
Bring info about cause of closing connection in the place where we increment statistics to do it correctly.
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
- 20 Sep, 2024 4 commits
-
-
Alexander Barkov authored
MDEV-32891 Assertion `value <= ((ulonglong) 0xFFFFFFFFL) * 10000ULL' failed in str_to_DDhhmmssff_internal Fixing the wrong assert.
-
Alexander Barkov authored
MDEV-31302 Assertion `mon > 0 && mon < 13' failed in my_time_t sec_since_epoch(int, int, int, int, int, int) The code erroneously called sec_since_epoch() for dates with zeros, e.g. '2024-00-01'. Fixi: adding a test that the date does not have zeros before calling TIME_to_native().
-
Alexander Barkov authored
MDEV-31221 UBSAN runtime error: negation of -9223372036854775808 cannot be represented in type 'long long int' in my_strtoll10_utf32 The code in my_strtoll10_mb2 and my_strtoll10_utf32 could hit undefinite behavior by negation of LONGLONG_MIN. Fixing to avoid this. Also, fixing my_strtoll10() in the same style. The previous reduction produced a redundant warning on CAST(_latin1'-9223372036854775808' AS SIGNED)
-
Alexander Barkov authored
MDEV-28386 UBSAN: runtime error: negation of -X cannot be represented in type 'long long int'; cast to an unsigned type to negate this value to itself in my_strntoull_8bit on SELECT ... OCT The code in my_strntoull_8bit() and my_strntoull_mb2_or_mb4() could hit undefinite behavior by negating of LONGLONG_MIN. Fixing the code to avoid this.
-
- 18 Sep, 2024 3 commits
-
-
Lena Startseva authored
Updated tests: cases with bugs or which cannot be run with the cursor-protocol were excluded with "--disable_cursor_protocol"/"--enable_cursor_protocol" Fix for v.10.5
-
Lena Startseva authored
Added ability to disable/enable (--disable_cursor_protocol/ --enable_cursor_protocol) cursor-protocol in tests. If "--disable_cursor_protocol" is used then ps-protocol is also disabled. With cursor-protocol prepare statement is executed only once. For "--cursor-protocol" added filter for queries: it is executed only for "SELECT" queries.
-
Daniel Black authored
The loose regex for the MDEV-34539 test ended up matching the opensuse in the path in buildbot. Adjust to more complete regex including space, backtick and \n, which becomes much less common as a path name.
-
- 17 Sep, 2024 2 commits
-
-
Brandon Nesterenko authored
The failing test case validates Seconds_Behind_Master for a delayed slave, while STOP SLAVE is executed during a delay. The test fixes initially added to the test (commit b04c8575) added a table lock to ensure a transaction could not finish before validating the Seconds_Behind_Master field after SLAVE START, but did not address a possibility that the transaction could finish before running the STOP SLAVE command, which invalidates the validations for the rest of the test case. Specifically, this would result in 1) a timeout in “Waiting for table metadata lock” on the replica, which expects the transaction to retry after slave restart and hit a lock conflict on the locked tables (added in b04c8575), and 2) that Seconds_Behind_Master should have increased, but did not. The failure can be reproduced by synchronizing the slave to the master before the MDEV-32265 echo statement (i.e. before the SLAVE STOP). This patch fixes the test by adding a mechanism to use DEBUG_SYNC to synchronize a MASTER_DELAY, rather than continually increase the duration of the delay each time the test fails on buildbot. This is to ensure that on slow machines, a delay does not pass before the test gets a chance to validate results. Additionally, it decreases overall test time because the test can continue immediately after validation, thereby bypassing the remainder of a full delay for each transaction.
-
Alexander Barkov authored
MDEV-25900 Assertion `octets < 1024' failed in Binlog_type_info_fixed_string::Binlog_type_info_fixed_string OR Assertion `field_length < 1024' failed in Field_string::save_field_metadata A CHAR column cannot be longer than 1024, because Binlog_type_info_fixed_string::Binlog_type_info_fixed_string replies on this fact - it cannot store binlog metadata for longer columns. In case of the filename character set mbmaxlen is equal to 5, so only 1024/5=204 characters can fit into the 1024 limit. - In strict mode: Disallowing creation of a CHAR column with octet length grater than 1024. - In non-strict mode: Automatically convert CHAR with octet length>1024 into VARCHAR.
-
- 16 Sep, 2024 1 commit
-
-
Julius Goryavsky authored
-
- 15 Sep, 2024 1 commit
-
-
Julius Goryavsky authored
-