| Bug #46866 | AUTO_INCREMENT errors with partitioned Archive tables | ||
|---|---|---|---|
| Submitted: | 22 Aug 2009 20:31 | Modified: | 1 Oct 2010 12:43 |
| Reporter: | V Venkateswaran | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Partitions | Severity: | S3 (Non-critical) |
| Version: | 5.1, next bzr | OS: | Any |
| Assigned to: | Mattias Jonsson | CPU Architecture: | Any |
[22 Aug 2009 20:31]
V Venkateswaran
[23 Aug 2009 13:12]
Peter Laursen
I find lots of weird inconsistencies here (5.1.37 64-bit wondows server) also with an unpartitioned MyISAM table
USE test;
-- using partitions + Archive
DROP TABLE IF EXISTS t;
CREATE TABLE t (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(c1),
c2 INT) ENGINE=Archive PARTITION BY HASH(c1) PARTITIONS 2;
INSERT INTO t VALUES (-4,-20);
INSERT INTO t(c2) VALUES (30);
SHOW WARNINGS;
/*
Level Code Message
------- ------ -------------------------------------------
Warning 1264 Out of range value for column 'c1' at row 1
*/
SELECT * FROM t;
/*
c1 c2
---------- ------
-4 -20
2147483647 30
*/
INSERT INTO t(c2) VALUES (40); -- Error Code : 1022 Can't write; duplicate key in table 't'
-- no partitions + MyISAM
DROP TABLE IF EXISTS tt;
CREATE TABLE tt (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(c1),
c2 INT) ENGINE=MYISAM;
INSERT INTO tt VALUES (-4,-20);
INSERT INTO tt(c2) VALUES (30);
SHOW WARNINGS; -- empty result set
SELECT * FROM t;
/*
c1 c2
---------- ------
-4 -20
2147483647 30
*/
INSERT INTO t(c2) VALUES (40); -- Error Code : 1467 Failed to read auto-increment value from storage engine
-- inserting '1's in both tables
INSERT INTO t VALUES (1,-2); -- Error Code : 1022 Can't write; duplicate key in table 't'
INSERT INTO tt VALUES (1,-2); -- Error Code : 1062 Duplicate entry '1' for key 'PRIMARY'
-- inserting '10's in both tables
INSERT INTO t VALUES (10,-2); -- Error Code : 1022 Can't write; duplicate key in table 't'
INSERT INTO tt VALUES (10,-2); -- success
SELECT * FROM t;
/*
c1 c2
---------- ------
-4 -20
2147483647 30
*/
SELECT * FROM tt;
/*
c1 c2
------ ------
-4 -20
1 30
10 -2
look: now '2147483647' suddenly became '1' ????
*/
This is definitely more serious than 'S3' in my opinion!
[24 Aug 2009 6:14]
Sveta Smirnova
Thank you for the report. Verified as described.
[24 Aug 2009 6:18]
Sveta Smirnova
Peter, re your comment. You insert into tt then check t table first. So no mysterious 2147483647->1 conversion happens, you just select from wrong table first time.
[8 Sep 2009 8:24]
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/82639 3116 Mattias Jonsson 2009-09-08 Bug#46866: AUTO_INCREMENT errors with partitioned Archive tables Archive does not support decreasing AUTO_INCREMENT, since it does not support indexes (the PRIMARY KEY on AUTO_INCREMENT is enforced by only allowing higher values than the current max.) Bug was that negative AUTO_INCREMENT was converted to unsigned and become very large positive values instead. Solution was to treat all negative AUTO_INCREMENT values as (unsigned) 0. This means that one cannot insert negative values into an AUTO_INCREMENT column in a Archive table. @ mysql-test/suite/parts/inc/partition_auto_increment.inc Bug#46866: AUTO_INCREMENT errors with partitioned Archive tables Added verification tests for negative values on non partitioned engines and fixed the test to be used by both Archive and Blackhole. @ mysql-test/suite/parts/r/partition_auto_increment_archive.result Bug#46866: AUTO_INCREMENT errors with partitioned Archive tables Updated test result. @ mysql-test/suite/parts/r/partition_auto_increment_blackhole.result Bug#46866: AUTO_INCREMENT errors with partitioned Archive tables Updated test result. @ mysql-test/suite/parts/r/partition_auto_increment_innodb.result Bug#46866: AUTO_INCREMENT errors with partitioned Archive tables Updated test result. @ mysql-test/suite/parts/r/partition_auto_increment_memory.result Bug#46866: AUTO_INCREMENT errors with partitioned Archive tables Updated test result. @ mysql-test/suite/parts/r/partition_auto_increment_myisam.result Bug#46866: AUTO_INCREMENT errors with partitioned Archive tables Updated test result. @ mysql-test/suite/parts/r/partition_auto_increment_ndb.result Bug#46866: AUTO_INCREMENT errors with partitioned Archive tables Updated test result. @ mysql-test/suite/parts/t/partition_auto_increment_archive.test Bug#46866: AUTO_INCREMENT errors with partitioned Archive tables Updated test case to run test with negative auto_increments. @ mysql-test/suite/parts/t/partition_auto_increment_blackhole.test Bug#46866: AUTO_INCREMENT errors with partitioned Archive tables Updated test case to run test with negative auto_increments. @ storage/archive/ha_archive.cc Bug#46866: AUTO_INCREMENT errors with partitioned Archive tables Do not allow negative auto_increment (treat them as 0, which is never greater than the current auto_increment value.)
[26 May 2010 8:30]
Mattias Jonsson
pushed to mysql-next-mr-bugfixing
[15 Jun 2010 8:31]
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)
[4 Aug 2010 8:07]
Bugs System
Pushed into mysql-trunk 5.6.1-m4 (revid:alik@ibmvm-20100804080001-bny5271e65xo34ig) (version source revid:mmakela@bk-internal.mysql.com-20100415070122-1nxji8ym4mao13ao) (merge vers: 5.1.47) (pib:18)
[4 Aug 2010 8:23]
Bugs System
Pushed into mysql-trunk 5.6.1-m4 (revid:alik@ibmvm-20100804081533-c1d3rbipo9e8rt1s) (version source revid:mmakela@bk-internal.mysql.com-20100415070122-1nxji8ym4mao13ao) (merge vers: 5.1.47) (pib:18)
[6 Aug 2010 9:09]
Jon Stephens
No 5.6 changelog entry required, since this doesn't appear in any 5.6 release. Set NM status, waiting for pushes to 5.1/5.5.
[1 Oct 2010 12:43]
Jon Stephens
Mattias confirms no new merges expected, closing.
