mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Bug #28597 Replication doesn't start after upgrading to 5.1.18
Since bug@20166, which replaced the binlog file name generating to base on pidfile_name instead of the previous glob_hostname, the binlog file name suddenly started to be stored solely in the absolute path format, including a case when --log-bin option meant a relative path. What's more serious, the path for binlog file can lead unrequestedly to pid-file directory so that after any proper fix for this bug there might be similar to the bug report consequences for one who upgrades from post-fix-bug@20166-pre-fix-bug@28597 to post-fix-bug@28597. Fixed with preserving`pidfile_name' (intr.by bug@20166) but stripping off its directory part. This restores the original logics of storing the names in compatible with --log-bin option format and with the requirement for --log-bin ralative path to corresond to the data directory. Side effects for this fix: effective fixing bug@27070, refining its test; ensuring no overrun for buff can happen anymore (Bug#31836 insufficient space reserved for the suffix of relay log file name); bug#31837 --remove_file $MYSQLTEST_VARDIR/tmp/bug14157.sql missed in rpl_temporary.test; fixes Bug@28603 Invalid log-bin default location;
This commit is contained in:
@@ -106,9 +106,3 @@ connection slave;
|
||||
sync_with_master;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
# Cleanup
|
||||
# The A->B->A replication causes the master to start writing relay logs
|
||||
# in var/run, remove them
|
||||
remove_file $MYSQLTEST_VARDIR/run/master-relay-bin.000001;
|
||||
remove_file $MYSQLTEST_VARDIR/run/master-relay-bin.index;
|
||||
|
||||
@@ -211,6 +211,8 @@ select * from t1;
|
||||
connection master;
|
||||
drop table t1;
|
||||
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/bug14157.sql
|
||||
|
||||
# Delete the anonymous users
|
||||
source include/delete_anonymous_users.inc;
|
||||
|
||||
|
||||
11
sql/log.cc
11
sql/log.cc
@@ -448,13 +448,10 @@ const char *MYSQL_LOG::generate_name(const char *log_name,
|
||||
{
|
||||
if (!log_name || !log_name[0])
|
||||
{
|
||||
/*
|
||||
TODO: The following should be using fn_format(); We just need to
|
||||
first change fn_format() to cut the file name if it's too long.
|
||||
*/
|
||||
strmake(buff, pidfile_name,FN_REFLEN-5);
|
||||
strmov(fn_ext(buff),suffix);
|
||||
return (const char *)buff;
|
||||
strmake(buff, pidfile_name, FN_REFLEN - strlen(suffix) - 1);
|
||||
return (const char *)
|
||||
fn_format(buff, buff, "", suffix, MYF(MY_REPLACE_EXT|MY_REPLACE_DIR));
|
||||
|
||||
}
|
||||
// get rid of extension if the log is binary to avoid problems
|
||||
if (strip_ext)
|
||||
|
||||
Reference in New Issue
Block a user