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
Sergey Vojtovich
MDEV-38437 - main.ssl fails sporadically

Test was affected by incompletely closed preceding connections.

Make test agnostic to concurrent connections by querying
performance_schema.status_by_thread only for connections that it
uses.
Sergei Golubchik
fix failing galera tests

* update result
* followup for MDEV-38073. THD created - need to reset read_only
Mohammad Tafzeel Shams
MDEV-38140: InnoDB index corruption after UPDATE affecting virtual
columns

Issue:
- Purge thread attempts to purge a secondary index record that is not
  delete-marked.

Root Cause:
- When a secondary index includes a virtual column whose v_pos is
  greater than the number of fields in the clustered index record, the
  virtual column is incorrectly skipped while reading from the undo
  record.
- This leads the purge logic to incorrectly assume it is safe to purge
  the secondary index record.
- The code also confuses the nth virtual column with the nth stored
  column when writing ordering columns at the end of the undo record.

Fix:
- In trx_undo_update_rec_get_update(): Skip a virtual column only
  when v_pos == FIL_NULL, not when v_pos is greater than the number
  of fields.
- In trx_undo_page_report_modify(): Ensure ordering columns are
  written based on the correct stored-column positions, without
  confusing them with virtual-column positions.
Thirunarayanan Balathandayuthapani
MDEV-31892 Server crash upon moving InnoDB table with fulltext index between databases

- InnoDB tries to open the auxilary table which
starts with the name of old databases. So it leads
to abort of server.

row_merge_create_fts_sort_index(): Pass new table
for the temporary fts sort index to be created

fts_rename_aux_tables(): Iterate all the indexes
to rename the auxiliary index tables.
Rucha Deodhar
MDEV-37950: INSERT ... RETURNING exposes columns for which the user lacks
SELECT privilege

Analysis:
When setup_fields() is called, the want_privilege is set to NO_ACL, so
correct priveleges are not checked.
Fix:
Since RETURNING requires SELECT_ACL privelige, when we are setting up
the returning fields for the given query, set want_privilege to SELECT_ACL.
Reset to original value of want_privilege once done.
Marko Mäkelä
MDEV-38419: Fix some clang-21 -fsanitize=memory failures

fil_space_t::free_page(): Turn a parameter into a template parameter,
and remove some duplicated code. This fixes an error that was flagged
by clang++-21 -fsanitize=memory in buf_page_create().

fseg_create(): Merge the parameter reserved_extent to n_reserved.
This fixes an error about n_reserved being uninitialized.

fseg_alloc_free_page_low(): Simplify a debug assertion.

flst_add_last(), flst_remove(): Reduce the scope of a conditionally
initialized variable.

Reviewed by: Thirunarayanan Balathandayuthapani
Sergei Golubchik
Merge branch '11.4' into 11.8
bsrikanth-mariadb
MDEV-31255: Crash with fulltext search subquery in explain delete

ft_handler isn't getting initialized for subqueries inside explain
delete/update queries. However, ft_handler is accessed inside ha_ft_read(),
and is the reason for NULL pointer exception.
However, that is not the case with non-explain queries.

ft_handler initialization is done in the optimizer phase, that too
selectively, when the flag SELECT_DESCRIBE is not set.

In this PR, initialization of ft_handler is moved to the exexution phase,
and is done always.
Kristian Nielsen
Fix leaving system table as InnoDB engine

Fix the test case main.servers to restore the table mysql.servers back to Aria
engine, not leave it changed to InnoDB. This was causing the test case
innodb.innodb_stats to fail sporadically if it was run after main.servers.

Signed-off-by: Kristian Nielsen <[email protected]>
Brandon Nesterenko
MDEV-38506: (Regression) Failed GRANT on a procedure breaks replication

Test case to showcase MDEV-38506:

