Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Console View


Categories: connectors experimental galera main
Legend:   Passed Failed Warnings Failed Again Running Exception Offline No data

connectors experimental galera main
forkfun
MDEV-24557 mariadb-dump: import MySQL 5.7+ users, grants, roles

mariadb-dump --system=users/all dumps a MySQL 5.7+ source as
MariaDB statements.

- MySQL privileges are mapped; unmappable ones are dropped with a
"# WARNING".
- CREATE USER clauses MariaDB lacks are dropped. An unsupported auth
plugin locks the account.
- Roles are inferred from mysql.user. Same-named roles on several
hosts merge.

For a MariaDB source, the /*!80001 role statements are gone,
DROP USER IF EXISTS moved to /*M!100103, and the roles path sets
NO_AUTO_CREATE_USER while grants run.

Tests replay a dump captured from MySQL 26.7.0; recapture it after
changing the MySQL-source code (recipe: mysql8_users_setup.sql)

Assisted-By: Claude:claude-5.5-sonnet
Sergei Petrunia
Remove unused LEX::backup_dir

The member was never set or read.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Oleksandr Byelkin
bump version
Sergei Petrunia
Remove unused LEX::create_view_select

The member was never set or read. The create_view_select in
LEX::parsed_create_view() is a local variable that merely shadowed it.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Oleksandr Byelkin
Fix sporadic failure of main.charset_client_win_utf8mb4

The test set the password via "chcp 850 && echo ...", but the console
codepage is shared by all parallel mtr workers, so another process could
switch it to UTF8 and the password got stored as UTF8.

Write the cp850 password byte to a file and feed it to the client instead.
Oleksandr Byelkin
New HeidiSQL v12.21
Sergei Petrunia
Remove unused LEX::next_is_main and LEX::next_is_down

The members were only declared and reset in LEX::start(); nothing read them.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Kristian Nielsen
MDEV-40745: Validate field parsing of optional_metadata

Protect accesses into the m_optional_metadata buffer to not access outside
of the buffer in case of corrupt/malicious event data.

Protect against buffer overflow of the m_column_name array in case of
excessive column names in the event data.

Signed-off-by: Kristian Nielsen <[email protected]>
Teemu Ollakka
MDEV-40727 rsync SST donor stalls in a whole-host sync()

The rsync SST donor ran a bare sync() between the table flush and the
transfer. sync() flushes every mounted filesystem on the host, so its
duration depends on I/O unrelated to the SST. The donor holds FTWRL,
LOCK_log and a paused provider at that point, so the whole server is
frozen until sync() returns.

Flush only the filesystems that hold the files to transfer: the data
directory, an absolute binlog directory, and each symlinked database
directory.

Use the full sync() where 'sync -f' (syncfs) is not available.
Kristian Nielsen
Validate buffer length in Log_event constructors

This patch goes through all the constructors of Log_event subclasses that
are used to implement read_log_event() and adds error checks on the size of
the event buffer to guard against out-of-buffer reads.

Adds a lot of checks, and fixes some existing checks that were wrong or in
somewhat violation of C++ standard (eg. computing a pointer outside of the
available buffer).

This removes support for reading Table_map_log_event without metadata; such
events were only written by MySQL 5.1 servers going back to 2007.

Fix some missing bits in MAX_LOG_EVENT_HEADER, and update test case
rpl.rpl_packet with a longer query to still exceed max_allowed_packet.

Signed-off-by: Kristian Nielsen <[email protected]>
Vladislav Vaintroub
MDEV-39150 Some data conversion macros fail to use memcpy()

MDEV-37788 converted the uintNkorr() and intNstore() macros to use
memcpy() and byte swap intrinsics, but the floating point and short/long
conversion macros in big_endian.h and myisampack.h still accessed data
one byte at a time, and those in little_endian.h were a mix of both.
Compilers may emit slow byte-at-a-time loads and stores for such code.

Reimplement the macros with memcpy(), and with MY_BSWAP32/MY_BSWAP64
where the byte order differs from the host. big_endian.h and
little_endian.h no longer differ, so move the macros to my_byteorder.h
and remove the two headers, which are no longer installed. Implement
mi_float4store() etc. in myisampack.h with the same helper macros.

Remove the unused ulongget() macro, and the code for the mixed-endian
floating point layout (a little-endian CPU with big-endian floating
point word order) from the macros, change_double_for_sort() and dtoa.c.
It only applied to the obsolete ARM FPA format.

Reimplement mach_double_read(), mach_double_write(), mach_float_read()
and mach_float_write() in InnoDB with float8get(), float8store(),
float4get() and float4store(), instead of copying bytes in a loop.

The stored formats do not change. The unit test byte_order-t now checks
the byte layout of the floating point macros and the sign extension of
the native byte order macros, so no MTR test is added.
Kristian Nielsen
MDEV-40760: Stop using common_header_len and post_header_len from FD event

The FORMAT_DESCRIPTION_EVENT contains values common_header_len and
post_header_len array for individual event types, which were intended to
describe the format of following events in the binlog/relaylog. However,
this flexibility has been problematic and never useful:

- The values have never changed in MariaDB since before 10.0, nor in MySQL.

- Having to always have the correct format description event available in
  the code when reading an event causes a lot of complexity (and has
  historically caused numerous bugs).

- The potential for a corrupt or malicious format description event
  requires careful validation that these length values are correct, which
  again has historically seen bugs.

Since the values never change anyway, this patch removed the code that reads
them when reading the format description event, just using the hard-coded
values that are the only valid numbers anyway.

Remove support for ancient row events with post_header_len=6.
Remove support for reading binlogs created by custom MySQL forks with
different common_header_len (ie. MDEV-4645).

Signed-off-by: Kristian Nielsen <[email protected]>
Oleksandr Byelkin
Fix MSAN failure in mysqltest with --cursor-protocol after CC update

CONC-821 in Connector/C 3.3.21 no longer resets *length for string
binds, so for NULL just assume 0.
forkfun
MDEV-24557 mariadb-dump: import MySQL 5.7+ users, grants, roles

mariadb-dump --system=users/all dumps a MySQL 5.7+ source as
MariaDB statements.

- MySQL privileges are mapped; unmappable ones are dropped with a
"# WARNING".
- CREATE USER clauses MariaDB lacks are dropped. An unsupported auth
plugin locks the account.
- Roles are inferred from mysql.user. Same-named roles on several
hosts merge.

For a MariaDB source, the /*!80001 role statements are gone,
DROP USER IF EXISTS moved to /*M!100103, and the roles path sets
NO_AUTO_CREATE_USER while grants run.

Tests replay a dump captured from MySQL 26.7.0; recapture it after
changing the MySQL-source code (recipe: mysql8_users_setup.sql)

Assisted-By: Claude:claude-5.5-sonnet
Marko Mäkelä
MDEV-41669 ALTER TABLE…IMPORT TABLESPACE may break MVCC

row_import_for_mysql(): Invalidate any old read views that
may have an old snapshot.

Based on mysql/mysql-server@b1fc1e18b76ceb1204634beb65be81ddc6c4104a
Oleksandr Byelkin
Remove FILE_OPTIONS_STRING after version bump

FILE_OPTIONS_STRING was disabled for 10.11.20 by MDEV-40484.
Use FILE_OPTIONS_ESTRING for the remaining fields (md5,
charset names never contain escaped characters).
forkfun
MDEV-24557 mariadb-dump: import MySQL 5.7+ users, grants, roles

mariadb-dump --system=users/all dumps a MySQL 5.7+ source as
MariaDB statements.

- MySQL privileges are mapped; unmappable ones are dropped with a
"# WARNING".
- CREATE USER clauses MariaDB lacks are dropped. An unsupported auth
plugin locks the account.
- Roles are inferred from mysql.user. Same-named roles on several
hosts merge.

For a MariaDB source, the /*!80001 role statements are gone,
DROP USER IF EXISTS moved to /*M!100103, and the roles path sets
NO_AUTO_CREATE_USER while grants run.

Tests replay a dump captured from MySQL 26.7.0; recapture it after
changing the MySQL-source code (recipe: mysql8_users_setup.sql)

Assisted-By: Claude:claude-5.5-sonnet
Kristian Nielsen
MDEV-40760: Remove Format_description_log_event::event_type_permutation

The only use of this member was removed back in 2013 (!), but some (now
dead) code remains that accesses the member. This patch removes the member
and the related dead code properly.

Signed-off-by: Kristian Nielsen <[email protected]>
Oleksandr Byelkin
new wolfssl v5.9.4-stable
forkfun
MDEV-24557 mariadb-dump: import MySQL 5.7+ users, grants, roles

mariadb-dump --system=users/all dumps a MySQL 5.7+ source as
MariaDB statements.

- MySQL privileges are mapped; unmappable ones are dropped with a
"# WARNING".
- CREATE USER clauses MariaDB lacks are dropped. An unsupported auth
plugin locks the account.
- Roles are inferred from mysql.user. Same-named roles on several
hosts merge.

For a MariaDB source, the /*!80001 role statements are gone,
DROP USER IF EXISTS moved to /*M!100103, and the roles path sets
NO_AUTO_CREATE_USER while grants run.

Tests replay a dump captured from MySQL 26.7.0; recapture it after
changing the MySQL-source code (recipe: mysql8_users_setup.sql)

Assisted-By: Claude:claude-5.5-sonnet
Oleksandr Byelkin
new PCRE2 10.49
Kristian Nielsen
MDEV-40760: Remove unused Format_description_log_event * arguments

Follow-up patch, remove a lot of Format_description_log_event * function
arguments that are no longer needed.

Signed-off-by: Kristian Nielsen <[email protected]>
Sergei Petrunia
Remove unused LEX::escape_used

The flag was set by the parser but never read. Item_func_like keeps its own
escape_used_in_parsing member, which is unaffected.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Oleksandr Byelkin
MDEV-22374 VIEW with security definer require FILE privilege from definer not invoker in case of INTO OUTFILE

Already fixed by MDEV-39493; add a test for the view case.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Oleksandr Byelkin
New 3.3 CC
Oleksandr Byelkin
Revert "Fix MSAN failure in mysqltest with --cursor-protocol after CC update"

This reverts commit 22270903f19e02d40537ec688e3385374da33346.
Jan Lindström
MDEV-40727 rsync SST symlink coverage gaps

Failure:
- Filesystem flush before transfer only checks symlinks directly under
  the data directory, missing a per-table DATA/INDEX DIRECTORY symlink
  one level deeper (MyISAM, Aria), and missing InnoDB's per-table DATA
  DIRECTORY entirely, since that uses a '.isl' text file, not a symlink.
- The database directory transfer recreates symlinks as symlinks. The
  joiner's rsync daemon cannot keep an absolute symlink target as-is,
  so a MyISAM or Aria table placed by DATA DIRECTORY or INDEX DIRECTORY
  comes out unreadable after the SST.

Fix:
- Extend the flush's symlink search to two levels deep, and add a scan
  for '.isl' files, flushing the filesystem each one points to.
- Transfer the database directories with --copy-links instead of
  --links, so a table file reached through a symlink is copied by
  content instead of recreated as a broken symlink.

Test:
- MDEV-40727.test creates an Aria table with DATA DIRECTORY and INDEX
  DIRECTORY and an InnoDB table with DATA DIRECTORY, forces a full SST,
  then checks the donor's log for the flush of both external
  directories and checksums every table in database test between the
  two nodes.

Assisted-by: https://mariadb.org/governance/governance-ai-policy/
Marko Mäkelä
MDEV-41661: Leak and corruption on btr_page_reorganize_low()

btr_page_reorganize_low(): If corruption is found, release the
backup block that had been allocated. This leak was already fixed
in commit fe0c06a232c54f1054778dd59126abc2be451f44 (MDEV-40408).
Furthermore, restore the contents of the old page in order not
to introduce further corruption.

This was motivated by
mysql/mysql-server@9e497b07731a9806afea2365966af1b8032a51b7
which seems to aim to do the opposite of
commit c9498f33dea998de7a128dcd86368f064513cea6 (MDEV-18519)
by introducing an intentional crash on corrupted data.
Marko Mäkelä
MDEV-41661: Leak and corruption on btr_page_reorganize_low()

btr_page_reorganize_low(): If corruption is found, release the
backup block that had been allocated. This leak was already fixed
in commit fe0c06a232c54f1054778dd59126abc2be451f44 (MDEV-40408).
Furthermore, restore the contents of the old page in order not
to introduce further corruption.

This was motivated by
mysql/mysql-server@9e497b07731a9806afea2365966af1b8032a51b7
which seems to aim to do the opposite of
commit c9498f33dea998de7a128dcd86368f064513cea6 (MDEV-18519)
by introducing an intentional crash on corrupted data.

Reviewed by: Alessandro Vetere
Sergei Petrunia
Move parse-only LEX members into LEX_Parser_state and trash it after parsing

Introduce struct LEX_Parser_state and make LEX inherit from it. It holds the
members that are used only while a statement is being parsed: the select and
WITH-clause stacks, FK/key/option building state, window-spec scratch fields,
parsing_options, lex_options and a few parser flags.

LEX::start() now resets them through LEX_Parser_state::reset_parser_state(),
which initializes every member (several were never reset before).

parse_sql() marks the structure with TRASH_FREE() once parsing is done, so
that any code that still reads parser-only state after parsing is caught.
reset_parser_state() makes the memory addressable again for the next
statement.

Members that look parse-only but are used after parsing (with_clauses_list,
context_stack, select_stack_top, has_returning_list, clause_winfuncs) stay in
LEX.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Oleksandr Byelkin
Fix MSAN failure in mysqltest with --cursor-protocol after CC update

CONC-821 in Connector/C 3.3.21 no longer resets *length for string
binds, so for NULL values the length array in append_stmt_result()
stayed uninitialized. Zero-fill it on allocation.
Raghunandan Bhat
MDEV-40616: MSAN - use-of-uninitialized-value in extract_date_time()

Problem:
  STR_TO_DATE(str, format) with %., %@ and %# format specifiers could
  read past the end of str, because the loops in extract_date_time()
  read a byte before checking for the end of str. When str was not
  NUL-terminated, that byte was uninitialized, causing the MSAN error.

Fix:
  Check for the end of str before reading the next byte.
Oleksandr Byelkin
Merge branch '10.11' into 11.4