mirror of
https://github.com/MariaDB/server.git
synced 2025-07-05 19:08:12 +02:00

InnoDB does the following check for sequence table during check table command: - There should be only one index should exist on sequence table - There should be only one row should exist on sequence table - The leaf page must be the root page for the sequence table - Delete marked record should not exist - DB_TRX_ID and DB_ROLL_PTR of the record should be 0 and 1U << 55
147 lines
4 KiB
Text
147 lines
4 KiB
Text
create sequence s;
|
|
call mtr.add_suppression("ha_myisam");
|
|
call mtr.add_suppression("Checking table");
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check error Size of datafile is: 4 Should be: 58
|
|
test.s check error Corrupt
|
|
drop table s;
|
|
create sequence s;
|
|
insert into s values (3,1,9223372036854775806,1,1,1000,0,0);
|
|
select * from s;
|
|
next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count
|
|
3 1 9223372036854775806 1 1 1000 0 0
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check status OK
|
|
select nextval(s);
|
|
nextval(s)
|
|
3
|
|
drop sequence s;
|
|
CREATE SEQUENCE s;
|
|
ALTER TABLE s sequence=0;
|
|
insert into s values (3,1,9223372036854775806,1,1,1000,0,0);
|
|
FLUSH TABLES;
|
|
CHECK TABLE s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check Warning More than one row in the table
|
|
test.s check status OK
|
|
DROP SEQUENCE s;
|
|
CREATE SEQUENCE s;
|
|
ALTER TABLE s sequence=0;
|
|
delete from s;
|
|
FLUSH TABLES;
|
|
CHECK TABLE s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check Error Fewer than one row in the table
|
|
test.s check error Corrupt
|
|
DROP SEQUENCE s;
|
|
CREATE SEQUENCE s;
|
|
ALTER TABLE s sequence=0;
|
|
update s set minimum_value=200, maximum_value=100;
|
|
FLUSH TABLES;
|
|
CHECK TABLE s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check Error Sequence 'test.s' has out of range value for options
|
|
test.s check error Corrupt
|
|
DROP SEQUENCE s;
|
|
create sequence s minvalue 13 maxvalue 15 increment by 4;
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check status OK
|
|
select nextval(s);
|
|
nextval(s)
|
|
13
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check Warning Sequence 'test.s' has run out
|
|
test.s check status OK
|
|
alter sequence s cycle;
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check status OK
|
|
alter sequence s nocycle;
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check Warning Sequence 'test.s' has run out
|
|
test.s check status OK
|
|
alter sequence s increment by 1;
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check Warning Sequence 'test.s' has run out
|
|
test.s check status OK
|
|
alter sequence s increment by 4;
|
|
select nextval(s);
|
|
ERROR HY000: Sequence 'test.s' has run out
|
|
alter sequence s cycle;
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check status OK
|
|
alter sequence s maxvalue 23 nocycle;
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check status OK
|
|
alter sequence s maxvalue 15;
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check Warning Sequence 'test.s' has run out
|
|
test.s check status OK
|
|
drop sequence s;
|
|
create sequence s minvalue 13 maxvalue 20 increment by 1;
|
|
select nextval(s);
|
|
nextval(s)
|
|
13
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check status OK
|
|
select nextval(s);
|
|
nextval(s)
|
|
14
|
|
drop sequence s;
|
|
create sequence s minvalue 13 maxvalue 20 increment by 1;
|
|
select nextval(s);
|
|
nextval(s)
|
|
13
|
|
alter table s sequence=0;
|
|
alter table s sequence=1;
|
|
check table s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check Warning Sequence 'test.s' has run out
|
|
test.s check status OK
|
|
select nextval(s);
|
|
ERROR HY000: Sequence 'test.s' has run out
|
|
drop sequence s;
|
|
create sequence s;
|
|
update s set minimum_value=500, maximum_value=200;
|
|
ERROR HY000: Storage engine SEQUENCE of the table `test`.`s` doesn't have this option
|
|
drop sequence s;
|
|
#
|
|
# MDEV-35866 mariadb-check does not return warning for incorrect sequence with engine InnoDB
|
|
#
|
|
CREATE SEQUENCE s engine=innodb;
|
|
ALTER TABLE s sequence=0;
|
|
connect prevent_purge,localhost,root;
|
|
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
|
connection default;
|
|
delete from s;
|
|
FLUSH TABLES;
|
|
CHECK TABLE s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check Warning InnoDB: Encountered delete marked record in sequence table test/s.
|
|
test.s check error Corrupt
|
|
disconnect prevent_purge;
|
|
DROP SEQUENCE s;
|
|
CREATE SEQUENCE s engine=innodb;
|
|
CHECK TABLE s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check status OK
|
|
DROP SEQUENCE s;
|
|
CREATE SEQUENCE s engine=innodb;
|
|
ALTER TABLE s sequence=0;
|
|
insert into s values (2,1,9223372036854775806,1,1,1000,0,0);
|
|
FLUSH TABLES;
|
|
CHECK TABLE s;
|
|
Table Op Msg_type Msg_text
|
|
test.s check Warning InnoDB: Should have only one record in sequence table test/s. But it has 2 records.
|
|
test.s check error Corrupt
|
|
DROP SEQUENCE s;
|