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
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.
Sergei Golubchik
MDEV-37320 ASAN errors in Field::is_null / Item_param::assign_default

don't construct a "default value field" by moving
field's ptr/null_ptr. Field can have its null_ptr moved to
extra_null_bitmap for BEFORE triggers. Perhaps there can be other
reasons for null_ptr and ptr not to be at the right offset to each other.

Instead, use pointers from TABLE_SHARE::field, which always point
to default values. Except when there's no TABLE_SHARE::field,
which can happen for TEMPTABLE views, for example, but these views
are not updatable anyway.

Add an assert to Field::move_field_offset() to ensure it's only
used for appropriately set ptr/null_ptr pairs.
Alexey Botchkov
MDEV-21376 mysqldump should support wildcards.

Now --wildcards (-L) option is supported by mysqldump.
So user can specify patterns for database names or table names
to dump.
Sergei Golubchik
bump the VERSION
Sergei Golubchik
mariadb-backup: read --tables-file in the text mode on Windows
Pekka Lampio
MDEV-36077: Galera feature: Retry applying writesets at slaves

A new Galera feature that allows retrying of applying of writesets at
slave nodes (codership/mysql-wsrep-bugs/#1619). Currently replication
applying stops for first non ignored failure occurring in event
applying, and node will do emergency abort (or start inconsistency
voting). Some failures, however, can be concurrency related, and
applying may succeed if the operation is tried at later time.

This feature introduces a new dynamic global option variable
"wsrep_applier_retry_count" that controls the retry-applying feature:
a zero value disables retrying and a positive value sets the maximum
number of retry attempts. The default value for this option is zero,
which means that this feature is disabled by default.

Signed-off-by: Julius Goryavsky <[email protected]>
Sergei Golubchik
MDEV-37328 Assertion failure in make_empty_rec upon CONVERT PARTITION

ALTER TABLE ... CONVERT invokes build_frm_image() three times on
the same data structures. The latter should not increment
create_info->null_bits on every invocation.
Sergei Golubchik
Update ColumnStore 23.10.5-1
Sergei Golubchik
Merge branch '10.11' into 11.4
Sergei Golubchik
Merge branch '11.4' into 11.8
Sergei Golubchik
ColumnStore 6.4.11-1
Sergei Golubchik
MDEV-21376 fix the test for windows, fix --help text

we generally don't write long and short options |-separated in the
help text. otherwise it should've been

  with --all-databases|-A or --wildcards|-L --databases|-B.

or

  with --all-databases|-A or --wildcards --databases|-L -B.
Thirunarayanan Balathandayuthapani
MDEV-37192  Crash recovery after bulk load data reports corruption

Problem:
=======
- InnoDB modifies the PAGE_ROOT_AUTO_INC value on clustered index
root page. But before committing the PAGE_ROOT_AUTO_INC changes
mini-transaction, InnoDB does bulk insert operation and calculates
the page checksum and store as a part of redo log in mini-transaction.
During recovery, InnoDB fails to validate the page checksum.

- InnoDB encounters the corrupted redo log while applying
the redo log and evicts the corrupted page from buffer pool.
InnoDB releases the corrupted page lock while evicting
the corrupted page. But it fails to hold the page lock before
releasing the corrupted page.

Solution:
========
row_ins_write_autoinc(): Write persistent auto increment
value on clustered index after bulk insert operation.

recv_recover_page(): Hold the exclusive lock on the page before
releasing the corrupted page from buffer pool
Sergei Golubchik
Connector/C 3.3.17
ParadoxV5
experiment

Builder `amd64-ubuntu-2204-debug` was able to find the excluded `strings/decimal.c` things from libmariadb, but not `mysys/ma_dyncol.c`.

Please don’t mind… I needed _some_ way to get big pictures.
Pekka Lampio
MDEV-36554: Assertion `is_wsrep() == wsrep_on(mysql_thd)' failed in void trx_t::commit_in_memory(const mtr_t*)

This bug fix prevents debug assertion failure when Galera feature
retry applying is enabled. This patch introduces also a general
mechanism for temporarily disabling some debug assertions in InnoDB
code.

Signed-off-by: Julius Goryavsky <[email protected]>
Yuchen Pei
oleg's patch in MDEV-36331

https://jira.mariadb.org/browse/MDEV-36331?focusedCommentId=307928&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-307928

Does not seem to fix this case..?

--source include/have_sequence.inc

create table t1 (a int not null, key(a));
insert into t1 (a) select seq/100 from seq_1_to_1000;

create table t2 (a int not null, key(a));
insert into t2 (a) select seq from seq_1_to_10000;

create table t3 (a int not null, key(a));
insert into t3 (a) select seq from seq_1_to_20000;

set join_cache_level=0;

set optimizer_prune_level=1;

/* 1 */ explain format=json select *
from t1, t2, t3
where t2.a = t3.a and t1.a = 3;

set optimizer_prune_level=0;

/* 2 */ explain format=json select *
from t1, t2, t3
where t2.a = t3.a and t1.a = 3;

drop table t1,t2,t3;
Nikita Malyavin
Item::eq: transform bool binary_cmp into struct Eq_config
Vladislav Vaintroub
MDEV-37339 errors about caching_sha2_password on server startup (WolfSSL)

With WolfSSL, the plugins is statically compiled, and enabled,
and defaults to autogenerating ssl keys, which was left unimplemented.
Thus, it spits out some [ERROR] on every startup.

Fixed by removing a couple some ifdefs. Allowed tcp_nossl to run on
Windows.

As WolfSSL is missing some APIs with FILE*, use related API that
accept BIO
, i.e
- BIO_new_file() instead of fopen()
- BIO_free instead of fclose()
- PEM_write_bio_PrivateKey() instead of PEM_write_PrivateKey()
- etc

A note about BIO and error reporting:
BIO_new_file sets the errno, therefore FILE_ERROR macro
produces good expected error messages, while SSL_ERROR unfortunately
creates something incomprehensible. Thus, FILE_ERROR is left in place
where it was used previously (fopen errors)

Curiously, removing APIs with FILE*, solves another bug MDEV-37343,
where server on Windows dies with obscure message as plugins tries to use
this function. OpenSSL_Applink supposed to be official solution against
such problems, but I could not get it to work properly, no matter how
much I tried. Avoiding APIs with FILE* in first place works best
Vladislav Vaintroub
MDEV-37339 errors about caching_sha2_password on server startup (WolfSSL)

With WolfSSL, the plugins is statically compiled, and enabled,
and defaults to autogenerating ssl keys, which was left unimplemented.
Thus, it spits out some [ERROR] on every startup.

Fixed by removing a couple some ifdefs. Allowed tcp_nossl to run on
Windows.
Pekka Lampio
MDEV-36554 addendum: Assertion `is_wsrep() == wsrep_on(mysql_thd)' failed in void trx_t::commit_in_memory(const mtr_t*)

Modified the bug fix for MDEV-36554 by replacing the general
mechanishm for disabling assertions in InnoDB code with solution
specific to this rollback issue.

The appliers sets a flag in the applier thread for the duration of the
local rollback. This is used in InnoDB code to detect a local
rollback.

Signed-off-by: Julius Goryavsky <[email protected]>
Vladislav Vaintroub
MDEV-37339 errors about caching_sha2_password on server startup (WolfSSL)

With WolfSSL, the plugins is statically compiled, and enabled,
and defaults to autogenerating ssl keys, which was left unimplemented.
Thus, it spits out some [ERROR] on every startup.

Fixed by removing a couple some ifdefs. Allowed tcp_nossl to run on
Windows.

As WolfSSL does not have API with FILE*, use related API that accept BIO
, i.e
- BIO_new_file() instead of fopen()
- BIO_free instead of fclose()
- PEM_write_bio_PrivateKey() instead of PEM_write_PrivateKey()
- etc

Curiously, removing APIs with FILE*, solves another bug MDEV-37343,
where server on Windows dies with obscure message as plugins tries to use
this function. OpenSSL_Applink supposed to be official solution against
such problems, but it did not seem to work properly.
Avoiding APIs with FILE* in first place works best.
Sergei Golubchik
MDEV-37312 ASAN errors or assertion failure upon attempt to UPDATE FOR PORTION violating long unique under READ COMMITTED

in case of a long unique conflict ha_write_row() used delete_row()
to remove the newly inserted row, and it used rnd_pos() to position
the cursor before deletion. This rnd_pos() was freeing and reallocating
blobs in record[0]. So when the code for FOR PORTION OF did
  store_record(record[2]);
  ha_write_row()
  restore_record(record[2]);
it ended up with blob pointers to a freed memory.

Let's use lookup_handler for deletion.
Alexander Barkov
MDEV-20022 sql_mode="oracle" does not support TO_NUMBER() function

This patch implements an Oracle style function to_number()
with the following signatures:

- to_number(number_or_string_subject)
- to_number(string_subject, string_format)

The function is implemented in sql/item_numconvfunc.cc.

The function returns the DOUBLE data type for
all signatures and input data types.

The format parser understands the following components:

- Digits: 0, 9
- Hex digits: X
- Group separators: comma (,) and G
- Decimal delimiers: period (.) and D
- Approximate number signature: EEEE
- Currency/numeric flags: $ and B
- Currency signatures: C, L, U
- Sign signatures: S, MI, PR
- Special format signatures: V, TM, TM9, TME
- Format flag: FM

Note, the parser was implemented assuming that we'll also have the
oppostite function to_char() soon for numeric input.
So it parser all known components.
However, the function to_number() does not support:
- Formats V, TM, TM9, TME. to_number() returns NULL if the format
  string has these components.
  These componens are supported only by to_char() in Oracle.

Features not inclided into this patch:
- The ON CONVERSION ERROR clause
- The third parameter (nlsparam)
- Internationalized components: G, D, C, L, U.
These features will be implemented later, under terms of MDEV-36978.

Notable changes in the other files:

- item_func.h: adding Item_handled_func::Handler_double

- simple_parser.h: adding a number of *CONTAINER* templates
  They help to save on duplicate code when creating classes
  suitable for passing into parsing templates such as OPT, OR2C, OR3C, etc

- simple_parser.h: Adding parsing templates OR4C and OR5C

- simple_parser.h: Moving the template "OPT" towars the beginning of the file
  Rule parsing templates TOKEN, TokenChoice, AND2, OR2C, OR3C, OR4C, OR5C, LIST
  now provide a sub-class Opt, to parse its optional rule.

- simple_parser.h: Adding "explicit" to all "operator bool" definitions

- Renaming Parser_templates::TOKEN to Parser_templates::TokenParser

- Adding "explicit" to all "operator bool()" templates/classes,
  to avoid hidden implicit conversion (to int, void*, etc).

- Renaming the LIST template parameter ELEMENT to ELEMENT_PARSER,
  to make it clearer what it is for.

- Renaming the OPT template parameter RULE to RULE_PARSER,
  to make it clearer what it is for.
Sergei Golubchik
Bug#37117875 test case
Vladislav Vaintroub
MDEV-37339 errors about caching_sha2_password on server startup (WolfSSL)

With WolfSSL, the plugins is statically compiled, and enabled,
and defaults to autogenerating ssl keys, which was left unimplemented.
Thus, it spits out some [ERROR] on every startup.

Fixed by removing a couple some ifdefs. Allowed tcp_nossl to run on
Windows.

As WolfSSL is missing some APIs with FILE*, use related API that
accept BIO
, i.e
- BIO_new_file() instead of fopen()
- BIO_free instead of fclose()
- PEM_write_bio_PrivateKey() instead of PEM_write_PrivateKey()
- etc

Curiously, removing APIs with FILE*, solves another bug MDEV-37343,
where server on Windows dies with obscure message as plugins tries to use
this function. OpenSSL_Applink supposed to be official solution against
such problems, but I could not get it to work properly, no matter how
much I tried. Avoiding APIs with FILE* in first place works best
drrtuy
New getter to read Engine Independent JSON histogram buckets directly
This would allow Columnstore to leverage EI data in its cost-based and rewrite optimizer parts
Sergei Golubchik
Merge branch '11.8' into 12.0
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.
Monty
MDEV-36980 Assertion `thd->mdl_context.is_lock_owner()...fails in close_thread_table

The problem is that a few constructs are missing from atomic create table
patch that is not yet committed:

- table_creation_was_logged is now set to 1 when logging create temporary.
- Testing for BINLOG_FORMAT_STMT changed to binlog_create_tmp_table() to
  take create_tmp_table_binlog_formats value into account.
- When logging the table creation of temporary tables to the binlog, the
  source table was used instead of the newly temporary table.
Thirunarayanan Balathandayuthapani
MDEV-37192  Crash recovery after bulk load data reports corruption

Problem:
=======
- InnoDB modifies the PAGE_ROOT_AUTO_INC value on clustered index
root page. But before committing the PAGE_ROOT_AUTO_INC changes
mini-transaction, InnoDB does bulk insert operation and calculates
the page checksum and store as a part of redo log in mini-transaction.
During recovery, InnoDB fails to validate the page checksum.

- InnoDB encounters the corrupted redo log while applying
the redo log and evicts the corrupted page from buffer pool.
InnoDB releases the corrupted page lock while evicting
the corrupted page. But it fails to hold the page lock before
releasing the corrupted page.

Solution:
========
row_ins_write_autoinc(): Write persistent auto increment
value on clustered index after bulk insert operation.

recv_recover_page(): Hold the exclusive lock on the page before
releasing the corrupted page from buffer pool
Sergei Golubchik
make main.desc_index_min_max more stable

InnoDB row format estimations are approximate, cannot be
part of the result file
Ayush Gupta
Bug#34422267 - Contribution by Tencent: comment mistake in get_best_ror_intersect

Description:
The function get_best_ror_intersect is responsible for selecting
the optimal combination of ROR scans that minimize cost while
improving selectivity. It iteratively adds scans to a selected
set (S), ensuring that each addition results in improved selectivity.
If selectivity improves, the function then evaluates whether
the cost is minimized.

The comment contained some inaccuracies:
- Incorrect Selectivity Condition:
A missing parentheses caused the condition to be misinterpreted,
leading to incorrect logic. The function intends to check whether
adding a scan improves selectivity before including it in the set.

- Loop Condition Issue:
The condition for continuing the loop did not properly reduce R in
the comment which meant it was an infinite loop.

Fix:
The comment of the function is fixed addressing the issues.

The set should include the scan before comparing the
selectivity with the initial set and thus the selectivity condition
in the comment is fixed by properly enclosing the expression in
parentheses to reflect the intended logic.

Ensured that R is properly reduced in each iteration to maintain
correctness.

Change-Id: Ie197af8211a5ef05a5118a33b8b543d354475780
Raghunandan Bhat
MDEV-37054: Implement INFORMATION_SCHEMA.PARAMETERS.PARAMETER_DEFAULT column

MariaDB 11.8 and above now supports `DEFAULT` values for parameters in
stored procedures and functions. This commit introduces the
`INFORMATION_SCHEMA.PARAMETERS.PARAMETER_DEFAULT` column, which displays
these default values or `NULL` if no default is set.
Justin Jose
Bug#37117875 Binlog record error when delimiter is set to other symbols

Description:
------------
When the delimiter is set to a non-default symbol and the SQL
statement contains an unquoted semicolon (;) within a MySQL-specific
comment, the SQL executes successfully in the source database.
However, the binlog record becomes incomplete, leading to a syntax
error in the replica database.

Analysis:
------------
When the delimiter is set to a non-default symbol and an SQL
statement contains an unquoted semicolon within a MySQL-specific
comment, the client transmits the entire SQL statement, including
the MySQL-specific comment, up to the delimiter to the server.
During parsing, the server interprets the semicolon as the end of the
command while processing the comment, resulting in the execution of
a partial statement. The truncated statement is then recorded in
the binary log and propagated to the replica, leading to an error.

Fix:
------------
When the delimiter is set to a non-default symbol, treat
MySQL-specific comments containing unquoted semicolons as syntax
errors and return a parser error.

Change-Id: I00d6b4ced89e79a7350c94218bf2527553054aed
Sergei Golubchik
Connector/C 3.4.7
Sergei Golubchik
Merge branch '10.6' into 10.11
Sergei Golubchik
MDEV-37315 Assertion `!xid_state.xid_cache_element' failed in trans_xa_rollback

trying to commit a "hanging" prepared XA transaction is currently
not allowed within an another active XA transaction.

it should equally be not allowed if a current XA transaction is
in the rollback-only state.
dmitryshulga
MDEV-30645: CREATE TRIGGER FOR { STARTUP | SHUTDOWN }

Modified the sql grammar and extended the system table mysql.event
to support creation of system triggers (startup, shutdown, logon,
logoff) and ddl triggers.

The system table mysql.event is extended with three columns
`kind`, `when`, `ddl_type`. For the task MDEV-30645 only the column
`kind` is required, the other two columns are required for the tasks
  MENT-2355, MENT-2291
but since it is better to reduce a number of times the system table
is changed and as a consequences a number of upgrades to be run,
the entire set of columns is added at once.