diff options
author | sasha@mysql.sashanet.com <> | 2001-04-24 17:39:26 -0600 |
---|---|---|
committer | sasha@mysql.sashanet.com <> | 2001-04-24 17:39:26 -0600 |
commit | be8f18e02085ec1f1fe610a187fa28fe946d267c (patch) | |
tree | 6a52fed2fc785303fcfb8cd3ae1d28e1c0bf6ecf /sql/log.cc | |
parent | 1e3df575b93b40145ff854e30af3f443d74537b6 (diff) | |
download | mariadb-git-be8f18e02085ec1f1fe610a187fa28fe946d267c.tar.gz |
fixed redundant repetition of use db in mysqlbinlog
added support for virtual master ( replicating from a directory with binlogs)
test case for backup/restore with virtual master
Diffstat (limited to 'sql/log.cc')
-rw-r--r-- | sql/log.cc | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/sql/log.cc b/sql/log.cc index 9601d162d28..3e8be76aacb 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -103,7 +103,7 @@ MYSQL_LOG::~MYSQL_LOG() void MYSQL_LOG::set_index_file_name(const char* index_file_name) { if (index_file_name) - fn_format(this->index_file_name,index_file_name,mysql_data_home,"-index", + fn_format(this->index_file_name,index_file_name,mysql_data_home,".index", 4); else this->index_file_name[0] = 0; @@ -129,6 +129,32 @@ int MYSQL_LOG::generate_new_name(char *new_name, const char *log_name) return 0; } +bool MYSQL_LOG::open_index( int options) +{ + return (index_file < 0 && + (index_file = my_open(index_file_name, options | O_BINARY , + MYF(MY_WME))) < 0); +} + +void MYSQL_LOG::init(enum_log_type log_type_arg) +{ + log_type = log_type_arg; + if (!inited) + { + inited=1; + (void) pthread_mutex_init(&LOCK_log,MY_MUTEX_INIT_SLOW); + (void) pthread_mutex_init(&LOCK_index, MY_MUTEX_INIT_SLOW); + } +} + +void MYSQL_LOG::close_index() +{ + if(index_file >= 0) + { + my_close(index_file, MYF(0)); + index_file = -1; + } +} void MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg, const char *new_name) @@ -137,17 +163,11 @@ void MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg, char buff[512]; File file= -1; bool do_magic; - - if (!inited) - { - inited=1; - (void) pthread_mutex_init(&LOCK_log,MY_MUTEX_INIT_SLOW); - (void) pthread_mutex_init(&LOCK_index, MY_MUTEX_INIT_SLOW); - if (log_type_arg == LOG_BIN && *fn_ext(log_name)) + + if (!inited && log_type_arg == LOG_BIN && *fn_ext(log_name)) no_rotate = 1; - } + init(log_type_arg); - log_type=log_type_arg; if (!(name=my_strdup(log_name,MYF(MY_WME)))) goto err; if (new_name) @@ -208,10 +228,7 @@ void MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg, clean up if failed */ if ((do_magic && my_b_write(&log_file, (byte*) BINLOG_MAGIC, 4)) || - (index_file < 0 && - (index_file = my_open(index_file_name, - O_APPEND | O_BINARY | O_RDWR | O_CREAT, - MYF(MY_WME))) < 0)) + open_index(O_APPEND | O_RDWR | O_CREAT)) goto err; Start_log_event s; bool error; @@ -224,8 +241,7 @@ void MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg, pthread_mutex_unlock(&LOCK_index); if (error) { - my_close(index_file,MYF(0)); - index_file= -1; + close_index(); goto err; } } |