mirror of
https://github.com/MariaDB/server.git
synced 2025-02-19 20:05:35 +01:00

MDEV-19591 Assertion `!table->pos_in_locked_tables' failed in tc_release_table upon altering table into S3 under lock. The problem was that thd->open_tables->pos_in_locked_tables was not reset when alter table failed to reopen a locked table.
122 lines
3.5 KiB
Text
122 lines
3.5 KiB
Text
drop table if exists t1,t2,t3;
|
|
#
|
|
# Test ALTER TABLE to and from s3
|
|
#
|
|
create table t1 (a int, b int) engine=aria;
|
|
insert into t1 select seq,seq+10 from seq_1_to_1000;
|
|
alter table t1 engine=s3;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL,
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=S3 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
|
alter table t1 comment="hello";
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL,
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=S3 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 COMMENT='hello'
|
|
alter table t1 engine=aria;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL,
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 COMMENT='hello'
|
|
select count(*), sum(a), sum(b) from t1;
|
|
count(*) sum(a) sum(b)
|
|
1000 500500 510500
|
|
drop table t1;
|
|
#
|
|
# Test ALTER TABLE to and from s3 with rename
|
|
#
|
|
create table t1 (a int, b int) engine=aria select seq as a,seq+10 as b from seq_1_to_10;
|
|
alter table t1 rename to t2, engine=s3;
|
|
select count(*), sum(a), sum(b) from t2;
|
|
count(*) sum(a) sum(b)
|
|
10 55 155
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`a` int(11) DEFAULT NULL,
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=S3 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
|
alter table t2 rename to t3, engine=aria;
|
|
show create table t3;
|
|
Table Create Table
|
|
t3 CREATE TABLE `t3` (
|
|
`a` int(11) DEFAULT NULL,
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
|
select count(*), sum(a), sum(b) from t3;
|
|
count(*) sum(a) sum(b)
|
|
10 55 155
|
|
drop table t3;
|
|
#
|
|
# Test changing options for a s3 table
|
|
#
|
|
create table t1 (a int, b int) engine=aria select seq as a,seq+10 as b from seq_1_to_1000;
|
|
alter table t1 engine=s3;
|
|
alter table t1 engine=s3, compression_algorithm="zlib";
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL,
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=S3 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 `compression_algorithm`='zlib'
|
|
select count(*), sum(a), sum(b) from t1;
|
|
count(*) sum(a) sum(b)
|
|
1000 500500 510500
|
|
drop table t1;
|
|
#
|
|
# Test ALTER TABLE for S3
|
|
#
|
|
create table t1 (a int, b int) engine=aria select seq as a,seq+10 as b from seq_1_to_10;
|
|
alter table t1 add column c int, engine=s3;
|
|
alter table t1 add column d int;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL,
|
|
`b` int(11) DEFAULT NULL,
|
|
`c` int(11) DEFAULT NULL,
|
|
`d` int(11) DEFAULT NULL
|
|
) ENGINE=S3 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
|
select count(*), sum(a), sum(b), sum(c), sum(d) from t1;
|
|
count(*) sum(a) sum(b) sum(c) sum(d)
|
|
10 55 155 NULL NULL
|
|
drop table t1;
|
|
#
|
|
# Test ALTER TABLE with locked table for S3
|
|
#
|
|
create table t1 (a int, b int) engine=aria select seq as a,seq+10 as b from seq_1_to_10;
|
|
lock table t1 write;
|
|
alter table t1 add column c int, engine=s3;
|
|
ERROR HY000: Table 't1' is read only
|
|
unlock tables;
|
|
select count(*), sum(a), sum(b), sum(c) from t1;
|
|
count(*) sum(a) sum(b) sum(c)
|
|
10 55 155 NULL
|
|
lock table t1 write;
|
|
ERROR HY000: Table 't1' is read only
|
|
lock table t1 read;
|
|
select count(*), sum(a), sum(b), sum(c) from t1;
|
|
count(*) sum(a) sum(b) sum(c)
|
|
10 55 155 NULL
|
|
unlock tables;
|
|
drop table t1;
|
|
#
|
|
# Test RENAME TABLE
|
|
#
|
|
create table t1 (a int, b int) engine=aria select seq as a, seq+10 as b from seq_1_to_10;
|
|
alter table t1 engine=s3;
|
|
rename table t1 to t3;
|
|
alter table t3 rename t2;
|
|
select count(*), sum(a), sum(b) from t2;
|
|
count(*) sum(a) sum(b)
|
|
10 55 155
|
|
select count(*), sum(a), sum(b) from t1;
|
|
ERROR 42S02: Table 'database.t1' doesn't exist
|
|
drop table t2;
|