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
Dave Gosselin
MDEV-38502: FULL OUTER JOIN get correct sargable condition

Fetches the ON condition from the FULL OUTER JOIN as the sargable condition.
We ignore the WHERE clause here because we don't want accidental conversions
from FULL JOIN to INNER JOIN during, for example, range analysis, as that
would produce wrong results.

GCOV shows that existing FULL OUTER JOIN tests exercise this new codepath.
Väinö Mäkelä
MDEV-32745 Add a simple MySQL to MariaDB upgrade helper

The tool can currently list unknown options in configuration files. The
list of supported options is generated using from mariadbd --help.
It will include support for all options, including plugin.

The bulk of the code comes from Väinö.
Monty has updated it with a lot of extra options.

Other things:
- Fixed a memory leak in sql_plugin.cc
- plugin-load will now in case of errors try to load all given plugins
  before aborted
- If silent-startup is used, plugin-load will not give errors for
  plugins it cannot load or warnings about plugin marturity level.
- my_rm_tree() will now delete symlinks, not the actual file, if
  MY_NOSYMLINK flag is used.
- my_stat() will now give data for symlink if MY_NOSYMLINKS is used.

@Authors: Väinö Mäkelä <[email protected]>,[email protected]
Vladislav Vaintroub
MDEV-36737 postfix - fix compilation and packaging on Windows

* Compile error
  GCCism - unportable use of __PRETTY_FUNCTION__

* Compile warning
  ha_rows to ulong cast missing

* Link error
  Due to unnecessary use of _dig_vec_lower
  _dig_vec_lower would have to be marked MYSQL_PLUGIN_IMPORT if we
  really wanted it.

* Packaging error (MSI)
  Newly introduced component videx-engine needs a place in
  MSI Feature tree
Monty
Fixed compilation failures in InnoDB with gcc 7.5.0

- 'final' relaced with 'override final'
- Fixed wrong automatic cast from int32 to byte
Dave Gosselin
MDEV-38502: FULL OUTER JOIN get correct sargable condition

Move the temporary gate against FULL OUTER JOIN deeper into the
codebase, which causes the FULL OUTER JOIN query plans to have
more relevant information (hence the change).  In some cases, the
join order of nested INNER JOINs within the FULL OUTER JOIN changed.

Small cleanups in get_sargable_cond ahead of the feature work in
the next commit.
Sergei Golubchik
MDEV-37832 The IF operator implicitly sets SHARED LOCK

InnoDB was supposed to take shared lock only for reads that are
part of data-modifying statement. 20+ years ago, when this logic
was implemented the only way to check for that was
`sql_command != SQLCOM_SELECT` which is overly broad.

Let's use `is_update_query(sql_command)` instead. It uses per-statement
flag (that didn't exist back then) and is much more fine-grained.

Update main.innodb_mysql_lock2 test changing many test cases that used
to say "this shouldn't take shared lock, but in practice InnoDB does".

Also, remove an impossible condition
`(lock_type == TL_READ_HIGH_PRIORITY && in_lock_tables)`:
this lock level can only come from `SELECT HIGH_PRIORITY`,
and never from `LOCK TABLES` statement.
gkodinov
MDEV-38499: cmake and compile warnings on MacOSX when
compiling mariadb from a git tree

Fixed sprintf deprecation warnings compiling on MacOSX.

Replaced some sprintf calls with equivalent snprintf calls,
enough so that "normal" compile on MacOSX (as documented
in the docs) completes without warnings.
Kristian Nielsen
Fix that InnoDB rolls back entire trx in failed CREATE TEMPORARY

For CREATE TEMPORARY TABLE ... SELECT, InnoDB had code to not start a new
transaction for the CREATE TEMPORARY (correct). But the code that handled
failure for the SELECT part (ha_innobase::extra(HA_EXTRA_ABORT_ALTER_COPY))
was missing a check for CREATE TEMPORARY, so it would roll back the entire
transaction, which is wrong, and could lead to inconsistency with binlog or
other engines in the same transaction.

Signed-off-by: Kristian Nielsen <[email protected]>
Väinö Mäkelä
MDEV-32745 Add a simple MySQL to MariaDB upgrade helper

The tool is named mariadb-migrate-config-file.
The main purpose of the tool is to change MySQL option
files to work both for MySQL and MariaDB.
There are options to do the changes in the options file inline,
or at-end-of-file. One can also remove or comment unknown options.

The list of supported options is generated compile time from
mariadbd --help. All server options, including compiled plugins, are
supported.

The bulk of the code comes from Väinö.
Monty has updated it with a lot of extra options.

Other things:
- Fixed a memory leak in sql_plugin.cc
- plugin-load will now in case of errors try to load all given plugins
  before aborted
- If silent-startup is used, plugin-load will not give errors for
  plugins it cannot load or warnings about plugin marturity level.
- my_rm_tree() will now delete symlinks, not the actual file, if
  MY_NOSYMLINK flag is used.
- my_stat() will now give data for symlink if MY_NOSYMLINKS is used.

@Authors: Väinö Mäkelä <[email protected]>,[email protected]
Vladislav Vaintroub
MDEV-37997 vcpkg's FIND_PACKAGE throws error for zlib dependent packages

Build with vcpkg and WITH_ZLIB=bundled throws error
"Broken installation of vcpkg port zlib" in FIND_PACKAGE(CURL)

Set CMAKE_DISABLE_FIND_PACKAGE_ZLIB to workaround.

Previously, this workaround was hashicorp specific, now we need this also
for videx. Thus setting CMAKE_DISABLE_FIND_PACKAGE_ZLIB was moved to
correct place,  inside MYSQL_USE_BUNDLED_ZLIB macro.
Kristian Nielsen
MDEV-38429: Atomic DDL can binlog DDL during ddl log crash recovery without "ddl" mark on the GTID

This patch fixes that ALTER TABLE can call wakeup_subsequent_commits() too
early and allow following event groups to commit out-of-order in parallel
replication. Fixed by calling suspend_subsequent_commits() at the start
of the ALTER.

Could be seen as an assertion:
  !tmp_gco->next_gco || tmp_gco->last_sub_id > sub_id

(Normally this is prevented because an ALTER TABLE will run in its own GCO,
and thus no following event groups can even start; however the missing DDL
mark caused by MDEV-38429 made this visible. And calling
wakeup_subsequent_commits() too early is wrong in any case).

Signed-off-by: Kristian Nielsen <[email protected]>
Sergei Golubchik
MDEV-38365 SHA2 auth plugin crash on large packets

use my_safe_alloca() as the key_len comes directly from the client

Reported by Pavel Kohout, Aisle Research, www.aisle.com
Brandon Nesterenko
MDEV-38609: Master should not fragment replication events based on slave_max_allowed_packet

This commit adds a new variable, binlog_row_event_fragment_threshold,
to define the threshold at which Partial_row_log_events are used
(rather than re-using slave_max_allowed_packet).

TODO: Re-write main git commit message to convey this
Väinö Mäkelä
MDEV-32745 Add a simple MySQL to MariaDB upgrade helper

The tool is named mariadb-migrate-config-file.
The main purpose of the tool is to change MySQL option
files to work both for MySQL and MariaDB.
There are options to do the changes in the options file inline,
or at-end-of-file. One can also remove or comment unknown options.

The list of supported options is generated compile time from
mariadbd --help. All server options, including compiled plugins, are
supported.

The bulk of the code comes from Väinö.
Monty has updated it with a lot of extra options.

Other things:
- Fixed a memory leak in sql_plugin.cc
- plugin-load will now in case of errors try to load all given plugins
  before aborted
- If silent-startup is used, plugin-load will not give errors for
  plugins it cannot load or warnings about plugin marturity level.
- my_rm_tree() will now delete symlinks, not the actual file, if
  MY_NOSYMLINK flag is used.
- my_stat() will now give data for symlink if MY_NOSYMLINKS is used.

@Authors: Väinö Mäkelä <[email protected]>,[email protected]
gkodinov
MDEV-38546 stage2: Automatically label new unlabeled pull requests with foundation/corporation/external contribution

Further tuned the query to cover only PRs since 2025-01 and to cover all PR states.
Removed unused JSON fields from the output and the parsing
Enabled writing the labels back to the issue.
Dave Gosselin
MDEV-38508 FULL OUTER JOIN constant table detection

Constant tables are those which have one or zero rows or which appear
to have one or zero rows due to WHERE clause filtering.  Such tables
may appear in a FULL JOIN with the understanding that they may result
in a large NULL complement set of rows from the other table.

This patch makes changes that prevented constant table detection from
working properly, but it doesn't emit any result sets because the
FULL JOIN algorithm hasn't yet been implemented.  Those changes
include:
  - Adding an ON expression to both tables in the full outer join.
  Both tables are outer tables with respect to the other which avoids
  some special cases that might've been needed in make_join_statistics.
  - When a FULL OUTER JOIN can't be rewritten to another JOIN kind, we
  cannot allow the OUTER JOIN to be rewritten to an INNER JOIN
  "accidentally" during simplify_joins (otherwise a wrong result will
  occur) and this will prevent constant tables from being correctly
  detected.

Introduce a new optimizer_switch variable, rewrite_full_joins, and
an accompanying hint, [NO_]REWRITE_FULL_JOINS, to control whether
FULL JOINs are rewritten as LEFT, RIGHT, or INNER JOINs.  Primarily for
testing, this option may be useful in the field as well.  This allows
testing of FULL JOINs that would otherwise be optimized to another
kind of JOIN when a NULL-rejecting WHERE clause permits it.
Thirunarayanan Balathandayuthapani
MDEV-38631 Remove unused FTS debug directives and dead code

Remove several unused debugging preprocessor directives from the FTS
module that were never effectively used for debugging purposes and
represent dead code.

Removed debug directives:
- DEBUG_FTS_SORT_PRINT: FTS sorting debug output macros
- FTS_INTERNAL_DIAG_PRINT: Internal FTS diagnostic printing
- FTS_OPTIMIZE_DEBUG: FTS optimization debugging functions
- MYSQL_STORE_FTS_DOC_ID: Store fts doc id in FTS_DOC_ID field
- FTS_DEBUG: Debug for fulltext index
- FTS_CACHE_SIZE_DEBUG: Assign max and min fulltext cache size
- FTS_MULT_INDEX: Updated fulltext index
- Removed FTS_OPTIMIZE_START_TIME and FTS_OPTIMIZE_END_TIME constants

These debug directives were never properly integrated into the build
system and provided no value for production debugging and also
improves code clarity for the FTS module.
Kristian Nielsen
MDEV-38429: Atomic DDL can binlog DDL during ddl log crash recovery without "ddl" mark on the GTID

When ddl log recovery needs to binlog during the crash recovery, the
GTID was binlogged without the required "ddl" marker. This caused wrong
behaviour on the slave when using parallel replication.

Fixed by explicitly marking the "current statement" as DDL when binlogging
in ddl log crash recovery.

Signed-off-by: Kristian Nielsen <[email protected]>
Kristian Nielsen
Binlog-in-engine: New binlog implementation integrated in InnoDB

Implement an improved binlog implementation that is integrated into
the storage engine. The new implementation is enabled with the
--binlog-storage-engine option. Initially the InnoDB storage engine
implements the binlog.

Integrating the binlog in the storage engine improves performance,
since it makes the InnoDB redo log the single source of truth and
avoids the need for expensive two-phase commit between binlog and
engine. It also makes it possible to disable durability (set
--innodb-flush-log-at-trx-commit=0) to further improve performance,
while still preserving the ability to recover the binlog and database
into a consistent state after a crash.

The new binlog implementation also greatly improves the internal
design and implementation of the binlog, and enables future
enhancements for replication.

This is a squash of the original 11.4-based patch series.

Signed-off-by: Kristian Nielsen <[email protected]>
gkodinov
[PATCH] MDEV-38546: Automatically label new unlabeled pull requests
with foundation/corporation/external contribution

The MariaDB server repository uses certain pull request labels as queue markers
for incoming pull requests as follows:
- External Contribution: for all external contributions
- MariaDB Corporation: for employees of the MariaDB corporation
- MariaDB Foundation: for the employees of the MariaDB foundation

Right now, when a new pull request is filed, these tags need to be applied
manually.
However a large % of these manual assignments can be automated by checking
if the author is in https://github.com/orgs/MariaDB/teams/staff
or in https://github.com/orgs/MariaDB/teams/developers.

If they are in staff "MariaDB Foundation" is assigned.

if they are not in staff, but are in developers, "MariaDB Corporation" is assigned.

If they are in neither staff nor developers, "External Contribution" is assigned.

A github workflow is created to do the assignments. It is being triggered
every day at 2AM. Or it can be triggered manually.

This is stage1 of the fix: it is read only and only *prints* the changes needed
Kristian Nielsen
MDEV-38465: Savepoint in trigger causes transactional inconsistency

SAVEPOINT inside a trigger doesn't work correctly. Setting a savepoint
inside a trigger somehow loses the implicit savepoint set at transaction
start, so that the partial changes are left if the statement later fails.
Referencing an existing savepoint claims the savepoint does not exist (and
it is in any case very unclear what exactly it should mean to rollback to a
savepoint from the middle of a statement, or set in the middle of a prior
statement).

These problems are independent of binlog-in-engine, but in the new binlog
implementation we are trying to make things work more correctly and
robustly, so let's disallow use of savepoints inside triggers. The new
binlog is off by default, so backwards compatibility is less of a concern,
though arguably disallowing savepoints in triggers would be better done
unconditionally.

Signed-off-by: Kristian Nielsen <[email protected]>
Väinö Mäkelä
MDEV-32745 Add a simple MySQL to MariaDB upgrade helper

The tool is named mariadb-migrate-config-file.
The main purpose of the tool is to change MySQL option
files to work both for MySQL and MariaDB.
There are options to do the changes in the options file inline,
or at-end-of-file. One can also remove or comment unknown options.

The list of supported options is generated compile time from
mariadbd --help. All server options, including compiled plugins, are
supported.

The bulk of the code comes from Väinö.
Monty has updated it with a lot of extra options.

Other things:
- Fixed a memory leak in sql_plugin.cc
- plugin-load will now in case of errors try to load all given plugins
  before aborted
- If silent-startup is used, plugin-load will not give errors for
  plugins it cannot load or warnings about plugin marturity level.
- my_rm_tree() will now delete symlinks, not the actual file, if
  MY_NOSYMLINK flag is used.
- my_stat() will now give data for symlink if MY_NOSYMLINKS is used.

@Authors: Väinö Mäkelä <[email protected]>,[email protected]
gkodinov
MDEV-38546: Automatically label new unlabeled pull requests
with foundation/corporation/external contribution

Fixed a typo in the pr list filter.
Monty
MDEV-37785 Assertion `!mysql_bin_log.is_open()' failed in ... ALTER TABLE

The reason for the failure was a wrong assert in
mark_tmp_table_as_free_for_reuse()
The purpose of the assert was to find of it a temporary table would
be wrongly marked as 'not up to date'.
However there is no easy way to do that, so better to remove the
assert. It has already proven that for most cases this does not happen.
Rucha Deodhar
MDEV-38620: Server crashes in setup_returning_fields upon 2nd execution
of multi-table-styled DELETE from a view

Analysis:
The item_list of builtin_select stores the fields that are there in the
RETURNING clause.
During the "EXECUTE" command, a "dummy item" is added into the item_list
of the select_lex(builtin_select) representing DELETE during
Sql_cmd_delete::precheck(). This snippet that adds a dummy item is added
because columnstore needs for temporary table. Results are put into a
temporary table and to create a temporary table we need to know what
columns are there which we get from the select_lex->item_list.
As a result, the item_list now has an item even when there is not really
RETURNING clause, resulting in execution of the setup_returning_fields()
when it should have exited already.

Fix:
Instead of checking whether builint_select's item_list is empty to
determine whether there is RETURNING clause, use a flag.
Brandon Nesterenko
MDEV-38625: Mariadb-binlog cant filter partial_log_events

When mysqlbinlog is configured with --database or --table filters, they
wouldn't work on Partial_rows_log_events. The code didn't examine the
inner Rows_log_event within a Partial_rows_log_event to extract the
database/table information to check against the m_table_map_ignored
to see if filtering should take place.

This patch adds in this functionality, when the first
Partial_rows_log_event is processed, the headers from the inner
Rows_log_event are extracted to compare against the m_table_map_ignored
Alexey Botchkov
MDEV-15479 Empty string is erroneously allowed as a GEOMETRY column value.

Empty string disallowed.
Sergei Golubchik
MDEV-38532 followup

include private server headers into libmariadbd-dev,
where plugin server headers already were.
Not in libmariadb-dev. It's different from RPMs, but
RPMs don't have a dedicated embedded devel package.
Thirunarayanan Balathandayuthapani
MDEV-38629 Deprecate innodb_ft_enable_diag_print variable

The innodb_ft_enable_diag_print is now deprecated and ignored.
This will be removed in a future version. This was used to enable
additional diagnostic output during FTS operations.
- Added PLUGIN_VAR_DEPRECATED flag to innodb_ft_enable_diag_print
- Removed fts_enable_diag_print global variable declaration
- Removed fts_ast_node_print() function declaration and usage
- Removed start_time field from fts_sync_t structure
Väinö Mäkelä
MDEV-32745 Add a simple MySQL to MariaDB upgrade helper

The tool can currently list unknown options in configuration files. The
list of supported options is generated using from mariadbd --help.
It will include support for all options, including plugin.

The bulk of the code comes from Väinö.
Monty has updated it with a lot of extra options.

Other things:
- Fixed a memory leak in sql_plugin.cc
- plugin-load will now in case of errors try to load all given plugins
  before aborted
- If silent-startup is used, plugin-load will not give errors for
  plugins it cannot load or warnings about plugin marturity level.
- my_rm_tree() will now delete symlinks, not the actual file, if
  MY_NOSYMLINK flag is used.
- my_stat() will now give data for symlink if MY_NOSYMLINKS is used.

@Authors: Väinö Mäkelä <[email protected]>,[email protected]
Sergei Golubchik
MDEV-38283 Incorrect results for NULLIF function

narrow a historical hack in convert_const_compared_to_int_field()
to apply only to bigint-vs-string comparison as it was supposed to.
Sergei Golubchik
MDEV-38209 REFERENCES permission on particular schema is sometimes ignored

some I_S tables require "any non-SELECT privilege on the table".
If only SELECT was granted on the global level and something non-SELECT
on the schema level, then we need to check schema level privileges
explicitly, because check_grant() doesn't do that and get_all_tables()
doesn't look deeper if SELECT is present on the global level.
Sergei Golubchik
MDEV-34570 mariabackup prepare fails with data-at-rest encryption and "-u root" option

rewrite mariadb-backup "early" option parsing to use my_getopt

+ proper handling of values separated from the option by a space (not =)
+ case insensitive and -/_ insensitive comparison
- multiple --defaults-group don't work
- multiple --login-path don't work
- --incremental-dir overwrites --target-dir, not "whatever comes first"
nox
Make the warning message during mariadb-backup SST more useful

When the SST log archive directory cannot be created or is not writable,
the path is set to an empty string and a warning is logged.
Unfortunately, the warning is logged only after the path has been changed,
so, the following message is displayed:
> WSREP_SST: [WARNING] The '' directory is not writtable

This commit swaps the order of logging and clearing the path so that the
failing path is logged. The new output is:
> WSREP_SST: [WARNING] The '/tmp/something_invalid' directory is not writable
gkodinov
MDEV-38546: Automatically label incoming pull requests

Do not print a bogus error line

gh command line can return non-zero status even when it actually
sets a label.

So, as a result, daily runs of the scheduled task would print a bogus
error line, even if the label is applied successfully.

Fixed by removing the error status line and the counter.
Väinö Mäkelä
MDEV-32745 Add a simple MySQL to MariaDB upgrade helper

The tool is named mariadb-migrate-config-file.
The main purpose of the tool is to change MySQL option
files to work both for MySQL and MariaDB.
There are options to do the changes in the options file inline,
or at-end-of-file. One can also remove or comment unknown options.

The list of supported options is generated compile time from
mariadbd --help. All server options, including compiled plugins, are
supported.

The bulk of the code comes from Väinö.
Monty has updated it with a lot of extra options.

Other things:
- Fixed a memory leak in sql_plugin.cc
- plugin-load will now in case of errors try to load all given plugins
  before aborted
- If silent-startup is used, plugin-load will not give errors for
  plugins it cannot load or warnings about plugin marturity level.
- my_rm_tree() will now delete symlinks, not the actual file, if
  MY_NOSYMLINK flag is used.
- my_stat() will now give data for symlink if MY_NOSYMLINKS is used.

@Authors: Väinö Mäkelä <[email protected]>,[email protected]
Sergei Golubchik
MDEV-35541 UBSAN: runtime error: addition of unsigned offset to X overflowed to Y in my_b_flush_io_cache

/home/buildbot/server/mysys/mf_iocache.c:1793:39: runtime error: addition of unsigned offset to 0x7e1586a239fb overflowed to 0x7e1586a239fa
SUMMARY: UndefinedBehaviorSanitizer: pointer-overflow /home/buildbot/server/mysys/mf_iocache.c:1793:39
Sergei Golubchik
MDEV-27277 update test results