MCPcopy Create free account
hub / github.com/ByConity/ByConity / update

Method update

src/Core/MySQL/MySQLReplication.cpp:850–894  ·  view source on GitHub ↗

Update binlog name/position/gtid based on the event type.

Source from the content-addressed store, hash-verified

848
849 /// Update binlog name/position/gtid based on the event type.
850 void Position::update(BinlogEventPtr event)
851 {
852 switch (event->header.type)
853 {
854 case FORMAT_DESCRIPTION_EVENT: {
855 binlog_pos = event->header.log_pos;
856 break;
857 }
858 case QUERY_EVENT: {
859 auto query = std::static_pointer_cast<QueryEvent>(event);
860 if (query->transaction_complete && pending_gtid)
861 {
862 gtid_sets.update(*pending_gtid);
863 pending_gtid.reset();
864 }
865 binlog_pos = event->header.log_pos;
866 break;
867 }
868 case XID_EVENT: {
869 if (pending_gtid)
870 {
871 gtid_sets.update(*pending_gtid);
872 pending_gtid.reset();
873 }
874 binlog_pos = event->header.log_pos;
875 break;
876 }
877 case ROTATE_EVENT: {
878 auto rotate = std::static_pointer_cast<RotateEvent>(event);
879 binlog_name = rotate->next_binlog;
880 binlog_pos = event->header.log_pos;
881 break;
882 }
883 case GTID_EVENT: {
884 if (pending_gtid)
885 gtid_sets.update(*pending_gtid);
886 auto gtid_event = std::static_pointer_cast<GTIDEvent>(event);
887 binlog_pos = event->header.log_pos;
888 gtid_sets.update(gtid_event->gtid);
889 break;
890 }
891 default:
892 throw ReplicationError("Position update with unsupported event", ErrorCodes::LOGICAL_ERROR);
893 }
894 }
895
896 void Position::update(UInt64 binlog_pos_, const String & binlog_name_, const String & gtid_sets_)
897 {

Callers 1

readPayloadImplMethod · 0.45

Calls 3

ReplicationErrorClass · 0.85
resetMethod · 0.45
parseMethod · 0.45

Tested by

no test coverage detected