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 (Holyfoot) Botchkov
MDEV-40394 XML schema fails on self-referencing type.

Copy XMLSchema_user_type information when the type is used recursively.
Copies that were once created are stored in m_c_free and then reused
later to avoid memory issues.
Brandon Nesterenko
MDEV-38796 Replace mysql_bin_log.is_open with binlog_ready()

Addresses TODO

    - Remove all testing of mysql_bin_log.is_open(). Instead test for
      binlog_ready() in main code and add testing of is_open() when
      trying to commit the binary log.  This is needed as currently
      mysql_bin_log.is_open() is tested without a mutex which makes
      it unreliable.

And also adds tests for the binlog closing for various types of
statements in-between a thd->binlog_ready() check and the commit-time
acquiring of mysql_bin_log.LOCK_log.

Still TODO from the above request:
* WSREP related mysql_bin_log.is_open() changes as a part of MDEV-38865
Sergei Golubchik
MDEV-40362 #mysql50# mixes up with table names in the table cache and on disk

1.
Only allow #mysql50# prefix on table names that
can not be decoded from a file name to a table name.
It is an error to put this prefix on a name that can be accessed
as a valid table name without a prefix. Use `t1` not `#mysql50#t1`,
use `a-b` not `#mysql50#a@002db`.

2.
Don't allow creation of new tables with the #mysql50# prefix.

Except when in SQLCOM_ALTER_DB_UPGRADE - main.upgrade test runs
ALTER DATABASE `#mysql50#mysqltest-1` UPGRADE DATA DIRECTORY NAME;
This command moves tables from the old db name to the new db name,
and some of these tables also have old #mysql50# names.

3.
Also don't allow to create such databases, views, partitions,
subpartitions, sequences, triggers.
Sergei Golubchik
MDEV-40409 ST_GeomFromText stack overrun on deeply nested GeometryCollection
forkfun
Merge branch 10.6 into 10.11
Brandon Nesterenko
MDEV-38796 Test updates for forced row logging

ER_BINLOG_STMT_MODE_AND_ROW_ENGINE is no longer an error, but rather, we
temporarily force ROW logging:

@@ -7259,7 +7262,15 @@ int THD::decide_logging_format(TABLE_LIST
*tables)
                              wsrep_cs().mode() ==
                              wsrep::client_state::m_local),1))
          {
-            my_error((error= ER_BINLOG_STMT_MODE_AND_ROW_ENGINE), MYF(0), "");
+            if (is_current_stmt_binlog_format_stmt())
+            {
+              my_printf_error(ER_BINLOG_STMT_MODE_AND_ROW_ENGINE,
+                              "Statement cannot be logged as STATEMENT as at "
+                              "least one table is limited to row-based logging."
+                              " Switching temporarly to row format",
+                              MYF(ME_NOTE));
+              set_current_stmt_binlog_format_row();
+            }
          }
Tests are updated that relied on this behavior.
Brandon Nesterenko
MDEV-38796 Update BINLOG_STATE_FILTER at DB change time

Addresses TODO

    - Update binlog_state with BINLOG_STATE_FILTER only when database or filter
      is changed.  This means we do not have to call binlog_filter->db_ok() for
      every statement in decide_binlog_format().

The option BINLOG_STATE_FILTER only applies to filtering the current
database. The name seems over-reaching, and would likely lead to
confusion. Renamed to BINLOG_STATE_FILTER_DB to be clear the option only
applies to the database.
Sergei Golubchik
MDEV-40470 GRANT PROXY with empty password incorrectly checks grantor's privileges

empty password and empty plugin name don't mean "authentication
was not specified", they mean "empty authentication was specified"
Sergei Golubchik
MDEV-40311 also fix mariadb-show and mariadb-convert-table-format
Sergei Golubchik
MDEV-40395 MyISAM/Aria silently truncate extensions from filenames, if too long

* move all common fn_format flags that mi_create/maria_create use
  into one single #define.
* simplify (MY_APPEND_EXT is redundant and MY_REPLACE_EXT does nothing
  when no . is present in the filename)
