~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
#
2
# Testing of table locking
3
#
4
5
--disable_warnings
6
drop table if exists t1,t2;
7
--enable_warnings
8
CREATE TABLE t1 (  `id` int(11) NOT NULL default '0', `id2` int(11) NOT NULL default '0', `id3` int(11) NOT NULL default '0', `dummy1` char(30) default NULL, PRIMARY KEY  (`id`,`id2`), KEY `index_id3` (`id3`)) ENGINE=MyISAM;
9
insert into t1 (id,id2) values (1,1),(1,2),(1,3);
10
LOCK TABLE t1 WRITE;
11
select dummy1,count(distinct id) from t1 group by dummy1;
12
update t1 set id=-1 where id=1;
13
LOCK TABLE t1 READ;
14
--error 1099
15
update t1 set id=1 where id=1;
16
--error 1100
17
create table t2 SELECT * from t1;
18
create temporary table t2 SELECT * from t1;
19
drop table if exists t2;
20
unlock tables;
21
create table t2 SELECT * from t1;
22
LOCK TABLE t1 WRITE,t2 write;
23
insert into t2 SELECT * from t1;
24
update t1 set id=1 where id=-1;
25
drop table t1,t2;
26
27
28
#
29
# Check bug with INSERT ... SELECT with lock tables
30
#
31
32
CREATE TABLE t1 (
33
  index1 smallint(6) default NULL,
34
  nr smallint(6) default NULL,
35
  KEY index1(index1)
36
) ENGINE=MyISAM;
37
38
CREATE TABLE t2 (
39
  nr smallint(6) default NULL,
40
  name varchar(20) default NULL
41
) ENGINE=MyISAM;
42
43
INSERT INTO t2 VALUES (1,'item1');
44
INSERT INTO t2 VALUES (2,'item2');
45
46
# problem begins here!
47
lock tables t1 write, t2 read;
48
insert into t1 select 1,nr from t2 where name='item1';
49
insert into t1 select 2,nr from t2 where name='item2';
50
unlock tables;
51
check table t1;
52
53
# Check error message
54
lock tables t1 write;
55
check table t2;
56
--error 1100
57
insert into t1 select index1,nr from t1;
58
unlock tables;
59
lock tables t1 write, t1 as t1_alias read;
60
insert into t1 select index1,nr from t1 as t1_alias;
61
--error ER_TABLE_NOT_LOCKED
62
drop table t1,t2;
63
unlock tables;
64
drop table t1,t2;
65
66
#
67
# BUG#5390 - problems with merge tables
68
# Supplement test for the after-fix optimization
69
# Check that a dropped table is correctly removed from a lock.
70
create table t1 (c1 int);
71
create table t2 (c1 int);
72
create table t3 (c1 int);
73
lock tables t1 write, t2 write, t3 write;
74
# This removes one table after the other from the lock.
75
drop table t2, t3, t1;
76
#
77
# Check that a lock merge works.
78
create table t1 (c1 int);
79
create table t2 (c1 int);
80
create table t3 (c1 int);
81
lock tables t1 write, t2 write, t3 write, t1 as t4 read;
82
alter table t2 add column c2 int;
83
drop table t1, t2, t3;
84
85
# Bug7241 - Invalid response when DELETE .. USING and LOCK TABLES used.
86
#
87
create table t1 ( a int(11) not null auto_increment, primary key(a));
88
create table t2 ( a int(11) not null auto_increment, primary key(a));
89
lock tables t1 write, t2 read;
90
delete from t1 using t1,t2 where t1.a=t2.a;
91
delete t1 from t1,t2 where t1.a=t2.a;
92
--error 1099
93
delete from t2 using t1,t2 where t1.a=t2.a;
94
--error 1099
95
delete t2 from t1,t2 where t1.a=t2.a;
96
--error ER_TABLE_NOT_LOCKED_FOR_WRITE
97
drop table t1,t2;
98
unlock tables;
99
drop table t2,t1;
100
101
--echo End of 4.1 tests.
102
103
104
#
105
# Bug#18884 "lock table + global read lock = crash"
106
# The bug is not repeatable, just add the test case.
107
#
108
--disable_warnings
109
drop table if exists t1;
110
--enable_warnings
111
create table t1 (a int);
112
lock table t1 write;
113
--error ER_LOCK_OR_ACTIVE_TRANSACTION
114
flush tables with read lock;
115
unlock tables;
116
drop table t1;
117
118
119
#
120
# Test LOCK TABLE on system tables.  See bug#9953: CONVERT_TZ requires
121
# mysql.time_zone_name to be locked.
122
#
123
--disable_warnings
124
DROP TABLE IF EXISTS t1;
125
--enable_warnings
126
127
CREATE TABLE t1 (i INT);
128
129
LOCK TABLES mysql.time_zone READ, t1 READ;
130
UNLOCK TABLES;
131
132
LOCK TABLES mysql.time_zone READ,  t1 WRITE;
133
UNLOCK TABLES;
134
135
LOCK TABLES mysql.time_zone READ;
136
UNLOCK TABLES;
137
138
LOCK TABLES mysql.time_zone WRITE;
139
UNLOCK TABLES;
140
141
# If at least one system table is locked for WRITE, then all other
142
# tables should be system tables locked also for WRITE.
143
LOCK TABLES mysql.time_zone READ, t1 READ;
144
145
--error ER_WRONG_LOCK_OF_SYSTEM_TABLE
146
LOCK TABLES mysql.time_zone WRITE, t1 READ;
147
148
--error ER_WRONG_LOCK_OF_SYSTEM_TABLE
149
LOCK TABLES mysql.time_zone WRITE, t1 WRITE;
150
151
DROP TABLE t1;
152
153
--echo
154
--echo Cleanup.
155
--echo
156
157
--echo End of 5.1 tests.