Commit c98358e
authored
Fix read column Info from table map event (julien-duponchelle#440)
fix: julien-duponchelle#439
Here is how the scenario Goes:
1. There is a time difference between the event and the actual state of the database.
2. The actual database is dropped.
3. The python-replication-mysql application receives a table map event.
4. Since there is no cached result for the table_id, it tries to retrieve the database's column schema.
5. There are no column schema results from the database.
6. Packets containing information about the table map event's columns are still present.
7. The application exits the if statement, and the packets remain untouched.
8. Incorrect packets are inserted into the null_bitmask.
```
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))
self.null_bitmask = self.packet.read((self.column_count + 7) / 8) #error packet goes here!
```1 parent 3da071e commit c98358e
1 file changed
+3
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
| 82 | + | |
82 | 83 | | |
83 | | - | |
| 84 | + | |
84 | 85 | | |
85 | 86 | | |
86 | 87 | | |
| |||
624 | 625 | | |
625 | 626 | | |
626 | 627 | | |
627 | | - | |
| 628 | + | |
628 | 629 | | |
629 | 630 | | |
630 | 631 | | |
| |||
0 commit comments