diff options
author | unknown <sasha@mysql.sashanet.com> | 2001-08-03 15:57:53 -0600 |
---|---|---|
committer | unknown <sasha@mysql.sashanet.com> | 2001-08-03 15:57:53 -0600 |
commit | f4812c0f780d68d88985a7ab1709adc579968416 (patch) | |
tree | 7a15577166ddda4e7b8c9c9cb80471777aeb717b /sql/sql_repl.cc | |
parent | 658843d2bc4d7d8b5eb8fc65a632a5b58f8cd817 (diff) | |
download | mariadb-git-f4812c0f780d68d88985a7ab1709adc579968416.tar.gz |
LOAD DATA INFILE is now replicated properly, except for cleanup on
Stop event and bugs the test suite could not catch
Did some big restructuring of binlog event classes - most important
change is that now each event class has exec_event method and one does
not need to modify slave core code to add a new event. Slave code is
now much smaller and easier to read
include/my_sys.h:
pre_code and arg in IO_CACHE
mysql-test/r/rpl_log.result:
updated result for LOAD DATA INFILE fix
mysys/mf_iocache.c:
pre_close routine and arg pointer for callback magic
sql/log.cc:
changed MYSQL_LOG so that write() method is for generic
Log_event - removed redundant code
sql/log_event.cc:
added classes for file events
added exec_event() method to all classes
restructured/cleaned up event classes
sql/log_event.h:
added classes for file events
added exec_event() method to all classes
restructured/cleaned up event classes
sql/mf_iocache.cc:
pre_close/arg
sql/mysqld.cc:
added slave-load-tmpdir and old-rpl-compat options
sql/slave.cc:
changed exec_event() to use Log_event::exec_event()
some routines are now needed in log_event.cc and cannot be static/inline
general cleanup
sql/slave.h:
some routines are now extern because they are called from log_event.cc
sql/sql_class.cc:
added slave_net
sql/sql_class.h:
added slave_net to THD
MYSQL_LOG::write now handles generic Log_event
sql/sql_load.cc:
changes for new handling of LOAD DATA INFILE replication
sql/sql_repl.cc:
added log_loaded_block() callback for IO_CACHE
sql/sql_repl.h:
added structure to pass args to IO_CACHE callback from mysql_load
Diffstat (limited to 'sql/sql_repl.cc')
-rw-r--r-- | sql/sql_repl.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 9c1fbbe4ac9..cda1a8531df 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -1578,3 +1578,33 @@ err: return error; } + +int log_loaded_block(IO_CACHE* file) +{ + LOAD_FILE_INFO* lf_info; + uint block_len ; + if (!(block_len = file->rc_end - file->buffer)) + return 0; + lf_info = (LOAD_FILE_INFO*)file->arg; + if (lf_info->last_pos_in_file != HA_POS_ERROR && + lf_info->last_pos_in_file >= file->pos_in_file) + return 0; + lf_info->last_pos_in_file = file->pos_in_file; + if (lf_info->wrote_create_file) + { + Append_block_log_event a(lf_info->thd, file->buffer,block_len); + mysql_bin_log.write(&a); + } + else + { + Create_file_log_event c(lf_info->thd,lf_info->ex,lf_info->db, + lf_info->table_name, *lf_info->fields, + lf_info->handle_dup, file->buffer, + block_len); + mysql_bin_log.write(&c); + lf_info->wrote_create_file = 1; + } + return 0; +} + + |