Console View
|
Categories: connectors experimental galera main |
|
| connectors | experimental | galera | main | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Alexander Barkov
bar@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41527 MEDIUMTEXT gets truncated to TINYTEXT in assoc array RECORD field Adding 13.1 specific tests with package-wide data types. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Georgi (Joro) Kodinov
joro@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-42175: Do not compile 32-bit instructions for wolfSSL on 64bit platforms. WolfSSL has different implementations of integer handling functions in sp_c32.c and sp_c64.c. Which one is used is determined by the SP_WORD_SIZE define. SP_WORD_SIZE is auto-detected from indirect tests, like e.g. the presence of __uint128_t (as determined by checking the HAVE___UINT128_T define). Checking for this data type triggers SP_WORD_SIZE to be 64 on Mac (arm64) and causes the code in sp_c32.c to be compiled out. This also fixes the UBSAN warnings in it. See https://github.com/wolfSSL/wolfssl/issues/11874 for details on these warnings. Fixed by adding a check for __uint128_t in wolfssl's cmake file and by exporting the HAVE___UINT128_T define to all wolfssl related headers. The latter is required since some of the headers used by the server rely on this define. Note that the code in sp_c64.c is supposedly more optimized for 64bit platforms, so some modest performance improvement is also possible. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41458 Assertion `n > 0 && n < SINUSES_CALCULATED*2+1' failed in get_n_sincos() With tiny *ex and *ey the sum of squares underflows and q becomes inf, use hypot() which is under- and overflow safe. Also, fix ab/(d*d) divison, for good measure |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Marko Mäkelä
marko.makela@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-40935: Infinite loop in SET GLOBAL innodb_log_archive log_t::set_archive(): Ensure that a log checkpoint will be written even if no dirty pages exist in the buffer pool. This was reproduced with an intermittent livelock during the test innodb.log_file_size_online. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Marko Mäkelä
marko.makela@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-42009: Set GLOBAL innodb_log_file_size=ON is not crash safe log_t::set_archive(): If the log is memory-mapped (on /dev/shm or on a DAX mounted file system), zero-fill the rest of the file before updating the header, so that any old garbage from innodb_log_archive=OFF format will be properly discarded before recovery. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Vladislav Vaintroub
vvaintroub@gmail.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-38741 mtr: do not suppress the reason of a client disconnect The global suppressions of "Aborted connection", in mariadb-test-run.pl and mtr_warnings.sql, hid the line that the client disconnect watcher writes when it aborts a command: "Aborted connection N to db: 'x' user: 'u' host: 'h' (Client disconnected)". Nothing showed when the watcher aborted a connection that it should have left alone. main.locale found one, because its server log is in German and the English entry did not match. Make the two entries skip a line that ends in "(Client disconnected)". Other aborted connections are suppressed as before. The tests that drop a client on purpose accept the reason: have_disconnect_watcher.inc, which the tests of the watcher include, and dirty_close, loaddata, sp_notembedded, ssl_timeout, mysqltest, innodb_bug38231, innodb.xa_recovery, mysql_client_test, mysql_client_test_nonblock, mysql_client_test_comp, rpl_semi_sync_shutdown_await_ack, spider/bugfix.mdev_35959 (a Spider link that times out), main.mysqldump (mariadb-import can leave a LOAD DATA running when it fails, MDEV-42164) and mariabackup.nolock_ddl_during_backup_end (mariabackup ends in the middle of a backup). The Connector/C tests of the unit suite close connections on purpose, but cannot call mtr.add_suppression(), so suite.pm adds it before each of them. A replica closes its connection on purpose when it is stopped, in any phase of its setup, also while the master runs one of its first queries. rpl_init.inc accepts the reason for every server of the replication tests, without writing it to the binlog. A binlog dump thread logs its disconnect with another message, and only with log_warnings=4. Assisted-by: Claude:claude-sonnet-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41622 INSERT crashes on deeply nested GeometryCollection - get_data_size() and init_from_wkb() return their error values on stack overrun, not a valid-looking length - add stack checks to the remaining recursive GeometryCollection methods: wkt, json, mbr, area, length, dimension, store_shapes - test non-GEOMETRY column and SELECT paths Assisted-by: Claude:claude-opus-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Elena Stepanova
elenst@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41085 Enable MTR tests on Windows: rpl suite rpl.rpl_row_mysqlbinlog fails because apparently the client command line on Windows cannot interpret the literal cp932 string which is passed to it. Since the point of the test is not how the original INSERT happens, but how it further works while replaying the binlog, it should be acceptable to insert a hex-encoded value |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41801 "performance_schema" is compared case-sensitively in the engine, case-insensitively elsewhere With lower_case_table_names=0 the performance_schema engine discovered its tables only under the exact name, while ACL checks, is_perfschema_db() and mariadb-dump matched the name case-insensitively. A database named, for example, PERFORMANCE_SCHEMA was an ordinary database that got performance_schema access rules. Compare the name case-insensitively in the engine too. Assisted-by: Claude:claude-opus-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Oleksandr Byelkin
sanja@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| new columnstore 25.10.8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Marko Mäkelä
marko.makela@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41395 fil_space_t::create() may release fil_system.mutex If fil_space_t::create() ends up releasing fil_system.mutex for invoking fil_crypt_threads_signal(), another thread may grab fil_system.mutex and find a tablespace that contains no data files. Let us fix this race condition and remove some checks that now are redundant. By default fil_crypt_must_default_encrypt() holds, and then fil_crypt_thread() waits indefinitely in wait_for_work() once the default_encrypt list has been exhausted. A tablespace for which no fil_crypt_threads_signal() is issued would therefore never be encrypted at all. fil_space_t::create(): Do not invoke fil_crypt_threads_init(); let the caller do that. During database startup, before fil_crypt_threads_init() has been invoked, there is no point to invoke this function; the encryption queues will be properly set up for the tablespaces that have been opened by that time. fil_ibd_create(): Invoke fil_crypt_threads_signal() after invoking fil_space_t::clear_stopped() and releasing fil_system.mutex. fil_crypt_threads_signal(): Check that fil_crypt_threads_init() has been called. The function dict_table_open_on_name() will be invoked during early server startup. dict_table_open_on_name(): Invoke fil_crypt_threads_init() at the end if the table was loaded into the cache and the tablespace likely as well. This should be the main code path through which old tablespaces are opened via SQL. dict_load_tablespace(): Invoke fil_crypt_threads_signal(), because fil_ibd_open() may have added the tablespace to fil_system.default_encrypt_tables. This is the single point through which every dictionary-driven tablespace open passes; it is only invoked by dict_load_table_one(), hence by dict_sys_t::load_table(). We will not invoke fil_crypt_threads_init() in dict_load_table_on_id() or dict_sys.load_table(); it will instead be invoked at a higher level, typically when a table definition is first loaded by name, in dict_table_open_on_name(). buf_dump_load_func(): After the non-first buf_load(), invoke fil_crypt_threads_signal() in order to start the encryption of any newly loaded tablespaces. drop_garbage_tables_after_restore(), wsrep_append_foreign_key(), ha_innobase::create(), ha_innobase::truncate(), row_rename_table_for_mysql(), i_s_sys_tables_fill_table(), i_s_sys_tables_fill_table_stats(): Invoke fil_crypt_threads_signal() in case some tablespace metadata was loaded. row_import_cleanup(): Invoke fil_crypt_threads_signal() to register the imported tablespace. i_s_sys_tablespaces_fill_table(), fil_system_t::find(), Datafile::validate_first_page(), fil_space_t::name(), fil_space_t::read_page0(), fil_space_t::prepare_acquired(), fil_space_t::try_to_close(), fil_crypt_default_encrypt_tables_fill(), fil_system_t::default_encrypt_next(): Remove a now-redundant check for a tablespace that contains no files. srv_n_fil_crypt_threads_started: Declare as Atomic_relaxed<uint>, for the unlocked read in fil_crypt_threads_signal(). Co-developed by: Thirunarayanan Balathandayuthapani |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Petrunia
sergey@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fixup: opt_ctx_can_read_all_columns() is not used for VIEWs. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41808 repeated CTE references keep reparsing exponentially on time and memory Every reference to a CTE after the first re-parses its specification and recursively resolves the references inside the clone, so a chain of CTEs each referencing the previous one twice expands to 2^N re-parses from linear-size SQL, exhausting CPU and memory at parse time. Bound the number of specification clones per statement. Assisted-by: Claude:claude-opus-4-8 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41803 mariadb-binlog --raw takes the output file name from Rotate events without checking it mariadb-binlog --raw appended the file name from a Rotate event to the --result-file prefix, so a malicious server could make it write files outside that directory. Reject a Rotate event file name with a directory component - a legitimate server only puts a bare file name in the Rotate event Assisted-by: Claude:claude-opus-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41496 OOB write with RPAD() crash and multi-byte charsets and uservar Item's charset is metadata, it's known at fix_fields and does not change later. User variables can violate this invariant if they're changed and used in the same query. Let's always wrap such variables in Item_func_conv_charset() to make sure the caller always gets the same fixed charset, no matter what the actual variable value is. Variables that aren't changed in the same query do not get this unnecessary conversion. Note that in --ps the charset might resolve differently. This is not a bug, querying and modifying a user variable in the same query is a documented UB. But both in nm and in ps both arguments of RPAD() always have the same charset, so the result is internally consistent and there's no OOB access. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Oleksandr Byelkin
sanja@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Merge branch '10.11' into 11.4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Marko Mäkelä
marko.makela@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Merge 11.8 into 12.3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Miroslav Rajcic
miroslav.rajcic@oracle.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Bug#39905057: MySQL ExtractValue unclosed CDATA length underflow causes mysqld heap overflow / crash Problem: ======== The XML scanner reports an unterminated <![CDATA[ section as a valid CDATA token. Its end pointer remains at the opening delimiter, while the parser unconditionally removes the opening and closing delimiters. This underflows the value length. ExtractValue() can subsequently pass that length to String::append(), causing a heap overwrite and mysqld crash. Root Cause: =========== my_xml_scan() only sets the token end when it finds ]]>, but my_xml_parse() assumes every CDATA token is complete. Solution: ========= Detect EOF before the CDATA terminator and return a parse error before calling the XML value handler. Add an ExtractValue() regression test verifying that unterminated CDATA is rejected with a warning. Change-Id: I142bafd9ddea185f6b2e87a80af4894f10168291 Fixes MDEV-39571, MDEV-41407 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41841 OOB read on loose index scan of MIN/MAX with IS [NOT] NULL QUICK_GROUP_MIN_MAX_SELECT::add_range built the QUICK_RANGE key by copying min_max_arg_len bytes straight from the SEL_ARG value, which for an IS [NOT] NULL bound points at the 20-byte is_null_string; a MIN/MAX column wider than that read past the static buffer. Build the key image through SEL_ARG::store_min()/store_max() as every other caller does: they synthesize a full-width NULL key and never copy from is_null_string, which is sized for memcmp only. Assisted-by: Claude:claude-opus-4-8 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41804 deeply nested ROWs crash add check_stack_overrun() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Item_param::set_param_time and Item_param::set_param_datetime OOB read Item_param::set_param_time and Item_param::set_param_datetime could potentially read 4 bytes beyond the value end of the corrupted packet |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Marko Mäkelä
marko.makela@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Merge 12.3 into 13.1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Oleksandr Byelkin
sanja@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Merge branch '11.4' into 11.8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
CONNECT: reset vptr before writing an object to a file pointers make no sense there |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Marko Mäkelä
marko.makela@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-40935: Assertion os_file_set_size() failed during shutdown os_file_set_size(): Consistently handle EINTR also after server shutdown has been initiated. This will avoid a crash when an innodb_log_archive=ON log file needs to be created or extended during shutdown. This only affects the posix_fallocate(2) or Linux fallocate(2) code path; if the file is being extended by regular writes, we will retry in case of EINTR. On Microsoft Windows, there is no clear documentation what would happen if the process is being terminated while SetFilePointerEx() or SetEndOfFile() are in progress. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Oleksandr Byelkin
sanja@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Fix false "Thread stack overrun" in local connection queries under ASAN Problem: send_command() for a mysql_real_connect_local() connection with its own THD set thd->thread_stack to the address of a local variable. With ASAN use-after-return detection that variable lives on a fake heap stack, so check_stack_overrun() computed a bogus stack usage and failed the query; password_reuse_check then sporadically rejected the first GRANT on amd64-ubasan-clang-22 builders. Fix: add THD::set_thread_stack(), which takes the real stack start of the current OS thread from my_get_stack_bounds(), and use it there and in THD::store_globals(). Remove the thread_stack= &local hints that were always overwritten by store_globals() anyway. password_reuse_check.test now shows the plugin's warnings if the first GRANT is rejected. Assisted-by: Claude:claude-opus-5-5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Oleksandr Byelkin
sanja@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Merge branch '12.3' into 13.1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41822 mariadb-binlog ASAN crash on corrupted binlog 1. verify that the null bitmap length doesn't overshoot row event end 2. pass the buffer length to calc_field_size(), so that it'd never read beyond the end |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Oleksandr Byelkin
sanja@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Merge branch '11.8' into 12.3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Jan Lindström
jan.lindstrom@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Fix README | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Dave Gosselin
dave.gosselin@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-42078: Map macOS errno 63 in main.create_notembedded Maps errno 63 to 36 in the output of the first CREATE TABLE in main.create_notembedded, as main.symlink does. That statement creates a table whose file name is 255 bytes and expects ENAMETOOLONG in the error, which is 36 on Linux and 63 on macOS. The test has failed on macOS since d0b279f1852 added it. Assisted-By: Claude Opus 5.5 <[email protected]> |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Elena Stepanova
elenst@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41085 Enable MTR tests on Windows: rpl suite rpl.rpl_read_old_relay_log_info fails because the test overrrides relay-log.info with the Linux-style ./slave-relay-bin.000001, while Windows uses the format with backslashes, .\slave-relay-bin.000001 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| UndefinedBehaviorSanitizer: nullptr-with-nonzero-offset rdb_datadic.cc:558 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cleanup: undefined function declarations | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| update C/C | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
stabilize I_S.VECTOR_INDEXES.INDEX_SIZE after an INSERT innodb needs time for the value to stop changing. wait for it. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sergei Golubchik
serg@mariadb.org |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
fix RPAD(), LPAD() and INSERT() not to mangle its arguments they used to overwrite the charset of their arguments, this is incorrect and led to wrong results |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Marko Mäkelä
marko.makela@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Merge 11.4 into 11.8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Marko Mäkelä
marko.makela@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-42009: Set GLOBAL innodb_log_archive=ON is not crash safe log_t::header_rewrite(): Before setting log_sys.archive=true, ensure that any garbage entries at the end of the file will be zeroed out so that they cannot be mistaken for newer records. On Linux and Microsoft Windows we will attempt a shortcut for writing zeroes, before falling back to log_file_t::write(). log_t::set_archive(): Block concurrent writes to the log on every platform, because log_t::header_rewrite() now requires exclusive access to the log file. Reviewed by: Alessandro Vetere |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Elena Stepanova
elenst@mariadb.com |
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MDEV-41085 Enable MTR tests on Windows: rpl suite rpl.rpl_change_master_long_channel_name fails on Windows because it expects a 252-character name (base name, excluding the path) to be valid; on Windows the whole path is limited to 260 characters, so 252-character name already fails |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||