julien-duponchelle/python-mysql-replication

bug Wrong Packet goes null_bitmask from table map event

Closed this issue · 0 comments

Problem

timing of event creation and the timing of now the table structure are different,
ex) drop table but replication did not reach that point


        if self.table_id in table_map:
            self.column_schemas = table_map[self.table_id].column_schemas
        else:
            self.column_schemas = self._ctl_connection._get_table_information(self.schema, self.table)

        ordinal_pos_loc = 0

        if len(self.column_schemas) != 0:
            # Read columns meta data
            column_types = bytearray(self.packet.read(self.column_count)) # read packet point 

        self.null_bitmask = self.packet.read((self.column_count + 7) / 8) #error packet goes

self.column_schemas doesn't yield any results, the code will exit the if statement.
However, since there is more column information in the remaining packets
If we don't read the packet here, an incorrect byte packet for null_bit_mask could be passed through.