mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-target-5.1.22
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-target-5.1.22
This commit is contained in:
@@ -22,4 +22,4 @@ ndb_partition_error2 : HF is not sure if the test can work as internded on all
|
|||||||
#ndb_binlog_ddl_multi : BUG#18976 2006-04-10 kent CRBR: multiple binlog, second binlog may miss schema log events
|
#ndb_binlog_ddl_multi : BUG#18976 2006-04-10 kent CRBR: multiple binlog, second binlog may miss schema log events
|
||||||
#ndb_binlog_discover : bug#21806 2006-08-24
|
#ndb_binlog_discover : bug#21806 2006-08-24
|
||||||
#ndb_autodiscover3 : bug#21806
|
#ndb_autodiscover3 : bug#21806
|
||||||
ndb_autodiscover3 : Bug#20872 2007-07-15 ingo master*.err: miscellaneous error messages
|
#ndb_autodiscover3 : Bug#20872 2007-07-15 ingo master*.err: miscellaneous error messages
|
||||||
|
@@ -2812,11 +2812,17 @@ int ha_ndbcluster::write_row(uchar *record)
|
|||||||
|
|
||||||
if (unlikely(m_slow_path))
|
if (unlikely(m_slow_path))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
ignore TNTO_NO_LOGGING for slave thd. It is used to indicate
|
||||||
|
log-slave-updates option. This is instead handled in the
|
||||||
|
injector thread, by looking explicitly at the
|
||||||
|
opt_log_slave_updates flag.
|
||||||
|
*/
|
||||||
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
||||||
if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
if (thd->slave_thread)
|
||||||
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
|
||||||
else if (thd->slave_thread)
|
|
||||||
op->setAnyValue(thd->server_id);
|
op->setAnyValue(thd->server_id);
|
||||||
|
else if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||||
|
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||||
}
|
}
|
||||||
m_rows_changed++;
|
m_rows_changed++;
|
||||||
|
|
||||||
@@ -3102,11 +3108,17 @@ int ha_ndbcluster::update_row(const uchar *old_data, uchar *new_data)
|
|||||||
|
|
||||||
if (unlikely(m_slow_path))
|
if (unlikely(m_slow_path))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
ignore TNTO_NO_LOGGING for slave thd. It is used to indicate
|
||||||
|
log-slave-updates option. This is instead handled in the
|
||||||
|
injector thread, by looking explicitly at the
|
||||||
|
opt_log_slave_updates flag.
|
||||||
|
*/
|
||||||
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
||||||
if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
if (thd->slave_thread)
|
||||||
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
|
||||||
else if (thd->slave_thread)
|
|
||||||
op->setAnyValue(thd->server_id);
|
op->setAnyValue(thd->server_id);
|
||||||
|
else if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||||
|
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
Execute update operation if we are not doing a scan for update
|
Execute update operation if we are not doing a scan for update
|
||||||
@@ -3170,13 +3182,19 @@ int ha_ndbcluster::delete_row(const uchar *record)
|
|||||||
|
|
||||||
if (unlikely(m_slow_path))
|
if (unlikely(m_slow_path))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
ignore TNTO_NO_LOGGING for slave thd. It is used to indicate
|
||||||
|
log-slave-updates option. This is instead handled in the
|
||||||
|
injector thread, by looking explicitly at the
|
||||||
|
opt_log_slave_updates flag.
|
||||||
|
*/
|
||||||
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
||||||
if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
if (thd->slave_thread)
|
||||||
((NdbOperation *)trans->getLastDefinedOperation())->
|
|
||||||
setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
|
||||||
else if (thd->slave_thread)
|
|
||||||
((NdbOperation *)trans->getLastDefinedOperation())->
|
((NdbOperation *)trans->getLastDefinedOperation())->
|
||||||
setAnyValue(thd->server_id);
|
setAnyValue(thd->server_id);
|
||||||
|
else if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||||
|
((NdbOperation *)trans->getLastDefinedOperation())->
|
||||||
|
setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||||
}
|
}
|
||||||
if (!(m_primary_key_update || m_delete_cannot_batch))
|
if (!(m_primary_key_update || m_delete_cannot_batch))
|
||||||
// If deleting from cursor, NoCommit will be handled in next_result
|
// If deleting from cursor, NoCommit will be handled in next_result
|
||||||
@@ -3210,11 +3228,17 @@ int ha_ndbcluster::delete_row(const uchar *record)
|
|||||||
|
|
||||||
if (unlikely(m_slow_path))
|
if (unlikely(m_slow_path))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
ignore TNTO_NO_LOGGING for slave thd. It is used to indicate
|
||||||
|
log-slave-updates option. This is instead handled in the
|
||||||
|
injector thread, by looking explicitly at the
|
||||||
|
opt_log_slave_updates flag.
|
||||||
|
*/
|
||||||
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
Thd_ndb *thd_ndb= get_thd_ndb(thd);
|
||||||
if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
if (thd->slave_thread)
|
||||||
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
|
||||||
else if (thd->slave_thread)
|
|
||||||
op->setAnyValue(thd->server_id);
|
op->setAnyValue(thd->server_id);
|
||||||
|
else if (thd_ndb->trans_options & TNTO_NO_LOGGING)
|
||||||
|
op->setAnyValue(NDB_ANYVALUE_FOR_NOLOGGING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -114,6 +114,9 @@ NDB_SHARE *ndb_apply_status_share= 0;
|
|||||||
NDB_SHARE *ndb_schema_share= 0;
|
NDB_SHARE *ndb_schema_share= 0;
|
||||||
pthread_mutex_t ndb_schema_share_mutex;
|
pthread_mutex_t ndb_schema_share_mutex;
|
||||||
|
|
||||||
|
extern my_bool opt_log_slave_updates;
|
||||||
|
static my_bool g_ndb_log_slave_updates;
|
||||||
|
|
||||||
/* Schema object distribution handling */
|
/* Schema object distribution handling */
|
||||||
HASH ndb_schema_objects;
|
HASH ndb_schema_objects;
|
||||||
typedef struct st_ndb_schema_object {
|
typedef struct st_ndb_schema_object {
|
||||||
@@ -3296,6 +3299,14 @@ ndb_binlog_thread_handle_data_event(Ndb *ndb, NdbEventOperation *pOp,
|
|||||||
originating_server_id);
|
originating_server_id);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
else if (!g_ndb_log_slave_updates)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
This event comes from a slave applier since it has an originating
|
||||||
|
server id set. Since option to log slave updates is not set, skip it.
|
||||||
|
*/
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
TABLE *table= share->table;
|
TABLE *table= share->table;
|
||||||
DBUG_ASSERT(trans.good());
|
DBUG_ASSERT(trans.good());
|
||||||
@@ -3942,6 +3953,8 @@ restart:
|
|||||||
! IS_NDB_BLOB_PREFIX(pOp->getEvent()->getTable()->getName()));
|
! IS_NDB_BLOB_PREFIX(pOp->getEvent()->getTable()->getName()));
|
||||||
DBUG_ASSERT(gci <= ndb_latest_received_binlog_epoch);
|
DBUG_ASSERT(gci <= ndb_latest_received_binlog_epoch);
|
||||||
|
|
||||||
|
/* initialize some variables for this epoch */
|
||||||
|
g_ndb_log_slave_updates= opt_log_slave_updates;
|
||||||
i_ndb->
|
i_ndb->
|
||||||
setReportThreshEventGCISlip(ndb_report_thresh_binlog_epoch_slip);
|
setReportThreshEventGCISlip(ndb_report_thresh_binlog_epoch_slip);
|
||||||
i_ndb->setReportThreshEventFreeMem(ndb_report_thresh_binlog_mem_usage);
|
i_ndb->setReportThreshEventFreeMem(ndb_report_thresh_binlog_mem_usage);
|
||||||
|
Reference in New Issue
Block a user