-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathconst.go
285 lines (272 loc) · 6.08 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
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
package binlog
const (
SemiSyncIndicator byte = 0xef
BinlogVersion byte = 4
EventHeaderSize = 19
TimeFormat string = "2006-01-02 15:04:05"
MinProtocolVersion byte = 10
DATETIMEF_INT_OFS int64 = 0x8000000000
)
// Status codes
const (
OK_HEADER byte = 0x00
LocalInFile_HEADER byte = 0xfb
EOF_HEADER byte = 0xfe
ERR_HEADER byte = 0xff
)
// Types
const (
MYSQL_TYPE_DECIMAL byte = iota
MYSQL_TYPE_TINY
MYSQL_TYPE_SHORT
MYSQL_TYPE_LONG
MYSQL_TYPE_FLOAT
MYSQL_TYPE_DOUBLE
MYSQL_TYPE_NULL
MYSQL_TYPE_TIMESTAMP
MYSQL_TYPE_LONGLONG
MYSQL_TYPE_INT24
MYSQL_TYPE_DATE
MYSQL_TYPE_TIME
MYSQL_TYPE_DATETIME
MYSQL_TYPE_YEAR
MYSQL_TYPE_NEWDATE
MYSQL_TYPE_VARCHAR
MYSQL_TYPE_BIT
MYSQL_TYPE_TIMESTAMP2 // 5.6+
MYSQL_TYPE_DATETIME2
MYSQL_TYPE_TIME2
)
const (
MYSQL_TYPE_NEWDECIMAL byte = iota + 0xf6
MYSQL_TYPE_ENUM
MYSQL_TYPE_SET
MYSQL_TYPE_TINY_BLOB
MYSQL_TYPE_MEDIUM_BLOB
MYSQL_TYPE_LONG_BLOB
MYSQL_TYPE_BLOB
MYSQL_TYPE_VAR_STRING
MYSQL_TYPE_STRING
MYSQL_TYPE_GEOMETRY
)
// Commands
const (
COM_SLEEP byte = iota
COM_QUIT
COM_INIT_DB
COM_QUERY
COM_FIELD_LIST
COM_CREATE_DB
COM_DROP_DB
COM_REFRESH
COM_SHUTDOWN
COM_STATISTICS
COM_PROCESS_INFO
COM_CONNECT
COM_PROCESS_KILL
COM_DEBUG
COM_PING
COM_TIME
COM_DELAYED_INSERT
COM_CHANGE_USER
COM_BINLOG_DUMP
COM_TABLE_DUMP
COM_CONNECT_OUT
COM_REGISTER_SLAVE
COM_STMT_PREPARE
COM_STMT_EXECUTE
COM_STMT_SEND_LONG_DATA
COM_STMT_CLOSE
COM_STMT_RESET
COM_SET_OPTION
COM_STMT_FETCH
COM_DAEMON
COM_BINLOG_DUMP_GTID
COM_RESET_CONNECTION
)
// Listening options
const (
BINLOG_DUMP_NEVER_STOP uint16 = 0x0
BINLOG_DUMP_NON_BLOCK uint16 = 0x1
BINLOG_THROUGH_POSITION uint16 = 0x2
BINLOG_THROUGH_GTID uint16 = 0x4
)
// Binlog events
type EventType byte
const (
UNKNOWN_EVENT EventType = iota // 0x00
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
PRE_GA_WRITE_ROWS_EVENT // pre-GA: from 5.1.0 to 5.1.15
PRE_GA_UPDATE_ROWS_EVENT
PRE_GA_DELETE_ROWS_EVENT
WRITE_ROWS_EVENT_V1 // V1: from 5.1.15 to 5.6.x
UPDATE_ROWS_EVENT_V1
DELETE_ROWS_EVENT_V1
INCIDENT_EVENT
HEARTBEAT_EVENT
IGNORABLE_EVENT
ROWS_QUERY_EVENT
WRITE_ROWS_EVENT_V2 // V2: From 5.6.x
UPDATE_ROWS_EVENT_V2
DELETE_ROWS_EVENT_V2
GTID_LOG_EVENT
ANONYMOUS_GTID_LOG_EVENT
PREVIOUS_GTIDS_LOG_EVENT // 0x23
)
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 "ExecuteLoadQueryEvent"
case TABLE_MAP_EVENT:
return "TableMapEvent"
case PRE_GA_WRITE_ROWS_EVENT:
return "PreGAWriteRowsEvent"
case PRE_GA_UPDATE_ROWS_EVENT:
return "PreGAUpdateRowsEvent"
case PRE_GA_DELETE_ROWS_EVENT:
return "PreGADeleteRowsEvent"
case WRITE_ROWS_EVENT_V1:
return "WriteRowsEventV1"
case UPDATE_ROWS_EVENT_V1:
return "UpdateRowsEventV1"
case DELETE_ROWS_EVENT_V1:
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_EVENT_V2:
return "WriteRowsEventV2"
case UPDATE_ROWS_EVENT_V2:
return "UpdateRowsEventV2"
case DELETE_ROWS_EVENT_V2:
return "DeleteRowsEventV2"
case GTID_LOG_EVENT:
return "GTIDLogEvent"
case ANONYMOUS_GTID_LOG_EVENT:
return "AnonymousGTIDLogEvent"
case PREVIOUS_GTIDS_LOG_EVENT:
return "PreviousGTIDsLogEvent"
default:
return "UnknownEvent"
}
}
// Log events
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 (
CLIENT_LONG_PASSWORD uint32 = 1 << iota
CLIENT_FOUND_ROWS
CLIENT_LONG_FLAG
CLIENT_CONNECT_WITH_DB
CLIENT_NO_SCHEMA
CLIENT_COMPRESS
CLIENT_ODBC
CLIENT_LOCAL_FILES
CLIENT_IGNORE_SPACE
CLIENT_PROTOCOL_41
CLIENT_INTERACTIVE
CLIENT_SSL
CLIENT_IGNORE_SIGPIPE
CLIENT_TRANSACTIONS
CLIENT_RESERVED
CLIENT_SECURE_CONNECTION
CLIENT_MULTI_STATEMENTS
CLIENT_MULTI_RESULTS
CLIENT_PS_MULTI_RESULTS
CLIENT_PLUGIN_AUTH
CLIENT_CONNECT_ATTRS
CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA
)
const (
AUTH_NAME = "mysql_native_password"
DEFAULT_CHARSET = "utf8"
DEFAULT_COLLATION_ID uint8 = 33
DEFAULT_COLLATION_NAME string = "utf8_general_ci"
)
// Flags
const (
NOT_NULL_FLAG = 1
PRI_KEY_FLAG = 2
UNIQUE_KEY_FLAG = 4
BLOB_FLAG = 16
UNSIGNED_FLAG = 32
ZEROFILL_FLAG = 64
BINARY_FLAG = 128
ENUM_FLAG = 256
AUTO_INCREMENT_FLAG = 512
TIMESTAMP_FLAG = 1024
SET_FLAG = 2048
NUM_FLAG = 32768
PART_KEY_FLAG = 16384
GROUP_FLAG = 32768
UNIQUE_FLAG = 65536
)