[MDEV-9567] mysqlbinlog fails to read binlog event which inserts timestamp with wrong number of microseconds Created: 2016-02-16 Updated: 2017-05-22 Resolved: 2016-02-18 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Replication, Scripts & Clients |
| Affects Version/s: | 5.5, 10.0 |
| Fix Version/s: | N/A |
| Type: | Bug | Priority: | Major |
| Reporter: | Elena Stepanova | Assignee: | Sergei Golubchik |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||||||||||
| Description |
|
In the test case below, note that f1 is TIMESTAMP(3), but the inserted value is NOW(). Apparently it's the most significant part.
Note duplicate event, wrong values, and the corruption message. Reproducible on 5.5.48 and 10.0.23, as well as older versions that I checked (down to 10.0.11 at least); seems to be fixed in 10.1. Replication seems to work all right, so it's not absolutely critical, but it's very inconvenient when binlog events are important for problem investigation, so it would be good to fix it in 10.0 at least. |
| Comments |
| Comment by Elena Stepanova [ 2016-02-16 ] | |||||||||||||||||||||||||||||
|
Note: actually, the category and the affected versions that I've set contradict each other. If it's a mysqlbinlog bug, it exists in 10.1 as well, because mysqlbinlog from 10.1 also cannot read such binary log; but when the server and mysqlbinlog both are from 10.1, the problem does not happen. Please adjust the fields accordingly when you know the right values. | |||||||||||||||||||||||||||||
| Comment by Elena Stepanova [ 2016-02-17 ] | |||||||||||||||||||||||||||||
|
Actually, I was wrong about replication. 10.0 => 10.0 works, but 10.0 => 10.1 fails.
A debug 10.1 slave hits an assertion failure:
So, wherever the bug is, it needs to be fixed for 10.1, I'm updating the fix version accordingly. | |||||||||||||||||||||||||||||
| Comment by Elena Stepanova [ 2016-02-18 ] | |||||||||||||||||||||||||||||
|
I'm closing this one as a duplicate of | |||||||||||||||||||||||||||||
| Comment by Sergei Golubchik [ 2016-02-18 ] | |||||||||||||||||||||||||||||
|
This is another effect of MariaDB temporal data types with microseconds don't store enough metadata in the rbr events, so it's only possible to read these rbr event on the slave that has exactly the same table structure as the master. Because mysqlbinlog has no tables at all, it cannot parse these rbr events correctly. |