diff options
-rw-r--r-- | mysql-test/suite/binlog/r/binlog_consistent.result | 8 | ||||
-rw-r--r-- | sql/log.cc | 24 |
2 files changed, 22 insertions, 10 deletions
diff --git a/mysql-test/suite/binlog/r/binlog_consistent.result b/mysql-test/suite/binlog/r/binlog_consistent.result index 4561bd70995..428b828d699 100644 --- a/mysql-test/suite/binlog/r/binlog_consistent.result +++ b/mysql-test/suite/binlog/r/binlog_consistent.result @@ -6,7 +6,7 @@ File Position Binlog_Do_DB Binlog_Ignore_DB master-bin.000001 375 SHOW STATUS LIKE 'binlog_snapshot_%'; Variable_name Value -binlog_snapshot_file ./master-bin.000001 +binlog_snapshot_file master-bin.000001 binlog_snapshot_position 375 BEGIN; INSERT INTO t1 VALUES (0, ""); @@ -37,7 +37,7 @@ a b 0 SHOW STATUS LIKE 'binlog_snapshot_%'; Variable_name Value -binlog_snapshot_file ./master-bin.000001 +binlog_snapshot_file master-bin.000001 binlog_snapshot_position 674 SHOW MASTER STATUS; File Position Binlog_Do_DB Binlog_Ignore_DB @@ -59,7 +59,7 @@ a b 0 SHOW STATUS LIKE 'binlog_snapshot_%'; Variable_name Value -binlog_snapshot_file ./master-bin.000001 +binlog_snapshot_file master-bin.000001 binlog_snapshot_position 674 SHOW MASTER STATUS; File Position Binlog_Do_DB Binlog_Ignore_DB @@ -67,7 +67,7 @@ master-bin.000002 240 COMMIT; SHOW STATUS LIKE 'binlog_snapshot_%'; Variable_name Value -binlog_snapshot_file ./master-bin.000002 +binlog_snapshot_file master-bin.000002 binlog_snapshot_position 240 SHOW MASTER STATUS; File Position Binlog_Do_DB Binlog_Ignore_DB diff --git a/sql/log.cc b/sql/log.cc index 8a9ed1906c7..802b1e46c39 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -6719,6 +6719,18 @@ static struct st_mysql_sys_var *binlog_sys_vars[]= /* + Copy out the non-directory part of binlog position filename for the + `binlog_snapshot_file' status variable, same way as it is done for + SHOW MASTER STATUS. +*/ +static void +set_binlog_snapshot_file(const char *src) +{ + int dir_len = dirname_length(src); + strmake(binlog_snapshot_file, src + dir_len, sizeof(binlog_snapshot_file)-1); +} + +/* Copy out current values of status variables, for SHOW STATUS or information_schema.global_status. @@ -6734,21 +6746,21 @@ TC_LOG_BINLOG::set_status_variables(THD *thd) else trx_data= NULL; + bool have_snapshot= + (trx_data && 0 != strcmp(trx_data->last_commit_pos_file, "")); pthread_mutex_lock(&LOCK_commit_ordered); binlog_status_var_num_commits= this->num_commits; binlog_status_var_num_group_commits= this->num_group_commits; - if (!trx_data || 0 == strcmp(trx_data->last_commit_pos_file, "")) + if (!have_snapshot) { - strmake(binlog_snapshot_file, last_commit_pos_file, - sizeof(binlog_snapshot_file)-1); + set_binlog_snapshot_file(last_commit_pos_file); binlog_snapshot_position= last_commit_pos_offset; } pthread_mutex_unlock(&LOCK_commit_ordered); - if (trx_data && 0 != strcmp(trx_data->last_commit_pos_file, "")) + if (have_snapshot) { - strmake(binlog_snapshot_file, trx_data->last_commit_pos_file, - sizeof(binlog_snapshot_file)-1); + set_binlog_snapshot_file(trx_data->last_commit_pos_file); binlog_snapshot_position= trx_data->last_commit_pos_offset; } } |