--source include/have_sequence.inc --source include/have_innodb.inc drop table if exists t1; --echo # --echo # Test alter sequence --echo # --disable_ps2_protocol CREATE SEQUENCE t1 nocache engine=myisam; select * from t1; select next value for t1; alter sequence t1 start=50; show create sequence t1; select * from t1; select next value for t1; alter sequence t1 minvalue=-100; show create sequence t1; select * from t1; --error ER_SEQUENCE_INVALID_DATA alter sequence t1 minvalue=100 start=100; alter sequence t1 minvalue=100 start=100 restart=100; show create sequence t1; select * from t1; alter sequence t1 maxvalue=500; show create sequence t1; select * from t1; drop sequence t1; CREATE SEQUENCE t1 engine=myisam; alter sequence t1 nocache; show create sequence t1; alter sequence t1 cache=100; flush tables; show create sequence t1; alter sequence t1 nocache; show create sequence t1; flush tables; show create sequence t1; select * from t1; select next value for t1; select next value for t1; select next value for t1; select next_not_cached_value, cycle_count from t1; drop sequence t1; CREATE SEQUENCE t1 maxvalue=100 engine=myisam; alter sequence t1 no maxvalue; show create sequence t1; select * from t1; alter sequence t1 cycle; show create sequence t1; alter sequence t1 nocycle; alter sequence t1 start=15 restart minvalue=10 maxvalue=20 cycle; show create sequence t1; select * from t1; select NEXT VALUE for t1 from seq_1_to_10; alter sequence t1 restart with 17 minvalue=10 maxvalue=20 cycle; select NEXT VALUE for t1 from seq_1_to_10; drop sequence t1; CREATE SEQUENCE t1 maxvalue=100; alter sequence t1 increment=-2 start with 50 minvalue=-100; show create sequence t1; select * from t1; select NEXT VALUE for t1 from seq_1_to_10; drop sequence t1; --echo # --echo # InnoDB (some things work different with InnoDB) --echo CREATE SEQUENCE t1 cache 10 engine=innodb; select * from t1; select next value for t1; alter sequence t1 start=100; show create sequence t1; select * from t1; select next value for t1; drop sequence t1; --echo # --echo # ALTER TABLE --echo # CREATE SEQUENCE t1 engine=innodb; select next value for t1; alter table t1 rename t2; select next value for t2; rename table t2 to t1; select next value for t1; alter table t1 comment="foo"; show create sequence t1; alter table t1 engine=myisam; show create sequence t1; alter table t1 engine=innodb; show create sequence t1; select * from t1; drop sequence t1; # # Some error testing # CREATE SEQUENCE t1 engine=myisam; --error ER_SEQUENCE_INVALID_DATA alter sequence t1 minvalue=100; drop sequence t1; CREATE SEQUENCE t1 engine=myisam; --error ER_SEQUENCE_INVALID_DATA alter sequence t1 minvalue=25 maxvalue=20; drop sequence t1; create table t1 (a int); --error ER_NOT_SEQUENCE alter sequence t1 minvalue=100; drop table t1; --echo # --echo # MDEV-32795: ALTER SEQUENCE IF NOT EXISTS non_existing_seq Errors rather than note --echo # alter sequence if exists t1 minvalue=100; --error ER_UNKNOWN_SEQUENCES alter sequence t1 minvalue=100; create sequence t1; --error ER_PARSE_ERROR alter sequence t1; drop sequence t1; CREATE SEQUENCE t1 maxvalue=100; alter sequence t1 increment=-2 start with 50; select next value for t1; --error ER_SEQUENCE_RUN_OUT select next value for t1; select * from t1; alter sequence t1 restart; select next value for t1; alter sequence t1 restart with 90; select next value for t1; drop sequence t1; # # MDEV-19977 Assertion `(0xFUL & mode) == LOCK_S || (0xFUL & mode) == LOCK_X' # failed in lock_rec_lock # CREATE SEQUENCE t1 engine=innodb; --error ER_SEQUENCE_INVALID_TABLE_STRUCTURE ALTER IGNORE TABLE t1 ADD CHECK (start_value < minimum_value); DROP SEQUENCE t1; # # MDEV-19320 Sequence gets corrupted and produces ER_KEY_NOT_FOUND (Can't # find record) after ALTER .. ORDER BY # CREATE SEQUENCE s; --error ER_SEQUENCE_INVALID_TABLE_STRUCTURE ALTER TABLE s ORDER BY cache_size; SELECT NEXTVAL(s); DROP SEQUENCE s; --echo # --echo # MDEV-33169 Alter sequence 2nd ps fails while alter sequence 2nd time (no ps) succeeds --echo # create sequence s; show create sequence s; alter sequence s maxvalue 123; show create sequence s; alter sequence s maxvalue 123; show create sequence s; drop sequence s; create sequence s; show create sequence s; prepare stmt from 'alter sequence s maxvalue 123'; execute stmt; show create sequence s; execute stmt; show create sequence s; deallocate prepare stmt; drop sequence s; create sequence s; show create sequence s; create procedure p() alter sequence s maxvalue 123; call p; show create sequence s; call p; show create sequence s; drop procedure p; drop sequence s; --echo # --echo # End of 10.4 tests --echo # --echo # --echo # MDEV-31607 ER_DUP_KEY in mysql.table_stats upon REANME on sequence --echo # CREATE SEQUENCE s1 ENGINE=InnoDB; CREATE SEQUENCE s2 ENGINE=InnoDB; SHOW CREATE SEQUENCE s1; SHOW CREATE SEQUENCE s2; DROP SEQUENCE s2; RENAME TABLE s1 TO s2; DROP SEQUENCE s2; --echo # --echo # End of 10.6 tests --echo # --echo # --echo # MDEV-28152 Features for sequence --echo # # truncation in alter sequence create sequence s maxvalue 12345; show create sequence s; alter sequence s maxvalue 123456789012345678901234; show create sequence s; drop sequence s; # alter first from a narrower type to a wider type, then maxvalue create sequence s as tinyint; show create sequence s; show create table s; alter sequence s as int; show create sequence s; show create table s; alter sequence s maxvalue 12345; show create sequence s; show create table s; drop sequence s; # alter first maxvalue then from a wider type to a narrower type create sequence s; show create sequence s; show create table s; alter sequence s maxvalue 123; show create sequence s; show create table s; alter sequence s as tinyint; show create sequence s; show create table s; drop sequence s; # from a wider type to a narrower type with out of range values create sequence s as int; show create sequence s; show create table s; --error ER_WARN_DATA_OUT_OF_RANGE alter sequence s as tinyint; alter sequence s maxvalue 126; alter sequence s as tinyint; drop sequence s; # cannot alter both value type and something else yet. create sequence s as tinyint; show create sequence s; show create table s; --error ER_NOT_SUPPORTED_YET alter sequence s as int maxvalue 123; drop sequence s; # alter sequence causes discarding of cache values ## alter type then next create sequence s as smallint; select next value for s; # 1 alter sequence s as int; select next value for s; # 1001 drop sequence s; ## alter a tinyint sequence create sequence s as tinyint; select next value for s; # 1 alter sequence s cache 100; --error ER_SEQUENCE_RUN_OUT select next value for s; drop sequence s; # from signed to unsigned create sequence s as int; show create sequence s; show create table s; alter sequence s as int unsigned; show create sequence s; show create table s; drop sequence s; # for each type create sequence s as tinyint; alter sequence s maxvalue 123456789012345678901; show create sequence s; alter sequence s maxvalue 126; show create sequence s; select next value for s; alter sequence s maxvalue 63; show create sequence s; #fixme: should not run out --error ER_SEQUENCE_RUN_OUT select next value for s; drop sequence s; create sequence s as tinyint unsigned; alter sequence s maxvalue 123456789012345678901; show create sequence s; alter sequence s maxvalue 254; show create sequence s; select next value for s; alter sequence s maxvalue 120; show create sequence s; #fixme: should not run out --error ER_SEQUENCE_RUN_OUT select next value for s; drop sequence s; create sequence s as smallint; alter sequence s maxvalue 123456789012345678901; show create sequence s; alter sequence s maxvalue 32766; show create sequence s; select next value for s; alter sequence s maxvalue 16030; show create sequence s; select next value for s; drop sequence s; create sequence s as smallint unsigned; alter sequence s maxvalue 123456789012345678901; show create sequence s; alter sequence s maxvalue 65534; show create sequence s; select next value for s; alter sequence s maxvalue 32000; show create sequence s; select next value for s; drop sequence s; create sequence s as mediumint; alter sequence s maxvalue 123456789012345678901; show create sequence s; alter sequence s maxvalue 8388606; show create sequence s; select next value for s; alter sequence s maxvalue 4223212; show create sequence s; select next value for s; drop sequence s; create sequence s as mediumint unsigned; alter sequence s maxvalue 123456789012345678901; show create sequence s; alter sequence s maxvalue 16777214; show create sequence s; select next value for s; alter sequence s maxvalue 8389231; show create sequence s; select next value for s; drop sequence s; create sequence s as int; alter sequence s maxvalue 123456789012345678901; show create sequence s; alter sequence s maxvalue 2147483646; show create sequence s; select next value for s; alter sequence s maxvalue 1234567890; show create sequence s; select next value for s; drop sequence s; create sequence s as int unsigned; alter sequence s maxvalue 123456789012345678901; show create sequence s; alter sequence s maxvalue 4294967294; show create sequence s; select next value for s; alter sequence s maxvalue 2123834923; show create sequence s; select next value for s; drop sequence s; create sequence s as bigint; alter sequence s maxvalue 123456789012345678901; show create sequence s; alter sequence s maxvalue 9223372036854775806; show create sequence s; select next value for s; alter sequence s maxvalue 4683883928492758294; show create sequence s; select next value for s; drop sequence s; create sequence s as bigint unsigned; alter sequence s maxvalue 123456789012345678901; show create sequence s; alter sequence s maxvalue 18446744073709551614; show create sequence s; select next value for s; alter sequence s maxvalue 9432738420582397432; show create sequence s; select next value for s; drop sequence s; --enable_ps2_protocol --echo # --echo # End of 11.5 test --echo #