| Bug #40004 | Replication failure with no PK + no indexes | ||
|---|---|---|---|
| Submitted: | 13 Oct 2008 16:36 | Modified: | 10 Nov 2008 17:27 |
| Reporter: | Philip Stoev | ||
| Status: | Closed | ||
| Category: | Server: RBR | Severity: | S2 (Serious) |
| Version: | 5.1-rpl, 6.0-rpl | OS: | Any |
| Assigned to: | Mats Kindahl | Target Version: | 5.1.30 |
| Triage: | Triaged: D2 (Serious) / R2 (Low) / E2 (Low) | ||
[13 Oct 2008 16:36]
Philip Stoev
[13 Oct 2008 22:46]
Sveta Smirnova
Thank you for the report. Verified as described.
[15 Oct 2008 9:42]
Giuseppe Maxia
An interesting mote.
If you use partitions (which is a legitimate reason for not having a primary key), the bug
does not kick in.
CREATE TABLE table1_myisam (i int) ENGINE=myisam
partition by range (i) (
partition p1 values less than (5),
partition p2 values less than (maxvalue)
)
;
If you create the table with this statement, there is no replication error.
Even with only one partition (p2=MAXVALUE), there is no error.
[17 Oct 2008 14:42]
Mats Kindahl
The failure is caused because HA_ERR_RECORD_DELETED is returned by MyISAM for the last UPDATE statement. This error code is not correctly caught in the Rows_log_event::find_row() function, so this causes an error. On seeing a HA_ERR_RECORD_DELETED, find_row() should just proceed with fetching the next row without doing a comparison.
[20 Oct 2008 21:21]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/56616 2771 Mats Kindahl 2008-10-20 Bug #40004 Replication failure with no PK + no indexes In certain situations, a scan of the table will return the error code HA_ERR_RECORD_DELETED, and this error code is not correctly caught in the Rows_log_event::find_row() function, which causes an error to be returned for this case. This patch fixes the problem by adding code to either ignore the record and continuing with the next one, the the event of a table scan, or change the error code to HA_ERR_KEY_NOT_FOUND, in the event that a key lookup is attempted.
[29 Oct 2008 21:38]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/57375 2772 Mats Kindahl 2008-10-29 Bug #40004: Replication failure with no PK + no indexes Adding comments to test cases.
[30 Oct 2008 11:08]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/57426 2882 Mats Kindahl 2008-10-30 [merge] Merging BUG#40004 into 6.0-5.1.29-rc
[4 Nov 2008 10:20]
Bugs System
Pushed into 5.1.30 (revid:mats@sun.com-20081029203751-frvnckuoufkm3dpw) (version source revid:mats@sun.com-20081103175049-ulv24ke1m2lpi632) (pib:5)
[4 Nov 2008 14:14]
Jon Stephens
Documented bugfix in the 5.1.30 changelog as follows:
Row-based replication failed with non-partitioned MyISAM tables having
no indexes.
Set status as NDI pending push to 6.0 tree.
[10 Nov 2008 11:52]
Bugs System
Pushed into 6.0.9-alpha (revid:mats@sun.com-20081030095550-cigan7p2px2kltio) (version source revid:kgeorge@mysql.com-20081106184603-85csedg4eru93fyy) (pib:5)
[10 Nov 2008 17:27]
Jon Stephens
Fix is also now documented in the 6.0.9 changelog. Closed.
[21 Nov 2008 22:02]
Bugs System
Pushed into 5.1.30-ndb-6.2.17 (revid:mats@sun.com-20081029203751-frvnckuoufkm3dpw) (version source revid:tomas.ulin@sun.com-20081121161314-jhz3twf5xjt8stnh) (pib:5)
[22 Nov 2008 0:45]
Bugs System
Pushed into 5.1.30-ndb-6.3.20 (revid:mats@sun.com-20081029203751-frvnckuoufkm3dpw) (version source revid:tomas.ulin@sun.com-20081121210644-zas6e9wa5kuj7d6f) (pib:5)
[27 Nov 2008 15:52]
Bugs System
Pushed into 5.1.30-ndb-6.4.0 (revid:mats@sun.com-20081029203751-frvnckuoufkm3dpw) (version source revid:tomas.ulin@sun.com-20081126125835-5sohkzk2jjwpq1wp) (pib:5)
