[Commits] a47464d1c12: MDEV-11094: Blackhole table updates on slave fail when row annotation is enabled

sujatha sujatha.sivakumar at mariadb.com
Wed May 29 15:06:35 EEST 2019


revision-id: a47464d1c12d773364e78f50090b08484fe76129 (mariadb-10.1.39-49-ga47464d1c12)
parent(s): b347396181018cedc946450cb49891f1a0aa4575
author: Sujatha
committer: Sujatha
timestamp: 2019-05-29 17:35:29 +0530
message:

MDEV-11094: Blackhole table updates on slave fail when row annotation is enabled

Post push fix.

Simplified the earlier fixes.

---
 storage/blackhole/ha_blackhole.cc | 40 ++++++++++++++++++++-------------------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/storage/blackhole/ha_blackhole.cc b/storage/blackhole/ha_blackhole.cc
index 43bcdc541a1..69182676c1e 100644
--- a/storage/blackhole/ha_blackhole.cc
+++ b/storage/blackhole/ha_blackhole.cc
@@ -25,15 +25,23 @@
 #include "ha_blackhole.h"
 #include "sql_class.h"                          // THD, SYSTEM_THREAD_SLAVE_SQL
 
+/**
+  Checks if the param 'thd' is pointing to slave applier thread and row based
+  replication is in use.
+
+  A row event will have its thd->query() == NULL except in cases where
+  replicate_annotate_row_events is enabled. In the later case the thd->query()
+  will be pointing to the query, received through replicated annotate event
+  from master.
+
+  @param thd   pointer to a THD instance
+
+  @return TRUE if thread is slave applier and row based replication is in use
+*/
 static bool is_row_based_replication(THD *thd)
 {
-  /*
-    A row event which has its thd->query() == NULL or a row event which has
-    replicate_annotate_row_events enabled. In the later case the thd->query()
-    will be pointing to the query, received through replicated annotate event
-    from master.
-  */
-  return ((thd->query() == NULL) || thd->variables.binlog_annotate_row_events);
+  return thd->system_thread == SYSTEM_THREAD_SLAVE_SQL &&
+    (thd->query() == NULL || thd->variables.binlog_annotate_row_events);
 }
 /* Static declarations for handlerton */
 
@@ -119,8 +127,7 @@ int ha_blackhole::update_row(const uchar *old_data, uchar *new_data)
 {
   DBUG_ENTER("ha_blackhole::update_row");
   THD *thd= ha_thd();
-  if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL &&
-      is_row_based_replication(thd))
+  if (is_row_based_replication(thd))
     DBUG_RETURN(0);
   DBUG_RETURN(HA_ERR_WRONG_COMMAND);
 }
@@ -129,8 +136,7 @@ int ha_blackhole::delete_row(const uchar *buf)
 {
   DBUG_ENTER("ha_blackhole::delete_row");
   THD *thd= ha_thd();
-  if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL &&
-      is_row_based_replication(thd))
+  if (is_row_based_replication(thd))
     DBUG_RETURN(0);
   DBUG_RETURN(HA_ERR_WRONG_COMMAND);
 }
@@ -147,8 +153,7 @@ int ha_blackhole::rnd_next(uchar *buf)
   int rc;
   DBUG_ENTER("ha_blackhole::rnd_next");
   THD *thd= ha_thd();
-  if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL &&
-      is_row_based_replication(thd))
+  if (is_row_based_replication(thd))
     rc= 0;
   else
     rc= HA_ERR_END_OF_FILE;
@@ -233,8 +238,7 @@ int ha_blackhole::index_read_map(uchar * buf, const uchar * key,
   int rc;
   DBUG_ENTER("ha_blackhole::index_read");
   THD *thd= ha_thd();
-  if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL &&
-      is_row_based_replication(thd))
+  if (is_row_based_replication(thd))
     rc= 0;
   else
     rc= HA_ERR_END_OF_FILE;
@@ -249,8 +253,7 @@ int ha_blackhole::index_read_idx_map(uchar * buf, uint idx, const uchar * key,
   int rc;
   DBUG_ENTER("ha_blackhole::index_read_idx");
   THD *thd= ha_thd();
-  if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL &&
-      is_row_based_replication(thd))
+  if (is_row_based_replication(thd))
     rc= 0;
   else
     rc= HA_ERR_END_OF_FILE;
@@ -264,8 +267,7 @@ int ha_blackhole::index_read_last_map(uchar * buf, const uchar * key,
   int rc;
   DBUG_ENTER("ha_blackhole::index_read_last");
   THD *thd= ha_thd();
-  if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL &&
-      is_row_based_replication(thd))
+  if (is_row_based_replication(thd))
     rc= 0;
   else
     rc= HA_ERR_END_OF_FILE;


More information about the commits mailing list