MySQL 9.1.0
Source Code Documentation
|
#include <sys/types.h>
#include <time.h>
#include <atomic>
#include <memory>
#include <string>
#include <string_view>
#include <tuple>
#include <vector>
#include "lex_string.h"
#include "map_helpers.h"
#include "my_bitmap.h"
#include "my_dbug.h"
#include "my_inttypes.h"
#include "my_io.h"
#include "my_psi_config.h"
#include "my_sys.h"
#include "mysql/binlog/event/binlog_event.h"
#include "mysql/components/services/bits/mysql_cond_bits.h"
#include "mysql/components/services/bits/mysql_mutex_bits.h"
#include "mysql/components/services/bits/psi_mutex_bits.h"
#include "mysql/my_loglevel.h"
#include "mysql/psi/mysql_mutex.h"
#include "mysql/thread_type.h"
#include "prealloced_array.h"
#include "sql/binlog.h"
#include "sql/changestreams/apply/metrics/applier_metrics.h"
#include "sql/changestreams/apply/metrics/applier_metrics_stub.h"
#include "sql/log_event.h"
#include "sql/psi_memory_key.h"
#include "sql/query_options.h"
#include "sql/rpl_gtid.h"
#include "sql/rpl_info.h"
#include "sql/rpl_mta_submode.h"
#include "sql/rpl_replica_until_options.h"
#include "sql/rpl_tblmap.h"
#include "sql/rpl_trx_boundary_parser.h"
#include "sql/rpl_utility.h"
#include "sql/sql_class.h"
#include "sql/system_variables.h"
#include "sql/table.h"
#include "strmake.h"
Go to the source code of this file.
Classes | |
struct | slave_job_item |
class | Assign_gtids_to_anonymous_transactions_info |
This class is used to store the type and value for Assign_gtids_to_anonymous_transactions parameter of Change replication source command on slave. More... | |
class | Relay_log_info |
class | RLI_current_event_raii |
RAII class to control the slave applier execution context binding with a being handled event. More... | |
class | MDL_lock_guard |
Utility class to allow RAII pattern with MDL_request and MDL_context classes. More... | |
class | Applier_security_context_guard |
Utility class to allow RAII pattern with Security_context class. More... | |
Typedefs | |
typedef Prealloced_array< Slave_worker *, 4 > | Slave_worker_array |
typedef struct slave_job_item | Slave_job_item |
Functions | |
bool | operator! (Relay_log_info::enum_priv_checks_status status) |
Negation operator for enum_priv_checks_status , to facilitate validation against SUCCESS . More... | |
bool | operator! (Relay_log_info::enum_require_row_status status) |
Negation operator for enum_require_row_status , to facilitate validation against SUCCESS . More... | |
bool | mysql_show_relaylog_events (THD *thd) |
Execute a SHOW RELAYLOG EVENTS statement. More... | |
bool | is_mts_worker (const THD *thd) |
bool | is_mts_db_partitioned (Relay_log_info *rli) |
Auxiliary function to check if we have a db partitioned MTS. More... | |
bool | is_committed_ddl (Log_event *ev) |
Checks whether the supplied event encodes a (2pc-aware) DDL that has been already committed. More... | |
bool | is_atomic_ddl_commit_on_slave (THD *thd) |
Checks whether the transaction identified by the argument is executed by a slave applier thread is an atomic DDL not yet committed (see Query_log_event::has_ddl_committed ). More... | |
Variables | |
uint | sql_replica_skip_counter |
a copy of active_mi->rli->slave_skip_counter, for showing in SHOW GLOBAL VARIABLES, INFORMATION_SCHEMA.GLOBAL_VARIABLES and @sql_replica_skip_counter without taking all the mutexes needed to access active_mi->rli->slave_skip_counter properly. More... | |
typedef struct slave_job_item Slave_job_item |
typedef Prealloced_array<Slave_worker *, 4> Slave_worker_array |
|
inline |
Checks whether the transaction identified by the argument is executed by a slave applier thread is an atomic DDL not yet committed (see Query_log_event::has_ddl_committed
).
THD::is_operating_substatement_implicitly filters out intermediate commits done by non-atomic DDLs. The error-tagged atomic statements are regarded as non-atomic therefore this predicate returns negative in such case.
Note that call to is_atomic_ddl() returns "approximate" outcome in this case as it misses information about type of tables used by the DDL.
This can be a problem for binlogging slave, as updates to slave info which happen in the same transaction as write of binary log event without XID might be lost on recovery. To avoid this problem RLI::ddl_not_atomic flag is employed which is set to true when non-atomic DDL without XID is written to the binary log.
"Approximate" outcome is always fine for non-binlogging slave as in this case commit happens using one-phase routine for which recovery is always correct.
thd | a pointer to THD describing the transaction context |
|
inline |
Checks whether the supplied event encodes a (2pc-aware) DDL that has been already committed.
ev | A reference to Query-log-event |
bool is_mts_db_partitioned | ( | Relay_log_info * | rli | ) |
Auxiliary function to check if we have a db partitioned MTS.
|
inline |
thd | a reference to THD |
bool mysql_show_relaylog_events | ( | THD * | thd | ) |
Execute a SHOW RELAYLOG EVENTS statement.
When multiple replication channels exist on this slave and no channel name is specified through FOR CHANNEL clause this function errors out and exits.
thd | Pointer to THD object for the client thread executing the statement. |
false | success |
true | failure |
bool operator! | ( | Relay_log_info::enum_priv_checks_status | status | ) |
Negation operator for enum_priv_checks_status
, to facilitate validation against SUCCESS
.
To test for error status, use the !!
idiom.
status | the status code to check against SUCCESS |
SUCCESS
and false otherwise. bool operator! | ( | Relay_log_info::enum_require_row_status | status | ) |
Negation operator for enum_require_row_status
, to facilitate validation against SUCCESS
.
To test for error status, use the !!
idiom.
status | the status code to check against SUCCESS |
SUCCESS
and false otherwise.