Details
-
Bug
-
Status: Closed (View Workflow)
-
Minor
-
Resolution: Duplicate
-
10.1.22
-
None
-
debian 8.2
MariaDB 10.1.22
Description
When binglog_format is "row", DML statements would have a Table_map_event in binlog; each Table_map_event would have a table_id; the table_id is represented as ulong in binlog, while read into TABLE_LIST.table_id in slave, which is of type uint, so if table_id is larger than 2^32, it would cause type overflow, and those events in relay log would be silently skipped, hence causing data inconsistency between master and slave.
Attachments
Issue Links
- duplicates
-
MDEV-17803 Row-based event is not applied when table map id is greater 32 bit int
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Component/s | Replication [ 10100 ] | |
Component/s | Server [ 13907 ] | |
Fix Version/s | 10.1 [ 16100 ] | |
Assignee | Andrei Elkin [ elkin ] |
Priority | Major [ 3 ] | Minor [ 4 ] |
Description |
When binglog_format is "row", DML statements would have a Table_map_event in binlog; each Table_map_event would have a table_id; the table_id is represented as ulong in binlog, while read into TABLE_LIST.table_id in slave, which is of type uint, so if table_id is larger than 17179869184, it would cause type overflow, and those events in relay log would be silently skipped, hence causing data inconsistency between master and slave.
FYI:https://bugs.mysql.com/bug.php?id=88754 |
When binglog_format is "row", DML statements would have a Table_map_event in binlog; each Table_map_event would have a table_id; the table_id is represented as ulong in binlog, while read into TABLE_LIST.table_id in slave, which is of type uint, so if table_id is larger than 2^32, it would cause type overflow, and those events in relay log would be silently skipped, hence causing data inconsistency between master and slave.
FYI:https://bugs.mysql.com/bug.php?id=88754 |
Fix Version/s | 10.1.38 [ 23209 ] | |
Fix Version/s | 10.1 [ 16100 ] | |
Resolution | Duplicate [ 3 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |
Link |
This issue duplicates |
Description |
When binglog_format is "row", DML statements would have a Table_map_event in binlog; each Table_map_event would have a table_id; the table_id is represented as ulong in binlog, while read into TABLE_LIST.table_id in slave, which is of type uint, so if table_id is larger than 2^32, it would cause type overflow, and those events in relay log would be silently skipped, hence causing data inconsistency between master and slave.
FYI:https://bugs.mysql.com/bug.php?id=88754 |
When binglog_format is "row", DML statements would have a Table_map_event in binlog; each Table_map_event would have a table_id; the table_id is represented as ulong in binlog, while read into TABLE_LIST.table_id in slave, which is of type uint, so if table_id is larger than 2^32, it would cause type overflow, and those events in relay log would be silently skipped, hence causing data inconsistency between master and slave. |
Workflow | MariaDB v3 [ 91582 ] | MariaDB v4 [ 155470 ] |
This seems impractical to hit as the id 's life time is server life time.
However a single-liner fix to wrap around at overflow should close it.