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
Daniel Black
rocksdb: tests timeout under MSAN+Debug

But rocksdb.bulk_load_unsorted_rev and rocksdb.bulk_load_unsorted
succeed under non-debug builds, and because it was slow at 87 seconds)
there is a --big-test criteria for these tests.
Ruiqiang Hao
MDEV-35566 Ensure compatibility with ARMv9 by updating .arch directive

The pmem_cvap() function currently uses the '.arch armv8.2-a' directive
for the 'dc cvap' instruction. This will cause build errors below when
compiling for ARMv9 systems. Update the '.arch' directive to 'armv9.4-a'
to ensure compatibility with ARMv9 architectures.

{standard input}: Assembler messages:
{standard input}:169: Error: selected processor does not support `retaa'
{standard input}:286: Error: selected processor does not support `retaa'
make[2]: *** [storage/innobase/CMakeFiles/innobase_embedded.dir/build.make:
1644: storage/innobase/CMakeFiles/innobase_embedded.dir/sync/cache.cc.o]
Error 1

Signed-off-by: Ruiqiang Hao <[email protected]>
Jan Lindström
MDEV-37497 : galera-new-cluster is installed wrong directory in bintar

galera-new-cluster should be installed to INSTALL_BINDIR instead of
INSTALL_SCRIPTDIR on bintars.

Thanks to Daniel Black <[email protected]> for fix.
Kristian Nielsen
Fix sporadic test failure of main.debug_sync

The test case was not waiting for a prior --send to have proceeded far
enough before attempting to KILL it. This meant the KILL could get lost if
timing delayed the connection in --send.

Signed-off-by: Kristian Nielsen <[email protected]>
Monty
Add statistics usable for feedback plugin

Following status variables where added:

Feature_vector_index ; Incremented when reading a vector index from
                      a .frm file.
Nikita Malyavin
Item::eq: transform bool binary_cmp into struct Eq_config

Part of MDEV-34033
Jan Lindström
MDEV-37136 : sql/wsrep_allowlist_service.cc:40:27: runtime error: member call on null pointer of type 'Wsrep_schema'

Problem was that we used wsrep_schema pointer before it was
initialized. Fix is to allow all connections when wsrep_schema
is not yet initialized and check allowed connections
only when wsrep_schema has been initialized.

Signed-off-by: Julius Goryavsky <[email protected]>
Marko Mäkelä
MDEV-33817/MDEV-37170 fixup: Remove evex512

It turns out that there is no need to use the evex512 target attribute
that had been introduced in GCC 14 and clang 18, and will be
removed in GCC 16.

At the time when the evex512 attribute was introduced, Intel had plans
to release products with AVX10.1-256, supporting the AVX512 instruction set
but limited to 256-bit registers.  The evex512 attribute would have been
needed to "opt in" to the 512-bit instruction variants (using the EVEX
instruction prefix). Later on, Intel revised its plans to make AVX10.1
always 512-bit.

Reviewed by: Kristian Nielsen
Daniel Black
MDEV-37438: UBSAN add_ext_keyuse_for_splitting downcast Item_func_equal -> Item_func_eq

add_ext_keyuse_for_splitting assumed the added_key_field->cond was
of type Item_func_eq. In 11.8 there are cases where this is actually
of type Item_func_equal in some cases which is not a class descendant
of Item_func_eq.

The only use of this class is accessing its arguments() method
which is defined all the way up the hierarchy of both Item_func_equal
and Item_func_eq in the class Item_args.

To resolve future mis-castings of this method we assume the topmost
class of Item_args.
Daniel Black
MDEV-37411: Clear warnings for io_setup failure

Where io_setup fails, this is a serious issue, normally because
of the lack of fs.aio-max-nr configured in the kernel.
We adjust the error message to be a Warning, because like
"native AIO failed: falling back to innodb_use_native_aio=OFF",
its user actionable.

A default configuation of the server and indeed raising
innodb_write_io_threads and innodb_read_io_threads couldn't
exceed the default fs.aio-max-nr value. If a user is
constructing multipe instances of MariaDB that exceed this
value then they should be seeing the warning and taking action.

There are CI environments, as Otto points on on Launchpad,
that have insufficient fs.aio-max-nr configure to run mtr
in parallel. This however a genuine distro problem and
to resolve.

For us, and our developers, we'd rather see the warning
so we can fix CI and dev instances that are insufficiently
configured.

The io_setup man page as a very short but descript set of
causes for the io_setup failures. Its safer to refer to this,
now with a strerror description rather than a number.

