Commit a47464d1 authored by Sujatha's avatar Sujatha

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

Post push fix.

Simplified the earlier fixes.
parent b3473961
...@@ -25,15 +25,23 @@ ...@@ -25,15 +25,23 @@
#include "ha_blackhole.h" #include "ha_blackhole.h"
#include "sql_class.h" // THD, SYSTEM_THREAD_SLAVE_SQL #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) static bool is_row_based_replication(THD *thd)
{ {
/* return thd->system_thread == SYSTEM_THREAD_SLAVE_SQL &&
A row event which has its thd->query() == NULL or a row event which has (thd->query() == NULL || thd->variables.binlog_annotate_row_events);
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);
} }
/* Static declarations for handlerton */ /* Static declarations for handlerton */
...@@ -119,8 +127,7 @@ int ha_blackhole::update_row(const uchar *old_data, uchar *new_data) ...@@ -119,8 +127,7 @@ int ha_blackhole::update_row(const uchar *old_data, uchar *new_data)
{ {
DBUG_ENTER("ha_blackhole::update_row"); DBUG_ENTER("ha_blackhole::update_row");
THD *thd= ha_thd(); THD *thd= ha_thd();
if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL && if (is_row_based_replication(thd))
is_row_based_replication(thd))
DBUG_RETURN(0); DBUG_RETURN(0);
DBUG_RETURN(HA_ERR_WRONG_COMMAND); DBUG_RETURN(HA_ERR_WRONG_COMMAND);
} }
...@@ -129,8 +136,7 @@ int ha_blackhole::delete_row(const uchar *buf) ...@@ -129,8 +136,7 @@ int ha_blackhole::delete_row(const uchar *buf)
{ {
DBUG_ENTER("ha_blackhole::delete_row"); DBUG_ENTER("ha_blackhole::delete_row");
THD *thd= ha_thd(); THD *thd= ha_thd();
if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL && if (is_row_based_replication(thd))
is_row_based_replication(thd))
DBUG_RETURN(0); DBUG_RETURN(0);
DBUG_RETURN(HA_ERR_WRONG_COMMAND); DBUG_RETURN(HA_ERR_WRONG_COMMAND);
} }
...@@ -147,8 +153,7 @@ int ha_blackhole::rnd_next(uchar *buf) ...@@ -147,8 +153,7 @@ int ha_blackhole::rnd_next(uchar *buf)
int rc; int rc;
DBUG_ENTER("ha_blackhole::rnd_next"); DBUG_ENTER("ha_blackhole::rnd_next");
THD *thd= ha_thd(); THD *thd= ha_thd();
if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL && if (is_row_based_replication(thd))
is_row_based_replication(thd))
rc= 0; rc= 0;
else else
rc= HA_ERR_END_OF_FILE; rc= HA_ERR_END_OF_FILE;
...@@ -233,8 +238,7 @@ int ha_blackhole::index_read_map(uchar * buf, const uchar * key, ...@@ -233,8 +238,7 @@ int ha_blackhole::index_read_map(uchar * buf, const uchar * key,
int rc; int rc;
DBUG_ENTER("ha_blackhole::index_read"); DBUG_ENTER("ha_blackhole::index_read");
THD *thd= ha_thd(); THD *thd= ha_thd();
if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL && if (is_row_based_replication(thd))
is_row_based_replication(thd))
rc= 0; rc= 0;
else else
rc= HA_ERR_END_OF_FILE; rc= HA_ERR_END_OF_FILE;
...@@ -249,8 +253,7 @@ int ha_blackhole::index_read_idx_map(uchar * buf, uint idx, const uchar * key, ...@@ -249,8 +253,7 @@ int ha_blackhole::index_read_idx_map(uchar * buf, uint idx, const uchar * key,
int rc; int rc;
DBUG_ENTER("ha_blackhole::index_read_idx"); DBUG_ENTER("ha_blackhole::index_read_idx");
THD *thd= ha_thd(); THD *thd= ha_thd();
if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL && if (is_row_based_replication(thd))
is_row_based_replication(thd))
rc= 0; rc= 0;
else else
rc= HA_ERR_END_OF_FILE; rc= HA_ERR_END_OF_FILE;
...@@ -264,8 +267,7 @@ int ha_blackhole::index_read_last_map(uchar * buf, const uchar * key, ...@@ -264,8 +267,7 @@ int ha_blackhole::index_read_last_map(uchar * buf, const uchar * key,
int rc; int rc;
DBUG_ENTER("ha_blackhole::index_read_last"); DBUG_ENTER("ha_blackhole::index_read_last");
THD *thd= ha_thd(); THD *thd= ha_thd();
if (thd->system_thread == SYSTEM_THREAD_SLAVE_SQL && if (is_row_based_replication(thd))
is_row_based_replication(thd))
rc= 0; rc= 0;
else else
rc= HA_ERR_END_OF_FILE; rc= HA_ERR_END_OF_FILE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment