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
Oleksandr Byelkin
new columnstore
bsrikanth-mariadb
MDEV-36986 Support tracing arrays of primitive types

Single_line_formatting_helper accumulates array elements that may fit on
one line, and printed all of them quoted when flushing. Numbers, booleans
and nulls thus came out as JSON strings:

  "depends_on_map_bits": ["0"]  instead of  [0]

Remember per element whether it arrived via add_escaped_str() (a string,
quote it) or add_unquoted_str() (a number, boolean or null, don't), in a
parallel quoted[] array reset together with the buffer, and honour it in
both flush paths. This also fixes disable_and_flush(), which called
add_str() and so escaped the buffered strings a second time.

add_size() output stays quoted: it may carry a unit suffix ("2KiB").

While at it:
- Json_writer_array::add(ulonglong) cast to longlong, printing values
  above LLONG_MAX as negative. Use add_ull(). add(size_t) had the same
  bug and is compiled out on _WIN64, so fixing only one would have made
  the output platform-dependent.
- on_add_str() now enforces MAX_ELEMENTS instead of only asserting it,
  so quoted[] cannot be overrun in a release build if the line length
  accounting ever changes.

opt_context_schema.inc: rec_per_key holds numbers now, not strings. Also
fix two syntax errors that left the schema invalid JSON, so it is usable
once MDEV-38033 enables the JSON_SCHEMA_VALID() check in
run_query_twice_and_compare_stats.inc.
Monty
Removed some not needed checks and add a DBUG_ASSERT() for not covered code

- In ha_partition.cc:check_parallel_search(), remove check if
  item_field->field is null. This is not needed as the function is run
  after fix_field() which guarnatees that the field is always set.
- Added DBUG_ASSERT(new_field) to Item_field::fix_fields() to check if a
  select-list item, found by name or alias when resolving ORDER BY/GROUP
  BY/HAVING, can have field == 0. This error path is not covered by any
  mtr test.
bsrikanth-mariadb
MDEV-39226: Push whole multi-table update/delete down into engines

Give storage engines a way to take over an entire multi-table
UPDATE/DELETE, the way they can already take over a SELECT. Without it the
join, the row matching and every modification run in the SQL layer even
when an engine could do the whole statement itself in one step; a
single-table UPDATE/DELETE already avoids this via
direct_update_rows()/direct_delete_rows(), but a multi-table statement has
no primary handler object to drive that path.

This adds a generic, engine-agnostic pushdown interface: the SQL layer
offers the statement to the engine, and if the engine accepts it, it
performs the whole thing and reports only the row counts.

- Split select_handler into a pushdown_handler base with select_handler
  (result set) and a new multi_upddel_handler (runs a whole UPDATE/DELETE,
  reports row counts, reported as PUSHED UPDATE/PUSHED DELETE); add
  handlerton::create_multi_upddel, looked up in Sql_cmd_dml::execute_inner().
- multi_update/multi_delete gain direct_update_delete_done(), which records
  the engine's counts so send_eof() binlogs and replies without the
  SQL-layer loop; it forces statement-format binlogging so the change still
  replicates under binlog_format=ROW, and errors out instead of silently
  dropping counts for an unsupported result object.
- FederatedX implements the interface as the reference engine used to test
  correctness: it prints the statement back and runs it remotely, passes
  the engine's error code/SQLSTATE through, reads the matched count from the
  remote info string, executes IGNORE locally, and only pushes down when all
  tables share one remote server (same as SELECT/derived/unit pushdown).

Test: federated.federatedx_pushdown_upd_del.
Marko Mäkelä
fixup! bc1d33f74d3441f05372dae31935325d2a1f29ae
PranavKTiwari
MDEV-38633: Row events in statement based binlog: optimization possible?
A failing multi-table UPDATE or DELETE marked every target temporary table as not up to date in the binary log, even when nothing had been changed.
Any later statement reading such a table was then forced to use row logging.
Only mark the tables when something was actually changed—that is, when rows were updated/deleted or a non-transactional table was modified.
If nothing changed, set THD::tmp_table_binlog_handled so that mark_tmp_table_as_free_for_reuse() does not mark them either.
Marko Mäkelä
squash! e16b1b4e2739be7bc8e91643b0a71e1f04a1b02f

BACKUP SERVER TO observes secure_file_priv
KhaledR57
MDEV-36552 mariadb-dump fails with error 1370 for a view that uses a function

SHOW COLUMNS on a view checked EXECUTE on every function the view
uses, so a user allowed to read the view's metadata was still
denied. Reading column metadata does not run the function, so it
must not additionally require EXECUTE.

Check EXECUTE only when the view is created, not when it is opened
just to read its columns.
KhaledR57
MDEV-36552 mariadb-dump fails with error 1370 for a view that uses a function

SHOW COLUMNS on a view checked EXECUTE on every function the view
uses, so a user allowed to read the view's metadata was still
denied. Reading column metadata does not run the function, so it
must not additionally require EXECUTE.

Check EXECUTE only when the view is created, not when it is opened
just to read its columns.
Marko Mäkelä
squash! e16b1b4e2739be7bc8e91643b0a71e1f04a1b02f

backup_stream_zeropad(): Zero-pad the last tar block if needed.

Rewrite the crude ma_backup_server.c in C

The aria_backup_end() is a crude prototype for allowing the
functionality to be tested on transactional storage engines
that implement this API. It will scan and copy the data directories
in a single thread, while everything is locked. This will be
refactored in MDEV-39092.
Vladislav Vaintroub
MDEV-22992 Refactor VIO into layered transports and filters

Replace the function-pointer VIO implementation with an abstract C++
interface while retaining the procedural C entry points.

Implement socket and named-pipe transports and composable filters for
client read-ahead, Windows thread-pool prefetch, and TLS. OpenSSL uses a
custom BIO, while wolfSSL uses callbacks that perform I/O through the VIO
below the TLS filter. This keeps waits and timeouts in the transport layer.

Keep sockets nonblocking and implement timed I/O with transport waits.
Named pipes use overlapped I/O for timeout-aware waits and report blocking
waits through the same scheduler callbacks as sockets. Semi-sync
temporarily changes the real VIO read timeout instead of copying VIO state.

Hide transport and TLS implementation state behind accessors. Expose the
TLS handle opaquely and update callers that previously accessed VIO fields
directly. Compile the VIO implementations as C++ and retain PSI memory
accounting for VIO allocations.

Adapt Windows thread-pool pre-read to a Prefetched_vio filter inserted
above the transport so both plain and TLS connections consume prefetched
bytes through the same layered VIO path.
Sergei Petrunia
PWT, cleanup: comment-out THD::parallel_worker.

Instead, add "pwt_worker *worker" member to class PWT_error_handler.
Marko Mäkelä
fixup! e65a863d4758def3bba61ad193b4108b789ba2af
Marko Mäkelä
fixup! d28cbbcc5d892da8385d30be055671510fecc27b
Monty
Added proper cleanup of main.cte_update_delete.test
Dmitry Shulga
MDEV-40076: ASAN global-buffer-overflow in reconstruct_create_trigger_stmt

Invalid values of metadata for kind, when and status of system triggers
manually set using SQL staterment `UPDATE mysql.event SET ... ` could
result in abnormal server termination.

To fix it, check values of the columns kind, when and status for validness
on server startup and on running the statements SHOW CREATE TRIGGER,
SHOW TRIGGERS. In case a trigger has invalid metadata, raise the error
ER_SYSTEM_TRG_INVALID_METADATA on running the statements SHOW CREATE TRIGGER
and output warning ER_SYSTEM_TRG_INVALID_METADATA to the error stream on
loading such triggers during server start up.
Dmitry Shulga
MDEV-40091: ASAN: heap-use-after-free with concurrent create/drop system trigger

In case there are 'on shutdown' triggers it could result in abnormal
server termination if at the moment server shutdown is in progress
the server received the DROP TRIGGER statement for one of 'ON SHUTDOWN'
system triggers being already executed as part shutdown process.
In other words, there is the race condition between running triggers
on shutdown and execution of DROP TRIGGER for system triggers
ON SHUTDOWN event.

To fix the issue protect running on shutdown triggers and drop/create
of system triggers under the lock to avoid race condition.
Check under the new lock for the flag that shutdown is in progress and
don't add/remove a trigger instance into/from internal array as part of
handling CREATE/DROP TRIGGER for ON SHUTDOWN event. That is, add/drop
metadata about the trigger but don't modify the internal runtime data
structures.
Alexander Barkov
MDEV-39563 Implement UPDATE ... RETURNING ... INTO

Adding support for UPDATE .. RETURNING .. INTO queries.

For example:

  UPDATE t1 SET a=10,b=20 RETURNING a,b INTO va,vb;
  UPDATE t1 SET a=10,b=20 RETURNING a,b INTO @a,@b;

Limitations:
1. These types of queries:
  - REPLACE .. RETURNING .. INTO
  - DELETE .. RETURNING .. INTO
  - INSERT .. RETURNING .. INTO
  do not work - they return an error.
  They will be implemented separately, when needed.

2. UPDATE..RETURNING..INTO with --binlog_format=statement is not allowed
  and an error is raised.

3. Using OLD_VALUE(col) inside UPDATE..RETURNING..INTO is not allowed
  and an error is raised.

4. Multi-table updates, as well as single table updates with a subquery
  to the same table in WHERE (which get converted to multi-table) do
  not work and an error is raised.

Notes:

1. ANALYZE and EXPLAIN
  Both
    ANALYZE UPDATE .. RETURNING .. INTO ..
    EXPLAIN UPDATE .. RETURNING .. INTO ..
  return this error:
    'RETURNING..INTO' is not allowed in this context

2. Behavior on no data

  a. In case of degenerated plans (WHERE 1=0, LIMIT 0),
    no errors are raised.

  b. If the updated table contains no rows, the behavior depends on the engine,
    for example:
    - MyISAM returns no errors
    - InnoDB raises
        No data - zero rows fetched, selected, or processed
    This behavior is engine dependent because some engines (e.g. MyISAM)
    quickly know that the table has no records and execute the statement
    using a degenerated plan.

  c. If there are some rows, but non of them match the WHERE condition,
    then this error is raised:
      No data - zero rows fetched, selected, or processed

  d. If some rows where found but none of them actually
    got changed by the SET, still this error is raised:
      No data - zero rows fetched, selected, or processed
    The error message might be misleading. However, if we read
    it as "zero rows [that required updates] fetched", it looks OK.
    Let's not introduce a new error message for now.

Helper changes:

1. The grammar in analyze_stmt_command was changed to have
  LEX::analyze_stmt set to true earlier, so
  LEX::set_returning_into_result() already knows if this
  is an ANALYZE statement.

2. The Sql_cmd_update constructor is now called earlier in the grammar,
  to be able to call Sql_cmd_update::set_with_old_value_items()
  in the SET and RETURNING clauses.

3. Sql_cmd_dml::lex is now set during the constructor time.
  It makes things easier:
  - Sql_cmd_update::returns_result_set() needs the lex.
  - Sql_cmd_delete::orig_multitable and Sql_cmd_update::orig_multitable
    are not needed any more.
    They were used only in Sql_cmd_delete::sql_command_code() and
    Sql_cmd_update::sql_command_code().
    Sql_cmd_dml::sql_command_code() now returns lex->sql_command.
    The overrides Sql_cmd_delete::sql_command_code() and
    Sql_cmd_update::sql_command_code() were removed.
Oleksandr Byelkin
Merge branch 'br-11.4-merge' into bb-11.8-release
Sergei Petrunia
PWT, cleanup: comment-out THD::parallel_worker.

Instead, add "pwt_worker *worker" member to class PWT_error_handler.
Daniel Black
MDEV-40801 ppc64le ro_after_init isn't pagesize aligned

Align ro_after_init using MAXPAGESIZE instead of COMMONPAGESIZE.

COMMONPAGESIZE may be smaller than the actual page size supported by
the target ABI. This can leave ro_after_init sharing an OS page with
adjacent sections, causing mprotect() to change permissions on data
outside ro_after_init.

Use MAXPAGESIZE so the section boundaries are aligned to the maximum
page size required by the target linker/ABI.

This is particularly important on architectures such as ppc64le and
aarch64, where the runtime page size can differ from COMMONPAGESIZE.

Before:
  .data          0x...1b80000
  ro_after_init  0x...1c70000
  .bss          0x...1c72000

After:
  ro_after_init starts and ends on MAXPAGESIZE boundaries, ensuring
  mprotect() only affects pages belonging to ro_after_init.

Co-authored-by: ChatGPT GPT-5.6 Luna <[email protected]>
Oleksandr Byelkin
Merge branch 'bb-11.8-release' into bb-12.3-release
Vladislav Vaintroub
MDEV-22992 Refactor VIO into layered transports and filters

Replace the function-pointer VIO implementation with an abstract C++
interface while retaining the procedural C entry points.

Implement socket and named-pipe transports and composable filters for
client read-ahead, Windows thread-pool prefetch, and TLS. OpenSSL uses a
custom BIO, while wolfSSL uses callbacks that perform I/O through the VIO
below the TLS filter. This keeps waits and timeouts in the transport layer.

Keep sockets nonblocking and implement timed I/O with transport waits.
Named pipes use overlapped I/O for timeout-aware waits and report blocking
waits through the same scheduler callbacks as sockets. Semi-sync
temporarily changes the real VIO read timeout instead of copying VIO state.

Hide transport and TLS implementation state behind accessors. Expose the
TLS handle opaquely and update callers that previously accessed VIO fields
directly. Compile the VIO implementations as C++ and retain PSI memory
accounting for VIO allocations.

Adapt Windows thread-pool pre-read to a Prefetched_vio filter inserted
above the transport so both plain and TLS connections consume prefetched
bytes through the same layered VIO path.
Marko Mäkelä
squash! e16b1b4e2739be7bc8e91643b0a71e1f04a1b02f

backup::copy(): A partial or sparse file-copying service.

backup_stream_append_plain(): Equivalent to backup::copy(), but
appending to a stream. On Linux, this uses sendfile(2), which assumes
that the source data will not be changed before the data has been consumed
from the pipe.

(Originally known as copy_file(), backup_stream_append().)
drrtuy
fix: MDEV-40846 DuckDB handles functionality that is based on invisible columns, e.g. WITH SYSTEM VERSIONING.
Vladislav Vaintroub
MDEV-22992 Refactor VIO into layered transports and filters

Replace the function-pointer VIO implementation with an abstract C++
interface while retaining the procedural C entry points.

Implement socket and named-pipe transports and composable filters for
client read-ahead, Windows thread-pool prefetch, and TLS. OpenSSL uses a
custom BIO, while wolfSSL uses callbacks that perform I/O through the VIO
below the TLS filter. This keeps waits and timeouts in the transport layer.

Keep sockets nonblocking and implement timed I/O with transport waits.
Named pipes use overlapped I/O for timeout-aware waits and report blocking
waits through the same scheduler callbacks as sockets. Semi-sync
temporarily changes the real VIO read timeout instead of copying VIO state.

Hide transport and TLS implementation state behind accessors. Expose the
TLS handle opaquely and update callers that previously accessed VIO fields
directly. Compile the VIO implementations as C++ and retain PSI memory
accounting for VIO allocations.

Adapt Windows thread-pool pre-read to a Prefetched_vio filter inserted
above the transport so both plain and TLS connections consume prefetched
bytes through the same layered VIO path.
Sergei Petrunia
PWT cleanup: in pwt_manager, add notify_message_dropped, fix record_event().

Both of them acquire/release needed mutexes inside the function.
Vladislav Vaintroub
MDEV-22992 Refactor VIO into layered transports and filters

Replace the function-pointer VIO implementation with an abstract C++
interface while retaining the procedural C entry points.

Implement socket and named-pipe transports and composable filters for
client read-ahead, Windows thread-pool prefetch, and TLS. OpenSSL uses a
custom BIO, while wolfSSL uses callbacks that perform I/O through the VIO
below the TLS filter. This keeps waits and timeouts in the transport layer.

Keep sockets nonblocking and implement timed I/O with transport waits.
Named pipes use overlapped I/O for timeout-aware waits and report blocking
waits through the same scheduler callbacks as sockets. Semi-sync
temporarily changes the real VIO read timeout instead of copying VIO state.

Hide transport and TLS implementation state behind accessors. Expose the
TLS handle opaquely and update callers that previously accessed VIO fields
directly. Compile the VIO implementations as C++ and retain PSI memory
accounting for VIO allocations.

Adapt Windows thread-pool pre-read to a Prefetched_vio filter inserted
above the transport so both plain and TLS connections consume prefetched
bytes through the same layered VIO path.
Yuchen Pei
MDEV-40168 wip

works:

create table t1 (c int, j json, key idx ((CAST(j->'$.tags' AS CHAR(6) ARRAY))));
Warnings:
Note 1071 Specified key was too long; max key length is 1000 bytes
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` int(11) DEFAULT NULL,
  `j` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`j`)),
  `DB_MVI_1` blob GENERATED ALWAYS AS (json_extract(`j`,'$.tags')) STORED,
  KEY `idx` (`DB_MVI_1`(1000))
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
DROP TABLE t1;
Dmitry Shulga
MDEV-40083: Compound triggers for startup/shutdown are stored without END, which leads to silent non-firing after restart

The grammar rule for the statement
  'CREATE TRIGGER {ON STARTUP | ON SHUTDOWN} BEGIN ... END;'
didn't force look ahead of the last clause. It resulted in storing trigger body
without trailing `END` clause that made the whole statement syntactically
incorrect.

To fix the issue, look ahead the last clause before remember the whole
statement.
Sergei Petrunia
PWT, cleanup: move pwt_worker init into pwt_worker::init_worker_thd()
Sergei Petrunia
PWT, cleanup: move pwt_worker initialization into pwt_worker::init_worker_thd
Oleksandr Byelkin
Merge branch '11.4' into br-11.4-merge
Marko Mäkelä
Document Sql_cmd_backup::execute()
bsrikanth-mariadb
MDEV-36986 Support tracing arrays of primitive types

Single_line_formatting_helper accumulates array elements that may fit on
one line, and printed all of them quoted when flushing. Numbers, booleans
and nulls thus came out as JSON strings:

  "depends_on_map_bits": ["0"]  instead of  [0]

Remember per element whether it arrived via add_escaped_str() (a string,
quote it) or add_unquoted_str() (a number, boolean or null, don't), in a
parallel quoted[] array reset together with the buffer, and honour it in
both flush paths. This also fixes disable_and_flush(), which called
add_str() and so escaped the buffered strings a second time.

add_size() output stays quoted: it may carry a unit suffix ("2KiB").

While at it:
- Json_writer_array::add(ulonglong) cast to longlong, printing values
  above LLONG_MAX as negative. Use add_ull(). add(size_t) had the same
  bug and is compiled out on _WIN64, so fixing only one would have made
  the output platform-dependent.
- on_add_str() now enforces MAX_ELEMENTS instead of only asserting it,
  so quoted[] cannot be overrun in a release build if the line length
  accounting ever changes.

opt_context_schema.inc: rec_per_key holds numbers now, not strings. Also
fix two syntax errors that left the schema invalid JSON, so it is usable
once MDEV-38033 enables the JSON_SCHEMA_VALID() check in
run_query_twice_and_compare_stats.inc.
Sergei Golubchik
rocksdb: don't abort early in submodule update

Fix for 1fb075512a7aeab8646a163cbb6f265c49f4c075 to allow
the ADD_SUBMODULE to perform updates.
Marko Mäkelä
fixup! c67768bb802cdd00bf604ae6fde08f896df1ce1b
Sergei Petrunia
PWT cleanup: introduce/use pwt_worker::cleanup_worker()
Oleksandr Byelkin
Merge branch 'br-10.11-merge' into bb-11.4-release
Sergei Petrunia
PWT: cleanup: rename error_to_queue -> save_error_to_queued_event