mirror of
https://github.com/MariaDB/server.git
synced 2025-02-21 21:03:09 +01:00

-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEF39AEP5WyjM2MAMF8WVvJMdM0dgFAmck77AACgkQ8WVvJMdM 0dgccQ/+Lls8fWt4D+gMPP7x+drJSO/IE/gZFt3ugbWF+/p3B2xXAs5AAE83wxEh QSbp4DCkb/9PnuakhLmzg0lFbxMUlh4rsJ1YyiuLB2J+YgKbAc36eQQf+rtYSipd DT5uRk36c9wOcOXo/mMv4APEvpPXBIBdIL4VvpKFbIOE7xT24Sp767zWXdXqrB1f JgOQdM2ct+bvSPC55oZ5p1kqyxwvd6K6+3RB3CIpwW9zrVSLg7enT3maLjj/761s jvlRae+Cv+r+Hit9XpmEH6n2FYVgIJ3o3WhdAHwN0kxKabXYTg7OCB7QxDZiUHI9 C/5goKmKaPB1PCQyuTQyLSyyK9a8nPfgn6tqw/p/ZKDQhKT9sWJv/5bSWecrVndx LLYifSTrFC/eXLzgPvCnNv/U8SjsZaAdMIKS681+qDJ0P5abghUIlGnMYTjYXuX1 1B6Vrr0bdrQ3V1CLB3tpkRjpUvicrsabtuAUAP65QnEG2G9UJXklOer+DE291Gsl f1I0o6C1zVGAOkUUD3QEYaHD8w7hlvyfKme5oXKUm3DOjaAar5UUKLdr6prxRZL4 ebhmGEy42Mf8fBYoeohIxmxgvv6h2Xd9xCukgPp8hFpqJGw8abg7JNZTTKH4h2IY J51RpD10h4eoi6WRn3opEcjexTGvZ+xNR7yYO5WxWw6VIre9IUA= =s+WW -----END PGP SIGNATURE----- Merge tag '11.4' into 11.6 MariaDB 11.4.4 release
486 lines
12 KiB
Text
486 lines
12 KiB
Text
--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-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
|
|
|
|
--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;
|
|
|
|
--echo #
|
|
--echo # MDEV-33739 Assertion `0' failed in Type_handler_typelib::max_display_length_for_field
|
|
--echo #
|
|
|
|
CREATE SEQUENCE s1 ;
|
|
--error ER_SEQUENCE_INVALID_TABLE_STRUCTURE
|
|
ALTER table s1 CHANGE `next_not_cached_value` next_not_cached_value SET('1','2','3','4','5','6','7','8','9','10');
|
|
--error ER_SEQUENCE_INVALID_TABLE_STRUCTURE
|
|
ALTER table s1 CHANGE `next_not_cached_value` next_not_cached_value bool;
|
|
drop sequence s1;
|
|
|
|
--enable_ps2_protocol
|
|
|
|
--echo #
|
|
--echo # End of 11.5 test
|
|
--echo #
|