Bug #42714 | AUTO_INCREMENT errors in 5.1.31 | ||
---|---|---|---|
Submitted: | 9 Feb 2009 19:51 | Modified: | 19 Jun 2010 17:41 |
Reporter: | Singer Wang | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S2 (Serious) |
Version: | 5.1.31, 5.1, 6.0 bzr | OS: | Linux (i386 and x86_64 verified) |
Assigned to: | CPU Architecture: | Any | |
Tags: | regression |
[9 Feb 2009 19:51]
Singer Wang
[9 Feb 2009 20:04]
Sveta Smirnova
Thank you for the report. I can not repeat any AUTO_INCREMENT error using test case provided. Please send us output from your environment.
[9 Feb 2009 20:18]
Singer Wang
mysql> create table test_a ( -> `a` int(11) unsigned NOT NULL AUTO_INCREMENT, -> `b` int(10) unsigned NOT NULL, -> `c` enum('FALSE','TRUE') DEFAULT NULL, -> PRIMARY KEY (`a`) -> ) ENGINE = InnoDB; create table test_b ( `m` int(11) unsigned NOT NULL AUTO_INCREMENT, `n` int(10) unsigned NOT NULL, `o` enum('FALSE','TRUE') DEFAULT NULL, PRIMARY KEY (`m`) Query OK, 0 rows affected (0.00 sec) ) ENGINE = InnoDB; mysql> mysql> create table test_b ( -> `m` int(11) unsigned NOT NULL AUTO_INCREMENT, -> `n` int(10) unsigned NOT NULL, -> `o` enum('FALSE','TRUE') DEFAULT NULL, -> PRIMARY KEY (`m`) -> ) ENGINE = InnoDB; INSERT INTO test_a (b,c) select n,o FROM test_b ; SELECT * FROM test_a; INSERT INTO test_a (b,c) SELECT n,o FROM test_b WHERE o = 'false'; SELECT * FROM test_a; Query OK, 0 rows affected (0.00 sec) mysql> mysql> INSERT INTO test_b (n,o) VALUES (1 , 'true'), (1 , 'false'), (2 , 'true'), (2 , 'false'), (3 , 'true'), (3 , 'false'), (4 , 'true'), (4 , 'false'), (5 , 'true'), (5 , 'false'); Query OK, 10 rows affected (0.00 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> mysql> INSERT INTO test_a (b,c) select n,o FROM test_b ; Query OK, 10 rows affected (0.00 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> mysql> INSERT INTO test_a (b,c) select n,o FROM test_b ; Query OK, 10 rows affected (0.00 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> mysql> SELECT * FROM test_a; +----+---+-------+ | a | b | c | +----+---+-------+ | 3 | 1 | TRUE | | 8 | 1 | FALSE | | 13 | 2 | TRUE | | 18 | 2 | FALSE | | 23 | 3 | TRUE | | 28 | 3 | FALSE | | 33 | 4 | TRUE | | 38 | 4 | FALSE | | 43 | 5 | TRUE | | 48 | 5 | FALSE | | 53 | 1 | TRUE | | 58 | 1 | FALSE | | 63 | 2 | TRUE | | 68 | 2 | FALSE | | 73 | 3 | TRUE | | 78 | 3 | FALSE | | 83 | 4 | TRUE | | 88 | 4 | FALSE | | 93 | 5 | TRUE | | 98 | 5 | FALSE | +----+---+-------+ 20 rows in set (0.00 sec) mysql> mysql> INSERT INTO test_a (b,c) SELECT n,o FROM test_b WHERE o = 'false'; Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> mysql> SELECT * FROM test_a; +-----+---+-------+ | a | b | c | +-----+---+-------+ | 3 | 1 | TRUE | | 8 | 1 | FALSE | | 13 | 2 | TRUE | | 18 | 2 | FALSE | | 23 | 3 | TRUE | | 28 | 3 | FALSE | | 33 | 4 | TRUE | | 38 | 4 | FALSE | | 43 | 5 | TRUE | | 48 | 5 | FALSE | | 53 | 1 | TRUE | | 58 | 1 | FALSE | | 63 | 2 | TRUE | | 68 | 2 | FALSE | | 73 | 3 | TRUE | | 78 | 3 | FALSE | | 83 | 4 | TRUE | | 88 | 4 | FALSE | | 93 | 5 | TRUE | | 98 | 5 | FALSE | | 123 | 1 | FALSE | | 128 | 2 | FALSE | | 133 | 3 | FALSE | | 138 | 4 | FALSE | | 143 | 5 | FALSE | +-----+---+-------+ 25 rows in set (0.00 sec) mysql> mysql> INSERT INTO test_a (b,c) SELECT n,o FROM test_b WHERE o = 'false'; ERROR 1062 (23000): Duplicate entry '143' for key 'PRIMARY' mysql> SELECT * FROM test_a; +-----+---+-------+ | a | b | c | +-----+---+-------+ | 3 | 1 | TRUE | | 8 | 1 | FALSE | | 13 | 2 | TRUE | | 18 | 2 | FALSE | | 23 | 3 | TRUE | | 28 | 3 | FALSE | | 33 | 4 | TRUE | | 38 | 4 | FALSE | | 43 | 5 | TRUE | | 48 | 5 | FALSE | | 53 | 1 | TRUE | | 58 | 1 | FALSE | | 63 | 2 | TRUE | | 68 | 2 | FALSE | | 73 | 3 | TRUE | | 78 | 3 | FALSE | | 83 | 4 | TRUE | | 88 | 4 | FALSE | | 93 | 5 | TRUE | | 98 | 5 | FALSE | | 123 | 1 | FALSE | | 128 | 2 | FALSE | | 133 | 3 | FALSE | | 138 | 4 | FALSE | | 143 | 5 | FALSE | +-----+---+-------+ 25 rows in set (0.00 sec) mysql> INSERT INTO test_a (b,c) SELECT n,o FROM test_b WHERE o = 'false'; Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> INSERT INTO test_a (b,c) SELECT n,o FROM test_b WHERE o = 'false'; Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> INSERT INTO test_a (b,c) SELECT n,o FROM test_b WHERE o = 'false'; ERROR 1062 (23000): Duplicate entry '203' for key 'PRIMARY' mysql> SELECT * FROM test_a; +-----+---+-------+ | a | b | c | +-----+---+-------+ | 3 | 1 | TRUE | | 8 | 1 | FALSE | | 13 | 2 | TRUE | | 18 | 2 | FALSE | | 23 | 3 | TRUE | | 28 | 3 | FALSE | | 33 | 4 | TRUE | | 38 | 4 | FALSE | | 43 | 5 | TRUE | | 48 | 5 | FALSE | | 53 | 1 | TRUE | | 58 | 1 | FALSE | | 63 | 2 | TRUE | | 68 | 2 | FALSE | | 73 | 3 | TRUE | | 78 | 3 | FALSE | | 83 | 4 | TRUE | | 88 | 4 | FALSE | | 93 | 5 | TRUE | | 98 | 5 | FALSE | | 123 | 1 | FALSE | | 128 | 2 | FALSE | | 133 | 3 | FALSE | | 138 | 4 | FALSE | | 143 | 5 | FALSE | | 148 | 1 | FALSE | | 153 | 2 | FALSE | | 158 | 3 | FALSE | | 163 | 4 | FALSE | | 168 | 5 | FALSE | | 183 | 1 | FALSE | | 188 | 2 | FALSE | | 193 | 3 | FALSE | | 198 | 4 | FALSE | | 203 | 5 | FALSE | +-----+---+-------+ 35 rows in set (0.00 sec) mysql>
[9 Feb 2009 20:18]
Singer Wang
also... mysql> \s -------------- /usr/local/mysql-5.1.31-linux-x86_64-glibc23/bin/mysql Ver 14.14 Distrib 5.1.31, for unknown-linux-gnu (x86_64) using readline 5.1 Connection id: 12 Current database: fark2 Current user: root@ SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.1.31 MySQL Community Server (GPL) Protocol version: 10 Connection: Localhost via UNIX socket Insert id: 183 Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /tmp/mysql_sandbox5131.sock Uptime: 1 hour 7 min 24 sec Threads: 1 Questions: 698 Slow queries: 0 Opens: 108 Flush tables: 1 Open tables: 12 Queries per second avg: 0.172 -------------- mysql>
[9 Feb 2009 20:33]
Singer Wang
Note that this only occurs if both the server and client is 5.1.31; if I use a 5.1.30 client this doesn't seem to occur..
[9 Feb 2009 20:38]
Sveta Smirnova
Thank you for the feedback. Verified as described with one note: server should be started with option --auto-increment-offset=5. Bug is not repeatable with MyISAM storage engine. Bug was introduced in version 5.1.31
[9 Feb 2009 21:35]
Singer Wang
acutally, auto_increment_offset was 3 and auto_increment_increment was 5.. mysql> mysql> mysql> show global variables like '%increment%'; +-----------------------------+-------+ | Variable_name | Value | +-----------------------------+-------+ | auto_increment_increment | 5 | | auto_increment_offset | 3 | | div_precision_increment | 4 | | innodb_autoextend_increment | 8 | +-----------------------------+-------+ 4 rows in set (0.01 sec) mysql> I've also attached system.txt (a full dump of show global variables, show global status)...
[9 Feb 2009 21:35]
Singer Wang
a dump of show global variables and show global status
Attachment: system.txt (text/plain), 0 bytes.
[9 Feb 2009 21:51]
Sveta Smirnova
Thank you for the additional information. Yes, I really meant any auto-increment-offset >1 :)
[13 Mar 2009 19:48]
Timothy Smith
Pushed to 5.1.33; Docs please return to "Patch approved" waiting for a 6.0 snapshot. Applying InnoDB snashot 5.1-ss4350, part 4. Fixes Bug #42714 AUTO_INCREMENT errors in 5.1.31 Detailed revision comments: r4287 | sunny | 2009-02-25 05:32:01 +0200 (Wed, 25 Feb 2009) | 10 lines branches/5.1: Fix Bug#42714 AUTO_INCREMENT errors in 5.1.31. There are two changes to the autoinc handling. 1. To fix the immediate problem from the bug report, we must ensure that the value written to the table is always less than the max value stored in dict_table_t. 2. The second related change is that according to MySQL documentation when the offset is greater than the increment, we should ignore the offset.
[15 Mar 2009 0:14]
Paul DuBois
Noted in 5.1.33 changelog. For InnoDB tables, spurious duplicate-key errors could occur when inserting into an AUTO_INCREMENT column. Setting report to Patch Approved pending push into 6.0.x.
[4 Sep 2009 1:52]
Roel Van de Paar
See bug #42994 (dup) See bug #47118 (5.1.37)
[14 Sep 2009 19:43]
Paul DuBois
Noted in 5.4.2 changelog.
[5 May 2010 15:18]
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 17:55]
Paul DuBois
Push resulted from incorporation of InnoDB tree. No changes pertinent to this bug. Re-closing.
[28 May 2010 6:03]
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:31]
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 6:59]
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 15:36]
Paul DuBois
Push resulted from incorporation of InnoDB tree. No changes pertinent to this bug. Re-closing.
[15 Jun 2010 8:16]
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:33]
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 11:47]
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:24]
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:12]
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)