Files
tidb/tests/integrationtest/r/ddl/sequence.result

503 lines
14 KiB
Plaintext

drop sequence if exists s;
create sequence s;
create temporary table tmp1 (id int);
select nextval(s);
nextval(s)
1
select lastval(s);
lastval(s)
1
drop sequence s;
drop sequence if exists seq;
drop sequence seq;
Error 4139 (HY000): Unknown SEQUENCE: 'ddl__sequence.seq'
create sequence seq;
drop sequence seq, seq2;
Error 4139 (HY000): Unknown SEQUENCE: 'ddl__sequence.seq2'
create table seq3 (a int);
drop sequence seq3;
Error 1347 (HY000): 'ddl__sequence.seq3' is not SEQUENCE
drop sequence unknown.seq;
Error 4139 (HY000): Unknown SEQUENCE: 'unknown.seq'
create sequence seq;
drop sequence seq;
drop sequence seq;
Error 4139 (HY000): Unknown SEQUENCE: 'ddl__sequence.seq'
create sequence seq;
drop table seq;
Error 1051 (42S02): Unknown table 'ddl__sequence.seq'
drop view seq;
Error 1347 (HY000): 'ddl__sequence.seq' is not VIEW
drop sequence seq;
drop user if exists myuser@localhost;
create user myuser@localhost;
create sequence my_seq;
grant select on ddl__sequence.* to 'myuser'@'localhost';
drop sequence my_seq;
Error 1142 (42000): DROP command denied to user 'myuser'@'localhost' for table 'my_seq'
drop sequence my_seq;
drop sequence if exists seq_if_exists;
show warnings;
Level Code Message
Note 4139 Unknown SEQUENCE: 'ddl__sequence.seq_if_exists'
drop table if exists t;
drop sequence if exists seq;
create table t(a int);
create sequence seq;
drop user if exists myuser@localhost;
create user myuser@localhost;
grant select on ddl__sequence.t to 'myuser'@'localhost';
show create table t;
Table Create Table
t CREATE TABLE `t` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
show create sequence seq;
Error 1142 (42000): SHOW command denied to user 'myuser'@'localhost' for table 'seq'
grant select on ddl__sequence.seq to 'myuser'@'localhost';
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB
drop sequence if exists seq;
create sequence seq;
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB
drop sequence if exists seq;
create sequence seq start 10;
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 10 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB
drop sequence if exists seq;
create sequence seq minvalue 0;
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 1 minvalue 0 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB
drop sequence if exists seq;
create sequence seq maxvalue 100;
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 100 increment by 1 cache 1000 nocycle ENGINE=InnoDB
drop sequence if exists seq;
create sequence seq increment = -2;
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with -1 minvalue -9223372036854775807 maxvalue -1 increment by -2 cache 1000 nocycle ENGINE=InnoDB
drop sequence if exists seq;
create sequence seq nocache;
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 nocache nocycle ENGINE=InnoDB
drop sequence if exists seq;
create sequence seq cycle;
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 cycle ENGINE=InnoDB
drop sequence if exists seq;
create sequence seq comment="ccc";
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB COMMENT='ccc'
drop sequence if exists seq;
create table seq (a int);
show create sequence seq;
Error 1347 (HY000): 'ddl__sequence.seq' is not SEQUENCE
drop table if exists seq;
drop sequence if exists seq;
create sequence seq;
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB
drop sequence if exists seq;
CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=InnoDB;
drop sequence if exists seq;
create sequence seq;
drop table if exists t;
create table t(a int not null default next value for seq key);
drop table if exists t;
create table t(a int not null default nextval(seq), b int, primary key(a));
create table t1 (a int default next value for seq);
create table t2 (a char(1) default next value for seq);
Error 8228 (HY000): Unsupported sequence default value for column type 'a'
create table t3 (a int default nextval(seq));
create table t4 (a int);
alter table t4 alter column a set default (next value for seq);
alter table t4 alter column a set default (nextval(seq));
create table t5 (a char(1));
alter table t5 alter column a set default (next value for seq);
Error 8228 (HY000): Unsupported sequence default value for column type 'a'
alter table t5 alter column a set default (nextval(seq));
Error 8228 (HY000): Unsupported sequence default value for column type 'a'
alter table t5 add column c int default next value for seq;
Error 8230 (HY000): Unsupported using sequence as default value in add column 'c'
alter table t5 add column c int default -1;
alter table t5 modify column c int default next value for seq;
alter table t5 alter column c set default (next value for seq);
alter table t5 change column c c int default next value for seq;
drop sequence if exists seq;
drop table if exists t;
create sequence seq;
create table t (a int default next value for seq);
insert into t values();
select * from t;
a
1
insert into t values(),(),();
select * from t;
a
1
2
3
4
delete from t;
insert into t values(-1),(default),(-1);
select * from t;
a
-1
5
-1
drop table if exists t;
create table t (a int);
insert into t values(next value for seq);
select * from t;
a
6
insert into t values(next value for seq),(nextval(seq));
select * from t;
a
6
7
8
delete from t;
insert into t values(next value for seq + 1),(nextval(seq) * 2);
select * from t;
a
10
20
delete from t;
insert into t values((next value for seq - 1) / 2);
select * from t;
a
5
delete from t;
insert into t values(-1),(next value for seq),(-1),(nextval(seq));
select * from t;
a
-1
12
-1
13
delete from t;
insert into t values(lastval(seq)),(-1),(nextval(seq));
select * from t;
a
13
-1
14
delete from t;
select setval(seq, 100);
setval(seq, 100)
100
insert into t values(lastval(seq)),(-1),(nextval(seq));
select * from t;
a
14
-1
101
drop sequence if exists seq;
create sequence seq;
drop table if exists t;
create table t (id int default next value for seq, col1 int generated always as (id + 1));
insert into t values();
select * from t;
id col1
1 2
insert into t values(),();
select * from t;
id col1
1 2
2 3
3 4
delete from t;
insert into t (id) values(-1),(default);
select * from t;
id col1
-1 0
4 5
select setval(seq,9223372036854775807);
setval(seq,9223372036854775807)
9223372036854775807
select nextval(seq);
Error 4135 (HY000): Sequence 'ddl__sequence.seq' has run out
drop sequence if exists seq;
drop table if exists t1,t2,t3;
create sequence seq;
create table t1 (a int);
create table t2 (a int, b int);
create table t3 (a int, b int, c int);
insert into t1 values(-1),(-1),(-1);
select nextval(seq), a from t1;
nextval(seq) a
1 -1
2 -1
3 -1
insert into t2 select nextval(seq), a from t1;
select * from t2;
a b
4 -1
5 -1
6 -1
delete from t2;
select lastval(seq), nextval(seq), a from t1;
lastval(seq) nextval(seq) a
6 7 -1
7 8 -1
8 9 -1
insert into t3 select lastval(seq), nextval(seq), a from t1;
select * from t3;
a b c
9 10 -1
10 11 -1
11 12 -1
delete from t3;
select nextval(seq), setval(seq,100), a from t1;
nextval(seq) setval(seq,100) a
13 100 -1
101 NULL -1
102 NULL -1
insert into t3 select nextval(seq), setval(seq,200), a from t1;
select * from t3;
a b c
103 200 -1
201 NULL -1
202 NULL -1
delete from t3;
select nextval(seq), lastval(seq), a from t1;
nextval(seq) lastval(seq) a
203 203 -1
204 204 -1
205 205 -1
insert into t3 select nextval(seq), lastval(seq), a from t1;
select * from t3;
a b c
206 206 -1
207 207 -1
208 208 -1
delete from t3;
select nextval(seq), nextval(seq), a from t1;
nextval(seq) nextval(seq) a
209 210 -1
211 212 -1
213 214 -1
insert into t3 select nextval(seq), nextval(seq), a from t1;
select * from t3;
a b c
215 216 -1
217 218 -1
219 220 -1
delete from t3;
select nextval(seq)+lastval(seq), a from t1;
nextval(seq)+lastval(seq) a
442 -1
444 -1
446 -1
insert into t2 select nextval(seq)+lastval(seq), a from t1;
select * from t2;
a b
448 -1
450 -1
452 -1
delete from t2;
select nextval(seq), b from (select nextval(seq) as b, a from t1) t2;
nextval(seq) b
227 228
229 230
231 232
insert into t2 select nextval(seq), b from (select nextval(seq) as b, a from t1) t2;
select * from t2;
a b
233 234
235 236
237 238
delete from t2;
drop sequence if exists seq;
create sequence seq;
drop table if exists t;
create table t(a int default next value for seq);
drop user if exists myuser@localhost;
create user myuser@localhost;
grant insert on ddl__sequence.t to 'myuser'@'localhost';
select nextval(seq);
Error 1142 (42000): INSERT command denied to user 'myuser'@'localhost' for table 'seq'
insert into t values();
Error 1142 (42000): INSERT command denied to user 'myuser'@'localhost' for table 'seq'
select lastval(seq);
Error 1142 (42000): SELECT command denied to user 'myuser'@'localhost' for table 'seq'
select setval(seq, 10);
Error 1142 (42000): INSERT command denied to user 'myuser'@'localhost' for table 'seq'
grant SELECT, INSERT on ddl__sequence.seq to 'myuser'@'localhost';
select nextval(seq);
nextval(seq)
1
select lastval(seq);
lastval(seq)
1
select setval(seq, 10);
setval(seq, 10)
10
insert into t values();
drop table t;
drop sequence seq;
drop user myuser@localhost;
drop sequence if exists seq;
drop table if exists t;
create sequence seq;
create table t(a int);
insert into t values(-1),(-1),(-1);
alter table t add column b int default -1;
select * from t;
a b
-1 -1
-1 -1
-1 -1
alter table t modify column b int default next value for seq;
select * from t;
a b
-1 -1
-1 -1
-1 -1
insert into t(a) values(-1),(-1);
select * from t;
a b
-1 -1
-1 -1
-1 -1
-1 1
-1 2
drop sequence seq;
drop table t;
create sequence seq;
create table t(a int);
insert into t values(-1),(-1),(-1);
alter table t add column b int default next value for seq;
Error 8230 (HY000): Unsupported using sequence as default value in add column 'b'
select * from t;
a
-1
-1
-1
drop sequence if exists seq;
create sequence seq cache -1;
Error 4136 (HY000): Sequence 'ddl__sequence.seq' values are conflicting
create sequence seq cache 0;
Error 4136 (HY000): Sequence 'ddl__sequence.seq' values are conflicting
create sequence seq INCREMENT -9223372036854775807 cache 1;
Error 4136 (HY000): Sequence 'ddl__sequence.seq' values are conflicting
create sequence seq cache 1;
drop sequence if exists seq;
create sequence seq;
alter sequence seq increment by 2 start with 2;
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 2 minvalue 1 maxvalue 9223372036854775806 increment by 2 cache 1000 nocycle ENGINE=InnoDB
drop sequence if exists seq;
create sequence seq;
select nextval(seq);
nextval(seq)
1
select nextval(seq);
nextval(seq)
2
select nextval(seq);
nextval(seq)
3
alter sequence seq increment by 2;
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 2 cache 1000 nocycle ENGINE=InnoDB
select nextval(seq);
nextval(seq)
1001
select nextval(seq);
nextval(seq)
1003
select nextval(seq);
nextval(seq)
1005
alter sequence seq restart with 9;
select nextval(seq);
nextval(seq)
9
select nextval(seq);
nextval(seq)
11
select nextval(seq);
nextval(seq)
13
alter sequence seq restart with 10;
select nextval(seq);
nextval(seq)
11
select nextval(seq);
nextval(seq)
13
select nextval(seq);
nextval(seq)
15
alter sequence seq restart;
select nextval(seq);
nextval(seq)
1
select nextval(seq);
nextval(seq)
3
select nextval(seq);
nextval(seq)
5
drop sequence if exists seq;
create sequence seq increment by 3;
select nextval(seq);
nextval(seq)
1
select nextval(seq);
nextval(seq)
4
select nextval(seq);
nextval(seq)
7
alter sequence seq increment by 4;
select nextval(seq);
nextval(seq)
3001
select nextval(seq);
nextval(seq)
3005
select nextval(seq);
nextval(seq)
3009
drop sequence if exists seq;
drop sequence if exists my_seq;
create sequence my_seq;
drop user if exists myuser@localhost;
create user myuser@localhost;
grant select on ddl__sequence.* to 'myuser'@'localhost';
alter sequence my_seq increment = 2;
Error 1142 (42000): ALTER command denied to user 'myuser'@'localhost' for table 'my_seq'
drop sequence if exists my_seq;
drop sequence if exists seq, cache_to_nocache_seq, nocache_to_cache_seq;
create sequence seq cache=1 nocache;
show create sequence seq;
Sequence Create Sequence
seq CREATE SEQUENCE `seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 nocache nocycle ENGINE=InnoDB
create sequence cache_to_nocache_seq;
alter sequence cache_to_nocache_seq nocache;
show create sequence cache_to_nocache_seq;
Sequence Create Sequence
cache_to_nocache_seq CREATE SEQUENCE `cache_to_nocache_seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 nocache nocycle ENGINE=InnoDB
create sequence nocache_to_cache_seq nocache;
alter sequence nocache_to_cache_seq cache 10;
show create sequence nocache_to_cache_seq;
Sequence Create Sequence
nocache_to_cache_seq CREATE SEQUENCE `nocache_to_cache_seq` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 10 nocycle ENGINE=InnoDB
drop sequence if exists seq, cache_to_nocache_seq, nocache_to_cache_seq;