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
Alexey Botchkov
MDEV-39210 ExtractValue/UpdateXML crash.

test and a comment fixed.
Marko Mäkelä
Save InnoDB backup context in trx_t
Bill Jin
MDEV-36676 Add debug function to print MEM_ROOT name

Add dbug_print_memroot_name() to return the Performance Schema memory
class name associated with a MEM_ROOT, for use from a debugger or in
DBUG_PRINT.

All new code of the whole pull request, including one or several files
that are either new files or modified ones, are contributed under the
BSD-new license. I am contributing on behalf of my employer Amazon Web
Services, Inc.
Sergei Golubchik
Un-deprecate keep_files_on_create

originally (MDEV-23570) the idea was to make it TRUE and deprecate.
It cannot be deprecated when it's FALSE, but TRUE breaks
mariabackup.aria_backup where a table is altered from Aria to InnoDB
during a backup, so both t.MAD/t.MAI and t.ibd gets into a backup.
This is MDEV-38866, when it's fixed, keep_files_on_create can be
enabled by default and deprecated at last.
Yuchen Pei
MDEV-39361 Assign Name resolution context in subst_vcol_if_compatible to the new vcol Item_field
ParadoxV5
MDEV-37146 mariadb-dump: Replace SHOW SLAVE STATUS usage with information_schema.SLAVE_STATUS

`SELECT … FROM information_schema.SLAVE_STATUS` is an alternative
to `SHOW SLAVE STATUS` that supports `WHERE` and column selection.
Utilizing this server-side feature allows `mariadb-dump --dump-slave`
to iterate only the required data on the client side.

This commit keeps support for pre-`information_schema.SLAVE_STATUS`
(MDEV-33526 @ 11.6) via `SHOW SLAVE STATUS` by switching column indices.
On the contrary, it additionally drops `--dump-slave`
and `--apply-slave-statements` support for pre-GTID &
pre-multi-source (before 10.0 – long EOL).

Reviewed-by: Brandon Nesterenko <[email protected]>
Sergei Petrunia
Enable replay for any EXPLAIN query, do not require "FORMAT=JSON".
Sergei Petrunia
Don't display result column name twice.
Abhishek Bansal
MDEV-38474: ASAN heap-use-after-free in st_select_lex_unit::cleanup

cleanup_stranded_units() was added at the start of
st_select_lex_unit::cleanup() by 34a8209d6657. This causes a
use-after-free when nested subqueries are merged into their parent
unit. With nested subqueries like:

  SELECT * FROM t1
  WHERE a IN (SELECT b FROM t2
              WHERE a IN (SELECT c FROM t3 WHERE FALSE HAVING c < 0));

the stranded_clean_list chains the units as: Unit1 -> Unit2 -> Unit3.
Because cleanup_stranded_units() was called first, Unit1->cleanup()
would recursively trigger Unit2->cleanup(), which in turn would
trigger Unit3->cleanup(). Unit3's cleanup frees its heap-allocated
join structures. But since Unit3 was merged into Unit2, Unit2 still
holds references to Unit3's structures (e.g., st_join_table). When
control returns to Unit2 for its own local cleanup, it accesses
already-freed memory.

Fix: move cleanup_stranded_units() to the end of cleanup(). This way,
each unit completes its own local cleanup first—clearing its
references to any child structures—before triggering cleanup of its
stranded (child) units. This enforces a parent-first cleanup order.
Sergei Petrunia
Kill replay server when mtr exits, in various cases.
PranavKTiwari
10.11-MDEV-39245- removed filename extension .so from the test file.
Sergei Petrunia
MDEV-37732: TPROC-H, Query 21 is much slower in 11.4 than in 10.11

The problem was Duplicate_weedout_picker::check_qep(). It computes
"outer fanout" - number of record combinations left after the strategy
removes the subquery's duplicates. The logic was incorrect. For example:

  select * from t1 where t1.col1 in (select col2 from t2 where corr_cond)

  and the join order of
  t2, full scan rows=1M
  t1, ref access on t1.col1=t2.col2, rows=10

it would conclude that "outer fanout" is 10.

