diff options
Diffstat (limited to 'sql/sql_repl.cc')
-rw-r--r-- | sql/sql_repl.cc | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 02440f511e1..6a14a7c5d16 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -925,18 +925,17 @@ int cmp_master_pos(const char* log_file_name1, ulonglong log_pos1, const char* log_file_name2, ulonglong log_pos2) { int res; - /* - TODO: Change compare function to work with file name of type - '.999 and .1000' - */ + uint log_file_name1_len= strlen(log_file_name1); + uint log_file_name2_len= strlen(log_file_name2); - if ((res = strcmp(log_file_name1, log_file_name2))) - return res; - if (log_pos1 > log_pos2) - return 1; - else if (log_pos1 == log_pos2) - return 0; - return -1; + // We assume that both log names match up to '.' + if (log_file_name1_len == log_file_name2_len) + { + if ((res= strcmp(log_file_name1, log_file_name2))) + return res; + return (log_pos1 < log_pos2) ? -1 : (log_pos1 == log_pos2) ? 0 : 1; + } + return ((log_file_name1_len < log_file_name2_len) ? -1 : 1); } |