From 56c8bdfd77f2b35f6bfe00abe824e450f54c581f Mon Sep 17 00:00:00 2001 From: Monty Date: Sat, 27 Dec 2025 14:13:49 +0200 Subject: [PATCH] MDEV-38435 Add Gtid_binlog_pos to SHOW MASTER STATUS Other things: - Extended mysqltest to write GTID's for master and slave if sync_slave_with_master fails. Reviewer: Brandon Nesterenko --- client/mysqltest.cc | 29 ++++++++++++++----- mysql-test/include/show_master_status.inc | 2 +- mysql-test/main/create_drop_binlog.result | 12 ++++---- mysql-test/main/mysqld--help.test | 2 +- .../r/binlog_commit_by_rotate_atomic.result | 6 ++-- .../suite/binlog/r/binlog_rotate_perf.result | 24 +++++++-------- .../suite/innodb/r/binlog_consistent.result | 16 +++++----- .../suite/innodb/t/binlog_consistent.test | 4 +++ mysql-test/suite/rpl/r/rpl_ip_mix.result | 16 +++++----- mysql-test/suite/rpl/r/rpl_ip_mix2.result | 16 +++++----- .../suite/rpl/r/rpl_ipv4_as_ipv6.result | 28 +++++++++--------- mysql-test/suite/rpl/r/rpl_ipv6.result | 16 +++++----- mysql-test/suite/rpl/r/rpl_log_pos.result | 8 ++--- mysql-test/suite/rpl/r/rpl_rotate_logs.result | 4 +-- .../suite/rpl/r/rpl_row_max_relay_size.result | 4 +-- .../suite/rpl/r/rpl_stm_max_relay_size.result | 4 +-- sql/sql_repl.cc | 7 +++++ tests/mysql_client_test.c | 2 +- 18 files changed, 112 insertions(+), 88 deletions(-) diff --git a/client/mysqltest.cc b/client/mysqltest.cc index b48caa0c2d6..4dc0757062f 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -309,6 +309,7 @@ struct Parser struct MasterPos { char file[FN_REFLEN]; + char gtid[256]; ulong pos; } master_pos; @@ -4914,7 +4915,7 @@ void do_sync_with_master2(struct st_command *command, long offset, MYSQL_RES *res; MYSQL_ROW row; MYSQL *mysql= cur_con->mysql; - char query_buf[FN_REFLEN+128], query_buf2[120]; + char query_buf[FN_REFLEN+128], query_buf2[256]; int timeout= opt_wait_for_pos_timeout; if (!master_pos.file[0]) @@ -4948,23 +4949,34 @@ void do_sync_with_master2(struct st_command *command, long offset, /* master_pos_wait returned NULL or < 0 */ fprintf(stderr, "analyze: sync_with_master\n"); - sprintf(query_buf2, "show slave \"%s\" status", connection_name); + snprintf(query_buf2, sizeof(query_buf2)-1, + "select Relay_Master_Log_File, Read_Master_Log_Pos, Gtid_IO_Pos, " + "Gtid_Slave_Pos from information_schema.slave_status where " + "Connection_name='%.64s'", connection_name); + /* purify begin tested */ if (!mysql_query(mysql, query_buf2)) { if ((res= mysql_store_result(mysql))) { if ((row= mysql_fetch_row(res))) { - fprintf(stderr, "Slave position: file: %s position: %s\n", + fprintf(stderr, "Slave position: file: %s position: %s " + "Gtid_Slave_Pos: %s Gtid_IO_Pos: %s\n", get_col_value(res, row, "Relay_Master_Log_File"), - get_col_value(res, row, "Read_Master_Log_Pos")); - fprintf(stderr, "Master position: file: %s position: %lld\n", - master_pos.file, (longlong) (master_pos.pos + offset)); + get_col_value(res, row, "Read_Master_Log_Pos"), + get_col_value(res, row, "Gtid_Slave_Pos"), + get_col_value(res, row, "Gtid_IO_Pos")); + fprintf(stderr, "Master position: file: %s position: %lld " + "Gtid_Master_Pos: %s\n", + master_pos.file, (longlong) (master_pos.pos + offset), + master_pos.gtid); } mysql_free_result(res); } } + /* purify end tested */ + if (!result_str) { /* @@ -5042,8 +5054,9 @@ int do_save_master_pos() die("mysql_store_result() returned NULL for '%s'", query); if (!(row = mysql_fetch_row(res))) die("empty result in show master status"); - strnmov(master_pos.file, row[0], sizeof(master_pos.file)-1); - master_pos.pos = strtoul(row[1], (char**) 0, 10); + strmake(master_pos.file, row[0], sizeof(master_pos.file)-1); + master_pos.pos= strtoul(row[1], (char**) 0, 10); + strmake(master_pos.gtid, row[4], sizeof(master_pos.gtid)-1); mysql_free_result(res); DBUG_RETURN(0); } diff --git a/mysql-test/include/show_master_status.inc b/mysql-test/include/show_master_status.inc index b7b32a65df4..642b06f64d7 100644 --- a/mysql-test/include/show_master_status.inc +++ b/mysql-test/include/show_master_status.inc @@ -1,5 +1,5 @@ # show master status # mask out the binlog position --- replace_column 2 # 3 4 +--replace_column 2 # 3 4 5 show master status; diff --git a/mysql-test/main/create_drop_binlog.result b/mysql-test/main/create_drop_binlog.result index dc8f217fd6f..eaf8b8da341 100644 --- a/mysql-test/main/create_drop_binlog.result +++ b/mysql-test/main/create_drop_binlog.result @@ -338,16 +338,16 @@ Log_name Pos Event_type Server_id End_log_pos Info RESET MASTER; RESET MASTER; SHOW MASTER STATUS; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 RESET MASTER TO 100; SHOW MASTER STATUS; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000100 +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000100 RESET MASTER; SHOW MASTER STATUS; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 CREATE TABLE t1(a INT, b INT); CREATE TABLE IF NOT EXISTS t1(a INT, b INT); Warnings: diff --git a/mysql-test/main/mysqld--help.test b/mysql-test/main/mysqld--help.test index f5ae013294b..be27f8b62dd 100644 --- a/mysql-test/main/mysqld--help.test +++ b/mysql-test/main/mysqld--help.test @@ -40,7 +40,7 @@ perl; wsrep file-key-management cracklib-password-check user-variables provider-bzip2 provider-lzma provider-lzo caching-sha2-password thread-pool-groups thread-pool-queues thread-pool-stats - thread-pool-waits hashicorp provider gssapi parsec/; + thread-pool-waits hashicorp provider gssapi parsec videx/; # And substitute the content some environment variables with their # names: diff --git a/mysql-test/suite/binlog/r/binlog_commit_by_rotate_atomic.result b/mysql-test/suite/binlog/r/binlog_commit_by_rotate_atomic.result index 23d5eff24b6..1c73cb90c8e 100644 --- a/mysql-test/suite/binlog/r/binlog_commit_by_rotate_atomic.result +++ b/mysql-test/suite/binlog/r/binlog_commit_by_rotate_atomic.result @@ -38,11 +38,11 @@ count(*) 0 # Binlog is closed show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos # restart show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000004 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000004 # # # Crash happens before rename the file # diff --git a/mysql-test/suite/binlog/r/binlog_rotate_perf.result b/mysql-test/suite/binlog/r/binlog_rotate_perf.result index 604921ad269..e6a05bb1187 100644 --- a/mysql-test/suite/binlog/r/binlog_rotate_perf.result +++ b/mysql-test/suite/binlog/r/binlog_rotate_perf.result @@ -9,8 +9,8 @@ master-bin.000001 # CREATE TABLE t1_myisam (c1 INT) ENGINE=myisam; insert into t1_myisam values(0),(1); show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # flush logs; flush logs; flush logs; @@ -398,8 +398,8 @@ flush logs; flush logs; flush logs; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000291 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000291 # show binary logs; Log_name File_size master-bin.000001 # @@ -698,22 +698,22 @@ reset master; flush logs; flush logs; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000003 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000003 # reset master; # left times= 2 flush logs; flush logs; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000003 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000003 # reset master; # left times= 1 flush logs; flush logs; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000003 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000003 # reset master; # left times= 0 # [engine=myisam] after first loop_times=0, show master logs results @@ -721,8 +721,8 @@ show binary logs; Log_name File_size master-bin.000001 # show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # flush logs; flush logs; #begin to restart mysqld current loop_times=10 diff --git a/mysql-test/suite/innodb/r/binlog_consistent.result b/mysql-test/suite/innodb/r/binlog_consistent.result index cceca394166..9dfc3ac82d1 100644 --- a/mysql-test/suite/innodb/r/binlog_consistent.result +++ b/mysql-test/suite/innodb/r/binlog_consistent.result @@ -7,8 +7,8 @@ connection default; CREATE TABLE t1 (a INT, b VARCHAR(100), PRIMARY KEY (a,b)) ENGINE=innodb; INSERT INTO t1 VALUES(9, ""); SHOW MASTER STATUS; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 SHOW STATUS LIKE 'binlog_snapshot_%'; Variable_name Value Binlog_snapshot_file master-bin.000001 @@ -46,8 +46,8 @@ Variable_name Value Binlog_snapshot_file master-bin.000001 Binlog_snapshot_position SHOW MASTER STATUS; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 SELECT * FROM t2 ORDER BY a; a 2 @@ -69,16 +69,16 @@ Variable_name Value Binlog_snapshot_file master-bin.000001 Binlog_snapshot_position SHOW MASTER STATUS; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000002 +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000002 COMMIT; SHOW STATUS LIKE 'binlog_snapshot_%'; Variable_name Value Binlog_snapshot_file master-bin.000002 Binlog_snapshot_position SHOW MASTER STATUS; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000002 +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000002 include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Gtid # # GTID #-#-# diff --git a/mysql-test/suite/innodb/t/binlog_consistent.test b/mysql-test/suite/innodb/t/binlog_consistent.test index 3b03d291708..4a011ff9391 100644 --- a/mysql-test/suite/innodb/t/binlog_consistent.test +++ b/mysql-test/suite/innodb/t/binlog_consistent.test @@ -20,6 +20,7 @@ CREATE TABLE t1 (a INT, b VARCHAR(100), PRIMARY KEY (a,b)) ENGINE=innodb; # So concurrent insert won't happen on the table INSERT INTO t1 VALUES(9, ""); let pos=`select $binlog_start_pos + 431`; +--replace_column 5 --replace_result $pos SHOW MASTER STATUS; --replace_result $pos @@ -60,6 +61,7 @@ let pos=`select $binlog_start_pos + 974`; --replace_result $pos SHOW STATUS LIKE 'binlog_snapshot_%'; let pos=`select $binlog_start_pos + 1350`; +--replace_column 5 --replace_result $pos SHOW MASTER STATUS; SELECT * FROM t2 ORDER BY a; @@ -81,11 +83,13 @@ let pos=`select $binlog_start_pos + 974`; --replace_result $pos SHOW STATUS LIKE 'binlog_snapshot_%'; let pos=`select $binlog_start_pos + 131`; +--replace_column 5 --replace_result $pos SHOW MASTER STATUS; COMMIT; --replace_result $pos SHOW STATUS LIKE 'binlog_snapshot_%'; +--replace_column 5 --replace_result $pos SHOW MASTER STATUS; diff --git a/mysql-test/suite/rpl/r/rpl_ip_mix.result b/mysql-test/suite/rpl/r/rpl_ip_mix.result index a7fbda34a95..4788d01c3eb 100644 --- a/mysql-test/suite/rpl/r/rpl_ip_mix.result +++ b/mysql-test/suite/rpl/r/rpl_ip_mix.result @@ -5,8 +5,8 @@ connection master; include/kill_binlog_dump_threads.inc reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; Master-Host: No such row @@ -22,8 +22,8 @@ connection master; include/kill_binlog_dump_threads.inc reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; Master-Host: ::1 @@ -39,8 +39,8 @@ connection master; include/kill_binlog_dump_threads.inc reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001 @@ -55,8 +55,8 @@ connect slave,127.0.0.1,root,,test,$SLAVE_MYPORT; connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; Master-Host: 0:0:0:0:0:0:0:1 diff --git a/mysql-test/suite/rpl/r/rpl_ip_mix2.result b/mysql-test/suite/rpl/r/rpl_ip_mix2.result index d304eff9ab4..9ca1f12d07a 100644 --- a/mysql-test/suite/rpl/r/rpl_ip_mix2.result +++ b/mysql-test/suite/rpl/r/rpl_ip_mix2.result @@ -4,8 +4,8 @@ connect slave,$IPv6,root,,test,$SLAVE_MYPORT; connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; Master-Host: No such row @@ -20,8 +20,8 @@ connect slave,$IPv6,root,,test,$SLAVE_MYPORT; connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; Master-Host: ::1 @@ -36,8 +36,8 @@ connect slave,$IPv6,root,,test,$SLAVE_MYPORT; connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; Master-Host: 0000:0000:0000:0000:0000:0000:0000:0001 @@ -52,8 +52,8 @@ connect slave,$IPv6,root,,test,$SLAVE_MYPORT; connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; Master-Host: 0:0:0:0:0:0:0:1 diff --git a/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result b/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result index cdf50dc2f53..28ebc66768a 100644 --- a/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result +++ b/mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result @@ -5,8 +5,8 @@ include/kill_binlog_dump_threads.inc connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; change master to master_host='127.0.0.1'; @@ -21,8 +21,8 @@ include/kill_binlog_dump_threads.inc connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; change master to master_host='0:0:0:0:0:FFFF:127.0.0.1'; @@ -37,8 +37,8 @@ include/kill_binlog_dump_threads.inc connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; change master to master_host='0000:0000:0000:0000:0000:FFFF:127.0.0.1'; @@ -53,8 +53,8 @@ include/kill_binlog_dump_threads.inc connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; change master to master_host='0:0000:0000:0:0000:FFFF:127.0.0.1'; @@ -69,8 +69,8 @@ include/kill_binlog_dump_threads.inc connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; change master to master_host='0::0000:FFFF:127.0.0.1'; @@ -85,8 +85,8 @@ include/kill_binlog_dump_threads.inc connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; change master to master_host='::FFFF:127.0.0.1'; @@ -100,8 +100,8 @@ connect slave,127.0.0.1,root,,test,$SLAVE_MYPORT; connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; Master-Host: ::FFFF:127.0.0.1 diff --git a/mysql-test/suite/rpl/r/rpl_ipv6.result b/mysql-test/suite/rpl/r/rpl_ipv6.result index 2ffddfa8f21..7904c5cdd93 100644 --- a/mysql-test/suite/rpl/r/rpl_ipv6.result +++ b/mysql-test/suite/rpl/r/rpl_ipv6.result @@ -5,8 +5,8 @@ include/kill_binlog_dump_threads.inc connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; change master to master_host='::1'; @@ -21,8 +21,8 @@ include/kill_binlog_dump_threads.inc connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; change master to master_host='0000:0000:0000:0000:0000:0000:0000:0001'; @@ -37,8 +37,8 @@ include/kill_binlog_dump_threads.inc connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; change master to master_host='0:0:0:0:0:0:0:1'; @@ -52,8 +52,8 @@ connect slave,127.0.0.1,root,,test,$SLAVE_MYPORT; connection master; reset master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # connection slave; reset slave; Master-Host: 0:0:0:0:0:0:0:1 diff --git a/mysql-test/suite/rpl/r/rpl_log_pos.result b/mysql-test/suite/rpl/r/rpl_log_pos.result index 74080b3936f..92db7df1037 100644 --- a/mysql-test/suite/rpl/r/rpl_log_pos.result +++ b/mysql-test/suite/rpl/r/rpl_log_pos.result @@ -5,8 +5,8 @@ drop table t1; call mtr.add_suppression ("Slave I/O: Got fatal error 1236 from master when reading data from binary"); call mtr.add_suppression ("Error in Log_event::read_log_event"); show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # 0-1-4 connection slave; include/stop_slave.inc change master to master_log_pos=MASTER_LOG_POS, master_use_gtid=no; @@ -16,8 +16,8 @@ Last_IO_Error = 'Got fatal error 1236 from master when reading data from binary include/stop_slave_sql.inc connection master; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000001 # 0-1-4 create table if not exists t1 (n int); drop table if exists t1; create table t1 (n int); diff --git a/mysql-test/suite/rpl/r/rpl_rotate_logs.result b/mysql-test/suite/rpl/r/rpl_rotate_logs.result index 4b7c1642a11..9ee90433549 100644 --- a/mysql-test/suite/rpl/r/rpl_rotate_logs.result +++ b/mysql-test/suite/rpl/r/rpl_rotate_logs.result @@ -103,8 +103,8 @@ master-bin.000007 # master-bin.000008 # master-bin.000009 # show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000009 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000009 # 0-1-113 connection slave; select * from t4; a diff --git a/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result b/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result index 41d18d7f9fe..91bf1271db7 100644 --- a/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result +++ b/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result @@ -72,8 +72,8 @@ include/check_slave_is_running.inc connection master; flush logs; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000002 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000002 # 0-1-804 connection slave; set global max_binlog_size= @my_max_binlog_size; set global max_relay_log_size= @my_max_relay_log_size; diff --git a/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result b/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result index 41d18d7f9fe..91bf1271db7 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result +++ b/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result @@ -72,8 +72,8 @@ include/check_slave_is_running.inc connection master; flush logs; show master status; -File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000002 # +File Position Binlog_Do_DB Binlog_Ignore_DB Gtid_Binlog_Pos +master-bin.000002 # 0-1-804 connection slave; set global max_binlog_size= @my_max_binlog_size; set global max_relay_log_size= @my_max_relay_log_size; diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 1d145e5daef..dcd457be415 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -5341,6 +5341,9 @@ void show_binlog_info_get_fields(THD *thd, List *field_list) field_list->push_back(new (mem_root) Item_empty_string(thd, "Binlog_Ignore_DB", 255), mem_root); + field_list->push_back(new (mem_root) + Item_empty_string(thd, "Gtid_Binlog_Pos", 255), + mem_root); } @@ -5388,11 +5391,15 @@ bool show_binlog_info(THD* thd) size_t dir_len = dirname_length(li.log_file_name); base= li.log_file_name + dir_len; } + StringBuffer<128> str(system_charset_info); + (void) mysql_bin_log.append_state_pos(&str); protocol->store(base, strlen(base), &my_charset_bin); protocol->store((ulonglong)pos); protocol->store(binlog_filter->get_do_db()); protocol->store(binlog_filter->get_ignore_db()); + protocol->store(&str); + if (protocol->write()) DBUG_RETURN(TRUE); } diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index bc052c86ff6..9d59e120f3e 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -476,7 +476,7 @@ static void test_prepare_simple() strmov(query, "SHOW MASTER STATUS"); stmt= mysql_simple_prepare(mysql, query); check_stmt(stmt); - DIE_UNLESS(mysql_stmt_field_count(stmt) == 4); + DIE_UNLESS(mysql_stmt_field_count(stmt) == 5); mysql_stmt_close(stmt); /* show create procedure */