diff --git a/pymysqlreplication/constants/BINLOG.py b/pymysqlreplication/constants/BINLOG.py index 7a1dec43..a04df297 100644 --- a/pymysqlreplication/constants/BINLOG.py +++ b/pymysqlreplication/constants/BINLOG.py @@ -28,9 +28,9 @@ HEARTBEAT_LOG_EVENT = 0x1b IGNORABLE_LOG_EVENT= 0x1c ROWS_QUERY_LOG_EVENT= 0x1d -WRITE_ROWS_EVENT = 0x1e -UPDATE_ROWS_EVENT = 0x1f -DELETE_ROWS_EVENT = 0x20 +WRITE_ROWS_EVENT_V2 = 0x1e +UPDATE_ROWS_EVENT_V2 = 0x1f +DELETE_ROWS_EVENT_V2 = 0x20 GTID_LOG_EVENT= 0x21 ANONYMOUS_GTID_LOG_EVENT= 0x22 PREVIOUS_GTIDS_LOG_EVENT= 0x23 diff --git a/pymysqlreplication/event.py b/pymysqlreplication/event.py index 22e24005..e1e2d8db 100644 --- a/pymysqlreplication/event.py +++ b/pymysqlreplication/event.py @@ -99,3 +99,7 @@ def _dump(self): print("Execution time: %d" % (self.execution_time)) print("Query: %s" % (self.query)) +class NullEvent(BinLogEvent): + def __init__(self, from_packet, event_size, table_map, ctl_connection, log_persistancer = None): + super(NullEvent, self).__init__(from_packet, event_size, table_map, ctl_connection, log_persistancer) + self.packet.advance(event_size) \ No newline at end of file diff --git a/pymysqlreplication/packet.py b/pymysqlreplication/packet.py index d9eacbbb..c570c73f 100644 --- a/pymysqlreplication/packet.py +++ b/pymysqlreplication/packet.py @@ -28,13 +28,15 @@ class BinLogPacketWrapper(object): UPDATE_ROWS_EVENT_V1: UpdateRowsEvent, WRITE_ROWS_EVENT_V1: WriteRowsEvent, DELETE_ROWS_EVENT_V1: DeleteRowsEvent, - UPDATE_ROWS_EVENT: UpdateRowsEvent, - WRITE_ROWS_EVENT: WriteRowsEvent, - DELETE_ROWS_EVENT: DeleteRowsEvent, + UPDATE_ROWS_EVENT_V2: UpdateRowsEvent, + WRITE_ROWS_EVENT_V2: WriteRowsEvent, + DELETE_ROWS_EVENT_V2: DeleteRowsEvent, TABLE_MAP_EVENT: TableMapEvent, ROTATE_EVENT: RotateEvent, FORMAT_DESCRIPTION_EVENT: FormatDescriptionEvent, - XID_EVENT: XidEvent + XID_EVENT: XidEvent, + INTVAR_EVENT: NullEvent, + GTID_LOG_EVENT: NullEvent } def __init__(self, from_packet, table_map, ctl_connection): diff --git a/pymysqlreplication/tests/test_basic.py b/pymysqlreplication/tests/test_basic.py index 238964a3..46d35c16 100644 --- a/pymysqlreplication/tests/test_basic.py +++ b/pymysqlreplication/tests/test_basic.py @@ -92,7 +92,7 @@ def test_write_row_event(self): event = self.stream.fetchone() if self.isMySQL56AndMore(): - self.assertEqual(event.event_type, WRITE_ROWS_EVENT) + self.assertEqual(event.event_type, WRITE_ROWS_EVENT_V2) else: self.assertEqual(event.event_type, WRITE_ROWS_EVENT_V1) self.assertIsInstance(event, WriteRowsEvent) @@ -127,7 +127,7 @@ def test_delete_row_event(self): event = self.stream.fetchone() if self.isMySQL56AndMore(): - self.assertEqual(event.event_type, DELETE_ROWS_EVENT) + self.assertEqual(event.event_type, DELETE_ROWS_EVENT_V2) else: self.assertEqual(event.event_type, DELETE_ROWS_EVENT_V1) self.assertIsInstance(event, DeleteRowsEvent) @@ -159,7 +159,7 @@ def test_update_row_event(self): event = self.stream.fetchone() if self.isMySQL56AndMore(): - self.assertEqual(event.event_type, UPDATE_ROWS_EVENT) + self.assertEqual(event.event_type, UPDATE_ROWS_EVENT_V2) else: self.assertEqual(event.event_type, UPDATE_ROWS_EVENT_V1) self.assertIsInstance(event, UpdateRowsEvent) @@ -192,7 +192,7 @@ def test_insert_multiple_row_event(self): event = self.stream.fetchone() if self.isMySQL56AndMore(): - self.assertEqual(event.event_type, WRITE_ROWS_EVENT) + self.assertEqual(event.event_type, WRITE_ROWS_EVENT_V2) else: self.assertEqual(event.event_type, WRITE_ROWS_EVENT_V1) self.assertIsInstance(event, WriteRowsEvent) @@ -272,7 +272,7 @@ def test_delete_multiple_row_event(self): event = self.stream.fetchone() if self.isMySQL56AndMore(): - self.assertEqual(event.event_type, DELETE_ROWS_EVENT) + self.assertEqual(event.event_type, DELETE_ROWS_EVENT_V2) else: self.assertEqual(event.event_type, DELETE_ROWS_EVENT_V1) self.assertIsInstance(event, DeleteRowsEvent) diff --git a/pymysqlreplication/tests/test_data_type.py b/pymysqlreplication/tests/test_data_type.py index 4f1a7735..c43ba84e 100644 --- a/pymysqlreplication/tests/test_data_type.py +++ b/pymysqlreplication/tests/test_data_type.py @@ -32,7 +32,7 @@ def create_and_insert_value(self, create_query, insert_query): event = self.stream.fetchone() if self.isMySQL56AndMore(): - self.assertEqual(event.event_type, WRITE_ROWS_EVENT) + self.assertEqual(event.event_type, WRITE_ROWS_EVENT_V2) else: self.assertEqual(event.event_type, WRITE_ROWS_EVENT_V1) self.assertIsInstance(event, WriteRowsEvent)