* use MY_SAFE_PATH everywhere (return NULL if too long)
* set my_errno= ENAMETOOLONG on too long
* abort mi_create/maria_create if returned NULL
Sergei Golubchik
cleanup: silence (wrong) maybe-uninitialized warning

gcc 15.2.1 with -Og:

filamdbf.cpp:355:33: error: 'tfp' may be used uninitialized [-Werror=maybe-uninitialized]
  355 |            } else if (fread(tfp, HEADLEN, 1, infile) != 1) {
      |                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
bsrikanth-mariadb
MDEV-40388: sequence.simple fails on replay

When the recording is enabled for the query,
explain select * from seq_15_to_1_step_12345;
it recorded the table context having a DDL definition as: -

CREATE TABLE `seq_15_to_1_step_12345` (
    ->  `seq` bigint(20) unsigned NOT NULL,
    ->  PRIMARY KEY (`seq`)
    -> ) ENGINE=SEQUENCE DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;

Now, when that context is replayed, the DDL statement is executed.
But, we cannot create such the table and instead it errors out saying
ERROR 1050 (42S01): Table 'seq_15_to_1_step_12345' already exists.

The problem is that,
sequence table was determined using tbl->table->s->sequence. The
intention was to not record sequence table information. However, the
check was only partially correct.

Instead, we need an enhanced condition like: -
if (!tbl->is_view() && tbl->table)
{
  if (tbl->table->s->sequence ||
      lex_string_eq(hton_name(tbl->table->s->db_type()),
                    STRING_WITH_LEN("SEQUENCE")))
  {
    continue;
  }
}

This makes both the following kinds of queries on sequences, to not
record any table contexts on them: -
1. explain select * from seq_15_to_1_step_12345;
2. create sequence s1;
  EXPLAIN select * from s1;
Georg Richter
Fix copy/paste error, introduced by rev. a7072b5bf0907c38bacf928ea3ee839314e379c6
forkfun
Merge branch 10.6 into 10.11
Sergei Golubchik
MDEV-40358 symlinked table name is not encoded

encode table name in file name in DATA/INDEX DIRECTORY
Sergei Golubchik
cleanup: silence (wrong) maybe-uninitialized warning

gcc 15.2.1 with -Og:

filamdbf.cpp:355:33: error: 'tfp' may be used uninitialized [-Werror=maybe-uninitialized]
  355 |            } else if (fread(tfp, HEADLEN, 1, infile) != 1) {
      |                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
Sergei Golubchik
MDEV-40484 ambiguous view frm parsing when username includes \n

escape user and host names in view frm

in fact, there is no reason to write any field as is, unescaped,
so let's remove FILE_OPTIONS_STRING in the next release
Brandon Nesterenko
MDEV-38796 Remove *_binlog_local_stmt_filter()

TODO Addressed:
  - Remove clear/reset xxx_binlog_local_stmt_filter() as this is now handled
      by binlog_state.
ParadoxV5
MDEV-40298 Use-After-Free when SQL Thread stops in the middle of SHOW SLAVE STATUS

MDEV-36287 acknowledged that SHOW SLAVE STATUS needed to acquire a mutex
lock before accessing the SQL Thread’s THD, as otherwise it may access
invalid memory if a concurrent STOP SLAVE deletes the THD.
But it missed that the SQL Thread’s mutex is `mi->rli.run_lock`,
not `mi->run_lock`, so the bug was still not fixed.

This commit fills in the oversight by acquiring the correct
corresponding lock for each of `Slave_IO_State` & `Slave_SQL_State`.

Reviewed-by: Kristian Nielsen <[email protected]>
forkfun
Merge branch 10.6 into 10.11
Rucha Deodhar
MDEV-17943: Unfortunate error code/message upon SET DEFAULT ROLE FOR

Analysis:
Wrong error code

Fix:
Used the correct error code
Sergei Golubchik
MDEV-40329 Binary_string::qs_append(char): Assertion `str_length + (uint32) (1) <= Alloced_length' failed in AsText

Geometry::as_wkt() didn't take into account bytes written into the
result string in the recusrive call of get_data_as_wkt().
Gis_geometry_collection::get_data_as_wkt() didn't reserve space at all.
Thus nested geometry collections could overflow the buffer.
Rucha Deodhar
MDEV-31477: Inconsistent handling while fetching values in json

Analysis:
When we get value in json_value(), if any error occurs while scanning the
json, it is not reported. Only true is returned.
Fix:
Report error along with returning true (error)
Jan Lindström
MDEV-40056 - Galera Dynamic Variables Susceptible to RCEs

Make check stronger and require OpenSSL version > 1.1.1
for test case.
forkfun
Merge branch 10.6 into 10.11
Brandon Nesterenko
MDEV-38796 Remove silent option from mysql_create_db_internal

TODO addressed
    - Remove 'silent' option from mysql_create_db_internal and instead use
      tmp_disable_binlog() / reenable_binlog()
Georg Richter
Fix maxcolumns test
ParadoxV5
MDEV-40298 Use-After-Free when SQL Thread stops in the middle of SHOW SLAVE STATUS

MDEV-36287 acknowledged that SHOW SLAVE STATUS needed to acquire a mutex
lock before accessing the SQL Thread’s THD, as otherwise it may access
invalid memory if a concurrent STOP SLAVE deletes the THD.
But it missed that the SQL Thread’s mutex is `mi->rli.run_lock`,
not `mi->run_lock`, so the bug was still not fixed.

This commit fills in the oversight by acquiring the correct
corresponding lock for each of `Slave_IO_State` & `Slave_SQL_State`.

Reviewed-by: Kristian Nielsen <[email protected]>
Brandon Nesterenko
MDEV-38796: Fix Windows compiler error
Sergei Golubchik
MDEV-30942 MSAN_OPTIONS=poison_in_dtor=1 causes failures in free_root()

Materialized_cursor included MEM_ROOT where it itself (Materialized_cursor)
was allocated. Materialized_cursor inherits from Server_side_cursor,
and Server_side_cursor::operator delete frees this mem_root.

This offends MSAN with poison_in_dtor, because when Materialized_cursor
is destroyed, MEM_ROOT is poisoned and Server_side_cursor::operator delete
accesses memory it really shouldn't.

Fix:
* MEM_ROOT is moved into Server_side_cursor. Materialized_cursor is
  the only class inheriting from it, so nobody is affected.
* operator delete is replaced with a function cdestroy() which
  saves the MEM_ROOT, deletes the object, then frees the root.
* cannot close() from ~Materialized_cursor anymore, main_mem_root
  should be copied before the destruction
rusher
[CONC-786] add infer to CI
Sergei Golubchik
MDEV-40328 ASAN error on malformed WKB multipolygon

before `data+= WKB_HEADER_SIZE` verify that there's enough data.

rewrite this line in Gis_multi_line_string::get_mbr to make clear
that it does not need this check.
Rucha Deodhar
MDEV-25099: Inconsistent error upon updating read-only table with
ROW_FORMAT=COMPRESSED

Analysis:

Warning level is incorrect
Fix:
Changed to correct warning level
ParadoxV5
MDEV-40298 Use-After-Free when SQL Thread stops in the middle of SHOW SLAVE STATUS

MDEV-36287 acknowledged that SHOW SLAVE STATUS needed to acquire a mutex
lock before accessing the SQL Thread’s THD, as otherwise it may access
invalid memory if a concurrent STOP SLAVE deletes the THD.
But it missed that the SQL Thread’s mutex is `mi->rli.run_lock`,
not `mi->run_lock`, so the bug was still not fixed.

This commit fills in the oversight by acquiring the correct
corresponding lock for each of `Slave_IO_State` & `Slave_SQL_State`.

Reviewed-by: Kristian Nielsen <[email protected]>
Sergei Golubchik
MDEV-40426 CONNECT writes unvalidated data from remote server into fixed-len buffer

use size-bounded scanf formats
Sergei Golubchik
cleanup: main.drop test
Georg Richter
Added missing .inferconfig
Sergei Golubchik
MDEV-40360 CONNECT REST can pass arguments to curl via HTTP parameter

tell curl to not try to interpret url as a parameter