Bug #36411 | "Failed to read auto-increment value from storage engine" in 5.1.24 auto-inc | ||
---|---|---|---|
Submitted: | 29 Apr 2008 19:46 | Modified: | 18 Jun 2010 12:59 |
Reporter: | Shane Bester (Platinum Quality Contributor) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 5.1.24, 5.1.25 | OS: | Any |
Assigned to: | Sunny Bains | CPU Architecture: | Any |
Tags: | auto_increment, autoinc, error 1467 |
[29 Apr 2008 19:46]
Shane Bester
[29 Apr 2008 20:18]
MySQL Verification Team
see also bug #35602 for a different testcase (that never sets the auto-inc explicitly)
[29 Apr 2008 20:42]
Sveta Smirnova
Thank you for the report. Verified as described. With MyISAM storage engine bug is not repeatable.
[30 Apr 2008 14:19]
Heikki Tuuri
Sunny, please look at this, too.
[1 May 2008 23:24]
Sunny Bains
Heikki, Shane, This change in behavior is indeed due to the fix for bug #34335. Also, if in the test you add another INSERT INTO t values(); You will get the following error: ERROR 1062 (23000): Duplicate entry '0--' for key 'PRIMARY' This change in behavior is because InnoDB internally now treats the AUTOINC counter as an unsigned long long int, previously it used a signed type. The part that's not clear to me is what is the desired behavior, should an increment of -1 return 0 for signed columns or not ? The problem is that in a sense that's a wrap around and I'm not sure that is desirable behavior and/or whether it's correct. However I admit it's a (radical) departure from past behavior, so I'm open to suggestions. Regards, -sunny
[23 May 2008 14:01]
Sunny Bains
I have a patch for this, when users set -ve values explicitly for auto-increment columns it will not affect the internal table level counter. Regards, -sunny
[3 Jun 2008 13:08]
Heikki Tuuri
This is a minor bug, only to be fixed in 6.0.
[10 Jun 2008 0:54]
Sunny Bains
The proposed fix for this bug will also fix all init issues e.g., Bug# 35498. The proposed fix reads the AUTOINC value on table open, unlike the current scheme where it reads it on demand. Previously (before the new AUTOINC code), we read the AUTOINC code using full txn semantics and because of that we couldn't read the value during open. The new AUTOINC code uses InnoDB's low level functions to read the value and so the AUTOINC value can be read when the table is first opened. This not only simplifies the code but also gets rid of a lot non-determinism and some unnecessary locking. Regards, -sunny
[3 Jan 2009 18:21]
MySQL Verification Team
Bug: http://bugs.mysql.com/bug.php?id=41841 marked as duplicate of this one.
[7 Jan 2009 15:13]
Sam Kimmel
I'm sorry Heikki, but I respectfully disagree and wouldn't call this bug minor. If Sunny has a patch I'd like to see it integrated into the MySQL 5 line. Customers of shared hosts often do not have control over the version of MySQL that is available to them. These are the same customers who don't do much programming themselves and will not understand why their open source/boxed programs aren't working. Many developers use negative ids for special case db records. All installations of programs that make use of this technique will fail for versions 5.1.24 thru 5.1.30 (current version as of today). I like Sunny's idea for simply ignoring negative inserted ids.
[7 Jan 2009 15:34]
Peter Laursen
I agree that there should not be change in behaviour that breaks this true statement "Many developers use negative ids for special case db records." Also (to the extent possible) different storage engines should behave identically! Also I think it is quite a serious bug!
[8 Jan 2009 1:47]
Sunny Bains
Peter, Sam, This bug was fixed in Oct 2008 and -ve values will be ignored when updating the table AUTOINC counter. Inserting -ve values explicitly in INSERT statements is mentioned in the MySQL documentation and the results are actually undefined. http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html In case you can't see the private comments, the snapshot containing the fix was sent on 23 Oct 2008 (innodb-5.1-ss2858.tar.gz). The state "Patch queued" indicates that the patch is queued within MySQL's work queue. Regards, -sunny
[8 Jan 2009 2:26]
Sam Kimmel
Sorry, I'm not familiar with the MySQL patching process. How long does it take to work the patch into a release? If the patch has been ready since mid-October, should I expect it in the MySQL 5 series? Or is it queued because it is waiting for a v6 release as previously mentioned?
[5 Feb 2009 6:39]
Sveta Smirnova
Bug #42566 was marked as duplicate of this one. Fix is in version 5.1.31 and 5.0.67, but not reflected in the report for some reason.
[12 Mar 2009 21:23]
Paul DuBois
Noted in 5.1.31, 6.0.10 changelogs. InnoDB could fail to generate AUTO_INCREMENT values if rows previously had been inserted containing literal values for the AUTO_INCREMENT column.
[5 May 2010 15:17]
Bugs System
Pushed into 5.1.47 (revid:joro@sun.com-20100505145753-ivlt4hclbrjy8eye) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[6 May 2010 14:58]
Paul DuBois
Push resulted from incorporation of InnoDB tree. No changes pertinent to this bug. Re-closing.
[28 May 2010 6:04]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100524190136-egaq7e8zgkwb9aqi) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (pib:16)
[28 May 2010 6:33]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100524190941-nuudpx60if25wsvx) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[28 May 2010 7:00]
Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100524185725-c8k5q7v60i5nix3t) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[29 May 2010 23:19]
Paul DuBois
Push resulted from incorporation of InnoDB tree. No changes pertinent to this bug. Re-closing.
[15 Jun 2010 8:17]
Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100615080459-smuswd9ooeywcxuc) (version source revid:mmakela@bk-internal.mysql.com-20100415070122-1nxji8ym4mao13ao) (merge vers: 5.1.47) (pib:16)
[15 Jun 2010 8:34]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100615080558-cw01bzdqr1bdmmec) (version source revid:mmakela@bk-internal.mysql.com-20100415070122-1nxji8ym4mao13ao) (pib:16)
[17 Jun 2010 12:08]
Bugs System
Pushed into 5.1.47-ndb-7.0.16 (revid:martin.skold@mysql.com-20100617114014-bva0dy24yyd67697) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[17 Jun 2010 12:55]
Bugs System
Pushed into 5.1.47-ndb-6.2.19 (revid:martin.skold@mysql.com-20100617115448-idrbic6gbki37h1c) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[17 Jun 2010 13:36]
Bugs System
Pushed into 5.1.47-ndb-6.3.35 (revid:martin.skold@mysql.com-20100617114611-61aqbb52j752y116) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)