diff options
author | unknown <monty@mashka.mysql.fi> | 2003-01-03 00:04:33 +0200 |
---|---|---|
committer | unknown <monty@mashka.mysql.fi> | 2003-01-03 00:04:33 +0200 |
commit | eebc67f6f8df9e0bdcde7770e383992ff6cad451 (patch) | |
tree | 461fafebcf70ffd880e85f8342601eaade292e1b /sql/log.cc | |
parent | 5265a1656ea58d9534ebadfbd45c662080f89bb0 (diff) | |
parent | 62b38d20ddcf4fb0f519e8b647916d7b367e894c (diff) | |
download | mariadb-git-eebc67f6f8df9e0bdcde7770e383992ff6cad451.tar.gz |
Merge with 4.0.8
BitKeeper/etc/logging_ok:
auto-union
VC++Files/sql/mysqld.dsp:
Auto merged
acinclude.m4:
Auto merged
include/my_base.h:
Auto merged
include/myisam.h:
Auto merged
include/myisammrg.h:
Auto merged
libmysql/libmysql.c:
Auto merged
myisam/mi_check.c:
Auto merged
myisam/mi_write.c:
Auto merged
myisam/myisamdef.h:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/case.result:
Auto merged
mysql-test/r/distinct.result:
Auto merged
mysql-test/r/fulltext.result:
Auto merged
mysql-test/r/key_diff.result:
Auto merged
mysql-test/r/multi_update.result:
Auto merged
mysql-test/r/order_by.result:
Auto merged
mysql-test/r/select.result:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/t/multi_update.test:
Auto merged
mysql-test/t/rpl_log_pos.test:
Auto merged
mysys/Makefile.am:
Auto merged
scripts/Makefile.am:
Auto merged
sql/field.cc:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/ha_myisammrg.cc:
Auto merged
sql/ha_myisammrg.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_create.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/lex.h:
Auto merged
sql/log.cc:
Auto merged
sql/net_serv.cc:
Auto merged
sql/repl_failsafe.cc:
Auto merged
sql/set_var.h:
Auto merged
sql/slave.cc:
Auto merged
sql/slave.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_udf.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql-bench/crash-me.sh:
Auto merged
sql-bench/server-cfg.sh:
Auto merged
sql/share/english/errmsg.txt:
Auto merged
sql/structs.h:
Auto merged
Diffstat (limited to 'sql/log.cc')
-rw-r--r-- | sql/log.cc | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/sql/log.cc b/sql/log.cc index e21963022d9..5dcb5857026 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -662,7 +662,12 @@ int MYSQL_LOG::purge_first_log(struct st_relay_log_info* rli) rli->linfo.log_file_name); goto err; } + /* + Reset position to current log. This involves setting both of the + position variables: + */ rli->relay_log_pos = BIN_LOG_HEADER_SIZE; + rli->pending = 0; strmake(rli->relay_log_name,rli->linfo.log_file_name, sizeof(rli->relay_log_name)-1); @@ -1121,8 +1126,20 @@ bool MYSQL_LOG::write(Log_event* event_info) if (file == &log_file) { - error = ha_report_binlog_offset_and_commit(thd, log_file_name, + /* + LOAD DATA INFILE in AUTOCOMMIT=1 mode writes to the binlog + chunks also before it is successfully completed. We only report + the binlog write and do the commit inside the transactional table + handler if the log event type is appropriate. + */ + + if (event_info->get_type_code() == QUERY_EVENT + || event_info->get_type_code() == EXEC_LOAD_EVENT) + { + error = ha_report_binlog_offset_and_commit(thd, log_file_name, file->pos_in_file); + } + should_rotate= (my_b_tell(file) >= (my_off_t) max_binlog_size); } @@ -1165,7 +1182,7 @@ uint MYSQL_LOG::next_file_id() NOTE - We only come here if there is something in the cache. - - The thing in the cache is always a complete transcation + - The thing in the cache is always a complete transaction - 'cache' needs to be reinitialized after this functions returns. IMPLEMENTATION @@ -1233,6 +1250,13 @@ bool MYSQL_LOG::write(THD *thd, IO_CACHE *cache) log_file.pos_in_file))) goto err; signal_update(); + if (my_b_tell(&log_file) >= (my_off_t) max_binlog_size) + { + pthread_mutex_lock(&LOCK_index); + new_file(0); // inside mutex + pthread_mutex_unlock(&LOCK_index); + } + } VOID(pthread_mutex_unlock(&LOCK_log)); DBUG_RETURN(0); |