summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <vva@eagle.mysql.r18.ru>2003-09-29 15:42:33 -0400
committerunknown <vva@eagle.mysql.r18.ru>2003-09-29 15:42:33 -0400
commit0cb0542ac53b97f20f45af73dfddaa7fb57ddc4a (patch)
tree8c42c430a7456255855ae8b57e968901da0c3ade /sql
parent851bb139afbd0c62c9c56ed96a8c2637a9ccc2e6 (diff)
downloadmariadb-git-0cb0542ac53b97f20f45af73dfddaa7fb57ddc4a.tar.gz
fixed processing of COM_BINLOG_DUMP to use in mysqlbinlog
sql/sql_repl.cc: fixed mysql_binlog_send to use COM_BINLOG_DUMP in mysqlbinlog
Diffstat (limited to 'sql')
-rw-r--r--sql/sql_parse.cc3
-rw-r--r--sql/sql_repl.cc8
2 files changed, 9 insertions, 2 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 81233c038a1..3f6fa8d24ad 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -929,7 +929,8 @@ bool do_command(THD *thd)
pos = uint4korr(packet + 1);
flags = uint2korr(packet + 5);
pthread_mutex_lock(&LOCK_server_id);
- kill_zombie_dump_threads(slave_server_id = uint4korr(packet+7));
+ if ((slave_server_id = uint4korr(packet+7)))
+ kill_zombie_dump_threads(slave_server_id);
thd->server_id = slave_server_id;
pthread_mutex_unlock(&LOCK_server_id);
mysql_binlog_send(thd, thd->strdup(packet + 11), pos, flags);
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc
index 1940ff360c2..ec5d45bca90 100644
--- a/sql/sql_repl.cc
+++ b/sql/sql_repl.cc
@@ -442,6 +442,11 @@ void mysql_binlog_send(THD* thd, char* log_ident, ulong pos, ushort flags)
break;
case LOG_READ_EOF:
DBUG_PRINT("wait",("waiting for data on binary log"));
+ if (thd->server_id==0)
+ {
+ pthread_mutex_unlock(log_lock);
+ goto end;
+ }
if (!thd->killed)
pthread_cond_wait(&COND_binlog_update, log_lock);
break;
@@ -523,6 +528,7 @@ void mysql_binlog_send(THD* thd, char* log_ident, ulong pos, ushort flags)
}
}
+end:
end_io_cache(&log);
(void)my_close(file, MYF(MY_WME));
@@ -532,7 +538,7 @@ void mysql_binlog_send(THD* thd, char* log_ident, ulong pos, ushort flags)
thd->current_linfo = 0;
pthread_mutex_unlock(&LOCK_thread_count);
DBUG_VOID_RETURN;
- err:
+err:
thd->proc_info = "waiting to finalize termination";
end_io_cache(&log);
pthread_mutex_lock(&LOCK_thread_count);