A failed GRANT on a procedure will be replicated when sql_mode does not
have NO_AUTO_CREATE_USER. This is because the function
mysql_routine_grant() does not check if an error occured while
performing the GRANT on a procedure before binlogging, it simply always
binlogs.
Dearsh Oberoi
MDEV-38194 Correct classification of MASTER_SSL_VERIFY_SERVER_CERT

This patch removes MASTER_SSL_VERIFY_SERVER_CERT from the list
reserved_keyword_udt_not_param_type and adds it to
keyword_func_sp_var_and_label in the parser. All other MASTER_SSL_* keywords
are in this list.

This allows MASTER_SSL_VERIFY_SERVER_CERT to be used unquoted when directly
accessed via INFORMATION_SCHEMA.slave_status, as well as opens it up to be
used as names in other places, e.g. stored procedures.

Reviewed-by: Brandon Nesterenko <[email protected]>
Marko Mäkelä
Merge 10.11 into 11.4
Sergei Golubchik
fix tests failing with --view
Sergei Golubchik
audit crashes when vio=NULL

e.g. galera.MDEV-35511 crashes on shutdown
Brandon Nesterenko
MDEV-38506: (Patch) Failed GRANT on a procedure breaks replication

A failed GRANT on a procedure will be replicated when sql_mode does not
have NO_AUTO_CREATE_USER. This is because the function
mysql_routine_grant() does not check if an error occured while
performing the GRANT on a procedure before binlogging, it simply always
binlogs.

This patch fixes this problem by checking if an error happened
previously before binlogging, and if so, then skip binlogging.

Note there is still a broader issue in this area leading to replication
divergence. Reported in MDEV-29848, a partially-completed GRANT
statment (where some earlier GRANTS succeed and a later fails) will not
binlog. Note this affects all grant types, whereas the issue addressed
in this patch is limited to GRANT EXECUTE ON PROCEDURE. This patch
makes GRANT EXECUTE ON PROCEDURE binlogging behavior consistent with
the other grant types. A separate follow-up patch will address the
broader MDEV-29848 issue.

Reviewed-by: TODO
Signed-off-by: Brandon Nesterenko <[email protected]>
Alexey Botchkov
MDEV-38372 ASAN error in InnoDB on malformed WKB

Geometry::is_binary_valid() method added, and
used to check WKB before storing in the engine.
Marko Mäkelä
Merge 10.6 into 10.11
Daniel Black
MDEV-37908: Replace perror link with err.mariadb.com link

Inspired by 22c69e0853dcd1447b881bd4448600cf286d31eb now
that there's a short url.
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.
Brandon Nesterenko
MDEV-38506: (Post-fix) rpl.rpl_do_grant

rpl_do_grant.test took advantage of MDEV-38506 so a partially-failing
REVOKE EXECUTE ON PROCEDURE would still replicate.

This commit disables the problematic test case with a TODO note to
re-enable it once MDEV-29848 is fixed.
Brandon Nesterenko
MDEV-38506: (Patch) Failed GRANT on a procedure breaks replication

A failed GRANT on a procedure will be replicated when sql_mode does not
have NO_AUTO_CREATE_USER. This is because the function
mysql_routine_grant() does not check if an error occured while
performing the GRANT on a procedure before binlogging, it simply always
binlogs.

This patch fixes this problem by checking if an error happened
previously before binlogging, and if so, then skip binlogging.

Note there is still a broader issue in this area leading to replication
divergence. Reported in MDEV-29848, a partially-completed GRANT
statment (where some earlier GRANTS succeed and a later fails) will not
binlog. Note this affects all grant types, whereas the issue addressed
in this patch is limited to GRANT EXECUTE ON PROCEDURE. This patch
makes GRANT EXECUTE ON PROCEDURE binlogging behavior consistent with
the other grant types. A separate follow-up patch will address the
broader MDEV-29848 issue.

Reviewed-by: TODO
Signed-off-by: Brandon Nesterenko <[email protected]>
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.
Marko Mäkelä
Merge 10.11 into 11.4
Sergei Golubchik
MDEV-38368 Spider crash on fake loop detection variables

