diff options
author | unknown <knielsen@knielsen-hq.org> | 2011-05-03 14:44:25 +0200 |
---|---|---|
committer | unknown <knielsen@knielsen-hq.org> | 2011-05-03 14:44:25 +0200 |
commit | 284f52476c33dca8bfb3a3408e751eebd1a10ccb (patch) | |
tree | 33d55f1c5a5d0525f51ef0549fa5c6c5f58e5dbd /client/mysqlbinlog.cc | |
parent | 8ac88c88f0038350064429fda626233260eb6721 (diff) | |
parent | 014b8e7f435e495151fe0ef2cfd5e93d1a398ce5 (diff) | |
download | mariadb-git-284f52476c33dca8bfb3a3408e751eebd1a10ccb.tar.gz |
Merge MWL#180, binlog checksum backport, into MariaDB 5.3-based tree.
Diffstat (limited to 'client/mysqlbinlog.cc')
-rw-r--r-- | client/mysqlbinlog.cc | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 6e0b5cf5234..4dfda6a2ef5 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -84,6 +84,7 @@ static const char* database= 0; static my_bool force_opt= 0, short_form= 0, remote_opt= 0; static my_bool debug_info_flag, debug_check_flag; static my_bool force_if_open_opt= 1; +static my_bool opt_verify_binlog_checksum= 1; static ulonglong offset = 0; static const char* host = 0; static int port= 0; @@ -164,7 +165,8 @@ Log_event* read_remote_annotate_event(uchar* net_buf, ulong event_len, event_buf[event_len]= 0; if (!(event= Log_event::read_log_event((const char*) event_buf, event_len, - error_msg, glob_description_event))) + error_msg, glob_description_event, + opt_verify_binlog_checksum))) { my_free(event_buf, MYF(0)); return 0; @@ -1311,6 +1313,9 @@ that may lead to an endless loop.", "Used to reserve file descriptors for use by this program.", &open_files_limit, &open_files_limit, 0, GET_ULONG, REQUIRED_ARG, MY_NFILE, 8, OS_FILE_LIMIT, 0, 1, 0}, + {"verify-binlog-checksum", 'c', "Verify checksum binlog events.", + (uchar**) &opt_verify_binlog_checksum, (uchar**) &opt_verify_binlog_checksum, + 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"rewrite-db", OPT_REWRITE_DB, "Updates to a database with a different name than the original. \ Example: rewrite-db='from->to'.", @@ -1709,7 +1714,18 @@ static Exit_status check_master_version() "Master reported NULL for the version."); goto err; } - + /* + Make a notice to the server that this client + is checksum-aware. It does not need the first fake Rotate + necessary checksummed. + That preference is specified below. + */ + if (mysql_query(mysql, "SET @master_binlog_checksum='NONE'")) + { + error("Could not notify master about checksum awareness." + "Master returned '%s'", mysql_error(mysql)); + goto err; + } delete glob_description_event; switch (*version) { case '3': @@ -1838,7 +1854,8 @@ static Exit_status dump_remote_log_entries(PRINT_EVENT_INFO *print_event_info, { if (!(ev= Log_event::read_log_event((const char*) net->read_pos + 1 , len - 1, &error_msg, - glob_description_event))) + glob_description_event, + opt_verify_binlog_checksum))) { error("Could not construct log event object: %s", error_msg); DBUG_RETURN(ERROR_STOP); @@ -2066,7 +2083,8 @@ static Exit_status check_header(IO_CACHE* file, Format_description_log_event *new_description_event; my_b_seek(file, tmp_pos); /* seek back to event's start */ if (!(new_description_event= (Format_description_log_event*) - Log_event::read_log_event(file, glob_description_event))) + Log_event::read_log_event(file, glob_description_event, + opt_verify_binlog_checksum))) /* EOF can't be hit here normally, so it's a real error */ { error("Could not read a Format_description_log_event event at " @@ -2099,7 +2117,8 @@ static Exit_status check_header(IO_CACHE* file, { Log_event *ev; my_b_seek(file, tmp_pos); /* seek back to event's start */ - if (!(ev= Log_event::read_log_event(file, glob_description_event))) + if (!(ev= Log_event::read_log_event(file, glob_description_event, + opt_verify_binlog_checksum))) { /* EOF can't be hit here normally, so it's a real error */ error("Could not read a Rotate_log_event event at offset %llu;" @@ -2212,7 +2231,8 @@ static Exit_status dump_local_log_entries(PRINT_EVENT_INFO *print_event_info, char llbuff[21]; my_off_t old_off = my_b_tell(file); - Log_event* ev = Log_event::read_log_event(file, glob_description_event); + Log_event* ev = Log_event::read_log_event(file, glob_description_event, + opt_verify_binlog_checksum); if (!ev) { /* @@ -2391,4 +2411,4 @@ void *sql_alloc(size_t size) #include "sql_string.cc" #include "sql_list.cc" #include "rpl_filter.cc" - +#include "rpl_utility.cc" |