Skip to content

Commit 2f764ea

Browse files
committed
Update binlog type mappings to include Heartbeat Event V2
1 parent a2c5685 commit 2f764ea

File tree

3 files changed

+65
-39
lines changed

3 files changed

+65
-39
lines changed

lib/binlog_event.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,29 @@ BinlogEvent.prototype._readTableId = function (parser) {
3131
function Heartbeat(parser) {
3232
BinlogEvent.apply(this, arguments);
3333
this.binlogName = parser.parseString(this.size);
34-
this.position = 'nonsense'; //Common.parseUInt64(parser);
3534
}
3635
util.inherits(Heartbeat, BinlogEvent);
3736

3837
Heartbeat.prototype.dump = function () {
3938
console.log('=== %s ===', this.getTypeName());
4039
console.log('Event size: %d', this.size);
41-
console.log('Position: %d', this.position);
4240
console.log('Current binlog file: %s', this.binlogName);
4341
};
4442

43+
function Heartbeat_V2(parser) {
44+
BinlogEvent.apply(this, arguments);
45+
this.binlogName = parser.parseString(this.size);
46+
this.position = Common.parseUInt64(parser);
47+
}
48+
util.inherits(Heartbeat_V2, BinlogEvent);
49+
50+
Heartbeat_V2.prototype.dump = function () {
51+
console.log('=== %s ===', this.getTypeName());
52+
console.log('Event size: %d', this.size);
53+
console.log('Current binlog file: %s', this.binlogName);
54+
console.log('Position: %d', this.position);
55+
};
56+
4557
/* Change MySQL bin log file
4658
* Attributes:
4759
* position: Position inside next binlog

lib/code_map.js

Lines changed: 45 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,51 @@
11
const events = require('./binlog_event');
22
const rowsEvents = require('./rows_event');
33

4+
// Mirrors the Binlog Event Type enum from here: https://dev.mysql.com/doc/dev/mysql-server/9.3.0/binlog__event_8h_source.html
45
const CodeEvent = [
5-
'UNKNOWN_EVENT',
6-
'START_EVENT_V3',
7-
'QUERY_EVENT',
8-
'STOP_EVENT',
9-
'ROTATE_EVENT',
10-
'INTVAR_EVENT',
11-
'LOAD_EVENT',
12-
'SLAVE_EVENT',
13-
'CREATE_FILE_EVENT',
14-
'APPEND_BLOCK_EVENT',
15-
'EXEC_LOAD_EVENT',
16-
'DELETE_FILE_EVENT',
17-
'NEW_LOAD_EVENT',
18-
'RAND_EVENT',
19-
'USER_VAR_EVENT',
20-
'FORMAT_DESCRIPTION_EVENT',
21-
'XID_EVENT',
22-
'BEGIN_LOAD_QUERY_EVENT',
23-
'EXECUTE_LOAD_QUERY_EVENT',
24-
'TABLE_MAP_EVENT',
25-
'PRE_GA_DELETE_ROWS_EVENT',
26-
'PRE_GA_UPDATE_ROWS_EVENT',
27-
'PRE_GA_WRITE_ROWS_EVENT',
28-
'WRITE_ROWS_EVENT_V1',
29-
'UPDATE_ROWS_EVENT_V1',
30-
'DELETE_ROWS_EVENT_V1',
31-
'INCIDENT_EVENT',
32-
'HEARTBEAT_LOG_EVENT',
33-
'IGNORABLE_LOG_EVENT',
34-
'ROWS_QUERY_LOG_EVENT',
35-
'WRITE_ROWS_EVENT_V2',
36-
'UPDATE_ROWS_EVENT_V2',
37-
'DELETE_ROWS_EVENT_V2',
38-
'GTID_LOG_EVENT',
39-
'ANONYMOUS_GTID_LOG_EVENT',
40-
'PREVIOUS_GTIDS_LOG_EVENT'
6+
'UNKNOWN_EVENT', // 0
7+
'START_EVENT_V3', // 1
8+
'QUERY_EVENT', // 2
9+
'STOP_EVENT', // 3
10+
'ROTATE_EVENT', // 4
11+
'INTVAR_EVENT', // 5
12+
'LOAD_EVENT', // 6
13+
'SLAVE_EVENT', // 7
14+
'CREATE_FILE_EVENT', // 8
15+
'APPEND_BLOCK_EVENT', // 9
16+
'EXEC_LOAD_EVENT', // 10
17+
'DELETE_FILE_EVENT', // 11
18+
'NEW_LOAD_EVENT', // 12
19+
'RAND_EVENT', // 13
20+
'USER_VAR_EVENT', // 14
21+
'FORMAT_DESCRIPTION_EVENT', // 15
22+
'XID_EVENT', // 16
23+
'BEGIN_LOAD_QUERY_EVENT', // 17
24+
'EXECUTE_LOAD_QUERY_EVENT', // 18
25+
'TABLE_MAP_EVENT', // 19
26+
'PRE_GA_DELETE_ROWS_EVENT', // 20
27+
'PRE_GA_UPDATE_ROWS_EVENT', // 21
28+
'PRE_GA_WRITE_ROWS_EVENT', // 22
29+
'WRITE_ROWS_EVENT_V1', // 23
30+
'UPDATE_ROWS_EVENT_V1', // 24
31+
'DELETE_ROWS_EVENT_V1', // 25
32+
'INCIDENT_EVENT', // 26
33+
'HEARTBEAT_LOG_EVENT', // 27
34+
'IGNORABLE_LOG_EVENT', // 28
35+
'ROWS_QUERY_LOG_EVENT', // 29
36+
'WRITE_ROWS_EVENT_V2', // 30
37+
'UPDATE_ROWS_EVENT_V2', // 31
38+
'DELETE_ROWS_EVENT_V2', // 32
39+
'GTID_LOG_EVENT', // 33
40+
'ANONYMOUS_GTID_LOG_EVENT', // 34
41+
'PREVIOUS_GTIDS_LOG_EVENT', // 35
42+
'TRANSACTION_CONTEXT_EVENT', // 36
43+
'VIEW_CHANGE_EVENT', // 37
44+
'XA_PREPARE_LOG_EVENT', // 38
45+
'PARTIAL_UPDATE_ROWS_EVENT', // 39
46+
'TRANSACTION_PAYLOAD_EVENT', // 40
47+
'HEARTBEAT_LOG_EVENT_V2', // 41
48+
'GTID_TAGGED_LOG_EVENT' // 42
4149
];
4250

4351
const EventClass = {
@@ -49,6 +57,7 @@ const EventClass = {
4957
XID_EVENT: events.Xid,
5058
GTID_LOG_EVENT: events.GtidLog,
5159
HEARTBEAT_LOG_EVENT: events.Heartbeat,
60+
HEARTBEAT_LOG_EVENT_V2: events.Heartbeat_V2,
5261

5362
TABLE_MAP_EVENT: events.TableMap,
5463
DELETE_ROWS_EVENT_V1: rowsEvents.DeleteRows,

types/index.d.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,11 @@ export type BaseBinLogEvent = {
108108

109109
export type BinLogHeartbeatEvent = BaseBinLogEvent & {
110110
binlogName: string;
111-
position: number;
111+
};
112+
113+
export type BinLogHeartbeatEvent_V2 = BaseBinLogEvent & {
114+
binlogName: string;
115+
position: string;
112116
};
113117

114118
export type BinLogRotationEvent = BaseBinLogEvent & {
@@ -171,6 +175,7 @@ export type BinLogQueryEvent = BaseBinLogEvent & {
171175
export type BinLogEvent =
172176
| BinLogRotationEvent
173177
| BinLogHeartbeatEvent
178+
| BinLogHeartbeatEvent_V2
174179
| BinLogGTIDLogEvent
175180
| BinLogXidEvent
176181
| BinLogRowEvent

0 commit comments

Comments
 (0)