Rewrote the "outer fanout" computation logic to use two approaches:

1. Pre-compute subquery's output cardinality, then check how many
  duplicate rows are expected in its output. This gives "subquery
  fanout" which we can use as expected number of duplicates.
  For example, for
    ... IN (SELECT o_customer FROM orders WHERE ...)
  the subquery fanout is average number of orders per one customer.

2. Given a join prefix of inner and outer tables, compute outer tables'
  fanout by ignoring all inner tables.
  If access to an outer table depends on an inner table, use outer
  table's "found records".
  For example, for
    select * from small_table WHERE col IN (SELECT * FROM big_table)
  and a join order of
    big_table, small_table
  we will use small_table->found_records as an estimate of how many
  matches there can be.

Both approaches can give poor estimates in different cases, so we pick
the best one.

The fix is controlled by @@new_mode='FIX_SEMIJOIN_DUPS_WEEDOUT_CHECK'
and is OFF by default in this patch.
ParadoxV5
MDEV-39190 mariadb-dump --dump-slave outputs partial output for old servers

When dumping from older servers, the MDEV-37146 optimization was
clever to reuse the SHOW ALL SLAVES STATUS from an earlier step.
But it forgot to rewind the tape before playing again,
so it only saw a blank screen.
It also left an extra “SHOW ALL SLAVES STATUS” text in dead code.

This commit fixes both of these oversights.

Reviewed-by: Brandon Nesterenko <[email protected]>
Jan Lindström
MGL-67 : Add --galera-info parameter for mysqldump tool

Added --galera-info parameter for mysqldump tool and this
will add SET GLOBAL wsrep_start_position line at the
end of the dump. This line is based on added wsrep status
variable wsrep-checkpoint-position.

Added also status variable wsrep-se-checkpoint.
Raghunandan Bhat
MDEV-39118: `test_if_hard_path` crashes on recursively resolving `$HOME`

Problem:
  When `$HOME` is set to `~/` (or any string starting with `~/`), the
  `home_dir` is initialized to that value. When `test_if_hard_path` is
  called on a path starting with `~/`, it replaces the `~/` prefix by
  recursively calling `test_if_hard_path(home_dir)` leading to infinite
  recursion and a crash.

Fix:
  Add a check in `test_if_hard_path` to see if `home_dir` itself begins
  with `~/`. If it does, skip the recursive call to prevent the
  infinite loop.
Sergei Petrunia
MDEV-39382: Trace replay produces "Impossible WHERE noticed after reading const tables"

Constant table check in make_join_statistics() checks the value of
"table->file->stats.records", not table->used_stat_records. These
two values can be different.

So, make the Optimizer Context save and restore both values.
(used_stat_records was saved already, this patch also saves
table->file->stats.records).
Dave Gosselin
MDEV-39209: use iterative cleanup for merged units to avoid stack overflow

Query optimization can merge derived tables (VIEWs being a type of derived
table) into outer queries, leaving behind stranded  st_select_lex_unit objects
("stranded units") for post-query cleanup.

Previously, these were cleaned up recursively. For queries with many merged
derived tables, the deep recursion over the list of stranded units could
exhaust the stack. This change replaces the recursive cleanup with an
iterative loop to prevent stack overflows.
Sergei Petrunia
Let the optimizer context have DROP TABLE|VIEW IF EXISTS.
This is needed to be able to run replay for many queries in a row.
Need to discuss whether we should ship it like this.
Sergei Petrunia
MDEV-39382: Trace replay produces "Impossible WHERE noticed after reading const tables"

Constant table check in make_join_statistics() checks the value of
"table->file->stats.records", not table->used_stat_records. These
two values can be different.

So, make the Optimizer Context save and restore both values.
(used_stat_records was saved already, this patch also saves
table->file->stats.records).
Sergei Petrunia
MDEV-37732: TPROC-H, Query 21 is much slower in 11.4 than in 10.11

The problem was Duplicate_weedout_picker::check_qep(). It computes
"outer fanout" - number of record combinations left after the strategy
removes the subquery's duplicates. The logic was incorrect. For example:

  select * from t1 where t1.col1 in (select col2 from t2 where corr_cond)

  and the join order of
  t2, full scan rows=1M
  t1, ref access on t1.col1=t2.col2, rows=10

