summaryrefslogtreecommitdiff
path: root/sql/sql_repl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_repl.cc')
-rw-r--r--sql/sql_repl.cc21
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);
}