use my_safe_alloca() when the size might be large
Sergei Golubchik
MDEV-38375 audit plugin implements its own (simple) SQL parser

remove the parser, use thd_sql_command(thd)
Sergei Petrunia
MDEV-38240: Selectivity sampling not performed when the table has no indexed conditions

Don't skip range analysis step in such cases.

(Backport to 11.4, cherry picked from 2ce3f0d76cb6ae0dc6df1f257f28a4b7b1a00244)
Kristian Nielsen
MDEV-37862: innodb.gap_locks test failure: 0 lock structs, 0 row locks

The test fails sporadically due to an insufficient --replace_regex.
The output of SHOW ENGINE INNODB STATUS can have some "not started"
transactions in additional to the "ACTIVE" transaction the test wants to
display, and the --replace_regex would wrongly pick one of the "not started"
transactions to show if it occured after the "ACTIVE" one in the output.

Signed-off-by: Kristian Nielsen <[email protected]>
Marko Mäkelä
MDEV-38463: subtraction of unsigned offset ... overflowed

row_log_table_apply_ops(), row_log_apply_ops(): When switching
buffers, do not subtract addresses of unrelated buffers, but
simply set mrec_end relative to mrec. This makes the code more
readable and will avoid a runtime error from clang -fsanitize=undefined
depending on what kind of addresses are being returned by
row_log_block_allocate().
Sergei Golubchik
Merge branch '12.2' into 12.3
Sergei Golubchik
MDEV-38375 do MYSQL_AUDIT_GENERAL_STATUS on ps execute too

just like slow logging, MYSQL_AUDIT_GENERAL_STATUS
should be done inside Prepared_statement::execute()
Sergei Golubchik
MDEV-38374 nonsense code in wsrep_store_key_val_for_row()

fix copy-paste error. See the code for MYSQL_TYPE_VARCHAR
Sergei Petrunia
MDEV-38240: Selectivity sampling not performed when the table has no indexed conditions

Don't skip range analysis step in such cases.
Sergei Golubchik
Merge branch '11.8' into 12.2
Sergei Petrunia
MDEV-38426: Clustered PK not used for Loose Index Scan optimization

Loose Index Scan optimization can only be used when the index it is
uses covers all columns used by the query. So, it would not be
attempted for indexes that are not present in table->covering_keys.

Before commit ed0a72356691 (pushed to 11.0), Clustered PK would be
present in table->covering_keys if primary key columns are covering.

However, that commit gave Clustered PKs special treatment: they are
no longer present in table->covering_keys. This caused Loose Scan not
to be considered for Clustered PKs.

Fixed this by making the check in get_best_group_min_max() to allow
Loose Scan if all fields used by the query are parts of the Clustered PK.

Also made changes:
- The logic in JOIN_TAB::save_explain_data() assumed that Loose Scan
  could only be used for index-only scans. This is not the case for
  clustered PKs.
- One query in group_min_max_innodb started to use Loose Scan. It did so
  in 10.11, too.
gkodinov
MDEV-38499: cmake and compile errors on MacOSX when compiling
mariadb from a git tree

Fix the warnings issued by a normal MacOSX compile.

Problems:
1. sprintf is deprecated in favor of snprintf
2. bison incorrectly issues a warning when it sees "b4_bin"
3. MacOSX linker issues a warning about duplicate mysys/dbug/etc libraries.

On 1: replaced the relevant sprintf with snprintf.
On 2: worked around by adding a compiler define with a different name
aliasing the character set variable used with a name that
won't trigger the bison warning
On 3: This is due to the fact that there's a circular dependecy between
mysys and dbug (among others). Turned the warning off by adding a macro
to suppress the duplicate library warning.
Applied the macro to all targets that have a dependency on
the mysys/dbug/strings libraries
Aleksey Midenkov
MDEV-37325 Incorrect results for INTERSECT ALL in ORACLE mode

