@@ -1376,11 +1376,141 @@ SELECT * FROM t;
13761376i
137713771
13781378301
1379- 351
1379+ 601
13801380SHOW CREATE TABLE t;
13811381Table Create Table
13821382t CREATE TABLE `t` (
13831383 `i` int(11) NOT NULL AUTO_INCREMENT,
13841384 KEY `i` (`i`)
1385- ) ENGINE=InnoDB AUTO_INCREMENT=401 DEFAULT CHARSET=latin1
1385+ ) ENGINE=InnoDB AUTO_INCREMENT=651 DEFAULT CHARSET=latin1
1386+ DROP TABLE t;
1387+ #
1388+ # Bug#15851528 DUPLICATE KEY ERROR ON AUTO-INC PK WITH MIXED AUTO_INCREMENT_INCREMENT CLIENTS
1389+ #
1390+ # This test shows that the next record to be inserted is not affected
1391+ # by a change in auto_increment_increment.
1392+ # In addition, current value of auto_increment_increment by the client
1393+ # that uses the existing autoinc value with be used to set next autoinc
1394+ # value, which will be used by next client reguardless of its own session
1395+ # setting for auto_increment_increment.
1396+ #
1397+ # Client 1: Insert a record with auto_increment_increment=2
1398+ CREATE TABLE t(
1399+ a SERIAL PRIMARY KEY,
1400+ b VARCHAR(200)) ENGINE=InnoDB;
1401+ SET SESSION auto_increment_increment=2;
1402+ SHOW CREATE TABLE t;
1403+ Table Create Table
1404+ t CREATE TABLE `t` (
1405+ `a` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
1406+ `b` varchar(200) DEFAULT NULL,
1407+ PRIMARY KEY (`a`),
1408+ UNIQUE KEY `a` (`a`)
1409+ ) ENGINE=InnoDB DEFAULT CHARSET=latin1
1410+ INSERT INTO t(b) VALUES('S1');
1411+ SELECT a,b FROM t;
1412+ a b
1413+ 1 S1
1414+ # Client 2: Insert records with auto_increment_increment 2,1
1415+ SET SESSION auto_increment_increment=2;
1416+ SHOW CREATE TABLE t;
1417+ Table Create Table
1418+ t CREATE TABLE `t` (
1419+ `a` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
1420+ `b` varchar(200) DEFAULT NULL,
1421+ PRIMARY KEY (`a`),
1422+ UNIQUE KEY `a` (`a`)
1423+ ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
1424+ INSERT INTO t(b) VALUES('S2');
1425+ SELECT a,b FROM t;
1426+ a b
1427+ 1 S1
1428+ 3 S2
1429+ SET SESSION auto_increment_increment=1;
1430+ SHOW CREATE TABLE t;
1431+ Table Create Table
1432+ t CREATE TABLE `t` (
1433+ `a` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
1434+ `b` varchar(200) DEFAULT NULL,
1435+ PRIMARY KEY (`a`),
1436+ UNIQUE KEY `a` (`a`)
1437+ ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
1438+ INSERT INTO t(b) VALUES('S2');
1439+ SELECT a,b FROM t;
1440+ a b
1441+ 1 S1
1442+ 3 S2
1443+ 5 S2
1444+ # Client 1: Insert a record with auto_increment_increment=1
1445+ SET SESSION auto_increment_increment=1;
1446+ SHOW CREATE TABLE t;
1447+ Table Create Table
1448+ t CREATE TABLE `t` (
1449+ `a` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
1450+ `b` varchar(200) DEFAULT NULL,
1451+ PRIMARY KEY (`a`),
1452+ UNIQUE KEY `a` (`a`)
1453+ ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
1454+ INSERT INTO t(b) VALUES('S1');
1455+ SELECT a,b FROM t;
1456+ a b
1457+ 1 S1
1458+ 3 S2
1459+ 5 S2
1460+ 6 S1
1461+ DROP TABLE t;
1462+ # Autoincrement behaviour with mixed insert.
1463+ CREATE TABLE t(
1464+ a TINYINT AUTO_INCREMENT PRIMARY KEY,
1465+ b VARCHAR(200)) ENGINE=InnoDB;
1466+ SET SESSION auto_increment_increment=100;
1467+ SHOW CREATE TABLE t;
1468+ Table Create Table
1469+ t CREATE TABLE `t` (
1470+ `a` tinyint(4) NOT NULL AUTO_INCREMENT,
1471+ `b` varchar(200) DEFAULT NULL,
1472+ PRIMARY KEY (`a`)
1473+ ) ENGINE=InnoDB DEFAULT CHARSET=latin1
1474+ INSERT INTO t(b) VALUES('S0'),('S1');
1475+ SELECT a,b FROM t;
1476+ a b
1477+ 1 S0
1478+ 101 S1
1479+ SHOW CREATE TABLE t;
1480+ Table Create Table
1481+ t CREATE TABLE `t` (
1482+ `a` tinyint(4) NOT NULL AUTO_INCREMENT,
1483+ `b` varchar(200) DEFAULT NULL,
1484+ PRIMARY KEY (`a`)
1485+ ) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=latin1
1486+ INSERT INTO t(a,b) VALUES(28,'S2');
1487+ SELECT a,b FROM t;
1488+ a b
1489+ 1 S0
1490+ 28 S2
1491+ 101 S1
1492+ SET SESSION auto_increment_increment=1;
1493+ SHOW CREATE TABLE t;
1494+ Table Create Table
1495+ t CREATE TABLE `t` (
1496+ `a` tinyint(4) NOT NULL AUTO_INCREMENT,
1497+ `b` varchar(200) DEFAULT NULL,
1498+ PRIMARY KEY (`a`)
1499+ ) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=latin1
1500+ INSERT INTO t(b) VALUES('S3');
1501+ SELECT a,b FROM t;
1502+ a b
1503+ 1 S0
1504+ 28 S2
1505+ 101 S1
1506+ 127 S3
1507+ SHOW CREATE TABLE t;
1508+ Table Create Table
1509+ t CREATE TABLE `t` (
1510+ `a` tinyint(4) NOT NULL AUTO_INCREMENT,
1511+ `b` varchar(200) DEFAULT NULL,
1512+ PRIMARY KEY (`a`)
1513+ ) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=latin1
1514+ INSERT INTO t(b) VALUES('S4');
1515+ ERROR 23000: Duplicate entry '127' for key 'PRIMARY'
13861516DROP TABLE t;
0 commit comments