@@ -49,7 +49,12 @@ def __init__(self, connection_settings, server_id, resume_stream=False,
49
49
self .__connected_ctl = False
50
50
self .__resume_stream = resume_stream
51
51
self .__blocking = blocking
52
- self .__only_events = self ._allowed_event_list (only_events , ignored_events , filter_non_implemented_events )
52
+ self .__allowed_events = self ._allowed_event_list (only_events , ignored_events , filter_non_implemented_events )
53
+
54
+ # We can't filter on packet level TABLE_MAP and rotate event because we need
55
+ # them for handling other operations
56
+ self .__allowed_events_in_packet = frozenset ([TableMapEvent , RotateEvent ]).union (self .__allowed_events )
57
+
53
58
self .__server_id = server_id
54
59
self .__use_checksum = False
55
60
@@ -228,7 +233,7 @@ def fetchone(self):
228
233
binlog_event = BinLogPacketWrapper (pkt , self .table_map ,
229
234
self ._ctl_connection ,
230
235
self .__use_checksum ,
231
- self .__only_events )
236
+ self .__allowed_events_in_packet )
232
237
if binlog_event .event_type == TABLE_MAP_EVENT :
233
238
self .table_map [binlog_event .event .table_id ] = \
234
239
binlog_event .event .get_table ()
@@ -251,7 +256,7 @@ def fetchone(self):
251
256
252
257
# event is none if we have filter it on packet level
253
258
# we filter also not allowed events
254
- if binlog_event .event is None or (binlog_event .event .__class__ not in self .__only_events ):
259
+ if binlog_event .event is None or (binlog_event .event .__class__ not in self .__allowed_events ):
255
260
continue
256
261
257
262
return binlog_event .event
0 commit comments