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
Sergei Golubchik
MDEV-39596 Unexpected "No database selected" error for a CALL inside an anonymous block

For name1.name2() the PATH loop searches CURRENT_SCHEMA for a
package name1. In an anonymous block without a current database
resolve_current_schema() called copy_db_normalized(), which raised
ER_NO_DB_ERROR. But without a current schema there is no package
to find, name1.name2 can only be schema.routine.

Skip the unresolvable CURRENT_SCHEMA in an anonymous block, as it is
done outside of stored programs. Unqualified names never get here
without a current database, make_sp_name() and
Create_qfunc::create_func() reject them first.

Assisted-by: Claude:claude-opus-5-5
Alessandro Vetere
MDEV-41844 Test innodb.buf_pool_resize_pcur_restore is flaky

The procedure read_into_first_new_block() requires that the page of a
table is read into the first block that a buffer pool grow adds. While
history exists, the purge coordinator runs once per second. It reads
undo log pages, and purge_truncation_callback() reads the header page
of each rollback segment. On a slow builder, these reads can take the
first new block in all 5 attempts.

Stop purge for the duration of the test with FLUSH TABLES ... FOR
EXPORT on a separate connection. A read view does not stop these reads.
Remove the wait for purge between the two cases, because purge is
stopped.

purge_sys_t::stop() waits only for the purge coordinator. Runs of
purge_truncation_callback() that the coordinator submitted before can
still read pages after FLUSH TABLES ... FOR EXPORT returns. Add the
debug keyword purge_stop_wait_truncation, which makes
purge_sys_t::stop() also wait for these runs, and set it in the test.

