MySQL 9.0.0
Source Code Documentation
table_replication_applier_status_by_worker.h
Go to the documentation of this file.
1/*
2 Copyright (c) 2013, 2024, Oracle and/or its affiliates.
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License, version 2.0,
6 as published by the Free Software Foundation.
7
8 This program is designed to work with certain software (including
9 but not limited to OpenSSL) that is licensed under separate terms,
10 as designated in a particular file or component or in included license
11 documentation. The authors of MySQL hereby grant you an additional
12 permission to link the program and your derivative works with the
13 separately licensed software that they have either included with
14 the program or referenced in the documentation.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License, version 2.0, for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software
23 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
24
25#ifndef TABLE_REPLICATION_APPLIER_STATUS_BY_WORKER_H
26#define TABLE_REPLICATION_APPLIER_STATUS_BY_WORKER_H
27
28/**
29 @file storage/perfschema/table_replication_applier_status_by_worker.h
30 Table replication_applier_status_by_worker (declarations).
31*/
32
33#include <sys/types.h>
34
35#include "my_base.h"
36#include "my_inttypes.h"
37#include "sql/rpl_gtid.h"
38#include "sql/rpl_info.h" /*CHANNEL_NAME_LENGTH*/
39#include "sql/rpl_reporting.h"
42
43class Field;
44class Master_info;
45class Plugin_table;
46class Slave_worker;
47struct TABLE;
48struct THR_LOCK;
49struct mysql_mutex_t;
50
51/**
52 @addtogroup performance_schema_tables
53 @{
54*/
55
56#ifndef ENUM_RPL_YES_NO
57#define ENUM_RPL_YES_NO
58/** enumerated values for service_state of worker thread*/
60 PS_RPL_YES = 1, /* service_state= on */
61 PS_RPL_NO /* service_state= off */
62};
63#endif
64
65/*
66 A row in worker's table. The fields with string values have an additional
67 length field denoted by <field_name>_length.
68*/
72 /*
73 worker_id is added to the table because thread is killed at STOP REPLICA
74 but the status needs to show up, so worker_id is used as a permanent
75 identifier.
76 */
106};
107
108/**
109 Position in table replication_applier_status_by_worker.
110 Index 1 for replication channel.
111 Index 2 for worker:
112 - position [0] is for Single Thread Slave (Master_info)
113 - position [1] .. [N] is for Multi Thread Slave (Slave_worker)
114*/
117
118 inline void reset() {
119 m_index_1 = 0;
120 m_index_2 = 0;
121 }
122
123 inline bool has_more_channels(uint num) { return (m_index_1 < num); }
124
125 inline void next_channel() {
126 m_index_1++;
127 m_index_2 = 0;
128 }
129
130 inline void next_worker() { m_index_2++; }
131
132 inline void set_channel_after(
134 m_index_1 = other->m_index_1 + 1;
135 m_index_2 = 0;
136 }
137};
138
140 public:
143
145 PFS_engine_key *key_2)
146 : PFS_engine_index(key_1, key_2) {}
147
149
150 virtual bool match(Master_info *mi) = 0;
151 virtual bool match(Master_info *mi, Slave_worker *w) = 0;
152};
153
156 public:
159 m_key_1("CHANNEL_NAME"),
160 m_key_2("WORKER_ID") {}
161
163
164 bool match(Master_info *mi) override;
165 bool match(Master_info *mi, Slave_worker *w) override;
166
167 private:
170};
171
174 public:
177
179
180 bool match(Master_info *mi) override;
181 bool match(Master_info *mi, Slave_worker *w) override;
182
183 private:
185};
186
187/** Table PERFORMANCE_SCHEMA.replication_applier_status_by_worker */
190
191 private:
192 int make_row(Slave_worker *);
193 /*
194 Master_info to construct a row to display SQL Thread's status
195 information in STS mode
196 */
197 int make_row(Master_info *);
198 void populate_trx_info(Trx_monitoring_info const &applying_trx,
199 Trx_monitoring_info const &last_applied_trx);
200
201 /** Table share lock. */
203 /** Table definition. */
205
206 /** current row. */
208 /** Current position. */
210 /** Next position. */
212
213 protected:
214 /**
215 Read the current row values.
216 @param table Table handle
217 @param buf row buffer
218 @param fields Table fields
219 @param read_all true if all columns are read.
220 */
221
222 int read_row_values(TABLE *table, unsigned char *buf, Field **fields,
223 bool read_all) override;
224
226
227 public:
229
230 /** Table share. */
233 static ha_rows get_row_count();
234 void reset_position() override;
235
236 int rnd_next() override;
237 int rnd_pos(const void *pos) override;
238
239 int index_init(uint idx, bool sorted) override;
240 int index_next() override;
241
242 private:
244};
245
246/** @} */
247#endif
Definition: field.h:577
Definition: rpl_mi.h:87
Definition: pfs_engine_table.h:300
Definition: pfs_engine_table.h:268
An abstract PERFORMANCE_SCHEMA table.
Definition: pfs_engine_table.h:70
Definition: table_replication_applier_status_by_worker.h:155
PFS_index_rpl_applier_status_by_worker_by_channel()
Definition: table_replication_applier_status_by_worker.h:157
PFS_key_name m_key_1
Definition: table_replication_applier_status_by_worker.h:168
bool match(Master_info *mi) override
Definition: table_replication_applier_status_by_worker.cc:116
~PFS_index_rpl_applier_status_by_worker_by_channel() override=default
PFS_key_worker_id m_key_2
Definition: table_replication_applier_status_by_worker.h:169
Definition: table_replication_applier_status_by_worker.h:173
PFS_key_thread_id m_key
Definition: table_replication_applier_status_by_worker.h:184
~PFS_index_rpl_applier_status_by_worker_by_thread() override=default
bool match(Master_info *mi) override
Definition: table_replication_applier_status_by_worker.cc:163
PFS_index_rpl_applier_status_by_worker_by_thread()
Definition: table_replication_applier_status_by_worker.h:175
Definition: table_replication_applier_status_by_worker.h:139
~PFS_index_rpl_applier_status_by_worker() override=default
virtual bool match(Master_info *mi)=0
virtual bool match(Master_info *mi, Slave_worker *w)=0
PFS_index_rpl_applier_status_by_worker(PFS_engine_key *key)
Definition: table_replication_applier_status_by_worker.h:141
PFS_index_rpl_applier_status_by_worker(PFS_engine_key *key_1, PFS_engine_key *key_2)
Definition: table_replication_applier_status_by_worker.h:144
Definition: table_helper.h:1556
Definition: table_helper.h:1279
Definition: table_helper.h:1346
Class to hold information regarding a table to be created on behalf of a plugin.
Definition: plugin_table.h:40
Definition: rpl_rli_pdb.h:498
Table PERFORMANCE_SCHEMA.replication_applier_status_by_worker.
Definition: table_replication_applier_status_by_worker.h:188
pos_replication_applier_status_by_worker pos_t
Definition: table_replication_applier_status_by_worker.h:189
int rnd_next() override
Fetch the next row in this cursor.
Definition: table_replication_applier_status_by_worker.cc:243
static Plugin_table m_table_def
Table definition.
Definition: table_replication_applier_status_by_worker.h:204
static PFS_engine_table * create(PFS_engine_table_share *)
Definition: table_replication_applier_status_by_worker.cc:219
static THR_LOCK m_table_lock
Table share lock.
Definition: table_replication_applier_status_by_worker.h:202
PFS_index_rpl_applier_status_by_worker * m_opened_index
Definition: table_replication_applier_status_by_worker.h:243
static ha_rows get_row_count()
Definition: table_replication_applier_status_by_worker.cc:236
pos_t m_next_pos
Next position.
Definition: table_replication_applier_status_by_worker.h:211
int index_init(uint idx, bool sorted) override
Definition: table_replication_applier_status_by_worker.cc:329
void populate_trx_info(Trx_monitoring_info const &applying_trx, Trx_monitoring_info const &last_applied_trx)
Auxiliary function to populate the transaction information fields.
Definition: table_replication_applier_status_by_worker.cc:544
pos_t m_pos
Current position.
Definition: table_replication_applier_status_by_worker.h:209
st_row_worker m_row
current row.
Definition: table_replication_applier_status_by_worker.h:207
table_replication_applier_status_by_worker()
Definition: table_replication_applier_status_by_worker.cc:225
static PFS_engine_table_share m_share
Table share.
Definition: table_replication_applier_status_by_worker.h:231
void reset_position() override
Reset the cursor position to the beginning of the table.
Definition: table_replication_applier_status_by_worker.cc:231
int index_next() override
Find key in index, read record.
Definition: table_replication_applier_status_by_worker.cc:348
int make_row(Slave_worker *)
Definition: table_replication_applier_status_by_worker.cc:479
int rnd_pos(const void *pos) override
Fetch a row by position.
Definition: table_replication_applier_status_by_worker.cc:291
int read_row_values(TABLE *table, unsigned char *buf, Field **fields, bool read_all) override
Read the current row values.
Definition: table_replication_applier_status_by_worker.cc:572
@ PS_RPL_NO
Definition: table_replication_applier_status_by_worker.h:61
@ PS_RPL_YES
Definition: table_replication_applier_status_by_worker.h:60
This file includes constants used by all storage engines.
my_off_t ha_rows
Definition: my_base.h:1141
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
static PFS_engine_table_share_proxy table
Definition: pfs.cc:61
Definition: buf0block_hint.cc:30
Performance schema tables (declarations).
required string key
Definition: replication_asynchronous_connection_failover.proto:60
#define CHANNEL_NAME_LENGTH
Definition: rpl_info.h:41
#define MAX_SLAVE_ERRMSG
Maximum size of an error message from a slave thread.
Definition: rpl_reporting.h:42
static const int MAX_TEXT_LENGTH
The maximal length of the textual representation of a TSID, not including the terminating '\0'.
Definition: rpl_gtid.h:1137
Position of a double cursor, for iterations using 2 nested loops.
Definition: pfs_engine_table.h:601
uint m_index_1
Outer index.
Definition: pfs_engine_table.h:603
uint m_index_2
Current index within index_1.
Definition: pfs_engine_table.h:605
A PERFORMANCE_SCHEMA table share.
Definition: pfs_engine_table.h:358
Definition: table.h:1407
Definition: thr_lock.h:139
Structure to store the GTID and timing information.
Definition: rpl_gtid.h:1262
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:50
Position in table replication_applier_status_by_worker.
Definition: table_replication_applier_status_by_worker.h:115
void next_channel()
Definition: table_replication_applier_status_by_worker.h:125
bool has_more_channels(uint num)
Definition: table_replication_applier_status_by_worker.h:123
pos_replication_applier_status_by_worker()
Definition: table_replication_applier_status_by_worker.h:116
void set_channel_after(const pos_replication_applier_status_by_worker *other)
Definition: table_replication_applier_status_by_worker.h:132
void reset()
Definition: table_replication_applier_status_by_worker.h:118
void next_worker()
Definition: table_replication_applier_status_by_worker.h:130
Definition: table_replication_applier_status_by_worker.h:69
char channel_name[CHANNEL_NAME_LENGTH]
Definition: table_replication_applier_status_by_worker.h:70
ulonglong applying_trx_start_apply_timestamp
Definition: table_replication_applier_status_by_worker.h:95
ulonglong last_error_timestamp
Definition: table_replication_applier_status_by_worker.h:84
ulonglong last_applied_trx_immediate_commit_timestamp
Definition: table_replication_applier_status_by_worker.h:88
ulonglong applying_trx_last_retry_timestamp
Definition: table_replication_applier_status_by_worker.h:105
char applying_trx[Gtid::MAX_TEXT_LENGTH+1]
Definition: table_replication_applier_status_by_worker.h:91
char last_applied_trx_last_retry_err_msg[MAX_SLAVE_ERRMSG]
Definition: table_replication_applier_status_by_worker.h:98
char applying_trx_last_retry_err_msg[MAX_SLAVE_ERRMSG]
Definition: table_replication_applier_status_by_worker.h:103
ulonglong worker_id
Definition: table_replication_applier_status_by_worker.h:77
ulonglong thread_id
Definition: table_replication_applier_status_by_worker.h:78
uint last_applied_trx_length
Definition: table_replication_applier_status_by_worker.h:86
ulonglong last_applied_trx_last_retry_timestamp
Definition: table_replication_applier_status_by_worker.h:100
uint last_error_number
Definition: table_replication_applier_status_by_worker.h:81
ulong applying_trx_retries_count
Definition: table_replication_applier_status_by_worker.h:101
ulonglong last_applied_trx_end_apply_timestamp
Definition: table_replication_applier_status_by_worker.h:90
uint applying_trx_last_retry_err_number
Definition: table_replication_applier_status_by_worker.h:102
uint channel_name_length
Definition: table_replication_applier_status_by_worker.h:71
ulonglong last_applied_trx_start_apply_timestamp
Definition: table_replication_applier_status_by_worker.h:89
ulonglong last_applied_trx_original_commit_timestamp
Definition: table_replication_applier_status_by_worker.h:87
ulong last_applied_trx_retries_count
Definition: table_replication_applier_status_by_worker.h:96
uint applying_trx_last_retry_err_msg_length
Definition: table_replication_applier_status_by_worker.h:104
uint last_applied_trx_last_retry_err_msg_length
Definition: table_replication_applier_status_by_worker.h:99
uint applying_trx_length
Definition: table_replication_applier_status_by_worker.h:92
uint last_error_message_length
Definition: table_replication_applier_status_by_worker.h:83
char last_error_message[MAX_SLAVE_ERRMSG]
Definition: table_replication_applier_status_by_worker.h:82
uint last_applied_trx_last_retry_err_number
Definition: table_replication_applier_status_by_worker.h:97
ulonglong applying_trx_original_commit_timestamp
Definition: table_replication_applier_status_by_worker.h:93
ulonglong applying_trx_immediate_commit_timestamp
Definition: table_replication_applier_status_by_worker.h:94
enum_rpl_yes_no service_state
Definition: table_replication_applier_status_by_worker.h:80
uint thread_id_is_null
Definition: table_replication_applier_status_by_worker.h:79
char last_applied_trx[Gtid::MAX_TEXT_LENGTH+1]
Definition: table_replication_applier_status_by_worker.h:85
Helpers to implement a performance schema table.
enum_rpl_yes_no
Definition: table_replication_applier_configuration.h:50