it would conclude that "outer fanout" is 10.

Rewrote the "outer fanout" computation logic to use two approaches:

1. Pre-compute subquery's output cardinality, then check how many
  duplicate rows are expected in its output. This gives "subquery
  fanout" which we can use as expected number of duplicates.

2. Given a join prefix of inner and outer tables, compute outer tables'
  fanout by ignoring all inner tables.
  If access to an outer table depends on an inner table, use outer
  table's "found records".

Both approaches can give poor estimates, so we pick the best one.

The fix is controlled by @@new_mode='FIX_SEMIJOIN_DUPS_WEEDOUT_CHECK'
and is OFF by default in this patch.
ParadoxV5
MDEV-39190 mariadb-dump --dump-slave outputs partial output for old servers

When dumping from older servers, the MDEV-37146 optimization was
clever to reuse the SHOW ALL SLAVES STATUS from an earlier step.
But it forgot to rewind the tape before playing again,
so it only saw a blank screen.
It also left an extra “SHOW ALL SLAVES STATUS” text in dead code.

This commit fixes both of these oversights.

Reviewed-by: Brandon Nesterenko <[email protected]>
Alexey Botchkov
MDEV-38767 XML datatype to be reported as format in extended metadata in protocol.

add respective Send_field metadata for UDT.
Sergei Petrunia
Temporarily? disable assert for DBUG_ASSERT(*freq > 0) in infuse_table_stats
Marko Mäkelä
Merge 10.6 into 10.11
PranavKTiwari
Added ASCII validation at two points using my_string_repertoire():

1. Built-in plugins (plugin_init):
  A non-ASCII builtin name is a developer error. Added a check
  using my_string_repertoire() that prints an error via
  print_init_failed_error() and returns 1 to abort server startup.

2. Dynamically loaded plugins (plugin_add):
  Added a pre-validation loop before the registration loop. If any
  plugin name in the .so is non-ASCII, the entire .so is rejected
  before any plugin is registered, preventing partial state where
  valid plugins from the same .so get left INACTIVE in the hash.

Added test plugins and MTR tests to verify both rejection of
non-ASCII named plugins and successful loading of ASCII named plugins.
Varun Deep Saini
MDEV-35548: Fix out-of-bounds array access in json_get_path_start

json_get_path_start() set p->last_step to p->steps - 1, creating a
pointer before the beginning of the steps[] array. This is undefined
behavior flagged by UBSAN as "index -1 out of bounds for type
json_path_step_t[32]".

Use NULL as the sentinel value instead, and check for NULL in
json_get_path_next() rather than comparing against p->steps.

Signed-off-by: Varun Deep Saini <[email protected]>
Signed-off-by: Varun Deep Saini <[email protected]>
PranavKTiwari
Added ASCII validation at two points using my_string_repertoire():

1. Built-in plugins (plugin_init):
  A non-ASCII builtin name is a developer error. Added a check
  using my_string_repertoire() that prints an error via
  print_init_failed_error() and returns 1 to abort server startup.

2. Dynamically loaded plugins (plugin_add):
  Added a pre-validation loop before the registration loop. If any
  plugin name in the .so is non-ASCII, the entire .so is rejected
  before any plugin is registered, preventing partial state where
  valid plugins from the same .so get left INACTIVE in the hash.

Added test plugins and MTR tests to verify both rejection of
non-ASCII named plugins and successful loading of ASCII named plugins.
ParadoxV5
Improve `mariadb-dump --dump-slave`’s desc. output

Improve the wording and spacing of the description comment generated
by `mariadb-dump --dump-slave` for its CHANGE MASTER statement.
Marko Mäkelä
MDEV-39264: Improve the documentation of ER_CHECKREAD

Similar to ER_LOCK_DEADLOCK and ER_LOCK_WAIT_TIMEOUT, let the ER_CHECKREAD
message suggest that the transaction needs to be restarted. When this error
is reported by InnoDB (only if innodb_snapshot_isolation=ON),
the transaction will be rolled back.