Assisted-by: Claude:claude-opus-5-5
Oleksandr Byelkin
Merge branch 'bb-11.8-release' into bb-12.3-release
Sergei Golubchik
MDEV-40543 Assertion `opt->value.str' failed in append_create_options on ALTER TABLE ... REORGANIZE PARTITION

partition syntax is printed from the parsed option list, which
contains =DEFAULT (NULL value) entries. Skip them, like frm writer does.

Assisted-by: Claude:claude-opus-5-5
Sergei Golubchik
MDEV-41480 Failed ADD PARTITION with a #mysql50# partition name removes the table

mysql_write_frm(WFRM_WRITE_SHADOW) declared a local `error` shadowing
the function-level one, so a failed ha_create_partitioning_metadata()
returned success and ALTER continued to install the shadow frm.

Assisted-by: Claude:claude-5.5-opus
Sergei Golubchik
MDEV-39822 MHNSW index returns wrong results for M >= 128

* number of neighbors is stored in a byte
* nodes have 2*M neighbors on the layer 0
=> M cannot be larger than 127
Jan Lindström
MDEV-41737 Galera async replica SQL thread stops instead of retrying

When a parallel replication worker on a Galera node loses local
certification, the SQL thread stops instead of retrying the event group.

- rpt_handle_event(): call wsrep_after_statement() only when the apply
  succeeded. On a wsrep deadlock error without a MariaDB error, raise
  ER_LOCK_DEADLOCK so the failure is retryable.
- retry_event_group(): ignore the wsrep_after_statement() result. The
  error is reset right after.
- Add a debug sync point and the test galera.MDEV-41737.

Assisted-by: Claude:claude-4.6-sonnet
Oleksandr Byelkin
Merge branch 'bb-10.11-release' into bb-11.4-release
liufeng
MDEV-33843: Server crash via XPath unary minus recursion

Analysis:
The stack overrun check added by MDEV-33843 is executed only in
my_xpath_parse_OrExpr(). The XPath grammar rule

  UnaryExpr ::= '-' UnaryExpr

recurses directly in my_xpath_parse_UnaryExpr(), so a path made of many
'-' tokens consumes one stack frame per token without any limit and
overruns the thread stack. UPDATEXML() and EXTRACTVALUE() parse the path
in fix_fields(), therefore any user who can run a SELECT can terminate
the server with

  SELECT UPDATEXML(NULL, REPEAT('-', 100000), 1);

Before this patch the statement makes the backend exit with SIGSEGV
(exit status 139) and the client reports "Lost connection to server
during query". The equivalent parenthesized expression is already
rejected with ER_STACK_OVERRUN_NEED_MORE because it re-enters
my_xpath_parse_OrExpr().

Fix:
Run check_stack_overrun() at the entry of my_xpath_parse_UnaryExpr(),
as my_xpath_parse_OrExpr() does, and add a regression case to
mysql-test/main/xml that expects ER_STACK_OVERRUN_NEED_MORE.

The same statement then returns the regular stack-overrun error and the
server stays alive. main.xml passes.
Jan Lindström
MDEV-40212 galera_duplicate_primary_value stalls on single applier

Failure:
- The test needs two write sets applied concurrently by two
  appliers on node 1, but never sets wsrep-slave-threads, so it
  defaults to 1.
- lock_wait_wsrep_kill's debug sync parks the applier thread
  itself on WAIT_FOR wsrep_after_kill_continue; with only one
  applier, the second write set has no free thread, and WAIT_FOR
  wsrep_after_kill_reached_2 blocks until --debug-sync-timeout
  (300s).
- The timeout does not fail the test, so it reports pass without
  ever reaching the concurrent brute-force state MDEV-31658 added
  it to cover.

Fix:
- Set wsrep-slave-threads=2 on node 1, so the two independent
  write sets apply concurrently, matching what the test is meant
  to exercise.

Assisted-by: Teemu Ollakka <[email protected]>
Assisted-by: https://mariadb.org/governance/governance-ai-policy/
Alexey Yurchenko
MDEV-35940, MDEV-35964 reenable MTR tests

As MDEV-35940, MDEV-35964 have been fixed, reenable tests disabled
because of them
Oleksandr Byelkin
Merge branch '10.11' into 11.4
Sergei Golubchik
userstat: DROP TABLE and DROP INDEX leave stale usage statistics

delete_statistics_for_table() and delete_statistics_for_index()
removed the userstat entries only after opening the statistical
tables, and returned early when that failed.

Delete the userstat entries before opening the statistical tables.

Assisted-by: Claude:claude-opus-5-5
Marko Mäkelä
MDEV-41813 OPTIMIZE TABLE makes tables grow

PageBulk::init(): Add a parameter for a hint page number, so that we will
try to allocate adjacent pages for the index.

After this change, the innodb_alter_copy_bulk=ON code path may actually
produce smaller files than the legacy code path.

Based on mysql/mysql-server@a3e2dbddec48ec229484bdf082b8c2f34ccf8c0b

Reviewed by: Thirunarayanan Balathandayuthapani
Sergei Golubchik
compilation failure

storage/innobase/row/row0import.cc:678:17: error: conversion from 'uint32_t' {aka 'unsigned int'} to 'uint16_t' {aka 'short unsigned int'} may change value [-Werror=conversion]
  678 |                ? 0 : FSP_FLAGS_GET_ZIP_SSIZE(m_space_flags);
Sergei Golubchik
cleanup: remove obsolete CMAKE_VERSION checks

main CMakeLists.txt sets

CMAKE_MINIMUM_REQUIRED(VERSION 3.12.0)
Sergei Golubchik
MDEV-41504 COM_FIELD_LIST Integer Underflow Leading to Heap Over-read

reject COM_FIELD_LIST packets without a table name / wildcard separator.
Otherwise the wildcard started one byte past the packet end and its
length wrapped to UINT_MAX.

Assisted-by: Claude:claude-opus-5-5
Sergei Golubchik
caching_sha2_password: add test for max password length

as enforced by RSA with 2048-bit key and RSA PKCS1 OAEP padding
Oleksandr Byelkin
Merge branch 'bb-11.4-release' into bb-11.8-release
Sergei Golubchik
UBSAN: runtime error: downcast of address 0x7ea259447dc8 which does not point to an object of type 'Item_row'

sql/item_cmpfunc.h:1184:34: runtime error: downcast of address 0x7ea259447dc8 which does not point to an object of type 'Item_row'
sql/item_cmpfunc.cc:2083:30: runtime error: member call on address 0x7ea259447dc8 which does not point to an object of type 'Item_row'
sql/item_cmpfunc.cc:2084:29: runtime error: member call on address 0x7ea259447dc8 which does not point to an object of type 'Item_row'
sql/item_cmpfunc.cc:2125:29: runtime error: member call on address 0x7ea259447dc8 which does not point to an object of type 'Item_row'
sql/item_cmpfunc.cc:2127:35: runtime error: member call on address 0x7ea259447dc8 which does not point to an object of type 'Item_row'

Indeed, the address was pointing to an object of type 'Item_aggregate_ref'
Alexey Botchkov
MDEV-41430 auth_pam_tool leaves zombie processes.

As the auth_pam_tool claims root privileges, the mariadbd can't kill
it if it hangs.
So instead of sending the SIGKILL to the auth_pam_tool we set the
alarm() there so it kills itself after the timeout.
The alarm counter is hardcoded to 100 seconds so the authentication
can be halted even if the connect_timeout allows it to be longer.
The auth_pam.c now calls the waitpid() without the WNOHANG, so it waits
for the auth_pam_tool to return. If the PAM module aggressively resets
the alarm or handles the SIGALARM the pam_auth() can hang forever.
Jan Lindström
MDEV-40211 galera_connect.inc sleeps one second on each invocation

Failure:
- galera_connect.inc sleeps 1 second, unconditionally, before every
  connect, as a 2015 workaround for a node racing its own join/IST
  against another node's concurrent join (MDEV-7178).
- ~700 tests in the galera/wsrep suites go through this include, so
  the blind sleep costs roughly that many seconds in a full run,
  whether or not any node is still joining.

Fix:
- Replace the sleep with include/galera_wait_ready.inc after
  connecting, polling the actual wsrep_ready state instead of
  guessing a fixed delay. galera_wait_ready.inc is the existing,
  already widely used helper for this, so this reuses it rather
  than adding a new check.
- Add a $galera_no_wait_ready opt-out for a node that is expected
  to join a non-Primary component and so never becomes ready;
  galera_pc_weight.test isolates node_1 before connecting node_3,
  so node_3 needs it.
- The ready check itself must not wait on causality: a test can
  legitimately connect a second session to a node whose applier is
  stuck behind a local lock (galera_lock_table.test does, via LOCK
  TABLES), and wsrep_sync_wait would otherwise block the check's own
  first query on that same stuck applier. Set it to 0 for the check
  and restore it from the global value afterward, without reading it
  back first, since even a bare SELECT of the session variable hits
  the same wait.

Assisted-by: https://mariadb.org/governance/governance-ai-policy/
Sergei Golubchik
userstat: stack overflow on DROP TABLE with many index statistics

del_global_index_stats_for_table() collected all matching entries
into an array of MAX_INDEXES elements. Statistics of renamed indexes
stay in global_index_stats under their old names, so a table can have
more entries than that and DROP TABLE wrote past the array.

Delete the entries in batches of MAX_INDEXES.

Assisted-by: Claude:claude-opus-5-5
Sergei Golubchik
MDEV-40690 auth_pam_tool loses setuid-root bit in RPM packages

without %dir, rpm list of files includes the content of auth_pam_tool_dir
recursively, and auth_pam_tool_dir has its own line too. The end result
depends on the order in which two lines are applied which in turn
depends on the order the sort will put them in. rpm 6 was rewritten
in C++ and moved from libc qsort to std::sort.

11.4+ fix, because `%dir %attr` only works in cmake >= 3.10
Sergei Golubchik
MDEV-41491 parsec ASAN crash on manually modified mysql.global_priv table

the server didn't invoke auth plugin's preprocess_hash() for empty
passwords, thus it didn't check whether empty passwords were acceptable
and plugin's auth() method reliance on the binary hash being correctly
preprocessed was broken.
Sergei Golubchik
MDEV-41630 ST_IsValid crashes on polygons with many rings
Sergei Golubchik
ColumnStore now requires gettid. Skip gracefully.
Kristian Nielsen
Fix merge error in main.mysqldump-nl

The test was leaving a configured slave at the end of the test, which could
break a following test depending on the order in which tests are run.

(This was fixed once already, but then lost in an incorrect merge).

Signed-off-by: Kristian Nielsen <[email protected]>
Sergei Golubchik
MDEV-41520 Unescaped XID bytes in SESSION_TRACK_TRANSACTION_CHARACTERISTICS

* always print gtrid and bqual in hex
* don't try to be smart to print as few fields as possible
  - it was broken and could skip bqual, but still print formatID
* don't try to predict how many bytes it'll take. Print into a local
  buffer, then memcpy. Robust and costs just one memcpy.
Sergei Golubchik
MDEV-40730 SHOW DATABASES allows users with only GRANT OPTION privilege to read all databases names

Followup for MDEV-37951 (e7aec1c60c4), GRANT OPTION is an *OPTION* and
alone on itself shouldn't make the table or schema visible
Sergei Golubchik
update C/C

and remove temporary workarounds for C/C bugs
Sergei Golubchik
disable DuckDB in the server in favor of the externally built

Fixes #6045
Oleksandr Byelkin
Merge branch 'bb-11.4-release' into bb-11.8-release
Sergei Golubchik
MDEV-40608 set INSTALL_SYSCONFDIR for external plugins

so that they could store their configs in basedir/etc/ in bintars
Marko Mäkelä
MDEV-41395 fixup: GCC 16 -Wstringop-overflow

fil_system_t::default_encrypt_next(): Dereference the iterator only once
to avoid a confusing and bogus -Wstringop-overflow by GCC 16.2.0.
Sergei Golubchik
MDEV-41655 caching_sha2_password does not limit the password length

let's tighten the limits to be closer to actual OpenSSL limits.

Encrypting with RSA, 2048-bit key and PKCS1 OAEP padding *always*
produces the ciphertext of 256 bytes. And to fit in this, the plaintext
cannot be longer than 214 bytes. Assuming the user can generate her
own keys, 512 bytes would be enough for 4096-bit key. Larger, 8192-bit
keys don't work anyway (don't fit in public_key[] buffer).

And also let's reject too long passwords that can never authenticate.
Daniel Black
MDEV-41870: segfault on bootstrap (SLES 15.7)

SLES 15.7 earlier had a liburing 2.1 version. MariaDB
packages are build with the version bumped 2.9. As ABI
incompatable elements are compiled into MariaDB because
of inlined functions, we need to explictly bump the
dependency to include the 2.9 version of liburing.

This is for both the server, and mariadb-backup if configured.
Oleksandr Byelkin
new CC 3.3
Sergei Golubchik
Wrong table name in the warning about missing statistical table

open_stat_table_for_ddl() printed the global stat_table_name, always
`table_stats`, instead of the name of the table it failed to open.

Assisted-by: Claude:claude-opus-5-5
Susil
MDEV-41995 galera.MDEV-40727 result file has latin1 instead of utf8mb4

The four SHOW CREATE TABLE outputs in galera/r/MDEV-40727.result record
DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci. That is the server
default on 10.11 and 11.4, but not on 11.8, where the tables that the
test creates get utf8mb4 / utf8mb4_uca1400_ai_ci. The test therefore
fails on 11.8.

The merge of 11.4 into 11.8 (62b26c2f7cb8) brought in the 10.11/11.4
version of the result file. Use the utf8mb4 version, which 12.3 and
later already have.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>