--source suite/xengine/include/have_xengine.inc # # auto-increment-offset and auto-increment-increment # ############################################ # TODO: # This test currently produces wrong result # on the line 36 of the result file and further # due to bug MySQL:47118. # When/if the bug is fixed, # the result will need to be updated ############################################ --echo #--------------------------- --echo # auto_increment_offset --echo #--------------------------- SET auto_increment_offset = 200; CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b CHAR(8)) ENGINE=xengine; # If auto_increment_offset is greater than auto_increment_increment, # the offset is ignored INSERT INTO t1 (a,b) VALUES (NULL,'a'),(NULL,'b'),(NULL,'c'); SELECT LAST_INSERT_ID(); SELECT a,b FROM t1 ORDER BY a; --echo #--------------------------- --echo # auto_increment_increment --echo #--------------------------- SET auto_increment_increment = 300; # offset should not be ignored anymore INSERT INTO t1 (a,b) VALUES (NULL,'d'),(NULL,'e'),(NULL,'f'); SELECT LAST_INSERT_ID(); SELECT a,b FROM t1 ORDER BY a; SET auto_increment_increment = 50; INSERT INTO t1 (a,b) VALUES (NULL,'g'),(NULL,'h'),(NULL,'i'); SELECT LAST_INSERT_ID(); SELECT a,b FROM t1 ORDER BY a; DROP TABLE t1; --echo #--------------------------- --echo # offset is greater than the max value --echo #--------------------------- SET auto_increment_increment = 500; SET auto_increment_offset = 300; CREATE TABLE t1 (a TINYINT AUTO_INCREMENT PRIMARY KEY) ENGINE=xengine; # now test with the 5.6 behavior just to be sure set @orig_sql_mode=@@session.sql_mode; set session sql_mode=""; INSERT INTO t1 (a) VALUES (NULL); set session sql_mode=@orig_sql_mode; SELECT LAST_INSERT_ID(); SELECT a FROM t1 ORDER BY a; DROP TABLE t1; #--echo #--------------------------- #--echo # test large autoincrement values #--echo #--------------------------- SET auto_increment_increment = 1; SET auto_increment_offset = 1; CREATE TABLE t1 (a BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, b CHAR(8)) ENGINE=xengine; INSERT INTO t1 VALUES (18446744073709551613, 'a'); SHOW CREATE TABLE t1; INSERT INTO t1 VALUES (NULL, 'b'); SHOW CREATE TABLE t1; --error ER_AUTOINC_READ_FAILED INSERT INTO t1 VALUES (NULL, 'c'); SELECT * FROM t1; DROP TABLE t1; SET auto_increment_increment = 300; CREATE TABLE t1 (a BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, b CHAR(8)) ENGINE=xengine; INSERT INTO t1 VALUES (18446744073709551613, 'a'); SHOW CREATE TABLE t1; --error ER_AUTOINC_READ_FAILED INSERT INTO t1 VALUES (NULL, 'b'); SHOW CREATE TABLE t1; --error ER_AUTOINC_READ_FAILED INSERT INTO t1 VALUES (NULL, 'c'); SELECT * FROM t1; DROP TABLE t1; SET auto_increment_offset = 200; CREATE TABLE t1 (a BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, b CHAR(8)) ENGINE=xengine; INSERT INTO t1 VALUES (18446744073709551613, 'a'); SHOW CREATE TABLE t1; --error ER_AUTOINC_READ_FAILED INSERT INTO t1 VALUES (NULL, 'b'); SHOW CREATE TABLE t1; --error ER_AUTOINC_READ_FAILED INSERT INTO t1 VALUES (NULL, 'c'); SELECT * FROM t1; DROP TABLE t1; --echo #---------------------------------- --echo # Issue #792 Crash in autoincrement --echo #---------------------------------- CREATE TABLE t1(C1 DOUBLE AUTO_INCREMENT KEY,C2 CHAR) ENGINE=xengine; INSERT INTO t1 VALUES(2177,0); DROP TABLE t1; CREATE TABLE t0(c0 BLOB) ENGINE=xengine; INSERT INTO t0 VALUES(0); ALTER TABLE t0 AUTO_INCREMENT=0; DROP TABLE t0; set auto_increment_offset = 1; set auto_increment_increment = 1; CREATE TABLE t1 (pk INT AUTO_INCREMENT, a INT, PRIMARY KEY(pk)) ENGINE=xengine; INSERT INTO t1 (a) VALUES (1); SHOW CREATE TABLE t1; select * from t1; UPDATE t1 SET pk = 100; SHOW CREATE TABLE t1; INSERT INTO t1 (a) VALUES (2); SELECT * FROM t1; #useless if less than current max_value ALTER TABLE t1 AUTO_INCREMENT 2; SHOW CREATE TABLE t1; INSERT INTO t1 (a) VALUES (3); select * from t1; #auto_increment value start from 200 ALTER TABLE t1 AUTO_INCREMENT 200; SHOW CREATE TABLE t1; INSERT INTO t1 (a) VALUES (4); select * from t1; DROP TABLE t1; --echo #---------------------------------- --echo # Issue #902 Debug assert in autoincrement with small field type --echo #---------------------------------- SET auto_increment_increment=100, auto_increment_offset=10; CREATE TABLE t1(i INT AUTO_INCREMENT PRIMARY KEY) ENGINE=xengine AUTO_INCREMENT=18446744073709551615; # ha_xengine::get_auto_increment would assert here --error ER_AUTOINC_READ_FAILED INSERT INTO t1 VALUES (NULL); SELECT * FROM t1; ALTER TABLE t1 AUTO_INCREMENT=1; INSERT INTO t1 VALUES (NULL); SELECT * FROM t1; ALTER TABLE t1 AUTO_INCREMENT=18446744073709551615; # ha_xengine::get_auto_increment would assert here --error ER_AUTOINC_READ_FAILED INSERT INTO t1 VALUES (NULL); SELECT * FROM t1; DROP TABLE t1; --source suite/xengine/include/check_xengine_log_error.inc