mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-16329 [1/5] add THD::binlog_get_cache_mngr
This commit is contained in:
committed by
Sergei Golubchik
parent
f5e5013799
commit
0dfbb05cd0
63
sql/log.cc
63
sql/log.cc
@@ -1763,12 +1763,11 @@ binlog_trans_log_truncate(THD *thd, my_off_t pos)
|
|||||||
DBUG_ENTER("binlog_trans_log_truncate");
|
DBUG_ENTER("binlog_trans_log_truncate");
|
||||||
DBUG_PRINT("enter", ("pos: %lu", (ulong) pos));
|
DBUG_PRINT("enter", ("pos: %lu", (ulong) pos));
|
||||||
|
|
||||||
DBUG_ASSERT(thd_get_ha_data(thd, binlog_hton) != NULL);
|
DBUG_ASSERT(thd->binlog_get_cache_mngr() != NULL);
|
||||||
/* Only true if binlog_trans_log_savepos() wasn't called before */
|
/* Only true if binlog_trans_log_savepos() wasn't called before */
|
||||||
DBUG_ASSERT(pos != ~(my_off_t) 0);
|
DBUG_ASSERT(pos != ~(my_off_t) 0);
|
||||||
|
|
||||||
binlog_cache_mngr *const cache_mngr=
|
binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
|
||||||
cache_mngr->trx_cache.restore_savepoint(pos);
|
cache_mngr->trx_cache.restore_savepoint(pos);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
@@ -1808,8 +1807,7 @@ int binlog_init(void *p)
|
|||||||
static int binlog_close_connection(handlerton *hton, THD *thd)
|
static int binlog_close_connection(handlerton *hton, THD *thd)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("binlog_close_connection");
|
DBUG_ENTER("binlog_close_connection");
|
||||||
binlog_cache_mngr *const cache_mngr=
|
binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
if (WSREP(thd) && cache_mngr && !cache_mngr->trx_cache.empty()) {
|
if (WSREP(thd) && cache_mngr && !cache_mngr->trx_cache.empty()) {
|
||||||
IO_CACHE* cache= cache_mngr->get_binlog_cache_log(true);
|
IO_CACHE* cache= cache_mngr->get_binlog_cache_log(true);
|
||||||
@@ -2265,8 +2263,7 @@ int binlog_commit(THD *thd, bool all, bool ro_1pc)
|
|||||||
PSI_stage_info org_stage;
|
PSI_stage_info org_stage;
|
||||||
DBUG_ENTER("binlog_commit");
|
DBUG_ENTER("binlog_commit");
|
||||||
|
|
||||||
binlog_cache_mngr *const cache_mngr=
|
binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
|
||||||
|
|
||||||
if (!cache_mngr)
|
if (!cache_mngr)
|
||||||
{
|
{
|
||||||
@@ -2368,8 +2365,7 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
|
|||||||
DBUG_ENTER("binlog_rollback");
|
DBUG_ENTER("binlog_rollback");
|
||||||
|
|
||||||
int error= 0;
|
int error= 0;
|
||||||
binlog_cache_mngr *const cache_mngr=
|
binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
|
||||||
|
|
||||||
if (!cache_mngr)
|
if (!cache_mngr)
|
||||||
{
|
{
|
||||||
@@ -2463,7 +2459,7 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
|
|||||||
void binlog_reset_cache(THD *thd)
|
void binlog_reset_cache(THD *thd)
|
||||||
{
|
{
|
||||||
binlog_cache_mngr *const cache_mngr= opt_bin_log ?
|
binlog_cache_mngr *const cache_mngr= opt_bin_log ?
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton) : 0;
|
thd->binlog_get_cache_mngr() : 0;
|
||||||
DBUG_ENTER("binlog_reset_cache");
|
DBUG_ENTER("binlog_reset_cache");
|
||||||
if (cache_mngr)
|
if (cache_mngr)
|
||||||
{
|
{
|
||||||
@@ -5791,8 +5787,7 @@ bool MYSQL_BIN_LOG::is_query_in_union(THD *thd, query_id_t query_id_param)
|
|||||||
bool
|
bool
|
||||||
trans_has_updated_trans_table(const THD* thd)
|
trans_has_updated_trans_table(const THD* thd)
|
||||||
{
|
{
|
||||||
binlog_cache_mngr *const cache_mngr=
|
binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
|
||||||
|
|
||||||
return (cache_mngr ? !cache_mngr->trx_cache.empty() : 0);
|
return (cache_mngr ? !cache_mngr->trx_cache.empty() : 0);
|
||||||
}
|
}
|
||||||
@@ -5841,8 +5836,7 @@ bool use_trans_cache(const THD* thd, bool is_transactional)
|
|||||||
{
|
{
|
||||||
if (is_transactional)
|
if (is_transactional)
|
||||||
return 1;
|
return 1;
|
||||||
binlog_cache_mngr *const cache_mngr=
|
auto *const cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
|
||||||
|
|
||||||
return ((thd->is_current_stmt_binlog_format_row() ||
|
return ((thd->is_current_stmt_binlog_format_row() ||
|
||||||
thd->variables.binlog_direct_non_trans_update) ? 0 :
|
thd->variables.binlog_direct_non_trans_update) ? 0 :
|
||||||
@@ -6008,7 +6002,7 @@ void THD::set_binlog_start_alter_seq_no(uint64 s_no)
|
|||||||
void
|
void
|
||||||
THD::binlog_start_trans_and_stmt()
|
THD::binlog_start_trans_and_stmt()
|
||||||
{
|
{
|
||||||
binlog_cache_mngr *cache_mngr= (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
|
binlog_cache_mngr *cache_mngr= binlog_get_cache_mngr();
|
||||||
DBUG_ENTER("binlog_start_trans_and_stmt");
|
DBUG_ENTER("binlog_start_trans_and_stmt");
|
||||||
DBUG_PRINT("enter", ("cache_mngr: %p cache_mngr->trx_cache.get_prev_position(): %lu",
|
DBUG_PRINT("enter", ("cache_mngr: %p cache_mngr->trx_cache.get_prev_position(): %lu",
|
||||||
cache_mngr,
|
cache_mngr,
|
||||||
@@ -6095,8 +6089,7 @@ THD::binlog_start_trans_and_stmt()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void THD::binlog_set_stmt_begin() {
|
void THD::binlog_set_stmt_begin() {
|
||||||
binlog_cache_mngr *cache_mngr=
|
binlog_cache_mngr *cache_mngr= binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The call to binlog_trans_log_savepos() might create the cache_mngr
|
The call to binlog_trans_log_savepos() might create the cache_mngr
|
||||||
@@ -6106,7 +6099,7 @@ void THD::binlog_set_stmt_begin() {
|
|||||||
*/
|
*/
|
||||||
my_off_t pos= 0;
|
my_off_t pos= 0;
|
||||||
binlog_trans_log_savepos(this, &pos);
|
binlog_trans_log_savepos(this, &pos);
|
||||||
cache_mngr= (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
|
cache_mngr= binlog_get_cache_mngr();
|
||||||
cache_mngr->trx_cache.set_prev_position(pos);
|
cache_mngr->trx_cache.set_prev_position(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6265,8 +6258,7 @@ bool THD::binlog_write_table_map(TABLE *table, bool with_annotate)
|
|||||||
Table_map_log_event
|
Table_map_log_event
|
||||||
the_event(this, table, table->s->table_map_id, is_transactional);
|
the_event(this, table, table->s->table_map_id, is_transactional);
|
||||||
|
|
||||||
binlog_cache_mngr *const cache_mngr=
|
binlog_cache_mngr *const cache_mngr= binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
|
|
||||||
binlog_cache_data *cache_data= (cache_mngr->
|
binlog_cache_data *cache_data= (cache_mngr->
|
||||||
get_binlog_cache_data(is_transactional));
|
get_binlog_cache_data(is_transactional));
|
||||||
IO_CACHE *file= &cache_data->cache_log;
|
IO_CACHE *file= &cache_data->cache_log;
|
||||||
@@ -6305,6 +6297,12 @@ write_err:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
binlog_cache_mngr *THD::binlog_get_cache_mngr() const
|
||||||
|
{
|
||||||
|
return (binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This function retrieves a pending row event from a cache which is
|
This function retrieves a pending row event from a cache which is
|
||||||
specified through the parameter @c is_transactional. Respectively, when it
|
specified through the parameter @c is_transactional. Respectively, when it
|
||||||
@@ -6320,8 +6318,7 @@ Rows_log_event*
|
|||||||
THD::binlog_get_pending_rows_event(bool is_transactional) const
|
THD::binlog_get_pending_rows_event(bool is_transactional) const
|
||||||
{
|
{
|
||||||
Rows_log_event* rows= NULL;
|
Rows_log_event* rows= NULL;
|
||||||
binlog_cache_mngr *const cache_mngr=
|
binlog_cache_mngr *const cache_mngr= binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(this, binlog_hton);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This is less than ideal, but here's the story: If there is no cache_mngr,
|
This is less than ideal, but here's the story: If there is no cache_mngr,
|
||||||
@@ -6376,8 +6373,7 @@ MYSQL_BIN_LOG::remove_pending_rows_event(THD *thd, bool is_transactional)
|
|||||||
{
|
{
|
||||||
DBUG_ENTER("MYSQL_BIN_LOG::remove_pending_rows_event");
|
DBUG_ENTER("MYSQL_BIN_LOG::remove_pending_rows_event");
|
||||||
|
|
||||||
binlog_cache_mngr *const cache_mngr=
|
binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
|
||||||
|
|
||||||
DBUG_ASSERT(cache_mngr);
|
DBUG_ASSERT(cache_mngr);
|
||||||
|
|
||||||
@@ -6412,8 +6408,7 @@ MYSQL_BIN_LOG::flush_and_set_pending_rows_event(THD *thd,
|
|||||||
DBUG_ASSERT(WSREP_EMULATE_BINLOG(thd) || mysql_bin_log.is_open());
|
DBUG_ASSERT(WSREP_EMULATE_BINLOG(thd) || mysql_bin_log.is_open());
|
||||||
DBUG_PRINT("enter", ("event: %p", event));
|
DBUG_PRINT("enter", ("event: %p", event));
|
||||||
|
|
||||||
binlog_cache_mngr *const cache_mngr=
|
binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
|
||||||
|
|
||||||
DBUG_ASSERT(cache_mngr);
|
DBUG_ASSERT(cache_mngr);
|
||||||
|
|
||||||
@@ -11817,7 +11812,7 @@ mysql_bin_log_commit_pos(THD *thd, ulonglong *out_pos, const char **out_file)
|
|||||||
{
|
{
|
||||||
binlog_cache_mngr *cache_mngr;
|
binlog_cache_mngr *cache_mngr;
|
||||||
if (opt_bin_log &&
|
if (opt_bin_log &&
|
||||||
(cache_mngr= (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton)))
|
(cache_mngr= thd->binlog_get_cache_mngr()))
|
||||||
{
|
{
|
||||||
*out_file= cache_mngr->last_commit_pos_file;
|
*out_file= cache_mngr->last_commit_pos_file;
|
||||||
*out_pos= (ulonglong)(cache_mngr->last_commit_pos_offset);
|
*out_pos= (ulonglong)(cache_mngr->last_commit_pos_offset);
|
||||||
@@ -11930,7 +11925,7 @@ TC_LOG_BINLOG::set_status_variables(THD *thd)
|
|||||||
binlog_cache_mngr *cache_mngr;
|
binlog_cache_mngr *cache_mngr;
|
||||||
|
|
||||||
if (thd && opt_bin_log)
|
if (thd && opt_bin_log)
|
||||||
cache_mngr= (binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
else
|
else
|
||||||
cache_mngr= 0;
|
cache_mngr= 0;
|
||||||
|
|
||||||
@@ -12055,8 +12050,7 @@ maria_declare_plugin_end;
|
|||||||
IO_CACHE *wsrep_get_cache(THD * thd, bool is_transactional)
|
IO_CACHE *wsrep_get_cache(THD * thd, bool is_transactional)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(binlog_hton->slot != HA_SLOT_UNDEF);
|
DBUG_ASSERT(binlog_hton->slot != HA_SLOT_UNDEF);
|
||||||
binlog_cache_mngr *cache_mngr = (binlog_cache_mngr*)
|
binlog_cache_mngr *cache_mngr = thd->binlog_get_cache_mngr();
|
||||||
thd_get_ha_data(thd, binlog_hton);
|
|
||||||
if (cache_mngr)
|
if (cache_mngr)
|
||||||
return cache_mngr->get_binlog_cache_log(is_transactional);
|
return cache_mngr->get_binlog_cache_log(is_transactional);
|
||||||
|
|
||||||
@@ -12072,8 +12066,7 @@ void wsrep_thd_binlog_trx_reset(THD * thd)
|
|||||||
/*
|
/*
|
||||||
todo: fix autocommit select to not call the caller
|
todo: fix autocommit select to not call the caller
|
||||||
*/
|
*/
|
||||||
binlog_cache_mngr *const cache_mngr=
|
binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
|
||||||
if (cache_mngr)
|
if (cache_mngr)
|
||||||
{
|
{
|
||||||
cache_mngr->reset(false, true);
|
cache_mngr->reset(false, true);
|
||||||
@@ -12091,8 +12084,7 @@ void wsrep_thd_binlog_stmt_rollback(THD * thd)
|
|||||||
{
|
{
|
||||||
DBUG_ENTER("wsrep_thd_binlog_stmt_rollback");
|
DBUG_ENTER("wsrep_thd_binlog_stmt_rollback");
|
||||||
WSREP_DEBUG("wsrep_thd_binlog_stmt_rollback");
|
WSREP_DEBUG("wsrep_thd_binlog_stmt_rollback");
|
||||||
binlog_cache_mngr *const cache_mngr=
|
binlog_cache_mngr *const cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
|
||||||
if (cache_mngr)
|
if (cache_mngr)
|
||||||
{
|
{
|
||||||
thd->binlog_remove_pending_rows_event(TRUE, TRUE);
|
thd->binlog_remove_pending_rows_event(TRUE, TRUE);
|
||||||
@@ -12117,8 +12109,7 @@ void wsrep_register_binlog_handler(THD *thd, bool trx)
|
|||||||
back a statement or a transaction. However, notifications do not happen
|
back a statement or a transaction. However, notifications do not happen
|
||||||
if the binary log is set as read/write.
|
if the binary log is set as read/write.
|
||||||
*/
|
*/
|
||||||
binlog_cache_mngr *cache_mngr=
|
binlog_cache_mngr *cache_mngr= thd->binlog_get_cache_mngr();
|
||||||
(binlog_cache_mngr*) thd_get_ha_data(thd, binlog_hton);
|
|
||||||
/* cache_mngr may be missing e.g. in mtr test ev51914.test */
|
/* cache_mngr may be missing e.g. in mtr test ev51914.test */
|
||||||
if (cache_mngr)
|
if (cache_mngr)
|
||||||
{
|
{
|
||||||
|
@@ -2964,6 +2964,7 @@ public:
|
|||||||
/*
|
/*
|
||||||
Member functions to handle pending event for row-level logging.
|
Member functions to handle pending event for row-level logging.
|
||||||
*/
|
*/
|
||||||
|
binlog_cache_mngr *binlog_get_cache_mngr() const;
|
||||||
template <class RowsEventT> Rows_log_event*
|
template <class RowsEventT> Rows_log_event*
|
||||||
binlog_prepare_pending_rows_event(TABLE* table, uint32 serv_id,
|
binlog_prepare_pending_rows_event(TABLE* table, uint32 serv_id,
|
||||||
size_t needed,
|
size_t needed,
|
||||||
|
Reference in New Issue
Block a user