The mtr suppressions are removed because a while ago
when the errors where moved out of InnoDB and recently
the server could never generate a warning of these forms.
ParadoxV5
could that be?
Marko Mäkelä
Merge 10.6 into 10.11
Nikita Malyavin
MDEV-34033 Exchange partition with virtual columns fails

Extend Item::Eq_config with omit_table_names parameter to compare
without table names in Item_field::eq.

Tests are re-applied from commit 0cf2176b.
mariadb-satishkumar
MDEV-36993: Format log for srv_mon_reset_all
Brandon Nesterenko
MDEV-29981: Replica stops with "Found invalid event in binary log"

Replication can stop in error if a Heartbeat log event is sent to a
replica during rotation. There are two bugs at play:

  1. Prior to MDEV-30128 (added in 11.0), there is a bug when checking
    legacy events. When the replica rotates its relay logs, it
    initializes its Format_description_log_event with binlog version 3
    (this is hard-coded). So immediately after rotation (and until a
    new Format_descriptor with binlog_format 4 is sent from the
    master), the IO thread is expecting binlog_format 3 (i.e. it will
    call queue_old_event() for incoming events). This invalidates any
    events that are sent with an event type higher than 14. In theory,
    we wouldn't expect any events to be sent in-between a rotate and
    the next format descriptor log event, but if a long enough period
    of time passes between then, the primary will generate and send a
    Heartbeat event (of type 27). In such case, the slave will see the
    heartbeat event of type 27, see it is higher than 14, and result
    in an error mentioning 'Found invalid event in binary log', with
    the expected log coordinates of the new log (which is
    optimistically populated from the Rotate log event, not the new
    event).

  2. In all versions of MariaDB (11.0+), there is a bug when checking
    the state of a Heartbeat log event, in that it doesn't consider a
    rotated binary log. The check is meant to ensure that the
    heartbeat provided by the master (i.e. the state of the master) is
    greater than or equal to the state of the slave. In other words,
    it checks that the slave isn't ahead of the master. However, if
    the filename provided by the master heartbeat event is different
    than the filename saved for the slave's state, the check always
    fails. This is broken, because when the master rotates its logs,
    the new binary log file will have a different filename (i.e. an
    incremented index counter suffix). For example, if the master
    rotates its binary logs from master-bin.000002 to
    master-bin.000003, master-bin.000003 is ahead of
    master-bin.000002, but the slave will see a difference between the
    filenames and fail the check.

To fix the first problem, this patch disallows passing a heartbeat
event into queue_old_event (which is the source of the error, as it
tries to parse a heartbeat log event). This function (queue_old_event)
was removed with MDEV-30128, so bypassing it for heartbeat events is
not consequential (and it is already also done for
Format_description_events, which are not supported in old binlog file
versions). Note that backporting all of MDEV-30128 was also considered,
but this is less risky for GA.

To fix the second problem, we simply ignore heartbeat events on the
slave if the filenames don't match. This is because during rotation,
it can appear that the slave is ahead of the master, which breaks the
validity of the check (i.e. the check is to ensure the master is
ahead of the slave).

Additionally note that this patch restores a heartbeat check that was
incorrectly removed in 780db8e25239e5423cfab50c04c60b79ebc0224b

Reviewed-by: Andrei Elkin <[email protected]>
Signed-off-by: Brandon Nesterenko <[email protected]>
Aleksey Midenkov
MDEV-16686 DDL in procedure propagates no locking to tables locked by DML

TABLE_LIST parsed from procedure code is transferred into tables to
lock for INSERT. The procedure code is CREATE VIEW so its TABLE_LIST
is parsed as TL_IGNORE, but same view exists and when existing view is
opened mysql_make_view() uses same TABLE_LIST that was initialized
from CREATE VIEW and then added as part of prelocking context. So
existing view is opened and its table is assigned TL_IGNORE from
prelocking context. Finally, INSERT has TABLE_LIST duplication: the
one that was parsed from INSERT; the another one came from procedure
prelocking, its lock_type came from the procedure code and the real
table was found via existing view.

The sequence of execution:

1. Procedure p is compiled as part of open_and_process_routine(), its
  code is parsed and create_or_alter_view_finalize() initializes v
  TABLE_LIST as TL_IGNORE;
2. Procedure p prelocking adds v to prelocking_ctx with TL_IGNORE;
3. DML prelocking adds v from prelocking_ctx;
4. View is opened, mysql_make_view() assigns t lock_type from v;
5. open_and_lock_tables() attempts to lock t with TL_IGNORE.

The fix skips TL_IGNORE at 2. when table list parsed by procedure is
added for prelocking:

        if (my_hash_insert(&m_sptabs, (uchar *)tab))
          return FALSE;

