diff --git a/storage/ctc/ctc_meta_data.cc b/storage/ctc/ctc_meta_data.cc index 6fdbfd9833e97a1f51525de01aa416e7a053ab5c..4e7b023044ae754840ba30c8db6a94527ca2da07 100644 --- a/storage/ctc/ctc_meta_data.cc +++ b/storage/ctc/ctc_meta_data.cc @@ -444,6 +444,9 @@ static typename std::enable_if::type if (broadcast_req->is_dcl == true) { error = reload_acl_caches(thd, false); ctc_log_system("[CTC_INVALID_DD]: remote invalidate acl cache, mysql_inst_id=%u", broadcast_req->mysql_inst_id); + if (broadcast_req->is_flush == true) { + reset_mqh(thd, (LEX_USER *)nullptr, true); + } } else { invalidate_obj_entry_t *obj = NULL; uint32_t offset = 1; diff --git a/storage/ctc/ctc_srv.h b/storage/ctc/ctc_srv.h index 66f67af1440d0e5dd2b1fa5592ee3f0b6c757448..15d94b9cf63b5280d86e9599ae0ed211c64f2485 100644 --- a/storage/ctc/ctc_srv.h +++ b/storage/ctc/ctc_srv.h @@ -230,6 +230,7 @@ typedef struct { uint32_t buff_len; uint32_t mysql_inst_id; bool is_dcl; + bool is_flush; int err_code; } ctc_invalidate_broadcast_request; diff --git a/storage/ctc/ha_ctc.cc b/storage/ctc/ha_ctc.cc index 8abc376175de18b41814755845ccda1d8d72210d..396bf2ccfb7e6f80ea7ff05edca7949fb8064963 100644 --- a/storage/ctc/ha_ctc.cc +++ b/storage/ctc/ha_ctc.cc @@ -1358,6 +1358,7 @@ static typename std::enable_if::typ req.mysql_inst_id = ctc_instance_id; req.buff_len = 1; req.is_dcl = false; + req.is_flush = (tch->sql_command == SQLCOM_FLUSH) ? true : false; invalidate_obj_entry_t *obj = NULL; for (auto invalidate_it : thd->invalidates()) { @@ -1411,6 +1412,7 @@ bool invalidate_remote_dcl_cache(ctc_handler_t *tch) req.mysql_inst_id = ctc_instance_id; req.buff_len = 0; req.is_dcl = true; + req.is_flush = (tch->sql_command == SQLCOM_FLUSH) ? true : false; bool result = ctc_broadcast_mysql_dd_invalidate(tch, &req); return result; }