From afc64eacc992dd9736a0284926a34d9d5124aabf Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Fri, 18 Aug 2023 07:42:06 +0400 Subject: [PATCH 1/7] MDEV-31719 Wrong result of: WHERE inet6_column IN ('','::1') The problem was earlier fixed by a patch for MDEV-27207 68403eeda320ad0831563ce09a9c4af1549fe65e and an additional cleanup patch for MDEV-27207 88dd50b80ad9624d05b72751fd6e4a2cfdb6a3fe The above patches added MTR tests for INET6. Now adding UUID specific MTR tests only. --- .../mysql-test/type_uuid/type_uuid.result | 15 +++++++++++++++ .../type_uuid/mysql-test/type_uuid/type_uuid.test | 11 +++++++++++ 2 files changed, 26 insertions(+) diff --git a/plugin/type_uuid/mysql-test/type_uuid/type_uuid.result b/plugin/type_uuid/mysql-test/type_uuid/type_uuid.result index dcbf9c5e51d..62612354f7f 100644 --- a/plugin/type_uuid/mysql-test/type_uuid/type_uuid.result +++ b/plugin/type_uuid/mysql-test/type_uuid/type_uuid.result @@ -3187,3 +3187,18 @@ SELECT * FROM t1 WHERE d >= ALL (SELECT * FROM t1); d 00000000-0000-0000-0000-111111111111 DROP TABLE t1; +# +# MDEV-31719 Wrong result of: WHERE inet6_column IN ('','::1') +# +CREATE TABLE t1 (a UUID); +INSERT INTO t1 VALUES ('00000000-0000-0000-0000-000000000000'); +SELECT * FROM t1 WHERE a IN ('','00000000-0000-0000-0000-000000000001'); +a +Warnings: +Warning 1292 Incorrect uuid value: '' +SELECT * FROM t1 WHERE a=''; +a +Warnings: +Warning 1292 Incorrect uuid value: '' +Warning 1292 Incorrect uuid value: '' +DROP TABLE t1; diff --git a/plugin/type_uuid/mysql-test/type_uuid/type_uuid.test b/plugin/type_uuid/mysql-test/type_uuid/type_uuid.test index d4e34c5a74b..0979582a69a 100644 --- a/plugin/type_uuid/mysql-test/type_uuid/type_uuid.test +++ b/plugin/type_uuid/mysql-test/type_uuid/type_uuid.test @@ -1682,3 +1682,14 @@ SELECT * FROM t1 ORDER BY d; SELECT * FROM t1 WHERE d <= ALL (SELECT * FROM t1); SELECT * FROM t1 WHERE d >= ALL (SELECT * FROM t1); DROP TABLE t1; + + +--echo # +--echo # MDEV-31719 Wrong result of: WHERE inet6_column IN ('','::1') +--echo # + +CREATE TABLE t1 (a UUID); +INSERT INTO t1 VALUES ('00000000-0000-0000-0000-000000000000'); +SELECT * FROM t1 WHERE a IN ('','00000000-0000-0000-0000-000000000001'); +SELECT * FROM t1 WHERE a=''; +DROP TABLE t1; From bf3b787e02c51928eef6653f8b3edabda08b378a Mon Sep 17 00:00:00 2001 From: Thirunarayanan Balathandayuthapani Date: Fri, 25 Aug 2023 17:25:47 +0530 Subject: [PATCH 2/7] MDEV-31835 Remove unnecessary extra HA_EXTRA_IGNORE_INSERT call - This commit is different from 10.6 commit c438284863db2ccba8a04437c941a5c8a2d9225b. Due to Commit 045757af4c301757ba449269351cc27b1691a7d6 (MDEV-24621), InnoDB does buffer and pre-sort the records for each index, and build the indexes one page at a time. Multiple large insert ignore statment aborts the server during bulk insert operation. Problem is that InnoDB merge record exceeds the page size. To avoid this scenario, InnoDB should catch too big record while buffering the insert operation itself. row_merge_buf_encode(): returns length of the encoded index record row_merge_buf_write(): Catches the DB_TOO_BIG_RECORD earlier and returns error --- include/my_base.h | 4 +--- .../suite/innodb/r/insert_into_empty,4k.rdiff | 2 ++ mysql-test/suite/innodb/t/insert_into_empty.test | 8 ++++++++ sql/ha_partition.cc | 1 - sql/sql_insert.cc | 3 --- sql/sql_table.cc | 3 --- sql/table.cc | 1 - storage/innobase/handler/ha_innodb.cc | 7 ------- storage/innobase/include/trx0trx.h | 7 +++++++ storage/innobase/row/row0merge.cc | 16 ++++++++++++---- storage/innobase/trx/trx0roll.cc | 3 +++ storage/mroonga/ha_mroonga.cpp | 3 --- 12 files changed, 33 insertions(+), 25 deletions(-) create mode 100644 mysql-test/suite/innodb/r/insert_into_empty,4k.rdiff diff --git a/include/my_base.h b/include/my_base.h index f237eb8a4d1..9a5a4e945d5 100644 --- a/include/my_base.h +++ b/include/my_base.h @@ -218,9 +218,7 @@ enum ha_extra_function { /** Start writing rows during ALTER TABLE...ALGORITHM=COPY. */ HA_EXTRA_BEGIN_ALTER_COPY, /** Finish writing rows during ALTER TABLE...ALGORITHM=COPY. */ - HA_EXTRA_END_ALTER_COPY, - /** IGNORE is being used for the insert statement */ - HA_EXTRA_IGNORE_INSERT + HA_EXTRA_END_ALTER_COPY }; /* Compatible option, to be deleted in 6.0 */ diff --git a/mysql-test/suite/innodb/r/insert_into_empty,4k.rdiff b/mysql-test/suite/innodb/r/insert_into_empty,4k.rdiff new file mode 100644 index 00000000000..baa017ecf86 --- /dev/null +++ b/mysql-test/suite/innodb/r/insert_into_empty,4k.rdiff @@ -0,0 +1,2 @@ +423a424 +> ERROR 42000: Row size too large (> 1982). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline. diff --git a/mysql-test/suite/innodb/t/insert_into_empty.test b/mysql-test/suite/innodb/t/insert_into_empty.test index ac55b9054a8..baba5a146cc 100644 --- a/mysql-test/suite/innodb/t/insert_into_empty.test +++ b/mysql-test/suite/innodb/t/insert_into_empty.test @@ -435,6 +435,14 @@ CREATE TABLE t1 (pk int primary key, c01 text, c02 text, c03 text, SET GLOBAL INNODB_DEFAULT_ROW_FORMAT= COMPACT; --replace_result 1982 8126 4030 8126 ALTER TABLE t1 FORCE; +let $page_size= `SELECT @@innodb_page_size`; +let $error_code = 0; + +if ($page_size == 4096) { + let $error_code = ER_TOO_BIG_ROWSIZE; +} + +--error $error_code INSERT IGNORE INTO t1 VALUES (1, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107)), (2, REPEAT('x',4805), REPEAT('t',2211), REPEAT('u',974), REPEAT('e',871), REPEAT('z',224), REPEAT('j',978), REPEAT('n',190), REPEAT('t',888), REPEAT('x',32768), REPEAT('e',968), REPEAT('b',913), REPEAT('x',12107)); diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 40cf7cd9b5e..c171f505743 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -9479,7 +9479,6 @@ int ha_partition::extra(enum ha_extra_function operation) case HA_EXTRA_STARTING_ORDERED_INDEX_SCAN: case HA_EXTRA_BEGIN_ALTER_COPY: case HA_EXTRA_END_ALTER_COPY: - case HA_EXTRA_IGNORE_INSERT: DBUG_RETURN(loop_partitions(extra_cb, &operation)); default: { diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 3c325409473..886c1300d25 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2210,9 +2210,6 @@ int write_record(THD *thd, TABLE *table, COPY_INFO *info, select_result *sink) goto after_trg_or_ignored_err; } - /* Notify the engine about insert ignore operation */ - if (info->handle_duplicates == DUP_ERROR && info->ignore) - table->file->extra(HA_EXTRA_IGNORE_INSERT); after_trg_n_copied_inc: info->copied++; thd->record_first_successful_insert_id_in_cur_stmt(table->file->insert_id_for_cur_row); diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 2ba233d5286..5e58c0d0f87 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -11841,9 +11841,6 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, } else { - /* In case of alter ignore, notify the engine about it. */ - if (ignore) - to->file->extra(HA_EXTRA_IGNORE_INSERT); DEBUG_SYNC(thd, "copy_data_between_tables_before"); found_count++; mysql_stage_set_work_completed(thd->m_stage_progress_psi, found_count); diff --git a/sql/table.cc b/sql/table.cc index bdfd9ff2c84..a906719bbe8 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -10088,7 +10088,6 @@ bool TR_table::update(ulonglong start_id, ulonglong end_id) table->file->print_error(error, MYF(0)); /* extra() is used to apply the bulk insert operation on mysql/transaction_registry table */ - table->file->extra(HA_EXTRA_IGNORE_INSERT); return error; } diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index e83ed4b1250..f9b9acd6c57 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -15679,13 +15679,6 @@ ha_innobase::extra( case HA_EXTRA_RESET_STATE: reset_template(); trx->duplicates = 0; - /* fall through */ - case HA_EXTRA_IGNORE_INSERT: - /* HA_EXTRA_IGNORE_INSERT is very similar to - HA_EXTRA_IGNORE_DUP_KEY, but with one crucial difference: - we want !trx->duplicates for INSERT IGNORE so that - row_ins_duplicate_error_in_clust() will acquire a - shared lock instead of an exclusive lock. */ stmt_boundary: trx->bulk_insert_apply(); trx->end_bulk_insert(*m_prebuilt->table); diff --git a/storage/innobase/include/trx0trx.h b/storage/innobase/include/trx0trx.h index 152e794ac6a..770d80c48e7 100644 --- a/storage/innobase/include/trx0trx.h +++ b/storage/innobase/include/trx0trx.h @@ -532,6 +532,13 @@ public: { return bulk_store && is_bulk_insert(); } + + /** Free bulk insert operation */ + void clear_bulk_buffer() + { + delete bulk_store; + bulk_store= nullptr; + } }; /** Collection of persistent tables and their first modification diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc index 32e61e65ba1..abfa79a59d9 100644 --- a/storage/innobase/row/row0merge.cc +++ b/storage/innobase/row/row0merge.cc @@ -281,10 +281,10 @@ row_merge_insert_index_tuples( ut_stage_alter_t* stage= nullptr, merge_file_t* blob_file= nullptr); -/******************************************************//** -Encode an index record. */ +/** Encode an index record. +@return size of the record */ static MY_ATTRIBUTE((nonnull)) -void +ulint row_merge_buf_encode( /*=================*/ byte** b, /*!< in/out: pointer to @@ -315,6 +315,7 @@ row_merge_buf_encode( entry->fields, n_fields); *b += size; + return size; } static MY_ATTRIBUTE((malloc, nonnull)) @@ -1175,7 +1176,13 @@ dberr_t row_merge_buf_write(const row_merge_buf_t *buf, } } - row_merge_buf_encode(&b, index, entry, n_fields); + ulint rec_size= row_merge_buf_encode( + &b, index, entry, n_fields); + if (blob_file && rec_size > srv_page_size) { + err = DB_TOO_BIG_RECORD; + goto func_exit; + } + ut_ad(b < &block[srv_sort_buf_size]); DBUG_LOG("ib_merge_sort", @@ -5390,6 +5397,7 @@ bulk_rollback: if (t.second.get_first() < low_limit) low_limit= t.second.get_first(); delete t.second.bulk_store; + t.second.bulk_store= nullptr; } } trx_savept_t bulk_save{low_limit}; diff --git a/storage/innobase/trx/trx0roll.cc b/storage/innobase/trx/trx0roll.cc index 99cf1364192..f21ba4229b6 100644 --- a/storage/innobase/trx/trx0roll.cc +++ b/storage/innobase/trx/trx0roll.cc @@ -146,7 +146,10 @@ inline void trx_t::rollback_low(trx_savept_t *savept) trx_mod_tables_t::iterator j= i++; ut_ad(j->second.valid()); if (j->second.rollback(limit)) + { + j->second.clear_bulk_buffer(); mod_tables.erase(j); + } else if (!apply_online_log) apply_online_log= j->first->is_active_ddl(); } diff --git a/storage/mroonga/ha_mroonga.cpp b/storage/mroonga/ha_mroonga.cpp index a0eda4f4fce..f5a48ff17cb 100644 --- a/storage/mroonga/ha_mroonga.cpp +++ b/storage/mroonga/ha_mroonga.cpp @@ -596,9 +596,6 @@ static const char *mrn_inspect_extra_function(enum ha_extra_function operation) inspected = "HA_EXTRA_NO_AUTOINC_LOCKING"; break; #endif - case HA_EXTRA_IGNORE_INSERT: - inspected = "HA_EXTRA_IGNORE_INSERT"; - break; } return inspected; } From f4cec369a392c8a6056207012992ad4a5639965a Mon Sep 17 00:00:00 2001 From: Ruoyu Zhong Date: Sat, 19 Aug 2023 22:48:16 +0800 Subject: [PATCH 3/7] MDEV-31963 cmake: fix libfmt usage `fmt::detail::make_arg` does not accept temporaries, so the code snippet checking system libfmt needs to be adjusted. Signed-off-by: Ruoyu Zhong --- cmake/libfmt.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/libfmt.cmake b/cmake/libfmt.cmake index 7eaa0dfa012..70b6a07216f 100644 --- a/cmake/libfmt.cmake +++ b/cmake/libfmt.cmake @@ -33,8 +33,9 @@ MACRO (CHECK_LIBFMT) #include #include int main() { + int answer= 42; fmt::format_args::format_arg arg= - fmt::detail::make_arg(42); + fmt::detail::make_arg(answer); std::cout << fmt::vformat(\"The answer is {}.\", fmt::format_args(&arg, 1)); }" HAVE_SYSTEM_LIBFMT) From cd5808eb8da13c5626d4bdeb452cef6ada29cb1d Mon Sep 17 00:00:00 2001 From: Ruoyu Zhong Date: Sun, 20 Aug 2023 19:43:57 +0800 Subject: [PATCH 4/7] MDEV-31963 Fix libfmt usage in SFORMAT `fmt::detail::make_arg` does not accept temporaries. Make it happy by storing the format arg values in a temporary array first. Signed-off-by: Ruoyu Zhong --- sql/item_strfunc.cc | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 007e2bbc16f..4bbf36ec1cf 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1407,11 +1407,24 @@ namespace fmt { */ String *Item_func_sformat::val_str(String *res) { + /* + A union that stores a numeric format arg value. + fmt::detail::make_arg does not accept temporaries, so all of its numeric + args are temporarily stored in the fmt_args array. + See: https://github.com/fmtlib/fmt/issues/3596 + */ + union Format_arg_store { + longlong val_int; + float val_float; + double val_double; + }; + DBUG_ASSERT(fixed()); - using ctx= fmt::format_context; - String *fmt_arg= NULL; - String *parg= NULL; - fmt::format_args::format_arg *vargs= NULL; + using ctx= fmt::format_context; + String *fmt_arg= NULL; + String *parg= NULL; + fmt::format_args::format_arg *vargs= NULL; + Format_arg_store *fmt_args= NULL; null_value= true; if (!(fmt_arg= args[0]->val_str(res))) @@ -1420,25 +1433,39 @@ String *Item_func_sformat::val_str(String *res) if (!(vargs= new fmt::format_args::format_arg[arg_count - 1])) return NULL; + if (!(fmt_args= new Format_arg_store[arg_count - 1])) + { + delete [] vargs; + return NULL; + } + /* Creates the array of arguments for vformat */ for (uint carg= 1; carg < arg_count; carg++) { switch (args[carg]->result_type()) { case INT_RESULT: - vargs[carg-1]= fmt::detail::make_arg(args[carg]->val_int()); + fmt_args[carg-1].val_int= args[carg]->val_int(); + vargs[carg-1]= fmt::detail::make_arg(fmt_args[carg-1].val_int); break; case DECIMAL_RESULT: // TODO case REAL_RESULT: if (args[carg]->field_type() == MYSQL_TYPE_FLOAT) - vargs[carg-1]= fmt::detail::make_arg((float)args[carg]->val_real()); + { + fmt_args[carg-1].val_float= (float)args[carg]->val_real(); + vargs[carg-1]= fmt::detail::make_arg(fmt_args[carg-1].val_float); + } else - vargs[carg-1]= fmt::detail::make_arg(args[carg]->val_real()); + { + fmt_args[carg-1].val_double= args[carg]->val_real(); + vargs[carg-1]= fmt::detail::make_arg(fmt_args[carg-1].val_double); + } break; case STRING_RESULT: if (!(parg= args[carg]->val_str(&val_arg[carg-1]))) { delete [] vargs; + delete [] fmt_args; return NULL; } vargs[carg-1]= fmt::detail::make_arg(*parg); @@ -1448,6 +1475,7 @@ String *Item_func_sformat::val_str(String *res) default: DBUG_ASSERT(0); delete [] vargs; + delete [] fmt_args; return NULL; } } @@ -1471,6 +1499,7 @@ String *Item_func_sformat::val_str(String *res) null_value= true; } delete [] vargs; + delete [] fmt_args; return null_value ? NULL : res; } From cb384d0d04bed63b714d6d7b02d26b19d22740cc Mon Sep 17 00:00:00 2001 From: Thirunarayanan Balathandayuthapani Date: Tue, 29 Aug 2023 10:37:08 +0530 Subject: [PATCH 5/7] MDEV-32008 auto_increment value on table increments by one after restart - This issue caused by commit 4700f2ac70f8c79f2ac1968b6b59d18716f492bf(MDEV-30796) During bulk insert operation, InnoDB wrongly stores the next autoincrement value as current autoincrement value. So update the current autoincrement value rather than next auto increment value. --- .../innodb/r/insert_into_empty_notembedded.result | 15 +++++++++++++++ .../innodb/t/insert_into_empty_notembedded.test | 3 +++ storage/innobase/row/row0merge.cc | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/innodb/r/insert_into_empty_notembedded.result b/mysql-test/suite/innodb/r/insert_into_empty_notembedded.result index 789c17dfb20..585a2e6c725 100644 --- a/mysql-test/suite/innodb/r/insert_into_empty_notembedded.result +++ b/mysql-test/suite/innodb/r/insert_into_empty_notembedded.result @@ -28,6 +28,7 @@ DROP DATABASE db1; # # End of 10.6 tests # +SET foreign_key_checks=0, unique_checks=0; # # MDEV-30796 Auto_increment values not updated after bulk # insert operation @@ -35,7 +36,21 @@ DROP DATABASE db1; CREATE TABLE t1(f1 INT NOT NULL AUTO_INCREMENT, f2 INT NOT NULL, PRIMARY KEY(f1))ENGINE=InnoDB; INSERT INTO t1 VALUES(1, 2), (25, 3), (2, 4); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL AUTO_INCREMENT, + `f2` int(11) NOT NULL, + PRIMARY KEY (`f1`) +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci # restart +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL AUTO_INCREMENT, + `f2` int(11) NOT NULL, + PRIMARY KEY (`f1`) +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci INSERT INTO t1(f2) VALUES(5); SELECT max(f1) FROM t1; max(f1) diff --git a/mysql-test/suite/innodb/t/insert_into_empty_notembedded.test b/mysql-test/suite/innodb/t/insert_into_empty_notembedded.test index 0caeea59aae..078ca0205bd 100644 --- a/mysql-test/suite/innodb/t/insert_into_empty_notembedded.test +++ b/mysql-test/suite/innodb/t/insert_into_empty_notembedded.test @@ -42,6 +42,7 @@ DROP DATABASE db1; --echo # End of 10.6 tests --echo # +SET foreign_key_checks=0, unique_checks=0; --echo # --echo # MDEV-30796 Auto_increment values not updated after bulk --echo # insert operation @@ -49,7 +50,9 @@ DROP DATABASE db1; CREATE TABLE t1(f1 INT NOT NULL AUTO_INCREMENT, f2 INT NOT NULL, PRIMARY KEY(f1))ENGINE=InnoDB; INSERT INTO t1 VALUES(1, 2), (25, 3), (2, 4); +SHOW CREATE TABLE t1; --source include/restart_mysqld.inc +SHOW CREATE TABLE t1; INSERT INTO t1(f2) VALUES(5); SELECT max(f1) FROM t1; DROP TABLE t1; diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc index abfa79a59d9..b6c3feb786f 100644 --- a/storage/innobase/row/row0merge.cc +++ b/storage/innobase/row/row0merge.cc @@ -5344,7 +5344,7 @@ func_exit: if (err != DB_SUCCESS) trx->error_info= index; else if (index->is_primary() && table->persistent_autoinc) - btr_write_autoinc(index, table->autoinc); + btr_write_autoinc(index, table->autoinc - 1); err= btr_bulk.finish(err); return err; } From 0b6de3d1ceb9a8943d62f0f6d7bf26363189bcb1 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 29 Aug 2023 11:24:16 +0200 Subject: [PATCH 6/7] avoid "'sh' is not recognized..." error in mtr on windows --- plugin/hashicorp_key_management/mysql-test/vault/suite.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin/hashicorp_key_management/mysql-test/vault/suite.pm b/plugin/hashicorp_key_management/mysql-test/vault/suite.pm index 1d78985f363..fce1737311d 100644 --- a/plugin/hashicorp_key_management/mysql-test/vault/suite.pm +++ b/plugin/hashicorp_key_management/mysql-test/vault/suite.pm @@ -4,13 +4,13 @@ package My::Suite::Vault; use strict; -return "Hashicorp Vault key management utility not found" - unless `sh -c "command -v vault"`; - return "You need to set the value of the VAULT_ADDR variable" unless $ENV{VAULT_ADDR}; return "You need to set the value of the VAULT_TOKEN variable" unless $ENV{VAULT_TOKEN}; +return "Hashicorp Vault key management utility not found" + unless `sh -c "command -v vault"`; + bless {}; From 11c69177e9eebaab65984ee06e7b2873b3067d5f Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sun, 24 Sep 2023 19:32:04 +0200 Subject: [PATCH 7/7] fix galera.galera_as_slave_gtid_myisam for 10.10+ --- mysql-test/suite/galera/t/galera_as_slave_gtid_myisam.cnf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/suite/galera/t/galera_as_slave_gtid_myisam.cnf b/mysql-test/suite/galera/t/galera_as_slave_gtid_myisam.cnf index d3f33bd1427..4944c9a90ce 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_gtid_myisam.cnf +++ b/mysql-test/suite/galera/t/galera_as_slave_gtid_myisam.cnf @@ -4,4 +4,4 @@ log-bin=mysqld-bin log-slave-updates binlog-format=ROW -wsrep-replicate-myisam=ON +wsrep_mode=REPLICATE_MYISAM