m_sptabs designation was defined as strictly for prelocking:

  /**
    Multi-set representing optimized list of tables to be locked by this
    routine. Does not include tables which are used by invoked routines.

    @note
    For prelocking-free SPs this multiset is constructed too.
    We do so because the same instance of sp_head may be called both
    in prelocked mode and in non-prelocked mode.
  */
  HASH m_sptabs;

The fix was proposed by Sergei Golubchik <[email protected]>.
Daniel Black
MDEV-36482: Make liburing work WITH_MSAN=ON (fix)

The uring_ member of the aio_uring class needed to be
defined to make MSAN happy.

To make aio_uring consistent with aio_libaio in the 10.11 branch,
added the "using namespace tpool" and removed tpool scoped quantifiers.

10.6 aio_uring is defined in the tpool namespace however changing
that would just cause merge conflicts.
Daniel Black
MDEV-37504 MemorySanitizer: use-of-uninitialized-value myrocks::Rdb_key_def::pack_field

m_charset_codec is uninitalized when calling m_make_unpack_info_func.

In the cases where m_make_unpack_info_func is one of:
* Rdb_key_def::make_unpack_unknown_varchar
* Rdb_key_def::make_unpack_unknown
* Rdb_key_def::dummy_make_unpack_info

the m_charset_coded that forms the first argument to this function
is unused.

In these limited cases we initialize the m_charset_codec member
as the only use is to pass though to the m_make_unpack_info_func

Ultimately MemorySanitizer shouldn't error on this as all
of these 3 functions clearly have the attribute
__unused__ on their first argument where the m_charset_coded is
passed.
Rex Johnston
MDEV-38236 Produce parseable output from unit::print for use in fixing query plans

Quick demo hacked together as an example.
Have not altered parser to understand what a 'semi join' is, but
explain format=sql select ...
is working.
Marko Mäkelä
Work around MDEV-37478

THD::get_net_wait_timeout(): Silence GCC -Wconversion by an
explicit conversion from ulong (64 or 32 bits) to uint (32 bits).
Daniel Black
MDEV_37504 Rocks replace __unused__ attribute with nameless parameters

Per c++98.
Marko Mäkelä
MDEV-37477: decimal_digits_t trips GCC -Wconversion

In commit fa7d4abf164b37d0f98012ff7e906ebe7de8f1ed
when the 16-bit type alias decimal_digits_t was introduced,
some incompatible use of the 32-bit uint data type was overlooked.

Only for converting Item_result_field::max_length (uint), we will use
explicit conversion.
Marko Mäkelä
Merge 10.6 into 10.11
Kristian Nielsen
Fix undefined behaviour in crc32_avx512()

The code was mistakenly using _mm512_castsi128_si512() to convert
__m128i to __m512i, which leaves the upper bits undefined. Use instead
_mm512_zextsi128_si512() which zero-extends as needed.

Signed-off-by: Kristian Nielsen <[email protected]>
ParadoxV5
this is a temp change for debugging WinDoze
Marko Mäkelä
Fix clang-21 -Wuninitialized-const-pointer

pfs_get_thread_file_name_locker_v1(): Note that the last parameter
is unused. Let us pass it as NULL to avoid the warning.
Marko Mäkelä
Fix clang-21 -Wignored-attributes

void __attribute__((unused)) never made any sense.
Marko Mäkelä
Merge 10.6 into 10.11
ParadoxV5
WinDoze is cursed.
Marko Mäkelä
MDEV-36159 mariabackup failed after upgrade

Ever since commit 685d958e38b825ad9829be311f26729cccf37c46
(MDEV-14425) mariadb-backup --backup had some trouble to keep up
with write workloads of the mariadbd server.

Debarun Banerjee found out that mariadb-backup --backup was
copying the log in the wrong way and not pausing when it made
sense to do so. This change includes his fix as well as some
dead code removal from xtrabackup_copy_mmap_logfile().

Some earlier changes to the default behaviour of mariadb-backup --backup
will be reverted, by making the configuration parameters OFF by default.
These parameters were basically working around this bug:

* commit 652f33e0a44661d6093993d49d3e83d770904413 (MDEV-30000)
introduced --innodb-log-checkpoint-now and made it ON by default.
Making the server execute a log checkpoint can be really I/O intensive.
* commit 6acada713a95a605b3aa65bd519fbd4532ad23e5 (MDEV-34062)
introduced --innodb-log-file-mmap and made it ON by default on
Linux and FreeBSD. There are no documented semantics what should
happen to a memory mapping when there are concurrent pwrite(2)
operations by other processes. While it appears to work, it is safer
to default to clearly documented semantics.

