MySQL 8.0.37
Source Code Documentation
replication.h
Go to the documentation of this file.
1/* Copyright (c) 2008, 2024, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is designed to work with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have either included with
13 the program or referenced in the documentation.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License, version 2.0, for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24#ifndef REPLICATION_H
25#define REPLICATION_H
26
27#include "my_thread_local.h" // my_thread_id
28#include "mysql/psi/mysql_thread.h" // mysql_mutex_t
29#include "rpl_context.h"
30#include "sql/handler.h" // enum_tx_isolation
31
32struct MYSQL;
33
34#ifdef __cplusplus
35class THD;
36#define MYSQL_THD THD *
37#else
38#define MYSQL_THD void *
39#endif
40
41#ifdef __cplusplus
42extern "C" {
43#endif
44
45/**
46 Struct to share server ssl variables
47*/
49 char *ssl_ca;
53 char *ssl_cert;
55 char *ssl_key;
56 char *ssl_crl;
58 unsigned int ssl_fips_mode;
59
60 void init();
61
62 void deinit();
63};
64
65/**
66 Transaction observer flags.
67*/
69 /** Transaction is a real transaction */
71};
72
73/**
74 This represents table metadata involved in a transaction
75 */
76typedef struct Trans_table_info {
77 const char *table_name;
79 /// The db_type of the storage engine used by the table
81 /// information to store if the table has foreign key with 'CASCADE' clause.
84
85/**
86 This represents some of the context in which a transaction is running
87 It summarizes all necessary requirements for Group Replication to work.
88
89 These requirements might be extracted in two different moments in time, and,
90 as such, with different contexts:
91 - Startup verifications, that are extracted when Group Replication starts,
92 and typically from global vars.
93 - Runtime verifications, that are extracted when a transaction is running. It
94 it typically from session THD vars or from mutable global vars.
95
96 Please refer to the place where information is extracted for more details
97 about it.
98 */
99typedef struct Trans_context_info {
101 ulong gtid_mode; // enum values in Gtid_mode::value_type
103 ulong binlog_checksum_options; // enum values in enum
104 // enum_binlog_checksum_alg
105 ulong binlog_format; // enum values in enum enum_binlog_format
106 // enum values in enum_transaction_write_set_hashing_algorithm
108 ulong mi_repository_type; // enum values in enum_info_repository
109 ulong rli_repository_type; // enum values in enum_info_repository
110 // enum values in enum_mts_parallel_type
114 enum_tx_isolation tx_isolation; // enum values in enum_tx_isolation
118
119/**
120 This represents the GTID context of the transaction.
121 */
122typedef struct Trans_gtid_info {
123 ulong type; // enum values in enum_gtid_type
124 int sidno; // transaction sidno
125 long long int gno; // transaction gno
127
129/**
130 Transaction observer parameter
131*/
132typedef struct Trans_param {
134 const char *server_uuid;
137
138 /*
139 The latest binary log file name and position written by current
140 transaction, if binary log is disabled or no log event has been
141 written into binary log file by current transaction (events
142 written into transaction log cache are not counted), these two
143 member will be zero.
144 */
145 const char *log_file;
147
148 /*
149 Transaction GTID information.
150 */
152
153 /*
154 Set on before_commit hook.
155 */
159 /*
160 The flag designates the transaction is a DDL contained is
161 the transactional cache.
162 */
164
165 /*
166 This is the list of tables that are involved in this transaction and its
167 information
168 */
171
172 /*
173 Context information about system variables in the transaction
174 */
176
177 /// pointer to the status var original_commit_timestamp
178 unsigned long long *original_commit_timestamp;
179
180 /** Replication channel info associated to this transaction/THD */
182
183 /** contains the session value of group_replication_consistency */
185
186 /** value of session wait_timeout, timeout to hold transaction */
188
189 /// pointer to original_server_version
191
192 /// pointer to immediate_server_version
194
195 /*
196 Flag to identify a 'CREATE TABLE ... AS SELECT'.
197 */
200
201/**
202 Transaction observer parameter initialization.
203*/
204#define TRANS_PARAM_ZERO(trans_param_obj) \
205 memset(&trans_param_obj, 0, sizeof(Trans_param));
206
207typedef int (*before_dml_t)(Trans_param *param, int &out_val);
208
209/**
210 This callback is called before transaction commit
211
212 This callback is called right before write binlog cache to
213 binary log.
214
215 @param param The parameter for transaction observers
216
217 @retval 0 Success
218 @retval 1 Failure
219*/
220typedef int (*before_commit_t)(Trans_param *param);
221
222/**
223 This callback is called before transaction rollback
224
225 This callback is called before rollback to storage engines.
226
227 @param param The parameter for transaction observers
228
229 @retval 0 Success
230 @retval 1 Failure
231*/
232typedef int (*before_rollback_t)(Trans_param *param);
233
234/**
235 This callback is called after transaction commit
236
237 This callback is called right after commit to storage engines for
238 transactional tables.
239
240 For non-transactional tables, this is called at the end of the
241 statement, before sending statement status, if the statement
242 succeeded.
243
244 @note The return value is currently ignored by the server.
245
246 @param param The parameter for transaction observers
247
248 @retval 0 Success
249 @retval 1 Failure
250*/
251typedef int (*after_commit_t)(Trans_param *param);
252
253/**
254 This callback is called after transaction rollback
255
256 This callback is called right after rollback to storage engines
257 for transactional tables.
258
259 For non-transactional tables, this is called at the end of the
260 statement, before sending statement status, if the statement
261 failed.
262
263 @note The return value is currently ignored by the server.
264
265 @param param The parameter for transaction observers
266
267 @retval 0 Success
268 @retval 1 Failure
269*/
270typedef int (*after_rollback_t)(Trans_param *param);
271
272/**
273 This callback is called before a sql command is executed.
274
275 @param param The parameter for transaction observers
276 @param out_val Return value from observer execution
277
278 @retval 0 Success
279 @retval 1 Failure
280*/
281typedef int (*begin_t)(Trans_param *param, int &out_val);
282
283/**
284 Observes and extends transaction execution
285*/
286typedef struct Trans_observer {
288
296
297/**
298 Binlog storage flags
299*/
301 /** Binary log was sync:ed */
304
305typedef struct Server_state_param {
308
309/**
310 This is called just before the server is ready to accept the client
311 connections to the Server/Node. It marks the possible point where the
312 server can be said to be ready to serve client queries.
313
314 @param[in] param Observer common parameter
315
316 @retval 0 Success
317 @retval >0 Failure
318*/
320
321/**
322 This callback is called before the start of the recovery
323
324 @param[in] param Observer common parameter
325
326 @retval 0 Success
327 @retval >0 Failure
328*/
330
331/**
332 This callback is called after the end of the engine recovery.
333
334 This is called before the start of the recovery procedure ie.
335 the engine recovery.
336
337 @param[in] param Observer common parameter
338
339 @retval 0 Success
340 @retval >0 Failure
341*/
343
344/**
345 This callback is called after the end of the recovery procedure.
346
347 @param[in] param Observer common parameter
348
349 @retval 0 Success
350 @retval >0 Failure
351*/
353
354/**
355 This callback is called before the start of the shutdown procedure.
356 Can be useful to initiate some cleanup operations in some cases.
357
358 @param[in] param Observer common parameter
359
360 @retval 0 Success
361 @retval >0 Failure
362*/
364
365/**
366 This callback is called after the end of the shutdown procedure.
367 Can be used as a checkpoint of the proper cleanup operations in some cases.
368
369 @param[in] param Observer common parameter
370
371 @retval 0 Success
372 @retval >0 Failure
373*/
375
376/**
377 This is called just after an upgrade from MySQL 5.7 populates the data
378 dictionary for the first time.
379
380 @param[in] param Observer common parameter
381
382 @retval 0 Success
383 @retval >0 Failure
384*/
386
387/**
388 Observer server state
389 */
390typedef struct Server_state_observer {
392
401
402/**
403 Binlog storage observer parameters
404 */
405typedef struct Binlog_storage_param {
408
409/**
410 This callback is called after binlog has been flushed
411
412 This callback is called after cached events have been flushed to
413 binary log file but not yet synced.
414
415 @param param Observer common parameter
416 @param log_file Binlog file name been updated
417 @param log_pos Binlog position after update
418
419 @retval 0 Success
420 @retval 1 Failure
421*/
422typedef int (*after_flush_t)(Binlog_storage_param *param, const char *log_file,
423 my_off_t log_pos);
424typedef int (*after_sync_t)(Binlog_storage_param *param, const char *log_file,
425 my_off_t log_pos);
426
427/**
428 Observe binlog logging storage
429*/
432
436
437/**
438 Replication binlog transmitter (binlog dump) observer parameter.
439*/
440typedef struct Binlog_transmit_param {
443 /* Let us keep 1-16 as output flags and 17-32 as input flags */
444 static const uint32 F_OBSERVE = 1;
445 static const uint32 F_DONT_OBSERVE = 2;
446
449 /**
450 If F_OBSERVE is set by any plugin, then it should observe binlog
451 transmission, even F_DONT_OBSERVE is set by some plugins.
452
453 If both F_OBSERVE and F_DONT_OBSERVE are not set, then it is an old
454 plugin. In this case, it should always observe binlog transmission.
455 */
457 return (flags & F_OBSERVE) || !(flags & F_DONT_OBSERVE);
458 }
460
461/**
462 This callback is called when binlog dumping starts
463
464 @param param Observer common parameter
465 @param log_file Binlog file name to transmit from
466 @param log_pos Binlog position to transmit from
467
468 @retval 0 Success
469 @retval 1 Failure
470*/
472 const char *log_file, my_off_t log_pos);
473
474/**
475 This callback is called when binlog dumping stops
476
477 @param param Observer common parameter
478
479 @retval 0 Success
480 @retval 1 Failure
481*/
483
484/**
485 This callback is called to reserve bytes in packet header for event
486 transmission
487
488 This callback is called when resetting transmit packet header to
489 reserve bytes for this observer in packet header.
490
491 The @a header buffer is allocated by the server code, and @a size
492 is the size of the header buffer. Each observer can only reserve
493 a maximum size of @a size in the header.
494
495 @param param Observer common parameter
496 @param header Pointer of the header buffer
497 @param size Size of the header buffer
498 @param len Header length reserved by this observer
499
500 @retval 0 Success
501 @retval 1 Failure
502*/
504 unsigned char *header, unsigned long size,
505 unsigned long *len);
506
507/**
508 This callback is called before sending an event packet to slave
509
510 @param param Observer common parameter
511 @param packet Binlog event packet to send
512 @param len Length of the event packet
513 @param log_file Binlog file name of the event packet to send
514 @param log_pos Binlog position of the event packet to send
515
516 @retval 0 Success
517 @retval 1 Failure
518*/
520 unsigned char *packet, unsigned long len,
521 const char *log_file, my_off_t log_pos);
522
523/**
524 This callback is called after an event packet is sent to the
525 slave or is skipped.
526
527 @param param Observer common parameter
528 @param event_buf Binlog event packet buffer sent
529 @param len length of the event packet buffer
530 @param skipped_log_file Binlog file name of the event that
531 was skipped in the master. This is
532 null if the position was not skipped
533 @param skipped_log_pos Binlog position of the event that
534 was skipped in the master. 0 if not
535 skipped
536 @retval 0 Success
537 @retval 1 Failure
538*/
540 const char *event_buf, unsigned long len,
541 const char *skipped_log_file,
542 my_off_t skipped_log_pos);
543
544/**
545 This callback is called after resetting master status
546
547 This is called when executing the command RESET MASTER, and is
548 used to reset status variables added by observers.
549
550 @param param Observer common parameter
551
552 @retval 0 Success
553 @retval 1 Failure
554*/
556
557/**
558 Observe and extends the binlog dumping thread.
559*/
562
570
571/**
572 Binlog relay IO flags
573*/
575 /** Binary relay log was sync:ed */
578
579/**
580 Replication binlog relay IO observer parameter
581*/
582typedef struct Binlog_relay_IO_param {
585
586 /* Channel name */
588
589 /* Master host, user and port */
590 char *host;
591 char *user;
592 unsigned int port;
593
596
597 MYSQL *mysql; /* the connection to master */
598
601
602/**
603 This callback is called when slave IO thread starts
604
605 @param param Observer common parameter
606
607 @retval 0 Success
608 @retval 1 Failure
609*/
611
612/**
613 This callback is called when slave IO thread stops
614
615 @param param Observer common parameter
616
617 @retval 0 Success
618 @retval 1 Failure
619*/
621
622/**
623 This callback is called when a relay log consumer thread starts
624
625 @param param Observer common parameter
626
627 @retval 0 Success
628 @retval 1 Failure
629*/
631
632/**
633 This callback is called when a relay log consumer thread stops
634
635 @param param Observer common parameter
636 @param aborted thread aborted or exited on error
637
638 @retval 0 Success
639 @retval 1 Failure
640*/
641typedef int (*applier_stop_t)(Binlog_relay_IO_param *param, bool aborted);
642
643/**
644 This callback is called before slave requesting binlog transmission from
645 master
646
647 This is called before slave issuing BINLOG_DUMP command to master
648 to request binlog.
649
650 @param param Observer common parameter
651 @param flags binlog dump flags
652
653 @retval 0 Success
654 @retval 1 Failure
655*/
657 uint32 flags);
658
659/**
660 This callback is called after read an event packet from master
661
662 @param param Observer common parameter
663 @param packet The event packet read from master
664 @param len Length of the event packet read from master
665 @param event_buf The event packet return after process
666 @param event_len The length of event packet return after process
667
668 @retval 0 Success
669 @retval 1 Failure
670*/
672 const char *packet, unsigned long len,
673 const char **event_buf,
674 unsigned long *event_len);
675
676/**
677 This callback is called after written an event packet to relay log
678
679 @param param Observer common parameter
680 @param event_buf Event packet written to relay log
681 @param event_len Length of the event packet written to relay log
682 @param flags flags for relay log
683
684 @retval 0 Success
685 @retval 1 Failure
686*/
688 const char *event_buf,
689 unsigned long event_len, uint32 flags);
690
691/**
692 This callback is called after reset slave relay log IO status
693
694 @param param Observer common parameter
695
696 @retval 0 Success
697 @retval 1 Failure
698*/
700
701/**
702 This callback is called before event gets applied
703
704 @param param Observer common parameter
705 @param trans_param The parameter for transaction observers
706 @param out Return value from observer execution to help validate event
707 according to observer requirement.
708
709 @retval 0 Success
710 @retval 1 Failure
711*/
713 Trans_param *trans_param, int &out);
714
715/**
716 Observes and extends the service of slave IO thread.
717*/
720
731
732/**
733 Register a transaction observer
734
735 @param observer The transaction observer to register
736 @param p pointer to the internal plugin structure
737
738 @retval 0 Success
739 @retval 1 Observer already exists
740*/
741int register_trans_observer(Trans_observer *observer, void *p);
742
743/**
744 Unregister a transaction observer
745
746 @param observer The transaction observer to unregister
747 @param p pointer to the internal plugin structure
748
749 @retval 0 Success
750 @retval 1 Observer not exists
751*/
752int unregister_trans_observer(Trans_observer *observer, void *p);
753
754/**
755 Register a binlog storage observer
756
757 @param observer The binlog storage observer to register
758 @param p pointer to the internal plugin structure
759
760 @retval 0 Success
761 @retval 1 Observer already exists
762*/
764 void *p);
765
766/**
767 Unregister a binlog storage observer
768
769 @param observer The binlog storage observer to unregister
770 @param p pointer to the internal plugin structure
771
772 @retval 0 Success
773 @retval 1 Observer not exists
774*/
776 void *p);
777
778/**
779 Register a binlog transmit observer
780
781 @param observer The binlog transmit observer to register
782 @param p pointer to the internal plugin structure
783
784 @retval 0 Success
785 @retval 1 Observer already exists
786*/
788 void *p);
789
790/**
791 Unregister a binlog transmit observer
792
793 @param observer The binlog transmit observer to unregister
794 @param p pointer to the internal plugin structure
795
796 @retval 0 Success
797 @retval 1 Observer not exists
798*/
800 void *p);
801
802/**
803 Register a server state observer
804
805 @param observer The server state observer to register
806 @param p pointer to the internal plugin structure
807
808 @retval 0 Success
809 @retval 1 Observer already exists
810*/
812
813/**
814 Unregister a server state observer
815
816 @param observer The server state observer to unregister
817 @param p pointer to the internal plugin structure
818
819 @retval 0 Success
820 @retval 1 Observer not exists
821*/
823
824/**
825 Register a binlog relay IO (slave IO thread) observer
826
827 @param observer The binlog relay IO observer to register
828 @param p pointer to the internal plugin structure
829
830 @retval 0 Success
831 @retval 1 Observer already exists
832*/
834 void *p);
835
836/**
837 Unregister a binlog relay IO (slave IO thread) observer
838
839 @param observer The binlog relay IO observer to unregister
840 @param p pointer to the internal plugin structure
841
842 @retval 0 Success
843 @retval 1 Observer not exists
844*/
846 void *p);
847
848/**
849 Set thread entering a condition
850
851 This function should be called before putting a thread to wait for
852 a condition. @p mutex should be held before calling this
853 function. After being waken up, @c thd_exit_cond should be called.
854
855 @param opaque_thd The thread entering the condition, NULL means current
856 thread
857 @param cond The condition the thread is going to wait for
858 @param mutex The mutex associated with the condition, this must be
859 held before call this function
860 @param stage The new process message for the thread
861 @param old_stage The old process message for the thread
862 @param src_function The caller source function name
863 @param src_file The caller source file name
864 @param src_line The caller source line number
865*/
866void thd_enter_cond(void *opaque_thd, mysql_cond_t *cond, mysql_mutex_t *mutex,
867 const PSI_stage_info *stage, PSI_stage_info *old_stage,
868 const char *src_function, const char *src_file,
869 int src_line);
870
871#define THD_ENTER_COND(P1, P2, P3, P4, P5) \
872 thd_enter_cond(P1, P2, P3, P4, P5, __func__, __FILE__, __LINE__)
873
874/**
875 Set thread leaving a condition
876
877 This function should be called after a thread being waken up for a
878 condition.
879
880 @param opaque_thd The thread entering the condition, NULL means current
881 thread
882 @param stage The process message, usually this should be the old process
883 message before calling @c thd_enter_cond
884 @param src_function The caller source function name
885 @param src_file The caller source file name
886 @param src_line The caller source line number
887*/
888void thd_exit_cond(void *opaque_thd, const PSI_stage_info *stage,
889 const char *src_function, const char *src_file,
890 int src_line);
891
892#define THD_EXIT_COND(P1, P2) \
893 thd_exit_cond(P1, P2, __func__, __FILE__, __LINE__)
894
895/**
896 Get the value of user variable as an integer.
897
898 This function will return the value of variable @a name as an
899 integer. If the original value of the variable is not an integer,
900 the value will be converted into an integer.
901
902 @param name user variable name
903 @param value pointer to return the value
904 @param null_value if not NULL, the function will set it to true if
905 the value of variable is null, set to false if not
906
907 @retval 0 Success
908 @retval 1 Variable not found
909*/
910int get_user_var_int(const char *name, long long int *value, int *null_value);
911
912/**
913 Get the value of user variable as a double precision float number.
914
915 This function will return the value of variable @a name as real
916 number. If the original value of the variable is not a real number,
917 the value will be converted into a real number.
918
919 @param name user variable name
920 @param value pointer to return the value
921 @param null_value if not NULL, the function will set it to true if
922 the value of variable is null, set to false if not
923
924 @retval 0 Success
925 @retval 1 Variable not found
926*/
927int get_user_var_real(const char *name, double *value, int *null_value);
928
929/**
930 Get the value of user variable as a string.
931
932 This function will return the value of variable @a name as
933 string. If the original value of the variable is not a string,
934 the value will be converted into a string.
935
936 @param name user variable name
937 @param value pointer to the value buffer
938 @param len length of the value buffer
939 @param precision precision of the value if it is a float number
940 @param null_value if not NULL, the function will set it to true if
941 the value of variable is null, set to false if not
942
943 @retval 0 Success
944 @retval 1 Variable not found
945*/
946int get_user_var_str(const char *name, char *value, size_t len,
947 unsigned int precision, int *null_value);
948
949#ifdef __cplusplus
950}
951#endif
952#endif /* REPLICATION_H */
Byte container that provides a storage for serializing session binlog events.
Definition: binlog_ostream.h:174
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:34
const char * p
Definition: ctype-mb.cc:1237
static int flags[50]
Definition: hp_test1.cc:40
Instrumentation helpers for mysys threads.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
ulonglong my_off_t
Definition: my_inttypes.h:72
uint32_t uint32
Definition: my_inttypes.h:67
uint32 my_thread_id
Definition: my_thread_local.h:34
Logfile log_file
Definition: mysqltest.cc:263
int(* after_commit_t)(Trans_param *param)
This callback is called after transaction commit.
Definition: replication.h:251
int(* after_dd_upgrade_t)(Server_state_param *param)
This is called just after an upgrade from MySQL 5.7 populates the data dictionary for the first time.
Definition: replication.h:385
struct Server_state_observer Server_state_observer
Observer server state.
int(* applier_start_t)(Binlog_relay_IO_param *param)
This callback is called when a relay log consumer thread starts.
Definition: replication.h:630
int(* after_send_event_t)(Binlog_transmit_param *param, const char *event_buf, unsigned long len, const char *skipped_log_file, my_off_t skipped_log_pos)
This callback is called after an event packet is sent to the slave or is skipped.
Definition: replication.h:539
int(* thread_stop_t)(Binlog_relay_IO_param *param)
This callback is called when slave IO thread stops.
Definition: replication.h:620
int(* after_reset_slave_t)(Binlog_relay_IO_param *param)
This callback is called after reset slave relay log IO status.
Definition: replication.h:699
int(* thread_start_t)(Binlog_relay_IO_param *param)
This callback is called when slave IO thread starts.
Definition: replication.h:610
struct Trans_context_info Trans_context_info
This represents some of the context in which a transaction is running It summarizes all necessary req...
struct Trans_param Trans_param
Transaction observer parameter.
Binlog_storage_flags
Binlog storage flags.
Definition: replication.h:300
@ BINLOG_STORAGE_IS_SYNCED
Binary log was sync:ed.
Definition: replication.h:302
int register_binlog_relay_io_observer(Binlog_relay_IO_observer *observer, void *p)
Register a binlog relay IO (slave IO thread) observer.
Definition: rpl_handler.cc:1329
Binlog_relay_IO_flags
Binlog relay IO flags.
Definition: replication.h:574
@ BINLOG_RELAY_IS_SYNCED
Binary relay log was sync:ed.
Definition: replication.h:576
int register_server_state_observer(Server_state_observer *observer, void *p)
Register a server state observer.
Definition: rpl_handler.cc:1305
int get_user_var_str(const char *name, char *value, size_t len, unsigned int precision, int *null_value)
Get the value of user variable as a string.
Definition: rpl_handler.cc:332
int(* before_request_transmit_t)(Binlog_relay_IO_param *param, uint32 flags)
This callback is called before slave requesting binlog transmission from master.
Definition: replication.h:656
void thd_exit_cond(void *opaque_thd, const PSI_stage_info *stage, const char *src_function, const char *src_file, int src_line)
Set thread leaving a condition.
Definition: sql_thd_internal_api.cc:201
int unregister_binlog_storage_observer(Binlog_storage_observer *observer, void *p)
Unregister a binlog storage observer.
Definition: rpl_handler.cc:1300
struct Server_state_param Server_state_param
int(* begin_t)(Trans_param *param, int &out_val)
This callback is called before a sql command is executed.
Definition: replication.h:281
struct Trans_table_info Trans_table_info
This represents table metadata involved in a transaction.
int(* after_reset_master_t)(Binlog_transmit_param *param)
This callback is called after resetting master status.
Definition: replication.h:555
int register_trans_observer(Trans_observer *observer, void *p)
Register a transaction observer.
Definition: rpl_handler.cc:1284
int get_user_var_real(const char *name, double *value, int *null_value)
Get the value of user variable as a double precision float number.
Definition: rpl_handler.cc:314
int register_binlog_storage_observer(Binlog_storage_observer *observer, void *p)
Register a binlog storage observer.
Definition: rpl_handler.cc:1292
int(* transmit_stop_t)(Binlog_transmit_param *param)
This callback is called when binlog dumping stops.
Definition: replication.h:482
struct Binlog_storage_observer Binlog_storage_observer
Observe binlog logging storage.
int(* after_recovery_t)(Server_state_param *param)
This callback is called after the end of the recovery procedure.
Definition: replication.h:352
int(* after_server_shutdown_t)(Server_state_param *param)
This callback is called after the end of the shutdown procedure.
Definition: replication.h:374
int(* before_recovery_t)(Server_state_param *param)
This callback is called before the start of the recovery.
Definition: replication.h:329
int(* before_commit_t)(Trans_param *param)
This callback is called before transaction commit.
Definition: replication.h:220
int(* after_sync_t)(Binlog_storage_param *param, const char *log_file, my_off_t log_pos)
Definition: replication.h:424
struct Binlog_relay_IO_observer Binlog_relay_IO_observer
Observes and extends the service of slave IO thread.
int(* before_rollback_t)(Trans_param *param)
This callback is called before transaction rollback.
Definition: replication.h:232
int(* after_read_event_t)(Binlog_relay_IO_param *param, const char *packet, unsigned long len, const char **event_buf, unsigned long *event_len)
This callback is called after read an event packet from master.
Definition: replication.h:671
int unregister_binlog_transmit_observer(Binlog_transmit_observer *observer, void *p)
Unregister a binlog transmit observer.
Definition: rpl_handler.cc:1324
int(* applier_log_event_t)(Binlog_relay_IO_param *param, Trans_param *trans_param, int &out)
This callback is called before event gets applied.
Definition: replication.h:712
int unregister_binlog_relay_io_observer(Binlog_relay_IO_observer *observer, void *p)
Unregister a binlog relay IO (slave IO thread) observer.
Definition: rpl_handler.cc:1334
struct Binlog_storage_param Binlog_storage_param
Binlog storage observer parameters.
int(* before_dml_t)(Trans_param *param, int &out_val)
Definition: replication.h:207
void thd_enter_cond(void *opaque_thd, mysql_cond_t *cond, mysql_mutex_t *mutex, const PSI_stage_info *stage, PSI_stage_info *old_stage, const char *src_function, const char *src_file, int src_line)
Set thread entering a condition.
Definition: sql_thd_internal_api.cc:188
int(* before_server_shutdown_t)(Server_state_param *param)
This callback is called before the start of the shutdown procedure.
Definition: replication.h:363
int(* after_engine_recovery_t)(Server_state_param *param)
This callback is called after the end of the engine recovery.
Definition: replication.h:342
struct Trans_gtid_info Trans_gtid_info
This represents the GTID context of the transaction.
struct Trans_observer Trans_observer
Observes and extends transaction execution.
Trans_flags
Transaction observer flags.
Definition: replication.h:68
@ TRANS_IS_REAL_TRANS
Transaction is a real transaction.
Definition: replication.h:70
int(* before_handle_connection_t)(Server_state_param *param)
This is called just before the server is ready to accept the client connections to the Server/Node.
Definition: replication.h:319
int(* after_flush_t)(Binlog_storage_param *param, const char *log_file, my_off_t log_pos)
This callback is called after binlog has been flushed.
Definition: replication.h:422
struct Binlog_relay_IO_param Binlog_relay_IO_param
Replication binlog relay IO observer parameter.
int(* applier_stop_t)(Binlog_relay_IO_param *param, bool aborted)
This callback is called when a relay log consumer thread stops.
Definition: replication.h:641
int(* after_queue_event_t)(Binlog_relay_IO_param *param, const char *event_buf, unsigned long event_len, uint32 flags)
This callback is called after written an event packet to relay log.
Definition: replication.h:687
int register_binlog_transmit_observer(Binlog_transmit_observer *observer, void *p)
Register a binlog transmit observer.
Definition: rpl_handler.cc:1319
int unregister_trans_observer(Trans_observer *observer, void *p)
Unregister a transaction observer.
Definition: rpl_handler.cc:1288
int get_user_var_int(const char *name, long long int *value, int *null_value)
Get the value of user variable as an integer.
Definition: rpl_handler.cc:296
int(* after_rollback_t)(Trans_param *param)
This callback is called after transaction rollback.
Definition: replication.h:270
int(* transmit_start_t)(Binlog_transmit_param *param, const char *log_file, my_off_t log_pos)
This callback is called when binlog dumping starts.
Definition: replication.h:471
struct Binlog_transmit_param Binlog_transmit_param
Replication binlog transmitter (binlog dump) observer parameter.
int unregister_server_state_observer(Server_state_observer *observer, void *p)
Unregister a server state observer.
Definition: rpl_handler.cc:1313
int(* before_send_event_t)(Binlog_transmit_param *param, unsigned char *packet, unsigned long len, const char *log_file, my_off_t log_pos)
This callback is called before sending an event packet to slave.
Definition: replication.h:519
int(* reserve_header_t)(Binlog_transmit_param *param, unsigned char *header, unsigned long size, unsigned long *len)
This callback is called to reserve bytes in packet header for event transmission.
Definition: replication.h:503
struct Binlog_transmit_observer Binlog_transmit_observer
Observe and extends the binlog dumping thread.
enum_rpl_channel_type
Type of replication channel thread/transaction might be associated to.
Definition: rpl_context.h:49
enum_tx_isolation
Definition: handler.h:3028
case opt name
Definition: sslopt-case.h:33
Observes and extends the service of slave IO thread.
Definition: replication.h:718
applier_start_t applier_start
Definition: replication.h:723
applier_log_event_t applier_log_event
Definition: replication.h:729
after_read_event_t after_read_event
Definition: replication.h:726
after_reset_slave_t after_reset_slave
Definition: replication.h:728
thread_start_t thread_start
Definition: replication.h:721
before_request_transmit_t before_request_transmit
Definition: replication.h:725
after_queue_event_t after_queue_event
Definition: replication.h:727
uint32 len
Definition: replication.h:719
applier_stop_t applier_stop
Definition: replication.h:724
thread_stop_t thread_stop
Definition: replication.h:722
Replication binlog relay IO observer parameter.
Definition: replication.h:582
my_off_t master_log_pos
Definition: replication.h:595
unsigned int port
Definition: replication.h:592
bool source_connection_auto_failover
Definition: replication.h:599
char * channel_name
Definition: replication.h:587
char * host
Definition: replication.h:590
char * master_log_name
Definition: replication.h:594
char * user
Definition: replication.h:591
MYSQL * mysql
Definition: replication.h:597
uint32 server_id
Definition: replication.h:583
my_thread_id thread_id
Definition: replication.h:584
Observe binlog logging storage.
Definition: replication.h:430
uint32 len
Definition: replication.h:431
after_flush_t after_flush
Definition: replication.h:433
after_sync_t after_sync
Definition: replication.h:434
Binlog storage observer parameters.
Definition: replication.h:405
uint32 server_id
Definition: replication.h:406
Observe and extends the binlog dumping thread.
Definition: replication.h:560
before_send_event_t before_send_event
Definition: replication.h:566
after_reset_master_t after_reset_master
Definition: replication.h:568
after_send_event_t after_send_event
Definition: replication.h:567
uint32 len
Definition: replication.h:561
transmit_start_t transmit_start
Definition: replication.h:563
reserve_header_t reserve_header
Definition: replication.h:565
transmit_stop_t transmit_stop
Definition: replication.h:564
Replication binlog transmitter (binlog dump) observer parameter.
Definition: replication.h:440
static const uint32 F_DONT_OBSERVE
Definition: replication.h:445
bool should_observe()
If F_OBSERVE is set by any plugin, then it should observe binlog transmission, even F_DONT_OBSERVE is...
Definition: replication.h:456
void set_observe_flag()
Definition: replication.h:447
static const uint32 F_OBSERVE
Definition: replication.h:444
void set_dont_observe_flag()
Definition: replication.h:448
uint32 server_id
Definition: replication.h:441
uint32 flags
Definition: replication.h:442
Definition: mysql.h:299
Stage instrument information.
Definition: psi_stage_bits.h:74
Observer server state.
Definition: replication.h:390
after_engine_recovery_t after_engine_recovery
Definition: replication.h:395
before_recovery_t before_recovery
Definition: replication.h:394
before_server_shutdown_t before_server_shutdown
Definition: replication.h:397
before_handle_connection_t before_handle_connection
Definition: replication.h:393
after_dd_upgrade_t after_dd_upgrade_from_57
Definition: replication.h:399
after_server_shutdown_t after_server_shutdown
Definition: replication.h:398
uint32 len
Definition: replication.h:391
after_recovery_t after_recovery
Definition: replication.h:396
Definition: replication.h:305
uint32 server_id
Definition: replication.h:306
This represents some of the context in which a transaction is running It summarizes all necessary req...
Definition: replication.h:99
ulong gtid_mode
Definition: replication.h:101
ulong rli_repository_type
Definition: replication.h:109
bool parallel_applier_preserve_commit_order
Definition: replication.h:113
bool log_replica_updates
Definition: replication.h:102
enum_tx_isolation tx_isolation
Definition: replication.h:114
ulong parallel_applier_workers
Definition: replication.h:112
ulong mi_repository_type
Definition: replication.h:108
ulong binlog_format
Definition: replication.h:105
ulong transaction_write_set_extraction
Definition: replication.h:107
bool default_table_encryption
Definition: replication.h:116
bool binlog_enabled
Definition: replication.h:100
ulong parallel_applier_type
Definition: replication.h:111
uint lower_case_table_names
Definition: replication.h:115
ulong binlog_checksum_options
Definition: replication.h:103
This represents the GTID context of the transaction.
Definition: replication.h:122
int sidno
Definition: replication.h:124
long long int gno
Definition: replication.h:125
ulong type
Definition: replication.h:123
Observes and extends transaction execution.
Definition: replication.h:286
before_commit_t before_commit
Definition: replication.h:290
begin_t begin
Definition: replication.h:294
before_dml_t before_dml
Definition: replication.h:289
before_rollback_t before_rollback
Definition: replication.h:291
after_commit_t after_commit
Definition: replication.h:292
uint32 len
Definition: replication.h:287
after_rollback_t after_rollback
Definition: replication.h:293
Transaction observer parameter.
Definition: replication.h:132
Binlog_cache_storage * trx_cache_log
Definition: replication.h:156
const char * server_uuid
Definition: replication.h:134
enum_rpl_channel_type rpl_channel_type
Replication channel info associated to this transaction/THD.
Definition: replication.h:181
uint32 server_id
Definition: replication.h:133
ulonglong cache_log_max_size
Definition: replication.h:158
my_off_t log_pos
Definition: replication.h:146
const char * log_file
Definition: replication.h:145
unsigned long long * original_commit_timestamp
pointer to the status var original_commit_timestamp
Definition: replication.h:178
Binlog_cache_storage * stmt_cache_log
Definition: replication.h:157
ulong group_replication_consistency
contains the session value of group_replication_consistency
Definition: replication.h:184
Trans_gtid_info gtid_info
Definition: replication.h:151
Trans_context_info trans_ctx_info
Definition: replication.h:175
my_thread_id thread_id
Definition: replication.h:135
uint32_t * immediate_server_version
pointer to immediate_server_version
Definition: replication.h:193
uint number_of_tables
Definition: replication.h:170
Trans_table_info * tables_info
Definition: replication.h:169
bool is_atomic_ddl
Definition: replication.h:163
uint32_t * original_server_version
pointer to original_server_version
Definition: replication.h:190
ulong hold_timeout
value of session wait_timeout, timeout to hold transaction
Definition: replication.h:187
bool is_create_table_as_query_block
Definition: replication.h:198
uint32 flags
Definition: replication.h:136
This represents table metadata involved in a transaction.
Definition: replication.h:76
int db_type
The db_type of the storage engine used by the table.
Definition: replication.h:80
bool has_cascade_foreign_key
information to store if the table has foreign key with 'CASCADE' clause.
Definition: replication.h:82
const char * table_name
Definition: replication.h:77
uint number_of_primary_keys
Definition: replication.h:78
An instrumented cond structure.
Definition: mysql_cond_bits.h:50
An instrumented mutex structure.
Definition: mysql_mutex_bits.h:50
Struct to share server ssl variables.
Definition: replication.h:48
char * ssl_crl
Definition: replication.h:56
char * tls_ciphersuites
Definition: replication.h:52
char * ssl_cert
Definition: replication.h:53
char * ssl_key
Definition: replication.h:55
char * tls_version
Definition: replication.h:51
void init()
Definition: rpl_group_replication.cc:73
void deinit()
Definition: rpl_group_replication.cc:86
char * ssl_capath
Definition: replication.h:50
char * ssl_ca
Definition: replication.h:49
char * ssl_cipher
Definition: replication.h:54
unsigned int ssl_fips_mode
Definition: replication.h:58
char * ssl_crlpath
Definition: replication.h:57
unsigned int uint
Definition: uca9-dump.cc:75