45 lines
1.6 KiB
Plaintext
45 lines
1.6 KiB
Plaintext
drop table if exists t1;
|
|
#
|
|
# Test that alter during lock table aborts with error if
|
|
# global schema lock already exists
|
|
#
|
|
create table t1 (a int key) engine ndb row_format dynamic;
|
|
set session debug="+d,sleep_after_global_schema_lock";
|
|
alter table t1 add column (b int);
|
|
lock tables t1 write;
|
|
alter table t1 add column (c int);
|
|
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
|
|
alter table t1 add column (c int);
|
|
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
|
|
alter table t1 add column (c int);
|
|
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
|
|
unlock tables;
|
|
#
|
|
# Test that alter during lock works without global schema lock
|
|
# and that an alter done in parallell test serialized
|
|
#
|
|
lock tables t1 write;
|
|
# delay is still set after lock
|
|
alter table t1 add column (c int);
|
|
# issue alter in parallell, which should be hanging waiting on
|
|
alter table t1 add column (d int);
|
|
# check thread state which should be:
|
|
# "Waiting for allowed to take ndbcluster global schema lock"
|
|
# _not_ "Waiting for ndbcluster global schema lock"
|
|
select state from information_schema.processlist where info = "alter table t1 add column (d int)";
|
|
state
|
|
Waiting for allowed to take ndbcluster global schema lock
|
|
unlock tables;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL,
|
|
`b` int(11) DEFAULT NULL,
|
|
`c` int(11) DEFAULT NULL,
|
|
`d` int(11) DEFAULT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
|
# Cleanup
|
|
set session debug="-d,";
|
|
drop table t1;
|