@@ -221,6 +221,100 @@ def test_update_row_event(self):
221221 self .assertEqual (event .rows [0 ]["after_values" ]["id" ], 1 )
222222 self .assertEqual (event .rows [0 ]["after_values" ]["data" ], "World" )
223223
224+ def test_minimal_image_write_row_event (self ):
225+ query = "CREATE TABLE test (id INT NOT NULL AUTO_INCREMENT, data VARCHAR (50) NOT NULL, PRIMARY KEY (id))"
226+ self .execute (query )
227+ query = "SET SESSION binlog_row_image = 'minimal'"
228+ self .execute (query )
229+ query = "INSERT INTO test (data) VALUES('Hello World')"
230+ self .execute (query )
231+ self .execute ("COMMIT" )
232+
233+ self .assertIsInstance (self .stream .fetchone (), RotateEvent )
234+ self .assertIsInstance (self .stream .fetchone (), FormatDescriptionEvent )
235+ #QueryEvent for the Create Table
236+ self .assertIsInstance (self .stream .fetchone (), QueryEvent )
237+ #QueryEvent for the Set session binlog row image
238+ self .assertIsInstance (self .stream .fetchone (), QueryEvent )
239+ #QueryEvent for the BEGIN
240+ self .assertIsInstance (self .stream .fetchone (), QueryEvent )
241+
242+ self .assertIsInstance (self .stream .fetchone (), TableMapEvent )
243+
244+ event = self .stream .fetchone ()
245+ if self .isMySQL56AndMore ():
246+ self .assertEqual (event .event_type , WRITE_ROWS_EVENT_V2 )
247+ else :
248+ self .assertEqual (event .event_type , WRITE_ROWS_EVENT_V1 )
249+ self .assertIsInstance (event , WriteRowsEvent )
250+ self .assertEqual (event .rows [0 ]["values" ]["id" ], 1 )
251+ self .assertEqual (event .rows [0 ]["values" ]["data" ], "Hello World" )
252+ self .assertEqual (event .schema , "pymysqlreplication_test" )
253+ self .assertEqual (event .table , "test" )
254+ self .assertEqual (event .columns [1 ].name , 'data' )
255+
256+ def test_minimal_image_delete_row_event (self ):
257+ query = "CREATE TABLE test (id INT NOT NULL AUTO_INCREMENT, data VARCHAR (50) NOT NULL, PRIMARY KEY (id))"
258+ self .execute (query )
259+ query = "INSERT INTO test (data) VALUES('Hello World')"
260+ self .execute (query )
261+ query = "SET SESSION binlog_row_image = 'minimal'"
262+ self .execute (query )
263+ self .resetBinLog ()
264+
265+ query = "DELETE FROM test WHERE id = 1"
266+ self .execute (query )
267+ self .execute ("COMMIT" )
268+
269+ self .assertIsInstance (self .stream .fetchone (), RotateEvent )
270+ self .assertIsInstance (self .stream .fetchone (), FormatDescriptionEvent )
271+
272+ #QueryEvent for the BEGIN
273+ self .assertIsInstance (self .stream .fetchone (), QueryEvent )
274+
275+ self .assertIsInstance (self .stream .fetchone (), TableMapEvent )
276+
277+ event = self .stream .fetchone ()
278+ if self .isMySQL56AndMore ():
279+ self .assertEqual (event .event_type , DELETE_ROWS_EVENT_V2 )
280+ else :
281+ self .assertEqual (event .event_type , DELETE_ROWS_EVENT_V1 )
282+ self .assertIsInstance (event , DeleteRowsEvent )
283+ self .assertEqual (event .rows [0 ]["values" ]["id" ], 1 )
284+ self .assertEqual (event .rows [0 ]["values" ]["data" ], None )
285+
286+ def test_minimal_image_update_row_event (self ):
287+ query = "CREATE TABLE test (id INT NOT NULL AUTO_INCREMENT, data VARCHAR (50) NOT NULL, PRIMARY KEY (id))"
288+ self .execute (query )
289+ query = "INSERT INTO test (data) VALUES('Hello')"
290+ self .execute (query )
291+ query = "SET SESSION binlog_row_image = 'minimal'"
292+ self .execute (query )
293+ self .resetBinLog ()
294+
295+ query = "UPDATE test SET data = 'World' WHERE id = 1"
296+ self .execute (query )
297+ self .execute ("COMMIT" )
298+
299+ self .assertIsInstance (self .stream .fetchone (), RotateEvent )
300+ self .assertIsInstance (self .stream .fetchone (), FormatDescriptionEvent )
301+
302+ #QueryEvent for the BEGIN
303+ self .assertIsInstance (self .stream .fetchone (), QueryEvent )
304+
305+ self .assertIsInstance (self .stream .fetchone (), TableMapEvent )
306+
307+ event = self .stream .fetchone ()
308+ if self .isMySQL56AndMore ():
309+ self .assertEqual (event .event_type , UPDATE_ROWS_EVENT_V2 )
310+ else :
311+ self .assertEqual (event .event_type , UPDATE_ROWS_EVENT_V1 )
312+ self .assertIsInstance (event , UpdateRowsEvent )
313+ self .assertEqual (event .rows [0 ]["before_values" ]["id" ], 1 )
314+ self .assertEqual (event .rows [0 ]["before_values" ]["data" ], "Hello" )
315+ self .assertEqual (event .rows [0 ]["after_values" ]["id" ], None )
316+ self .assertEqual (event .rows [0 ]["after_values" ]["data" ], "World" )
317+
224318 def test_log_pos (self ):
225319 query = "CREATE TABLE test (id INT NOT NULL AUTO_INCREMENT, data VARCHAR (50) NOT NULL, PRIMARY KEY (id))"
226320 self .execute (query )
0 commit comments