summaryrefslogtreecommitdiff
path: root/sql/ha_ndbcluster_binlog.cc
diff options
context:
space:
mode:
authorunknown <tomas@whalegate.ndb.mysql.com>2007-04-03 12:57:18 +0200
committerunknown <tomas@whalegate.ndb.mysql.com>2007-04-03 12:57:18 +0200
commite0f91f2262f05a5e8b031b9c09c73211999073e0 (patch)
tree42f542c9aa34b127dea846e86d39f07af51aa999 /sql/ha_ndbcluster_binlog.cc
parent52f82d52117fa7f76e1fd7204b8eaa1f757acd0b (diff)
downloadmariadb-git-e0f91f2262f05a5e8b031b9c09c73211999073e0.tar.gz
Bug #17095 Cluster RBR in circle does not terminate
- add any value to ndb - use it to update correct server id in binlog thread sql/ha_ndbcluster.cc: ndb: use "any value" to set correct server_id sql/ha_ndbcluster_binlog.cc: ndb: use "any value" to set correct server_id storage/ndb/include/kernel/AttributeHeader.hpp: add any_value as psudo column, updatable from ndbapi storage/ndb/include/kernel/signaldata/FireTrigOrd.hpp: add any_value as psudo column, updatable from ndbapi storage/ndb/include/kernel/signaldata/SumaImpl.hpp: add any_value as psudo column, updatable from ndbapi storage/ndb/include/ndbapi/NdbDictionary.hpp: add any_value as psudo column, updatable from ndbapi storage/ndb/include/ndbapi/NdbEventOperation.hpp: add any_value as psudo column, updatable from ndbapi storage/ndb/include/ndbapi/NdbOperation.hpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/kernel/blocks/dbtup/DbtupStoredProcDef.cpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/kernel/blocks/suma/Suma.cpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/ndbapi/NdbEventOperation.cpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/ndbapi/NdbOperationDefine.cpp: add any_value as psudo column, updatable from ndbapi storage/ndb/src/ndbapi/ndb_cluster_connection.cpp: add any_value as psudo column, updatable from ndbapi
Diffstat (limited to 'sql/ha_ndbcluster_binlog.cc')
-rw-r--r--sql/ha_ndbcluster_binlog.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/sql/ha_ndbcluster_binlog.cc b/sql/ha_ndbcluster_binlog.cc
index 074e71671c7..e5b4cffa7fb 100644
--- a/sql/ha_ndbcluster_binlog.cc
+++ b/sql/ha_ndbcluster_binlog.cc
@@ -3189,8 +3189,12 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp,
NDB_SHARE *share= (NDB_SHARE*) pOp->getCustomData();
if (share == ndb_apply_status_share)
return 0;
- TABLE *table= share->table;
+ uint originating_server_id= pOp->getAnyValue();
+ if (originating_server_id == 0)
+ originating_server_id= ::server_id;
+
+ TABLE *table= share->table;
DBUG_ASSERT(trans.good());
DBUG_ASSERT(table != 0);
@@ -3235,7 +3239,7 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp,
DBUG_ASSERT(ret == 0);
}
ndb_unpack_record(table, share->ndb_value[0], &b, table->record[0]);
- IF_DBUG(int ret=) trans.write_row(::server_id,
+ IF_DBUG(int ret=) trans.write_row(originating_server_id,
injector::transaction::table(table,
TRUE),
&b, n_fields, table->record[0]);
@@ -3275,7 +3279,7 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp,
}
ndb_unpack_record(table, share->ndb_value[n], &b, table->record[n]);
DBUG_EXECUTE("info", print_records(table, table->record[n]););
- IF_DBUG(int ret =) trans.delete_row(::server_id,
+ IF_DBUG(int ret =) trans.delete_row(originating_server_id,
injector::transaction::table(table,
TRUE),
&b, n_fields, table->record[n]);
@@ -3305,7 +3309,8 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp,
since table has a primary key, we can do a write
using only after values
*/
- trans.write_row(::server_id, injector::transaction::table(table, TRUE),
+ trans.write_row(originating_server_id,
+ injector::transaction::table(table, TRUE),
&b, n_fields, table->record[0]);// after values
}
else
@@ -3325,7 +3330,7 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp,
}
ndb_unpack_record(table, share->ndb_value[1], &b, table->record[1]);
DBUG_EXECUTE("info", print_records(table, table->record[1]););
- IF_DBUG(int ret =) trans.update_row(::server_id,
+ IF_DBUG(int ret =) trans.update_row(originating_server_id,
injector::transaction::table(table,
TRUE),
&b, n_fields,