xtrabackup_copy_logfile(): Add a parameter early_exit.
Always read a log snippet to the start of recv_sys.buf and assign
recv_sys.len to the read length. We used to shift recv_sys.buf
with memmove(). However, on recv_sys_t::PREMATURE_EOF we cannot know
which part of the mini-transaction was correctly read, because that
part of the ib_logfile0 may be concurrently modified by the server.
So, we will reread everything from the start of the mini-transaction.

xtrabackup_backup_func(): Invoke xtrabackup_copy_logfile(true),
allowing it to stop on every recv_sys_t::PREMATURE_EOF.
This will also avoid repeated "Retry" messages when there is no
more redo log to copy.

get_current_lsn(): Execute FLUSH ENGINE LOGS to ensure that
InnoDB will complete any buffered writes to the ib_logfile0
and ensure that everything up to the current LSN has been
written.

backup_wait_for_commit_lsn(): Wait for as much as is really needed.
This avoids an extra 5-second wait at the end of the backup.

xtrabackup_copy_mmap_logfile(): Remove some dead code, and add
debug assertions to demonstrate that the parser can only return
recv_sys_t::OK or recv_sys_t::GOT_EOF.
Yuchen Pei
MDEV-9826 Use proper XXH streaming functions
ParadoxV5
how about this?
Yuchen Pei
MDEV-9826 Add one-shot hash functions to my_hasher_st for use in binary hash_sort

Rename my_hasher_st::hash to my_hasher_st::m_hash_byte for byte
streaming. Add my_hasher_st::m_hash_str for one-shot hashing.

Automatically convert one-shot to byte-streaming by restricting the
former on a string of length one, as before.

But now use one-shot functions whenever possible, i.e. in
my_hash_sort_*bin functions that apply the byte-streaming function on
a contiguous memory interval without transformation.

Only xxh is affected as BASE31 and CRC32C are homomorphic. The diff in
xxh results shows a slightly more even distribution.
Alexander Barkov
MDEV-37430 sql_mode=ORACLE: TYPE definitions in PACKAGE BODY

Adding support for TYPE declarations for RECORDs and assoc arrays.
Daniel Black
MDEV-36482: Make liburing work WITH_MSAN=ON

A read from liburing has its output buffer as defined
by the nature of the system call.

Instrumenting the library proved difficult as the
completion events don't include the opcode or pointers
that where there on submission. It was just easier
to do this in the application code.
Marko Mäkelä
MDEV-37447: Race condition between buf_pool_t::shrink() and page_guess()

buf_pool_t::shrink(): When relocating a buffer page, invalidate
the page identifier of the original page so that buf_pool_t::page_guess()
will not accidentally match it.

Before commit b6923420f326ac030e4f3ef89a2acddb45eccb30 (MDEV-29445)
introduced buf_pool_t::page_guess(), the validity of block descriptor
pointers was checked by buf_pool_t::is_uncompressed(const buf_block_t*).
Therefore, any block descriptors that used to be part of a larger buffer
pool would not be accessed at all.

This race condition is very hard to reproduce. To reproduce it,
an optimistic btr_pcur_t::restore_position() or similar will have to
be invoked on a block that has been relocated by buf_pool_t::shrink()
and that had not meanwhile been replaced with another page with a
different identifier.

Reviewed by: Vladislav Lesin
Marko Mäkelä
Fix clang-21 -Wunnecessary-virtual-specifier

Member functions of a final class cannot be virtual.
Marko Mäkelä
MDEV-36024 preparation: Shrink mtr_buf_t

mtr_t::get_log_size(): Remove.

mtr_t::crc32c(): New function: compute CRC-32C and determine the size,
including the sequence byte and the CRC-32C.

mtr_t::encrypt(): Return the size, similar to crc32c().

mtr_t::log_file_op(): Return the size written.

fil_name_write(): Remove. Let us invoke mtr_t::log_file_op() directly.

fil_names_clear(): Keep track of the available size without
invoking mtr_t::get_log_size().

mtr_buf_t::m_size: Remove.

mtr_buf_t::list_t: Use ilist instead of sized_ilist.

mtr_buf_t::for_each_block(): Remove. Let us allow iteration via
begin() and end(), without any lambda function objects.
Nikita Malyavin
Revert "MDEV-34033 Exchange partition with virtual columns fails"

This reverts commit 0cf2176b
Rex
MDEV-32294 fix_fields() problem with inconsistent outer context paths

As part of optimization, we can simplify queries by merging a derived
table into it's parent instead of materializing it.  When this happens
the context paths, describing how each SELECT_LEX is positioned in our
query needs updating.  The best place to do this is in the call to
SELECT_LEX::exclude_level().

We follow MySQLs example here.

Approved by Sanja Byelkin ([email protected])