1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
|
set local sql_mode="";
set global sql_mode="";
connect con1, localhost, root;
connect con2, localhost, root;
#
# Additional test for WL#3726 "DDL locking for all metadata objects"
# Check that DDL and DML statements waiting for metadata locks can
# be killed. Note that we don't cover all situations here since it
# can be tricky to write test case for some of them (e.g. REPAIR or
# ALTER and other statements under LOCK TABLES).
#
create table t1 (i int primary key);
connect blocker, localhost, root, , ;
connect dml, localhost, root, , ;
connect ddl, localhost, root, , ;
# Test for RENAME TABLE
connection blocker;
lock table t1 read;
connection ddl;
rename table t1 to t2;
connection default;
kill query ID;
connection ddl;
ERROR 70100: Query execution was interrupted
# Test for DROP TABLE
drop table t1;
connection default;
kill query ID;
connection ddl;
ERROR 70100: Query execution was interrupted
# Test for CREATE TRIGGER
create trigger t1_bi before insert on t1 for each row set @a:=1;
connection default;
kill query ID;
connection ddl;
ERROR 70100: Query execution was interrupted
#
# Tests for various kinds of ALTER TABLE
#
# Full-blown ALTER which should copy table
alter table t1 add column j int;
connection default;
kill query ID;
connection ddl;
ERROR 70100: Query execution was interrupted
# Two kinds of simple ALTER
alter table t1 rename to t2;
connection default;
kill query ID;
connection ddl;
ERROR 70100: Query execution was interrupted
alter table t1 disable keys;
connection default;
kill query ID;
connection ddl;
ERROR 70100: Query execution was interrupted
# Fast ALTER
alter table t1 alter column i set default 100;
connection default;
kill query ID;
connection ddl;
ERROR 70100: Query execution was interrupted
# Special case which is triggered only for MERGE tables.
connection blocker;
unlock tables;
create table t2 (i int primary key) engine=merge union=(t1);
lock tables t2 read;
connection ddl;
alter table t2 alter column i set default 100;
connection default;
kill query ID;
connection ddl;
ERROR 70100: Query execution was interrupted
# Test for DML waiting for meta-data lock
connection blocker;
unlock tables;
lock tables t1 read;
connection ddl;
truncate table t1;
connection dml;
insert into t1 values (1);
connection default;
kill query ID2;
connection dml;
ERROR 70100: Query execution was interrupted
connection blocker;
unlock tables;
connection ddl;
# Test for DML waiting for tables to be flushed
connection blocker;
lock tables t1 read;
connection ddl;
# Let us mark locked table t1 as old
flush tables t1;
connection dml;
select * from t1;
connection default;
kill query ID2;
connection dml;
ERROR 70100: Query execution was interrupted
connection blocker;
unlock tables;
connection ddl;
# Cleanup.
connection default;
drop table t1;
drop table t2;
#
# Test kill USER
#
grant ALL on test.* to test@localhost;
grant ALL on test.* to test2@localhost;
connect con3, localhost, test,,;
connect con4, localhost, test2,,;
connection default;
kill hard query user test2@nohost;
affected rows: 0
kill soft query user test@localhost;
affected rows: 1
kill hard query user test@localhost;
affected rows: 1
kill soft connection user test2;
affected rows: 1
kill hard connection user test@localhost;
affected rows: 1
revoke all privileges on test.* from test@localhost;
revoke all privileges on test.* from test2@localhost;
drop user test@localhost;
drop user test2@localhost;
connection con3;
select 1;
Got one of the listed errors
connection con4;
select 1;
Got one of the listed errors
connection default;
#
# MDEV-4911 - add KILL query id, and add query id information to
# processlist
#
SELECT SLEEP(1000);
connection con1;
KILL QUERY ID @id;
connection default;
ERROR 70100: Query execution was interrupted
KILL QUERY ID 0;
ERROR HY000: Unknown query id: 0
#
# MDEV-5096 - Wrong error message on attempt to kill somebody else's
# query ID
#
CREATE USER u1@localhost;
SELECT SLEEP(1000);
connection con1;
connect con5, localhost, u1,,;
KILL QUERY ID ID;
ERROR HY000: You are not owner of query ID
connection con1;
KILL QUERY ID @id;
connection default;
ERROR 70100: Query execution was interrupted
disconnect con5;
DROP USER u1@localhost;
set global sql_mode=default;
disconnect con1;
disconnect con2;
#
# MDEV-17998
# Deadlock and eventual Assertion `!table->pos_in_locked_tables' failed
# in tc_release_table on KILL_TIMEOUT
#
SET max_statement_time= 2;
CREATE TABLE t1 (a INT);
CREATE VIEW v1 AS SELECT * FROM t1;
CREATE TABLE t2 (b INT, c INT);
LOCK TABLES v1 READ, t2 WRITE, t1 WRITE;
ALTER TABLE t1 CHANGE f1 f2 DOUBLE;
Got one of the listed errors
ALTER TABLE t2 DROP c;
UNLOCK TABLES;
DROP VIEW v1;
DROP TABLE t1, t2;
#
# KILL QUERY ID USER
#
kill query id user 'foo';
ERROR 42S22: Unknown column 'user' in 'KILL'
|