| Bug #19630 | stored function inserting into two auto_increment breaks statement-based binlog | ||
|---|---|---|---|
| Submitted: | 9 May 2006 11:32 | Modified: | 28 Jul 2006 22:15 |
| Reporter: | Guilhem Bichot | ||
| Status: | Verified | ||
| Category: | Server: Replication | Severity: | S2 (Serious) |
| Version: | 5.0 only | OS: | Linux (linux) |
| Assigned to: | Lars Thalmann | Target Version: | |
| Tags: | bfsm_2007_05_03, replication, autoincrement, mixed_binlog_format | ||
| Triage: | D2 (Serious) | ||
[9 May 2006 11:32]
Guilhem Bichot
[9 May 2006 14:19]
Guilhem Bichot
Btw the same problem happens when the function uses RAND() twice, but that one is documented: http://dev.mysql.com/doc/refman/5.0/en/stored-procedure-logging.html I doubt that we can just go ahead and document that "a stored function should not insert NULL into two auto_increment fields to not break binlog" as this would be quite a strong limitation. The same problem also exists if the function uses LAST_INSERT_ID() twice, which is not documented.
[9 May 2006 22:57]
Guilhem Bichot
on top of the Insert_id_log_event, there is also sometimes the "stored-in-query" one:
if (auto_increment_increment != 1)
{
*start++= Q_AUTO_INCREMENT;
int2store(start, auto_increment_increment);
int2store(start+2, auto_increment_offset);
start+= 4;
}
which makes it still more complicated.
[2 Jun 2006 17:14]
Guilhem Bichot
preparing a patch implementing the "mixed mode" solution.
[3 Jun 2006 11:50]
Lars Thalmann
See also BUG#20188
[7 Jun 2006 17:27]
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/7361
[16 Jun 2006 15:27]
Guilhem Bichot
http://lists.mysql.com/commits/7760
[11 Jul 2006 10:47]
Guilhem Bichot
Not fixed in 5.0 (agreed with Lars). pushed into replication team tree 5.1, will be in 5.1.12. ChangeSet guilhem@gbichot3.local|ChangeSet|20060709150047|19215 2006/07/09 17:00:47+02:00 guilhem@gbichot3.local +15 -0 * Mixed replication mode * : 1) Fix for BUG#19630 "stored function inserting into two auto_increment breaks statement-based binlog": a stored function inserting into two such tables may fail to replicate (inserting wrong data in the slave's copy of the second table) if the slave's second table had an internal auto_increment counter different from master's. Because the auto_increment value autogenerated by master for the 2nd table does not go into binlog, only the first does, so the slave lacks information. To fix this, if running in mixed binlogging mode, if the stored function or trigger plans to update two different tables both having auto_increment columns, we switch to row-based for the whole function. We don't have a simple solution for statement-based binlogging mode, there the bug remains and will be documented as a known problem.
[11 Jul 2006 10:51]
Guilhem Bichot
Note that the support team would like this to be fixed in 5.0 too (but then it could not be the same fix as in 5.1). Contact: Sinisa.
[28 Jul 2006 6:40]
Paul DuBois
Noted in 5.1.12 changelog.
[23 Jan 18:42]
Lars Thalmann
When fixing this, please make sure BUG#33029 is fixed too.
[29 May 8:26]
Daniel Jaenecke
The comment from Guilhem Bichot / 11 Jul 2006 says that this bugfix might be pushed to 5.0.x, too. Are there any chances this will happen (soon) or will this bug never be fixed in 5.0?
