← Back to team overview

maria-developers team mailing list archive

Re: Bugs in GTID implementation

 

Pavel Ivanov <pivanof@xxxxxxxxxx> writes:

> fixes. Meanwhile I've found one more bug in your code. In
> Gtid_log_event::do_apply_event() you assume that mysql_parse() always
> succeeds, you don't check thd->is_error() and always return 0. I don't

Ah, right, I see.

Can you test the appended patch if it fixes the problem? I tried to copy the
error handling to be identical to what
Query_log_event::do_apply_event("BEGIN") does.

 - Kristian.

=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc	2013-03-25 11:25:47 +0000
+++ b/sql/log_event.cc	2013-03-25 11:28:17 +0000
@@ -6235,12 +6235,15 @@
     /* Finalize server status flags after executing a statement. */
     thd->update_server_status();
     log_slow_statement(thd);
-    general_log_write(thd, COM_QUERY, thd->query(), thd->query_length());
+    if (unlikely(thd->is_fatal_error))
+      thd->is_slave_error= 1;
+    else if (likely(!thd->is_slave_error))
+      general_log_write(thd, COM_QUERY, thd->query(), thd->query_length());
   }
 
   thd->reset_query();
   free_root(thd->mem_root,MYF(MY_KEEP_PREALLOC));
-  return 0;
+  return thd->is_slave_error;
 }
 
 


Follow ups