summaryrefslogtreecommitdiff
path: root/sql/log_event.cc
diff options
context:
space:
mode:
authorguilhem@mysql.com <>2004-09-23 12:16:56 +0200
committerguilhem@mysql.com <>2004-09-23 12:16:56 +0200
commit00d2e803dc9203a23c2bf5280bee68ffce6de360 (patch)
tree2f0092ce28cd67173fe36192649ff6bd1c319820 /sql/log_event.cc
parent36548b10ca2d796c46436ab445569f6e0476ecaf (diff)
downloadmariadb-git-00d2e803dc9203a23c2bf5280bee68ffce6de360.tar.gz
Fix for BUG#5705: "SET CHARATER_SET_SERVERetc will be lost if STOP SLAVE before following query":
we do not increment rli->group_master_log_pos if we are just after a SET ONE_SHOT (it's not a standalone event)
Diffstat (limited to 'sql/log_event.cc')
-rw-r--r--sql/log_event.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 1f30e932c01..326f2fc5c59 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -1091,7 +1091,15 @@ end:
VOID(pthread_mutex_unlock(&LOCK_thread_count));
close_thread_tables(thd);
free_root(&thd->mem_root,MYF(MY_KEEP_PREALLOC));
- return (thd->query_error ? thd->query_error : Log_event::exec_event(rli));
+ /*
+ If there was an error we stop. Otherwise we increment positions. Note that
+ we will not increment group* positions if we are just after a SET
+ ONE_SHOT, because SET ONE_SHOT should not be separated from its following
+ updating query.
+ */
+ return (thd->query_error ? thd->query_error :
+ (thd->one_shot_set ? (rli->inc_event_relay_log_pos(get_event_len()),0) :
+ Log_event::exec_event(rli)));
}
#endif