Reviewed by: Sergei Golubchik
PranavKTiwari
10.11-MDEV-39245- removed filename extension .so from the test file.
Daniel Black
MDEV-37197 RPM: Install PAM modules and systemd units in /usr/lib (not /lib)

Since Fedora 17 and about 2012, the directory
/lib{,64} has been a symlink to /usr/lib{,64}.

This has been verified on RHEL8, 9, 10, Fedora
, OpenEuler.

SLES1507, OpenSUSE 1506 and earlier (there is no
OpenSUSE 1507) had the old location for pam but
since their 1600 version they are now standardised.

References:
- https://fedoraproject.org/wiki/Features/UsrMove
- https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/
PranavKTiwari
MDEV-39184 Stabilize metadata_lock_info test output using sorted results

Added --sorted_result to the MDL tests to ensure deterministic ordering
of metadata_lock_info output. Since MDL lock iteration order depends on
hash_value() and underlying Split-Ordered List behavior, it may vary with
internal changes such as enum value shifts.
ParadoxV5
Improve `mariadb-dump --dump-slave`’s desc. output

Improve the wording and spacing of the description comment generated
by `mariadb-dump --dump-slave` for its CHANGE MASTER statement.
ParadoxV5
MDEV-37146 mariadb-dump: Replace SHOW SLAVE STATUS usage with information_schema.SLAVE_STATUS

`SELECT … FROM information_schema.SLAVE_STATUS` is an alternative
to `SHOW SLAVE STATUS` that supports `WHERE` and column selection.
Utilizing this server-side feature allows `mariadb-dump --dump-slave`
to iterate only the required data on the client side.

This commit keeps support for pre-`information_schema.SLAVE_STATUS`
(MDEV-33526 @ 11.6) via `SHOW SLAVE STATUS` by switching column indices.
On the contrary, it additionally drops `--dump-slave`
and `--apply-slave-statements` support for pre-GTID &
pre-multi-source (before 10.0 – long EOL).

Reviewed-by: Brandon Nesterenko <[email protected]>
Alessandro Vetere
fixup! MDEV-37070  Implement table options to enable/disable features
Yuchen Pei
Move archive engine part in test sql_sequence.create to a separate test

...so that sql_sequence.create can be tested without having to build
the archive engine
PranavKTiwari
Added ASCII validation at two points using my_string_repertoire():

1. Built-in plugins (plugin_init):
  A non-ASCII builtin name is a developer error. Added a check
  using my_string_repertoire() that prints an error via
  print_init_failed_error() and returns 1 to abort server startup.

2. Dynamically loaded plugins (plugin_add):
  Added a pre-validation loop before the registration loop. If any
  plugin name in the .so is non-ASCII, the entire .so is rejected
  before any plugin is registered, preventing partial state where
  valid plugins from the same .so get left INACTIVE in the hash.

Added test plugins and MTR tests to verify both rejection of
non-ASCII named plugins and successful loading of ASCII named plugins.
Otto Kekäläinen
MDEV-37197 Deb: Install PAM modules and systemd units in /usr/lib (not /lib)

Since Fedora 17 and about 2012, the directory /lib has been a symlink to
/usr/lib. Debian started a similar migration in 2019. Nowadays all major
Linux distributions have a merged /usr, and the canonical location for
files should be /usr/lib instead of just /lib.

The location of PAM modules and systemd files is the last remaining
`*_DEB` variables should fully complete the usr merge migration.

Additionally re-applied `debputy reformat --style=black` to get files
sorted in a standardized order.

References:
- https://fedoraproject.org/wiki/Features/UsrMove
- https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.en.html#a-merged-usr-is-now-required
- https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/
Alexey Yurchenko
MDEV-38787 wsrep_slave_fk_checks=OFF results in inconsistency
Since ATM wsrep does not replicate any cascaded changes (because they are
not binlogged in the upstream code) we have to rely on foreign checks on
replicas to reproduce the cascade. Thus setting wsrep_slave_fk_checks=OFF
will result in inconsistency in any setup where there are cascading relations.
Mark this option as deprecated and make it a NOOP.