mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-28152 Features for sequences
- Add `as <int_type>` to sequence creation options - int_type can be signed or unsigned integer types, including tinyint, smallint, mediumint, int and bigint - Limitation: when alter sequence as <new_int_type>, cannot have any other alter options in the same statement - Limitation: increment remains signed longlong, and the hidden constraint (cache_size x abs(increment) < longlong_max) stays for unsigned types. This means for bigint unsigned, neither abs(increment) nor (cache_size x abs(increment)) can be between longlong_max and ulonglong_max - Truncating maxvalue and minvalue from user input to the nearest max or min value of the type, plus or minus 1. When the truncation happens, a warning is emitted - Information schema table for sequences
This commit is contained in:
@@ -214,8 +214,204 @@ DROP SEQUENCE s2;
|
||||
RENAME TABLE s1 TO s2;
|
||||
DROP SEQUENCE s2;
|
||||
|
||||
--enable_ps2_protocol
|
||||
|
||||
--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 #
|
||||
|
Reference in New Issue
Block a user