mirror of
https://github.com/MariaDB/server.git
synced 2025-11-25 17:25:02 +03:00
The bitmap is temporarily flipped to ~0 for the sake of checking all fields. It needs to be restored because it will be reused in second and subsequent ps execution.
205 lines
4.6 KiB
Plaintext
205 lines
4.6 KiB
Plaintext
--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 #
|