Oracle mode has no priority between set-operators but the current
implementation with disable_index_if_needed() can not work with
arbitrary mix of distinct/non-distinct set-operators as the algorithm
is tied to the properly wrapped version of expression. Index can be
disabled only once and cannot be reenabled afterwards.

To adapt Oracle mode for the aforementioned implementation we
prioritize each set operator with parens in the order of
appearance. So the expression:

  S1 op1 S2 op2 S3 op3 S4

will be rewritten like this:

  (((S1 op1 S2) op2 S3) op3 S4).

The rewritten expression is valid for both Oracle and default mode and
renders the same result. Prioritizing is done with
create_priority_nest() but it was tweaked to work with derived to be
the first operand. Originally create_priority_nest() could wrap only
second operand, like this:

  S1 op1 S2 op2 S3 -> S1 op1 (S2 op2 S3).

Now this behaviour is kept by non-NULL attach_to argument. With NULL
attach_to argument it produces this transformation:

  S1 op1 S2 -> (S1 op1 S2), but to be strict it will look like this:
  SELECT .. FROM (S1 op1 S2).

This expression is treated as the first one in the select list, so
nothing to "attach to".

On importance of not making fake_select_lex after
create_priority_nest() in parsed_select_expr_start(). This will fail
nastily in Protocol::valid_handler() check in store_longlong() for
EXPLAIN. This happens because select_options are inherited from newly
made fake_select_lex but without SELECT_DESCRIBE flag which is meant
to be assigned by mysql_explain_union() but union_needs_tmp_table() is
false (because now top-level unit has no set-operator, it is just
select from derived), so SELECT_DESCRIBE assignment is
skipped. Depending on that flag send_result_set_metadata() is
conditionally executed in JOIN::exec_inner(). And originally it is
done via select_describe() branch for top-level select when there is
no set operator (it is select from derived as explained above), not
via direct send_result_set_metadata().

On IS_OR_WAS_ORACLE. Sql_mode_save_for_frm_handling removes MODE_ORACLE
when view is registered or opened. We cannot return it back as this
conflicts with MDEV-12478 (tested by compat/oracle.func_concat). So we
are temporarily adding WAS_ORACLE flag instead. WAS_MODE_ORACLE is for
testing both WAS_ORACLE and MODE_ORACLE simultaneously.
Sergei Golubchik
MDEV-38242 crash when first COM_STMT_EXECUTE doesn't send types

all params are initialized to use Type_handler_null.
NULL params do not have a value to read from the packet buffer,
so their Item_param_set_param_func() should do nothing.

Type_handler_null inherits from Type_handler_string_result,
that is, Type_handler_null *must* override parent's
Item_param_set_param_func().
Marko Mäkelä
Merge 10.6 into 10.11
Thirunarayanan Balathandayuthapani
MDEV-31892: Fix server crash when moving InnoDB table with fulltext index between databases

Problem:
========
When renaming/moving an InnoDB table with fulltext indexes
between databases, the server would crash because
InnoDB attempted to open auxiliary tables using
the old database name instead of the new one.

fts_rename_aux_tables() : Iterating through fts->indexes vector
instead of all fulltext indexes on the table

row_merge_create_fts_sort_index(): Uses old table reference,
causing it to look for auxiliary tables with the old database name

Solution:
========
fts_rename_aux_tables(): Iterate through all table indexes
and ensure all fulltext indexes are properly renamed

row_merge_create_fts_sort_index() : Use new_table instead
of old_table when creating temporary FTS sort indexes.
Added safety check for table->stat_initialized before
accessing row count
Sergey Vojtovich
MDEV-38182 - main.xa fails sporadically

Test was affected by incompletely closed preceding connections
such that count_sessions.inc records value larger than 1 (for
the default connection). This causes subsequent
wait_until_count_sessions.inc not to wait for connections it was
supposed to wait for.

Replaced count_sessions.inc with hardcoded 1.