-
Notifications
You must be signed in to change notification settings - Fork 1k
/
Copy pathconst.go
263 lines (245 loc) · 7.46 KB
/
const.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
package replication
const (
// we only support MySQL 5.0.0+ binlog format, maybe???
MinBinlogVersion = 4
)
var (
// binlog header [ fe `bin` ]
BinLogFileHeader = []byte{0xfe, 0x62, 0x69, 0x6e}
SemiSyncIndicator byte = 0xef
)
const (
LOG_EVENT_BINLOG_IN_USE_F uint16 = 0x0001
LOG_EVENT_FORCED_ROTATE_F uint16 = 0x0002
LOG_EVENT_THREAD_SPECIFIC_F uint16 = 0x0004
LOG_EVENT_SUPPRESS_USE_F uint16 = 0x0008
LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F uint16 = 0x0010
LOG_EVENT_ARTIFICIAL_F uint16 = 0x0020
LOG_EVENT_RELAY_LOG_F uint16 = 0x0040
LOG_EVENT_IGNORABLE_F uint16 = 0x0080
LOG_EVENT_NO_FILTER_F uint16 = 0x0100
LOG_EVENT_MTS_ISOLATE_F uint16 = 0x0200
)
const (
BINLOG_DUMP_NEVER_STOP uint16 = 0x00
BINLOG_DUMP_NON_BLOCK uint16 = 0x01
BINLOG_SEND_ANNOTATE_ROWS_EVENT uint16 = 0x02
BINLOG_THROUGH_POSITION uint16 = 0x02
BINLOG_THROUGH_GTID uint16 = 0x04
)
const (
BINLOG_ROW_IMAGE_FULL = "FULL"
BINLOG_ROW_IMAGE_MINIMAL = "MINIMAL"
BINLOG_ROW_IMAGE_NOBLOB = "NOBLOB"
)
const (
BINLOG_MARIADB_FL_STANDALONE = 1 << iota /*1 - FL_STANDALONE is set when there is no terminating COMMIT event*/
BINLOG_MARIADB_FL_GROUP_COMMIT_ID /*2 - FL_GROUP_COMMIT_ID is set when event group is part of a group commit on the master. Groups with same commit_id are part of the same group commit.*/
BINLOG_MARIADB_FL_TRANSACTIONAL /*4 - FL_TRANSACTIONAL is set for an event group that can be safely rolled back (no MyISAM, eg.).*/
BINLOG_MARIADB_FL_ALLOW_PARALLEL /*8 - FL_ALLOW_PARALLEL reflects the (negation of the) value of @@SESSION.skip_parallel_replication at the time of commit*/
BINLOG_MARIADB_FL_WAITED /*16 = FL_WAITED is set if a row lock wait (or other wait) is detected during the execution of the transaction*/
BINLOG_MARIADB_FL_DDL /*32 - FL_DDL is set for event group containing DDL*/
)
// See `Log_event_type` in binlog_event.h
// https://github.com/mysql/mysql-server/blob/trunk/libs/mysql/binlog/event/binlog_event.h
type EventType byte
const (
UNKNOWN_EVENT EventType = iota
START_EVENT_V3
QUERY_EVENT
STOP_EVENT
ROTATE_EVENT
INTVAR_EVENT
LOAD_EVENT
SLAVE_EVENT
CREATE_FILE_EVENT
APPEND_BLOCK_EVENT
EXEC_LOAD_EVENT
DELETE_FILE_EVENT
NEW_LOAD_EVENT
RAND_EVENT
USER_VAR_EVENT
FORMAT_DESCRIPTION_EVENT
XID_EVENT
BEGIN_LOAD_QUERY_EVENT
EXECUTE_LOAD_QUERY_EVENT
TABLE_MAP_EVENT
WRITE_ROWS_EVENTv0
UPDATE_ROWS_EVENTv0
DELETE_ROWS_EVENTv0
WRITE_ROWS_EVENTv1
UPDATE_ROWS_EVENTv1
DELETE_ROWS_EVENTv1
INCIDENT_EVENT
HEARTBEAT_EVENT
IGNORABLE_EVENT
ROWS_QUERY_EVENT
WRITE_ROWS_EVENTv2
UPDATE_ROWS_EVENTv2
DELETE_ROWS_EVENTv2
GTID_EVENT
ANONYMOUS_GTID_EVENT
PREVIOUS_GTIDS_EVENT
TRANSACTION_CONTEXT_EVENT
VIEW_CHANGE_EVENT
XA_PREPARE_LOG_EVENT
PARTIAL_UPDATE_ROWS_EVENT
TRANSACTION_PAYLOAD_EVENT
HEARTBEAT_LOG_EVENT_V2
GTID_TAGGED_LOG_EVENT
)
const (
// MariaDB event starts from 160
MARIADB_ANNOTATE_ROWS_EVENT EventType = 160 + iota
MARIADB_BINLOG_CHECKPOINT_EVENT
MARIADB_GTID_EVENT
MARIADB_GTID_LIST_EVENT
MARIADB_START_ENCRYPTION_EVENT
MARIADB_QUERY_COMPRESSED_EVENT
MARIADB_WRITE_ROWS_COMPRESSED_EVENT_V1
MARIADB_UPDATE_ROWS_COMPRESSED_EVENT_V1
MARIADB_DELETE_ROWS_COMPRESSED_EVENT_V1
)
func (e EventType) String() string {
switch e {
case UNKNOWN_EVENT:
return "UnknownEvent"
case START_EVENT_V3:
return "StartEventV3"
case QUERY_EVENT:
return "QueryEvent"
case STOP_EVENT:
return "StopEvent"
case ROTATE_EVENT:
return "RotateEvent"
case INTVAR_EVENT:
return "IntVarEvent"
case LOAD_EVENT:
return "LoadEvent"
case SLAVE_EVENT:
return "SlaveEvent"
case CREATE_FILE_EVENT:
return "CreateFileEvent"
case APPEND_BLOCK_EVENT:
return "AppendBlockEvent"
case EXEC_LOAD_EVENT:
return "ExecLoadEvent"
case DELETE_FILE_EVENT:
return "DeleteFileEvent"
case NEW_LOAD_EVENT:
return "NewLoadEvent"
case RAND_EVENT:
return "RandEvent"
case USER_VAR_EVENT:
return "UserVarEvent"
case FORMAT_DESCRIPTION_EVENT:
return "FormatDescriptionEvent"
case XID_EVENT:
return "XIDEvent"
case BEGIN_LOAD_QUERY_EVENT:
return "BeginLoadQueryEvent"
case EXECUTE_LOAD_QUERY_EVENT:
return "ExectueLoadQueryEvent"
case TABLE_MAP_EVENT:
return "TableMapEvent"
case WRITE_ROWS_EVENTv0:
return "WriteRowsEventV0"
case UPDATE_ROWS_EVENTv0:
return "UpdateRowsEventV0"
case DELETE_ROWS_EVENTv0:
return "DeleteRowsEventV0"
case WRITE_ROWS_EVENTv1:
return "WriteRowsEventV1"
case UPDATE_ROWS_EVENTv1:
return "UpdateRowsEventV1"
case DELETE_ROWS_EVENTv1:
return "DeleteRowsEventV1"
case INCIDENT_EVENT:
return "IncidentEvent"
case HEARTBEAT_EVENT:
return "HeartbeatEvent"
case IGNORABLE_EVENT:
return "IgnorableEvent"
case ROWS_QUERY_EVENT:
return "RowsQueryEvent"
case WRITE_ROWS_EVENTv2:
return "WriteRowsEventV2"
case UPDATE_ROWS_EVENTv2:
return "UpdateRowsEventV2"
case DELETE_ROWS_EVENTv2:
return "DeleteRowsEventV2"
case GTID_EVENT:
return "GTIDEvent"
case ANONYMOUS_GTID_EVENT:
return "AnonymousGTIDEvent"
case PREVIOUS_GTIDS_EVENT:
return "PreviousGTIDsEvent"
case MARIADB_ANNOTATE_ROWS_EVENT:
return "MariadbAnnotateRowsEvent"
case MARIADB_BINLOG_CHECKPOINT_EVENT:
return "MariadbBinLogCheckPointEvent"
case MARIADB_GTID_EVENT:
return "MariadbGTIDEvent"
case MARIADB_GTID_LIST_EVENT:
return "MariadbGTIDListEvent"
case TRANSACTION_CONTEXT_EVENT:
return "TransactionContextEvent"
case VIEW_CHANGE_EVENT:
return "ViewChangeEvent"
case XA_PREPARE_LOG_EVENT:
return "XAPrepareLogEvent"
case PARTIAL_UPDATE_ROWS_EVENT:
return "PartialUpdateRowsEvent"
case TRANSACTION_PAYLOAD_EVENT:
return "TransactionPayloadEvent"
case HEARTBEAT_LOG_EVENT_V2:
return "HeartbeatLogEventV2"
case GTID_TAGGED_LOG_EVENT:
return "Gtid_tagged_log_event"
case MARIADB_START_ENCRYPTION_EVENT:
return "MariadbStartEncryptionEvent"
case MARIADB_QUERY_COMPRESSED_EVENT:
return "MariadbQueryCompressedEvent"
case MARIADB_WRITE_ROWS_COMPRESSED_EVENT_V1:
return "MariadbWriteRowsCompressedEventV1"
case MARIADB_UPDATE_ROWS_COMPRESSED_EVENT_V1:
return "MariadbUpdateRowsCompressedEventV1"
case MARIADB_DELETE_ROWS_COMPRESSED_EVENT_V1:
return "MariadbDeleteRowsCompressedEventV1"
default:
return "UnknownEvent"
}
}
const (
BINLOG_CHECKSUM_ALG_OFF byte = 0 // Events are without checksum though its generator
// is checksum-capable New Master (NM).
BINLOG_CHECKSUM_ALG_CRC32 byte = 1 // CRC32 of zlib algorithm.
// BINLOG_CHECKSUM_ALG_ENUM_END, // the cut line: valid alg range is [1, 0x7f].
BINLOG_CHECKSUM_ALG_UNDEF byte = 255 // special value to tag undetermined yet checksum
// or events from checksum-unaware servers
)
// These are TABLE_MAP_EVENT's optional metadata field type, from: libbinlogevents/include/rows_event.h
const (
TABLE_MAP_OPT_META_SIGNEDNESS byte = iota + 1
TABLE_MAP_OPT_META_DEFAULT_CHARSET
TABLE_MAP_OPT_META_COLUMN_CHARSET
TABLE_MAP_OPT_META_COLUMN_NAME
TABLE_MAP_OPT_META_SET_STR_VALUE
TABLE_MAP_OPT_META_ENUM_STR_VALUE
TABLE_MAP_OPT_META_GEOMETRY_TYPE
TABLE_MAP_OPT_META_SIMPLE_PRIMARY_KEY
TABLE_MAP_OPT_META_PRIMARY_KEY_WITH_PREFIX
TABLE_MAP_OPT_META_ENUM_AND_SET_DEFAULT_CHARSET
TABLE_MAP_OPT_META_ENUM_AND_SET_COLUMN_CHARSET
TABLE_MAP_OPT_META_COLUMN_VISIBILITY
)
type IntVarEventType byte
const (
INVALID IntVarEventType = iota
LAST_INSERT_ID
INSERT_ID
)
const (
ENUM_EXTRA_ROW_INFO_TYPECODE_NDB byte = iota
ENUM_EXTRA_ROW_INFO_TYPECODE_PARTITION
)