--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; --enable_ps2_protocol --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-32350 Can't selectively restore sequences using innodb tables from --echo # backup --echo # --disable_ps_protocol create sequence s2 engine=innodb; alter table s2 discard tablespace; --error ER_GET_ERRNO SELECT NEXTVAL(s2); create sequence s1 engine=innodb; select * from s1; flush tables s1 for export; --let $MYSQLD_DATADIR= `select @@datadir` --move_file $MYSQLD_DATADIR/test/s1.cfg $MYSQLD_DATADIR/test/s2.cfg --copy_file $MYSQLD_DATADIR/test/s1.ibd $MYSQLD_DATADIR/test/s2.ibd unlock tables; --error ER_GET_ERRNO select * from s2; --error ER_GET_ERRNO SELECT NEXTVAL(s2); --error ER_GET_ERRNO alter sequence s2 restart; alter table s2 import tablespace; select * from s2; SELECT NEXTVAL(s2); select NEXTVAL(s1); flush table s1,s2; select * from s1; select * from s2; drop sequence s1,s2; --enable_ps_protocol --echo # --echo # MDEV-35144 CREATE TABLE ... LIKE uses current innodb_compression_default instead of the create value --echo # set @@innodb_compression_default= off; create or replace sequence s engine=innodb; set @@innodb_compression_default= on; create or replace table s_import like s; show create table s; show create table s_import; alter table s_import discard tablespace; flush table s for export; --copy_file $MYSQLD_DATADIR/test/s.ibd $MYSQLD_DATADIR/test/s_import.ibd --copy_file $MYSQLD_DATADIR/test/s.cfg $MYSQLD_DATADIR/test/s_import.cfg UNLOCK TABLES; alter table s_import import tablespace; drop table s,s_import; --echo # End of 10.5 tests