From 8f771b28a152b95abc0b1c5ab22fa62b09f7781b Mon Sep 17 00:00:00 2001 From: Monty Date: Thu, 4 Sep 2025 17:05:52 +0300 Subject: [PATCH 01/43] MDEV-34914 maria.bulk_insert_crash fails on s390x (10.6+, Debug) This was caused by a wrong handling of bitmaps in copy_not_changed_fields() that did not work on big endian machines. This bug caused recovery of Aria files to fail on big endian machines like s390x or Sparc. This issue was noticed by the bulk_insert_crash.test on the s390x builder. --- mysql-test/suite/maria/bulk_insert_crash.result | 3 +++ mysql-test/suite/maria/bulk_insert_crash.test | 2 ++ storage/maria/aria_read_log.c | 1 + storage/maria/ma_blockrec.c | 12 +++--------- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/mysql-test/suite/maria/bulk_insert_crash.result b/mysql-test/suite/maria/bulk_insert_crash.result index 0cf5a474939..c827a579cfb 100644 --- a/mysql-test/suite/maria/bulk_insert_crash.result +++ b/mysql-test/suite/maria/bulk_insert_crash.result @@ -1,6 +1,9 @@ create table t1 (a int primary key, b int, c int, unique key(b), key(c)) engine=aria transactional=1; insert into t1 values (1000,1000,1000); insert into t1 select seq,seq+100, seq+200 from seq_1_to_10; +select sum(a),sum(b),sum(c) from t1; +sum(a) sum(b) sum(c) +1055 2055 3055 SET GLOBAL debug_dbug="+d,crash_end_bulk_insert"; REPLACE into t1 select seq+20,seq+95, seq + 300 from seq_1_to_10; ERROR HY000: Lost connection to server during query diff --git a/mysql-test/suite/maria/bulk_insert_crash.test b/mysql-test/suite/maria/bulk_insert_crash.test index 04f3a148ad4..30fbd802fed 100644 --- a/mysql-test/suite/maria/bulk_insert_crash.test +++ b/mysql-test/suite/maria/bulk_insert_crash.test @@ -18,6 +18,8 @@ create table t1 (a int primary key, b int, c int, unique key(b), key(c)) engine= insert into t1 values (1000,1000,1000); insert into t1 select seq,seq+100, seq+200 from seq_1_to_10; +select sum(a),sum(b),sum(c) from t1; + # Insert into t1 with batch insert where we get a rows replaced after # a few sucessful inserts diff --git a/storage/maria/aria_read_log.c b/storage/maria/aria_read_log.c index cfb592561c3..eec2cc10483 100644 --- a/storage/maria/aria_read_log.c +++ b/storage/maria/aria_read_log.c @@ -199,6 +199,7 @@ err: /* don't touch anything more, in case we hit a bug */ fprintf(stderr, "%s: FAILED\n", my_progname_short); free_tmpdir(&maria_chk_tmpdir); + my_hash_free(&tables_to_redo); free_defaults(default_argv); exit(1); } diff --git a/storage/maria/ma_blockrec.c b/storage/maria/ma_blockrec.c index 561cc324ed1..d8cfca1bcfc 100644 --- a/storage/maria/ma_blockrec.c +++ b/storage/maria/ma_blockrec.c @@ -953,14 +953,13 @@ void copy_not_changed_fields(MARIA_HA *info, MY_BITMAP *changed_fields, uchar *to, uchar *from) { MARIA_COLUMNDEF *column, *end_column; - uchar *bitmap= (uchar*) changed_fields->bitmap; MARIA_SHARE *share= info->s; - uint bit= 1; + uint bit= 0; for (column= share->columndef, end_column= column+ share->base.fields; - column < end_column; column++) + column < end_column; column++, bit++) { - if (!(*bitmap & bit)) + if (!bitmap_is_set(changed_fields, bit)) { uint field_length= column->length; if (column->type == FIELD_VARCHAR) @@ -972,11 +971,6 @@ void copy_not_changed_fields(MARIA_HA *info, MY_BITMAP *changed_fields, } memcpy(to + column->offset, from + column->offset, field_length); } - if ((bit= (bit << 1)) == 256) - { - bitmap++; - bit= 1; - } } } From 0ec675ce89f6c909422412f47e2c25ac5f01f89d Mon Sep 17 00:00:00 2001 From: Monty Date: Wed, 28 May 2025 14:43:35 +0300 Subject: [PATCH 02/43] Fixed compiler issues when compiling with UBSAN Updated also BUILD/compile-pentium64-ubsan to use -Wno-unused-parameter to get rid of compiler warnings --- BUILD/compile-pentium64-ubsan | 2 +- sql/table.h | 4 ++-- sql/wsrep_thd.cc | 2 +- storage/innobase/include/lock0priv.inl | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/BUILD/compile-pentium64-ubsan b/BUILD/compile-pentium64-ubsan index 538b5e884cf..cffcc8a371a 100755 --- a/BUILD/compile-pentium64-ubsan +++ b/BUILD/compile-pentium64-ubsan @@ -31,7 +31,7 @@ path=`dirname $0` # the destination # -extra_flags="$pentium64_cflags $debug_cflags -fsanitize=undefined -DWITH_UBSAN -Wno-conversion -Wno-uninitialized" +extra_flags="$pentium64_cflags $debug_cflags -fsanitize=undefined -DWITH_UBSAN -Wno-conversion -Wno-uninitialized -Wno-unused-parameter" extra_configs="$pentium_configs $debug_configs -DWITH_UBSAN=ON -DMYSQL_MAINTAINER_MODE=NO --without-spider" . "$path/FINISH.sh" diff --git a/sql/table.h b/sql/table.h index cb9c4aadc9a..ff17b7d73d2 100644 --- a/sql/table.h +++ b/sql/table.h @@ -1964,12 +1964,12 @@ public: DBUG_ASSERT(fields_nullable); DBUG_ASSERT(field < n_fields); size_t bit= size_t{field} + referenced * n_fields; -#if defined __GNUC__ && !defined __clang__ && __GNUC__ < 6 +#if defined __GNUC__ && !defined __clang__ && __GNUC__ < 8 # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wconversion" #endif fields_nullable[bit / 8]|= static_cast(1 << (bit % 8)); -#if defined __GNUC__ && !defined __clang__ && __GNUC__ < 6 +#if defined __GNUC__ && !defined __clang__ && __GNUC__ < 8 # pragma GCC diagnostic pop #endif } diff --git a/sql/wsrep_thd.cc b/sql/wsrep_thd.cc index 8e83aa95538..de91c960222 100644 --- a/sql/wsrep_thd.cc +++ b/sql/wsrep_thd.cc @@ -368,7 +368,7 @@ void wsrep_abort_thd(THD *bf_thd, /* Note that when you use RSU node is desynced from cluster, thus WSREP(thd) might not be true. */ - if ((WSREP(bf_thd) + if ((WSREP_NNULL(bf_thd) || ((WSREP_ON || bf_thd->variables.wsrep_OSU_method == WSREP_OSU_RSU) && wsrep_thd_is_toi(bf_thd)) || bf_thd->lex->sql_command == SQLCOM_KILL) diff --git a/storage/innobase/include/lock0priv.inl b/storage/innobase/include/lock0priv.inl index 3c8ec01367b..4db579b659e 100644 --- a/storage/innobase/include/lock0priv.inl +++ b/storage/innobase/include/lock0priv.inl @@ -83,12 +83,12 @@ lock_rec_set_nth_bit( byte_index = i / 8; bit_index = i % 8; -#if defined __GNUC__ && !defined __clang__ && __GNUC__ < 6 +#if defined __GNUC__ && !defined __clang__ && __GNUC__ < 8 # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wconversion" /* GCC 4 and 5 need this here */ #endif ((byte*) &lock[1])[byte_index] |= static_cast(1 << bit_index); -#if defined __GNUC__ && !defined __clang__ && __GNUC__ < 6 +#if defined __GNUC__ && !defined __clang__ && __GNUC__ < 8 # pragma GCC diagnostic pop #endif #ifdef SUX_LOCK_GENERIC From f65dda628d5cf75dec31530a4fab94cc139b45c3 Mon Sep 17 00:00:00 2001 From: Monty Date: Wed, 28 May 2025 15:53:58 +0300 Subject: [PATCH 03/43] Fixed that one can compile MariaDB with ASAN with -Wframe-larger-than=16384 Added PRAGMA_DISABLE_CHECK_STACK_FRAME around some functions --- client/mysqltest.cc | 10 ++++++++- mysys/mf_keycache.c | 3 +++ sql/sql_table.cc | 3 +++ sql/sys_vars.cc | 2 ++ storage/innobase/handler/i_s.cc | 2 ++ storage/innobase/log/log0sync.cc | 5 +++++ storage/innobase/page/page0page.cc | 4 ++++ storage/innobase/row/row0import.cc | 4 ++++ storage/innobase/srv/srv0start.cc | 9 ++++++++ storage/maria/ma_loghandler.c | 3 +++ storage/mroonga/vendor/groonga/lib/db.c | 3 ++- storage/mroonga/vendor/groonga/lib/expr.c | 5 +++++ storage/mroonga/vendor/groonga/lib/ii.c | 26 +++++++++++++++++++++++ 13 files changed, 77 insertions(+), 2 deletions(-) diff --git a/client/mysqltest.cc b/client/mysqltest.cc index 110622fa76f..57368654ec9 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -55,6 +55,7 @@ #endif #include #include +#include #include // ORACLE_WELCOME_COPYRIGHT_NOTICE @@ -78,7 +79,7 @@ static my_bool non_blocking_api_enabled= 0; #define MAX_DELIMITER_LENGTH 16 #define DEFAULT_MAX_CONN 64 -#define DIE_BUFF_SIZE 15*1024 +#define DIE_BUFF_SIZE 64*1024 #define RESULT_STRING_INIT_MEM 2048 #define RESULT_STRING_INCREMENT_MEM 2048 @@ -1619,6 +1620,8 @@ static void make_error_message(char *buf, size_t len, const char *fmt, va_list a s+= my_snprintf(s, end -s, "\n"); } +PRAGMA_DISABLE_CHECK_STACK_FRAME + static void die(const char *fmt, ...) { char buff[DIE_BUFF_SIZE]; @@ -1630,6 +1633,8 @@ static void die(const char *fmt, ...) really_die(buff); } +PRAGMA_REENABLE_CHECK_STACK_FRAME + static void really_die(const char *msg) { static int dying= 0; @@ -1658,6 +1663,8 @@ static void really_die(const char *msg) cleanup_and_exit(1, 1); } +PRAGMA_DISABLE_CHECK_STACK_FRAME + void report_or_die(const char *fmt, ...) { va_list args; @@ -1712,6 +1719,7 @@ void abort_not_supported_test(const char *fmt, ...) cleanup_and_exit(62, 0); } +PRAGMA_REENABLE_CHECK_STACK_FRAME void abort_not_in_this_version() { diff --git a/mysys/mf_keycache.c b/mysys/mf_keycache.c index 2307341ddb2..5c57360d9fb 100644 --- a/mysys/mf_keycache.c +++ b/mysys/mf_keycache.c @@ -3903,6 +3903,8 @@ static int flush_cached_blocks(SIMPLE_KEY_CACHE_CB *keycache, 1 error */ +PRAGMA_DISABLE_CHECK_STACK_FRAME + static int flush_key_blocks_int(SIMPLE_KEY_CACHE_CB *keycache, File file, enum flush_type type) { @@ -4335,6 +4337,7 @@ err: DBUG_RETURN(last_errno != 0); } +PRAGMA_REENABLE_CHECK_STACK_FRAME /* Flush all blocks for a file from key buffers of a simple key cache diff --git a/sql/sql_table.cc b/sql/sql_table.cc index b0fef120faf..cce43e70db9 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -10414,6 +10414,8 @@ static uint64 get_start_alter_id(THD *thd) based on information about the table changes from fill_alter_inplace_info(). */ +PRAGMA_DISABLE_CHECK_STACK_FRAME + bool mysql_alter_table(THD *thd, const LEX_CSTRING *new_db, const LEX_CSTRING *new_name, Table_specification_st *create_info, @@ -12028,6 +12030,7 @@ err_with_mdl: goto err_cleanup; } +PRAGMA_REENABLE_CHECK_STACK_FRAME /** diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 6a1103cc2ba..6963098f3a3 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -80,6 +80,8 @@ */ #define export /* not static */ +PRAGMA_DISABLE_CHECK_STACK_FRAME + #ifdef WITH_PERFSCHEMA_STORAGE_ENGINE static Sys_var_mybool Sys_pfs_enabled( diff --git a/storage/innobase/handler/i_s.cc b/storage/innobase/handler/i_s.cc index c064eb848a5..2d29c51a5ae 100644 --- a/storage/innobase/handler/i_s.cc +++ b/storage/innobase/handler/i_s.cc @@ -280,6 +280,8 @@ static const LEX_CSTRING isolation_level_values[] = static TypelibBuffer<4> isolation_level_values_typelib(isolation_level_values); +PRAGMA_DISABLE_CHECK_STACK_FRAME + namespace Show { /* Fields of the dynamic table INFORMATION_SCHEMA.innodb_trx */ diff --git a/storage/innobase/log/log0sync.cc b/storage/innobase/log/log0sync.cc index 7e80876c6fa..b32a908798f 100644 --- a/storage/innobase/log/log0sync.cc +++ b/storage/innobase/log/log0sync.cc @@ -278,6 +278,9 @@ group_commit_lock::lock_return_code group_commit_lock::acquire(value_type num, c return lock_return_code::EXPIRED; } +PRAGMA_DISABLE_CHECK_STACK_FRAME + + group_commit_lock::value_type group_commit_lock::release(value_type num) { completion_callback callbacks[950]; // 1000 fails with framesize 16384 @@ -395,6 +398,8 @@ group_commit_lock::value_type group_commit_lock::release(value_type num) return ret; } +PRAGMA_REENABLE_CHECK_STACK_FRAME + #ifndef DBUG_OFF bool group_commit_lock::is_owner() { diff --git a/storage/innobase/page/page0page.cc b/storage/innobase/page/page0page.cc index c4ed623a044..e8ddba9faa5 100644 --- a/storage/innobase/page/page0page.cc +++ b/storage/innobase/page/page0page.cc @@ -2000,6 +2000,8 @@ func_exit: return(ret); } +PRAGMA_DISABLE_CHECK_STACK_FRAME + /** Check the consistency of an index page. @param[in] page index page @param[in] index B-tree or R-tree index @@ -2436,6 +2438,8 @@ next_free: return(ret); } +PRAGMA_REENABLE_CHECK_STACK_FRAME + /***************************************************************//** Looks in the page record list for a record with the given heap number. @return record, NULL if not found */ diff --git a/storage/innobase/row/row0import.cc b/storage/innobase/row/row0import.cc index 4338ad034b1..29adb2a73f5 100644 --- a/storage/innobase/row/row0import.cc +++ b/storage/innobase/row/row0import.cc @@ -4617,6 +4617,8 @@ dberr_t innodb_insert_hidden_fts_col(dict_table_t* table, "END;\n", trx); } +PRAGMA_DISABLE_CHECK_STACK_FRAME + /*****************************************************************//** Imports a tablespace. The space id in the .ibd file must match the space id of the table in the data dictionary. @@ -4985,3 +4987,5 @@ import_error: return row_import_cleanup(prebuilt, err, table); } + +PRAGMA_REENABLE_CHECK_STACK_FRAME diff --git a/storage/innobase/srv/srv0start.cc b/storage/innobase/srv/srv0start.cc index f0bd48bcf33..d85ca7a998d 100644 --- a/storage/innobase/srv/srv0start.cc +++ b/storage/innobase/srv/srv0start.cc @@ -859,6 +859,8 @@ unused_undo: return DB_SUCCESS; } +PRAGMA_DISABLE_CHECK_STACK_FRAME + /** Open the configured number of dedicated undo tablespaces. @param[in] create_new_undo whether the undo tablespaces has to be created @param[in,out] mtr mini-transaction @@ -920,6 +922,9 @@ dberr_t srv_undo_tablespaces_init(bool create_new_undo, mtr_t *mtr) return err; } +PRAGMA_REENABLE_CHECK_STACK_FRAME + + /** Create the temporary file tablespace. @param[in] create_new_db whether we are creating a new database @return DB_SUCCESS or error code. */ @@ -1158,6 +1163,8 @@ inline lsn_t log_t::init_lsn() noexcept return lsn; } +PRAGMA_DISABLE_CHECK_STACK_FRAME + /** Start InnoDB. @param[in] create_new_db whether to create a new database @return DB_SUCCESS or error code */ @@ -1923,6 +1930,8 @@ skip_monitors: return(DB_SUCCESS); } +PRAGMA_REENABLE_CHECK_STACK_FRAME + /** Shutdown purge to make sure that there is no possibility that we call any plugin code (e.g., audit) inside virtual column computation. diff --git a/storage/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c index 1fd437225c8..198556305b8 100644 --- a/storage/maria/ma_loghandler.c +++ b/storage/maria/ma_loghandler.c @@ -3601,6 +3601,8 @@ static my_bool translog_is_LSN_chunk(uchar type) @retval 1 Error */ +PRAGMA_DISABLE_CHECK_STACK_FRAME + my_bool translog_init_with_table(const char *directory, uint32 log_file_max_size, uint32 server_version, @@ -4234,6 +4236,7 @@ err: DBUG_RETURN(1); } +PRAGMA_REENABLE_CHECK_STACK_FRAME /* @brief Free transaction log file buffer. diff --git a/storage/mroonga/vendor/groonga/lib/db.c b/storage/mroonga/vendor/groonga/lib/db.c index 3c2f98e4cde..9fe636b1a4e 100644 --- a/storage/mroonga/vendor/groonga/lib/db.c +++ b/storage/mroonga/vendor/groonga/lib/db.c @@ -8600,7 +8600,6 @@ grn_obj_set_info_source_invalid_lexicon_error(grn_ctx *ctx, source_name_size, source_name); } -PRAGMA_REENABLE_CHECK_STACK_FRAME inline static grn_rc grn_obj_set_info_source_validate(grn_ctx *ctx, grn_obj *obj, grn_obj *value) @@ -8704,6 +8703,8 @@ exit: return ctx->rc; } +PRAGMA_REENABLE_CHECK_STACK_FRAME + inline static void grn_obj_set_info_source_log(grn_ctx *ctx, grn_obj *obj, grn_obj *value) { diff --git a/storage/mroonga/vendor/groonga/lib/expr.c b/storage/mroonga/vendor/groonga/lib/expr.c index f3e59abf5eb..de3c080d6cd 100644 --- a/storage/mroonga/vendor/groonga/lib/expr.c +++ b/storage/mroonga/vendor/groonga/lib/expr.c @@ -31,6 +31,7 @@ #include "grn_token_cursor.h" #include "grn_mrb.h" #include "mrb/mrb_expr.h" +#include "my_attribute.h" #ifdef GRN_WITH_ONIGMO # define GRN_SUPPORT_REGEXP @@ -6701,6 +6702,8 @@ grn_table_select_index_range(grn_ctx *ctx, grn_obj *table, grn_obj *index, } } +PRAGMA_DISABLE_CHECK_STACK_FRAME + static inline grn_bool grn_table_select_index(grn_ctx *ctx, grn_obj *table, scan_info *si, grn_obj *res, grn_id *min_id) @@ -6818,6 +6821,8 @@ grn_table_select_index(grn_ctx *ctx, grn_obj *table, scan_info *si, return processed; } +PRAGMA_REENABLE_CHECK_STACK_FRAME + grn_obj * grn_table_select(grn_ctx *ctx, grn_obj *table, grn_obj *expr, grn_obj *res, grn_operator op) diff --git a/storage/mroonga/vendor/groonga/lib/ii.c b/storage/mroonga/vendor/groonga/lib/ii.c index e6c97c30bf2..761513e3b30 100644 --- a/storage/mroonga/vendor/groonga/lib/ii.c +++ b/storage/mroonga/vendor/groonga/lib/ii.c @@ -20,6 +20,7 @@ #include #include #include +#include #ifdef WIN32 # include @@ -3338,6 +3339,8 @@ fake_map(grn_ctx *ctx, grn_io *io, grn_io_win *iw, void *addr, uint32_t seg, uin iw->addr = addr; } +PRAGMA_DISABLE_CHECK_STACK_FRAME + static grn_rc buffer_flush(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h) { @@ -3470,6 +3473,8 @@ buffer_flush(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h) return ctx->rc; } +PRAGMA_REENABLE_CHECK_STACK_FRAME + void grn_ii_buffer_check(grn_ctx *ctx, grn_ii *ii, uint32_t seg) { @@ -3736,6 +3741,8 @@ array_update(grn_ctx *ctx, grn_ii *ii, uint32_t dls, buffer *db) } } +PRAGMA_DISABLE_CHECK_STACK_FRAME + static grn_rc buffer_split(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h) { @@ -3981,6 +3988,8 @@ buffer_split(grn_ctx *ctx, grn_ii *ii, uint32_t seg, grn_hash *h) return ctx->rc; } +PRAGMA_REENABLE_CHECK_STACK_FRAME + #define SCALE_FACTOR 2048 #define MAX_NTERMS 8192 #define SPLIT_COND(ii, buffer)\ @@ -4525,6 +4534,8 @@ PRAGMA_DISABLE_CHECK_STACK_FRAME #define BIT11_01(x) ((x >> 1) & 0x7ff) #define BIT31_12(x) (x >> 12) +PRAGMA_DISABLE_CHECK_STACK_FRAME + grn_rc grn_ii_update_one(grn_ctx *ctx, grn_ii *ii, grn_id tid, grn_ii_updspec *u, grn_hash *h) { @@ -4912,6 +4923,8 @@ exit : return ctx->rc; } +PRAGMA_REENABLE_CHECK_STACK_FRAME + #define CHUNK_USED 1 #define BUFFER_USED 2 #define SOLE_DOC_USED 4 @@ -6309,6 +6322,8 @@ grn_uvector2updspecs(grn_ctx *ctx, grn_ii *ii, grn_id rid, } } +PRAGMA_DISABLE_CHECK_STACK_FRAME + grn_rc grn_ii_column_update(grn_ctx *ctx, grn_ii *ii, grn_id rid, unsigned int section, grn_obj *oldvalue, grn_obj *newvalue, grn_obj *posting) @@ -6628,6 +6643,8 @@ exit : return ctx->rc; } +PRAGMA_REENABLE_CHECK_STACK_FRAME + /* token_info */ typedef struct { @@ -7931,6 +7948,8 @@ grn_ii_select_cursor_open(grn_ctx *ctx, return cursor; } +PRAGMA_DISABLE_CHECK_STACK_FRAME + static grn_ii_select_cursor_posting * grn_ii_select_cursor_next(grn_ctx *ctx, grn_ii_select_cursor *cursor) @@ -8098,6 +8117,9 @@ grn_ii_select_cursor_next(grn_ctx *ctx, } } +PRAGMA_REENABLE_CHECK_STACK_FRAME + + static void grn_ii_select_cursor_unshift(grn_ctx *ctx, grn_ii_select_cursor *cursor, @@ -8541,6 +8563,8 @@ grn_ii_select_sequential_search(grn_ctx *ctx, } #endif +PRAGMA_DISABLE_CHECK_STACK_FRAME + grn_rc grn_ii_select(grn_ctx *ctx, grn_ii *ii, const char *string, unsigned int string_len, @@ -8847,6 +8871,8 @@ exit : return rc; } +PRAGMA_REENABLE_CHECK_STACK_FRAME + static uint32_t grn_ii_estimate_size_for_query_regexp(grn_ctx *ctx, grn_ii *ii, const char *query, unsigned int query_len, From f33367f2ab19e2cc8f1af1875cbc33d6980700a1 Mon Sep 17 00:00:00 2001 From: Monty Date: Thu, 29 May 2025 18:09:16 +0300 Subject: [PATCH 04/43] Fixed a LOT of memory leaks in mariabackup This was generally good to get done but also needed to be able to run mariabackup test under asan. Things freed: - Allocated variables (mysql_tmpdir_list, opt_passwd etc) - InnoDB variables - Results from SQL queries (A lot of sql queries did not free their result) - Allocated sys_vars - Server variables (mysql_server_end()) - Memory allocated by plugins (encryption) - Free variables allocated by my_default. (Old code had a bug that caused these to not be freed) Other things: - Moved freeing of mysql_tmpdir_list to main, as the old code did not free the last mysqltmp_dir allocation. Now we also initialize the variable only once. - Fixed a serious, potentially 'crashing at end' bug where we called free_defaults() with wrong pointers. - Fixed a bug related to update_malloc_size() where we did not take into account the it was not changed. - Fixed a bug in Sys_var_charptr_base where we did not allocate default values. This could lead to trying to free not allocated values in xtrabackup. - Added sf_have_memory_leak() to be able to easily check if there was a memory leak when using safemalloc() - sf_report_leaked_memory() now returns 1 if a memory leak was found. --- extra/mariabackup/backup_mysql.cc | 36 +++++++++++------------ extra/mariabackup/backup_mysql.h | 1 - extra/mariabackup/xtrabackup.cc | 47 +++++++++++++++++++++++++------ include/my_sys.h | 5 +++- mysys/my_malloc.c | 6 ++-- mysys/safemalloc.c | 11 ++++++-- sql/sys_vars.inl | 5 +++- sql/wsrep_var.cc | 9 ++++++ 8 files changed, 84 insertions(+), 36 deletions(-) diff --git a/extra/mariabackup/backup_mysql.cc b/extra/mariabackup/backup_mysql.cc index 04d5ce50deb..6537d05db34 100644 --- a/extra/mariabackup/backup_mysql.cc +++ b/extra/mariabackup/backup_mysql.cc @@ -77,6 +77,7 @@ bool have_lock_wait_timeout = false; bool have_galera_enabled = false; bool have_multi_threaded_slave = false; bool have_gtid_slave = false; +bool innobase_data_file_path_allocated= false; /* Kill long selects */ static mysql_mutex_t kill_query_thread_mutex; @@ -498,21 +499,19 @@ bool get_mysql_vars(MYSQL *connection) } if (innodb_data_file_path_var && *innodb_data_file_path_var) - innobase_data_file_path= my_strdup(PSI_NOT_INSTRUMENTED, - innodb_data_file_path_var, MYF(MY_FAE)); + innobase_data_file_path= my_once_strdup(innodb_data_file_path_var, + MYF(MY_FAE)); if (innodb_data_home_dir_var) - innobase_data_home_dir= my_strdup(PSI_NOT_INSTRUMENTED, - innodb_data_home_dir_var, MYF(MY_FAE)); + innobase_data_home_dir= my_once_strdup(innodb_data_home_dir_var, + MYF(MY_FAE)); if (innodb_log_group_home_dir_var && *innodb_log_group_home_dir_var) - srv_log_group_home_dir= my_strdup(PSI_NOT_INSTRUMENTED, - innodb_log_group_home_dir_var, - MYF(MY_FAE)); + srv_log_group_home_dir= my_once_strdup(innodb_log_group_home_dir_var, + MYF(MY_FAE)); if (innodb_undo_directory_var && *innodb_undo_directory_var) - srv_undo_dir= my_strdup(PSI_NOT_INSTRUMENTED, innodb_undo_directory_var, - MYF(MY_FAE)); + srv_undo_dir= my_once_strdup(innodb_undo_directory_var, MYF(MY_FAE)); if (innodb_log_file_size_var) { @@ -534,10 +533,7 @@ bool get_mysql_vars(MYSQL *connection) } if (aria_log_dir_path_var) - { - aria_log_dir_path= my_strdup(PSI_NOT_INSTRUMENTED, - aria_log_dir_path_var, MYF(MY_FAE)); - } + aria_log_dir_path= my_once_strdup(aria_log_dir_path_var, MYF(MY_FAE)); if (page_zip_level_var != NULL) { @@ -550,11 +546,11 @@ bool get_mysql_vars(MYSQL *connection) xb_load_list_string(ignore_db_dirs, ",", register_ignore_db_dirs_filter); out: - free_mysql_variables(mysql_vars); return (ret); } + static bool select_incremental_lsn_from_history(lsn_t *incremental_lsn) @@ -930,7 +926,7 @@ lock_for_backup_stage_flush(MYSQL *connection) { if (opt_kill_long_queries_timeout) { start_query_killer(); } - xb_mysql_query(connection, "BACKUP STAGE FLUSH", true); + xb_mysql_query(connection, "BACKUP STAGE FLUSH", false); if (opt_kill_long_queries_timeout) { stop_query_killer(); } @@ -942,7 +938,7 @@ lock_for_backup_stage_block_ddl(MYSQL *connection) { if (opt_kill_long_queries_timeout) { start_query_killer(); } - xb_mysql_query(connection, "BACKUP STAGE BLOCK_DDL", true); + xb_mysql_query(connection, "BACKUP STAGE BLOCK_DDL", false); DBUG_MARIABACKUP_EVENT("after_backup_stage_block_ddl", {}); if (opt_kill_long_queries_timeout) { stop_query_killer(); @@ -955,7 +951,7 @@ lock_for_backup_stage_commit(MYSQL *connection) { if (opt_kill_long_queries_timeout) { start_query_killer(); } - xb_mysql_query(connection, "BACKUP STAGE BLOCK_COMMIT", true); + xb_mysql_query(connection, "BACKUP STAGE BLOCK_COMMIT", false); DBUG_MARIABACKUP_EVENT("after_backup_stage_block_commit", {}); if (opt_kill_long_queries_timeout) { stop_query_killer(); @@ -966,12 +962,12 @@ lock_for_backup_stage_commit(MYSQL *connection) { bool backup_lock(MYSQL *con, const char *table_name) { static const std::string backup_lock_prefix("BACKUP LOCK "); std::string backup_lock_query = backup_lock_prefix + table_name; - xb_mysql_query(con, backup_lock_query.c_str(), true); + xb_mysql_query(con, backup_lock_query.c_str(), false); return true; } bool backup_unlock(MYSQL *con) { - xb_mysql_query(con, "BACKUP UNLOCK", true); + xb_mysql_query(con, "BACKUP UNLOCK", false); return true; } @@ -985,6 +981,8 @@ get_tables_in_use(MYSQL *con) { msg("Table %s is in use", tk.c_str()); result.insert(std::move(tk)); } + if (q_res) + mysql_free_result(q_res); return result; } diff --git a/extra/mariabackup/backup_mysql.h b/extra/mariabackup/backup_mysql.h index ce7755d17af..55700dddf6d 100644 --- a/extra/mariabackup/backup_mysql.h +++ b/extra/mariabackup/backup_mysql.h @@ -97,5 +97,4 @@ bool write_slave_info(ds_ctxt *datasink, MYSQL *connection); ulonglong get_current_lsn(MYSQL *connection); - #endif diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index 9609a3fc82c..047b1fe5fa7 100644 --- a/extra/mariabackup/xtrabackup.cc +++ b/extra/mariabackup/xtrabackup.cc @@ -129,6 +129,7 @@ int sd_notifyf() { return 0; } } int sys_var_init(); +void sys_var_end(); extern const char* fts_common_tables[]; extern const fts_index_selector_t fts_index_selector[]; @@ -396,6 +397,7 @@ char *opt_incremental_history_uuid; char *opt_user; const char *opt_password; +bool free_opt_password; char *opt_host; char *opt_defaults_group; char *opt_socket; @@ -2456,6 +2458,7 @@ xb_get_one_option(const struct my_option *opt, static bool innodb_init_param() { + static bool mysql_tmpdir_list_set= 0; if (!ut_is_2pow(log_sys.write_size)) { msg("InnoDB: innodb_log_write_ahead_size=%u" " is not a power of two", log_sys.write_size); @@ -2463,12 +2466,15 @@ static bool innodb_init_param() } srv_is_being_started = TRUE; /* === some variables from mysqld === */ - memset((G_PTR) &mysql_tmpdir_list, 0, sizeof(mysql_tmpdir_list)); - - if (init_tmpdir(&mysql_tmpdir_list, opt_mysql_tmpdir)) { - msg("init_tmpdir() failed"); - return true; - } + if (!mysql_tmpdir_list_set) + { + mysql_tmpdir_list_set= 1; + memset((G_PTR) &mysql_tmpdir_list, 0, sizeof(mysql_tmpdir_list)); + if (init_tmpdir(&mysql_tmpdir_list, opt_mysql_tmpdir)) { + msg("init_tmpdir() failed"); + return true; + } + } xtrabackup_tmpdir = my_tmpdir(&mysql_tmpdir_list); /* dummy for initialize all_charsets[] */ get_charset_name(0); @@ -6628,7 +6634,6 @@ void innodb_free_param() { srv_sys_space.shutdown(); - free_tmpdir(&mysql_tmpdir_list); } @@ -7283,6 +7288,8 @@ order: void handle_options(int argc, char **argv, char ***argv_server, char ***argv_client, char ***argv_backup) { + char **save_argv_server, **save_argv_client, **save_argv_backup; + /* Setup some variables for Innodb.*/ srv_operation = SRV_OPERATION_RESTORE; @@ -7400,6 +7407,7 @@ void handle_options(int argc, char **argv, char ***argv_server, load_defaults_or_exit(conf_file, &server_default_groups[0], &argc_server, argv_server); + save_argv_server= *argv_server; int n; for (n = 0; (*argv_server)[n]; n++) {}; @@ -7445,6 +7453,7 @@ void handle_options(int argc, char **argv, char ***argv_server, load_defaults_or_exit(conf_file, xb_client_default_groups, &argc_client, argv_client); + save_argv_client= *argv_client; for (n = 0; (*argv_client)[n]; n++) {}; argc_client = n; @@ -7465,6 +7474,8 @@ void handle_options(int argc, char **argv, char ***argv_server, load_defaults_or_exit(conf_file, backup_default_groups, &argc_backup, argv_backup); + save_argv_backup= *argv_backup; + for (n= 0; (*argv_backup)[n]; n++) { }; @@ -7498,6 +7509,7 @@ void handle_options(int argc, char **argv, char ***argv_server, char *start= (char*) opt_password; opt_password= my_strdup(PSI_NOT_INSTRUMENTED, opt_password, MYF(MY_FAE)); + free_opt_password= 1; while (*argument) *argument++= 'x'; // Destroy argument if (*start) @@ -7543,6 +7555,14 @@ void handle_options(int argc, char **argv, char ***argv_server, } } } + /* + Restore load defaults argument to the value after + load_defaults_or_exit(). This is needed for caller + when calling free_defaults() + */ + *argv_server= save_argv_server; + *argv_client= save_argv_client; + *argv_backup= save_argv_backup; } static int main_low(char** argv); @@ -7641,10 +7661,21 @@ int main(int argc, char **argv) cleanup_errmsgs(); free_error_messages(); mysql_mutex_destroy(&LOCK_error_log); + free_tmpdir(&mysql_tmpdir_list); + if (free_opt_password) + my_free((char*) opt_password); + plugin_shutdown(); + free_list(opt_plugin_load_list_ptr); + mysql_server_end(); + sys_var_end(); if (status == EXIT_SUCCESS) { - msg("completed OK!"); + msg("completed OK!"); } + my_end(MY_CHECK_ERROR); + sf_leaking_memory= 0; + if (SAFEMALLOC_HAVE_MEMORY_LEAK) + status= EXIT_FAILURE; return status; } diff --git a/include/my_sys.h b/include/my_sys.h index 23799f661c4..ec760c7bd19 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -152,12 +152,15 @@ char *guess_malloc_library(); /* If we have our own safemalloc (for debugging) */ #if defined(SAFEMALLOC) -void sf_report_leaked_memory(my_thread_id id); +my_bool sf_report_leaked_memory(my_thread_id id); int sf_sanity(); +my_bool sf_have_memory_leak(); extern my_thread_id (*sf_malloc_dbug_id)(void); #define SAFEMALLOC_REPORT_MEMORY(X) if (!sf_leaking_memory) sf_report_leaked_memory(X) +#define SAFEMALLOC_HAVE_MEMORY_LEAK sf_have_memory_leak() #else #define SAFEMALLOC_REPORT_MEMORY(X) do {} while(0) +#define SAFEMALLOC_HAVE_MEMORY_LEAK 0 #endif typedef void (*MALLOC_SIZE_CB) (long long size, my_bool is_thread_specific); diff --git a/mysys/my_malloc.c b/mysys/my_malloc.c index 5a5ed6c8283..076165b56fe 100644 --- a/mysys/my_malloc.c +++ b/mysys/my_malloc.c @@ -107,7 +107,7 @@ void *my_malloc(PSI_memory_key key, size_t size, myf my_flags) int flag= MY_TEST(my_flags & MY_THREAD_SPECIFIC); mh->m_size= size | flag; mh->m_key= PSI_CALL_memory_alloc(key, size, & mh->m_owner); - if (update_malloc_size) + if (update_malloc_size != dummy) { mh->m_size|=2; update_malloc_size(size + HEADER_SIZE, flag); @@ -176,7 +176,7 @@ void *my_realloc(PSI_memory_key key, void *old_point, size_t size, myf my_flags) { mh->m_size= size | old_flags; mh->m_key= PSI_CALL_memory_realloc(key, old_size, size, & mh->m_owner); - if (update_malloc_size && (old_flags & 2)) + if (update_malloc_size != dummy && (old_flags & 2)) update_malloc_size((longlong)size - (longlong)old_size, old_flags & 1); point= HEADER_TO_USER(mh); } @@ -207,7 +207,7 @@ void my_free(void *ptr) old_flags= mh->m_size & 3; PSI_CALL_memory_free(mh->m_key, old_size, mh->m_owner); - if (update_malloc_size && (old_flags & 2)) + if (update_malloc_size != dummy && (old_flags & 2)) update_malloc_size(- (longlong) old_size - HEADER_SIZE, old_flags & 1); #ifndef SAFEMALLOC diff --git a/mysys/safemalloc.c b/mysys/safemalloc.c index 2fc34a9231b..727d004423d 100644 --- a/mysys/safemalloc.c +++ b/mysys/safemalloc.c @@ -372,7 +372,7 @@ int sf_sanity() if (count || irem) { warn("Error: Safemalloc link list destroyed"); - flag= 1; + flag++; } return flag; } @@ -383,7 +383,7 @@ int sf_sanity() @param id Id of thread to report. 0 if all */ -void sf_report_leaked_memory(my_thread_id id) +my_bool sf_report_leaked_memory(my_thread_id id) { size_t total= 0; struct st_irem *irem; @@ -411,7 +411,7 @@ void sf_report_leaked_memory(my_thread_id id) if (total) fprintf(stderr, "Memory lost: %lu bytes in %u chunks of %u total chunks\n", (ulong) total, chunks, sf_malloc_count); - return; + return total != 0; } static void sf_terminate() @@ -422,4 +422,9 @@ static void sf_terminate() pthread_mutex_destroy(&sf_mutex); } +my_bool sf_have_memory_leak() +{ + return sf_malloc_root != 0; +} + #endif diff --git a/sql/sys_vars.inl b/sql/sys_vars.inl index 49a9d5b637a..0094751ad91 100644 --- a/sql/sys_vars.inl +++ b/sql/sys_vars.inl @@ -520,7 +520,10 @@ public: (think of an exit because of an error right after my_getopt) */ option.var_type|= (flags & ALLOCATED) ? GET_STR_ALLOC : GET_STR; - global_var(const char*)= def_val; + if (def_val && (flags & ALLOCATED)) + global_var(const char*)= my_strdup(PSI_INSTRUMENT_ME, def_val, MYF(0)); + else + global_var(const char*)= def_val; } void cleanup() override { diff --git a/sql/wsrep_var.cc b/sql/wsrep_var.cc index c21fdf882f7..7fdaedba281 100644 --- a/sql/wsrep_var.cc +++ b/sql/wsrep_var.cc @@ -33,6 +33,15 @@ ulong wsrep_reject_queries; int wsrep_init_vars() { + my_free((char*) wsrep_provider); + my_free((char*) wsrep_provider_options); + my_free((char*) wsrep_cluster_address); + my_free((char*) wsrep_cluster_name); + my_free((char*) wsrep_node_name); + my_free((char*) wsrep_node_address); + my_free((char*) wsrep_node_incoming_address); + my_free((char*) wsrep_start_position); + wsrep_provider = my_strdup(PSI_INSTRUMENT_ME, WSREP_NONE, MYF(MY_WME)); wsrep_provider_options= my_strdup(PSI_INSTRUMENT_ME, "", MYF(MY_WME)); wsrep_cluster_address = my_strdup(PSI_INSTRUMENT_ME, "", MYF(MY_WME)); From 675dffb66921784259604ad2f51243740fbe3c8d Mon Sep 17 00:00:00 2001 From: Monty Date: Sat, 28 Jun 2025 14:43:46 +0300 Subject: [PATCH 05/43] Extend --log_basename allow it to include a path. --log-basename=/var/log/mariadb --- mysql-test/main/mysqld--help.result | 5 ++++- sql/mysqld.cc | 13 +++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/mysql-test/main/mysqld--help.result b/mysql-test/main/mysqld--help.result index a5ae3c067de..208778f9bda 100644 --- a/mysql-test/main/mysqld--help.result +++ b/mysql-test/main/mysqld--help.result @@ -466,7 +466,10 @@ The following specify which files/extra groups are read (specified before remain the only option you need for specifying log files. Sets names for --log-bin, --log-bin-index, --relay-log, --relay-log-index, --general-log-file, - --log-slow-query-file, --log-error-file, and --pid-file + --log-slow-query-file, --log-error-file, and --pid-file. + If log-basename includes a path, the path will apply for + all above variables except pid-file that will use it + without the path --log-bin[=name] Log update queries in binary format. Optional argument should be name for binary log. If not given 'datadir'/'log-basename'-bin or 'datadir'/mysql-bin will diff --git a/sql/mysqld.cc b/sql/mysqld.cc index d7e1bd67a75..17081bec254 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -6666,7 +6666,9 @@ struct my_option my_long_options[]= "names at once (in 'datadir') and is normally the only option you need " "for specifying log files. Sets names for --log-bin, --log-bin-index, " "--relay-log, --relay-log-index, --general-log-file, " - "--log-slow-query-file, --log-error-file, and --pid-file", + "--log-slow-query-file, --log-error-file, and --pid-file. " + "If log-basename includes a path, the path will apply for all above " + "variables except pid-file that will use it without the path", &opt_log_basename, &opt_log_basename, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"log-bin", OPT_BIN_LOG, @@ -8161,10 +8163,12 @@ mysqld_get_one_option(const struct my_option *opt, const char *argument, case (int) OPT_LOG_BASENAME: { if (opt_log_basename[0] == 0 || strchr(opt_log_basename, FN_EXTCHAR) || - strchr(opt_log_basename,FN_LIBCHAR) || + !my_basename(opt_log_basename)[0] || !is_filename_allowed(opt_log_basename, strlen(opt_log_basename), FALSE)) { - sql_print_error("Wrong argument for --log-basename. It can't be empty or contain '.' or '" FN_DIRSEP "'. It must be valid filename."); + sql_print_error("Wrong argument for --log-basename. It can't be empty, " + "contain '.' or be a directory name'. " + "It must be valid filename."); return 1; } if (log_error_file_ptr != disabled_my_option) @@ -8198,7 +8202,8 @@ mysqld_get_one_option(const struct my_option *opt, const char *argument, { SYSVAR_AUTOSIZE(pidfile_name_ptr, pidfile_name); /* PID file */ - strmake(pidfile_name, argument, sizeof(pidfile_name)-5); + strmake(pidfile_name, my_basename(opt_log_basename), + sizeof(pidfile_name)-5); strmov(fn_ext(pidfile_name),".pid"); } break; From 6a4fe9923da777cbefe706d7e91c52cdd7563d56 Mon Sep 17 00:00:00 2001 From: Monty Date: Sat, 12 Jul 2025 15:45:02 +0300 Subject: [PATCH 06/43] Improvements for myisamchk These changes was done as part of fixing MDEV-36858 MariaDB MyISAM secondary indexes silently break for tables > 10B rows Changes done in myisamchk: - Tables that are checked are opened in readonly mode if --force is not used. - *.MYD files will be opened in readonly mode for repair if --quick is used. - Added information about check progress if --verbose is used. - Output information about repaired/checked rows every 10000 rows instead of every 1000 rows. Note that this also affects aria_chk - Store open file mode in share->index_mode and share->data_mode instead of in share->mode. - Added new option --keys-active= as a simpler version of keys-used. - Changed output for "myisamchk -dvv" to get nicer output for tables with 10 billion rows. --- include/my_base.h | 7 ++ include/my_global.h | 2 +- include/myisamchk.h | 2 +- mysql-test/main/long_unique.result | 16 ++-- mysql-test/main/myisam.result | 8 +- .../suite/vcol/r/vcol_keys_myisam.result | 4 +- storage/myisam/mi_check.c | 18 ++++- storage/myisam/mi_close.c | 2 +- storage/myisam/mi_dynrec.c | 2 +- storage/myisam/mi_open.c | 38 ++++++--- storage/myisam/myisamchk.c | 79 +++++++++++++++---- storage/myisam/myisamdef.h | 3 +- 12 files changed, 135 insertions(+), 46 deletions(-) diff --git a/include/my_base.h b/include/my_base.h index 0e4dab9da5a..2da0d2ef651 100644 --- a/include/my_base.h +++ b/include/my_base.h @@ -50,6 +50,13 @@ #define HA_OPEN_FOR_CREATE 4096U #define HA_OPEN_FOR_DROP (1U << 13) /* Open part of drop */ #define HA_OPEN_GLOBAL_TMP_TABLE (1U << 14) /* TMP table used by repliction */ +/* + This is to signal that the table will not be cached by the caller + and the table should be open in read-only mode if the tool requests + that +*/ +#define HA_OPEN_FORCE_MODE (1U << 15) /* Force open mode */ +#define HA_OPEN_DATA_READONLY (1U << 16) /* Use readonly for data */ /* Allow opening even if table is incompatible as this is for ALTER TABLE which diff --git a/include/my_global.h b/include/my_global.h index 82b6f21f9a5..fe970ad1304 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -1027,7 +1027,7 @@ typedef ulong myf; /* Type of MyFlags in my_funcs */ #define YESNO(X) ((X) ? "yes" : "no") #define MY_HOW_OFTEN_TO_ALARM 2 /* How often we want info on screen */ -#define MY_HOW_OFTEN_TO_WRITE 10000 /* How often we want info on screen */ +#define MY_HOW_OFTEN_TO_WRITE 100000 /* How often we want info on screen */ #include diff --git a/include/myisamchk.h b/include/myisamchk.h index 85f7c0a56f7..00ac234b5f2 100644 --- a/include/myisamchk.h +++ b/include/myisamchk.h @@ -116,7 +116,7 @@ typedef struct st_handler_check_param int (*fix_record)(struct st_myisam_info *info, uchar *record, int keynum); mysql_mutex_t print_msg_mutex; - my_bool need_print_msg_lock; + my_bool need_print_msg_lock, status_reporting; myf malloc_flags; } HA_CHECK; diff --git a/mysql-test/main/long_unique.result b/mysql-test/main/long_unique.result index b1b537a29b0..03a8b14752a 100644 --- a/mysql-test/main/long_unique.result +++ b/mysql-test/main/long_unique.result @@ -42,8 +42,8 @@ Ignored NO MyISAM file: DATADIR/test/t1 Record format: Packed Character set: latin1_swedish_ci (8) -Data records: 10 Deleted blocks: 0 -Recordlength: 12 +Data records: 10 Deleted blocks: 0 +Recordlength: 12 table description: Key Start Len Index Type @@ -130,8 +130,8 @@ insert into t1 values(1),(2),(3),(4),(5),(8),(7); MyISAM file: DATADIR/test/t1 Record format: Packed Character set: latin1_swedish_ci (8) -Data records: 7 Deleted blocks: 0 -Recordlength: 12 +Data records: 7 Deleted blocks: 0 +Recordlength: 12 table description: Key Start Len Index Type @@ -365,8 +365,8 @@ t1 0 e 1 e A NULL NULL NULL YES HASH NO MyISAM file: DATADIR/test/t1 Record format: Packed Character set: latin1_swedish_ci (8) -Data records: 8 Deleted blocks: 0 -Recordlength: 3040 +Data records: 8 Deleted blocks: 0 +Recordlength: 3040 table description: Key Start Len Index Type @@ -722,8 +722,8 @@ t1 0 b 4 h A NULL NULL NULL YES HASH NO MyISAM file: DATADIR/test/t1 Record format: Packed Character set: latin1_swedish_ci (8) -Data records: 9 Deleted blocks: 0 -Recordlength: 5059 +Data records: 9 Deleted blocks: 0 +Recordlength: 5059 table description: Key Start Len Index Type diff --git a/mysql-test/main/myisam.result b/mysql-test/main/myisam.result index 7d930f1aa0d..a90a2b6d6f1 100644 --- a/mysql-test/main/myisam.result +++ b/mysql-test/main/myisam.result @@ -2402,8 +2402,8 @@ KEY (c2) MyISAM file: MYSQLD_DATADIR/test/t1 Record format: Packed Character set: utf8mb3_general_ci (33) -Data records: 0 Deleted blocks: 0 -Recordlength: 94 +Data records: 0 Deleted blocks: 0 +Recordlength: 94 table description: Key Start Len Index Type @@ -2690,8 +2690,8 @@ KEY (d) MyISAM file: MYSQLD_DATADIR/test/t1 Record format: Fixed length Character set: latin1_swedish_ci (8) -Data records: 0 Deleted blocks: 0 -Recordlength: 13 +Data records: 0 Deleted blocks: 0 +Recordlength: 13 table description: Key Start Len Index Type diff --git a/mysql-test/suite/vcol/r/vcol_keys_myisam.result b/mysql-test/suite/vcol/r/vcol_keys_myisam.result index eb6908041f1..c29bccfb6db 100644 --- a/mysql-test/suite/vcol/r/vcol_keys_myisam.result +++ b/mysql-test/suite/vcol/r/vcol_keys_myisam.result @@ -244,8 +244,8 @@ a b c MyISAM file: datadir/test/t1 Record format: Fixed length Character set: latin1_swedish_ci (8) -Data records: 1001 Deleted blocks: 0 -Recordlength: 9 +Data records: 1001 Deleted blocks: 0 +Recordlength: 9 table description: Key Start Len Index Type diff --git a/storage/myisam/mi_check.c b/storage/myisam/mi_check.c index dff5fcdbcb6..7c11903abda 100644 --- a/storage/myisam/mi_check.c +++ b/storage/myisam/mi_check.c @@ -469,6 +469,11 @@ int chk_key(HA_CHECK *param, register MI_INFO *info) if (chk_index(param,info,keyinfo,share->state.key_root[key],info->buff, &keys, param->key_crc+key,1)) DBUG_RETURN(-1); + if ((param->testflag & T_WRITE_LOOP) && param->verbose) + { + puts(" \r"); + fflush(stdout); + } if(!(keyinfo->flag & (HA_FULLTEXT | HA_SPATIAL))) { if (keys != info->state->records) @@ -565,7 +570,8 @@ do_stat: puts(""); } if (param->key_file_blocks != info->state->key_file_length && - param->keys_in_use != ~(ulonglong) 0) + mi_is_all_keys_active(share->state.key_map, share->base.keys) && + !full_text_keys) mi_check_print_warning(param, "Some data are unreferenced in keyfile"); if (found_keys != full_text_keys) param->record_checksum=old_record_checksum-init_checksum; /* Remove delete links */ @@ -870,6 +876,15 @@ static int chk_index(HA_CHECK *param, MI_INFO *info, MI_KEYDEF *keyinfo, goto err; } param->record_checksum+=(ha_checksum) record; + if ((param->testflag & T_WRITE_LOOP) && param->verbose && + (*keys % WRITE_COUNT) == 0) + { + char llbuff[22]; + ulonglong records= info->state->records; + printf("%15s (%3.4f%%)\r", llstr(*keys, llbuff), + ((double) *keys / (records > *keys ? records : *keys)) *100); + fflush(stdout); + } } if (keypos != endpos) { @@ -3878,6 +3893,7 @@ static int sort_key_write(MI_SORT_PARAM *sort_param, const void *a) { mi_check_print_error(param, "Internal error: Keys are not in order from sort"); + DBUG_ASSERT(0); return(1); } #endif diff --git a/storage/myisam/mi_close.c b/storage/myisam/mi_close.c index 56197729251..a5cd2284227 100644 --- a/storage/myisam/mi_close.c +++ b/storage/myisam/mi_close.c @@ -82,7 +82,7 @@ int mi_close(register MI_INFO *info) (the server might want to reopen it, and mi_lock_database() only writes the state for non-temp ones) */ - if (share->mode != O_RDONLY && + if (share->index_mode != O_RDONLY && (mi_is_crashed(info) || (share->temporary && !share->deleting))) mi_state_info_write(share->kfile, &share->state, 1); /* Decrement open count must be last I/O on this file. */ diff --git a/storage/myisam/mi_dynrec.c b/storage/myisam/mi_dynrec.c index 09c10040f9c..17d4e248842 100644 --- a/storage/myisam/mi_dynrec.c +++ b/storage/myisam/mi_dynrec.c @@ -83,7 +83,7 @@ my_bool mi_dynmap_file(MI_INFO *info, my_off_t size) */ info->s->file_map= (uchar*) my_mmap(0, (size_t) size, - info->s->mode==O_RDONLY ? PROT_READ : + info->s->index_mode == O_RDONLY ? PROT_READ : PROT_READ | PROT_WRITE, MAP_SHARED | MAP_NORESERVE, info->dfile, 0L); diff --git a/storage/myisam/mi_open.c b/storage/myisam/mi_open.c index 414e483acbc..9e3a8f43944 100644 --- a/storage/myisam/mi_open.c +++ b/storage/myisam/mi_open.c @@ -82,7 +82,8 @@ MI_INFO *test_if_reopen(char *filename) MI_INFO *mi_open(const char *name, int mode, uint open_flags) { - int lock_error,kfile,open_mode,save_errno,have_rtree=0, realpath_err; + int lock_error,kfile,save_errno,have_rtree=0, realpath_err; + int open_mode, try_open_mode; uint i,j,len,errpos,head_length,base_pos,offset,info_length,keys, key_parts,unique_key_parts,base_key_parts,fulltext_keys,uniques; uint internal_table= open_flags & HA_OPEN_INTERNAL_TABLE; @@ -138,18 +139,31 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags) }); DEBUG_SYNC_C("mi_open_kfile"); + + /* + We first try to open the file on read-write mode to ensure that + the table is usable for future read and write queries in + MariaDB. Only if the read-write mode fails we try to readonly. + */ + try_open_mode= (open_flags & HA_OPEN_FORCE_MODE) ? mode : O_RDWR; + if ((kfile= mysql_file_open(mi_key_file_kfile, name_buff, - (open_mode= O_RDWR) | O_SHARE | O_NOFOLLOW | O_CLOEXEC, + (open_mode= try_open_mode) | O_SHARE | + O_NOFOLLOW | O_CLOEXEC, MYF(MY_NOSYMLINKS))) < 0) { - if ((errno != EROFS && errno != EACCES) || + if ((errno != EROFS && errno != EACCES) || open_mode == O_RDONLY || mode != O_RDONLY || (kfile= mysql_file_open(mi_key_file_kfile, name_buff, - (open_mode= O_RDONLY) | O_SHARE| O_NOFOLLOW | O_CLOEXEC, + (open_mode= O_RDONLY) | O_SHARE | + O_NOFOLLOW | O_CLOEXEC, MYF(MY_NOSYMLINKS))) < 0) goto err; } - share->mode=open_mode; + share->index_mode= share->data_mode= open_mode; + if (open_flags & HA_OPEN_DATA_READONLY) + share->data_mode= O_RDONLY; + errpos=1; if (mysql_file_read(kfile, (uchar*)&share->state.header, head_length, MYF(MY_NABP))) @@ -200,7 +214,9 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags) my_errno= HA_WRONG_CREATE_OPTION; goto err; } - share->mode|= O_NOFOLLOW; /* all symlinks are resolved by realpath() */ + /* all symlinks are resolved by realpath() */ + share->index_mode|= O_NOFOLLOW; + share->data_mode|= O_NOFOLLOW; } info_length=mi_uint2korr(share->state.header.header_length); @@ -588,7 +604,7 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags) else { share= old_info->s; - if (mode == O_RDWR && share->mode == O_RDONLY) + if (mode == O_RDWR && share->index_mode == O_RDONLY) { my_errno=EACCES; /* Can't open in write mode */ goto err; @@ -1279,10 +1295,11 @@ active seek-positions. int mi_open_datafile(MI_INFO *info, MYISAM_SHARE *share) { - myf flags= MY_WME | (share->mode & O_NOFOLLOW ? MY_NOSYMLINKS: 0); + myf flags= MY_WME | (share->data_mode & O_NOFOLLOW ? MY_NOSYMLINKS: 0); DEBUG_SYNC_C("mi_open_datafile"); info->dfile= mysql_file_open(mi_key_file_dfile, share->data_file_name, - share->mode | O_SHARE | O_CLOEXEC, MYF(flags)); + share->data_mode | O_SHARE | O_CLOEXEC, + MYF(flags)); return info->dfile >= 0 ? 0 : 1; } @@ -1291,7 +1308,8 @@ int mi_open_keyfile(MYISAM_SHARE *share) { if ((share->kfile= mysql_file_open(mi_key_file_kfile, share->unique_file_name, - share->mode | O_SHARE | O_NOFOLLOW | O_CLOEXEC, + share->index_mode | O_SHARE | O_NOFOLLOW + | O_CLOEXEC, MYF(MY_NOSYMLINKS | MY_WME))) < 0) return 1; return 0; diff --git a/storage/myisam/myisamchk.c b/storage/myisam/myisamchk.c index b9b04582a89..a9ecb46c30b 100644 --- a/storage/myisam/myisamchk.c +++ b/storage/myisam/myisamchk.c @@ -144,7 +144,7 @@ enum options_mc { OPT_READ_BUFFER_SIZE, OPT_WRITE_BUFFER_SIZE, OPT_SORT_BUFFER_SIZE, OPT_SORT_KEY_BLOCKS, OPT_DECODE_BITS, OPT_FT_MIN_WORD_LEN, OPT_FT_MAX_WORD_LEN, OPT_FT_STOPWORD_FILE, - OPT_MAX_RECORD_LENGTH, OPT_STATS_METHOD + OPT_MAX_RECORD_LENGTH, OPT_STATS_METHOD, OPT_ACTIVE_KEYS }; static struct my_option my_long_options[] = @@ -207,10 +207,16 @@ static struct my_option my_long_options[] = "Print statistics information about table that is checked.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"keys-used", 'k', - "Tell MyISAM to update only some specific keys. # is a bit mask of which keys to use. This can be used to get faster inserts.", + "Tell MyISAM to update only some specific keys. # is a bit mask of which keys to use. This can be used to get faster inserts. See also keys-active", &check_param.keys_in_use, &check_param.keys_in_use, 0, GET_ULL, REQUIRED_ARG, -1, 0, 0, 0, 0, 0}, + {"keys-active", OPT_ACTIVE_KEYS, + "Treat all not listed keys as disabled. If used with repair, the keys " + "will be disabled permanently. The argument is a list of key numbers, " + "starting from 1, separated by ','. " + "keys-active and keys-used are two ways to do the same thing", + 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"max-record-length", OPT_MAX_RECORD_LENGTH, "Skip rows bigger than this if myisamchk can't allocate memory to hold it", &check_param.max_record_length, @@ -331,7 +337,7 @@ static struct my_option my_long_options[] = REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"stats_method", OPT_STATS_METHOD, "Specifies how index statistics collection code should treat NULLs. " - "Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), " + "Possible values of name are \"nulls_unequal\" (default behavior for MySQL 4.1/5.0), " "\"nulls_equal\" (emulate 4.0 behavior), and \"nulls_ignored\".", (char**) &myisam_stats_method_str, (char**) &myisam_stats_method_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -341,7 +347,7 @@ static struct my_option my_long_options[] = static void print_version(void) { - printf("%s Ver 2.7 for %s at %s\n", my_progname, SYSTEM_TYPE, + printf("%s Ver 2.8 for %s at %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE); } @@ -413,6 +419,11 @@ static void usage(void) -k, --keys-used=# Tell MyISAM to update only some specific keys. # is a\n\ bit mask of which keys to use. This can be used to\n\ get faster inserts.\n\ + --keys-active\n\ + Threat all not listed keys as disabled. If used with repair, the keys\n\ + will be disabled permanently. The argument is a list of key numbers,\n\ + starting from 1, separated by ','\n\ + keys-active and keys-used are two ways to do the same thing\n\ --create-missing-keys\n\ Create missing keys. This assumes that the data\n\ file is correct and that the the number of rows stored\n\ @@ -578,6 +589,32 @@ get_one_option(const struct my_option *opt, case 'k': check_param.keys_in_use= (ulonglong) strtoll(argument, NULL, 10); break; + case OPT_ACTIVE_KEYS: + if (argument == disabled_my_option) + check_param.keys_in_use= ~0LL; + else + { + const char *start; + char *end, *str_end= strend(argument); + check_param.keys_in_use= 0; + for (start= argument; *start ; start= end) + { + int error; + longlong key; + end= str_end; + key= my_strtoll10(start, &end, &error); + if (error || key > 64 || (*end && *end != ',')) + { + fprintf(stderr, "Wrong argument to active-keys. Expected a list of " + "numbers like 1,2,3,4\n"); + exit(1); /* Change to my_exit after merge */ + } + check_param.keys_in_use|= 1LL << (key-1); + if (*end == ',') + end++; + } + } + break; case 'm': if (argument == disabled_my_option) check_param.testflag&= ~T_MEDIUM; @@ -838,7 +875,10 @@ static int myisamchk(HA_CHECK *param, char * filename) open_flags|= HA_OPEN_IGNORE_IF_LOCKED | HA_OPEN_FROM_SQL_LAYER; else open_flags|= HA_OPEN_ABORT_IF_LOCKED; - if (!(info=mi_open(filename, open_mode, open_flags))) + if (param->testflag & T_QUICK) + open_flags|= HA_OPEN_DATA_READONLY; + + if (!(info=mi_open(filename, open_mode, open_flags | HA_OPEN_FORCE_MODE))) { /* Avoid twice printing of isam file name */ param->error_printed=1; @@ -926,6 +966,13 @@ static int myisamchk(HA_CHECK *param, char * filename) DBUG_RETURN(0); } } + + /* Don't allow disable of active auto_increment keys for repair */ + if (share->base.auto_key && + (share->state.key_map & (1LL << share->base.auto_key)) && + param->testflag & (T_REP_ANY | T_SORT_RECORDS | T_SORT_INDEX)) + check_param.keys_in_use|= (1LL << share->base.auto_key); + if ((param->testflag & (T_REP_ANY | T_STATISTICS | T_SORT_RECORDS | T_SORT_INDEX)) && (((param->testflag & T_UNPACK) && @@ -1279,18 +1326,18 @@ static void descript(HA_CHECK *param, register MI_INFO *info, char * name) printf("Status: %s\n",buff); if (share->base.auto_key) { - printf("Auto increment key: %13d Last value: %13s\n", + printf("Auto increment key: %15d Last value: %13s\n", share->base.auto_key, llstr(share->state.auto_increment,llbuff)); } if (share->options & (HA_OPTION_CHECKSUM | HA_OPTION_COMPRESS_RECORD)) - printf("Checksum: %23s\n",llstr(info->state->checksum,llbuff)); + printf("Checksum: %25s\n",llstr(info->state->checksum,llbuff)); if (share->options & HA_OPTION_DELAY_KEY_WRITE) printf("Keys are only flushed at close\n"); } - printf("Data records: %13s Deleted blocks: %13s\n", + printf("Data records: %15s Deleted blocks: %18s\n", llstr(info->state->records,llbuff),llstr(info->state->del,llbuff2)); if (param->testflag & T_SILENT) DBUG_VOID_RETURN; /* This is enough */ @@ -1298,14 +1345,14 @@ static void descript(HA_CHECK *param, register MI_INFO *info, char * name) if (param->testflag & T_VERBOSE) { #ifdef USE_RELOC - printf("Init-relocation: %13s\n",llstr(share->base.reloc,llbuff)); + printf("Init-relocation: %15s\n",llstr(share->base.reloc,llbuff)); #endif - printf("Datafile parts: %13s Deleted data: %13s\n", + printf("Datafile parts: %15s Deleted data: %18s\n", llstr(share->state.split,llbuff), llstr(info->state->empty,llbuff2)); - printf("Datafile pointer (bytes):%9d Keyfile pointer (bytes):%9d\n", + printf("Datafile pointer (bytes):%11d Keyfile pointer (bytes): %13d\n", share->rec_reflength,share->base.key_reflength); - printf("Datafile length: %13s Keyfile length: %13s\n", + printf("Datafile length: %17s Keyfile length: %18s\n", llstr(info->state->data_file_length,llbuff), llstr(info->state->key_file_length,llbuff2)); @@ -1315,13 +1362,13 @@ static void descript(HA_CHECK *param, register MI_INFO *info, char * name) { if (share->base.max_data_file_length != HA_OFFSET_ERROR || share->base.max_key_file_length != HA_OFFSET_ERROR) - printf("Max datafile length: %13s Max keyfile length: %13s\n", + printf("Max datafile length: %15s Max keyfile length: %18s\n", llstr(share->base.max_data_file_length-1,llbuff), ullstr(share->base.max_key_file_length - 1, llbuff2)); } } - printf("Recordlength: %13d\n",(int) share->base.pack_reclength); + printf("Recordlength: %15d\n",(int) share->base.pack_reclength); if (! mi_is_all_keys_active(share->state.key_map, share->base.keys)) { longlong2str(share->state.key_map,buff,2); @@ -1331,7 +1378,7 @@ static void descript(HA_CHECK *param, register MI_INFO *info, char * name) puts("\ntable description:"); printf("Key Start Len Index Type"); if (param->testflag & T_VERBOSE) - printf(" Rec/key Root Blocksize"); + printf(" Rec/key Root Blocksize"); (void) putchar('\n'); for (key=keyseg_nr=0, keyinfo= &share->keyinfo[0] ; @@ -1368,7 +1415,7 @@ static void descript(HA_CHECK *param, register MI_INFO *info, char * name) else buff[0]=0; if (param->testflag & T_VERBOSE) - printf("%11lu %12s %10d", + printf("%11lu %14s %10d", share->state.rec_per_key_part[keyseg_nr++], buff,keyinfo->block_length); (void) putchar('\n'); diff --git a/storage/myisam/myisamdef.h b/storage/myisam/myisamdef.h index 3a389802457..c9a6b550b76 100644 --- a/storage/myisam/myisamdef.h +++ b/storage/myisam/myisamdef.h @@ -207,7 +207,8 @@ typedef struct st_mi_isam_share uint32 ftkeys; /* Number of full-text keys + 1 */ File kfile; /* Shared keyfile */ File data_file; /* Shared data file */ - int mode; /* mode of file on open */ + int index_mode; /* mode on index file on open */ + int data_mode; /* mode of data file on open */ uint reopen; /* How many times reopened */ uint w_locks,r_locks,tot_locks; /* Number of read/write locks */ uint blocksize; /* blocksize of keyfile */ From 24821e95854d4ea470f083603157f5b11190f04a Mon Sep 17 00:00:00 2001 From: Monty Date: Tue, 5 Aug 2025 20:57:46 +0300 Subject: [PATCH 07/43] Copied recent improvements for MyISAM to Aria - data files will be opened in readonly mode for repair if --quick is used. - Added information about check progress if --verbose is used. - Added new option --keys-active= as a simpler version of keys-used. Internal changes: - Store open file mode in share->index_mode and share->data_mode instead of in share->mode. - Removed not needed 'mode' argument from maria_clone_internal() --- storage/maria/aria_chk.c | 56 +++++++++++++++++++++++++++++++---- storage/maria/ma_check.c | 18 ++++++++++- storage/maria/ma_checkpoint.c | 2 +- storage/maria/ma_dynrec.c | 2 +- storage/maria/ma_open.c | 48 ++++++++++++++++++------------ storage/maria/maria_def.h | 3 +- 6 files changed, 101 insertions(+), 28 deletions(-) diff --git a/storage/maria/aria_chk.c b/storage/maria/aria_chk.c index c35ca3fc569..f1d618b8a9d 100644 --- a/storage/maria/aria_chk.c +++ b/storage/maria/aria_chk.c @@ -248,7 +248,7 @@ enum options_mc { OPT_MAX_RECORD_LENGTH, OPT_AUTO_CLOSE, OPT_STATS_METHOD, OPT_TRANSACTION_LOG, OPT_ZEROFILL_KEEP_LSN, OPT_REQUIRE_CONTROL_FILE, OPT_IGNORE_CONTROL_FILE, - OPT_LOG_DIR, OPT_WARNING_FOR_WRONG_TRANSID + OPT_LOG_DIR, OPT_WARNING_FOR_WRONG_TRANSID,OPT_ACTIVE_KEYS }; static struct my_option my_long_options[] = @@ -319,10 +319,16 @@ static struct my_option my_long_options[] = (uchar**)&opt_ignore_control_file, 0, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"keys-used", 'k', - "Tell Aria to update only some specific keys. # is a bit mask of which keys to use. This can be used to get faster inserts.", + "Tell Aria to update only some specific keys. # is a bit mask of which keys to use. This can be used to get faster inserts. See also keys-active", &check_param.keys_in_use, &check_param.keys_in_use, 0, GET_ULL, REQUIRED_ARG, -1, 0, 0, 0, 0, 0}, + {"keys-active", OPT_ACTIVE_KEYS, + "Threat all not listed keys as disabled. If used with repair, the keys " + "will be disabled permanently. The argument is a list of key numbers, " + "starting from 1, separated by ','. " + "keys-active and keys-used are two ways to do the same thing", + 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"datadir", 'h', "Path for control file (and logs if --logdir not used).", (char**) &maria_data_root, 0, 0, GET_STR, REQUIRED_ARG, @@ -455,7 +461,7 @@ static struct my_option my_long_options[] = REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, { "stats_method", OPT_STATS_METHOD, "Specifies how index statistics collection code should treat NULLs. " - "Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), " + "Possible values of name are \"nulls_unequal\" (default behavior for MySQL 4.1/5.0), " "\"nulls_equal\" (emulate 4.0 behavior), and \"nulls_ignored\".", (char**) &maria_stats_method_str, (char**) &maria_stats_method_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -472,7 +478,7 @@ static struct my_option my_long_options[] = static void print_version(void) { - printf("%s Ver 1.3 for %s on %s\n", my_progname, SYSTEM_TYPE, + printf("%s Ver 1.4 for %s on %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE); } @@ -566,6 +572,11 @@ Recover (repair)/ options (When using '--recover' or '--safe-recover'):\n\ -k, --keys-used=# Tell Aria to update only some specific keys. # is a\n\ bit mask of which keys to use. This can be used to\n\ get faster inserts.\n\ + --keys-active\n\ + Treat all not listed keys as disabled. If used with repair, the keys\n\ + will be disabled permanently. The argument is a list of key numbers,\n\ + starting from 1, separated by ','\n\ + keys-active and keys-used are two ways to do the same thing\n\ --max-record-length=#\n\ Skip rows bigger than this if aria_chk can't allocate\n\ memory to hold it.\n\ @@ -750,6 +761,32 @@ get_one_option(const struct my_option *opt, case 'k': check_param.keys_in_use= (ulonglong) strtoll(argument, NULL, 10); break; + case OPT_ACTIVE_KEYS: + if (argument == disabled_my_option) + check_param.keys_in_use= ~0LL; + else + { + const char *start; + char *end, *str_end= strend(argument); + check_param.keys_in_use= 0; + for (start= argument; *start ; start= end) + { + int error; + longlong key; + end= str_end; + key= my_strtoll10(start, &end, &error); + if (error || key > 64 || (*end && *end != ',')) + { + fprintf(stderr, "Wrong argument to active-keys. Expected a list of " + "numbers like 1,2,3,4\n"); + exit(1); /* Change to my_exit after merge */ + } + check_param.keys_in_use|= 1LL << (key-1); + if (*end == ',') + end++; + } + } + break; case 'm': if (argument == disabled_my_option) check_param.testflag&= ~T_MEDIUM; @@ -1032,7 +1069,9 @@ static int maria_chk(HA_CHECK *param, char *filename) if (!(info=maria_open(filename, (param->testflag & (T_DESCRIPT | T_READONLY)) ? O_RDONLY : O_RDWR, - HA_OPEN_FOR_REPAIR | + HA_OPEN_FOR_REPAIR | HA_OPEN_FORCE_MODE | + ((param->testflag & T_QUICK) ? + HA_OPEN_DATA_READONLY : 0) | ((param->testflag & T_WAIT_FOREVER) ? HA_OPEN_WAIT_IF_LOCKED : (param->testflag & T_DESCRIPT) ? @@ -1160,6 +1199,13 @@ static int maria_chk(HA_CHECK *param, char *filename) DBUG_RETURN(0); } } + + /* Don't allow disable of active auto_increment keys for repair */ + if (share->base.auto_key && + (share->state.key_map & (1LL << share->base.auto_key)) && + param->testflag & (T_REP_ANY | T_SORT_RECORDS | T_SORT_INDEX)) + check_param.keys_in_use|= (1LL << share->base.auto_key); + if ((param->testflag & (T_REP_ANY | T_STATISTICS | T_SORT_RECORDS | T_SORT_INDEX)) && (((param->testflag & T_UNPACK) && diff --git a/storage/maria/ma_check.c b/storage/maria/ma_check.c index 1b4b1bf8a57..8e7f038d044 100644 --- a/storage/maria/ma_check.c +++ b/storage/maria/ma_check.c @@ -594,6 +594,11 @@ int maria_chk_key(HA_CHECK *param, register MARIA_HA *info) param->max_level=0; if (chk_index(param, info,keyinfo, &page, &keys, param->key_crc+key,1)) DBUG_RETURN(-1); + if ((param->testflag & T_WRITE_LOOP) && param->verbose) + { + puts(" \r"); + fflush(stdout); + } if (!(keyinfo->flag & (HA_FULLTEXT | HA_SPATIAL | HA_RTREE_INDEX))) { if (keys != share->state.state.records) @@ -695,7 +700,8 @@ do_stat: puts(""); } if (param->key_file_blocks != share->state.state.key_file_length && - share->state.key_map == ~(ulonglong) 0) + maria_is_all_keys_active(share->state.key_map, share->base.keys) && + !full_text_keys) _ma_check_print_warning(param, "Some data are unreferenced in keyfile"); if (found_keys != full_text_keys) param->record_checksum=old_record_checksum-init_checksum; /* Remove delete links */ @@ -1089,6 +1095,15 @@ static int chk_index(HA_CHECK *param, MARIA_HA *info, MARIA_KEYDEF *keyinfo, goto err; } param->record_checksum+= (ha_checksum) record; + if ((param->testflag & T_WRITE_LOOP) && param->verbose && + (*keys % WRITE_COUNT) == 0) + { + char llbuff[22]; + ulonglong records= info->state->records; + printf("%15s (%3.4f%%)\r", llstr(*keys, llbuff), + ((double) *keys / (records > *keys ? records : *keys)) *100); + fflush(stdout); + } } if (keypos != endpos) { @@ -5721,6 +5736,7 @@ static int sort_key_write(MARIA_SORT_PARAM *sort_param, const uchar *a) { _ma_check_print_error(param, "Internal error: Keys are not in order from sort"); + DBUG_ASSERT(0); return(1); } #endif diff --git a/storage/maria/ma_checkpoint.c b/storage/maria/ma_checkpoint.c index 2741f54d7d7..e5b35072cde 100644 --- a/storage/maria/ma_checkpoint.c +++ b/storage/maria/ma_checkpoint.c @@ -790,7 +790,7 @@ static int collect_tables(LEX_STRING *str, LSN checkpoint_start_log_horizon) MARIA_SHARE *share= info->s; /* the first three variables below can never change */ if (share->base.born_transactional && !share->temporary && - share->mode != O_RDONLY && + (share->index_mode != O_RDONLY && share->data_mode != O_RDONLY) && !(share->in_checkpoint & MARIA_CHECKPOINT_SEEN_IN_LOOP)) { /* diff --git a/storage/maria/ma_dynrec.c b/storage/maria/ma_dynrec.c index fed1bf411f4..ee5b9772bcf 100644 --- a/storage/maria/ma_dynrec.c +++ b/storage/maria/ma_dynrec.c @@ -70,7 +70,7 @@ my_bool _ma_dynmap_file(MARIA_HA *info, my_off_t size) */ info->s->file_map= (uchar*) my_mmap(0, (size_t)(size + MEMMAP_EXTRA_MARGIN), - info->s->mode==O_RDONLY ? PROT_READ : + info->s->index_mode==O_RDONLY ? PROT_READ : PROT_READ | PROT_WRITE, MAP_SHARED | MAP_NORESERVE, info->dfile.file, 0L); diff --git a/storage/maria/ma_open.c b/storage/maria/ma_open.c index da5d9dbd212..5c247ad5406 100644 --- a/storage/maria/ma_open.c +++ b/storage/maria/ma_open.c @@ -75,7 +75,6 @@ MARIA_HA *_ma_test_if_reopen(const char *filename) SYNOPSIS maria_clone_internal() share Share of already open table - mode Mode of table (O_RDONLY | O_RDWR) data_file Filedescriptor of data file to use < 0 if one should open open it. internal_table <> 0 if this is an internal temporary table @@ -86,7 +85,7 @@ MARIA_HA *_ma_test_if_reopen(const char *filename) */ static MARIA_HA *maria_clone_internal(MARIA_SHARE *share, - int mode, File data_file, + File data_file, uint internal_table, struct ms3_st *s3) { @@ -100,11 +99,6 @@ static MARIA_HA *maria_clone_internal(MARIA_SHARE *share, errpos= 0; bzero((uchar*) &info,sizeof(info)); - if (mode == O_RDWR && share->mode == O_RDONLY) - { - my_errno=EACCES; /* Can't open in write mode */ - goto err; - } if (data_file >= 0) info.dfile.file= data_file; else if (_ma_open_datafile(&info, share)) @@ -261,7 +255,8 @@ err: MARIA_HA *maria_open(const char *name, int mode, uint open_flags, S3_INFO *s3) { - int open_mode= 0,save_errno; + int save_errno; + int open_mode, try_open_mode; uint i,j,len,errpos,head_length,base_pos,keys, realpath_err, key_parts,base_key_parts,unique_key_parts,fulltext_keys,uniques; uint internal_table= MY_TEST(open_flags & HA_OPEN_INTERNAL_TABLE); @@ -345,14 +340,24 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags, goto err; }); DEBUG_SYNC_C("mi_open_kfile"); + + /* + We first try to open the file on read-write mode to ensure + that the table is usable for future read and write queries in + MariaDB. Only if the read-write mode fails we try to readonly. + */ + try_open_mode= (open_flags & HA_OPEN_FORCE_MODE) ? mode : O_RDWR; + if ((kfile=mysql_file_open(key_file_kfile, name_buff, - (open_mode=O_RDWR) | O_SHARE | O_NOFOLLOW | O_CLOEXEC, + (open_mode=try_open_mode) | O_SHARE | + O_NOFOLLOW | O_CLOEXEC, MYF(common_flag | MY_NOSYMLINKS))) < 0) { - if ((errno != EROFS && errno != EACCES) || + if ((errno != EROFS && errno != EACCES) || open_mode == O_RDONLY || mode != O_RDONLY || (kfile=mysql_file_open(key_file_kfile, name_buff, - (open_mode=O_RDONLY) | O_SHARE | O_NOFOLLOW | O_CLOEXEC, + (open_mode=O_RDONLY) | O_SHARE | + O_NOFOLLOW | O_CLOEXEC, MYF(common_flag | MY_NOSYMLINKS))) < 0) goto err; } @@ -400,7 +405,9 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags, } #endif /* WITH_S3_STORAGE_ENGINE */ - share->mode=open_mode; + share->index_mode= share->data_mode= open_mode; + if (open_flags & HA_OPEN_DATA_READONLY) + share->data_mode= O_RDONLY; if (memcmp(share->state.header.file_version, maria_file_magic, 4)) { DBUG_PRINT("error",("Wrong header in %s",name_buff)); @@ -447,7 +454,9 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags, my_errno= HA_WRONG_CREATE_OPTION; goto err; } - share->mode|= O_NOFOLLOW; /* all symlinks are resolved by realpath() */ + /* all symlinks are resolved by realpath() */ + share->index_mode|= O_NOFOLLOW; + share->data_mode|= O_NOFOLLOW; } } else @@ -1171,7 +1180,7 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags, s3f.free(&index_header); #endif /* WITH_S3_STORAGE_ENGINE */ - if (!(m_info= maria_clone_internal(share, mode, data_file, + if (!(m_info= maria_clone_internal(share, data_file, internal_table, s3_client))) goto err; @@ -2053,12 +2062,12 @@ void _ma_set_index_pagecache_callbacks(PAGECACHE_FILE *file, int _ma_open_datafile(MARIA_HA *info, MARIA_SHARE *share) { - myf flags= ((share->mode & O_NOFOLLOW) ? MY_NOSYMLINKS | MY_WME : MY_WME) | - share->malloc_flag; + myf flags= ((share->data_mode & O_NOFOLLOW) ? + MY_NOSYMLINKS | MY_WME : MY_WME) | share->malloc_flag; DEBUG_SYNC_C("mi_open_datafile"); info->dfile.file= share->bitmap.file.file= mysql_file_open(key_file_dfile, share->data_file_name.str, - share->mode | O_SHARE | O_CLOEXEC, flags); + share->data_mode | O_SHARE | O_CLOEXEC, flags); return info->dfile.file >= 0 ? 0 : 1; } @@ -2072,8 +2081,9 @@ int _ma_open_keyfile(MARIA_SHARE *share) mysql_mutex_lock(&share->intern_lock); share->kfile.file= mysql_file_open(key_file_kfile, share->unique_file_name.str, - share->mode | O_SHARE | O_NOFOLLOW | O_CLOEXEC, - MYF(MY_WME | MY_NOSYMLINKS)); + share->index_mode | O_SHARE | O_NOFOLLOW | + O_CLOEXEC, + MYF(MY_WME | MY_NOSYMLINKS)); mysql_mutex_unlock(&share->intern_lock); return (share->kfile.file < 0); } diff --git a/storage/maria/maria_def.h b/storage/maria/maria_def.h index c1f29c765c0..4c63e731e5e 100644 --- a/storage/maria/maria_def.h +++ b/storage/maria/maria_def.h @@ -765,7 +765,8 @@ typedef struct st_maria_share PAGECACHE_FILE kfile; /* Shared keyfile */ S3_INFO *s3_path; /* Connection and path in s3 */ File data_file; /* Shared data file */ - int mode; /* mode of file on open */ + int index_mode; /* mode on index file on open */ + int data_mode; /* mode of data file on open */ uint reopen; /* How many times opened */ uint in_trans; /* Number of references by trn */ uint w_locks, r_locks, tot_locks; /* Number of read/write locks */ From d2ce0650adaa0298bee5adb529ca1a8bbabfbae0 Mon Sep 17 00:00:00 2001 From: Monty Date: Sat, 2 Aug 2025 16:47:38 +0300 Subject: [PATCH 08/43] MDEV-37356 Annotate_rows written in a 'random' position Ensure that Annotate_rows is always written direct after GTID information, before any table_map events. Before this patch, the following problems existed when mixing transactional and not transactional tables in the same statement: - Annotate rows could be written after row events or in the next GTID event. - See rpl_row_mixing_engines - Annotate_rows was not always written to binary log in case of error with a transactional table (rolled back) but a not transactional table was updated. - See sp_trans_log, binlog_row_mix_innodb_myisam Fixed by writing the Annotate_rows event into the non transactional cache if there are not transactional tables used. If not, write the event into the transactional cache. --- mysql-test/main/sp_trans_log.result | 1 + mysql-test/main/sp_trans_log.test | 2 +- .../r/binlog_row_mix_innodb_myisam.result | 12 ++ .../suite/rpl/r/rpl_create_select_row.result | 1 + .../rpl/r/rpl_mixed_mixing_engines.result | 116 +++++++++++---- ...rpl_non_direct_mixed_mixing_engines.result | 116 +++++++++++---- .../rpl_non_direct_row_mixing_engines.result | 136 +++++++++++++----- .../suite/rpl/r/rpl_row_mixing_engines.result | 136 +++++++++++++----- sql/log.cc | 113 +++++++++++---- sql/rpl_injector.cc | 2 +- sql/sql_class.h | 4 +- sql/sql_table.cc | 6 +- sql/table.h | 2 + 13 files changed, 484 insertions(+), 163 deletions(-) diff --git a/mysql-test/main/sp_trans_log.result b/mysql-test/main/sp_trans_log.result index adc9eafc370..575134a443d 100644 --- a/mysql-test/main/sp_trans_log.result +++ b/mysql-test/main/sp_trans_log.result @@ -19,6 +19,7 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY' include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into t1 values (null) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT diff --git a/mysql-test/main/sp_trans_log.test b/mysql-test/main/sp_trans_log.test index 12efcc46ada..0b1dd55a78e 100644 --- a/mysql-test/main/sp_trans_log.test +++ b/mysql-test/main/sp_trans_log.test @@ -40,7 +40,7 @@ insert into t2 values (bug23333(),1); # the following must show there are events after the query # the binlog_limit is used to hide the differences between the mixed # and row logging formats after BUG#53259 -let $binlog_limit= 0, 4; +let $binlog_limit= 0, 5; source include/show_binlog_events.inc; select count(*),@a from t1 /* must be 1,1 */; diff --git a/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result index 88d1f7dd42e..ce6847d59d3 100644 --- a/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result +++ b/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result @@ -619,6 +619,7 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY' include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into t1 values (null) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -635,6 +636,7 @@ ERROR 23000: Duplicate entry '2' for key 'PRIMARY' include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into t1 values (null) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -671,6 +673,7 @@ ERROR 23000: Duplicate entry '2' for key 'PRIMARY' include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into t1 values (null) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -703,6 +706,7 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY' include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into t1 values (null) master-bin.000001 # Table_map # # table_id: # (test.t3) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -725,6 +729,7 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY' include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # delete t2.* from t2,t5 where t2.a=t5.a + 1 master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -747,6 +752,7 @@ count(*) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into t1 values (null) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -862,6 +868,7 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY' include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into t1 values (null) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -877,6 +884,7 @@ ERROR 23000: Duplicate entry '2' for key 'PRIMARY' include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into t1 values (null) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -911,6 +919,7 @@ ERROR 23000: Duplicate entry '2' for key 'PRIMARY' include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into t1 values (null) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -942,6 +951,7 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY' include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into t1 values (null) master-bin.000001 # Table_map # # table_id: # (test.t3) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -963,6 +973,7 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY' include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # delete t2.* from t2,t5 where t2.a=t5.a + 1 master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -984,6 +995,7 @@ count(*) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into t1 values (null) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT diff --git a/mysql-test/suite/rpl/r/rpl_create_select_row.result b/mysql-test/suite/rpl/r/rpl_create_select_row.result index 3176415fc5b..fb0e3922b9e 100644 --- a/mysql-test/suite/rpl/r/rpl_create_select_row.result +++ b/mysql-test/suite/rpl/r/rpl_create_select_row.result @@ -120,6 +120,7 @@ ERROR 42S02: Table 'test.t_y' doesn't exist include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # insert into ti_pk set a=1 master-bin.000001 # Table_map # # table_id: # (test.ta) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT diff --git a/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result b/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result index 8f5184fabc1..6ff5f67ee49 100644 --- a/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result +++ b/mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result @@ -6801,6 +6801,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -6814,7 +6815,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4) @@ -6824,11 +6824,11 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4) @@ -6845,6 +6845,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -6858,7 +6859,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4) @@ -6868,11 +6868,11 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4) @@ -6889,6 +6889,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (212, 2, fc_i_nt_5_suc(212, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -6906,7 +6907,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -6918,6 +6918,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -6926,7 +6927,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7110,6 +7110,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7130,6 +7131,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7149,6 +7151,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7173,6 +7176,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7367,6 +7371,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7385,6 +7390,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7400,6 +7406,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7418,6 +7425,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7433,6 +7441,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (226, 2, fc_i_nt_5_suc(226, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',226), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7455,6 +7464,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',226), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7616,6 +7626,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7634,6 +7645,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7650,6 +7662,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7672,6 +7685,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7924,6 +7938,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7934,7 +7949,6 @@ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2) -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -7943,12 +7957,12 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2) -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -7968,6 +7982,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7978,7 +7993,6 @@ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2) -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -7987,12 +8001,12 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2) -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -8012,6 +8026,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (240, 4, fc_i_nt_5_suc(240, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8026,7 +8041,6 @@ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2) -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8037,6 +8051,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8046,7 +8061,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2) -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8236,6 +8250,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8252,6 +8267,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8275,6 +8291,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8295,6 +8312,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8496,6 +8514,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8510,6 +8529,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8529,6 +8549,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8543,6 +8564,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8562,6 +8584,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (254, 4, fc_i_nt_5_suc(254, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',254), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8580,6 +8603,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',254), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8748,6 +8772,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8762,6 +8787,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8782,6 +8808,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8800,6 +8827,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9066,6 +9094,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9083,7 +9112,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -9092,6 +9120,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9099,7 +9128,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (266, 4) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -9115,6 +9143,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9132,7 +9161,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -9141,6 +9169,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9148,7 +9177,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (267, 4) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -9164,6 +9192,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (268, 2, fc_i_nt_5_suc(268, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9185,7 +9214,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9196,6 +9224,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9207,7 +9236,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (268, 4) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9391,6 +9419,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9411,6 +9440,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9430,6 +9460,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9454,6 +9485,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9687,6 +9719,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9709,6 +9742,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9727,6 +9761,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9749,6 +9784,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9767,6 +9803,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (282, 2, fc_i_nt_5_suc(282, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',282), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9793,6 +9830,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',282), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9989,6 +10027,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10011,6 +10050,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10030,6 +10070,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10056,6 +10097,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10332,6 +10374,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10341,7 +10384,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10353,11 +10395,11 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (294, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10381,6 +10423,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10390,7 +10433,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10402,11 +10444,11 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (295, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10430,6 +10472,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (296, 4, fc_i_nt_5_suc(296, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10443,7 +10486,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10457,6 +10499,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (296, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10465,7 +10508,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10656,6 +10698,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10671,6 +10714,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (301, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10695,6 +10739,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10714,6 +10759,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (302, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10951,6 +10997,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10968,6 +11015,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (308, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10991,6 +11039,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11008,6 +11057,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (309, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11031,6 +11081,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (310, 4, fc_i_nt_5_suc(310, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',310), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11052,6 +11103,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (310, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',310), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11252,6 +11304,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11269,6 +11322,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (315, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11293,6 +11347,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11314,6 +11369,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (316, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13138,6 +13194,7 @@ SET @var= fc_i_nt_3_tt_3_suc(370, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -13152,7 +13209,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(370,4) @@ -13162,12 +13218,12 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(370,4) @@ -13188,6 +13244,7 @@ SET @var= fc_i_nt_3_tt_3_suc(371, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -13199,7 +13256,6 @@ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(371,2) -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13208,13 +13264,13 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(371,2) -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13230,6 +13286,7 @@ SET @var= fc_i_nt_3_tt_3_suc(372, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',372), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -13249,6 +13306,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',372), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -13269,6 +13327,7 @@ SET @var= fc_i_nt_3_tt_3_suc(373, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',373), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -13284,6 +13343,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',373), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F diff --git a/mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result b/mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result index 2e553e0c305..8d702674828 100644 --- a/mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result +++ b/mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result @@ -7257,6 +7257,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7270,7 +7271,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4) @@ -7280,11 +7280,11 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4) @@ -7301,6 +7301,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7314,7 +7315,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4) @@ -7324,11 +7324,11 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4) @@ -7345,6 +7345,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (212, 2, fc_i_nt_5_suc(212, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7362,7 +7363,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7374,6 +7374,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7382,7 +7383,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7566,6 +7566,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7586,6 +7587,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7605,6 +7607,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7629,6 +7632,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7823,6 +7827,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7841,6 +7846,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7856,6 +7862,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7874,6 +7881,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -7889,6 +7897,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (226, 2, fc_i_nt_5_suc(226, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',226), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -7911,6 +7920,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',226), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8072,6 +8082,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8090,6 +8101,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8106,6 +8118,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8128,6 +8141,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8380,6 +8394,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8390,7 +8405,6 @@ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2) -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -8399,12 +8413,12 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2) -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -8424,6 +8438,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8434,7 +8449,6 @@ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2) -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -8443,12 +8457,12 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2) -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -8468,6 +8482,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (240, 4, fc_i_nt_5_suc(240, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8482,7 +8497,6 @@ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2) -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8493,6 +8507,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8502,7 +8517,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2) -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8692,6 +8706,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8708,6 +8723,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8731,6 +8747,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8751,6 +8768,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -8952,6 +8970,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8966,6 +8985,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8985,6 +9005,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -8999,6 +9020,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9018,6 +9040,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (254, 4, fc_i_nt_5_suc(254, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',254), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9036,6 +9059,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',254), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9204,6 +9228,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9218,6 +9243,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9238,6 +9264,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9256,6 +9283,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9538,6 +9566,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9557,7 +9586,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -9566,6 +9594,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9575,7 +9604,6 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -9591,6 +9619,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9610,7 +9639,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -9619,6 +9647,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9628,7 +9657,6 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -9644,6 +9672,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (268, 2, fc_i_nt_5_suc(268, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9667,7 +9696,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9678,6 +9706,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9691,7 +9720,6 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9875,6 +9903,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9895,6 +9924,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9914,6 +9944,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9938,6 +9969,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10187,6 +10219,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10211,6 +10244,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10231,6 +10265,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10255,6 +10290,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10275,6 +10311,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (282, 2, fc_i_nt_5_suc(282, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',282), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10303,6 +10340,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',282), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10501,6 +10539,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10523,6 +10562,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10542,6 +10582,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10568,6 +10609,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10844,6 +10886,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10853,7 +10896,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10865,11 +10907,11 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (294, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10893,6 +10935,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10902,7 +10945,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10914,11 +10956,11 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (295, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10942,6 +10984,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (296, 4, fc_i_nt_5_suc(296, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10955,7 +10998,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10969,6 +11011,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (296, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10977,7 +11020,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11168,6 +11210,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11183,6 +11226,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (301, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11207,6 +11251,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11226,6 +11271,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (302, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11463,6 +11509,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11480,6 +11527,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (308, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11503,6 +11551,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11520,6 +11569,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (309, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11543,6 +11593,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (310, 4, fc_i_nt_5_suc(310, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',310), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11564,6 +11615,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (310, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',310), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11764,6 +11816,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11781,6 +11834,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (315, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11805,6 +11859,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11826,6 +11881,7 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; INSERT INTO nt_1(trans_id, stmt_id) VALUES (316, 2) master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13682,6 +13738,7 @@ SET @var= fc_i_nt_3_tt_3_suc(370, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -13696,7 +13753,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(370,4) @@ -13706,12 +13762,12 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(370,4) @@ -13732,6 +13788,7 @@ SET @var= fc_i_nt_3_tt_3_suc(371, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -13743,7 +13800,6 @@ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(371,2) -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13752,13 +13808,13 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Query # # use `test`; SELECT `test`.`fc_i_tt_5_suc`(371,2) -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13774,6 +13830,7 @@ SET @var= fc_i_nt_3_tt_3_suc(372, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',372), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -13793,6 +13850,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',372), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -13813,6 +13871,7 @@ SET @var= fc_i_nt_3_tt_3_suc(373, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',373), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -13828,6 +13887,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',373), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F diff --git a/mysql-test/suite/rpl/r/rpl_non_direct_row_mixing_engines.result b/mysql-test/suite/rpl/r/rpl_non_direct_row_mixing_engines.result index 56368b9bb9e..cb4e5c640ef 100644 --- a/mysql-test/suite/rpl/r/rpl_non_direct_row_mixing_engines.result +++ b/mysql-test/suite/rpl/r/rpl_non_direct_row_mixing_engines.result @@ -661,9 +661,9 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 -- include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -672,9 +672,9 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -686,9 +686,9 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -697,9 +697,9 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -711,13 +711,13 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (30, 1, fc_i_nt_5_suc(30, 1)); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -728,13 +728,13 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -839,6 +839,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (35, 1), (29, 1) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -847,6 +848,7 @@ master-bin.000001 # Query # # COMMIT include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (35, 1), (29, 1) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -859,6 +861,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (36, 1, ''), (30, 1, fc_i_nt_5_suc (36, 1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -871,6 +874,7 @@ master-bin.000001 # Query # # COMMIT include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (36, 1, ''), (30, 1, fc_i_nt_5_suc (36, 1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9201,6 +9205,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9214,7 +9219,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4) @@ -9226,11 +9230,11 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4) @@ -9249,6 +9253,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9262,7 +9267,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4) @@ -9274,11 +9278,11 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4) @@ -9297,6 +9301,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (212, 2, fc_i_nt_5_suc(212, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9314,7 +9319,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9328,6 +9332,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9336,7 +9341,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9542,6 +9546,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9564,6 +9569,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9585,6 +9591,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9611,6 +9618,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9811,6 +9819,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9829,6 +9838,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9844,6 +9854,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9862,6 +9873,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9877,6 +9889,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (226, 2, fc_i_nt_5_suc(226, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',226), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9899,6 +9912,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',226), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10064,6 +10078,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10082,6 +10097,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10098,6 +10114,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10120,6 +10137,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10392,6 +10410,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10404,7 +10423,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10413,6 +10431,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10420,7 +10439,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10440,6 +10458,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10452,7 +10471,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10461,6 +10479,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10468,7 +10487,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10488,6 +10506,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (240, 4, fc_i_nt_5_suc(240, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10504,7 +10523,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10515,6 +10533,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10526,7 +10545,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10732,6 +10750,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10750,6 +10769,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10775,6 +10795,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10797,6 +10818,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11000,6 +11022,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11014,6 +11037,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11033,6 +11057,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11047,6 +11072,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11066,6 +11092,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (254, 4, fc_i_nt_5_suc(254, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',254), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11084,6 +11111,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',254), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11252,6 +11280,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11266,6 +11295,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11286,6 +11316,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11304,6 +11335,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11594,6 +11626,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11613,7 +11646,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -11622,6 +11654,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11631,7 +11664,6 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -11647,6 +11679,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11666,7 +11699,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -11675,6 +11707,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11684,7 +11717,6 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -11700,6 +11732,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (268, 2, fc_i_nt_5_suc(268, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11723,7 +11756,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11734,6 +11766,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11747,7 +11780,6 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11951,6 +11983,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11973,6 +12006,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11994,6 +12028,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12020,6 +12055,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12279,6 +12315,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12303,6 +12340,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12323,6 +12361,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12347,6 +12386,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12367,6 +12407,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (282, 2, fc_i_nt_5_suc(282, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',282), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12395,6 +12436,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',282), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12613,6 +12655,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12637,6 +12680,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12658,6 +12702,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12686,6 +12731,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12990,6 +13036,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12999,7 +13046,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13013,11 +13059,11 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13043,6 +13089,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13052,7 +13099,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13066,11 +13112,11 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13096,6 +13142,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (296, 4, fc_i_nt_5_suc(296, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13109,7 +13156,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13125,6 +13171,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13133,7 +13180,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13346,6 +13392,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13363,6 +13410,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13389,6 +13437,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13410,6 +13459,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13673,6 +13723,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13692,6 +13743,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13717,6 +13769,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13736,6 +13789,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13761,6 +13815,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (310, 4, fc_i_nt_5_suc(310, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',310), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13784,6 +13839,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',310), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -14006,6 +14062,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -14025,6 +14082,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -14051,6 +14109,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -14074,6 +14133,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -16075,10 +16135,10 @@ SET @var= fc_i_nt_3_tt_3_suc(365, 1); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',365), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',365), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -16087,10 +16147,10 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',365), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',365), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -16312,6 +16372,7 @@ SET @var= fc_i_nt_3_tt_3_suc(370, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16326,7 +16387,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) @@ -16342,12 +16402,12 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) @@ -16374,6 +16434,7 @@ SET @var= fc_i_nt_3_tt_3_suc(371, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16391,7 +16452,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -16400,6 +16460,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16412,7 +16473,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -16428,6 +16488,7 @@ SET @var= fc_i_nt_3_tt_3_suc(372, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',372), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16447,6 +16508,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',372), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16467,6 +16529,7 @@ SET @var= fc_i_nt_3_tt_3_suc(373, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',373), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16482,6 +16545,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',373), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F diff --git a/mysql-test/suite/rpl/r/rpl_row_mixing_engines.result b/mysql-test/suite/rpl/r/rpl_row_mixing_engines.result index 56368b9bb9e..cb4e5c640ef 100644 --- a/mysql-test/suite/rpl/r/rpl_row_mixing_engines.result +++ b/mysql-test/suite/rpl/r/rpl_row_mixing_engines.result @@ -661,9 +661,9 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 -- include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -672,9 +672,9 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 28 --> 1", nt_4.info= "new text 28 --> 1" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -686,9 +686,9 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -697,9 +697,9 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (29, 1) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -711,13 +711,13 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (30, 1, fc_i_nt_5_suc(30, 1)); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -728,13 +728,13 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',30), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -839,6 +839,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (35, 1), (29, 1) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -847,6 +848,7 @@ master-bin.000001 # Query # # COMMIT include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (35, 1), (29, 1) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -859,6 +861,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (36, 1, ''), (30, 1, fc_i_nt_5_suc (36, 1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -871,6 +874,7 @@ master-bin.000001 # Query # # COMMIT include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (36, 1, ''), (30, 1, fc_i_nt_5_suc (36, 1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9201,6 +9205,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9214,7 +9219,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4) @@ -9226,11 +9230,11 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 210 --> 2", nt_4.info= "new text 210 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (210, 4) @@ -9249,6 +9253,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9262,7 +9267,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4) @@ -9274,11 +9278,11 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (211, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (211, 4) @@ -9297,6 +9301,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (212, 2, fc_i_nt_5_suc(212, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9314,7 +9319,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9328,6 +9332,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9336,7 +9341,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',212), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9542,6 +9546,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9564,6 +9569,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (217, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9585,6 +9591,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9611,6 +9618,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (218, 2, ''), (212, 2, fc_i_nt_5_suc (218, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9811,6 +9819,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9829,6 +9838,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 224 --> 2", nt_4.info= "new text 224 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9844,6 +9854,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9862,6 +9873,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (225, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -9877,6 +9889,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (226, 2, fc_i_nt_5_suc(226, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',226), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -9899,6 +9912,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',226), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10064,6 +10078,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10082,6 +10097,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (231, 2), (211, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10098,6 +10114,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10120,6 +10137,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (232, 2, ''), (212, 2, fc_i_nt_5_suc (232, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10392,6 +10410,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10404,7 +10423,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10413,6 +10431,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10420,7 +10439,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (238, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 238 --> 4", nt_4.info= "new text 238 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10440,6 +10458,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10452,7 +10471,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10461,6 +10479,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10468,7 +10487,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (239, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (239, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -10488,6 +10506,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (240, 4, fc_i_nt_5_suc(240, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10504,7 +10523,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10515,6 +10533,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10526,7 +10545,6 @@ master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # INSERT INTO tt_1(trans_id, stmt_id) VALUES (240, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',240), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10732,6 +10750,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10750,6 +10769,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (245, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -10775,6 +10795,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -10797,6 +10818,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (246, 4, ''), (240, 4, fc_i_nt_5_suc (246, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11000,6 +11022,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11014,6 +11037,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 252 --> 4", nt_4.info= "new text 252 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11033,6 +11057,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11047,6 +11072,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (253, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11066,6 +11092,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (254, 4, fc_i_nt_5_suc(254, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',254), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11084,6 +11111,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',254), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11252,6 +11280,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11266,6 +11295,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (259, 4), (239, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11286,6 +11316,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11304,6 +11335,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (260, 4, ''), (240, 4, fc_i_nt_5_suc (260, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11594,6 +11626,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11613,7 +11646,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -11622,6 +11654,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11631,7 +11664,6 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 266 --> 2", nt_4.info= "new text 266 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -11647,6 +11679,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11666,7 +11699,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -11675,6 +11707,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11684,7 +11717,6 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (267, 2) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -11700,6 +11732,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (268, 2, fc_i_nt_5_suc(268, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11723,7 +11756,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11734,6 +11766,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11747,7 +11780,6 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',268), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -11951,6 +11983,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11973,6 +12006,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (273, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -11994,6 +12028,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12020,6 +12055,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (274, 2, ''), (268, 2, fc_i_nt_5_suc (274, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12279,6 +12315,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12303,6 +12340,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 280 --> 2", nt_4.info= "new text 280 --> 2" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12323,6 +12361,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12347,6 +12386,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (281, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12367,6 +12407,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (282, 2, fc_i_nt_5_suc(282, 2)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',282), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12395,6 +12436,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',282), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12613,6 +12655,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12637,6 +12680,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (287, 2), (267, 2) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12658,6 +12702,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12686,6 +12731,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (288, 2, ''), (268, 2, fc_i_nt_5_suc (288, 2)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -12990,6 +13036,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -12999,7 +13046,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13013,11 +13059,11 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 294 --> 4", nt_4.info= "new text 294 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.tt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13043,6 +13089,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13052,7 +13099,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13066,11 +13112,11 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (295, 4) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -13096,6 +13142,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (296, 4, fc_i_nt_5_suc(296, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13109,7 +13156,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13125,6 +13171,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13133,7 +13180,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',296), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_5) master-bin.000001 # Table_map # # table_id: # (test.tt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13346,6 +13392,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13363,6 +13410,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (301, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13389,6 +13437,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13410,6 +13459,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (302, 4, ''), (296, 4, fc_i_nt_5_suc (302, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13673,6 +13723,7 @@ UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13692,6 +13743,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # UPDATE tt_4, nt_4 SET tt_4.info= "new text 308 --> 4", nt_4.info= "new text 308 --> 4" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1 master-bin.000001 # Table_map # # table_id: # (test.nt_4) master-bin.000001 # Update_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13717,6 +13769,7 @@ INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13736,6 +13789,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (309, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -13761,6 +13815,7 @@ INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (310, 4, fc_i_nt_5_suc(310, 4)) include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',310), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -13784,6 +13839,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',310), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -14006,6 +14062,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -14025,6 +14082,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_3(trans_id, stmt_id) VALUES (315, 4), (295, 4) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT @@ -14051,6 +14109,7 @@ Got one of the listed errors include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -14074,6 +14133,7 @@ master-bin.000001 # Table_map # # table_id: # (test.nt_1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id, info) VALUES (316, 4, ''), (296, 4, fc_i_nt_5_suc (316, 4)) master-bin.000001 # Table_map # # table_id: # (test.nt_5) master-bin.000001 # Table_map # # table_id: # (test.nt_6) master-bin.000001 # Write_rows_v1 # # table_id: # @@ -16075,10 +16135,10 @@ SET @var= fc_i_nt_3_tt_3_suc(365, 1); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',365), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',365), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -16087,10 +16147,10 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',365), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',365), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -16312,6 +16372,7 @@ SET @var= fc_i_nt_3_tt_3_suc(370, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16326,7 +16387,6 @@ COMMIT; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) @@ -16342,12 +16402,12 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # BEGIN GTID #-#-# -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Annotate_rows # # INSERT INTO tt_5(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',370), NAME_CONST('in_stmt_id',1)) @@ -16374,6 +16434,7 @@ SET @var= fc_i_nt_3_tt_3_suc(371, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16391,7 +16452,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -16400,6 +16460,7 @@ master-bin.000001 # Xid # # COMMIT /* XID */ include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16412,7 +16473,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F -master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',371), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.tt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Xid # # COMMIT /* XID */ @@ -16428,6 +16488,7 @@ SET @var= fc_i_nt_3_tt_3_suc(372, 2); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',372), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16447,6 +16508,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',372), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16467,6 +16529,7 @@ SET @var= fc_i_nt_3_tt_3_suc(373, 4); include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',373), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F @@ -16482,6 +16545,7 @@ include/show_binlog_events.inc include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # BEGIN GTID #-#-# +master-bin.000001 # Annotate_rows # # INSERT INTO nt_3(trans_id, stmt_id) VALUES ( NAME_CONST('p_trans_id',373), NAME_CONST('in_stmt_id',1)) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Table_map # # table_id: # (test.nt_3) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F diff --git a/sql/log.cc b/sql/log.cc index 760664e4186..76e93e84738 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -6252,6 +6252,13 @@ binlog_start_consistent_snapshot(handlerton *hton, THD *thd) /** Prepare all tables that are updated for row logging + Note that this function can be called multiple time for statements + like inserts that uses a function that modifies rows. + + The binlog_table_maps may have already been set here (which means + that the table map for all current tables in current statement have + already been written). In this case the function is marking tables + to be used later after commit. Annotate events and table maps are written by binlog_write_table_maps() */ @@ -6271,7 +6278,7 @@ void THD::binlog_prepare_for_row_logging() Write annnotated row event (the query) if needed */ -bool THD::binlog_write_annotated_row(Log_event_writer *writer) +bool THD::binlog_write_annotated_row(bool use_trans_cache) { DBUG_ENTER("THD::binlog_write_annotated_row"); @@ -6281,7 +6288,25 @@ bool THD::binlog_write_annotated_row(Log_event_writer *writer) DBUG_RETURN(0); Annotate_rows_log_event anno(this, 0, false); - DBUG_RETURN(writer->write(&anno)); + + binlog_cache_mngr *const cache_mngr= + (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton); + binlog_cache_data *cache_data= (cache_mngr-> + get_binlog_cache_data(use_trans_cache)); + IO_CACHE *file= &cache_data->cache_log; + Log_event_writer writer(file, cache_data); + if (!writer.write(&anno)) + DBUG_RETURN(0); + + mysql_bin_log.set_write_error(this, use_trans_cache); + /* + When using the non trans cache and writing to binary log failed, then + rollback is not possible. Hence report an incident. + */ + if (mysql_bin_log.check_cache_error(this, cache_data) && + lex->stmt_accessed_table(LEX::STMT_WRITES_NON_TRANS_TABLE)) + cache_data->set_incident(); + DBUG_RETURN(1); } @@ -6297,7 +6322,7 @@ bool THD::binlog_write_annotated_row(Log_event_writer *writer) bool THD::binlog_write_table_maps() { - bool with_annotate; + bool binlog_using_only_trans_tables= 1; MYSQL_LOCK *locks[2], **locks_end= locks; DBUG_ENTER("THD::binlog_write_table_maps"); @@ -6306,44 +6331,76 @@ bool THD::binlog_write_table_maps() /* Initialize cache_mngr once per statement */ binlog_start_trans_and_stmt(); - with_annotate= 1; // Write annotate with first map if ((*locks_end= extra_lock)) locks_end++; if ((*locks_end= lock)) locks_end++; + /* + Check if we are updating any non transactional tables + We also call prepare_for_row_logging() for not yet used tables + */ + for (MYSQL_LOCK **cur_lock= locks; cur_lock < locks_end ; cur_lock++) + { + TABLE **const end_ptr= (*cur_lock)->table + (*cur_lock)->table_count; + for (TABLE **table_ptr= (*cur_lock)->table; + table_ptr != end_ptr ; + table_ptr++) + { + TABLE *table= *table_ptr; + handler *file= table->file; + if (table->current_lock != F_WRLCK) + continue; + table->restore_row_logging= 0; + if (file->row_logging) + binlog_using_only_trans_tables&= file->row_logging_has_trans; + else + { + /* + We have to also write table maps for tables that have not yet been + used, like for tables in after triggers. + */ + if (table->query_id != query_id && file->prepare_for_row_logging()) + { + table->restore_row_logging= 1; + binlog_using_only_trans_tables&= file->row_logging_has_trans; + } + } + } + } + + /* + We write the Annotate_rows to the non_transactional cache if there + is a single non-transactional table and OPTION_GTID_BEGIN is not + set. If not we write to the transactional cache. This ensures + that the Annotate_rows events are written before any table maps + events to the binary log. + */ + + if (binlog_write_annotated_row(binlog_using_only_trans_tables || + variables.option_bits & OPTION_GTID_BEGIN)) + DBUG_RETURN(1); + for (MYSQL_LOCK **cur_lock= locks ; cur_lock < locks_end ; cur_lock++) { TABLE **const end_ptr= (*cur_lock)->table + (*cur_lock)->table_count; for (TABLE **table_ptr= (*cur_lock)->table; table_ptr != end_ptr ; - ++table_ptr) + table_ptr++) { TABLE *table= *table_ptr; - bool restore= 0; - /* - We have to also write table maps for tables that have not yet been - used, like for tables in after triggers - */ - if (!table->file->row_logging && - table->query_id != query_id && table->current_lock == F_WRLCK) - { - if (table->file->prepare_for_row_logging()) - restore= 1; - } - if (table->file->row_logging) - { - if (binlog_write_table_map(table, with_annotate)) - DBUG_RETURN(1); - with_annotate= 0; - } - if (restore) + if (table->current_lock != F_WRLCK || ! table->file->row_logging) + continue; + if (binlog_write_table_map(table)) + DBUG_RETURN(1); + if (table->restore_row_logging) { /* - Restore original setting so that it doesn't cause problem for the - next statement + Restore original setting, changed in the previous loop, + so that it doesn't cause problem for the next statement */ + table->restore_row_logging= 0; table->file->row_logging= table->file->row_logging_init= 0; } } @@ -6367,7 +6424,7 @@ bool THD::binlog_write_table_maps() nonzero if an error pops up when writing the table map event. */ -bool THD::binlog_write_table_map(TABLE *table, bool with_annotate) +bool THD::binlog_write_table_map(TABLE *table) { int error= 1; bool is_transactional= table->file->row_logging_has_trans; @@ -6394,10 +6451,6 @@ bool THD::binlog_write_table_map(TABLE *table, bool with_annotate) IO_CACHE *file= &cache_data->cache_log; Log_event_writer writer(file, cache_data); - if (with_annotate) - if (binlog_write_annotated_row(&writer)) - goto write_err; - DBUG_EXECUTE_IF("table_map_write_error", { if (is_transactional) diff --git a/sql/rpl_injector.cc b/sql/rpl_injector.cc index 3080d92bf63..5c626de066d 100644 --- a/sql/rpl_injector.cc +++ b/sql/rpl_injector.cc @@ -113,7 +113,7 @@ int injector::transaction::use_table(server_id_type sid, table tbl) server_id_type save_id= m_thd->variables.server_id; m_thd->set_server_id(sid); DBUG_ASSERT(tbl.is_transactional() == tbl.get_table()->file->row_logging_has_trans); - error= m_thd->binlog_write_table_map(tbl.get_table(), 0); + error= m_thd->binlog_write_table_map(tbl.get_table()); m_thd->set_server_id(save_id); DBUG_RETURN(error); } diff --git a/sql/sql_class.h b/sql/sql_class.h index 4ade92fa085..caf2deaeed8 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -3060,10 +3060,10 @@ public: int binlog_update_row(TABLE* table, bool is_transactional, const uchar *old_data, const uchar *new_data); bool prepare_handlers_for_update(uint flag); - bool binlog_write_annotated_row(Log_event_writer *writer); + bool binlog_write_annotated_row(bool use_trans_cache); void binlog_prepare_for_row_logging(); bool binlog_write_table_maps(); - bool binlog_write_table_map(TABLE *table, bool with_annotate); + bool binlog_write_table_map(TABLE *table); static void binlog_prepare_row_images(TABLE* table); void set_server_id(uint32 sid) { variables.server_id = sid; } diff --git a/sql/sql_table.cc b/sql/sql_table.cc index cce43e70db9..282c2a934f3 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -11580,7 +11580,11 @@ do_continue:; binlog_as_create_select= 1; DBUG_ASSERT(new_table->file->row_logging); new_table->mark_columns_needed_for_insert(); - thd->binlog_write_table_map(new_table, 1); + if (thd->binlog_write_annotated_row(new_table->file->row_logging_has_trans || + (thd->variables.option_bits & + OPTION_GTID_BEGIN)) || + thd->binlog_write_table_map(new_table)) + goto err_new_table_cleanup; } if (copy_data_between_tables(thd, table, new_table, ignore, order_num, order, &copied, &deleted, alter_info, diff --git a/sql/table.h b/sql/table.h index ff17b7d73d2..657641c4b75 100644 --- a/sql/table.h +++ b/sql/table.h @@ -1534,6 +1534,8 @@ public: /* used in RBR Triggers */ bool master_had_triggers; #endif + /* Temporary value used by binlog_write_table_maps(). Does not need init */ + bool restore_row_logging; REGINFO reginfo; /* field connections */ MEM_ROOT mem_root; From 536703e51eeae2fd4f51c5acf59e751693d74905 Mon Sep 17 00:00:00 2001 From: Monty Date: Sat, 2 Aug 2025 17:09:05 +0300 Subject: [PATCH 09/43] Fixed that valgrind can be used with InnoDB using aio on Linux. Fixed by calling MEM_MAKE_DEFINED() when InnoDB has read a page. Author: Vladislav Lesin vladislav.lesin@mariadb.com --- tpool/aio_libaio.cc | 5 +++++ tpool/aio_liburing.cc | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tpool/aio_libaio.cc b/tpool/aio_libaio.cc index 2f6516c729f..2ce69384cde 100644 --- a/tpool/aio_libaio.cc +++ b/tpool/aio_libaio.cc @@ -14,6 +14,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 - 1301 USA*/ #include "tpool.h" +#include "my_valgrind.h" #include #include #include @@ -136,6 +137,10 @@ class aio_libaio final : public aio #endif iocb->m_ret_len= event.res; iocb->m_err= 0; +#if __has_feature(memory_sanitizer) || defined HAVE_valgrind + if (iocb->m_opcode == aio_opcode::AIO_PREAD) + MEM_MAKE_DEFINED(iocb->m_buffer, iocb->m_ret_len); +#endif finish_synchronous(iocb); } iocb->m_internal_task.m_func= iocb->m_callback; diff --git a/tpool/aio_liburing.cc b/tpool/aio_liburing.cc index b2cd1202194..74985c0a9cd 100644 --- a/tpool/aio_liburing.cc +++ b/tpool/aio_liburing.cc @@ -18,6 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 - 1301 USA*/ #include "my_valgrind.h" #include "mysql/service_my_print_error.h" #include "mysqld_error.h" +#include "my_valgrind.h" #include @@ -179,7 +180,7 @@ private: { iocb->m_err= 0; iocb->m_ret_len= res; -#if __has_feature(memory_sanitizer) +#if __has_feature(memory_sanitizer) || defined HAVE_valgrind if (iocb->m_opcode == aio_opcode::AIO_PREAD) MEM_MAKE_DEFINED(iocb->m_buffer, res); #endif From de22bfc2ff908a36ec639f8ca2f57f45b4be4e22 Mon Sep 17 00:00:00 2001 From: Monty Date: Tue, 5 Aug 2025 18:51:22 +0300 Subject: [PATCH 10/43] Replaced defined(FORCE_INIT_OF_VARS) with UNINIT_VAR(). Better to avoid #ifdef in the main code if possible. --- sql/item_jsonfunc.cc | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/sql/item_jsonfunc.cc b/sql/item_jsonfunc.cc index 24ba3b91d4f..2224631d2ea 100644 --- a/sql/item_jsonfunc.cc +++ b/sql/item_jsonfunc.cc @@ -1727,17 +1727,14 @@ bool Item_func_json_contains_path::val_bool() uint n_arg; longlong result; json_path_t p; - int n_found; + /* + Initialization force not required after gcc 13.3 where it + correctly sees that an uninitialized read of n_found doesn't occur + with mode_one being true. + */ + int UNINIT_VAR(n_found); int array_sizes[JSON_DEPTH_LIMIT]; uint has_negative_path= 0; -#if defined(FORCE_INIT_OF_VARS) - /* - Initialization force not required after gcc 13.3 - where it correctly sees that an uninitialized read - of n_found doesn't occur with mode_one being true. - */ - n_found= 0; -#endif if ((null_value= args[0]->null_value)) return 0; From 25077539d79cf6a587c7a14c24e589e9ed38607f Mon Sep 17 00:00:00 2001 From: Monty Date: Sun, 31 Aug 2025 16:50:35 +0300 Subject: [PATCH 11/43] Moved things in TABLE to have all 'bool' variables in one place This reduced size of TABLE from 1024 bytes to 992 --- sql/table.h | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/sql/table.h b/sql/table.h index 657641c4b75..6c32f0f788c 100644 --- a/sql/table.h +++ b/sql/table.h @@ -1284,7 +1284,6 @@ private: public: - uint32 instance; /** Table cache instance this TABLE is belonging to */ THD *in_use; /* Which thread uses this */ uchar *record[3]; /* Pointer to records */ @@ -1438,7 +1437,13 @@ public: NULLable (and have NULL values when null_row=true) */ uint maybe_null; - int current_lock; /* Type of lock on table */ + uint max_keys; /* Size of allocated key_info array. */ + int current_lock; /* Type of lock on table */ + /* Number of cost info elements for possible range filters */ + uint range_rowid_filter_cost_info_elems; + uint32 instance; /** Table cache instance this TABLE is belonging to */ + + /* variables of type bool */ bool copy_blobs; /* copy_blobs when storing */ /* Set if next_number_field is in the UPDATE fields of INSERT ... ON DUPLICATE @@ -1525,7 +1530,6 @@ public: */ bool alias_name_used; /* true if table_name is alias */ bool get_fields_in_item_tree; /* Signal to fix_field */ - List vcol_refix_list; private: bool m_needs_reopen; bool created; /* For tmp tables. TRUE <=> tmp table was actually created.*/ @@ -1536,7 +1540,15 @@ public: #endif /* Temporary value used by binlog_write_table_maps(). Does not need init */ bool restore_row_logging; + bool stats_is_read; /* Persistent statistics is read for the table */ + bool histograms_are_read; +#ifdef WITH_PARTITION_STORAGE_ENGINE + /* If true, all partitions have been pruned away */ + bool all_partitions_pruned_away; +#endif + bool vers_write; // For versioning + List vcol_refix_list; REGINFO reginfo; /* field connections */ MEM_ROOT mem_root; /* this is for temporary tables created inside Item_func_group_concat */ @@ -1555,12 +1567,7 @@ public: Query_arena *expr_arena; #ifdef WITH_PARTITION_STORAGE_ENGINE partition_info *part_info; /* Partition related information */ - /* If true, all partitions have been pruned away */ - bool all_partitions_pruned_away; #endif - uint max_keys; /* Size of allocated key_info array. */ - bool stats_is_read; /* Persistent statistics is read for the table */ - bool histograms_are_read; MDL_ticket *mdl_ticket; /* @@ -1772,8 +1779,6 @@ public: key_map with_impossible_ranges; - /* Number of cost info elements for possible range filters */ - uint range_rowid_filter_cost_info_elems; /* Pointer to the array of cost info elements for range filters */ Range_rowid_filter_cost_info *range_rowid_filter_cost_info; /* The array of pointers to cost info elements for range filters */ @@ -1790,8 +1795,6 @@ public: /** System Versioning support */ - bool vers_write; - bool versioned() const { return s->versioned; From 882f6fa3aa320ffcca19c883b652d12e7b31812b Mon Sep 17 00:00:00 2001 From: Monty Date: Sun, 31 Aug 2025 17:04:19 +0300 Subject: [PATCH 12/43] Fixed typos - Removed duplicate words, like "the the" and "to to" - Removed duplicate lines (one double sort line found in mysql.cc) - Fixed some typos found while searching for duplicate words. Command used to find duplicate words: egrep -rI "\s([a-zA-Z]+)\s+\1\s" | grep -v param Thanks to Artjoms Rimdjonoks for the command and pointing out the spelling errors. --- mysql-test/main/mysqld--help.result | 5 +-- .../sys_vars/r/sysvars_server_embedded.result | 2 +- .../r/sysvars_server_notembedded.result | 4 +- sql/ddl_log.cc | 2 +- sql/debug_sync.cc | 4 +- sql/event_scheduler.cc | 2 +- sql/field.cc | 4 +- sql/filesort.cc | 2 +- sql/ha_partition.cc | 4 +- sql/ha_partition.h | 2 +- sql/handle_connections_win.cc | 2 +- sql/handler.cc | 2 +- sql/handler.h | 4 +- sql/item.cc | 8 ++-- sql/item_cmpfunc.cc | 8 ++-- sql/item_cmpfunc.h | 2 +- sql/item_func.cc | 2 +- sql/item_strfunc.cc | 2 +- sql/item_subselect.cc | 4 +- sql/item_sum.cc | 4 +- sql/item_sum.h | 2 +- sql/item_timefunc.cc | 2 +- sql/log.cc | 4 +- sql/log.h | 4 +- sql/mdl.cc | 2 +- sql/mdl.h | 6 +-- sql/multi_range_read.cc | 2 +- sql/mysqld.cc | 1 - sql/opt_range.cc | 16 ++++---- sql/opt_split.cc | 6 +-- sql/opt_subselect.cc | 4 +- sql/opt_subselect.h | 2 +- sql/opt_sum.cc | 2 +- sql/opt_table_elimination.cc | 4 +- sql/rowid_filter.cc | 2 +- sql/rowid_filter.h | 2 +- sql/rpl_filter.cc | 2 +- sql/rpl_record.cc | 2 +- sql/rpl_rli.h | 2 +- sql/share/errmsg-utf8.txt | 6 +-- sql/slave.cc | 2 +- sql/sp_pcontext.h | 2 +- sql/sql_acl_getsort.inl | 2 +- sql/sql_basic_types.h | 2 +- sql/sql_bitmap.h | 2 +- sql/sql_class.cc | 4 +- sql/sql_class.h | 6 +-- sql/sql_cte.cc | 6 +-- sql/sql_delete.cc | 2 +- sql/sql_expression_cache.cc | 2 +- sql/sql_join_cache.cc | 38 +++++++++---------- sql/sql_join_cache.h | 6 +-- sql/sql_lex.cc | 2 +- sql/sql_lex.h | 2 +- sql/sql_partition.cc | 9 ++--- sql/sql_rename.cc | 2 +- sql/sql_select.cc | 34 ++++++++--------- sql/sql_select.h | 4 +- sql/sql_sequence.h | 2 +- sql/sql_servers.cc | 2 +- sql/sql_sort.h | 2 +- sql/sql_statistics.cc | 6 +-- sql/sql_statistics.h | 2 +- sql/sql_table.cc | 4 +- sql/sql_time.cc | 2 +- sql/sql_tvc.cc | 6 +-- sql/sql_type.h | 2 +- sql/sys_vars.cc | 4 +- sql/table.cc | 2 +- sql/table.h | 2 +- sql/temporary_tables.cc | 2 +- sql/threadpool_winsockets.cc | 2 +- sql/tztime.cc | 2 +- storage/maria/aria_chk.c | 2 +- storage/maria/ma_backup.c | 2 +- storage/maria/ma_checkpoint.c | 2 +- storage/maria/ma_loghandler.c | 4 +- storage/maria/ma_open.c | 2 +- storage/maria/ma_pagecache.c | 2 +- storage/maria/ma_recovery.c | 4 +- storage/maria/ma_search.c | 2 +- storage/maria/ma_write.c | 2 +- storage/myisam/ftdefs.h | 2 +- storage/myisam/ha_myisam.h | 2 +- storage/myisam/mi_open.c | 2 +- storage/myisam/myisamchk.c | 2 +- 86 files changed, 169 insertions(+), 172 deletions(-) diff --git a/mysql-test/main/mysqld--help.result b/mysql-test/main/mysqld--help.result index 208778f9bda..4ef903aaaee 100644 --- a/mysql-test/main/mysqld--help.result +++ b/mysql-test/main/mysqld--help.result @@ -1495,9 +1495,8 @@ The following specify which files/extra groups are read (specified before remain --thread-pool-priority=name Threadpool priority. High priority connections usually start executing earlier than low priority.If priority set - to 'auto', the the actual priority(low or high) is - determined based on whether or not connection is inside - transaction. + to 'auto', the actual priority(low or high) is determined + based on whether or not connection is inside transaction. --thread-pool-size=# Number of thread groups in the pool. This parameter is roughly equivalent to maximum number of concurrently diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result index 8d1b4621bd2..90b7a495c50 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result @@ -1015,7 +1015,7 @@ COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME FOREIGN_KEY_CHECKS VARIABLE_SCOPE SESSION VARIABLE_TYPE BOOLEAN -VARIABLE_COMMENT If set to 1 (the default) foreign key constraints (including ON UPDATE and ON DELETE behavior) InnoDB tables are checked, while if set to 0, they are not checked. 0 is not recommended for normal use, though it can be useful in situations where you know the data is consistent, but want to reload data in a different order from that that specified by parent/child relationships. Setting this variable to 1 does not retrospectively check for inconsistencies introduced while set to 0. +VARIABLE_COMMENT If set to 1 (the default) foreign key constraints (including ON UPDATE and ON DELETE behavior) InnoDB tables are checked, while if set to 0, they are not checked. 0 is not recommended for normal use, though it can be useful in situations where you know the data is consistent, but want to reload data in a different order from that specified by parent/child relationships. Setting this variable to 1 does not retrospectively check for inconsistencies introduced while set to 0. NUMERIC_MIN_VALUE NULL NUMERIC_MAX_VALUE NULL NUMERIC_BLOCK_SIZE NULL diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result index acd7462bcea..d24ae5437f2 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result @@ -1045,7 +1045,7 @@ COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME FOREIGN_KEY_CHECKS VARIABLE_SCOPE SESSION VARIABLE_TYPE BOOLEAN -VARIABLE_COMMENT If set to 1 (the default) foreign key constraints (including ON UPDATE and ON DELETE behavior) InnoDB tables are checked, while if set to 0, they are not checked. 0 is not recommended for normal use, though it can be useful in situations where you know the data is consistent, but want to reload data in a different order from that that specified by parent/child relationships. Setting this variable to 1 does not retrospectively check for inconsistencies introduced while set to 0. +VARIABLE_COMMENT If set to 1 (the default) foreign key constraints (including ON UPDATE and ON DELETE behavior) InnoDB tables are checked, while if set to 0, they are not checked. 0 is not recommended for normal use, though it can be useful in situations where you know the data is consistent, but want to reload data in a different order from that specified by parent/child relationships. Setting this variable to 1 does not retrospectively check for inconsistencies introduced while set to 0. NUMERIC_MIN_VALUE NULL NUMERIC_MAX_VALUE NULL NUMERIC_BLOCK_SIZE NULL @@ -4505,7 +4505,7 @@ COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME THREAD_POOL_PRIORITY VARIABLE_SCOPE SESSION VARIABLE_TYPE ENUM -VARIABLE_COMMENT Threadpool priority. High priority connections usually start executing earlier than low priority.If priority set to 'auto', the the actual priority(low or high) is determined based on whether or not connection is inside transaction. +VARIABLE_COMMENT Threadpool priority. High priority connections usually start executing earlier than low priority.If priority set to 'auto', the actual priority(low or high) is determined based on whether or not connection is inside transaction. NUMERIC_MIN_VALUE NULL NUMERIC_MAX_VALUE NULL NUMERIC_BLOCK_SIZE NULL diff --git a/sql/ddl_log.cc b/sql/ddl_log.cc index 647e7852645..0b88567bcdb 100644 --- a/sql/ddl_log.cc +++ b/sql/ddl_log.cc @@ -2029,7 +2029,7 @@ static int ddl_log_execute_action(THD *thd, MEM_ROOT *mem_root, { LEX_CUSTRING version= {ddl_log_entry->uuid, MY_UUID_SIZE}; /* - Temporary .frm file exists. This means that that the table in + Temporary .frm file exists. This means that the table in the storage engine can be of either old or new version. If old version, delete the new .frm table and keep the old one. If new version, replace the old .frm with the new one. diff --git a/sql/debug_sync.cc b/sql/debug_sync.cc index def55a67caf..06c9c5cc05e 100644 --- a/sql/debug_sync.cc +++ b/sql/debug_sync.cc @@ -74,7 +74,7 @@ struct st_debug_sync_control /** Definitions for the debug sync facility. - 1. Global string variable to hold a set of of "signals". + 1. Global string variable to hold a set of "signals". 2. Global condition variable for signaling and waiting. 3. Global mutex to synchronize access to the above. */ @@ -1009,7 +1009,7 @@ static bool debug_sync_set_action(THD *thd, st_debug_sync_action *action) If the terminator of the token is ASCII NUL ('\0'), it returns a pointer to the terminator (string end). - If the terminator is a space character, it replaces the the first + If the terminator is a space character, it replaces the first byte of the terminator character by ASCII NUL ('\0'), skips the (now corrupted) terminator character, and skips all following space characters. It returns a pointer to the next non-space character or diff --git a/sql/event_scheduler.cc b/sql/event_scheduler.cc index b48c3a1ae80..0b1b1bfc77c 100644 --- a/sql/event_scheduler.cc +++ b/sql/event_scheduler.cc @@ -167,7 +167,7 @@ deinit_event_thread(THD *thd) thd The THD of the thread. Has to be allocated by the caller. NOTES - 1. The host of the thead is my_localhost + 1. The host of the thread is my_localhost 2. thd->net is initted with NULL - no communication. */ diff --git a/sql/field.cc b/sql/field.cc index f9fd3f850eb..9d864e5d1c8 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -1143,7 +1143,7 @@ Field_longstr::pack_sort_string(uchar *to, const SORT_FIELD_ATTR *sort_field) @details The function returns a double number between 0.0 and 1.0 as the relative position of the value of the this field in the numeric interval of [min,max]. - If the value is not in the interval the the function returns 0.0 when + If the value is not in the interval the function returns 0.0 when the value is less than min, and, 1.0 when the value is greater than max. @param min value of the left end of the interval @@ -1204,7 +1204,7 @@ static inline double safe_substract(ulonglong a, ulonglong b) @details The function returns a double number between 0.0 and 1.0 as the relative position of the value of the this field in the string interval of [min,max]. - If the value is not in the interval the the function returns 0.0 when + If the value is not in the interval the function returns 0.0 when the value is less than min, and, 1.0 when the value is greater than max. @note diff --git a/sql/filesort.cc b/sql/filesort.cc index 0b37d208ca7..b9586c9ccd3 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -2420,7 +2420,7 @@ get_addon_fields(TABLE *table, uint sortlength, /* If there is a reference to a field in the query add it - to the the set of appended fields. + to the set of appended fields. Note for future refinement: This this a too strong condition. Actually we need only the fields referred in the diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 0c5d147d493..64831227be4 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -149,7 +149,7 @@ partition_notify_tabledef_changed(handlerton *, /* - If frm_error() is called then we will use this to to find out what file + If frm_error() is called then we will use this to find out what file extensions exist for the storage engine. This is also used by the default rename_table and delete_table method in handler.cc. */ @@ -9791,7 +9791,7 @@ ha_rows ha_partition::min_rows_for_estimate() All partitions might have been left as unused during partition pruning due to, for example, an impossible WHERE condition. Nonetheless, the optimizer might still attempt to perform (e.g. range) analysis where an - estimate of the the number of rows is calculated using records_in_range. + estimate of the number of rows is calculated using records_in_range. Hence, to handle this and other possible cases, use zero as the minimum number of rows to base the estimate on if no partition is being used. */ diff --git a/sql/ha_partition.h b/sql/ha_partition.h index 38ebf8219f1..09b4802624d 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -271,7 +271,7 @@ typedef struct st_partition_part_key_multi_range_hld /* Owner object */ ha_partition *partition; - /* id of the the partition this structure is for */ + /* id of the partition this structure is for */ uint32 part_id; /* Current range we're iterating through */ diff --git a/sql/handle_connections_win.cc b/sql/handle_connections_win.cc index 9c98620e6d2..50b2cbc3d7c 100644 --- a/sql/handle_connections_win.cc +++ b/sql/handle_connections_win.cc @@ -64,7 +64,7 @@ struct Listener } /** - if not NULL, this handle can be be used in WaitForSingle/MultipleObject(s). + if not NULL, this handle can be used in WaitForSingle/MultipleObject(s). This handle will be closed when object is destroyed. If NULL, the completion notification happens in threadpool. diff --git a/sql/handler.cc b/sql/handler.cc index 7f33cbd791f..339a28cc641 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -4509,7 +4509,7 @@ void handler::print_error(int error, myf errflag) case HA_ERR_RECORD_DELETED: case HA_ERR_END_OF_FILE: /* - This errors is not not normally fatal (for example for reads). However + This errors is not normally fatal (for example for reads). However if you get it during an update or delete, then its fatal. As the user is calling print_error() (which is not done on read), we assume something when wrong with the update or delete. diff --git a/sql/handler.h b/sql/handler.h index efa4b126d2c..f0ac91a7dc1 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -2591,7 +2591,7 @@ public: bool online= false; /** - When ha_commit_inplace_alter_table() is called the the engine can + When ha_commit_inplace_alter_table() is called the engine can set this to a function to be called after the ddl log is committed. */ @@ -4049,7 +4049,7 @@ public: virtual int extra_opt(enum ha_extra_function operation, ulong arg) { return extra(operation); } /* - Table version id for the the table. This should change for each + Table version id for the table. This should change for each sucessfull ALTER TABLE. This is used by the handlerton->check_version() to ask the engine if the table definition has been updated. diff --git a/sql/item.cc b/sql/item.cc index b20f33d307a..da3219d7545 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -881,7 +881,7 @@ bool Item_field::find_item_in_field_list_processor(void *arg) Mark field in read_map NOTES - This is used by filesort to register used fields in a a temporary + This is used by filesort to register used fields in a temporary column read set or to register used fields in a view or check constraint */ @@ -1385,7 +1385,7 @@ Item *Item_num::safe_charset_converter(THD *thd, CHARSET_INFO *tocs) Create character set converter for constant items using Item_null, Item_string or Item_static_string_func. - @param tocs Character set to to convert the string to. + @param tocs Character set to convert the string to. @param lossless Whether data loss is acceptable. @param func_name Function name, or NULL. @@ -2684,7 +2684,7 @@ bool Type_std_attributes::agg_item_set_converter(const DTCollation &coll, /* For better error reporting: save the first and the second argument. - We need this only if the the number of args is 3 or 2: + We need this only if the number of args is 3 or 2: - for a longer argument list, "Illegal mix of collations" doesn't display each argument's characteristics. - if nargs is 1, then this error cannot happen. @@ -4032,7 +4032,7 @@ void Item_string::print(String *str, enum_query_type query_type) - utf8mb3 does not work well with non-BMP characters (e.g. emoji). - Simply changing utf8mb3 to utf8mb4 will not fully help: some character sets have unassigned characters, - they get lost during during cs->utf8mb4->cs round trip. + they get lost during cs->utf8mb4->cs round trip. */ str_value.print_with_conversion(str, str->charset()); } diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 82c68232a84..612bc095380 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -1470,7 +1470,7 @@ bool Item_in_optimizer::fix_fields(THD *thd, Item **ref) - subqueries that were originally EXISTS subqueries (and were coinverted by the EXISTS->IN rewrite) - When Item_in_optimizer is not not working as a pass-through, it + When Item_in_optimizer is not working as a pass-through, it - caches its "left argument", args[0]. - makes adjustments to subquery item's return value for proper NULL value handling @@ -1507,7 +1507,7 @@ bool Item_in_optimizer::walk(Item_processor processor, @details The function checks whether an expression cache is needed for this item - and if if so wraps the item into an item of the class + and if so wraps the item into an item of the class Item_cache_wrapper with an appropriate expression cache set up there. @note @@ -1758,7 +1758,7 @@ bool Item_in_optimizer::is_null() @detail Recursively transform the left and the right operand of this Item. The Right operand is an Item_in_subselect or its subclass. To avoid the - creation of new Items, we use the fact the the left operand of the + creation of new Items, we use the fact the left operand of the Item_in_subselect is the same as the one of 'this', so instead of transforming its operand, we just assign the left operand of the Item_in_subselect to be equal to the left operand of 'this'. @@ -6956,7 +6956,7 @@ void Item_equal::add_const(THD *thd, Item *c) - Also, Field_str::test_if_equality_guarantees_uniqueness() guarantees that the comparison collation of all equalities handled by Item_equal - match the the collation of the field. + match the collation of the field. Therefore, at Item_equal::add_const() time all constants constXXX should be directly comparable to each other without an additional diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index ecc93bc88b5..5e120a7e666 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -3371,7 +3371,7 @@ class Item_equal: public Item_bool_func List equal_items; /* TRUE <-> one of the items is a const item. - Such item is always first in in the equal_items list + Such item is always first in the equal_items list */ bool with_const; /* diff --git a/sql/item_func.cc b/sql/item_func.cc index 440688c100b..9e25f6e2dea 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -4892,7 +4892,7 @@ Item_func_set_user_var::fix_length_and_dec(THD *thd) Mark field in read_map NOTES - This is used by filesort to register used fields in a a temporary + This is used by filesort to register used fields in a temporary column read set or to register used fields in a view */ diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 2294171e353..91c6de6015d 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -289,7 +289,7 @@ String *Item_func_sha2::val_str_ascii(String *str) /* Convert the large number to a string-hex representation. */ array_to_hex((char *) str->ptr(), digest_buf, (uint)digest_length); - /* We poked raw bytes in. We must inform the the String of its length. */ + /* We poked raw bytes in. We must inform the String of its length. */ str->length((uint) digest_length*2); /* Each byte as two nybbles */ null_value= FALSE; diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 56f7a12c89f..9c9e97fed2d 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -1372,7 +1372,7 @@ bool subselect_single_select_engine::always_returns_one_row() const @details The function checks whether an expression cache is needed for this item - and if if so wraps the item into an item of the class + and if so wraps the item into an item of the class Item_cache_wrapper with an appropriate expression cache set up there. @note @@ -1757,7 +1757,7 @@ bool Item_in_subselect::fix_length_and_dec() @details The function checks whether an expression cache is needed for this item - and if if so wraps the item into an item of the class + and if so wraps the item into an item of the class Item_cache_wrapper with an appropriate expression cache set up there. @note diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 7c2d5f08c03..08c4114c4d2 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -136,7 +136,7 @@ bool Item_sum::init_sum_func_check(THD *thd) If the context conditions are not met the method reports an error. If the set function is aggregated in some outer subquery the method adds it to the chain of items for such set functions that is attached - to the the st_select_lex structure for this subquery. + to the st_select_lex structure for this subquery. A number of designated members of the object are used to check the conditions. They are specified in the comment before the Item_sum @@ -4388,7 +4388,7 @@ bool Item_func_group_concat::setup(THD *thd) /* Convert bit fields to bigint's in the temporary table. Needed as we cannot compare two table records containing BIT fields - stored in the the tree used for distinct/order by. + stored in the tree used for distinct/order by. Moreover we don't even save in the tree record null bits where BIT fields store parts of their data. */ diff --git a/sql/item_sum.h b/sql/item_sum.h index d0aedea2a59..6932f6f1a3a 100644 --- a/sql/item_sum.h +++ b/sql/item_sum.h @@ -139,7 +139,7 @@ class Window_spec; The general rule to detect whether a set function is legal in a query with nested subqueries is much more complicated. - Consider the the following query: + Consider the following query: SELECT t1.a FROM t1 GROUP BY t1.a HAVING t1.a > ALL (SELECT t2.c FROM t2 WHERE SUM(t1.b) < t2.c). The set function SUM(b) is used here in the WHERE clause of the subquery. diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 8fd9151e83e..8db1c08b582 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -1050,7 +1050,7 @@ uint week_mode(uint mode) If set Monday is first day of week WEEK_YEAR (1) If not set Week is in range 0-53 - Week 0 is returned for the the last week of the previous year (for + Week 0 is returned for the last week of the previous year (for a date at start of january) In this case one can get 53 for the first week of next year. This flag ensures that the week is relevant for the given year. Note that this flag is only diff --git a/sql/log.cc b/sql/log.cc index 76e93e84738..8339d7c5b23 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -3305,7 +3305,7 @@ void MYSQL_QUERY_LOG::reopen_file() DESCRIPTION - Log given command to to normal (not rotable) log file + Log given command to normal (not rotable) log file RETURN FASE - OK @@ -7479,7 +7479,7 @@ void MYSQL_BIN_LOG::checkpoint_and_purge(ulong binlog_id) /** - Searches for the first (oldest) binlog file name in in the binlog index. + Searches for the first (oldest) binlog file name in the binlog index. @param[in,out] buf_arg pointer to a buffer to hold found the first binary log file name diff --git a/sql/log.h b/sql/log.h index dd5b373024c..e779271c7f5 100644 --- a/sql/log.h +++ b/sql/log.h @@ -1224,8 +1224,8 @@ inline bool normalize_binlog_name(char *to, const char *from, bool is_relay_log) /* opt_name is not null and not empty and from is a relative path */ if (opt_name && opt_name[0] && from && !test_if_hard_path(from)) { - // take the path from opt_name - // take the filename from from + // take the path from "opt_name" + // take the filename from "from" char log_dirpart[FN_REFLEN], log_dirname[FN_REFLEN]; size_t log_dirpart_len, log_dirname_len; dirname_part(log_dirpart, opt_name, &log_dirpart_len); diff --git a/sql/mdl.cc b/sql/mdl.cc index 13d583cc49b..b870cc551df 100644 --- a/sql/mdl.cc +++ b/sql/mdl.cc @@ -1004,7 +1004,7 @@ bool MDL_context::fix_pins() @param mdl_namespace Id of namespace of object to be locked @param db Name of database to which the object belongs - @param name Name of of the object + @param name Name of the object @param mdl_type The MDL lock type for the request. */ diff --git a/sql/mdl.h b/sql/mdl.h index f37bd469bbc..0fbae298612 100644 --- a/sql/mdl.h +++ b/sql/mdl.h @@ -172,7 +172,7 @@ enum enum_mdl_type { cases when we only need to access metadata and not data, e.g. when filling an INFORMATION_SCHEMA table. Since SH lock is compatible with SNRW lock, the connection that - holds SH lock lock should not try to acquire any kind of table-level + holds the SH lock should not try to acquire any kind of table-level or row-level lock, as this can lead to a deadlock. Moreover, after acquiring SH lock, the connection should not wait for any other resource, as it might cause starvation for X locks and a potential @@ -414,8 +414,8 @@ public: @param mdl_namespace Id of namespace of object to be locked @param db Name of database to which the object belongs - @param name Name of of the object - @param key Where to store the the MDL key. + @param name Name of the object + @param key Where to store the MDL key. */ void mdl_key_init(enum_mdl_namespace mdl_namespace_arg, const char *db, const char *name_arg) diff --git a/sql/multi_range_read.cc b/sql/multi_range_read.cc index 6e8c4fd35df..3be4dc827b7 100644 --- a/sql/multi_range_read.cc +++ b/sql/multi_range_read.cc @@ -93,7 +93,7 @@ handler::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq, */ ulonglong single_point_ranges= 0; /* - The counter of of single point ranges that we succeded to assign + The counter of single point ranges that we succeded to assign to some blocks */ ulonglong assigned_single_point_ranges= 0; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 17081bec254..e2d4c96250b 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -7751,7 +7751,6 @@ static void print_help() sys_var_add_options(&all_options, sys_var::PARSE_EARLY); add_plugin_options(&all_options, &mem_root); sort_dynamic(&all_options, (qsort_cmp) option_cmp); - sort_dynamic(&all_options, (qsort_cmp) option_cmp); add_terminator(&all_options); my_print_help((my_option*) all_options.buffer); diff --git a/sql/opt_range.cc b/sql/opt_range.cc index b015bc445e9..bae471caa10 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -5852,7 +5852,7 @@ ha_rows records_in_index_intersect_extension(PARTIAL_INDEX_INTERSECT_INFO *curr, SYNOPSIS prepare_search_best_index_intersect() param common info about index ranges - tree tree of ranges for indexes than can be intersected + tree tree of ranges for indexes that can be intersected common OUT info needed for search to be filled by the function init OUT info for an initial pseudo step of the intersection plans cutoff_cost cut off cost of the interesting index intersection @@ -6505,7 +6505,7 @@ void find_index_intersect_best_extension(PARTIAL_INDEX_INTERSECT_INFO *curr) SYNOPSIS get_best_index_intersect() param common info about index ranges - tree tree of ranges for indexes than can be intersected + tree tree of ranges for indexes that can be intersected read_time cut off value for the evaluated plans DESCRIPTION @@ -8332,7 +8332,7 @@ SEL_TREE *Item_func_in::get_func_row_mm_tree(RANGE_OPT_PARAM *param, res_tree= 0; break; } - /* Join the disjunct the the OR tree that is being constructed */ + /* Join the disjunct the OR tree that is being constructed */ res_tree= !res_tree ? and_tree : tree_or(param, res_tree, and_tree); } if (omitted_tuples == argument_count() - 1) @@ -9486,7 +9486,7 @@ int and_range_trees(RANGE_OPT_PARAM *param, SEL_TREE *tree1, SEL_TREE *tree2, tree2 represents the formula RT2 AND MT2 where RT2 = R2_1 AND ... AND R2_k2, MT2=M2_1 AND ... AND M2_l2. - The result tree will represent the formula of the the following structure: + The result tree will represent the formula of the following structure: RT AND RT1MT2 AND RT2MT1, such that rt is a tree obtained by range intersection of trees tree1 and tree2, RT1MT2 = RT1M2_1 AND ... AND RT1M2_l2, @@ -9574,7 +9574,7 @@ SEL_TREE *tree_and(RANGE_OPT_PARAM *param, SEL_TREE *tree1, SEL_TREE *tree2) For each imerge in 'tree' that contains only one disjunct tree, i.e. for any imerge of the form m=rt, the function performs and operation the range part of tree, replaces rt the with the result of anding and - removes imerge m from the the merge part of 'tree'. + removes imerge m from the merge part of 'tree'. RETURN VALUE none @@ -10387,7 +10387,7 @@ SEL_ARG *key_and_with_limit(RANGE_OPT_PARAM *param, uint keyno, ( 1 < kp1 <= 2 AND ( kp2 = 2 OR kp2 = 3 ) ) OR kp1 = 3 - Is a a valid SER_ARG expression for a key of at least 2 keyparts. + Is a valid SER_ARG expression for a key of at least 2 keyparts. For simplicity, we will assume that expr2 is a single range predicate, i.e. on the form ( a < x < b AND ... ). It is easy to generalize to a @@ -11820,7 +11820,7 @@ ha_rows check_quick_select(PARAM *param, uint idx, bool index_only, { /* For any index the total number of records within all ranges - cannot be be bigger than the number of records in the table. + cannot be bigger than the number of records in the table. This check is needed as sometimes that table statistics or range estimates may be slightly out of sync. */ @@ -15480,7 +15480,7 @@ bool QUICK_GROUP_MIN_MAX_SELECT::add_range(SEL_ARG *sel_range) NOTES quick_prefix_select is made over the conditions on the whole key. It defines a number of ranges of length x. - However when jumping through the prefixes we use only the the first + However when jumping through the prefixes we use only the first few most significant keyparts in the range key. However if there are more keyparts to follow the ones we are using we must make the condition on the key inclusive (because x < "ab" means diff --git a/sql/opt_split.cc b/sql/opt_split.cc index 050d2e4a087..96459a0679e 100644 --- a/sql/opt_split.cc +++ b/sql/opt_split.cc @@ -43,7 +43,7 @@ The execution of the transformed query (Q1R) follows these steps: 1. For each row of t1 where t1.b < const a temporary table - containing all rows of of t2 with t2.a = t1.a is created + containing all rows of t2 with t2.a = t1.a is created 2. If there are any rows in the temporary table aggregation is performed for them 3. The result of the aggregation is joined with t1. @@ -155,7 +155,7 @@ subsets the operation can applied to each subset independently. In this case all rows are first partitioned into the groups each of which contains all the rows from the partitions belonging the same subset and then each group - is subpartitioned into groups in the the post join operation. + is subpartitioned into groups in the post join operation. The set of all rows belonging to the union of several partitions is called here superpartition. If a grouping operation is defined by the list @@ -1237,7 +1237,7 @@ bool JOIN::inject_best_splitting_cond(table_map excluded_tables) Test if equality is injected for split optimization @param - eq_item equality to to test + eq_item equality to test @retval true eq_item is equality injected for split optimization diff --git a/sql/opt_subselect.cc b/sql/opt_subselect.cc index 883c5107c17..5071c561a9b 100644 --- a/sql/opt_subselect.cc +++ b/sql/opt_subselect.cc @@ -3657,7 +3657,7 @@ void JOIN::dbug_verify_sj_inner_tables(uint prefix_size) const #endif /* - Remove the last join tab from from join->cur_sj_inner_tables bitmap + Remove the last join tab from join->cur_sj_inner_tables bitmap @note remaining_tables contains @tab. @@ -4901,7 +4901,7 @@ int SJ_TMP_TABLE::sj_weedout_check_row(THD *thd) ptr= tmp_table->record[0] + 1; - /* Put the the rowids tuple into table->record[0]: */ + /* Put the rowids tuple into table->record[0]: */ // 1. Store the length if (((Field_varstring*)(tmp_table->field[0]))->length_bytes == 1) diff --git a/sql/opt_subselect.h b/sql/opt_subselect.h index 7b1b810ee81..a47f452b261 100644 --- a/sql/opt_subselect.h +++ b/sql/opt_subselect.h @@ -239,7 +239,7 @@ public: /* Now find out how many different keys we will get (for now we ignore the fact that we have "keypart_i=const" restriction for - some key components, that may make us think think that loose + some key components, that may make us think that loose scan will produce more distinct records than it actually will) */ ulong rpc; diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index fe7466f2fcb..417bb3c5ddd 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -1013,7 +1013,7 @@ static bool find_key_for_maxmin(bool max_fl, TABLE_REF *ref, @param[in] ref Reference to the key value and info @param[in] field Field used the MIN/MAX expression @param[in] cond WHERE condition - @param[in] range_fl Says whether there is a condition to to be checked + @param[in] range_fl Says whether there is a condition to be checked @param[in] prefix_len Length of the constant part of the key @retval diff --git a/sql/opt_table_elimination.cc b/sql/opt_table_elimination.cc index bbdc676fe9b..c93e5421c6f 100644 --- a/sql/opt_table_elimination.cc +++ b/sql/opt_table_elimination.cc @@ -944,7 +944,7 @@ bool check_func_dependency(JOIN *join, dac.usable_tables= dep_tables; /* - Analyze the the ON expression and create Dep_module_expr objects and + Analyze the ON expression and create Dep_module_expr objects and Dep_value_field objects for the used fields. */ uint and_level=0; @@ -1411,7 +1411,7 @@ void build_eq_mods_for_cond(THD *thd, Dep_analysis_context *ctx, = AND_ij (fdep_A_[i] OR fdep_B_[j]) Then we walk over the obtained "fdep_A_[i] OR fdep_B_[j]" pairs, and - - Discard those that that have left and right part referring to different + - Discard those that have left and right part referring to different columns. We can't infer anything useful from "col1=expr1 OR col2=expr2". - When left and right parts refer to the same column, we check if they are essentially the same. diff --git a/sql/rowid_filter.cc b/sql/rowid_filter.cc index 5518c30ffbd..38374735790 100644 --- a/sql/rowid_filter.cc +++ b/sql/rowid_filter.cc @@ -452,7 +452,7 @@ void Range_rowid_filter_cost_info::trace_info(THD *thd) @details The function looks through the array of cost info for range filters and chooses the element for the range filter that promise the greatest - gain with the the ref or range access of the table by access_key_no. + gain with the ref or range access of the table by access_key_no. As the array is sorted by cross_x in ascending order the function stops the look through as soon as it reaches the first element with cross_x_adj > records because the range filter for this element and the diff --git a/sql/rowid_filter.h b/sql/rowid_filter.h index 494fd9ff1d8..d6a200ca603 100644 --- a/sql/rowid_filter.h +++ b/sql/rowid_filter.h @@ -62,7 +62,7 @@ --------------------------- If the search structure to test whether an element is in F can be fully - placed in RAM then this test is expected to be be much cheaper than a random + placed in RAM then this test is expected to be much cheaper than a random access of a record from Ti. We'll consider two search structures for pk-filters: ordered array and bloom filter. Ordered array is easy to implement, but it's space consuming. If a filter contains primary keys diff --git a/sql/rpl_filter.cc b/sql/rpl_filter.cc index f98f30eab9f..06065a5a1fe 100644 --- a/sql/rpl_filter.cc +++ b/sql/rpl_filter.cc @@ -482,7 +482,7 @@ Rpl_filter::add_table_rule(HASH* h, const char* table_spec) { const char* dot = strchr(table_spec, '.'); if (!dot) return 1; - // len is always > 0 because we know the there exists a '.' + // len is always > 0 because we know there exists a '.' uint len = (uint)strlen(table_spec); TABLE_RULE_ENT* e = (TABLE_RULE_ENT*)my_malloc(key_memory_TABLE_RULE_ENT, sizeof(TABLE_RULE_ENT) + len, diff --git a/sql/rpl_record.cc b/sql/rpl_record.cc index 6266acf7805..5637c4637c4 100644 --- a/sql/rpl_record.cc +++ b/sql/rpl_record.cc @@ -162,7 +162,7 @@ pack_row(TABLE *table, MY_BITMAP const* cols, @note The relay log information can be NULL, which means that no checking or comparison with the source table is done, simply because it is not used. This feature is used by MySQL Backup to - unpack a row from from the backup image, but can be used for other + unpack a row from the backup image, but can be used for other purposes as well. @param rli Relay log info, which can be NULL diff --git a/sql/rpl_rli.h b/sql/rpl_rli.h index d1e2a0a1e94..20c58e4aaf7 100644 --- a/sql/rpl_rli.h +++ b/sql/rpl_rli.h @@ -260,7 +260,7 @@ public: bool sql_thread_caught_up; /** Simple setter for @ref worker_threads_caught_up; - sets it `false` to to indicate new user events in queue + sets it `false` to indicate new user events in queue @pre @ref data_lock held to prevent race with is_threads_caught_up() */ inline void unset_worker_threads_caught_up() diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt index e7cbb87824c..ad124f180c8 100644 --- a/sql/share/errmsg-utf8.txt +++ b/sql/share/errmsg-utf8.txt @@ -351,7 +351,7 @@ ER_CANT_GET_WD serbian "Ne mogu da dobijem trenutni direktorijum (errno: %M)" slo "Nemôžem zistiť pracovný adresár (chybový kód: %M)" spa "No puedo obtener directorio de trabajo (Error: %M)" - swe "Kan inte inte läsa aktivt bibliotek. (Felkod: %M)" + swe "Kan inte läsa aktivt bibliotek. (Felkod: %M)" ukr "Не можу визначити робочу теку (помилка: %M)" ER_CANT_LOCK chi "无法锁定文件(错误号码:%M)" @@ -2292,7 +2292,7 @@ ER_WRONG_SUB_KEY ita "Sotto-parte della chiave errata. La parte di chiave utilizzata non e` una stringa o la lunghezza e` maggiore della parte di chiave" jpn "キーのプレフィックスが不正です。キーが文字列ではないか、プレフィックス長がキーよりも長いか、ストレージエンジンが一意索引のプレフィックス指定をサポートしていません。" kor "부정확한 서버 파트 키. 사용된 키 파트가 스트링이 아니거나 키 파트의 길이가 너무 깁니다." - nla "Foutief sub-gedeelte van de zoeksleutel. De gebruikte zoeksleutel is geen onderdeel van een string of of de gebruikte lengte is langer dan de zoeksleutel" + nla "Foutief sub-gedeelte van de zoeksleutel. De gebruikte zoeksleutel is geen onderdeel van een string of de gebruikte lengte is langer dan de zoeksleutel" nor "Feil delnøkkel. Den brukte delnøkkelen er ikke en streng eller den oppgitte lengde er lengre enn nøkkel lengden" norwegian-ny "Feil delnykkel. Den brukte delnykkelen er ikkje ein streng eller den oppgitte lengda er lengre enn nykkellengden" pol "Błędna podczę?ć klucza. Użyta czę?ć klucza nie jest łańcuchem lub użyta długo?ć jest większa niż czę?ć klucza" @@ -4548,7 +4548,7 @@ ER_FT_MATCHING_KEY_NOT_FOUND eng "Can't find FULLTEXT index matching the column list" est "Ei suutnud leida FULLTEXT indeksit, mis kattuks kasutatud tulpadega" fre "Impossible de trouver un index FULLTEXT correspondant à cette liste de colonnes" - ger "Kann keinen FULLTEXT-Index finden, der der Feldliste entspricht" + ger "Kann keinen FULLTEXT-Index finden, der Feldliste entspricht" geo "სვეტების სიის შესაბამისი FULLTEXT ინდექსი ვერ ვიპოვე" ita "Impossibile trovare un indice FULLTEXT che corrisponda all'elenco delle colonne" jpn "列リストに対応する全文索引(FULLTEXT)が見つかりません。" diff --git a/sql/slave.cc b/sql/slave.cc index 254642792a6..893e24627bd 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -999,7 +999,7 @@ int terminate_slave_threads(Master_info* mi,int thread_mask,bool skip_lock) This function is called after requesting the thread to terminate (by setting @c abort_slave member of @c Relay_log_info or @c Master_info structure to 1). Termination of the thread is - controlled with the the predicate *slave_running. + controlled with the predicate *slave_running. Function will acquire @c term_lock before waiting on the condition unless @c skip_lock is true in which case the mutex should be owned diff --git a/sql/sp_pcontext.h b/sql/sp_pcontext.h index 71846ad4620..d06a1258723 100644 --- a/sql/sp_pcontext.h +++ b/sql/sp_pcontext.h @@ -339,7 +339,7 @@ public: /// /// sp_pcontext objects are organized in a tree according to the following /// rules: -/// - one sp_pcontext object corresponds for for each BEGIN..END block; +/// - one sp_pcontext object corresponds for each BEGIN..END block; /// - one sp_pcontext object corresponds for each exception handler; /// - one additional sp_pcontext object is created to contain /// Stored Program parameters. diff --git a/sql/sql_acl_getsort.inl b/sql/sql_acl_getsort.inl index 046b412d5f6..cfd619e890b 100644 --- a/sql/sql_acl_getsort.inl +++ b/sql/sql_acl_getsort.inl @@ -77,7 +77,7 @@ There are two complications caused by multiple wild_many characters. For, say, two wild_many characters, either can accept any number of utf8 - characters, as long the the total amount of them is less then or equal to L. + characters, as long the total amount of them is less than or equal to L. Same logic applies to any number of non-consequent wild_many characters (consequent wild_many characters count as one). This gives the number of matching strings of diff --git a/sql/sql_basic_types.h b/sql/sql_basic_types.h index f592aed05a8..09307d369d2 100644 --- a/sql/sql_basic_types.h +++ b/sql/sql_basic_types.h @@ -57,7 +57,7 @@ public: - We don't put this value as a static const inside the class, because "gdb" would display it every time when we do "print" for a time_round_mode_t value. - - We can't put into into a function returning this value, because + - We can't put into a function returning this value, because it's not allowed to use functions in static_assert. */ enum known_values_t diff --git a/sql/sql_bitmap.h b/sql/sql_bitmap.h index 353601eb98a..dcd239477a4 100644 --- a/sql/sql_bitmap.h +++ b/sql/sql_bitmap.h @@ -175,7 +175,7 @@ public: private: /* - Intersect with a bitmap represented as as longlong. + Intersect with a bitmap represented as longlong. In addition, pad the rest of the bitmap with 0 or 1 bits depending on pad_with_ones parameter. */ diff --git a/sql/sql_class.cc b/sql/sql_class.cc index e821a4d4640..adc1bee9fd9 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -2080,7 +2080,7 @@ void THD::disconnect() #ifdef SIGNAL_WITH_VIO_CLOSE /* - Since a active vio might might have not been set yet, in + Since a active vio might have not been set yet, in any case save a reference to avoid closing a inexistent one or closing the vio twice if there is a active one. */ @@ -8083,7 +8083,7 @@ int THD::binlog_query(THD::enum_binlog_query_type qtype, char const *query_arg, The filter is in decide_logging_format() to mark queries to not be stored in the binary log, for example by a shared distributed engine like S3. - This function resets the filter to ensure the the query is logged if + This function resets the filter to ensure the query is logged if the binlog is active. Note that 'direct' is set to false, which means that the query will diff --git a/sql/sql_class.h b/sql/sql_class.h index caf2deaeed8..f604f8ff948 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -6690,7 +6690,7 @@ public: ("c"),("b"),("c"),("c"),("a"),("b"),("g") ("c"),("a"),("b"),("d"),("b"),("e") - - Let's demonstrate how the the set operation INTERSECT ALL is proceesed + - Let's demonstrate how the set operation INTERSECT ALL is proceesed for the query SELECT f FROM t1 INTERSECT ALL SELECT f FROM t2 @@ -6738,7 +6738,7 @@ public: |0 |1 |c | |0 |1 |c | - - Let's demonstrate how the the set operation EXCEPT ALL is proceesed + - Let's demonstrate how the set operation EXCEPT ALL is proceesed for the query SELECT f FROM t1 EXCEPT ALL SELECT f FROM t3 @@ -7341,7 +7341,7 @@ class multi_update :public select_result_interceptor { TABLE_LIST *all_tables; /* query/update command tables */ List *leaves; /* list of leaves of join table tree */ - List updated_leaves; /* list of of updated leaves */ + List updated_leaves; /* list of updated leaves */ TABLE_LIST *update_tables; TABLE **tmp_tables, *main_table, *table_to_update; TMP_TABLE_PARAM *tmp_table_param; diff --git a/sql/sql_cte.cc b/sql/sql_cte.cc index 5b3db9bca1d..278bc38305f 100644 --- a/sql/sql_cte.cc +++ b/sql/sql_cte.cc @@ -359,7 +359,7 @@ struct st_unit_ctxt_elem @details For each table reference ref(T) from the FROM list of every select sl immediately contained in the specification query of this element this - method searches for the definition of T in the the with clause which + method searches for the definition of T in the with clause which this element belongs to. If such definition is found then the dependency on it is set in sl->with_dep and in this->base_dep_map. */ @@ -624,7 +624,7 @@ TABLE_LIST *With_element::find_first_sq_rec_ref_in_select(st_select_lex *sel) @param dep_map IN/OUT The bit where to mark the found dependencies @details - This method searches in the unit 'unit' for the the references in FROM + This method searches in the unit 'unit' for the references in FROM lists of all selects contained in this unit and in the with clause attached to this unit that refer to definitions of tables from the same with clause as this element. @@ -668,7 +668,7 @@ void With_element::check_dependencies_in_unit(st_select_lex_unit *unit, @param dep_map IN/OUT The bit where to mark the found dependencies @details - This method searches in the with_clause for the the references in FROM + This method searches in the with_clause for the references in FROM lists of all selects contained in the specifications of the with elements from this with_clause that refer to definitions of tables from the same with clause as this element. diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 71d354e6423..a48d671fac6 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -521,7 +521,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, not in safe mode (not using option --safe-mode) - There is no limit clause - The condition is constant - - If there is a condition, then it it produces a non-zero value + - If there is a condition, then it produces a non-zero value - If the current command is DELETE FROM with no where clause, then: - We should not be binlogging this statement in row-based, and - there should be no delete triggers associated with the table. diff --git a/sql/sql_expression_cache.cc b/sql/sql_expression_cache.cc index 8b511b25939..34bc1e2b2ca 100644 --- a/sql/sql_expression_cache.cc +++ b/sql/sql_expression_cache.cc @@ -88,7 +88,7 @@ static uint field_enumerator(uchar *arg) @details The function creates a temporary table for the expression cache, defines the search index and initializes auxiliary search structures used to check - whether a given set of of values of the expression parameters is in some + whether a given set of values of the expression parameters is in some cache entry. */ diff --git a/sql/sql_join_cache.cc b/sql/sql_join_cache.cc index bd2174cde81..34686976d46 100644 --- a/sql/sql_join_cache.cc +++ b/sql/sql_join_cache.cc @@ -424,7 +424,7 @@ void JOIN_CACHE::create_flag_fields() the buffer. Such placement helps to optimize construction of access keys. For each field that is used to build access keys to the joined table but is stored in some other join cache buffer the function saves a pointer - to the the field descriptor. The array of such pointers are placed in the + to the field descriptor. The array of such pointers are placed in the the join cache structure just before the array of pointers to the blob fields blob_ptr. Any field stored in a join cache buffer that is used to construct keys @@ -444,7 +444,7 @@ void JOIN_CACHE::create_flag_fields() through. For each of this pointers we find out in what previous key cache the referenced field is stored. The value of 'referenced_field_no' provides us with the index into the array of offsets for referenced - fields stored in the join cache. The offset read by the the index allows + fields stored in the join cache. The offset read by the index allows us to read the field without reading all other fields of the record stored the join cache buffer. This optimizes the construction of keys to access 'join_tab' when some key arguments are stored in the previous @@ -522,7 +522,7 @@ void JOIN_CACHE::create_key_arg_fields() } } } - /* After this 'blob_ptr' shall not be be changed */ + /* After this 'blob_ptr' shall not be changed */ blob_ptr= copy_ptr; /* Now create local fields that are used to build ref for this key access */ @@ -557,7 +557,7 @@ void JOIN_CACHE::create_key_arg_fields() have to be added is determined as the difference between all read fields and and those for which the descriptors have been already created. The latter are supposed to be marked in the bitmap tab->table->tmp_set. - The function increases the value of 'length' to the the total length of + The function increases the value of 'length' to the total length of the added fields. NOTES @@ -1373,7 +1373,7 @@ uint JOIN_CACHE::write_record_data(uchar * link, bool *is_full) curr_rec_pos= cp; - /* If the there is a match flag set its value to 0 */ + /* If there is a match flag set its value to 0 */ copy= field_descr; if (with_match_flag) *copy[0].str= 0; @@ -1542,7 +1542,7 @@ uint JOIN_CACHE::write_record_data(uchar * link, bool *is_full) to point to the very beginning of the join buffer. If the buffer is reset for writing additionally: - the counter of the records in the buffer is set to 0, - - the the value of 'last_rec_pos' gets pointing at the position just + - the value of 'last_rec_pos' gets pointing at the position just before the buffer, - 'end_pos' is set to point to the beginning of the join buffer, - the size of the auxiliary buffer is reset to 0, @@ -1608,7 +1608,7 @@ bool JOIN_CACHE::put_record() This default implementation of the virtual function get_record reads fields of the next record from the join buffer of this cache. The function also reads all other fields associated with this record - from the the join buffers of the previous caches. The fields are read + from the join buffers of the previous caches. The fields are read into the corresponding record buffers. It is supposed that 'pos' points to the position in the buffer right after the previous record when the function is called. @@ -1656,7 +1656,7 @@ bool JOIN_CACHE::get_record() This default implementation of the virtual function get_record_pos reads the fields of the record positioned at 'rec_ptr' from the join buffer. The function also reads all other fields associated with this record - from the the join buffers of the previous caches. The fields are read + from the join buffers of the previous caches. The fields are read into the corresponding record buffers. RETURN VALUE @@ -2200,7 +2200,7 @@ enum_nested_loop_state JOIN_CACHE::join_records(bool skip_last) Prepare for generation of null complementing extensions. For all inner tables of the outer join operation for which regular matches have been just found the field 'first_unmatched' - is set to point the the first inner table. After all null + is set to point the first inner table. After all null complement rows are generated for this outer join this field is set back to NULL. */ @@ -2637,7 +2637,7 @@ inline bool JOIN_CACHE::check_match(uchar *rec_ptr) table records. If the 'join_tab' is the last inner table of the embedding outer join and the null complemented record satisfies the outer join - condition then the the corresponding match flag is turned on + condition then the corresponding match flag is turned on unless it has been set earlier. This setting may trigger re-evaluation of pushdown conditions for the record. @@ -2700,7 +2700,7 @@ finish: DESCRIPTION This function puts info about the type of the used join buffer (flat or - incremental) and on the type of the the employed join algorithm (BNL, + incremental) and on the type of the employed join algorithm (BNL, BNLH, BKA or BKAH) to the data structure RETURN VALUE @@ -2912,7 +2912,7 @@ int JOIN_CACHE_HASHED::init_hash_table() /* TODO: Make a better estimate for this upper bound of - the number of records in in the join buffer. + the number of records in the join buffer. */ size_t max_n= buff_size / (pack_length-length+ key_entry_length+size_of_key_ofs); @@ -3221,7 +3221,7 @@ bool JOIN_CACHE_HASHED::skip_if_not_needed_match() key_len key value length key_ref_ptr OUT position of the reference to the next key from the hash element for the found key , or - a position where the reference to the the hash + a position where the reference to the hash element for the key is to be added in the case when the key has not been found @@ -3454,7 +3454,7 @@ bool JOIN_CACHE_HASHED::check_all_match_flags_for_key(uchar *key_chain_ptr) RETURN VALUE length of the key value - if the starting value of 'cur_key_entry' refers - to the position after that referred by the the value of 'last_key_entry', + to the position after that referred by the value of 'last_key_entry', 0 - otherwise. */ @@ -3672,7 +3672,7 @@ bool JOIN_CACHE_BNL::prepare_look_for_matches(bool skip_last) RETURN VALUE pointer to the position right after the prefix of the current record - in the join buffer if the there is another record to iterate over, + in the join buffer if there is another record to iterate over, 0 - otherwise. */ @@ -3823,7 +3823,7 @@ uchar *JOIN_CACHE_BNLH::get_matching_chain_by_join_key() record from the join buffer is ignored. The function builds the hashed key from the join fields of join_tab and uses this key to look in the hash table of the join cache for - the chain of matching records in in the join buffer. If it finds + the chain of matching records in the join buffer. If it finds such a chain it sets the member last_rec_ref_ptr to point to the last link of the chain while setting the member next_rec_ref_po 0. @@ -3862,7 +3862,7 @@ bool JOIN_CACHE_BNLH::prepare_look_for_matches(bool skip_last) RETURN VALUE pointer to the beginning of the record fields in the join buffer - if the there is another record to iterate over, 0 - otherwise. + if there is another record to iterate over, 0 - otherwise. */ uchar *JOIN_CACHE_BNLH::get_next_candidate_for_match() @@ -4066,7 +4066,7 @@ int JOIN_TAB_SCAN_MRR::next() join_tab->tracker->r_rows++; join_tab->tracker->r_rows_after_where++; /* - If a record in in an incremental cache contains no fields then the + If a record in an incremental cache contains no fields then the association for the last record in cache will be equal to cache->end_pos */ /* @@ -4284,7 +4284,7 @@ DESCRIPTION RETURN VALUE pointer to the start of the record fields in the join buffer - if the there is another record to iterate over, 0 - otherwise. + if there is another record to iterate over, 0 - otherwise. */ uchar *JOIN_CACHE_BKA::get_next_candidate_for_match() diff --git a/sql/sql_join_cache.h b/sql/sql_join_cache.h index bfed7afd4fb..366498bb434 100644 --- a/sql/sql_join_cache.h +++ b/sql/sql_join_cache.h @@ -1239,7 +1239,7 @@ class JOIN_TAB_SCAN_MRR: public JOIN_TAB_SCAN /* Number of ranges to be processed by the MRR interface */ uint ranges; - /* Flag to to be passed to the MRR interface */ + /* Flag to be passed to the MRR interface */ uint mrr_mode; /* MRR buffer assotiated with this join cache */ @@ -1274,7 +1274,7 @@ class JOIN_CACHE_BKA :public JOIN_CACHE { private: - /* Flag to to be passed to the companion JOIN_TAB_SCAN_MRR object */ + /* Flag to be passed to the companion JOIN_TAB_SCAN_MRR object */ uint mrr_mode; /* @@ -1370,7 +1370,7 @@ class JOIN_CACHE_BKAH :public JOIN_CACHE_BNLH { private: - /* Flag to to be passed to the companion JOIN_TAB_SCAN_MRR object */ + /* Flag to be passed to the companion JOIN_TAB_SCAN_MRR object */ uint mrr_mode; /* diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index ceb8fa6a1fb..5e80ab4db77 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -12265,7 +12265,7 @@ bool SELECT_LEX_UNIT::explainable() const @param thd the current thread handle @param db_name name of db of the table to look for - @param db_name name of db of the table to look for + @param table_name name of table @return first found table, NULL or ERROR_TABLE */ diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 18c086bf56c..d2cf675487c 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -3342,7 +3342,7 @@ public: at parse time to set local name resolution contexts for various parts of a query. For example, in a JOIN ... ON (some_condition) clause the Items in 'some_condition' must be resolved only against the operands - of the the join, and not against the whole clause. Similarly, Items in + of the join, and not against the whole clause. Similarly, Items in subqueries should be resolved against the subqueries (and outer queries). The stack is used in the following way: when the parser detects that all Items in some clause need a local context, it creates a new context diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index da2f37d7b7f..84188fa710f 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -156,9 +156,8 @@ Item* convert_charset_partition_constant(Item *item, CHARSET_INFO *cs) @param name String searched for @param list_names A list of names searched in - @return True if if the name is in the list. - @retval true String found - @retval false String not found + @retval true String found + @retval false String not found */ static bool is_name_in_list(const char *name, List list_names) @@ -2136,7 +2135,7 @@ static int add_keyword_string(String *str, const char *keyword, /** - @brief Truncate the partition file name from a path it it exists. + @brief Truncate the partition file name from a path it exists. @note A partition file name will contian one or more '#' characters. One of the occurances of '#' will be either "#P#" or "#p#" depending @@ -3415,7 +3414,7 @@ uint32 get_list_array_idx_for_endpoint(partition_info *part_info, '2000-00-00' can be compared to '2000-01-01' but TO_DAYS('2000-00-00') returns NULL which cannot be compared used <, >, <=, >= etc. - Otherwise, just return the the first index (lowest value). + Otherwise, just return the first index (lowest value). */ enum_monotonicity_info monotonic; monotonic= part_info->part_expr->get_monotonicity_info(); diff --git a/sql/sql_rename.cc b/sql/sql_rename.cc index 1137e0e1b09..421c7198c10 100644 --- a/sql/sql_rename.cc +++ b/sql/sql_rename.cc @@ -64,7 +64,7 @@ bool mysql_rename_tables(THD *thd, TABLE_LIST *table_list, bool silent, /* Avoid problems with a rename on a table that we have locked or - if the user is trying to to do this in a transcation context + if the user is trying to do this in a transcation context */ if (thd->locked_tables_mode || thd->in_active_multi_stmt_transaction()) diff --git a/sql/sql_select.cc b/sql/sql_select.cc index d3e1ead482d..f87ad826bf9 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -6669,7 +6669,7 @@ add_key_field(JOIN *join, @note If field items f1 and f2 belong to the same multiple equality and - a key is added for f1, the the same key is added for f2. + a key is added for f1, the same key is added for f2. @returns *key_fields is incremented if we stored a key in the array @@ -8399,7 +8399,7 @@ best_access_path(JOIN *join, } while (keyuse->table == table && keyuse->key == key); /* - Assume that that each key matches a proportional part of table. + Assume that each key matches a proportional part of table. */ if (!found_part && !ft_key && !loose_scan_opt.have_a_case()) continue; // Nothing usable found @@ -8782,7 +8782,7 @@ best_access_path(JOIN *join, { double rows= record_count * records; /* - If we use filter F with selectivity s the the cost of fetching data + If we use filter F with selectivity s the cost of fetching data by key using this filter will be cost_of_fetching_1_row * rows * s + cost_of_fetching_1_key_tuple * rows * (1 - s) + @@ -9032,7 +9032,7 @@ best_access_path(JOIN *join, (1) The found 'ref' access produces more records than a table scan (or index scan, or quick select), or 'ref' is more expensive than any of them. - (2) This doesn't hold: the best way to perform table scan is to to perform + (2) This doesn't hold: the best way to perform table scan is to perform 'range' access using index IDX, and the best way to perform 'ref' access is to use the same index IDX, with the same or more key parts. (note: it is not clear how this rule is/should be extended to @@ -10151,7 +10151,7 @@ void JOIN::get_partial_cost_and_fanout(int end_tab_idx, - it operates on a JOIN that haven't yet finished its optimization phase (in particular, fix_semijoin_strategies_for_picked_join_order() and get_best_combination() haven't been called) - - it assumes the the join prefix doesn't have any semi-join plans + - it assumes the join prefix doesn't have any semi-join plans These assumptions are met by the caller of the function. */ @@ -10390,7 +10390,7 @@ double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s, as a starting point. This value includes selectivity of equality (*). We should somehow discount it. - Looking at calculate_cond_selectivity_for_table(), one can see that that + Looking at calculate_cond_selectivity_for_table(), one can see that the value is not necessarily a direct multiplicand in table->cond_selectivity @@ -11682,7 +11682,7 @@ int JOIN_TAB::make_scan_filter() @details This function finds out whether the ref items that have been chosen by the planner to access this table can be used for hash join algorithms. - The answer depends on a certain property of the the fields of the + The answer depends on a certain property of the fields of the joined tables on which the hash join key is built. @note @@ -11934,7 +11934,7 @@ JOIN_TAB *first_explain_order_tab(JOIN* join) JOIN_TAB* tab; tab= join->join_tab; if (!tab) - return NULL; /* Can happen when when the tables were optimized away */ + return NULL; /* Can happen when the tables were optimized away */ return (tab->bush_children) ? tab->bush_children->start : tab; } @@ -12894,7 +12894,7 @@ inline void add_cond_and_fix(THD *thd, Item **e1, Item *e2) Implementation overview 1. update_ref_and_keys() accumulates info about null-rejecting - predicates in in KEY_FIELD::null_rejecting + predicates in KEY_FIELD::null_rejecting 1.1 add_key_part saves these to KEYUSE. 2. create_ref_for_key copies them to TABLE_REF. 3. add_not_null_conds adds "x IS NOT NULL" to join_tab->select_cond of @@ -14504,7 +14504,7 @@ end_sj_materialize(JOIN *join, JOIN_TAB *join_tab, bool end_of_records) has been chosen. If the function decides that a join buffer can be employed then it selects the most appropriate join cache object that contains this join buffer. - The result of the check and the type of the the join buffer to be used + The result of the check and the type of the join buffer to be used depend on: - the access method to access rows of the joined table - whether the join table is an inner table of an outer join or semi-join @@ -14965,7 +14965,7 @@ restart: to re-check the same single-table condition for each joined record. This method removes from JOIN_TAB::select_cond and JOIN_TAB::select::cond - all top-level conjuncts that also appear in in JOIN_TAB::cache_select::cond. + all top-level conjuncts that also appear in JOIN_TAB::cache_select::cond. */ void JOIN_TAB::remove_redundant_bnl_scan_conds() @@ -22745,7 +22745,7 @@ sub_select_postjoin_aggr(JOIN *join, JOIN_TAB *join_tab, bool end_of_records) NOTES The function implements the algorithmic schema for both Blocked Nested Loop Join and Batched Key Access Join. The difference can be seen only at - the level of of the implementation of the put_record and join_records + the level of the implementation of the put_record and join_records virtual methods for the cache object associated with the join_tab. The put_record method accumulates records in the cache, while the join_records method builds all matching join records and send them into @@ -22913,7 +22913,7 @@ sub_select_cache(JOIN *join, JOIN_TAB *join_tab, bool end_of_records) the predicate (t2.b=5 OR t2.b IS NULL) can not be checked until t4.a=t2.a becomes true. In order not to re-evaluate the predicates that were already evaluated - as attached pushed down predicates, a pointer to the the first + as attached pushed down predicates, a pointer to the first most inner unmatched table is maintained in join_tab->first_unmatched. Thus, when the first row from t5 with t5.a=t3.a is found this pointer for t5 is changed from t4 to t2. @@ -23309,7 +23309,7 @@ evaluate_null_complemented_join_record(JOIN *join, JOIN_TAB *join_tab) COND *select_cond; for ( ; join_tab <= last_inner_tab ; join_tab++) { - /* Change the the values of guard predicate variables. */ + /* Change the values of guard predicate variables. */ join_tab->found= 1; join_tab->not_null_compl= 0; /* The outer row is complemented by nulls for each inner tables */ @@ -28738,7 +28738,7 @@ void free_underlaid_joins(THD *thd, SELECT_LEX *select) The function replaces occurrences of group by fields in expr by ref objects for these fields unless they are under aggregate functions. - The function also corrects value of the the maybe_null attribute + The function also corrects value of the maybe_null attribute for the items of all subexpressions containing group by fields. @b EXAMPLES @@ -29211,7 +29211,7 @@ void inline JOIN::clear_sum_funcs() Prepare for returning 'empty row' when there is no matching row. - Mark all tables with mark_as_null_row() - - Make a copy of of all simple SELECT items + - Make a copy of all simple SELECT items - Reset all sum functions to NULL or 0. */ @@ -31668,7 +31668,7 @@ test_if_cheaper_ordering(bool in_join_optimizer, { KEY *pkinfo=tab->table->key_info+table->s->primary_key; /* - If the values of of records per key for the prefixes + If the values of records per key for the prefixes of the primary key are considered unknown we assume they are equal to 1. */ diff --git a/sql/sql_select.h b/sql/sql_select.h index 53f97d4752a..1b6ccca7441 100644 --- a/sql/sql_select.h +++ b/sql/sql_select.h @@ -286,7 +286,7 @@ typedef struct st_join_table { st_join_table *first_inner; /**< first inner table for including outerjoin */ bool found; /**< true after all matches or null complement */ bool not_null_compl;/**< true before null complement is added */ - st_join_table *last_inner; /**< last table table for embedding outer join */ + st_join_table *last_inner; /**< last table for embedding outer join */ st_join_table *first_upper; /**< first inner table for embedding outer join */ st_join_table *first_unmatched; /**< used for optimization purposes only */ @@ -1720,7 +1720,7 @@ public: memcpy(dest, src, src_arr.size() * src_arr.element_size()); } - /// Overwrites 'ref_ptrs' and remembers the the source as 'current'. + /// Overwrites 'ref_ptrs' and remembers the source as 'current'. void set_items_ref_array(Ref_ptr_array src_arr) { copy_ref_ptr_array(ref_ptrs, src_arr); diff --git a/sql/sql_sequence.h b/sql/sql_sequence.h index fba04686d69..980a40058ba 100644 --- a/sql/sql_sequence.h +++ b/sql/sql_sequence.h @@ -80,7 +80,7 @@ protected: It's also responsible to generate new values and updating the sequence table (engine=SQL_SEQUENCE) trough it's specialized handler interface. - If increment is 0 then the sequence will be be using + If increment is 0 then the sequence will be using auto_increment_increment and auto_increment_offset variables, just like AUTO_INCREMENT is using. */ diff --git a/sql/sql_servers.cc b/sql/sql_servers.cc index ecf411ab313..0c492b32de9 100644 --- a/sql/sql_servers.cc +++ b/sql/sql_servers.cc @@ -972,7 +972,7 @@ void merge_server_struct(FOREIGN_SERVER *from, FOREIGN_SERVER *to) 0, then index_read_idx is called to read the index to that record, the record then being ready to be updated, if found. If not found an error is set and error message printed. If the record is found, store_record is - called, then store_server_fields stores each field from the the members of + called, then store_server_fields stores each field from the members of the updated FOREIGN_SERVER struct. RETURN VALUE diff --git a/sql/sql_sort.h b/sql/sql_sort.h index d11bb18e19d..48f4365e5dc 100644 --- a/sql/sql_sort.h +++ b/sql/sql_sort.h @@ -52,7 +52,7 @@ typedef struct st_sort_addon_field /* Sort addon packed field */ Field *field; /* Original field */ uint offset; /* Offset from the last sorted field */ - uint null_offset; /* Offset to to null bit from the last sorted field */ + uint null_offset; /* Offset to null bit from the last sorted field */ uint length; /* Length in the sort buffer */ uint8 null_bit; /* Null bit mask for the field */ } SORT_ADDON_FIELD; diff --git a/sql/sql_statistics.cc b/sql/sql_statistics.cc index 8e12fe7362f..96de8d6f68c 100644 --- a/sql/sql_statistics.cc +++ b/sql/sql_statistics.cc @@ -439,7 +439,7 @@ public: statistical data is to be read. E.g. if the index idx consists of 3 components (p1,p2,p3) the table index_stats usually will contain 3 rows for this index: the first - for the prefix (p1), the second - for the prefix - (p1,p2), and the third - for the the prefix (p1,p2,p3). After the key fields + (p1,p2), and the third - for the prefix (p1,p2,p3). After the key fields has been set a call of get_stat_value looks for a row by the set key value. If the row is found and the value of the avg_frequency column is not null then this value is assigned to key_info->read_stat.avg_frequency[k]. @@ -3308,7 +3308,7 @@ read_statistics_for_tables(THD *thd, TABLE_LIST *tables, bool force_reload) /* Do not read statistics for any query that explicity involves - statistical tables, failure to to do so we may end up + statistical tables, failure to do so we may end up in a deadlock. */ if (found_stat_table || !statistics_for_tables_is_needed) @@ -3345,7 +3345,7 @@ read_statistics_for_tables(THD *thd, TABLE_LIST *tables, bool force_reload) /* The following lock is here to ensure that if a lot of threads are accessing the table at the same time after a ANALYZE TABLE, - only one thread is loading the data from the the stats tables + only one thread is loading the data from the stats tables and the others threads are reusing the loaded data. */ mysql_mutex_lock(&table_share->LOCK_statistics); diff --git a/sql/sql_statistics.h b/sql/sql_statistics.h index 0a890a7d2e2..a5ff7ec7561 100644 --- a/sql/sql_statistics.h +++ b/sql/sql_statistics.h @@ -359,7 +359,7 @@ public: /* - This is used to collect the the basic statistics from a Unique object: + This is used to collect the basic statistics from a Unique object: - count of values - count of distinct values - count of distinct values that have occurred only once diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 282c2a934f3..e7e22fefa4d 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -4478,7 +4478,7 @@ handler *mysql_create_frm_image(THD *thd, HA_CREATE_INFO *create_info, /* Unless table's storage engine supports partitioning natively don't allow foreign keys on partitioned tables (they won't - work work even with InnoDB beneath of partitioning engine). + work even with InnoDB beneath of partitioning engine). If storage engine handles partitioning natively (like NDB) foreign keys support is possible, so we let the engine decide. */ @@ -11722,7 +11722,7 @@ do_continue:; 5) Write statement to the binary log. 6) If we are under LOCK TABLES and do ALTER TABLE ... RENAME we remove placeholders and release metadata locks. - 7) If we are not not under LOCK TABLES we rely on the caller + 7) If we are not under LOCK TABLES we rely on the caller (mysql_execute_command()) to release metadata locks. */ diff --git a/sql/sql_time.cc b/sql/sql_time.cc index 8136c2d6ec0..a729c01212a 100644 --- a/sql/sql_time.cc +++ b/sql/sql_time.cc @@ -160,7 +160,7 @@ int calc_weekday(long daynr,bool sunday_first_day_of_week) If set Monday is first day of week WEEK_YEAR (1) If not set Week is in range 0-53 - Week 0 is returned for the the last week of the previous year (for + Week 0 is returned for the last week of the previous year (for a date at start of january) In this case one can get 53 for the first week of next year. This flag ensures that the week is relevant for the given year. Note that this flag is only diff --git a/sql/sql_tvc.cc b/sql/sql_tvc.cc index 749ce37fe6b..a6b87ff1fdc 100644 --- a/sql/sql_tvc.cc +++ b/sql/sql_tvc.cc @@ -683,7 +683,7 @@ bool table_value_constr::to_be_wrapped_as_with_tail() the select of the form SELECT * FROM (VALUES (v1), ... (vn)) tvc_x - @retval pointer to the result of of the transformation if successful + @retval pointer to the result of the transformation if successful NULL - otherwise */ @@ -736,7 +736,7 @@ st_select_lex *wrap_tvc(THD *thd, st_select_lex *tvc_sl, /* Create a unit for the substituted select used for TVC and attach it - to the the wrapper select wrapper_sl as the only unit. The created + to the wrapper select wrapper_sl as the only unit. The created unit is the unit for the derived table tvc_x of the transformation. */ if (!(derived_unit= new (thd->mem_root) SELECT_LEX_UNIT())) @@ -803,7 +803,7 @@ err: SELECT * FROM (VALUES (v1), ... (vn)) tvc_x ORDER BY ... LIMIT n [OFFSET m] - @retval pointer to the result of of the transformation if successful + @retval pointer to the result of the transformation if successful NULL - otherwise */ diff --git a/sql/sql_type.h b/sql/sql_type.h index bb7f03d902c..550441cd784 100644 --- a/sql/sql_type.h +++ b/sql/sql_type.h @@ -4192,7 +4192,7 @@ public: @retval NULL on error @retval - non-NULL a pointer to a a valid string on success + non-NULL a pointer to a valid string on success */ virtual String *print_item_value(THD *thd, Item *item, String *str) const= 0; diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 6963098f3a3..de9f87373d5 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -4204,7 +4204,7 @@ static Sys_var_on_access_globalmemroot within the special arena TABLE::expr_arena or in the thd memroot for INSERT DELAYED diff --git a/sql/table.h b/sql/table.h index 6c32f0f788c..c87ef32de37 100644 --- a/sql/table.h +++ b/sql/table.h @@ -2729,7 +2729,7 @@ struct TABLE_LIST { /* Normal open. */ OPEN_NORMAL= 0, - /* Associate a table share only if the the table exists. */ + /* Associate a table share only if the table exists. */ OPEN_IF_EXISTS, /* Don't associate a table share. */ OPEN_STUB diff --git a/sql/temporary_tables.cc b/sql/temporary_tables.cc index eaf6cc88122..ec593f2088a 100644 --- a/sql/temporary_tables.cc +++ b/sql/temporary_tables.cc @@ -652,7 +652,7 @@ bool THD::drop_temporary_table(TABLE *table, bool *is_trans, bool delete_table) { if (tab != table && tab->query_id != 0) { - /* Found a table instance in use. This table cannot be be dropped. */ + /* Found a table instance in use. This table cannot be dropped. */ my_error(ER_CANT_REOPEN_TABLE, MYF(0), table->alias.c_ptr()); result= true; goto end; diff --git a/sql/threadpool_winsockets.cc b/sql/threadpool_winsockets.cc index a214cda2a5c..963696608db 100644 --- a/sql/threadpool_winsockets.cc +++ b/sql/threadpool_winsockets.cc @@ -27,7 +27,7 @@ Considerations on Windows : since Windows locks the AIO buffers in physical memory, it is important that these buffers are compactly allocated. - We try to to prevent any kinds of memory fragmentation + We try to prevent any kinds of memory fragmentation A relatively small region (at most 1MB) is allocated, for equally sized smallish(256 bytes) This allow buffers. The region is pagesize-aligned (via VirtualAlloc allocation) diff --git a/sql/tztime.cc b/sql/tztime.cc index 1b861cb2f7b..cae78500555 100644 --- a/sql/tztime.cc +++ b/sql/tztime.cc @@ -1052,7 +1052,7 @@ public: This method uses system function (localtime_r()) for conversion local time in system time zone in MYSQL_TIME structure to its my_time_t representation. Unlike the same function for Time_zone_db class - it it won't handle unnormalized input properly. Still it will + it won't handle unnormalized input properly. Still it will return lowest possible my_time_t in case of ambiguity or if we provide time corresponding to the time-gap. diff --git a/storage/maria/aria_chk.c b/storage/maria/aria_chk.c index f1d618b8a9d..89dfcd3e261 100644 --- a/storage/maria/aria_chk.c +++ b/storage/maria/aria_chk.c @@ -559,7 +559,7 @@ Recover (repair)/ options (When using '--recover' or '--safe-recover'):\n\ file when it's full).\n\ --create-missing-keys\n\ Create missing keys. This assumes that the data\n\ - file is correct and that the the number of rows stored\n\ + file is correct and that the number of rows stored\n\ in the index file is correct. Enables --quick.\n\ -e, --extend-check Try to recover every possible row from the data file\n\ Normally this will also find a lot of garbage rows;\n\ diff --git a/storage/maria/ma_backup.c b/storage/maria/ma_backup.c index 0384dfb4cc5..cbfa9e614b8 100644 --- a/storage/maria/ma_backup.c +++ b/storage/maria/ma_backup.c @@ -93,7 +93,7 @@ int aria_get_capabilities(File kfile, ARIA_TABLE_CAPABILITIES *cap) cap->bitmap_pages_covered= aligned_bit_blocks * 16 + 1; } - /* Do a check that that we got things right */ + /* Do a check that we got things right */ if (share.state.header.data_file_type != BLOCK_RECORD && cap->online_backup_safe) error= HA_ERR_NOT_A_TABLE; diff --git a/storage/maria/ma_checkpoint.c b/storage/maria/ma_checkpoint.c index e5b35072cde..d910a5fbd0f 100644 --- a/storage/maria/ma_checkpoint.c +++ b/storage/maria/ma_checkpoint.c @@ -982,7 +982,7 @@ static int collect_tables(LEX_STRING *str, LSN checkpoint_start_log_horizon) Tables in a normal state have their two file descriptors open. In some rare cases like REPAIR, some descriptor may be closed or even -1. If that happened, the _ma_state_info_write() may fail. This is - prevented by enclosing all all places which close/change kfile.file with + prevented by enclosing all places which close/change kfile.file with intern_lock. */ kfile= share->kfile; diff --git a/storage/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c index 198556305b8..fc3743f2bfe 100644 --- a/storage/maria/ma_loghandler.c +++ b/storage/maria/ma_loghandler.c @@ -1480,7 +1480,7 @@ LSN translog_get_file_max_lsn_stored(uint32 file) if (file >= limit) { - DBUG_PRINT("info", ("The file in in progress")); + DBUG_PRINT("info", ("The file in progress")); DBUG_RETURN(LSN_IMPOSSIBLE); } @@ -4522,7 +4522,7 @@ static my_bool translog_write_parts_on_page(TRANSLOG_ADDRESS *horizon, if (!cursor->chaser) cursor->buffer->size+= length; /* - We do not not updating parts->total_record_length here because it is + We do not updating parts->total_record_length here because it is need only before writing record to have total length */ DBUG_PRINT("info", ("Write parts buffer #%u: %p " diff --git a/storage/maria/ma_open.c b/storage/maria/ma_open.c index 5c247ad5406..da6da1d017c 100644 --- a/storage/maria/ma_open.c +++ b/storage/maria/ma_open.c @@ -2175,7 +2175,7 @@ int maria_indexes_are_disabled(MARIA_HA *info) /* No keys or all are enabled. keys is the number of keys. Left shifted - gives us only one bit set. When decreased by one, gives us all all bits + gives us only one bit set. When decreased by one, gives us all bits up to this one set and it gets unset. */ if (!share->base.keys || diff --git a/storage/maria/ma_pagecache.c b/storage/maria/ma_pagecache.c index 77e91a8615a..c925bfe54f1 100644 --- a/storage/maria/ma_pagecache.c +++ b/storage/maria/ma_pagecache.c @@ -996,7 +996,7 @@ static int flush_all_key_blocks(PAGECACHE *pagecache) The function first compares the memory size parameter with the key cache value. - If they differ the function free the the memory allocated for the + If they differ the function free the memory allocated for the old key cache blocks by calling the end_pagecache function and then rebuilds the key cache with new blocks by calling init_key_cache. diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c index 3a7e2f39a30..ee66566e580 100644 --- a/storage/maria/ma_recovery.c +++ b/storage/maria/ma_recovery.c @@ -685,7 +685,7 @@ prototype_redo_exec_hook(INCOMPLETE_LOG) { MARIA_HA *info; - /* We try to get table first, so that we get the table in in the trace log */ + /* We try to get table first, so that we get the table in the trace log */ info= get_MARIA_HA_from_REDO_record(rec); if (skip_DDLs) @@ -1175,7 +1175,7 @@ prototype_redo_exec_hook(REDO_REPAIR_TABLE) my_bool quick_repair; DBUG_ENTER("exec_REDO_LOGREC_REDO_REPAIR_TABLE"); - /* We try to get table first, so that we get the table in in the trace log */ + /* We try to get table first, so that we get the table in the trace log */ info= get_MARIA_HA_from_REDO_record(rec); if (!info) diff --git a/storage/maria/ma_search.c b/storage/maria/ma_search.c index e6f8b6bc887..79e5ba50c2b 100644 --- a/storage/maria/ma_search.c +++ b/storage/maria/ma_search.c @@ -276,7 +276,7 @@ ret_error: If keys are packed, then smaller or identical key is stored in buff @return - @retval <0, 0 , >0 depending on if if found is smaller, equal or bigger than + @retval <0, 0 , >0 depending on if found is smaller, equal or bigger than 'key' @retval ret_pos Points to where the identical or bigger key starts @retval last_key Set to 1 if key is the last key in the page. diff --git a/storage/maria/ma_write.c b/storage/maria/ma_write.c index b8a152fd9fd..a14d2495803 100644 --- a/storage/maria/ma_write.c +++ b/storage/maria/ma_write.c @@ -854,7 +854,7 @@ int _ma_insert(register MARIA_HA *info, MARIA_KEY *key, page_store_size(share, anc_page); /* - Check if the new key fits totally into the the page + Check if the new key fits totally into the page (anc_buff is big enough to contain a full page + one key) */ if (a_length <= share->max_index_block_size) diff --git a/storage/myisam/ftdefs.h b/storage/myisam/ftdefs.h index d384c7df3a9..b9934e230e1 100644 --- a/storage/myisam/ftdefs.h +++ b/storage/myisam/ftdefs.h @@ -18,7 +18,7 @@ /* some definitions for full-text indices */ -/* ftdefs.h is is always included first when used, so we have to include my_global.h here */ +/* ftdefs.h is always included first when used, so we have to include my_global.h here */ #include #include "fulltext.h" #include diff --git a/storage/myisam/ha_myisam.h b/storage/myisam/ha_myisam.h index 24790040cf8..72e4fb8f425 100644 --- a/storage/myisam/ha_myisam.h +++ b/storage/myisam/ha_myisam.h @@ -19,7 +19,7 @@ #pragma interface /* gcc class implementation */ #endif -/* class for the the myisam handler */ +/* class for the MyISAM handler */ #include #include diff --git a/storage/myisam/mi_open.c b/storage/myisam/mi_open.c index 9e3a8f43944..e91a7c7e071 100644 --- a/storage/myisam/mi_open.c +++ b/storage/myisam/mi_open.c @@ -1397,7 +1397,7 @@ int mi_indexes_are_disabled(MI_INFO *info) /* No keys or all are enabled. keys is the number of keys. Left shifted - gives us only one bit set. When decreased by one, gives us all all bits + gives us only one bit set. When decreased by one, gives us all bits up to this one set and it gets unset. */ if (!share->base.keys || diff --git a/storage/myisam/myisamchk.c b/storage/myisam/myisamchk.c index a9ecb46c30b..dd5d2385b39 100644 --- a/storage/myisam/myisamchk.c +++ b/storage/myisam/myisamchk.c @@ -172,7 +172,7 @@ static struct my_option my_long_options[] = 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, {"create-missing-keys", OPT_CREATE_MISSING_KEYS, "Create missing keys. This assumes that the data file is correct and that " - "the the number of rows stored in the index file is correct. Enables " + "the number of rows stored in the index file is correct. Enables " "--quick", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, #ifndef DBUG_OFF From 5a35fff42288bd82cbe9f680fc75e5b43081daac Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Wed, 27 Aug 2025 11:31:12 +0300 Subject: [PATCH 13/43] Fixed typos - Some of the typos was because a Russian character was accidentally used instead of an ascii one. --- mysys/mf_iocache.c | 2 +- plugin/server_audit/server_audit.c | 2 +- sql/sql_lex.cc | 2 +- storage/maria/ma_statrec.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c index c92b0457e07..b22bd4d06ac 100644 --- a/mysys/mf_iocache.c +++ b/mysys/mf_iocache.c @@ -16,7 +16,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */ /* - Cashing of files with only does (sequential) read or writes of fixed- + Caching of files with only does (sequential) read or writes of fixed- length records. A read isn't allowed to go over file-length. A read is ok if it ends at file-length and next read can try to read after file-length (and get a EOF-error). diff --git a/plugin/server_audit/server_audit.c b/plugin/server_audit/server_audit.c index fee20a1a543..9ad09dedcb8 100644 --- a/plugin/server_audit/server_audit.c +++ b/plugin/server_audit/server_audit.c @@ -2691,7 +2691,7 @@ static int server_audit_init(void *p __attribute__((unused))) PLUGIN_STR_VERSION, PLUGIN_DEBUG_VERSION); /* The Query Cache shadows TABLE events if the result is taken from it */ - /* so we warn users if both Query Cashe and TABLE events enabled. */ + /* so we warn users if both Query Cache and TABLE events enabled. */ if (!started_mysql && FILTER(EVENT_TABLE)) { ulonglong *qc_size= (ulonglong *) dlsym(RTLD_DEFAULT, "query_cache_size"); diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 5e80ab4db77..2edb1e26d43 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -11054,7 +11054,7 @@ void mark_or_conds_to_avoid_pushdown(Item *cond) After that the transformed condition is attached into attach_to_conds list. 2. Part of some other condition c1 that can't be entirely pushed - (if с1 isn't marked with any flag). + (if c1 isn't marked with any flag). For example: diff --git a/storage/maria/ma_statrec.c b/storage/maria/ma_statrec.c index d8a8b0a05d7..c1cf5433a13 100644 --- a/storage/maria/ma_statrec.c +++ b/storage/maria/ma_statrec.c @@ -46,7 +46,7 @@ my_bool _ma_write_static_record(MARIA_HA *info, const uchar *record) return(2); } if (info->opt_flag & WRITE_CACHE_USED) - { /* Cash in use */ + { /* Cache in use */ if (my_b_write(&info->rec_cache, record, info->s->base.reclength)) goto err; From fd39c63b416c4c4f8bfff6c3935fda159a25faee Mon Sep 17 00:00:00 2001 From: Monty Date: Wed, 3 Sep 2025 14:03:24 +0300 Subject: [PATCH 14/43] MDEV-37520 Failure to detect corruption during backups of Aria table Fixed the following issues: - aria_read_index() and aria_read_data(), used by mariabackup, checked the wrong status from maria_page_crc_check(). - Both functions did infinite retries if crc did not match. - Wrong usage of ma_check_if_zero() in maria_page_crc_check() Author: Thirunarayanan Balathandayuthapani --- extra/mariabackup/aria_backup_client.cc | 28 +++++++++---------- .../aria_log_rotate_during_backup.test | 5 ++-- storage/maria/ma_backup.c | 13 +++++---- storage/maria/ma_pagecrc.c | 2 +- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/extra/mariabackup/aria_backup_client.cc b/extra/mariabackup/aria_backup_client.cc index 73fe7cb334d..32aeee6ba4c 100644 --- a/extra/mariabackup/aria_backup_client.cc +++ b/extra/mariabackup/aria_backup_client.cc @@ -399,21 +399,19 @@ bool Table::copy(ds_ctxt_t *ds, bool is_index, unsigned thread_num) { for (ulonglong block= 0 ; ; block++) { size_t length = m_cap.block_size; - if (is_index) { - if ((error= aria_read_index( - partition.m_index_file, &m_cap, block, copy_buffer) == - HA_ERR_END_OF_FILE)) - break; - } else { - if ((error= aria_read_data( - partition.m_data_file, &m_cap, block, copy_buffer, &length) == - HA_ERR_END_OF_FILE)) - break; - } - if (error) { - msg(thread_num, "error: aria_read %s failed: %d", - is_index ? "index" : "data", error); - goto err; + if (is_index) + error= aria_read_index(partition.m_index_file, &m_cap, + block, copy_buffer); + else + error= aria_read_data(partition.m_data_file, &m_cap, + block, copy_buffer, &length); + if (error) + { + if (error == HA_ERR_END_OF_FILE) + break; + msg(thread_num, "error: aria_read %s failed: %d", + is_index ? "index" : "data", error); + goto err; } xtrabackup_io_throttling(); if ((error = ds_write(dst_file, copy_buffer, length))) { diff --git a/mysql-test/suite/mariabackup/aria_log_rotate_during_backup.test b/mysql-test/suite/mariabackup/aria_log_rotate_during_backup.test index 172ade338d5..9b77a5f54b9 100644 --- a/mysql-test/suite/mariabackup/aria_log_rotate_during_backup.test +++ b/mysql-test/suite/mariabackup/aria_log_rotate_during_backup.test @@ -34,11 +34,11 @@ CREATE TABLE test.t1(id INT, txt LONGTEXT) ENGINE=Aria; --source include/aria_log_control_load.inc CALL display_aria_log_control(@aria_log_control); - +let $backuplog= $MYSQLTEST_VARDIR/tmp/backup.log; --echo # Running --backup --let after_scanning_log_files=CALL test.populate_t1 --disable_result_log ---exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --parallel=10 --target-dir=$targetdir --dbug=+d,mariabackup_events 2>&1 +--exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir --dbug=+d,mariabackup_events > $backuplog --let after_scanning_log_files= --enable_result_log @@ -77,6 +77,7 @@ CALL display_aria_log_control(@aria_log_control); SELECT id, LENGTH(txt) FROM t1 ORDER BY id; DROP TABLE t1; rmdir $targetdir; +remove_file $backuplog; DROP PROCEDURE populate_t1; DROP PROCEDURE display_aria_log_control; diff --git a/storage/maria/ma_backup.c b/storage/maria/ma_backup.c index cbfa9e614b8..5c37167df78 100644 --- a/storage/maria/ma_backup.c +++ b/storage/maria/ma_backup.c @@ -202,11 +202,11 @@ int aria_read_index(File kfile, ARIA_TABLE_CAPABILITIES *cap, ulonglong block, error= maria_page_crc_check(buffer, block, &share, MARIA_NO_CRC_NORMAL_PAGE, (int) length); - if (error != HA_ERR_WRONG_CRC) + if (error == 0 || my_errno != HA_ERR_WRONG_CRC) DBUG_RETURN(error); } my_sleep(100000); /* Sleep 0.1 seconds */ - } while (retry < MAX_RETRY); + } while (retry++ < MAX_RETRY); DBUG_RETURN(HA_ERR_WRONG_CRC); } @@ -264,15 +264,18 @@ int aria_read_data(File dfile, ARIA_TABLE_CAPABILITIES *cap, ulonglong block, if (length == cap->block_size) { - error= maria_page_crc_check(buffer, block, &share, + if (!_ma_check_if_zero(buffer, share.block_size - CRC_SIZE)) + error= 0; + else + error= maria_page_crc_check(buffer, block, &share, ((block % cap->bitmap_pages_covered) == 0 ? MARIA_NO_CRC_BITMAP_PAGE : MARIA_NO_CRC_NORMAL_PAGE), share.block_size - CRC_SIZE); - if (error != HA_ERR_WRONG_CRC) + if (error == 0 || my_errno != HA_ERR_WRONG_CRC) DBUG_RETURN(error); } my_sleep(100000); /* Sleep 0.1 seconds */ - } while (retry < MAX_RETRY); + } while (retry++ < MAX_RETRY); DBUG_RETURN(HA_ERR_WRONG_CRC); } diff --git a/storage/maria/ma_pagecrc.c b/storage/maria/ma_pagecrc.c index 4e1389b1163..74f8ae8212b 100644 --- a/storage/maria/ma_pagecrc.c +++ b/storage/maria/ma_pagecrc.c @@ -103,7 +103,7 @@ my_bool maria_page_crc_check(uchar *page, the CRC will be corrected at next write) */ if (no_crc_val == MARIA_NO_CRC_BITMAP_PAGE && - crc == 0 && _ma_check_if_zero(page, data_length)) + crc == 0 && !_ma_check_if_zero(page, data_length)) { DBUG_PRINT("warning", ("Found bitmap page that was not initialized")); DBUG_RETURN(0); From b6445714cabf8e9db5685ac7cf5b8e629f1b3a72 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sun, 10 Aug 2025 12:17:40 +0200 Subject: [PATCH 15/43] MDEV-37505 myisamchk -V crashes fix double-free in myisamchk followup for c3578720e6b5 --- storage/myisam/myisamchk.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/storage/myisam/myisamchk.c b/storage/myisam/myisamchk.c index 1c52f89021e..08121042bc7 100644 --- a/storage/myisam/myisamchk.c +++ b/storage/myisam/myisamchk.c @@ -705,8 +705,6 @@ get_one_option(const struct my_option *opt, break; case 'V': print_version(); - free_defaults(default_argv); - my_end(MY_CHECK_ERROR); my_exit(0); case OPT_CORRECT_CHECKSUM: if (argument == disabled_my_option) From 75b000372b6d2e2dcabb280ff5f3f1e48f994ca8 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Fri, 22 Aug 2025 13:21:57 +0200 Subject: [PATCH 16/43] cleanup: reusable build_path_for_table() function --- client/mysqldump.c | 31 ++++++++++++++++--------------- client/mysqlimport.c | 2 +- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/client/mysqldump.c b/client/mysqldump.c index 19a2a8109e4..3cff3d94b67 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -1837,6 +1837,17 @@ static char *cover_definer_clause(const char *stmt_str, return query_str; } + +static const char* build_path_for_table(char *to, const char *dir, + const char *table, const char *ext) +{ + char tmp_path[FN_REFLEN]; + convert_dirname(tmp_path, path, NULL); + my_load_path(tmp_path, tmp_path, NULL); + return fn_format(to, table, tmp_path, ext, MYF(MY_UNPACK_FILENAME)); +} + + /* Open a new .sql file to dump the table or view into @@ -1851,12 +1862,9 @@ static char *cover_definer_clause(const char *stmt_str, */ static FILE* open_sql_file_for_table(const char* table, int flags) { - FILE* res; - char filename[FN_REFLEN], tmp_path[FN_REFLEN]; - convert_dirname(tmp_path,path,NullS); - res= my_fopen(fn_format(filename, table, tmp_path, ".sql", 4), - flags, MYF(MY_WME)); - return res; + char filename[FN_REFLEN]; + return my_fopen(build_path_for_table(filename, path, table, ".sql"), + flags, MYF(MY_WME)); } @@ -4043,15 +4051,9 @@ static void dump_table(const char *table, const char *db, const uchar *hash_key, if (path) { - char filename[FN_REFLEN], tmp_path[FN_REFLEN]; + char filename[FN_REFLEN]; - /* - Convert the path to native os format - and resolve to the full filepath. - */ - convert_dirname(tmp_path,path,NullS); - my_load_path(tmp_path, tmp_path, NULL); - fn_format(filename, table, tmp_path, ".txt", MYF(MY_UNPACK_FILENAME)); + build_path_for_table(filename, path, table, ".txt"); /* Must delete the file that 'INTO OUTFILE' will write to */ my_delete(filename, MYF(0)); @@ -4060,7 +4062,6 @@ static void dump_table(const char *table, const char *db, const uchar *hash_key, to_unix_path(filename); /* now build the query string */ - dynstr_append_checked(&query_string, "SELECT /*!40001 SQL_NO_CACHE */ "); dynstr_append_checked(&query_string, select_field_names.str); dynstr_append_checked(&query_string, " INTO OUTFILE '"); diff --git a/client/mysqlimport.c b/client/mysqlimport.c index 5682df11668..736d8ba81e4 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -339,7 +339,7 @@ static int write_to_table(char *filename, MYSQL *mysql) DBUG_ENTER("write_to_table"); DBUG_PRINT("enter",("filename: %s",filename)); - fn_format(tablename, filename, "", "", 1 | 2); /* removes path & ext. */ + fn_format(tablename, filename, "", "", MYF(MY_REPLACE_DIR | MY_REPLACE_EXT)); if (!opt_local_file) strmov(hard_path,filename); else From ff12ec86a5898a5a4a4eeb77be26ecbd711b3128 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Sat, 23 Aug 2025 09:11:42 +0200 Subject: [PATCH 17/43] MDEV-37483 mariadb-dump -T doesn't convert table names use my_charset_filename to build file names from table names. this guarantees that file name will be always valid for any table name, no matter what characters it contains and what file name rules local filesystem has. mariadb-import now converts back, if possible. --- client/mysqldump.c | 13 +++++++-- client/mysqlimport.c | 10 +++++++ mysql-test/main/mysqldump.result | 46 ++++++++++++++++++++++++++++++++ mysql-test/main/mysqldump.test | 42 +++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+), 2 deletions(-) diff --git a/client/mysqldump.c b/client/mysqldump.c index 3cff3d94b67..7372498ffeb 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -1841,10 +1841,19 @@ static char *cover_definer_clause(const char *stmt_str, static const char* build_path_for_table(char *to, const char *dir, const char *table, const char *ext) { - char tmp_path[FN_REFLEN]; + char filename[FN_REFLEN], tmp_path[FN_REFLEN]; convert_dirname(tmp_path, path, NULL); my_load_path(tmp_path, tmp_path, NULL); - return fn_format(to, table, tmp_path, ext, MYF(MY_UNPACK_FILENAME)); + if (check_if_legal_tablename(table)) + strxnmov(filename, sizeof(filename) - 1, table, "@@@", NULL); + else + { + uint errors, len; + len= my_convert(filename, sizeof(filename) - 1, &my_charset_filename, + table, (uint32)strlen(table), charset_info, &errors); + filename[len]= 0; + } + return fn_format(to, filename, tmp_path, ext, MYF(MY_UNPACK_FILENAME)); } diff --git a/client/mysqlimport.c b/client/mysqlimport.c index 736d8ba81e4..4d826742a8d 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -340,6 +340,16 @@ static int write_to_table(char *filename, MYSQL *mysql) DBUG_PRINT("enter",("filename: %s",filename)); fn_format(tablename, filename, "", "", MYF(MY_REPLACE_DIR | MY_REPLACE_EXT)); + if (strchr(tablename, '@')) + { + uint errors, len; + const char *csname= my_default_csname(); /* see MYSQL_SET_CHARSET_NAME */ + CHARSET_INFO *cs= get_charset_by_csname(csname, MY_CS_PRIMARY, MYF(0)); + len= my_convert(escaped_name, sizeof(escaped_name) - 1, cs, tablename, + (uint32)strlen(tablename), &my_charset_filename, &errors); + if (!errors) + strmake(tablename, escaped_name, len); + } if (!opt_local_file) strmov(hard_path,filename); else diff --git a/mysql-test/main/mysqldump.result b/mysql-test/main/mysqldump.result index 7cf8a40b5c8..dd70c664d61 100644 --- a/mysql-test/main/mysqldump.result +++ b/mysql-test/main/mysqldump.result @@ -6624,3 +6624,49 @@ SET character_set_client = @saved_cs_client; drop view `v'1"2`; drop table t1; # End of 10.5 tests +# +# MDEV-37483 mariadb-dump -T doesn't convert table names +# +set names latin1; +create database foo; +use foo; +create table `con_schne_gre` (a int) select 1 as a; +create table `con` (b int) select 2 as b; +create table `con/bar` (c int) select 3 as c; +create table `con@home` (d int) select 4 as d; +drop database foo; +use test; +con@002fbar.sql +con@002fbar.txt +con@@@.sql +con@@@.txt +con@home.sql +con@home.txt +con_sch@1ine_gr@1o@1je.sql +con_sch@1ine_gr@1o@1je.txt +show tables; +Tables_in_test +con +con/bar +con@home +con_schne_gre +test.con: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0 +test.con/bar: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0 +test.con@home: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0 +select * from `con_schne_gre`; +a +1 +select * from `con`; +b +2 +select * from `con/bar`; +c +3 +select * from `con@home`; +d +4 +drop table `con_schne_gre`; +drop table `con`; +drop table `con/bar`; +drop table `con@home`; +# End of 10.6 tests diff --git a/mysql-test/main/mysqldump.test b/mysql-test/main/mysqldump.test index 6ffe3a8af41..971e7f29fa8 100644 --- a/mysql-test/main/mysqldump.test +++ b/mysql-test/main/mysqldump.test @@ -3035,3 +3035,45 @@ drop view `v'1"2`; # "' drop table t1; --echo # End of 10.5 tests + +--echo # +--echo # MDEV-37483 mariadb-dump -T doesn't convert table names +--echo # +set names latin1; +create database foo; +use foo; + +create table `con_schne_gre` (a int) select 1 as a; +create table `con` (b int) select 2 as b; +create table `con/bar` (c int) select 3 as c; +create table `con@home` (d int) select 4 as d; +exec $MYSQL_DUMP foo --tab $MYSQLTEST_VARDIR/tmp; +drop database foo; +use test; +move_file $MYSQLTEST_VARDIR/tmp/con@0040home.sql $MYSQLTEST_VARDIR/tmp/con@home.sql; +move_file $MYSQLTEST_VARDIR/tmp/con@0040home.txt $MYSQLTEST_VARDIR/tmp/con@home.txt; +list_files $MYSQLTEST_VARDIR/tmp con*; +exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/con@@@.sql; +exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/con@002fbar.sql; +exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/con_sch@1ine_gr@1o@1je.sql; +exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/con@home.sql; +show tables; +exec $MYSQL_IMPORT test $MYSQLTEST_VARDIR/tmp/con@@@.txt; +exec $MYSQL_IMPORT test $MYSQLTEST_VARDIR/tmp/con@002fbar.txt; +if (`select @@version like '10.6.%'`) { +# utf8 console output on Windows is fixed in MDEV-26713, until then +--disable_result_log +} +exec $MYSQL_IMPORT test $MYSQLTEST_VARDIR/tmp/con_sch@1ine_gr@1o@1je.txt; +--enable_result_log +exec $MYSQL_IMPORT test $MYSQLTEST_VARDIR/tmp/con@home.txt; +select * from `con_schne_gre`; +select * from `con`; +select * from `con/bar`; +select * from `con@home`; +drop table `con_schne_gre`; +drop table `con`; +drop table `con/bar`; +drop table `con@home`; + +--echo # End of 10.6 tests From 57434359540c7eb6f8719ee74ebe70f6d43bb1b7 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 3 Sep 2025 18:56:13 +0200 Subject: [PATCH 18/43] MDEV-37397 Assertion `bitmap_is_set(&read_partitions, next->id)' failed in int partition_info::vers_set_hist_part(THD *) after 633417308f16 (MDEV-37312) lookup_handler is locked with F_WRLCK, because it may be used for deleting rows. And lookup_handler is locked with F_WRLCK after prune_partitions(), but the main handler is locked before, and might expects all partitions to be in the read least, non-pruned. Let's prepare the lookup handler before prune_partitions(). --- mysql-test/suite/period/r/long_unique.result | 6 ++++++ mysql-test/suite/period/t/long_unique.test | 7 +++++++ sql/sql_delete.cc | 5 +++-- sql/sql_update.cc | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/mysql-test/suite/period/r/long_unique.result b/mysql-test/suite/period/r/long_unique.result index fa7817fb562..6018edf9b4f 100644 --- a/mysql-test/suite/period/r/long_unique.result +++ b/mysql-test/suite/period/r/long_unique.result @@ -31,4 +31,10 @@ set transaction isolation level read committed; update t1 for portion of p from '1980-01-01' to '1980-01-02' set a = 1; ERROR 23000: Duplicate entry 'foo' for key 'f' drop table t1; +# +# MDEV-37397 Assertion `bitmap_is_set(&read_partitions, next->id)' failed in int partition_info::vers_set_hist_part(THD *) +# +create table t (f int,s date,e date,period for p (s,e),unique (f,p without overlaps)) with system versioning partition by system_time limit+1 (partition p history,partition pn current); +delete from t; +drop table t; # End of 10.6 tests diff --git a/mysql-test/suite/period/t/long_unique.test b/mysql-test/suite/period/t/long_unique.test index bca2f15ebae..299e22a8c62 100644 --- a/mysql-test/suite/period/t/long_unique.test +++ b/mysql-test/suite/period/t/long_unique.test @@ -41,4 +41,11 @@ set transaction isolation level read committed; update t1 for portion of p from '1980-01-01' to '1980-01-02' set a = 1; drop table t1; +--echo # +--echo # MDEV-37397 Assertion `bitmap_is_set(&read_partitions, next->id)' failed in int partition_info::vers_set_hist_part(THD *) +--echo # +create table t (f int,s date,e date,period for p (s,e),unique (f,p without overlaps)) with system versioning partition by system_time limit+1 (partition p history,partition pn current); +delete from t; +drop table t; + --echo # End of 10.6 tests diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index dc7b3fc00c4..2d6ce671b2f 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -511,6 +511,9 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, } } + if (table->versioned(VERS_TIMESTAMP) || (table_list->has_period())) + table->file->prepare_for_insert(1); + #ifdef WITH_PARTITION_STORAGE_ENGINE if (prune_partitions(thd, table, conds)) { @@ -813,8 +816,6 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, && !table->versioned() && table->file->has_transactions(); - if (table->versioned(VERS_TIMESTAMP) || (table_list->has_period())) - table->file->prepare_for_insert(1); DBUG_ASSERT(table->file->inited != handler::NONE); THD_STAGE_INFO(thd, stage_updating); diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 6a2a5a09a66..2cbd2c692c8 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -559,6 +559,7 @@ int mysql_update(THD *thd, // Don't count on usage of 'only index' when calculating which key to use table->covering_keys.clear_all(); + table->file->prepare_for_insert(1); #ifdef WITH_PARTITION_STORAGE_ENGINE if (prune_partitions(thd, table, conds)) @@ -1021,7 +1022,6 @@ update_begin: can_compare_record= records_are_comparable(table); explain->tracker.on_scan_init(); - table->file->prepare_for_insert(1); DBUG_ASSERT(table->file->inited != handler::NONE); THD_STAGE_INFO(thd, stage_updating); From 0a4315509b061395d171cceb27bb76d1e141b365 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Fri, 5 Sep 2025 11:03:49 +1000 Subject: [PATCH 19/43] MDEV-36723 Fix an MSAN caused by memcmp going over a string boundary When spider tries to find a partition matching a name passed from the sql layer, it construct the partition name with NORMAL_PART_NAME. However, the name passed from the sql layer could be constructed with other types of name, such as TEMP_PART_NAME, which is a longer string. Spider does handle TEMP_PART_NAME in other places of spider_get_partition_info, but overall it is not able to handle partition changes involving redistributing data to partitions which can result in TEMP_PART_NAME. That is a more involved issue. In this patch, we simply follow the existing intended logic and fix the MSAN complaint. --- storage/spider/ha_spider.cc | 2 +- storage/spider/spd_table.cc | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/storage/spider/ha_spider.cc b/storage/spider/ha_spider.cc index 6e980a014a7..b50a97d5a57 100644 --- a/storage/spider/ha_spider.cc +++ b/storage/spider/ha_spider.cc @@ -7875,7 +7875,7 @@ int ha_spider::create( SPIDER_ALTER_PARTITION_COALESCE | SPIDER_ALTER_PARTITION_REORGANIZE | SPIDER_ALTER_PARTITION_TABLE_REORG | SPIDER_ALTER_PARTITION_REBUILD ) - ) && + ) && /* Does not support PART_CHANGED */ memcmp(name + strlen(name) - 5, "#TMP#", 5) ) { need_lock = TRUE; diff --git a/storage/spider/spd_table.cc b/storage/spider/spd_table.cc index 85fd1848507..f76aa87134f 100644 --- a/storage/spider/spd_table.cc +++ b/storage/spider/spd_table.cc @@ -6775,7 +6775,8 @@ void spider_get_partition_info( DBUG_VOID_RETURN; } DBUG_PRINT("info",("spider tmp_name=%s", tmp_name)); - if (!memcmp(table_name, tmp_name, table_name_length + 1)) + if (table_name_length == strlen(tmp_name) && + !strncmp(table_name, tmp_name, table_name_length)) DBUG_VOID_RETURN; if ( tmp_flg && @@ -6796,7 +6797,8 @@ void spider_get_partition_info( DBUG_VOID_RETURN; } DBUG_PRINT("info",("spider tmp_name=%s", tmp_name)); - if (!memcmp(table_name, tmp_name, table_name_length + 1)) + if (table_name_length == strlen(tmp_name) && + !strncmp(table_name, tmp_name, table_name_length)) DBUG_VOID_RETURN; if ( tmp_flg && From 5c9c81ed5408594e9113a0bdc0af08b39b69c56a Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Fri, 5 Sep 2025 14:44:04 +1000 Subject: [PATCH 20/43] MDEV-37204 fix view-protocol in spider/bugfix.index mtr --view-protocol causes a separate thread for execution of SELECT statements, thus set global spider_same_server_link is needed. The other issue is opened as MDEV-37568 --- storage/spider/mysql-test/spider/bugfix/r/index.result | 1 + storage/spider/mysql-test/spider/bugfix/t/index.test | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/storage/spider/mysql-test/spider/bugfix/r/index.result b/storage/spider/mysql-test/spider/bugfix/r/index.result index 801fec2e763..7116a29eed8 100644 --- a/storage/spider/mysql-test/spider/bugfix/r/index.result +++ b/storage/spider/mysql-test/spider/bugfix/r/index.result @@ -3,6 +3,7 @@ for child2 for child3 create database auto_test_local; set spider_same_server_link= on; +set global spider_same_server_link= on; # # MDEV-27590 Auto-increment on Spider tables with DESC PK does not work properly # diff --git a/storage/spider/mysql-test/spider/bugfix/t/index.test b/storage/spider/mysql-test/spider/bugfix/t/index.test index 641fa164d0d..28c25fab7c9 100644 --- a/storage/spider/mysql-test/spider/bugfix/t/index.test +++ b/storage/spider/mysql-test/spider/bugfix/t/index.test @@ -5,6 +5,7 @@ --enable_query_log create database auto_test_local; set spider_same_server_link= on; +set global spider_same_server_link= on; --echo # --echo # MDEV-27590 Auto-increment on Spider tables with DESC PK does not work properly @@ -16,7 +17,10 @@ create or replace table t_sp1 (id int auto_increment, primary key(id desc)) engine=Spider COMMENT='wrapper "mysql", srv "s_1", table "t"'; insert into t_sp1 () values (),(),(); insert into t_sp1 () values (),(),(); +# MDEV-37568 +--disable_view_protocol select * from t_sp1; +--enable_view_protocol drop table t_sp1, auto_test_local.t; --echo # From 77a3d7a985e6a494b8e4b7b5ccd634602a9a7e1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 8 Sep 2025 08:23:24 +0300 Subject: [PATCH 21/43] Fix GCC -Wmaybe-uninitialized maria_open(): Always initialize open_mode, and remove the redundant local variable try_open_mode that commit 24821e95854d4ea470f083603157f5b11190f04a had introduced. Also, optimize away any checks for s3 when WITH_S3_STORAGE_ENGINE is not defined. --- storage/maria/ma_open.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/storage/maria/ma_open.c b/storage/maria/ma_open.c index da6da1d017c..f7482624f92 100644 --- a/storage/maria/ma_open.c +++ b/storage/maria/ma_open.c @@ -256,7 +256,7 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags, S3_INFO *s3) { int save_errno; - int open_mode, try_open_mode; + int open_mode= mode; uint i,j,len,errpos,head_length,base_pos,keys, realpath_err, key_parts,base_key_parts,unique_key_parts,fulltext_keys,uniques; uint internal_table= MY_TEST(open_flags & HA_OPEN_INTERNAL_TABLE); @@ -288,6 +288,11 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags, #ifndef WITH_S3_STORAGE_ENGINE DBUG_ASSERT(!s3); +# ifdef _MSC_VER + __assume(!s3); +# else + if (s3) __builtin_unreachable(); +# endif #else if (!s3) #endif /* WITH_S3_STORAGE_ENGINE */ @@ -346,10 +351,11 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags, that the table is usable for future read and write queries in MariaDB. Only if the read-write mode fails we try to readonly. */ - try_open_mode= (open_flags & HA_OPEN_FORCE_MODE) ? mode : O_RDWR; + if (!(open_flags & HA_OPEN_FORCE_MODE)) + open_mode= O_RDWR; if ((kfile=mysql_file_open(key_file_kfile, name_buff, - (open_mode=try_open_mode) | O_SHARE | + open_mode | O_SHARE | O_NOFOLLOW | O_CLOEXEC, MYF(common_flag | MY_NOSYMLINKS))) < 0) { @@ -372,7 +378,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags, #ifdef WITH_S3_STORAGE_ENGINE else { - open_mode= mode; errpos= 1; if (s3f.set_database_and_table_from_path(s3, name_buff)) { From f609dbd39b54aa5f12adf04f5335197a244284bd Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Wed, 10 Sep 2025 12:53:08 +1000 Subject: [PATCH 22/43] MDEV-30692: conf_to_src incompatible with CHARSET_INFO changes (postfix) Caused by MDEV-30577 when the CHARSET_INFO structure changed. As hinted by clang: error: no member named 'csname' in 'struct charset_info_st'; did you mean 'cs_name'? Because the target conf_to_src has the properties EXCLUDE_FROM_DEFAULT_BUILD it hasn't been noticed. Also correct: warning: field precision should have type 'int', but argument has type 'size_t' --- strings/conf_to_src.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/strings/conf_to_src.c b/strings/conf_to_src.c index fce763b4fc7..a51b534131f 100644 --- a/strings/conf_to_src.c +++ b/strings/conf_to_src.c @@ -482,7 +482,7 @@ main(int argc, char **argv __attribute__((unused))) if ( (!simple_cs_is_full(cs)) && (cs->cs_name.str)) { snprintf(filename, sizeof filename, "%s/%.*s.xml", - argv[1], cs->csname.length, cs->csname.str); + argv[1], (int) cs->cs_name.length, cs->cs_name.str); my_read_charset_file(filename); } cs->state|= MY_CS_LOADED; From c40402e4a9824df5e61f6e893cf3d355496d7b44 Mon Sep 17 00:00:00 2001 From: Elena Stepanova Date: Wed, 10 Sep 2025 14:12:10 +0300 Subject: [PATCH 23/43] MDEV-37618 galera.MDEV-26266 fails with ER_OPTION_PREVENTS_STATEMENT with PS protocol --- mysql-test/suite/galera/t/MDEV-26266.test | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/suite/galera/t/MDEV-26266.test b/mysql-test/suite/galera/t/MDEV-26266.test index e9097a1d32e..7cc29c65482 100644 --- a/mysql-test/suite/galera/t/MDEV-26266.test +++ b/mysql-test/suite/galera/t/MDEV-26266.test @@ -10,6 +10,7 @@ # --source include/galera_cluster.inc +--source include/no_protocol.inc --source include/have_innodb.inc --source include/force_restart.inc From c96a4fd419dcbda06dc55301f8cb8e13f2b2e707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Thu, 4 Sep 2025 09:24:34 +0300 Subject: [PATCH 24/43] MDEV-37548 : wsrep_allowlist allows all connections during SST MDEV-37136 allowed connections by default if wsrep_schema is not initialized, but this allows and process to connect to a node which is joining to the cluster and receiving SST (i.e. all incoming connections are allowed until the storage engines get initialized). We need to allow all connections by default to maintain upgradability if nothing else is configured. However, if user has given wsrep_allowlist string or stored allowed connections to mysql.wsrep_allowlist table used address should be checked. When node is joining to the cluster and receiving SST InnoDB storage engine is not initialized, thus mysq.wsrep_allowlist table is not available and wsrep_schema is not intialized. In this case we still should check has user configured allowed connections using wsrep_allowlist configuration variable. If wsrep_allowlist configuration variable contains list of allowed addressed, we check is address used in new connection in this list. If it is not connection is not allowed. --- sql/wsrep_allowlist_service.cc | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/sql/wsrep_allowlist_service.cc b/sql/wsrep_allowlist_service.cc index 866d24e2177..ce8d72ba819 100644 --- a/sql/wsrep_allowlist_service.cc +++ b/sql/wsrep_allowlist_service.cc @@ -36,12 +36,31 @@ bool Wsrep_allowlist_service::allowlist_cb ( const wsrep::const_buffer& value) WSREP_NOEXCEPT { - bool res=true; // allow all connections + // Allow all connections if user has not given list of + // allowed addresses or stored them on mysql.wsrep_allowlist + // table. Note that table is available after SEs are initialized. + bool res=true; + std::string string_value(value.data()); if (wsrep_schema) { - std::string string_value(value.data()); res= wsrep_schema->allowlist_check(key, string_value); } + // If wsrep_schema is not initialized check if user has given + // list of addresses where connections are allowed + else if (wsrep_allowlist && wsrep_allowlist[0] != '\0') + { + res= false; // Allow only given addresses + std::vector allowlist; + wsrep_split_allowlist(allowlist); + for(auto allowed : allowlist) + { + if (!string_value.compare(allowed)) + { + res= true; // Address found allow connection + break; + } + } + } return res; } From 4dcd2d85134587f885d96aeff5e2b85ef9110cb1 Mon Sep 17 00:00:00 2001 From: Thirunarayanan Balathandayuthapani Date: Tue, 9 Sep 2025 13:29:43 +0530 Subject: [PATCH 25/43] MDEV-37412 Corrupted page during recovery aborts the server Problem: ======= When InnoDB encounters a corrupted page during crash recovery, server would abort due to improper handling of page locks and space references. The recovery process was not properly cleaning up resources when corruption was detected, leading to inconsistent state and server termination. Solution: ========= recover_low(): Move page lock recursive acquisition after deferred/non-deferred page creation logic to ensure consistent locking behavior for both code paths. Ensure proper block recursive unlock for non-deferred tablespaces recv_recover_page(): Simplify corrupted page cleanup by removing redundant space reference handling. --- ...leaf_page_corrupted_during_recovery.result | 9 ++++++++ .../leaf_page_corrupted_during_recovery.test | 15 +++++++++++++ storage/innobase/log/log0recv.cc | 21 +++++++++---------- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result b/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result index ca010d663fa..f6b12a162ae 100644 --- a/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result +++ b/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result @@ -4,6 +4,15 @@ INSERT INTO t1 VALUES(1, 'sql'), (2, 'server'), (3, 'mariadb'), (4, 'mariadb'), (5, 'test1'), (6, 'test2'), (7, 'test3'), (8, 'test4'), (9, 'test5'), (10, 'test6'), (11, 'test7'), (12, 'test8'); +call mtr.add_suppression("InnoDB: Cannot apply log to \\[page id: space=[1-9], page number=0\\] of corrupted file '.*mdev_37412\\.ibd'"); +SET GLOBAL innodb_log_checkpoint_now=ON; +CREATE TABLE mdev_37412(id INT AUTO_INCREMENT, PRIMARY KEY(id)) +STATS_PERSISTENT=0 ENGINE=InnoDB; +# Kill the server +# restart: --debug_dbug=+d,recv_corrupt +SELECT * FROM mdev_37412; +id +DROP TABLE mdev_37412; SELECT COUNT(*) FROM t1; COUNT(*) 12 diff --git a/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test b/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test index 026be74373f..a4f79b1de3a 100644 --- a/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test +++ b/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test @@ -21,8 +21,23 @@ INSERT INTO t1 VALUES(1, 'sql'), (2, 'server'), (3, 'mariadb'), (8, 'test4'), (9, 'test5'), (10, 'test6'), (11, 'test7'), (12, 'test8'); +call mtr.add_suppression("InnoDB: Cannot apply log to \\[page id: space=[1-9], page number=0\\] of corrupted file '.*mdev_37412\\.ibd'"); +SET GLOBAL innodb_log_checkpoint_now=ON; +--source ../include/no_checkpoint_start.inc +CREATE TABLE mdev_37412(id INT AUTO_INCREMENT, PRIMARY KEY(id)) + STATS_PERSISTENT=0 ENGINE=InnoDB; +--let CLEANUP_IF_CHECKPOINT=DROP TABLE t1,mdev_37412; +--source ../include/no_checkpoint_end.inc + +--let $restart_parameters=--debug_dbug=+d,recv_corrupt +--source include/start_mysqld.inc +let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err; +let SEARCH_PATTERN= InnoDB: Cannot apply log to \\[page id: space=[1-9], page number=0\\] of corrupted file '.*mdev_37412\\.ibd'; +--let $restart_parameters= let $restart_noprint=2; --source include/restart_mysqld.inc +SELECT * FROM mdev_37412; +DROP TABLE mdev_37412; let INNODB_PAGE_SIZE=`select @@innodb_page_size`; let MYSQLD_DATADIR=`select @@datadir`; diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc index 004dc65c752..b262c2fbd95 100644 --- a/storage/innobase/log/log0recv.cc +++ b/storage/innobase/log/log0recv.cc @@ -3041,6 +3041,10 @@ static buf_block_t *recv_recover_page(buf_block_t *block, mtr_t &mtr, block->page.id().page_no())); log_phys_t::apply_status a= l->apply(*block, recs.last_offset); + DBUG_EXECUTE_IF("recv_corrupt", + if (init && init->created && + (!space || space->id != 0)) + a= log_phys_t::APPLIED_CORRUPTED;); switch (a) { case log_phys_t::APPLIED_NO: @@ -3112,17 +3116,9 @@ set_start_lsn: mtr.discard_modifications(); mtr.commit(); - fil_space_t* s = space - ? space - : fil_space_t::get(block->page.id().space()); - buf_pool.corrupted_evict(&block->page, block->page.state() & buf_page_t::LRU_MASK); - if (!space) { - s->release(); - } - return nullptr; } @@ -3524,7 +3520,6 @@ inline buf_block_t *recv_sys_t::recover_low(const map::iterator &p, mtr_t &mtr, DBUG_LOG("ib_log", "skip log for page " << p->first << " LSN " << end_lsn << " < " << init.lsn); fil_space_t *space= fil_space_t::get(p->first.space()); - mtr.start(); mtr.set_log_mode(MTR_LOG_NO_REDO); @@ -3544,7 +3539,6 @@ inline buf_block_t *recv_sys_t::recover_low(const map::iterator &p, mtr_t &mtr, zip_size= fil_space_t::zip_size(flags); block= buf_page_create_deferred(p->first.space(), zip_size, &mtr, b); ut_ad(block == b); - block->page.lock.x_lock_recursive(); } else { @@ -3563,6 +3557,8 @@ inline buf_block_t *recv_sys_t::recover_low(const map::iterator &p, mtr_t &mtr, } } + /* Released in buf_pool_t::corrupted_evict(), recover_deferred() or below */ + block->page.lock.x_lock_recursive(); ut_d(mysql_mutex_lock(&mutex)); ut_ad(&recs == &pages.find(p->first)->second); ut_d(mysql_mutex_unlock(&mutex)); @@ -3571,8 +3567,11 @@ inline buf_block_t *recv_sys_t::recover_low(const map::iterator &p, mtr_t &mtr, ut_ad(mtr.has_committed()); if (space) + { space->release(); - + if (block) + block->page.lock.x_unlock(); + } return block ? block : reinterpret_cast(-1); } From 47df0ba17c60a451a3cea477b841b92d69bb0cbc Mon Sep 17 00:00:00 2001 From: Dave Gosselin Date: Tue, 9 Sep 2025 11:34:32 -0400 Subject: [PATCH 26/43] Cherry-pick of 'mariadb-test: wait on disconnect' from 12.1 Cherry-picks mysqltest.cc and rpl_semi_sync_shutdown_await_ack changes from 12.1 to fix a race condition on disconnect. --- client/mysqltest.cc | 6 +++++- .../suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/client/mysqltest.cc b/client/mysqltest.cc index 57368654ec9..a7e42b3f5e6 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -5767,8 +5767,12 @@ void do_close_connection(struct st_command *command) DBUG_PRINT("info", ("Closing connection %s", con->name)); #ifndef EMBEDDED_LIBRARY if (command->type == Q_DIRTY_CLOSE) - { mariadb_cancel(con->mysql); + else + { + simple_command(con->mysql,COM_QUIT,0,0,0); + if (con->util_mysql) + simple_command(con->util_mysql,COM_QUIT,0,0,0); } #endif /*!EMBEDDED_LIBRARY*/ if (con->stmt) diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test b/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test index 906cddc9971..a6d3d51cf94 100644 --- a/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test +++ b/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test @@ -219,7 +219,7 @@ SET GLOBAL debug_dbug="+d,simulate_delay_semisync_slave_reply"; --connection server_2 set debug_sync= "now wait_for io_thd_at_slave_reply"; ---disconnect con1 +--dirty_close con1 --connection default --write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect From ca168a7a9a34660675cb80ddc12f171cb6aee37b Mon Sep 17 00:00:00 2001 From: Dave Gosselin Date: Thu, 4 Sep 2025 15:20:32 -0400 Subject: [PATCH 27/43] MDEV-23283 User Statistics does not correctly reflect concurrent_connections Keep concurrent_connections updated when user stats are enabled. When a user connects, the count in concurrent_connections increases by one; when they disconnect, it decreases by one. Setting the global userstat begins counting new concurrent sessions from that point forward; pre-existing concurrent sessions are not counted until they are restarted. Ideally this configuration is set in the my.cnf file so as to apply from server startup, ensuring that the counter is consistent. If it is set during the server's lifetime (via SET GLOBAL userstat=1) it is recommended to do so before concurrent user sessions exist for accurate counts. --- mysql-test/main/userstat-badlogin-4824.test | 8 +- mysql-test/main/userstat.result | 4 +- sql/sql_connect.cc | 151 ++++++++++++++++---- 3 files changed, 128 insertions(+), 35 deletions(-) diff --git a/mysql-test/main/userstat-badlogin-4824.test b/mysql-test/main/userstat-badlogin-4824.test index 96b4368a707..0d8b2834c24 100644 --- a/mysql-test/main/userstat-badlogin-4824.test +++ b/mysql-test/main/userstat-badlogin-4824.test @@ -1,9 +1,12 @@ # # MDEV-4824 userstats - wrong user statistics # -# Tests will be skipped for the view protocol because the view protocol creates +# Tests will be skipped for the view protocol because the view protocol creates # an additional util connection and other statistics data --- source include/no_view_protocol.inc +# Skip this test for ps protocol because the previous commit changes the expected +# the value of bytes_expected in the userstats output. +--source include/no_view_protocol.inc +--disable_ps_protocol --source include/not_embedded.inc set @save_userstat=@@global.userstat; @@ -40,3 +43,4 @@ select user, bytes_received from information_schema.user_statistics where user = drop user foo@localhost; set global userstat=@save_userstat; +--enable_ps_protocol diff --git a/mysql-test/main/userstat.result b/mysql-test/main/userstat.result index d7c5a66bde9..64f93c9a7d2 100644 --- a/mysql-test/main/userstat.result +++ b/mysql-test/main/userstat.result @@ -150,7 +150,7 @@ Table_schema Table_name Index_name Rows_read select TOTAL_CONNECTIONS, TOTAL_SSL_CONNECTIONS, CONCURRENT_CONNECTIONS, ROWS_READ, ROWS_SENT, ROWS_DELETED, ROWS_INSERTED, ROWS_UPDATED, SELECT_COMMANDS, UPDATE_COMMANDS, COMMIT_TRANSACTIONS, ROLLBACK_TRANSACTIONS, DENIED_CONNECTIONS, LOST_CONNECTIONS, ACCESS_DENIED, EMPTY_QUERIES from information_schema.client_statistics;; TOTAL_CONNECTIONS 2 TOTAL_SSL_CONNECTIONS 1 -CONCURRENT_CONNECTIONS 0 +CONCURRENT_CONNECTIONS 1 ROWS_READ 6 ROWS_SENT 3 ROWS_DELETED 1 @@ -167,7 +167,7 @@ EMPTY_QUERIES 1 select TOTAL_CONNECTIONS, TOTAL_SSL_CONNECTIONS, CONCURRENT_CONNECTIONS, ROWS_READ, ROWS_SENT, ROWS_DELETED, ROWS_INSERTED, ROWS_UPDATED, SELECT_COMMANDS, UPDATE_COMMANDS, COMMIT_TRANSACTIONS, ROLLBACK_TRANSACTIONS, DENIED_CONNECTIONS, LOST_CONNECTIONS, ACCESS_DENIED, EMPTY_QUERIES from information_schema.user_statistics;; TOTAL_CONNECTIONS 2 TOTAL_SSL_CONNECTIONS 1 -CONCURRENT_CONNECTIONS 0 +CONCURRENT_CONNECTIONS 1 ROWS_READ 6 ROWS_SENT 3 ROWS_DELETED 1 diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc index 0841d589e2f..c279f2663c8 100644 --- a/sql/sql_connect.cc +++ b/sql/sql_connect.cc @@ -535,26 +535,27 @@ void free_global_client_stats(void) my_hash_free(&global_client_stats); } + /* - Increments the global stats connection count for an entry from - global_client_stats or global_user_stats. Returns 0 on success - and 1 on error. -*/ + Common code for increment_count_by_name, decrement_count_by_name, to fetch + the USER_STATS corresponding to 'name'. + */ -static bool increment_count_by_name(const char *name, size_t name_length, - const char *role_name, - HASH *users_or_clients, THD *thd) +static USER_STATS* count_by_name_common(const char *name, size_t name_length, + const char *role_name, + HASH *users_or_clients, THD *thd) { - USER_STATS *user_stats; + USER_STATS *user_stats= nullptr; - if (!(user_stats= (USER_STATS*) my_hash_search(users_or_clients, (uchar*) name, - name_length))) + if (!(user_stats= (USER_STATS*) my_hash_search(users_or_clients, + (uchar*) name, + name_length))) { /* First connection for this user or client */ if (!(user_stats= ((USER_STATS*) my_malloc(PSI_INSTRUMENT_ME, sizeof(USER_STATS), MYF(MY_WME | MY_ZEROFILL))))) - return TRUE; // Out of memory + return nullptr; // Out of memory init_user_stats(user_stats, name, name_length, role_name, 0, 0, 0, // connections @@ -573,12 +574,68 @@ static bool increment_count_by_name(const char *name, size_t name_length, if (my_hash_insert(users_or_clients, (uchar*)user_stats)) { my_free(user_stats); - return TRUE; // Out of memory + return nullptr; // Out of memory } } - user_stats->total_connections++; + + DBUG_ASSERT(user_stats); + return user_stats; +} + + +/* + Increments the global stats connection count for an entry from + global_client_stats or global_user_stats. Returns FALSE on success + and TRUE on error. +*/ + +static bool increment_count_by_name(const char *name, size_t name_length, + const char *role_name, + HASH *users_or_clients, THD *thd) +{ + USER_STATS *user_stats= count_by_name_common(name, name_length, role_name, + users_or_clients, thd); + if (!user_stats) + return TRUE; + + ++user_stats->total_connections; +#ifndef EMBEDDED_LIBRARY + /* + For the embedded library, we get here only because THD::update_all_stats + is called after command dispatch, not because of any connection events + (those are compiled-out for the embedded library). Maybe this entire + function should do nothing in the case of embedded library? At least + this makes it behave the same way it did before supporting + concurrent_connections. + */ + ++user_stats->concurrent_connections; +#endif if (thd->net.vio && thd->net.vio->type == VIO_TYPE_SSL) - user_stats->total_ssl_connections++; + ++user_stats->total_ssl_connections; + + return FALSE; +} + + +/* + Decrements the global stats connection count for an entry from + global_client_stats or global_user_stats. Returns FALSE on success + and TRUE on error. +*/ + +#ifndef EMBEDDED_LIBRARY +static bool decrement_count_by_name(const char *name, size_t name_length, + const char *role_name, + HASH *users_or_clients, THD *thd) +{ + USER_STATS *user_stats= count_by_name_common(name, name_length, role_name, + users_or_clients, thd); + if (!user_stats) + return TRUE; + + if (user_stats->concurrent_connections > 0) + --user_stats->concurrent_connections; + return FALSE; } @@ -592,36 +649,65 @@ static bool increment_count_by_name(const char *name, size_t name_length, @retval 1 error. */ -#ifndef EMBEDDED_LIBRARY -static bool increment_connection_count(THD* thd, bool use_lock) +static bool increment_connection_count(THD* thd) { const char *user_string= get_valid_user_string(thd->main_security_ctx.user); const char *client_string= get_client_host(thd); - bool return_value= FALSE; if (!thd->userstat_running) return FALSE; - if (use_lock) - mysql_mutex_lock(&LOCK_global_user_client_stats); + mysql_mutex_lock(&LOCK_global_user_client_stats); + SCOPE_EXIT([] () { + mysql_mutex_unlock(&LOCK_global_user_client_stats); + }); if (increment_count_by_name(user_string, strlen(user_string), user_string, &global_user_stats, thd)) - { - return_value= TRUE; - goto end; - } + return TRUE; + if (increment_count_by_name(client_string, strlen(client_string), user_string, &global_client_stats, thd)) - { - return_value= TRUE; - goto end; - } + return TRUE; -end: - if (use_lock) + return FALSE; +} + +static bool decrement_connection_count(THD* thd) +{ + const char *user_string= get_valid_user_string(thd->main_security_ctx.user); + const char *client_string= get_client_host(thd); + + /* + THD::update_all_stats, called only from dispatch_command, clears + thd->userstat_running to avoid double counting. thd->userstat_running + is set during THD::init. + + When a user connects for the first time, thd->userstat_running is set + from the global variable opt_userstat_running during THD::init (indirectly + called from THD::change_user). After each dispatched command, as noted + above, it is cleared (even if the user maintains the connection). So for + normal cases where the user disconnects after running a query, we need to + check opt_userstat_running. We check thd->userstat_running for abnormal + cases where the user disconnects during a dispatched command, before it + reaches THD::update_all_stats. + */ + if (!thd->userstat_running && !opt_userstat_running) + return FALSE; + + mysql_mutex_lock(&LOCK_global_user_client_stats); + SCOPE_EXIT([] () { mysql_mutex_unlock(&LOCK_global_user_client_stats); - return return_value; + }); + + if (decrement_count_by_name(user_string, strlen(user_string), user_string, + &global_user_stats, thd)) + return TRUE; + if (decrement_count_by_name(client_string, strlen(client_string), + user_string, &global_client_stats, thd)) + return TRUE; + + return FALSE; } #endif @@ -1143,7 +1229,7 @@ bool login_connection(THD *thd) my_net_set_write_timeout(net, thd->variables.net_write_timeout); /* Updates global user connection stats. */ - if (increment_connection_count(thd, TRUE)) + if (increment_connection_count(thd)) { my_error(ER_OUTOFMEMORY, MYF(0), (int) (2*sizeof(USER_STATS))); error= 1; @@ -1202,6 +1288,9 @@ void end_connection(THD *thd) if (likely(!thd->killed) && (net->error && net->vio != 0)) thd->print_aborted_warning(1, thd->get_stmt_da()->is_error() ? thd->get_stmt_da()->message() : ER_THD(thd, ER_UNKNOWN_ERROR)); + + if (decrement_connection_count(thd)) + my_error(ER_OUTOFMEMORY, MYF(ME_ERROR_LOG), (int) (2*sizeof(USER_STATS))); } From 8ce0eee0e07c74c7288b167ec51f875fbb70e01b Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Sun, 1 Jun 2025 22:19:09 +1000 Subject: [PATCH 28/43] MDEV-37502: clang+debug mroonga remove -Wno-unused-but-set-variable This is frequently violated within the mroonga implementatation and therefore should not error. Reviewer: Jimmy Hu --- storage/mroonga/vendor/groonga/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/mroonga/vendor/groonga/CMakeLists.txt b/storage/mroonga/vendor/groonga/CMakeLists.txt index 7364853caef..c1b36aee9f4 100644 --- a/storage/mroonga/vendor/groonga/CMakeLists.txt +++ b/storage/mroonga/vendor/groonga/CMakeLists.txt @@ -150,7 +150,7 @@ endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGCXX) MY_CHECK_AND_SET_COMPILER_FLAG("-Wall") - MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-unused-but-set-variable") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-error=unused-but-set-variable") MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-pointer-sign") MY_CHECK_AND_SET_COMPILER_FLAG("-Wformat") MY_CHECK_AND_SET_COMPILER_FLAG("-Wstrict-aliasing=2") From f278c7a3e741cc5521bd8bd4633cd718b65784e0 Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Tue, 3 Jun 2025 16:51:16 +1000 Subject: [PATCH 29/43] MDEV-37502 mroonga + clang + Debug with exceeds stack frame size Stack limits exceeded for clang-20 +Debug + MSAN. Added disables for the following functions. storage/mroonga/vendor/groonga/lib/ii.c:303:1: error: stack frame size (16696) exceeds limit (16384) in 'buffer_segment_reserve' [-Werror,-Wframe-larger-than] 303 | buffer_segment_reserve(grn_ctx *ctx, grn_ii *ii, | ^ storage/mroonga/vendor/groonga/lib/ii.c:4803:1: error: stack frame size (20936) exceeds limit (16384) in 'grn_ii_delete_one' [-Werror,-Wframe-larger-than] 4803 | grn_ii_delete_one(grn_ctx *ctx, grn_ii *ii, grn_id tid, grn_ii_updspec *u, grn_hash *h) | ^ storage/mroonga/vendor/groonga/lib/ii.c:6313:1: error: stack frame size (25736) exceeds limit (16384) in 'grn_ii_column_update' [-Werror,-Wframe-larger-than] 6313 | grn_ii_column_update(grn_ctx *ctx, grn_ii *ii, grn_id rid, unsigned int section, | ^ For non-Debug the following stack frame sizes wher exceeded: storage/mroonga/vendor/groonga/lib/proc/proc_select.c:3575:1: warning: stack frame size (94072) exceeds limit (49152) in 'command_select' [-Wframe-larger-than] 3575 | command_select(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data) | ^ storage/mroonga/vendor/groonga/lib/proc/proc_schema.c:1134:1: warning: stack frame size (98360) exceeds limit (49152) in 'command_schema_output_tables' [-Wframe-larger-than] 1134 | command_schema_output_tables(grn_ctx *ctx, grn_schema_data *data) Reviewer: Jimmy Hu --- storage/mroonga/vendor/groonga/lib/ii.c | 7 ++++--- storage/mroonga/vendor/groonga/lib/proc/proc_schema.c | 4 ++++ storage/mroonga/vendor/groonga/lib/proc/proc_select.c | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/storage/mroonga/vendor/groonga/lib/ii.c b/storage/mroonga/vendor/groonga/lib/ii.c index 761513e3b30..87476604793 100644 --- a/storage/mroonga/vendor/groonga/lib/ii.c +++ b/storage/mroonga/vendor/groonga/lib/ii.c @@ -300,6 +300,8 @@ buffer_segment_new(grn_ctx *ctx, grn_ii *ii, uint32_t *segno) } } +PRAGMA_DISABLE_CHECK_STACK_FRAME + static grn_rc buffer_segment_reserve(grn_ctx *ctx, grn_ii *ii, uint32_t *lseg0, uint32_t *pseg0, @@ -386,6 +388,8 @@ buffer_segment_reserve(grn_ctx *ctx, grn_ii *ii, return ctx->rc; } +PRAGMA_REENABLE_CHECK_STACK_FRAME + #define BGQENQUE(lseg) do {\ if (ii->header->binfo[lseg] != GRN_II_PSEG_NOT_ASSIGNED) {\ ii->header->bgqbody[ii->header->bgqhead] = ii->header->binfo[lseg];\ @@ -4529,8 +4533,6 @@ grn_ii_get_disk_usage(grn_ctx *ctx, grn_ii *ii) } -PRAGMA_DISABLE_CHECK_STACK_FRAME - #define BIT11_01(x) ((x >> 1) & 0x7ff) #define BIT31_12(x) (x >> 12) @@ -4808,7 +4810,6 @@ exit : return ctx->rc; } -PRAGMA_REENABLE_CHECK_STACK_FRAME grn_rc grn_ii_delete_one(grn_ctx *ctx, grn_ii *ii, grn_id tid, grn_ii_updspec *u, grn_hash *h) diff --git a/storage/mroonga/vendor/groonga/lib/proc/proc_schema.c b/storage/mroonga/vendor/groonga/lib/proc/proc_schema.c index 7c632f45e53..c755e50e3bd 100644 --- a/storage/mroonga/vendor/groonga/lib/proc/proc_schema.c +++ b/storage/mroonga/vendor/groonga/lib/proc/proc_schema.c @@ -1130,6 +1130,8 @@ command_schema_output_table(grn_ctx *ctx, grn_ctx_output_map_close(ctx); } +PRAGMA_DISABLE_CHECK_STACK_FRAME + static void command_schema_output_tables(grn_ctx *ctx, grn_schema_data *data) { @@ -1201,6 +1203,8 @@ command_schema_output_tables(grn_ctx *ctx, grn_schema_data *data) GRN_OBJ_FIN(ctx, &table_ids); } +PRAGMA_REENABLE_CHECK_STACK_FRAME + static grn_obj * command_schema(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data) { diff --git a/storage/mroonga/vendor/groonga/lib/proc/proc_select.c b/storage/mroonga/vendor/groonga/lib/proc/proc_select.c index 7588b18a17c..ad0e26bd299 100644 --- a/storage/mroonga/vendor/groonga/lib/proc/proc_select.c +++ b/storage/mroonga/vendor/groonga/lib/proc/proc_select.c @@ -3569,7 +3569,6 @@ grn_select_data_fill_drilldowns(grn_ctx *ctx, return succeeded; } } -PRAGMA_REENABLE_CHECK_STACK_FRAME static grn_obj * command_select(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data) @@ -3723,6 +3722,8 @@ exit : return NULL; } +PRAGMA_REENABLE_CHECK_STACK_FRAME + #define N_VARS 26 #define DEFINE_VARS grn_expr_var vars[N_VARS] From ab6bcd85b39f34913eccf95e6d3399b7afc5e066 Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Thu, 12 Jun 2025 18:59:43 +1000 Subject: [PATCH 30/43] MDEV-37502: mroonga+clang+debug violates its own setting of compile flags sign-compare Under Debug build this becomes a Werror. Resolved this by changing the grn_mecab_chunk_size_threshold to a ptrdiff_t along with chunked_tokenize_utf8's string_bytes argument so there is no need to case. Reviewer: Jimmy Hu --- storage/mroonga/vendor/groonga/plugins/tokenizers/mecab.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/storage/mroonga/vendor/groonga/plugins/tokenizers/mecab.c b/storage/mroonga/vendor/groonga/plugins/tokenizers/mecab.c index cabf2c94e53..1e7216ebc00 100644 --- a/storage/mroonga/vendor/groonga/plugins/tokenizers/mecab.c +++ b/storage/mroonga/vendor/groonga/plugins/tokenizers/mecab.c @@ -37,7 +37,7 @@ static grn_plugin_mutex *sole_mecab_mutex = NULL; static grn_encoding sole_mecab_encoding = GRN_ENC_NONE; static grn_bool grn_mecab_chunked_tokenize_enabled = GRN_FALSE; -static int grn_mecab_chunk_size_threshold = 8192; +static ptrdiff_t grn_mecab_chunk_size_threshold = 8192; typedef struct { mecab_t *mecab; @@ -186,7 +186,7 @@ static grn_bool chunked_tokenize_utf8(grn_ctx *ctx, grn_mecab_tokenizer *tokenizer, const char *string, - unsigned int string_bytes) + ptrdiff_t string_bytes) { const char *chunk_start; const char *current; From 4f1170d9db3728eddb12bc1a247a77b70fb743f6 Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Wed, 27 Aug 2025 08:01:31 +1000 Subject: [PATCH 31/43] MDEV-37502: clang/debug/rocksdb - stack frame size Follow up to MDEV-34388 82d7419e0600a70b1a1c993d33ed6cf79fbd6129 Relax limit on specific files only. clang-20 + CMAKE_BUILD_TYPE=Debug: options/cf_options.cc:0:0: stack frame size (17624) exceeds limit (16384) in function '__cxx_global_var_init.33' options/db_options.cc:0:0: stack frame size (34328) exceeds limit (32768) in function '__cxx_global_var_init.45' Reviewer: Jimmy Hu --- storage/rocksdb/CMakeLists.txt | 7 ------- storage/rocksdb/build_rocksdb.cmake | 4 ++++ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/storage/rocksdb/CMakeLists.txt b/storage/rocksdb/CMakeLists.txt index 606a8f40394..5f35ccbb8c0 100644 --- a/storage/rocksdb/CMakeLists.txt +++ b/storage/rocksdb/CMakeLists.txt @@ -9,13 +9,6 @@ SET(CPACK_RPM_rocksdb-engine_PACKAGE_SUMMARY "RocksDB storage engine for MariaDB SET(CPACK_RPM_rocksdb-engine_PACKAGE_DESCRIPTION "The RocksDB storage engine is a high performance storage engine, aimed at maximising storage efficiency while maintaining InnoDB-like performance." PARENT_SCOPE) -STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" "" - CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" "" - CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") -STRING(REGEX REPLACE "-Wframe-larger-than=[0-9]*" "" - CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") -MY_CHECK_AND_SET_COMPILER_FLAG(-Wframe-larger-than=32768) MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-range-loop-construct) MY_CHECK_AND_SET_COMPILER_FLAG(-Wno-effc++ DEBUG RELWITHDEBINFO) diff --git a/storage/rocksdb/build_rocksdb.cmake b/storage/rocksdb/build_rocksdb.cmake index 1cdbad49419..8866f26f03a 100644 --- a/storage/rocksdb/build_rocksdb.cmake +++ b/storage/rocksdb/build_rocksdb.cmake @@ -507,6 +507,10 @@ if(MSVC) # Workaround Win8.1 SDK bug, that breaks /permissive- string(REPLACE "/permissive-" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") else() + set_source_files_properties(${ROCKSDB_SOURCE_DIR}/options/db_options.cc + PROPERTIES COMPILE_FLAGS "-Wframe-larger-than=40960") + set_source_files_properties(${ROCKSDB_SOURCE_DIR}/options/cf_options.cc + PROPERTIES COMPILE_FLAGS "-Wframe-larger-than=32768") set(CMAKE_REQUIRED_FLAGS "-msse4.2 -mpclmul ${CXX11_FLAGS}") CHECK_CXX_SOURCE_COMPILES(" From 4b058a33df945ec98c5d6e91dd31f36eab280294 Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Mon, 8 Sep 2025 15:11:01 +1000 Subject: [PATCH 32/43] Revert "MDEV-36701 command line client doesn't check session_track information (fix)" This reverts commit 3e43606de6a5c6a0ee180d9c6a0ee73b2480909a. This caused Clang-18+ UBSAN errors: SUMMARY: UndefinedBehaviorSanitizer: function-type-mismatch libmariadb/libmariadb/mariadb_lib.c:2723:17 +/libmariadb/libmariadb/mariadb_lib.c:2628:3: runtime error: call to function status_info_cb(void*, enum_mariadb_status_info, enum_session_state_type, st_ma_const_string*) through pointer to incorrect function type 'void (*)(void *, enum enum_mariadb_status_info, ...)' +/client/mysql.cc:3204: note: status_info_cb(void*, enum_mariadb_status_info, enum_session_state_type, st_ma_const_string*) defined here Reviewer: Jimmy Hu --- client/mysql.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/client/mysql.cc b/client/mysql.cc index 601b2df63ac..b9e643a12f3 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -3199,17 +3199,20 @@ static int reconnect(void) } #ifndef EMBEDDED_LIBRARY -static void status_info_cb(void *data, enum enum_mariadb_status_info type, - enum enum_session_state_type state_type, MARIADB_CONST_STRING *val) +static void status_info_cb(void *data, enum enum_mariadb_status_info type, ...) { - if (type == SESSION_TRACK_TYPE && state_type == SESSION_TRACK_SCHEMA) + va_list ap; + va_start(ap, type); + if (type == SESSION_TRACK_TYPE && va_arg(ap, int) == SESSION_TRACK_SCHEMA) { + MARIADB_CONST_STRING *val= va_arg(ap, MARIADB_CONST_STRING *); my_free(current_db); if (val->length) current_db= my_strndup(PSI_NOT_INSTRUMENTED, val->str, val->length, MYF(MY_FAE)); else current_db= NULL; } + va_end(ap); } #else #define mysql_optionsv(A,B,C,D) do { } while(0) From bf60478fd63a4328968afd666fe4f9f1482db9ec Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Mon, 8 Sep 2025 15:19:45 +1000 Subject: [PATCH 33/43] MDEV-34388/MDEV-36701: mysql status_info_cb disable varargs warnings Clang complains that the callback is using a variadic based on an enum. client/mysql.cc:3207:16: error: passing an object that undergoes default argument promotion to 'va_start' has undefined behavior [-Werror,-Wvarargs] 3207 | va_start(ap, type); This is part of the C/C API this has been referred as bug: * CONC-789 MARIADB_OPT_STATUS_CALLBACK Variadic around enums is undefined behaviour In the mean time, we are just disabling the warning. Reviewer: Jimmy Hu --- client/mysql.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/client/mysql.cc b/client/mysql.cc index b9e643a12f3..50f7cb9fb9d 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -3199,6 +3199,12 @@ static int reconnect(void) } #ifndef EMBEDDED_LIBRARY +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wvarargs" +/* CONC-789 */ +#endif + static void status_info_cb(void *data, enum enum_mariadb_status_info type, ...) { va_list ap; @@ -3214,6 +3220,10 @@ static void status_info_cb(void *data, enum enum_mariadb_status_info type, ...) } va_end(ap); } + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif #else #define mysql_optionsv(A,B,C,D) do { } while(0) #endif From cf5f0ff0b0f6cdd560f2aa99bf4fb68bb3dcf56c Mon Sep 17 00:00:00 2001 From: Hemant Dangi Date: Tue, 9 Sep 2025 19:09:43 +0530 Subject: [PATCH 34/43] MDEV-37581: Assertion failure sql_base.cc:3927: bool open_and_process_routine Issue: The testcase galera.galera_as_slave_gtid_myisam fails with below error: mariadb-10.11-build/sql/sql_base.cc:3927: bool open_and_process_routine(THD*, Query_tables_list*, Sroutine_hash_entry*, Prelocking_strategy*, bool, Open_table_context*, bool*, bool*): Assertion `0' failed. The error happens when rollback is applied to replicate MyISAM tables, but the query table list (sroutines_list) is not restored to it's original value before executing this statement. Solution: Backup and restore the query table list to it's original value. --- sql/wsrep_schema.cc | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/sql/wsrep_schema.cc b/sql/wsrep_schema.cc index 7a50a7c05e9..189ff2f6083 100644 --- a/sql/wsrep_schema.cc +++ b/sql/wsrep_schema.cc @@ -343,7 +343,7 @@ static int open_table(THD *thd, const LEX_CSTRING *schema_name, (thd->get_stmt_da()->sql_errno() == ER_QUERY_INTERRUPTED)); if (interrupted || - !open_n_lock_single_table(thd, table_list, table_list->lock_type, flags)) + !open_n_lock_single_table(thd, table_list, lock_type, flags)) { close_thread_tables(thd); DBUG_RETURN(1); @@ -805,11 +805,17 @@ int Wsrep_schema::store_view(THD* thd, const Wsrep_view& view) #ifdef WSREP_SCHEMA_MEMBERS_HISTORY TABLE* members_history_table= 0; #endif /* WSREP_SCHEMA_MEMBERS_HISTORY */ + Query_tables_list query_tables_list_backup; Wsrep_schema_impl::wsrep_off wsrep_off(thd); Wsrep_schema_impl::binlog_off binlog_off(thd); Wsrep_schema_impl::sql_safe_updates sql_safe_updates(thd); + /* + Backup and restore the query table list changes. + */ + thd->lex->reset_n_backup_query_tables_list(&query_tables_list_backup); + if (trans_begin(thd, MYSQL_START_TRANS_OPT_READ_WRITE)) { WSREP_ERROR("Failed to start transaction for store view"); @@ -925,6 +931,7 @@ int Wsrep_schema::store_view(THD* thd, const Wsrep_view& view) thd->release_transactional_locks(); out_not_started: + thd->lex->restore_backup_query_tables_list(&query_tables_list_backup); DBUG_RETURN(ret); } @@ -949,11 +956,17 @@ Wsrep_view Wsrep_schema::restore_view(THD* thd, const Wsrep_id& own_id) const { int proto_ver= 0; wsrep_cap_t capabilities= 0; std::vector members; + Query_tables_list query_tables_list_backup; // we don't want causal waits for reading non-replicated private data int const wsrep_sync_wait_saved= thd->variables.wsrep_sync_wait; thd->variables.wsrep_sync_wait= 0; + /* + Backup and restore the query table list changes. + */ + thd->lex->reset_n_backup_query_tables_list(&query_tables_list_backup); + if (trans_begin(thd, MYSQL_START_TRANS_OPT_READ_ONLY)) { WSREP_ERROR("wsrep_schema::restore_view(): Failed to start transaction"); goto out; @@ -1068,12 +1081,14 @@ Wsrep_view Wsrep_schema::restore_view(THD* thd, const Wsrep_id& own_id) const { os << "Restored cluster view:\n" << ret_view; WSREP_INFO("%s", os.str().c_str()); } + thd->lex->restore_backup_query_tables_list(&query_tables_list_backup); DBUG_RETURN(ret_view); } else { WSREP_ERROR("wsrep_schema::restore_view() failed."); Wsrep_view ret_view; + thd->lex->restore_backup_query_tables_list(&query_tables_list_backup); DBUG_RETURN(ret_view); } } @@ -1460,6 +1475,7 @@ int Wsrep_schema::replay_transaction(THD* orig_thd, { DBUG_ENTER("Wsrep_schema::replay_transaction"); DBUG_ASSERT(!fragments.empty()); + Query_tables_list query_tables_list_backup; THD *thd= new THD(next_thread_id(), true); if (!thd) @@ -1471,7 +1487,13 @@ int Wsrep_schema::replay_transaction(THD* orig_thd, thd->thread_stack= (orig_thd ? orig_thd->thread_stack : (char *) &thd); wsrep_assign_from_threadvars(thd); + + /* + Backup and restore the query table list changes. + */ + orig_thd->lex->reset_n_backup_query_tables_list(&query_tables_list_backup); int ret= ::replay_transaction(thd, orig_thd, rli, ws_meta, fragments); + orig_thd->lex->restore_backup_query_tables_list(&query_tables_list_backup); delete thd; DBUG_RETURN(ret); @@ -1774,6 +1796,7 @@ void Wsrep_schema::store_allowlist(std::vector& ip_allowlist) TABLE* allowlist_table= 0; TABLE_LIST allowlist_table_l; int error; + Wsrep_schema_impl::init_stmt(thd); if (Wsrep_schema_impl::open_for_write(thd, allowlist_table_str.c_str(), &allowlist_table_l)) From 16d91f87ff06c8db6e2191ba62b7a25bfb94f682 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 11 Sep 2025 13:20:48 +0300 Subject: [PATCH 35/43] MDEV-29930 Lock order inversion in ibuf_remove_free_page() The function ibuf_remove_free_page() was waiting for ibuf_mutex while holding ibuf.index->lock. This constitutes a lock order inversion and may cause InnoDB to hang when innodb_change_buffering is enabled and ibuf_merge_or_delete_for_page() is being executed concurrently. In fact, there is no need for ibuf_remove_free_page() to reacquire ibuf_mutex if we make ibuf.seg_size and ibuf.free_list_len protected by the ibuf.index->lock as well as the root page latch rather than by ibuf_mutex. ibuf.seg_size, ibuf.free_list_len: Instead of ibuf_mutex, let the ibuf.index->lock and the root page latch protect these, like ibuf.empty. ibuf_init_at_db_start(): Acquire the root page latch before updating ibuf.seg_size. (The ibuf.index would be created later.) ibuf_data_enough_free_for_insert(), ibuf_data_too_much_free(): Assert also ibuf.index->lock.have_u_or_x(). ibuf_remove_free_page(): Acquire the ibuf.index->lock and the root page latch before accessing ibuf.free_list_len. Simplify the way how the root page latch is released and reacquired. Acquire and release ibuf_mutex only once. ibuf_free_excess_pages(), ibuf_insert_low(): Acquire also ibuf.index->lock before reading ibuf.free_list_len. ibuf_print(): Acquire ibuf.index->lock before reading ibuf.free_list_len and ibuf.seg_size. Reviewed by: Vladislav Lesin Tested by: Matthias Leich --- storage/innobase/ibuf/ibuf0ibuf.cc | 76 +++++++++++++++------------- storage/innobase/include/ibuf0ibuf.h | 16 +++--- 2 files changed, 50 insertions(+), 42 deletions(-) diff --git a/storage/innobase/ibuf/ibuf0ibuf.cc b/storage/innobase/ibuf/ibuf0ibuf.cc index 685c68033fe..666a0839729 100644 --- a/storage/innobase/ibuf/ibuf0ibuf.cc +++ b/storage/innobase/ibuf/ibuf0ibuf.cc @@ -371,6 +371,7 @@ ibuf_size_update( const page_t* root) /*!< in: ibuf tree root */ { mysql_mutex_assert_owner(&ibuf_mutex); + ut_ad(!ibuf.index || ibuf.index->lock.have_u_or_x()); ibuf.free_list_len = flst_get_len(root + PAGE_HEADER + PAGE_BTR_IBUF_FREE_LIST); @@ -414,6 +415,15 @@ err_exit: return err; } + if (buf_block_t* block = + buf_page_get_gen(page_id_t(IBUF_SPACE_ID, + FSP_IBUF_TREE_ROOT_PAGE_NO), + 0, RW_X_LATCH, nullptr, BUF_GET, &mtr, &err)) { + root = buf_block_get_frame(block); + } else { + goto err_exit; + } + fseg_n_reserved_pages(*header_page, IBUF_HEADER + IBUF_TREE_SEG_HEADER + header_page->page.frame, &ibuf.seg_size, &mtr); @@ -424,15 +434,6 @@ err_exit: ut_ad(ibuf.seg_size >= 2); } while (0); - if (buf_block_t* block = - buf_page_get_gen(page_id_t(IBUF_SPACE_ID, - FSP_IBUF_TREE_ROOT_PAGE_NO), - 0, RW_X_LATCH, nullptr, BUF_GET, &mtr, &err)) { - root = buf_block_get_frame(block); - } else { - goto err_exit; - } - DBUG_EXECUTE_IF("ibuf_init_corrupt", err = DB_CORRUPTION; goto err_exit;); @@ -1746,27 +1747,24 @@ dare to start a pessimistic insert to the insert buffer. static inline bool ibuf_data_enough_free_for_insert() { mysql_mutex_assert_owner(&ibuf_mutex); + ut_ad(ibuf.index->lock.have_u_or_x()); /* We want a big margin of free pages, because a B-tree can sometimes grow in size also if records are deleted from it, as the node pointers can change, and we must make sure that we are able to delete the inserts buffered for pages that we read to the buffer pool, without any risk of running out of free space in the insert buffer. */ - return(ibuf.free_list_len >= (ibuf.size / 2) + 3 * ibuf.height); } /*********************************************************************//** Checks if there are enough pages in the free list of the ibuf tree that we should remove them and free to the file space management. -@return TRUE if enough free pages in list */ -UNIV_INLINE -ibool -ibuf_data_too_much_free(void) -/*=========================*/ +@return whether enough free pages in list */ +static inline bool ibuf_data_too_much_free() { mysql_mutex_assert_owner(&ibuf_mutex); - + ut_ad(ibuf.index->lock.have_u_or_x()); return(ibuf.free_list_len >= 3 + (ibuf.size / 2) + 3 * ibuf.height); } @@ -1844,6 +1842,7 @@ corrupted: goto corrupted; } + ut_ad(ibuf.index->lock.have_u_or_x()); ibuf.seg_size++; ibuf.free_list_len++; @@ -1881,7 +1880,7 @@ static dberr_t ibuf_remove_free_page(bool all = false) mysql_mutex_lock(&ibuf_pessimistic_insert_mutex); mysql_mutex_lock(&ibuf_mutex); - if (!header_page || (!all && !ibuf_data_too_much_free())) { + if (!header_page) { early_exit: mysql_mutex_unlock(&ibuf_mutex); mysql_mutex_unlock(&ibuf_pessimistic_insert_mutex); @@ -1897,7 +1896,10 @@ exit: goto early_exit; } - const auto root_savepoint = mtr.get_savepoint() - 1; + if (!all && !ibuf_data_too_much_free()) { + goto early_exit; + } + const uint32_t page_no = flst_get_last(PAGE_HEADER + PAGE_BTR_IBUF_FREE_LIST + root->page.frame).page; @@ -1915,7 +1917,6 @@ exit: because in fseg_free_page we access level 1 pages, and the root is a level 2 page. */ root->page.lock.u_unlock(); - mtr.lock_register(root_savepoint, MTR_MEMO_BUF_FIX); ibuf_exit(&mtr); /* Since pessimistic inserts were prevented, we know that the @@ -1931,15 +1932,14 @@ exit: header_page + IBUF_HEADER + IBUF_TREE_SEG_HEADER, fil_system.sys_space, page_no, &mtr); + root->page.lock.u_lock(); + if (err != DB_SUCCESS) { goto func_exit; } ibuf_enter(&mtr); - mysql_mutex_lock(&ibuf_mutex); - mtr.upgrade_buffer_fix(root_savepoint, RW_X_LATCH); - /* Remove the page from the free list and update the ibuf size data */ if (buf_block_t* block = buf_page_get_gen(page_id, 0, RW_X_LATCH, nullptr, BUF_GET, @@ -1951,6 +1951,7 @@ exit: } mysql_mutex_unlock(&ibuf_pessimistic_insert_mutex); + ut_ad(ibuf.index->lock.have_u_or_x()); if (err == DB_SUCCESS) { ibuf.seg_size--; @@ -1959,8 +1960,6 @@ exit: } func_exit: - mysql_mutex_unlock(&ibuf_mutex); - if (bitmap_page) { /* Set the bit indicating that this page is no more an ibuf tree page (level 2 page) */ @@ -1988,12 +1987,11 @@ ibuf_free_excess_pages(void) requested service too much */ for (ulint i = 0; i < 4; i++) { - - ibool too_much_free; - mysql_mutex_lock(&ibuf_mutex); - too_much_free = ibuf_data_too_much_free(); + ibuf.index->lock.u_lock(SRW_LOCK_CALL); + bool too_much_free = ibuf_data_too_much_free(); mysql_mutex_unlock(&ibuf_mutex); + ibuf.index->lock.u_unlock(); if (!too_much_free) { return; @@ -3175,8 +3173,11 @@ ibuf_insert_low( for (;;) { mysql_mutex_lock(&ibuf_pessimistic_insert_mutex); mysql_mutex_lock(&ibuf_mutex); + ibuf.index->lock.u_lock(SRW_LOCK_CALL); + bool enough = ibuf_data_enough_free_for_insert(); + ibuf.index->lock.u_unlock(); - if (UNIV_LIKELY(ibuf_data_enough_free_for_insert())) { + if (UNIV_LIKELY(enough)) { break; } @@ -4485,12 +4486,21 @@ ibuf_print( if (UNIV_UNLIKELY(!ibuf.index)) return; mysql_mutex_lock(&ibuf_mutex); + const ulint size = ibuf.size; + ibuf.index->lock.u_lock(SRW_LOCK_CALL); + /* Any modification of these fields is enclosed between + ibuf_tree_root_get() and mtr_t::commit(), and thus + protected by ibuf.index->lock. */ + const ulint free_list_len = ibuf.free_list_len; + const ulint seg_size = ibuf.seg_size; + ibuf.index->lock.u_unlock(); + + mysql_mutex_unlock(&ibuf_mutex); + fprintf(file, "Ibuf: size " ULINTPF ", free list len " ULINTPF "," " seg size " ULINTPF ", " ULINTPF " merges\n", - ulint{ibuf.size}, - ibuf.free_list_len, - ibuf.seg_size, + size, free_list_len, seg_size, ulint{ibuf.n_merges}); fputs("merged operations:\n ", file); @@ -4498,8 +4508,6 @@ ibuf_print( fputs("discarded operations:\n ", file); ibuf_print_ops(ibuf.n_discarded_ops, file); - - mysql_mutex_unlock(&ibuf_mutex); } /** Check the insert buffer bitmaps on IMPORT TABLESPACE. diff --git a/storage/innobase/include/ibuf0ibuf.h b/storage/innobase/include/ibuf0ibuf.h index e38515f0402..36d4b8e78a9 100644 --- a/storage/innobase/include/ibuf0ibuf.h +++ b/storage/innobase/include/ibuf0ibuf.h @@ -68,14 +68,14 @@ struct ibuf_t{ ibuf index tree, in pages */ ulint seg_size; /*!< allocated pages of the file segment containing ibuf header and - tree */ - bool empty; /*!< Protected by the page - latch of the root page of the - insert buffer tree - (FSP_IBUF_TREE_ROOT_PAGE_NO). true - if and only if the insert - buffer tree is empty. */ - ulint free_list_len; /*!< length of the free list */ + tree; protected by ibuf.index->lock + and the root page latch */ + bool empty; /*!< whether the change buffer is + empty; protected by ibuf.index->lock + and the root page latch */ + uint32_t free_list_len; /*!< length of the free list; + protected by ibuf.index->lock and + the root page latch */ ulint height; /*!< tree height */ dict_index_t* index; /*!< insert buffer index */ From a2ee2c7ea10d76b5bbacf8dd850706cdaaaa53d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 11 Sep 2025 13:25:08 +0300 Subject: [PATCH 36/43] MDEV-29930 Lock order inversion in ibuf_remove_free_page() The function ibuf_remove_free_page() was waiting for ibuf_mutex while holding ibuf.index->lock. This constitutes a lock order inversion and may cause InnoDB to hang when innodb_change_buffering is enabled and ibuf_merge_or_delete_for_page() is being executed concurrently. In fact, there is no need for ibuf_remove_free_page() to reacquire ibuf_mutex if we make ibuf.seg_size and ibuf.free_list_len protected by the ibuf.index->lock as well as the root page latch rather than by ibuf_mutex. ibuf.seg_size, ibuf.free_list_len: Instead of ibuf_mutex, let the ibuf.index->lock and the root page latch protect these, like ibuf.empty. ibuf_init_at_db_start(): Acquire the root page latch before updating ibuf.seg_size. (The ibuf.index would be created later.) ibuf_data_enough_free_for_insert(), ibuf_data_too_much_free(): Assert also ibuf.index->lock.have_u_or_x(). ibuf_remove_free_page(): Acquire the ibuf.index->lock and the root page latch before accessing ibuf.free_list_len. Simplify the way how the root page latch is released and reacquired. Acquire and release ibuf_mutex only once. ibuf_free_excess_pages(), ibuf_insert_low(): Acquire also ibuf.index->lock before reading ibuf.free_list_len. ibuf_print(): Acquire ibuf.index->lock before reading ibuf.free_list_len and ibuf.seg_size. Reviewed by: Vladislav Lesin Tested by: Matthias Leich --- storage/innobase/ibuf/ibuf0ibuf.cc | 61 +++++++++++++++------------- storage/innobase/include/ibuf0ibuf.h | 16 ++++---- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/storage/innobase/ibuf/ibuf0ibuf.cc b/storage/innobase/ibuf/ibuf0ibuf.cc index 8d28952bd17..ea1e309b195 100644 --- a/storage/innobase/ibuf/ibuf0ibuf.cc +++ b/storage/innobase/ibuf/ibuf0ibuf.cc @@ -371,6 +371,7 @@ ibuf_size_update( const page_t* root) /*!< in: ibuf tree root */ { mysql_mutex_assert_owner(&ibuf_mutex); + ut_ad(!ibuf.index || ibuf.index->lock.have_u_or_x()); ibuf.free_list_len = flst_get_len(root + PAGE_HEADER + PAGE_BTR_IBUF_FREE_LIST); @@ -414,6 +415,15 @@ err_exit: return err; } + if (buf_block_t* block = + buf_page_get_gen(page_id_t(IBUF_SPACE_ID, + FSP_IBUF_TREE_ROOT_PAGE_NO), + 0, RW_X_LATCH, nullptr, BUF_GET, &mtr, &err)) { + root = buf_block_get_frame(block); + } else { + goto err_exit; + } + fseg_n_reserved_pages(*header_page, IBUF_HEADER + IBUF_TREE_SEG_HEADER + header_page->page.frame, &ibuf.seg_size, &mtr); @@ -424,15 +434,6 @@ err_exit: ut_ad(ibuf.seg_size >= 2); } while (0); - if (buf_block_t* block = - buf_page_get_gen(page_id_t(IBUF_SPACE_ID, - FSP_IBUF_TREE_ROOT_PAGE_NO), - 0, RW_X_LATCH, nullptr, BUF_GET, &mtr, &err)) { - root = buf_block_get_frame(block); - } else { - goto err_exit; - } - DBUG_EXECUTE_IF("ibuf_init_corrupt", err = DB_CORRUPTION; goto err_exit;); @@ -1741,26 +1742,24 @@ dare to start a pessimistic insert to the insert buffer. static inline bool ibuf_data_enough_free_for_insert() { mysql_mutex_assert_owner(&ibuf_mutex); + ut_ad(ibuf.index->lock.have_u_or_x()); /* We want a big margin of free pages, because a B-tree can sometimes grow in size also if records are deleted from it, as the node pointers can change, and we must make sure that we are able to delete the inserts buffered for pages that we read to the buffer pool, without any risk of running out of free space in the insert buffer. */ - return(ibuf.free_list_len >= (ibuf.size / 2) + 3 * ibuf.height); } /*********************************************************************//** Checks if there are enough pages in the free list of the ibuf tree that we should remove them and free to the file space management. -@return TRUE if enough free pages in list */ -UNIV_INLINE -ibool -ibuf_data_too_much_free(void) -/*=========================*/ +@return whether enough free pages in list */ +static inline bool ibuf_data_too_much_free() { mysql_mutex_assert_owner(&ibuf_mutex); + ut_ad(ibuf.index->lock.have_u_or_x()); return(ibuf.free_list_len >= 3 + (ibuf.size / 2) + 3 * ibuf.height); } @@ -1839,6 +1838,7 @@ corrupted: goto corrupted; } + ut_ad(ibuf.index->lock.have_u_or_x()); ibuf.seg_size++; ibuf.free_list_len++; @@ -1876,7 +1876,7 @@ static dberr_t ibuf_remove_free_page(bool all = false) mysql_mutex_lock(&ibuf_pessimistic_insert_mutex); mysql_mutex_lock(&ibuf_mutex); - if (!header_page || (!all && !ibuf_data_too_much_free())) { + if (!header_page) { early_exit: mysql_mutex_unlock(&ibuf_mutex); mysql_mutex_unlock(&ibuf_pessimistic_insert_mutex); @@ -1892,7 +1892,10 @@ exit: goto early_exit; } - const auto root_savepoint = mtr.get_savepoint() - 1; + if (!all && !ibuf_data_too_much_free()) { + goto early_exit; + } + const uint32_t page_no = flst_get_last(PAGE_HEADER + PAGE_BTR_IBUF_FREE_LIST + root->page.frame).page; @@ -1910,7 +1913,6 @@ exit: because in fseg_free_page we access level 1 pages, and the root is a level 2 page. */ root->page.lock.u_unlock(); - mtr.lock_register(root_savepoint, MTR_MEMO_BUF_FIX); ibuf_exit(&mtr); /* Since pessimistic inserts were prevented, we know that the @@ -1926,15 +1928,14 @@ exit: header_page + IBUF_HEADER + IBUF_TREE_SEG_HEADER, fil_system.sys_space, page_no, &mtr); + root->page.lock.u_lock(); + if (err != DB_SUCCESS) { goto func_exit; } ibuf_enter(&mtr); - mysql_mutex_lock(&ibuf_mutex); - mtr.upgrade_buffer_fix(root_savepoint, RW_X_LATCH); - /* Remove the page from the free list and update the ibuf size data */ if (buf_block_t* block = buf_page_get_gen(page_id, 0, RW_X_LATCH, nullptr, BUF_GET, @@ -1946,6 +1947,7 @@ exit: } mysql_mutex_unlock(&ibuf_pessimistic_insert_mutex); + ut_ad(ibuf.index->lock.have_u_or_x()); if (err == DB_SUCCESS) { ibuf.seg_size--; @@ -1954,8 +1956,6 @@ exit: } func_exit: - mysql_mutex_unlock(&ibuf_mutex); - if (bitmap_page) { /* Set the bit indicating that this page is no more an ibuf tree page (level 2 page) */ @@ -1983,12 +1983,11 @@ ibuf_free_excess_pages(void) requested service too much */ for (ulint i = 0; i < 4; i++) { - - ibool too_much_free; - mysql_mutex_lock(&ibuf_mutex); - too_much_free = ibuf_data_too_much_free(); + ibuf.index->lock.u_lock(SRW_LOCK_CALL); + bool too_much_free = ibuf_data_too_much_free(); mysql_mutex_unlock(&ibuf_mutex); + ibuf.index->lock.u_unlock(); if (!too_much_free) { return; @@ -3169,8 +3168,11 @@ ibuf_insert_low( for (;;) { mysql_mutex_lock(&ibuf_pessimistic_insert_mutex); mysql_mutex_lock(&ibuf_mutex); + ibuf.index->lock.u_lock(SRW_LOCK_CALL); + bool enough = ibuf_data_enough_free_for_insert(); + ibuf.index->lock.u_unlock(); - if (UNIV_LIKELY(ibuf_data_enough_free_for_insert())) { + if (UNIV_LIKELY(enough)) { break; } @@ -4486,8 +4488,11 @@ ibuf_print( } const uint32_t size= ibuf.size; + ibuf.index->lock.u_lock(SRW_LOCK_CALL); const uint32_t free_list_len= ibuf.free_list_len; const uint32_t seg_size= ibuf.seg_size; + ibuf.index->lock.u_unlock(); + mysql_mutex_unlock(&ibuf_mutex); fprintf(file, diff --git a/storage/innobase/include/ibuf0ibuf.h b/storage/innobase/include/ibuf0ibuf.h index b00532f9a02..f3d1bc7a9f7 100644 --- a/storage/innobase/include/ibuf0ibuf.h +++ b/storage/innobase/include/ibuf0ibuf.h @@ -68,15 +68,15 @@ struct ibuf_t{ ibuf index tree, in pages */ uint32_t seg_size; /*!< allocated pages of the file segment containing ibuf header and - tree */ - bool empty; /*!< Protected by the page - latch of the root page of the - insert buffer tree - (FSP_IBUF_TREE_ROOT_PAGE_NO). true - if and only if the insert - buffer tree is empty. */ + tree; protected by ibuf.index->lock + and the root page latch */ + bool empty; /*!< whether the change buffer is + empty; protected by ibuf.index->lock + and the root page latch */ uint8_t height; /*!< tree height */ - uint32_t free_list_len; /*!< length of the free list */ + uint32_t free_list_len; /*!< length of the free list; + protected by ibuf.index->lock and + the root page latch */ dict_index_t* index; /*!< insert buffer index */ /** number of pages merged */ From 95782e5cf2dbd977473f91a59bdb47da4bf6261e Mon Sep 17 00:00:00 2001 From: Daniel Black Date: Fri, 12 Sep 2025 15:22:08 +1000 Subject: [PATCH 37/43] MDEV-37633 Connect UDF functions push empty string warning. BsonGet_String and JsonGet_String with a NULL argument push an empty string warning which is the default contents of g->Message. In push_warning in the server, there is a Debug assertion that the string doesn't end in \n. This looks before the last null of the string, which in this case is before the buffer. This results in a UBSAN error as its a pointer overflow/underflow. Correct by adding an "Argument is NULL" as the warning message. Also corrected the JsonGet_String to error if the Value failed to allocate a buffer in its constructor. --- storage/connect/bsonudf.cpp | 3 +++ storage/connect/encas.h | 1 + storage/connect/engmsg.h | 1 + storage/connect/jsonudf.cpp | 6 ++++++ storage/connect/msgid.h | 1 + storage/connect/mysql-test/connect/r/bson_udf.result | 2 +- storage/connect/mysql-test/connect/r/json_udf.result | 2 +- 7 files changed, 14 insertions(+), 2 deletions(-) diff --git a/storage/connect/bsonudf.cpp b/storage/connect/bsonudf.cpp index 1ca10979ae2..8b6b7e03156 100644 --- a/storage/connect/bsonudf.cpp +++ b/storage/connect/bsonudf.cpp @@ -294,8 +294,11 @@ my_bool BJNX::ParseJpath(PGLOBAL g) if (Parsed) return false; // Already done else if (!Jpath) + { // Jpath = Name; + snprintf(g->Message, sizeof(g->Message), MSG(ARG_IS_NULL)); return true; + } if (trace(1)) htrc("ParseJpath %s\n", SVP(Jpath)); diff --git a/storage/connect/encas.h b/storage/connect/encas.h index 37e97f211e6..ce03fd7db4c 100644 --- a/storage/connect/encas.h +++ b/storage/connect/encas.h @@ -318,3 +318,4 @@ case MSG_XPATH_CNTX_ERR: p = "Unable to create new XPath context"; break; case MSG_XPATH_EVAL_ERR: p = "Unable to evaluate xpath location '%s'"; break; case MSG_XPATH_NOT_SUPP: p = "Unsupported Xpath for column %s"; break; + case MSG_ARG_IS_NULL: p = "Argument is NULL"; break; diff --git a/storage/connect/engmsg.h b/storage/connect/engmsg.h index c072511065e..25b50e2a923 100644 --- a/storage/connect/engmsg.h +++ b/storage/connect/engmsg.h @@ -324,3 +324,4 @@ #define MSG_XPATH_EVAL_ERR "Unable to evaluate xpath location '%s'" #define MSG_XPATH_NOT_SUPP "Unsupported Xpath for column %s" #define MSG_ZERO_DIVIDE "Zero divide in expression" +#define MSG_ARG_IS_NULL "Argument is NULL" diff --git a/storage/connect/jsonudf.cpp b/storage/connect/jsonudf.cpp index f48b3ef3c2d..9b51f957959 100644 --- a/storage/connect/jsonudf.cpp +++ b/storage/connect/jsonudf.cpp @@ -98,7 +98,10 @@ my_bool JSNX::SetJpath(PGLOBAL g, char *path, my_bool jb) { // Check Value was allocated if (!Value) + { + snprintf(g->Message, sizeof(g->Message), MSG(NO_MEMORY)); return true; + } Value->SetNullable(true); Jpath = path; @@ -217,8 +220,11 @@ my_bool JSNX::ParseJpath(PGLOBAL g) if (Parsed) return false; // Already done else if (!Jpath) + { // Jpath = Name; + snprintf(g->Message, sizeof(g->Message), MSG(ARG_IS_NULL)); return true; + } if (trace(1)) htrc("ParseJpath %s\n", SVP(Jpath)); diff --git a/storage/connect/msgid.h b/storage/connect/msgid.h index cee78aa1783..65823ef73d3 100644 --- a/storage/connect/msgid.h +++ b/storage/connect/msgid.h @@ -324,3 +324,4 @@ #define MSG_FIX_OVFLW_TIMES 522 #define MSG_FIX_UNFLW_ADD 523 #define MSG_FIX_UNFLW_TIMES 524 +#define MSG_ARG_IS_NULL 525 diff --git a/storage/connect/mysql-test/connect/r/bson_udf.result b/storage/connect/mysql-test/connect/r/bson_udf.result index fef55f7d3d9..650e83768e3 100644 --- a/storage/connect/mysql-test/connect/r/bson_udf.result +++ b/storage/connect/mysql-test/connect/r/bson_udf.result @@ -352,7 +352,7 @@ SELECT BsonGet_String(NULL json_, NULL); BsonGet_String(NULL json_, NULL) NULL Warnings: -Warning 1105 +Warning 1105 Argument is NULL /* NULL WARNING */ SELECT department, BsonGet_String(Bson_Make_Object(department, Bson_Array_Grp(salary) "Json_salaries"),'salaries.[+]') Sumsal FROM t3 GROUP BY department; department Sumsal diff --git a/storage/connect/mysql-test/connect/r/json_udf.result b/storage/connect/mysql-test/connect/r/json_udf.result index e3ee84d9084..4b2db3f8322 100644 --- a/storage/connect/mysql-test/connect/r/json_udf.result +++ b/storage/connect/mysql-test/connect/r/json_udf.result @@ -346,7 +346,7 @@ SELECT JsonGet_String(NULL json_, NULL); JsonGet_String(NULL json_, NULL) NULL Warnings: -Warning 1105 +Warning 1105 Argument is NULL SELECT department, JsonGet_String(Json_Make_Object(department, Json_Array_Grp(salary) "Json_salaries"),'salaries.[+]') Sumsal FROM t3 GROUP BY department; department Sumsal 0021 28500.000000 From 1b5fb40b6d2f5810e1fa74b0fb06f4ff1c9be504 Mon Sep 17 00:00:00 2001 From: Oleksandr Byelkin Date: Wed, 18 Oct 2023 15:27:51 +0200 Subject: [PATCH 38/43] MDEV-32308 Server crash on cleanup of non-fully-constructed-due-to-an-error CTE Cleanup sequence comes after error state when not all units were prepared. The With_element without rec_result was created for following unit: "select 1 AS `1` union select 'x' AS x from x" the error happened in select "select x AS x" so above unit was not prepared. The case seems to be legal and the presence of rec_result must be checked during the cleanup. --- mysql-test/main/cte_recursive.result | 7 +++++++ mysql-test/main/cte_recursive.test | 9 +++++++++ sql/sql_union.cc | 3 ++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/mysql-test/main/cte_recursive.result b/mysql-test/main/cte_recursive.result index 415ab7129c8..22228370157 100644 --- a/mysql-test/main/cte_recursive.result +++ b/mysql-test/main/cte_recursive.result @@ -5857,3 +5857,10 @@ b rank() over (order by c) drop view v1; drop table t1; # End of 10.4 tests +# +# MDEV-32308: Server crash on cleanup of +# non-fully-constructed-due-to-an-error CTE +# +SELECT ( WITH RECURSIVE x AS ( WITH x AS ( SELECT 1 FROM t14 ) SELECT x ) , t14 AS ( SELECT 1 UNION SELECT 'x' FROM x ) SELECT x FROM x WHERE ( SELECT x FROM x ) ) ; +ERROR 42S22: Unknown column 'x' in 'SELECT' +# End of 10.6 tests diff --git a/mysql-test/main/cte_recursive.test b/mysql-test/main/cte_recursive.test index 6e2dd3b1f16..35d3a8609d9 100644 --- a/mysql-test/main/cte_recursive.test +++ b/mysql-test/main/cte_recursive.test @@ -4056,3 +4056,12 @@ drop view v1; drop table t1; --echo # End of 10.4 tests + +--echo # +--echo # MDEV-32308: Server crash on cleanup of +--echo # non-fully-constructed-due-to-an-error CTE +--echo # +--error ER_BAD_FIELD_ERROR +SELECT ( WITH RECURSIVE x AS ( WITH x AS ( SELECT 1 FROM t14 ) SELECT x ) , t14 AS ( SELECT 1 UNION SELECT 'x' FROM x ) SELECT x FROM x WHERE ( SELECT x FROM x ) ) ; + +--echo # End of 10.6 tests diff --git a/sql/sql_union.cc b/sql/sql_union.cc index dd9998bcb9b..ca73f5e006e 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -2622,7 +2622,8 @@ bool st_select_lex_unit::cleanup() With_element *with_elem= with_element; while ((with_elem= with_elem->get_next_mutually_recursive()) != with_element) - with_elem->rec_result->cleanup_count++; + if (with_elem->rec_result) + with_elem->rec_result->cleanup_count++; DBUG_RETURN(FALSE); } } From 2ccf6a245f9fba2f44e79803c86120df158287c8 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Fri, 12 Sep 2025 10:38:14 +0200 Subject: [PATCH 39/43] MDEV-37483 - fix output differences Linux vs Windows in the test - Do not mix latin1 and utf8 in the test and result file. Not only it looks strange, and it does not work on Windows either. - Fix --default-character-set usage in mariadb-import. Prior to patch it was just using platform default when communicating with server. Now, it uses the charset provided by the option. - Use --default-character-set=utf8mb4 in test, to have uniform output across different OSes. --- client/mysqlimport.c | 6 +++--- mysql-test/main/mysqldump.result | 23 +++++++++++------------ mysql-test/main/mysqldump.test | 23 +++++++++++------------ 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/client/mysqlimport.c b/client/mysqlimport.c index 4d826742a8d..737745daadb 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -343,8 +343,8 @@ static int write_to_table(char *filename, MYSQL *mysql) if (strchr(tablename, '@')) { uint errors, len; - const char *csname= my_default_csname(); /* see MYSQL_SET_CHARSET_NAME */ - CHARSET_INFO *cs= get_charset_by_csname(csname, MY_CS_PRIMARY, MYF(0)); + CHARSET_INFO *cs= + get_charset_by_csname(default_charset, MY_CS_PRIMARY, MYF(0)); len= my_convert(escaped_name, sizeof(escaped_name) - 1, cs, tablename, (uint32)strlen(tablename), &my_charset_filename, &errors); if (!errors) @@ -498,7 +498,7 @@ static MYSQL *db_connect(char *host, char *database, mysql_options(mysql, MYSQL_DEFAULT_AUTH, opt_default_auth); if (!strcmp(default_charset,MYSQL_AUTODETECT_CHARSET_NAME)) default_charset= (char *)my_default_csname(); - mysql_options(mysql, MYSQL_SET_CHARSET_NAME, my_default_csname()); + mysql_options(mysql, MYSQL_SET_CHARSET_NAME, default_charset); mysql_options(mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0); mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD, "program_name", "mysqlimport"); diff --git a/mysql-test/main/mysqldump.result b/mysql-test/main/mysqldump.result index dd70c664d61..a316135393b 100644 --- a/mysql-test/main/mysqldump.result +++ b/mysql-test/main/mysqldump.result @@ -6627,33 +6627,32 @@ drop table t1; # # MDEV-37483 mariadb-dump -T doesn't convert table names # -set names latin1; create database foo; use foo; -create table `con_schne_gre` (a int) select 1 as a; +create table `con_schöne_grüße` (a int) select 1 as a; create table `con` (b int) select 2 as b; create table `con/bar` (c int) select 3 as c; -create table `con@home` (d int) select 4 as d; +create table `con@fame` (d int) select 4 as d; drop database foo; use test; con@002fbar.sql con@002fbar.txt con@@@.sql con@@@.txt -con@home.sql -con@home.txt +con@fame.sql +con@fame.txt con_sch@1ine_gr@1o@1je.sql con_sch@1ine_gr@1o@1je.txt show tables; Tables_in_test con con/bar -con@home -con_schne_gre +con@fame +con_schöne_grüße test.con: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0 test.con/bar: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0 -test.con@home: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0 -select * from `con_schne_gre`; +test.con@fame: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0 +select * from `con_schöne_grüße`; a 1 select * from `con`; @@ -6662,11 +6661,11 @@ b select * from `con/bar`; c 3 -select * from `con@home`; +select * from `con@fame`; d 4 -drop table `con_schne_gre`; +drop table `con_schöne_grüße`; drop table `con`; drop table `con/bar`; -drop table `con@home`; +drop table `con@fame`; # End of 10.6 tests diff --git a/mysql-test/main/mysqldump.test b/mysql-test/main/mysqldump.test index 971e7f29fa8..4069e3796b4 100644 --- a/mysql-test/main/mysqldump.test +++ b/mysql-test/main/mysqldump.test @@ -3039,24 +3039,23 @@ drop table t1; --echo # --echo # MDEV-37483 mariadb-dump -T doesn't convert table names --echo # -set names latin1; create database foo; use foo; -create table `con_schne_gre` (a int) select 1 as a; +create table `con_schöne_grüße` (a int) select 1 as a; create table `con` (b int) select 2 as b; create table `con/bar` (c int) select 3 as c; -create table `con@home` (d int) select 4 as d; +create table `con@fame` (d int) select 4 as d; exec $MYSQL_DUMP foo --tab $MYSQLTEST_VARDIR/tmp; drop database foo; use test; -move_file $MYSQLTEST_VARDIR/tmp/con@0040home.sql $MYSQLTEST_VARDIR/tmp/con@home.sql; -move_file $MYSQLTEST_VARDIR/tmp/con@0040home.txt $MYSQLTEST_VARDIR/tmp/con@home.txt; +move_file $MYSQLTEST_VARDIR/tmp/con@0040fame.sql $MYSQLTEST_VARDIR/tmp/con@fame.sql; +move_file $MYSQLTEST_VARDIR/tmp/con@0040fame.txt $MYSQLTEST_VARDIR/tmp/con@fame.txt; list_files $MYSQLTEST_VARDIR/tmp con*; exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/con@@@.sql; exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/con@002fbar.sql; exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/con_sch@1ine_gr@1o@1je.sql; -exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/con@home.sql; +exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/con@fame.sql; show tables; exec $MYSQL_IMPORT test $MYSQLTEST_VARDIR/tmp/con@@@.txt; exec $MYSQL_IMPORT test $MYSQLTEST_VARDIR/tmp/con@002fbar.txt; @@ -3064,16 +3063,16 @@ if (`select @@version like '10.6.%'`) { # utf8 console output on Windows is fixed in MDEV-26713, until then --disable_result_log } -exec $MYSQL_IMPORT test $MYSQLTEST_VARDIR/tmp/con_sch@1ine_gr@1o@1je.txt; +exec $MYSQL_IMPORT --default-character-set=utf8mb4 test $MYSQLTEST_VARDIR/tmp/con_sch@1ine_gr@1o@1je.txt; --enable_result_log -exec $MYSQL_IMPORT test $MYSQLTEST_VARDIR/tmp/con@home.txt; -select * from `con_schne_gre`; +exec $MYSQL_IMPORT test $MYSQLTEST_VARDIR/tmp/con@fame.txt; +select * from `con_schöne_grüße`; select * from `con`; select * from `con/bar`; -select * from `con@home`; -drop table `con_schne_gre`; +select * from `con@fame`; +drop table `con_schöne_grüße`; drop table `con`; drop table `con/bar`; -drop table `con@home`; +drop table `con@fame`; --echo # End of 10.6 tests From 692f32852bcb78b4eb7cc27a03e2f070b83fc115 Mon Sep 17 00:00:00 2001 From: Sergey Vojtovich Date: Fri, 12 Sep 2025 16:14:31 +0400 Subject: [PATCH 40/43] Additional fixes for main.debug_sync failures Test for MDEV-30364 moved to main.mdl_sync, main.debug_sync is intended to test debug sync facility itself. Using ER_LOCK_WAIT_TIMEOUT instead of ER_QUERY_INTERRUPTED allows less thread synchronization. Originally fixed by da5cffeab36. --- mysql-test/main/debug_sync.result | 29 ----------------------- mysql-test/main/debug_sync.test | 39 ------------------------------- mysql-test/main/mdl_sync.result | 20 ++++++++++++++++ mysql-test/main/mdl_sync.test | 23 ++++++++++++++++++ 4 files changed, 43 insertions(+), 68 deletions(-) diff --git a/mysql-test/main/debug_sync.result b/mysql-test/main/debug_sync.result index 63158d246f9..4c1711a6d6b 100644 --- a/mysql-test/main/debug_sync.result +++ b/mysql-test/main/debug_sync.result @@ -320,32 +320,3 @@ SHOW VARIABLES LIKE 'DEBUG_SYNC'; Variable_name Value debug_sync ON - current signals: 's2,s7,s1,s5' SET DEBUG_SYNC= 'RESET'; -# -# MDEV-30364 Assertion MDL_EXCLUSIVE on DISCARD TABLESPACE in LOCK TABLE mode -# -create table t (c int) engine=innodb; -connect con1,localhost,root; -set debug_sync='get_schema_column SIGNAL waiting WAIT_FOR go'; -select column_name from information_schema.columns -where table_schema='test' and table_name='t'; -connection default; -set debug_sync= 'now WAIT_FOR waiting'; -lock table t write; -alter table t discard tablespace; -connect con2,localhost,root; -kill query $connid; -disconnect con2; -connection default; -ERROR 70100: Query execution was interrupted -set debug_sync='now SIGNAL go'; -connection con1; -column_name -c -disconnect con1; -connection default; -unlock tables; -drop table t; -set debug_sync= 'reset'; -# -# End of 10.6 tests -# diff --git a/mysql-test/main/debug_sync.test b/mysql-test/main/debug_sync.test index 6ae2e3336bb..4c39ed39bfe 100644 --- a/mysql-test/main/debug_sync.test +++ b/mysql-test/main/debug_sync.test @@ -448,42 +448,3 @@ SHOW VARIABLES LIKE 'DEBUG_SYNC'; # Otherwise signal would confuse the next test. # SET DEBUG_SYNC= 'RESET'; - ---echo # ---echo # MDEV-30364 Assertion MDL_EXCLUSIVE on DISCARD TABLESPACE in LOCK TABLE mode ---echo # -create table t (c int) engine=innodb; ---connect con1,localhost,root -set debug_sync='get_schema_column SIGNAL waiting WAIT_FOR go'; -send select column_name from information_schema.columns -where table_schema='test' and table_name='t'; - ---connection default -set debug_sync= 'now WAIT_FOR waiting'; -let $connid=`select connection_id()`; -lock table t write; -send alter table t discard tablespace; - ---connect con2,localhost,root ---let $wait_condition= SELECT COUNT(*)=1 FROM information_schema.processlist WHERE id=$connid AND state='Waiting for table metadata lock' AND INFO='alter table t discard tablespace' ---source include/wait_condition.inc ---evalp kill query $connid ---disconnect con2 - ---connection default ---error ER_QUERY_INTERRUPTED -reap; -set debug_sync='now SIGNAL go'; - ---connection con1 -reap; ---disconnect con1 - ---connection default -unlock tables; -drop table t; -set debug_sync= 'reset'; - ---echo # ---echo # End of 10.6 tests ---echo # diff --git a/mysql-test/main/mdl_sync.result b/mysql-test/main/mdl_sync.result index 04a601ca9bf..fdfd68957ac 100644 --- a/mysql-test/main/mdl_sync.result +++ b/mysql-test/main/mdl_sync.result @@ -3046,3 +3046,23 @@ disconnect con1; connection default; DROP VIEW v1; SET debug_sync='reset'; +# +# MDEV-30364 Assertion MDL_EXCLUSIVE on DISCARD TABLESPACE in LOCK TABLE mode +# +create table t (c int) engine=innodb; +set debug_sync='get_schema_column SIGNAL waiting WAIT_FOR go'; +select column_name from information_schema.columns +where table_schema='test' and table_name='t'; +connect con1,localhost,root; +set debug_sync= 'now WAIT_FOR waiting'; +lock table t write; +set statement lock_wait_timeout=0 for alter table t discard tablespace; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +unlock tables; +set debug_sync='now SIGNAL go'; +disconnect con1; +connection default; +column_name +c +drop table t; +set debug_sync= 'reset'; diff --git a/mysql-test/main/mdl_sync.test b/mysql-test/main/mdl_sync.test index 36fbca5f73d..c294d454338 100644 --- a/mysql-test/main/mdl_sync.test +++ b/mysql-test/main/mdl_sync.test @@ -4062,6 +4062,29 @@ connection default; DROP VIEW v1; SET debug_sync='reset'; + +--echo # +--echo # MDEV-30364 Assertion MDL_EXCLUSIVE on DISCARD TABLESPACE in LOCK TABLE mode +--echo # +create table t (c int) engine=innodb; +set debug_sync='get_schema_column SIGNAL waiting WAIT_FOR go'; +send select column_name from information_schema.columns +where table_schema='test' and table_name='t'; + +--connect con1,localhost,root +set debug_sync= 'now WAIT_FOR waiting'; +lock table t write; +--error ER_LOCK_WAIT_TIMEOUT +set statement lock_wait_timeout=0 for alter table t discard tablespace; +unlock tables; +set debug_sync='now SIGNAL go'; +--disconnect con1 + +--connection default +reap; +drop table t; +set debug_sync= 'reset'; + # Check that all connections opened by test cases in this file are really # gone so execution of other tests won't be affected by their presence. --source include/wait_until_count_sessions.inc From 9b8268198ce38b5f06e39fc59dec8c7397b3bad7 Mon Sep 17 00:00:00 2001 From: Tony Chen Date: Fri, 22 Aug 2025 15:46:48 +0000 Subject: [PATCH 41/43] Fix server_audit rwlock PS instrumentation Commit 1d80e8e updated lock_operations to a rwlock from a mutex but didn't update the PS instrumentation setup accordingly. We update the PS setup accordingly so the lock is correctly instrumented in performance_schema.rwlock_instances. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc. --- plugin/server_audit/server_audit.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin/server_audit/server_audit.c b/plugin/server_audit/server_audit.c index 9ad09dedcb8..e17f001ee47 100644 --- a/plugin/server_audit/server_audit.c +++ b/plugin/server_audit/server_audit.c @@ -562,8 +562,8 @@ static struct st_mysql_show_var audit_status[]= }; #ifdef HAVE_PSI_INTERFACE -static PSI_mutex_key key_LOCK_operations; -static PSI_mutex_info mutex_key_list[]= +static PSI_rwlock_key key_LOCK_operations; +static PSI_rwlock_info rwlock_key_list[]= { { &key_LOCK_operations, "SERVER_AUDIT_plugin::lock_operations", PSI_FLAG_GLOBAL} @@ -2662,7 +2662,7 @@ static int server_audit_init(void *p __attribute__((unused))) logger_init_mutexes(); #ifdef HAVE_PSI_INTERFACE if (PSI_server) - PSI_server->register_mutex("server_audit", mutex_key_list, 1); + PSI_server->register_rwlock("server_audit", rwlock_key_list, 1); #endif mysql_prlock_init(key_LOCK_operations, &lock_operations); flogger_mutex_init(key_LOCK_operations, &lock_atomic, MY_MUTEX_INIT_FAST); From b87b28d8de84e93f0c44d57ee054aa0e6f33b988 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Mon, 15 Sep 2025 10:49:57 +1000 Subject: [PATCH 42/43] MDEV-37633 [follow up] Add assertion msg is not empty to push_warning --- sql/sql_error.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/sql/sql_error.cc b/sql/sql_error.cc index a9edbac9fd6..bb05ab298be 100644 --- a/sql/sql_error.cc +++ b/sql/sql_error.cc @@ -750,6 +750,7 @@ void push_warning(THD *thd, Sql_condition::enum_warning_level level, if (level == Sql_condition::WARN_LEVEL_ERROR) level= Sql_condition::WARN_LEVEL_WARN; + DBUG_ASSERT(strlen(msg)); DBUG_ASSERT(msg[strlen(msg)-1] != '\n'); (void) thd->raise_condition(code, "\0\0\0\0\0", level, msg); From fe59b4ce96cd1318f3e73edc2452ef30b76696e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 15 Sep 2025 08:44:26 +0300 Subject: [PATCH 43/43] MDEV-37412: Better test case Instead of using DBUG_EXECUTE_IF fault injection, let us construct a minimal corrupted log file that will produce an OPT_PAGE_CHECKSUM mismatch without depending on CMAKE_BUILD_TYPE=Debug. --- ...leaf_page_corrupted_during_recovery.result | 9 --- .../innodb/r/log_corruption_recovery.result | 30 +++++++++ .../leaf_page_corrupted_during_recovery.test | 15 ----- .../innodb/t/log_corruption_recovery.test | 67 +++++++++++++++++++ storage/innobase/log/log0recv.cc | 4 -- 5 files changed, 97 insertions(+), 28 deletions(-) create mode 100644 mysql-test/suite/innodb/r/log_corruption_recovery.result create mode 100644 mysql-test/suite/innodb/t/log_corruption_recovery.test diff --git a/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result b/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result index f6b12a162ae..ca010d663fa 100644 --- a/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result +++ b/mysql-test/suite/innodb/r/leaf_page_corrupted_during_recovery.result @@ -4,15 +4,6 @@ INSERT INTO t1 VALUES(1, 'sql'), (2, 'server'), (3, 'mariadb'), (4, 'mariadb'), (5, 'test1'), (6, 'test2'), (7, 'test3'), (8, 'test4'), (9, 'test5'), (10, 'test6'), (11, 'test7'), (12, 'test8'); -call mtr.add_suppression("InnoDB: Cannot apply log to \\[page id: space=[1-9], page number=0\\] of corrupted file '.*mdev_37412\\.ibd'"); -SET GLOBAL innodb_log_checkpoint_now=ON; -CREATE TABLE mdev_37412(id INT AUTO_INCREMENT, PRIMARY KEY(id)) -STATS_PERSISTENT=0 ENGINE=InnoDB; -# Kill the server -# restart: --debug_dbug=+d,recv_corrupt -SELECT * FROM mdev_37412; -id -DROP TABLE mdev_37412; SELECT COUNT(*) FROM t1; COUNT(*) 12 diff --git a/mysql-test/suite/innodb/r/log_corruption_recovery.result b/mysql-test/suite/innodb/r/log_corruption_recovery.result new file mode 100644 index 00000000000..8d44df0b2ea --- /dev/null +++ b/mysql-test/suite/innodb/r/log_corruption_recovery.result @@ -0,0 +1,30 @@ +# +# MDEV-37412 Corrupted page during recovery aborts the server +# +call mtr.add_suppression("InnoDB: OPT_PAGE_CHECKSUM mismatch on \\[page id: space=127, page number=0\\]"); +call mtr.add_suppression("InnoDB: Set innodb_force_recovery=1"); +call mtr.add_suppression("InnoDB: Cannot apply log to \\[page id: space=127, page number=0\\] of corrupted file '.*test/t\\.ibd"); +call mtr.add_suppression("(InnoDB: Plugin|Plugin 'InnoDB')"); +call mtr.add_suppression("InnoDB: Page .* Current system log sequence number 123(38|54)\\."); +SET GLOBAL innodb_fast_shutdown=0; +# restart +SELECT * FROM INFORMATION_SCHEMA.ENGINES +WHERE engine = 'innodb' +AND support IN ('YES', 'DEFAULT', 'ENABLED'); +ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS +NOT FOUND /InnoDB: Page .* Current system log sequence number/ in mysqld.1.err +# restart: --innodb-force-recovery=1 +SELECT * FROM INFORMATION_SCHEMA.ENGINES +WHERE engine = 'innodb' +AND support IN ('YES', 'DEFAULT', 'ENABLED'); +ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS +InnoDB YES Supports transactions, row-level locking, foreign keys and encryption for tables YES YES YES +FOUND 1 /InnoDB: Page .* Current system log sequence number/ in mysqld.1.err +FOUND 2 /InnoDB: OPT_PAGE_CHECKSUM mismatch on \[page id: space=127, page number=0\]/ in mysqld.1.err +FOUND 1 /InnoDB: Cannot apply log to \[page id: space=127, page number=0\] of corrupted file .*test/t\.ibd/ in mysqld.1.err +# restart +SELECT * FROM INFORMATION_SCHEMA.ENGINES +WHERE engine = 'innodb' +AND support IN ('YES', 'DEFAULT', 'ENABLED'); +ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS +InnoDB YES Supports transactions, row-level locking, foreign keys and encryption for tables YES YES YES diff --git a/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test b/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test index a4f79b1de3a..026be74373f 100644 --- a/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test +++ b/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test @@ -21,23 +21,8 @@ INSERT INTO t1 VALUES(1, 'sql'), (2, 'server'), (3, 'mariadb'), (8, 'test4'), (9, 'test5'), (10, 'test6'), (11, 'test7'), (12, 'test8'); -call mtr.add_suppression("InnoDB: Cannot apply log to \\[page id: space=[1-9], page number=0\\] of corrupted file '.*mdev_37412\\.ibd'"); -SET GLOBAL innodb_log_checkpoint_now=ON; ---source ../include/no_checkpoint_start.inc -CREATE TABLE mdev_37412(id INT AUTO_INCREMENT, PRIMARY KEY(id)) - STATS_PERSISTENT=0 ENGINE=InnoDB; ---let CLEANUP_IF_CHECKPOINT=DROP TABLE t1,mdev_37412; ---source ../include/no_checkpoint_end.inc - ---let $restart_parameters=--debug_dbug=+d,recv_corrupt ---source include/start_mysqld.inc -let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err; -let SEARCH_PATTERN= InnoDB: Cannot apply log to \\[page id: space=[1-9], page number=0\\] of corrupted file '.*mdev_37412\\.ibd'; ---let $restart_parameters= let $restart_noprint=2; --source include/restart_mysqld.inc -SELECT * FROM mdev_37412; -DROP TABLE mdev_37412; let INNODB_PAGE_SIZE=`select @@innodb_page_size`; let MYSQLD_DATADIR=`select @@datadir`; diff --git a/mysql-test/suite/innodb/t/log_corruption_recovery.test b/mysql-test/suite/innodb/t/log_corruption_recovery.test new file mode 100644 index 00000000000..06069679e91 --- /dev/null +++ b/mysql-test/suite/innodb/t/log_corruption_recovery.test @@ -0,0 +1,67 @@ +--source include/have_innodb.inc + +--let DATADIR=`select @@datadir` +let $check_no_innodb=SELECT * FROM INFORMATION_SCHEMA.ENGINES +WHERE engine = 'innodb' +AND support IN ('YES', 'DEFAULT', 'ENABLED'); +--let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err + +--echo # +--echo # MDEV-37412 Corrupted page during recovery aborts the server +--echo # + +call mtr.add_suppression("InnoDB: OPT_PAGE_CHECKSUM mismatch on \\[page id: space=127, page number=0\\]"); +call mtr.add_suppression("InnoDB: Set innodb_force_recovery=1"); +call mtr.add_suppression("InnoDB: Cannot apply log to \\[page id: space=127, page number=0\\] of corrupted file '.*test/t\\.ibd"); +call mtr.add_suppression("(InnoDB: Plugin|Plugin 'InnoDB')"); +call mtr.add_suppression("InnoDB: Page .* Current system log sequence number 123(38|54)\\."); + +SET GLOBAL innodb_fast_shutdown=0; +--source include/shutdown_mysqld.inc +--move_file $DATADIR/ib_logfile0 $DATADIR/ib_logfile0.old +perl; +do "$ENV{MTR_SUITE_DIR}/../innodb/include/crc32.pl"; +die unless open OUT, ">", "$ENV{DATADIR}/ib_logfile0"; +binmode OUT; +sub crc32c { + my ($input) = @_; + print OUT $input, pack("N", mycrc32($input, 0, 0x82f63b78)) +} +sub mtr { + my ($input) = @_; + print OUT $input, chr(1), pack("N", mycrc32($input, 0, 0x82f63b78)) +} +crc32c("Phys" . pack("x[8]N", 0x3000) . "BogoDB 1.2.3.4" . chr(0) x 478); +print OUT chr(0) x 3584; +crc32c(pack("x[4]Nx[4]Nx[44]", 0x3000, 0x3000)); +print OUT chr(0) x 8128; +mtr(pack("Cx[6]N", 0xfa, 0x3000)); # FILE_CHECKPOINT +mtr(pack("CCx", 0x8c, 127) . "test/t.ibd"); # FILE_CREATE +# INIT_PAGE, OPT_PAGE_CHECKSUM +mtr(pack("CCxCCx[6]", 0x12, 127, 0x77, 127)); +EOF + +write_file $DATADIR/test/t.ibd; +EOF + +--source include/start_mysqld.inc +eval $check_no_innodb; +let SEARCH_PATTERN=InnoDB: Page .* Current system log sequence number; +--source include/search_pattern_in_file.inc +--let $restart_parameters=--innodb-force-recovery=1 +--source include/restart_mysqld.inc +eval $check_no_innodb; +--source include/shutdown_mysqld.inc + +--move_file $DATADIR/ib_logfile0.old $DATADIR/ib_logfile0 +--remove_file $DATADIR/test/t.ibd +--let $restart_parameters= + +--source include/search_pattern_in_file.inc +let SEARCH_PATTERN=InnoDB: OPT_PAGE_CHECKSUM mismatch on \\[page id: space=127, page number=0\\]; +--source include/search_pattern_in_file.inc +let SEARCH_PATTERN=InnoDB: Cannot apply log to \\[page id: space=127, page number=0\\] of corrupted file .*test/t\\.ibd; +--source include/search_pattern_in_file.inc + +--source include/start_mysqld.inc +eval $check_no_innodb; diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc index dd242824402..6d0c1aea016 100644 --- a/storage/innobase/log/log0recv.cc +++ b/storage/innobase/log/log0recv.cc @@ -3448,10 +3448,6 @@ static buf_block_t *recv_recover_page(buf_block_t *block, mtr_t &mtr, block->page.id().page_no())); log_phys_t::apply_status a= l->apply(*block, recs.last_offset); - DBUG_EXECUTE_IF("recv_corrupt", - if (init && init->created && - (!space || space->id != 0)) - a= log_phys_t::APPLIED_CORRUPTED;); switch (a) { case log_phys_t::APPLIED_NO: