~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/r/innodb_mysql.result

  • Committer: Monty Taylor
  • Date: 2008-08-02 01:03:15 UTC
  • mto: (236.1.42 codestyle)
  • mto: This revision was merged to the branch mainline in revision 261.
  • Revision ID: monty@inaugust.com-20080802010315-65h5938pymg9d99z
Moved m4 macros to top-level m4 dir, per GNU standards (and where gettext wanted it :)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
set global innodb_support_xa=default;
2
 
set session innodb_support_xa=default;
3
 
SET SESSION STORAGE_ENGINE = InnoDB;
4
 
drop table if exists t1,t2,t3,t1m,t1i,t2m,t2i,t4;
5
 
create table t1 (
6
 
c_id int not null default '0',
7
 
org_id int default null,
8
 
unique key contacts$c_id (c_id),
9
 
key contacts$org_id (org_id)
10
 
);
11
 
insert into t1 values
12
 
(2,null),(120,null),(141,null),(218,7), (128,1),
13
 
(151,2),(234,2),(236,2),(243,2),(255,2),(259,2),(232,3),(235,3),(238,3),
14
 
(246,3),(253,3),(269,3),(285,3),(291,3),(293,3),(131,4),(230,4),(231,4);
15
 
create table t2 (
16
 
slai_id int not null default '0',
17
 
owner_tbl int default null,
18
 
owner_id int default null,
19
 
sla_id int default null,
20
 
inc_web int default null,
21
 
inc_email int default null,
22
 
inc_chat int default null,
23
 
inc_csr int default null,
24
 
inc_total int default null,
25
 
time_billed int default null,
26
 
activedate timestamp null default null,
27
 
expiredate timestamp null default null,
28
 
state int default null,
29
 
sla_set int default null,
30
 
unique key t2$slai_id (slai_id),
31
 
key t2$owner_id (owner_id),
32
 
key t2$sla_id (sla_id)
33
 
);
34
 
insert into t2(slai_id, owner_tbl, owner_id, sla_id) values
35
 
(1,3,1,1), (3,3,10,2), (4,3,3,6), (5,3,2,5), (6,3,8,3), (7,3,9,7),
36
 
(8,3,6,8), (9,3,4,9), (10,3,5,10), (11,3,11,11), (12,3,7,12);
37
 
flush tables;
38
 
select si.slai_id
39
 
from t1 c join t2 si on
40
 
((si.owner_tbl = 3 and si.owner_id = c.org_id) or
41
 
( si.owner_tbl = 2 and si.owner_id = c.c_id))
42
 
where
43
 
c.c_id = 218 and expiredate is null;
44
 
slai_id
45
 
12
46
 
select * from t1 where org_id is null;
47
 
c_id    org_id
48
 
2       NULL
49
 
120     NULL
50
 
141     NULL
51
 
select si.slai_id
52
 
from t1 c join t2 si on
53
 
((si.owner_tbl = 3 and si.owner_id = c.org_id) or
54
 
( si.owner_tbl = 2 and si.owner_id = c.c_id))
55
 
where
56
 
c.c_id = 218 and expiredate is null;
57
 
slai_id
58
 
12
59
 
drop table t1, t2;
60
 
CREATE TABLE t1 (a int, b int, KEY b (b));
61
 
CREATE TABLE t2 (a int, b int, PRIMARY KEY  (a,b));
62
 
CREATE TABLE t3 (a int, b int, c int, PRIMARY KEY  (a),
63
 
UNIQUE KEY b (b,c), KEY a (a,b,c));
64
 
INSERT INTO t1 VALUES (1, 1);
65
 
INSERT INTO t1 SELECT a + 1, b + 1 FROM t1;
66
 
INSERT INTO t1 SELECT a + 2, b + 2 FROM t1;
67
 
INSERT INTO t2 VALUES (1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8);
68
 
INSERT INTO t2 SELECT a + 1, b FROM t2;
69
 
DELETE FROM t2 WHERE a = 1 AND b < 2;
70
 
INSERT INTO t3 VALUES (1,1,1),(2,1,2);
71
 
INSERT INTO t3 SELECT a + 2, a + 2, 3 FROM t3;
72
 
INSERT INTO t3 SELECT a + 4, a + 4, 3 FROM t3;
73
 
SELECT STRAIGHT_JOIN t1.b, t1.a FROM t1, t3, t2 WHERE
74
 
t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2)
75
 
ORDER BY t1.b LIMIT 2;
76
 
b       a
77
 
1       1
78
 
2       2
79
 
SELECT STRAIGHT_JOIN t1.b, t1.a FROM t1, t3, t2 WHERE
80
 
t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2)
81
 
ORDER BY t1.b LIMIT 5;
82
 
b       a
83
 
1       1
84
 
2       2
85
 
2       2
86
 
3       3
87
 
3       3
88
 
DROP TABLE t1, t2, t3;
89
 
CREATE TABLE `t1` (`id1` INT) ;
90
 
INSERT INTO `t1` (`id1`) VALUES (1),(5),(2);
91
 
CREATE TABLE `t2` (
92
 
`id1` INT,
93
 
`id2` INT NOT NULL,
94
 
`id3` INT,
95
 
`id4` INT NOT NULL,
96
 
UNIQUE (`id2`,`id4`),
97
 
KEY (`id1`)
98
 
);
99
 
INSERT INTO `t2`(`id1`,`id2`,`id3`,`id4`) VALUES
100
 
(1,1,1,0),
101
 
(1,1,2,1),
102
 
(5,1,2,2),
103
 
(6,1,2,3),
104
 
(1,2,2,2),
105
 
(1,2,1,1);
106
 
SELECT `id1` FROM `t1` WHERE `id1` NOT IN (SELECT `id1` FROM `t2` WHERE `id2` = 1 AND `id3` = 2);
107
 
id1
108
 
2
109
 
DROP TABLE t1, t2;
110
 
CREATE TABLE t1(c1 TEXT, UNIQUE (c1(1)), cnt INT DEFAULT 1)
111
 
ENGINE=INNODB;
112
 
INSERT INTO t1 (c1) VALUES ('1a');
113
 
SELECT * FROM t1;
114
 
c1      cnt
115
 
1a      1
116
 
INSERT INTO t1 (c1) VALUES ('1b') ON DUPLICATE KEY UPDATE cnt=cnt+1;
117
 
SELECT * FROM t1;
118
 
c1      cnt
119
 
1a      2
120
 
DROP TABLE t1;
121
 
CREATE TABLE t1(c1 VARCHAR(2), UNIQUE (c1(1)), cnt INT DEFAULT 1)
122
 
ENGINE=INNODB;
123
 
INSERT INTO t1 (c1) VALUES ('1a');
124
 
SELECT * FROM t1;
125
 
c1      cnt
126
 
1a      1
127
 
INSERT INTO t1 (c1) VALUES ('1b') ON DUPLICATE KEY UPDATE cnt=cnt+1;
128
 
SELECT * FROM t1;
129
 
c1      cnt
130
 
1a      2
131
 
DROP TABLE t1;
132
 
CREATE TABLE t1(c1 CHAR(2), UNIQUE (c1(1)), cnt INT DEFAULT 1)
133
 
ENGINE=INNODB;
134
 
INSERT INTO t1 (c1) VALUES ('1a');
135
 
SELECT * FROM t1;
136
 
c1      cnt
137
 
1a      1
138
 
INSERT INTO t1 (c1) VALUES ('1b') ON DUPLICATE KEY UPDATE cnt=cnt+1;
139
 
SELECT * FROM t1;
140
 
c1      cnt
141
 
1a      2
142
 
DROP TABLE t1;
143
 
CREATE TABLE t1 (
144
 
a1 decimal(10,0) DEFAULT NULL,
145
 
a2 blob,
146
 
a3 time DEFAULT NULL,
147
 
a4 blob,
148
 
a5 char(175) DEFAULT NULL,
149
 
a6 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
150
 
a7 blob,
151
 
INDEX idx (a6,a7(239),a5)
152
 
) ENGINE=InnoDB;
153
 
EXPLAIN SELECT a4 FROM t1 WHERE
154
 
a6=NULL AND
155
 
a4='UNcT5pIde4I6c2SheTo4gt92OV1jgJCVkXmzyf325R1DwLURkbYHwhydANIZMbKTgdcR5xS';
156
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
157
 
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
158
 
EXPLAIN SELECT t1.a4 FROM t1, t1 t WHERE
159
 
t.a6=t.a6 AND t1.a6=NULL AND
160
 
t1.a4='UNcT5pIde4I6c2SheTo4gt92OV1jgJCVkXmzyf325R1DwLURkbYHwhydANIZMbKTgdcR5xS';
161
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
162
 
1       SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE noticed after reading const tables
163
 
DROP TABLE t1;
164
 
create table t1m (a int) engine = MEMORY;
165
 
create table t1i (a int);
166
 
create table t2m (a int) engine = MEMORY;
167
 
create table t2i (a int);
168
 
insert into t2m values (5);
169
 
insert into t2i values (5);
170
 
select 1, min(a) from t1i where a=99;
171
 
1       min(a)
172
 
1       NULL
173
 
select 1, min(a) from t1i where 1=99;
174
 
1       min(a)
175
 
1       NULL
176
 
select 1, min(1) from t1i where a=99;
177
 
1       min(1)
178
 
1       NULL
179
 
select 1, min(1) from t1i where 1=99;
180
 
1       min(1)
181
 
1       NULL
182
 
select 1, max(a) from t1i where a=99;
183
 
1       max(a)
184
 
1       NULL
185
 
select 1, max(a) from t1i where 1=99;
186
 
1       max(a)
187
 
1       NULL
188
 
select 1, max(1) from t1i where a=99;
189
 
1       max(1)
190
 
1       NULL
191
 
select 1, max(1) from t1i where 1=99;
192
 
1       max(1)
193
 
1       NULL
194
 
explain select count(*), min(7), max(7) from t1m, t1i;
195
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
196
 
1       SIMPLE  t1m     system  NULL    NULL    NULL    NULL    0       const row not found
197
 
1       SIMPLE  t1i     ALL     NULL    NULL    NULL    NULL    1       
198
 
select count(*), min(7), max(7) from t1m, t1i;
199
 
count(*)        min(7)  max(7)
200
 
0       NULL    NULL
201
 
explain select count(*), min(7), max(7) from t1m, t2i;
202
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
203
 
1       SIMPLE  t1m     system  NULL    NULL    NULL    NULL    0       const row not found
204
 
1       SIMPLE  t2i     ALL     NULL    NULL    NULL    NULL    1       
205
 
select count(*), min(7), max(7) from t1m, t2i;
206
 
count(*)        min(7)  max(7)
207
 
0       NULL    NULL
208
 
explain select count(*), min(7), max(7) from t2m, t1i;
209
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
210
 
1       SIMPLE  t2m     system  NULL    NULL    NULL    NULL    1       
211
 
1       SIMPLE  t1i     ALL     NULL    NULL    NULL    NULL    1       
212
 
select count(*), min(7), max(7) from t2m, t1i;
213
 
count(*)        min(7)  max(7)
214
 
0       NULL    NULL
215
 
drop table t1m, t1i, t2m, t2i;
216
 
create table t1 (
217
 
a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(64) default ' '
218
 
) ENGINE = MEMORY;
219
 
insert into t1 (a1, a2, b, c, d) values
220
 
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
221
 
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
222
 
('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
223
 
('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
224
 
('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
225
 
('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
226
 
('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
227
 
('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
228
 
('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
229
 
('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
230
 
('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
231
 
('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4'),
232
 
('d','a','a','a411','xy1'),('d','a','a','b411','xy2'),('d','a','a','c411','xy3'),('d','a','a','d411','xy4'),
233
 
('d','a','b','e412','xy1'),('d','a','b','f412','xy2'),('d','a','b','g412','xy3'),('d','a','b','h412','xy4'),
234
 
('d','b','a','i421','xy1'),('d','b','a','j421','xy2'),('d','b','a','k421','xy3'),('d','b','a','l421','xy4'),
235
 
('d','b','b','m422','xy1'),('d','b','b','n422','xy2'),('d','b','b','o422','xy3'),('d','b','b','p422','xy4'),
236
 
('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
237
 
('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
238
 
('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
239
 
('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
240
 
('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
241
 
('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
242
 
('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
243
 
('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
244
 
('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
245
 
('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
246
 
('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
247
 
('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4'),
248
 
('d','a','a','a411','xy1'),('d','a','a','b411','xy2'),('d','a','a','c411','xy3'),('d','a','a','d411','xy4'),
249
 
('d','a','b','e412','xy1'),('d','a','b','f412','xy2'),('d','a','b','g412','xy3'),('d','a','b','h412','xy4'),
250
 
('d','b','a','i421','xy1'),('d','b','a','j421','xy2'),('d','b','a','k421','xy3'),('d','b','a','l421','xy4'),
251
 
('d','b','b','m422','xy1'),('d','b','b','n422','xy2'),('d','b','b','o422','xy3'),('d','b','b','p422','xy4');
252
 
create table t4 (
253
 
pk_col int auto_increment primary key, a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(64) default ' '
254
 
);
255
 
insert into t4 (a1, a2, b, c, d, dummy) select * from t1;
256
 
create index idx12672_0 on t4 (a1);
257
 
create index idx12672_1 on t4 (a1,a2,b,c);
258
 
create index idx12672_2 on t4 (a1,a2,b);
259
 
analyze table t4;
260
 
Table   Op      Msg_type        Msg_text
261
 
test.t4 analyze status  OK
262
 
select distinct a1 from t4 where pk_col not in (1,2,3,4);
263
 
a1
264
 
a
265
 
b
266
 
c
267
 
d
268
 
drop table t1,t4;
269
 
DROP TABLE IF EXISTS t2, t1;
270
 
CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE= InnoDB;
271
 
CREATE TABLE t2 (
272
 
i INT NOT NULL,
273
 
FOREIGN KEY (i) REFERENCES t1 (i) ON DELETE NO ACTION
274
 
) ENGINE= InnoDB;
275
 
INSERT INTO t1 VALUES (1);
276
 
INSERT INTO t2 VALUES (1);
277
 
DELETE IGNORE FROM t1 WHERE i = 1;
278
 
Warnings:
279
 
Error   1451    Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`i`) REFERENCES `t1` (`i`) ON DELETE NO ACTION)
280
 
SELECT * FROM t1, t2;
281
 
i       i
282
 
1       1
283
 
DROP TABLE t2, t1;
284
 
End of 4.1 tests.
285
 
create table t1 (
286
 
a varchar(30), b varchar(30), primary key(a), key(b)
287
 
);
288
 
select distinct a from t1;
289
 
a
290
 
drop table t1;
291
 
create table t1(a int, key(a));
292
 
insert into t1 values(1);
293
 
select a, count(a) from t1 group by a with rollup;
294
 
a       count(a)
295
 
1       1
296
 
NULL    1
297
 
drop table t1;
298
 
create table t1 (f1 int, f2 char(1), primary key(f1,f2));
299
 
insert into t1 values ( 1,"e"),(2,"a"),( 3,"c"),(4,"d");
300
 
alter table t1 drop primary key, add primary key (f2, f1);
301
 
explain select distinct f1 a, f1 b from t1;
302
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
303
 
1       SIMPLE  t1      index   NULL    PRIMARY 10      NULL    4       Using index; Using temporary
304
 
explain select distinct f1, f2 from t1;
305
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
306
 
1       SIMPLE  t1      range   NULL    PRIMARY 10      NULL    3       Using index for group-by; Using temporary
307
 
drop table t1;
308
 
CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, name varchar(20),
309
 
INDEX (name));
310
 
CREATE TABLE t2 (id int NOT NULL PRIMARY KEY, fkey int);
311
 
ALTER TABLE t2 ADD FOREIGN KEY (fkey) REFERENCES t2(id);
312
 
INSERT INTO t1 VALUES (1,'A1'),(2,'A2'),(3,'B');
313
 
INSERT INTO t2 VALUES (1,1),(2,2),(3,2),(4,3),(5,3);
314
 
EXPLAIN
315
 
SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id
316
 
WHERE t1.name LIKE 'A%';
317
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
318
 
1       SIMPLE  t1      index   PRIMARY,name    PRIMARY 4       NULL    3       Using where
319
 
1       SIMPLE  t2      ref     fkey    fkey    5       test.t1.id      1       Using index
320
 
EXPLAIN
321
 
SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id
322
 
WHERE t1.name LIKE 'A%' OR FALSE;
323
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
324
 
1       SIMPLE  t2      index   NULL    PRIMARY 4       NULL    5       
325
 
1       SIMPLE  t1      eq_ref  PRIMARY PRIMARY 4       test.t2.fkey    1       Using where
326
 
DROP TABLE t1,t2;
327
 
CREATE TABLE t1 (
328
 
id int NOT NULL,
329
 
name varchar(20) NOT NULL,
330
 
dept varchar(20) NOT NULL,
331
 
age int NOT NULL,
332
 
PRIMARY KEY (id),
333
 
INDEX (name,dept)
334
 
) ENGINE=InnoDB;
335
 
INSERT INTO t1(id, dept, age, name) VALUES
336
 
(3987, 'cs1', 10, 'rs1'), (3988, 'cs2', 20, 'rs1'), (3995, 'cs3', 10, 'rs2'),
337
 
(3996, 'cs4', 20, 'rs2'), (4003, 'cs5', 10, 'rs3'), (4004, 'cs6', 20, 'rs3'),
338
 
(4011, 'cs7', 10, 'rs4'), (4012, 'cs8', 20, 'rs4'), (4019, 'cs9', 10, 'rs5'),
339
 
(4020, 'cs10', 20, 'rs5'),(4027, 'cs11', 10, 'rs6'),(4028, 'cs12', 20, 'rs6');
340
 
EXPLAIN SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5';
341
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
342
 
1       SIMPLE  t1      range   name    name    164     NULL    2       Using where; Using index for group-by
343
 
SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5';
344
 
name    dept
345
 
rs5     cs10
346
 
rs5     cs9
347
 
DELETE FROM t1;
348
 
EXPLAIN SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5';
349
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
350
 
1       SIMPLE  t1      range   name    name    164     NULL    2       Using where; Using index for group-by
351
 
SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5';
352
 
name    dept
353
 
DROP TABLE t1;
354
 
drop table if exists t1;
355
 
show variables like 'innodb_rollback_on_timeout';
356
 
Variable_name   Value
357
 
innodb_rollback_on_timeout      OFF
358
 
create table t1 (a int not null primary key) engine = innodb;
359
 
insert into t1 values (1);
360
 
commit;
361
 
begin work;
362
 
insert into t1 values (2);
363
 
select * from t1;
364
 
a
365
 
1
366
 
2
367
 
begin work;
368
 
insert into t1 values (5);
369
 
select * from t1;
370
 
a
371
 
1
372
 
5
373
 
insert into t1 values (2);
374
 
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
375
 
select * from t1;
376
 
a
377
 
1
378
 
5
379
 
commit;
380
 
select * from t1;
381
 
a
382
 
1
383
 
2
384
 
commit;
385
 
select * from t1;
386
 
a
387
 
1
388
 
2
389
 
5
390
 
drop table t1;
391
 
drop table if exists `test`;
392
 
Warnings:
393
 
Note    1051    Unknown table 'test'
394
 
CREATE TABLE `test` (`test1` varchar(3) NOT NULL,
395
 
`test2` varchar(4) NOT NULL,PRIMARY KEY  (`test1`))
396
 
ENGINE=InnoDB;
397
 
INSERT INTO `test` (`test1`, `test2`) VALUES ('tes', '5678');
398
 
select * from test;
399
 
test1   test2
400
 
tes     5678
401
 
INSERT INTO `test` (`test1`, `test2`) VALUES ('tes', '1234')
402
 
ON DUPLICATE KEY UPDATE `test2` = '1234';
403
 
select * from test;
404
 
test1   test2
405
 
tes     1234
406
 
flush tables;
407
 
select * from test;
408
 
test1   test2
409
 
tes     1234
410
 
drop table test;
411
 
drop table if exists t1;
412
 
show variables like 'innodb_rollback_on_timeout';
413
 
Variable_name   Value
414
 
innodb_rollback_on_timeout      OFF
415
 
create table t1 (a int not null primary key) engine = innodb;
416
 
insert into t1 values (1);
417
 
commit;
418
 
begin work;
419
 
insert into t1 values (2);
420
 
select * from t1;
421
 
a
422
 
1
423
 
2
424
 
begin work;
425
 
insert into t1 values (5);
426
 
select * from t1;
427
 
a
428
 
1
429
 
5
430
 
insert into t1 values (2);
431
 
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
432
 
select * from t1;
433
 
a
434
 
1
435
 
5
436
 
commit;
437
 
select * from t1;
438
 
a
439
 
1
440
 
2
441
 
commit;
442
 
select * from t1;
443
 
a
444
 
1
445
 
2
446
 
5
447
 
drop table t1;
448
 
create table t1(
449
 
id int auto_increment,
450
 
c char(1) not null,
451
 
counter int not null default 1,
452
 
primary key (id),
453
 
unique key (c)
454
 
) engine=innodb;
455
 
insert into t1 (id, c) values
456
 
(NULL, 'a'),
457
 
(NULL, 'a')
458
 
on duplicate key update id = values(id), counter = counter + 1;
459
 
select * from t1;
460
 
id      c       counter
461
 
2       a       2
462
 
insert into t1 (id, c) values
463
 
(NULL, 'b')
464
 
on duplicate key update id = values(id), counter = counter + 1;
465
 
select * from t1;
466
 
id      c       counter
467
 
2       a       2
468
 
3       b       1
469
 
truncate table t1;
470
 
insert into t1 (id, c) values (NULL, 'a');
471
 
select * from t1;
472
 
id      c       counter
473
 
1       a       1
474
 
insert into t1 (id, c) values (NULL, 'b'), (NULL, 'b')
475
 
on duplicate key update id = values(id), c = values(c), counter = counter + 1;
476
 
select * from t1;
477
 
id      c       counter
478
 
1       a       1
479
 
3       b       2
480
 
insert into t1 (id, c) values (NULL, 'a')
481
 
on duplicate key update id = values(id), c = values(c), counter = counter + 1;
482
 
select * from t1;
483
 
id      c       counter
484
 
3       b       2
485
 
4       a       2
486
 
drop table t1;
487
 
create table t1(a int) engine=innodb;
488
 
alter table t1 comment '123';
489
 
show create table t1;
490
 
Table   Create Table
491
 
t1      CREATE TABLE `t1` (
492
 
  `a` int
493
 
) ENGINE=InnoDB COMMENT='123'
494
 
drop table t1;
495
 
CREATE TABLE t1 (a CHAR(2), KEY (a)) ENGINE = InnoDB;
496
 
INSERT INTO t1 VALUES ('uk'),('bg');
497
 
SELECT * FROM t1 WHERE a = 'uk';
498
 
a
499
 
uk
500
 
DELETE FROM t1 WHERE a = 'uk';
501
 
SELECT * FROM t1 WHERE a = 'uk';
502
 
a
503
 
UPDATE t1 SET a = 'us' WHERE a = 'uk';
504
 
SELECT * FROM t1 WHERE a = 'uk';
505
 
a
506
 
CREATE TABLE t2 (a CHAR(2), KEY (a)) ENGINE = InnoDB;
507
 
INSERT INTO t2 VALUES ('uk'),('bg');
508
 
SELECT * FROM t2 WHERE a = 'uk';
509
 
a
510
 
uk
511
 
DELETE FROM t2 WHERE a = 'uk';
512
 
SELECT * FROM t2 WHERE a = 'uk';
513
 
a
514
 
INSERT INTO t2 VALUES ('uk');
515
 
UPDATE t2 SET a = 'us' WHERE a = 'uk';
516
 
SELECT * FROM t2 WHERE a = 'uk';
517
 
a
518
 
CREATE TABLE t3 (a CHAR(2), KEY (a)) ENGINE = MyISAM;
519
 
INSERT INTO t3 VALUES ('uk'),('bg');
520
 
SELECT * FROM t3 WHERE a = 'uk';
521
 
a
522
 
uk
523
 
DELETE FROM t3 WHERE a = 'uk';
524
 
SELECT * FROM t3 WHERE a = 'uk';
525
 
a
526
 
INSERT INTO t3 VALUES ('uk');
527
 
UPDATE t3 SET a = 'us' WHERE a = 'uk';
528
 
SELECT * FROM t3 WHERE a = 'uk';
529
 
a
530
 
DROP TABLE t1,t2,t3;
531
 
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
532
 
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
533
 
switch to connection c1
534
 
SET AUTOCOMMIT=0;
535
 
INSERT INTO t2 VALUES (1);
536
 
switch to connection c2
537
 
SET AUTOCOMMIT=0;
538
 
LOCK TABLES t1 READ, t2 READ;
539
 
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
540
 
switch to connection c1
541
 
COMMIT;
542
 
INSERT INTO t1 VALUES (1);
543
 
switch to connection default
544
 
SET AUTOCOMMIT=default;
545
 
DROP TABLE t1,t2;
546
 
CREATE TABLE t1 (
547
 
id int NOT NULL auto_increment PRIMARY KEY,
548
 
b int NOT NULL,
549
 
c datetime NOT NULL,
550
 
INDEX idx_b(b),
551
 
INDEX idx_c(c)
552
 
) ENGINE=InnoDB;
553
 
CREATE TABLE t2 (
554
 
b int NOT NULL auto_increment PRIMARY KEY,
555
 
c datetime NOT NULL
556
 
) ENGINE= MyISAM;
557
 
INSERT INTO t2(c) VALUES ('2007-01-01');
558
 
INSERT INTO t2(c) SELECT c FROM t2;
559
 
INSERT INTO t2(c) SELECT c FROM t2;
560
 
INSERT INTO t2(c) SELECT c FROM t2;
561
 
INSERT INTO t2(c) SELECT c FROM t2;
562
 
INSERT INTO t2(c) SELECT c FROM t2;
563
 
INSERT INTO t2(c) SELECT c FROM t2;
564
 
INSERT INTO t2(c) SELECT c FROM t2;
565
 
INSERT INTO t2(c) SELECT c FROM t2;
566
 
INSERT INTO t2(c) SELECT c FROM t2;
567
 
INSERT INTO t2(c) SELECT c FROM t2;
568
 
INSERT INTO t1(b,c) SELECT b,c FROM t2;
569
 
UPDATE t2 SET c='2007-01-02';
570
 
INSERT INTO t1(b,c) SELECT b,c FROM t2;
571
 
UPDATE t2 SET c='2007-01-03';
572
 
INSERT INTO t1(b,c) SELECT b,c FROM t2;
573
 
set @@sort_buffer_size=8192;
574
 
Warnings:
575
 
Warning 1292    Truncated incorrect sort_buffer_size value: '8192'
576
 
SELECT COUNT(*) FROM t1;
577
 
COUNT(*)
578
 
3072
579
 
EXPLAIN 
580
 
SELECT COUNT(*) FROM t1 
581
 
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
582
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
583
 
1       SIMPLE  t1      ALL     idx_b,idx_c     NULL    NULL    NULL    #       Using where
584
 
SELECT COUNT(*) FROM t1 
585
 
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
586
 
COUNT(*)
587
 
3072
588
 
EXPLAIN 
589
 
SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c) 
590
 
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
591
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
592
 
1       SIMPLE  t1      index_merge     idx_b,idx_c     idx_c,idx_b     8,4     NULL    #       Using sort_union(idx_c,idx_b); Using where
593
 
SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
594
 
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
595
 
COUNT(*)
596
 
3072
597
 
set @@sort_buffer_size=default;
598
 
DROP TABLE t1,t2;
599
 
CREATE TABLE t1 (a int, b int);
600
 
insert into t1 values (1,1),(1,2);
601
 
CREATE TABLE t2 (primary key (a)) select * from t1;
602
 
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
603
 
drop table if exists t2;
604
 
Warnings:
605
 
Note    1051    Unknown table 't2'
606
 
CREATE TEMPORARY TABLE t2 (primary key (a)) select * from t1;
607
 
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
608
 
drop table if exists t2;
609
 
Warnings:
610
 
Note    1051    Unknown table 't2'
611
 
CREATE TABLE t2 (a int, b int, primary key (a));
612
 
BEGIN;
613
 
INSERT INTO t2 values(100,100);
614
 
CREATE TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
615
 
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
616
 
SELECT * from t2;
617
 
a       b
618
 
100     100
619
 
ROLLBACK;
620
 
SELECT * from t2;
621
 
a       b
622
 
100     100
623
 
TRUNCATE table t2;
624
 
INSERT INTO t2 select * from t1;
625
 
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
626
 
SELECT * from t2;
627
 
a       b
628
 
drop table t2;
629
 
CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a));
630
 
BEGIN;
631
 
INSERT INTO t2 values(100,100);
632
 
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
633
 
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
634
 
SELECT * from t2;
635
 
a       b
636
 
100     100
637
 
COMMIT;
638
 
BEGIN;
639
 
INSERT INTO t2 values(101,101);
640
 
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
641
 
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
642
 
SELECT * from t2;
643
 
a       b
644
 
100     100
645
 
101     101
646
 
ROLLBACK;
647
 
SELECT * from t2;
648
 
a       b
649
 
100     100
650
 
TRUNCATE table t2;
651
 
INSERT INTO t2 select * from t1;
652
 
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
653
 
SELECT * from t2;
654
 
a       b
655
 
drop table t1,t2;
656
 
create table t1(f1 varchar(800) not null, key(f1));
657
 
Warnings:
658
 
Warning 1071    Specified key was too long; max key length is 767 bytes
659
 
insert into t1 values('aaa');
660
 
drop table t1;
661
 
CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c FLOAT, KEY b(b)) ENGINE = INNODB;
662
 
INSERT INTO t1 VALUES (    1 , 1              , 1);
663
 
INSERT INTO t1 SELECT  a + 1 , MOD(a + 1 , 20), 1 FROM t1;
664
 
INSERT INTO t1 SELECT  a + 2 , MOD(a + 2 , 20), 1 FROM t1;
665
 
INSERT INTO t1 SELECT  a + 4 , MOD(a + 4 , 20), 1 FROM t1;
666
 
INSERT INTO t1 SELECT  a + 8 , MOD(a + 8 , 20), 1 FROM t1;
667
 
INSERT INTO t1 SELECT  a + 16, MOD(a + 16, 20), 1 FROM t1;
668
 
INSERT INTO t1 SELECT  a + 32, MOD(a + 32, 20), 1 FROM t1;
669
 
INSERT INTO t1 SELECT  a + 64, MOD(a + 64, 20), 1 FROM t1;
670
 
EXPLAIN SELECT b, SUM(c) FROM t1 GROUP BY b;
671
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
672
 
1       SIMPLE  t1      index   NULL    b       5       NULL    128     
673
 
EXPLAIN SELECT SQL_BIG_RESULT b, SUM(c) FROM t1 GROUP BY b;
674
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
675
 
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    128     Using filesort
676
 
DROP TABLE t1;
677
 
drop table if exists t1;
678
 
show variables like 'innodb_rollback_on_timeout';
679
 
Variable_name   Value
680
 
innodb_rollback_on_timeout      OFF
681
 
create table t1 (a int not null primary key) engine = innodb;
682
 
insert into t1 values (1);
683
 
commit;
684
 
begin work;
685
 
insert into t1 values (2);
686
 
select * from t1;
687
 
a
688
 
1
689
 
2
690
 
begin work;
691
 
insert into t1 values (5);
692
 
select * from t1;
693
 
a
694
 
1
695
 
5
696
 
insert into t1 values (2);
697
 
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
698
 
select * from t1;
699
 
a
700
 
1
701
 
5
702
 
commit;
703
 
select * from t1;
704
 
a
705
 
1
706
 
2
707
 
commit;
708
 
select * from t1;
709
 
a
710
 
1
711
 
2
712
 
5
713
 
drop table t1;
714
 
drop table if exists t1;
715
 
create table t1 (a int) engine=innodb;
716
 
alter table t1 alter a set default 1;
717
 
drop table t1;
718
 
 
719
 
Bug#24918 drop table and lock / inconsistent between 
720
 
perm and temp tables
721
 
 
722
 
Check transactional tables under LOCK TABLES
723
 
 
724
 
drop table if exists t24918, t24918_tmp, t24918_trans, t24918_trans_tmp, 
725
 
t24918_access;
726
 
create table t24918_access (id int);
727
 
create table t24918 (id int) engine=myisam;
728
 
create temporary table t24918_tmp (id int) engine=myisam;
729
 
create table t24918_trans (id int) engine=innodb;
730
 
create temporary table t24918_trans_tmp (id int) engine=innodb;
731
 
lock table t24918 write, t24918_tmp write, t24918_trans write, t24918_trans_tmp write;
732
 
drop table t24918;
733
 
select * from t24918_access;
734
 
ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES
735
 
drop table t24918_trans;
736
 
select * from t24918_access;
737
 
ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES
738
 
drop table t24918_trans_tmp;
739
 
select * from t24918_access;
740
 
ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES
741
 
drop table t24918_tmp;
742
 
select * from t24918_access;
743
 
ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES
744
 
unlock tables;
745
 
drop table t24918_access;
746
 
CREATE TABLE t1 (a int, b int, PRIMARY KEY (a), KEY bkey (b)) ENGINE=InnoDB;
747
 
INSERT INTO t1 VALUES (1,2),(3,2),(2,2),(4,2),(5,2),(6,2),(7,2),(8,2);
748
 
INSERT INTO t1 SELECT a + 8, 2 FROM t1;
749
 
INSERT INTO t1 SELECT a + 16, 1 FROM t1;
750
 
EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a;
751
 
id      1
752
 
select_type     SIMPLE
753
 
table   t1
754
 
type    ref
755
 
possible_keys   bkey
756
 
key     bkey
757
 
key_len 5
758
 
ref     const
759
 
rows    16
760
 
Extra   Using where; Using index
761
 
SELECT * FROM t1 WHERE b=2 ORDER BY a;
762
 
a       b
763
 
1       2
764
 
2       2
765
 
3       2
766
 
4       2
767
 
5       2
768
 
6       2
769
 
7       2
770
 
8       2
771
 
9       2
772
 
10      2
773
 
11      2
774
 
12      2
775
 
13      2
776
 
14      2
777
 
15      2
778
 
16      2
779
 
EXPLAIN SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY a;
780
 
id      1
781
 
select_type     SIMPLE
782
 
table   t1
783
 
type    index
784
 
possible_keys   bkey
785
 
key     PRIMARY
786
 
key_len 4
787
 
ref     NULL
788
 
rows    32
789
 
Extra   Using where
790
 
SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY a;
791
 
a       b
792
 
1       2
793
 
2       2
794
 
3       2
795
 
4       2
796
 
5       2
797
 
6       2
798
 
7       2
799
 
8       2
800
 
9       2
801
 
10      2
802
 
11      2
803
 
12      2
804
 
13      2
805
 
14      2
806
 
15      2
807
 
16      2
808
 
17      1
809
 
18      1
810
 
19      1
811
 
20      1
812
 
21      1
813
 
22      1
814
 
23      1
815
 
24      1
816
 
25      1
817
 
26      1
818
 
27      1
819
 
28      1
820
 
29      1
821
 
30      1
822
 
31      1
823
 
32      1
824
 
EXPLAIN SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY b,a;
825
 
id      1
826
 
select_type     SIMPLE
827
 
table   t1
828
 
type    range
829
 
possible_keys   bkey
830
 
key     bkey
831
 
key_len 5
832
 
ref     NULL
833
 
rows    16
834
 
Extra   Using where; Using index
835
 
SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY b,a;
836
 
a       b
837
 
17      1
838
 
18      1
839
 
19      1
840
 
20      1
841
 
21      1
842
 
22      1
843
 
23      1
844
 
24      1
845
 
25      1
846
 
26      1
847
 
27      1
848
 
28      1
849
 
29      1
850
 
30      1
851
 
31      1
852
 
32      1
853
 
1       2
854
 
2       2
855
 
3       2
856
 
4       2
857
 
5       2
858
 
6       2
859
 
7       2
860
 
8       2
861
 
9       2
862
 
10      2
863
 
11      2
864
 
12      2
865
 
13      2
866
 
14      2
867
 
15      2
868
 
16      2
869
 
CREATE TABLE t2 (a int, b int, c int, PRIMARY KEY (a), KEY bkey (b,c))
870
 
ENGINE=InnoDB;
871
 
INSERT INTO t2 VALUES (1,1,1),(3,1,1),(2,1,1),(4,1,1);
872
 
INSERT INTO t2 SELECT a + 4, 1, 1 FROM t2;
873
 
INSERT INTO t2 SELECT a + 8, 1, 1 FROM t2;
874
 
EXPLAIN SELECT * FROM t2 WHERE b=1 ORDER BY a;
875
 
id      1
876
 
select_type     SIMPLE
877
 
table   t2
878
 
type    index
879
 
possible_keys   bkey
880
 
key     PRIMARY
881
 
key_len 4
882
 
ref     NULL
883
 
rows    16
884
 
Extra   Using where; Using index
885
 
SELECT * FROM t2 WHERE b=1 ORDER BY a;
886
 
a       b       c
887
 
1       1       1
888
 
2       1       1
889
 
3       1       1
890
 
4       1       1
891
 
5       1       1
892
 
6       1       1
893
 
7       1       1
894
 
8       1       1
895
 
9       1       1
896
 
10      1       1
897
 
11      1       1
898
 
12      1       1
899
 
13      1       1
900
 
14      1       1
901
 
15      1       1
902
 
16      1       1
903
 
EXPLAIN SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY a;
904
 
id      1
905
 
select_type     SIMPLE
906
 
table   t2
907
 
type    ref
908
 
possible_keys   bkey
909
 
key     bkey
910
 
key_len 10
911
 
ref     const,const
912
 
rows    8
913
 
Extra   Using where; Using index
914
 
SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY a;
915
 
a       b       c
916
 
1       1       1
917
 
2       1       1
918
 
3       1       1
919
 
4       1       1
920
 
5       1       1
921
 
6       1       1
922
 
7       1       1
923
 
8       1       1
924
 
9       1       1
925
 
10      1       1
926
 
11      1       1
927
 
12      1       1
928
 
13      1       1
929
 
14      1       1
930
 
15      1       1
931
 
16      1       1
932
 
EXPLAIN SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY b,c,a;
933
 
id      1
934
 
select_type     SIMPLE
935
 
table   t2
936
 
type    ref
937
 
possible_keys   bkey
938
 
key     bkey
939
 
key_len 10
940
 
ref     const,const
941
 
rows    8
942
 
Extra   Using where; Using index
943
 
SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY b,c,a;
944
 
a       b       c
945
 
1       1       1
946
 
2       1       1
947
 
3       1       1
948
 
4       1       1
949
 
5       1       1
950
 
6       1       1
951
 
7       1       1
952
 
8       1       1
953
 
9       1       1
954
 
10      1       1
955
 
11      1       1
956
 
12      1       1
957
 
13      1       1
958
 
14      1       1
959
 
15      1       1
960
 
16      1       1
961
 
EXPLAIN SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY c,a;
962
 
id      1
963
 
select_type     SIMPLE
964
 
table   t2
965
 
type    ref
966
 
possible_keys   bkey
967
 
key     bkey
968
 
key_len 10
969
 
ref     const,const
970
 
rows    8
971
 
Extra   Using where; Using index
972
 
SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY c,a;
973
 
a       b       c
974
 
1       1       1
975
 
2       1       1
976
 
3       1       1
977
 
4       1       1
978
 
5       1       1
979
 
6       1       1
980
 
7       1       1
981
 
8       1       1
982
 
9       1       1
983
 
10      1       1
984
 
11      1       1
985
 
12      1       1
986
 
13      1       1
987
 
14      1       1
988
 
15      1       1
989
 
16      1       1
990
 
DROP TABLE t1,t2;
991
 
create table t1(a text) engine=innodb;
992
 
insert into t1 values('aaa');
993
 
alter table t1 add index(a(1024));
994
 
Warnings:
995
 
Warning 1071    Specified key was too long; max key length is 767 bytes
996
 
Warning 1071    Specified key was too long; max key length is 767 bytes
997
 
Warning 1071    Specified key was too long; max key length is 767 bytes
998
 
show create table t1;
999
 
Table   Create Table
1000
 
t1      CREATE TABLE `t1` (
1001
 
  `a` text,
1002
 
  KEY `a` (`a`())
1003
 
) ENGINE=InnoDB
1004
 
drop table t1;
1005
 
CREATE TABLE t1 (
1006
 
a INT,
1007
 
b INT,
1008
 
KEY (b)
1009
 
) ENGINE=InnoDB;
1010
 
INSERT INTO t1 VALUES (1,10), (2,10), (2,20), (3,30);
1011
 
START TRANSACTION;
1012
 
SELECT * FROM t1 WHERE b=20 FOR UPDATE;
1013
 
a       b
1014
 
2       20
1015
 
START TRANSACTION;
1016
 
SELECT * FROM t1 WHERE b=10 ORDER BY A FOR UPDATE;
1017
 
a       b
1018
 
1       10
1019
 
2       10
1020
 
ROLLBACK;
1021
 
ROLLBACK;
1022
 
DROP TABLE t1;
1023
 
CREATE TABLE t1(
1024
 
a INT, 
1025
 
b INT NOT NULL, 
1026
 
c INT NOT NULL, 
1027
 
d INT, 
1028
 
UNIQUE KEY (c,b)
1029
 
) engine=innodb;
1030
 
INSERT INTO t1 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);
1031
 
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d;
1032
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
1033
 
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using filesort
1034
 
SELECT c,b,d FROM t1 GROUP BY c,b,d;
1035
 
c       b       d
1036
 
1       1       50
1037
 
3       1       4
1038
 
3       2       40
1039
 
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
1040
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
1041
 
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       
1042
 
SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
1043
 
c       b       d
1044
 
1       1       50
1045
 
3       1       4
1046
 
3       2       40
1047
 
EXPLAIN SELECT c,b,d FROM t1 ORDER BY c,b,d;
1048
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
1049
 
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using filesort
1050
 
SELECT c,b,d FROM t1 ORDER BY c,b,d;
1051
 
c       b       d
1052
 
1       1       50
1053
 
3       1       4
1054
 
3       2       40
1055
 
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b;
1056
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
1057
 
1       SIMPLE  t1      index   NULL    c       8       NULL    3       
1058
 
SELECT c,b,d FROM t1 GROUP BY c,b;
1059
 
c       b       d
1060
 
1       1       50
1061
 
3       1       4
1062
 
3       2       40
1063
 
EXPLAIN SELECT c,b   FROM t1 GROUP BY c,b;
1064
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
1065
 
1       SIMPLE  t1      index   NULL    c       8       NULL    3       Using index
1066
 
SELECT c,b   FROM t1 GROUP BY c,b;
1067
 
c       b
1068
 
1       1
1069
 
3       1
1070
 
3       2
1071
 
DROP TABLE t1;
1072
 
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a), INDEX b (b)) ENGINE=InnoDB;
1073
 
INSERT INTO t1(a,b) VALUES (1,1), (2,2), (3,2);
1074
 
EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a ASC;
1075
 
id      1
1076
 
select_type     SIMPLE
1077
 
table   t1
1078
 
type    ref
1079
 
possible_keys   b
1080
 
key     b
1081
 
key_len 5
1082
 
ref     const
1083
 
rows    1
1084
 
Extra   Using where; Using index
1085
 
SELECT * FROM t1 WHERE b=2 ORDER BY a ASC;
1086
 
a       b
1087
 
2       2
1088
 
3       2
1089
 
EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a DESC;
1090
 
id      1
1091
 
select_type     SIMPLE
1092
 
table   t1
1093
 
type    ref
1094
 
possible_keys   b
1095
 
key     b
1096
 
key_len 5
1097
 
ref     const
1098
 
rows    1
1099
 
Extra   Using where; Using index
1100
 
SELECT * FROM t1 WHERE b=2 ORDER BY a DESC;
1101
 
a       b
1102
 
3       2
1103
 
2       2
1104
 
EXPLAIN SELECT * FROM t1 ORDER BY b ASC, a ASC;
1105
 
id      1
1106
 
select_type     SIMPLE
1107
 
table   t1
1108
 
type    index
1109
 
possible_keys   NULL
1110
 
key     b
1111
 
key_len 5
1112
 
ref     NULL
1113
 
rows    3
1114
 
Extra   Using index
1115
 
SELECT * FROM t1 ORDER BY b ASC, a ASC;
1116
 
a       b
1117
 
1       1
1118
 
2       2
1119
 
3       2
1120
 
EXPLAIN SELECT * FROM t1 ORDER BY b DESC, a DESC;
1121
 
id      1
1122
 
select_type     SIMPLE
1123
 
table   t1
1124
 
type    index
1125
 
possible_keys   NULL
1126
 
key     b
1127
 
key_len 5
1128
 
ref     NULL
1129
 
rows    3
1130
 
Extra   Using index
1131
 
SELECT * FROM t1 ORDER BY b DESC, a DESC;
1132
 
a       b
1133
 
3       2
1134
 
2       2
1135
 
1       1
1136
 
EXPLAIN SELECT * FROM t1 ORDER BY b ASC, a DESC;
1137
 
id      1
1138
 
select_type     SIMPLE
1139
 
table   t1
1140
 
type    index
1141
 
possible_keys   NULL
1142
 
key     PRIMARY
1143
 
key_len 4
1144
 
ref     NULL
1145
 
rows    3
1146
 
Extra   Using filesort
1147
 
SELECT * FROM t1 ORDER BY b ASC, a DESC;
1148
 
a       b
1149
 
1       1
1150
 
3       2
1151
 
2       2
1152
 
EXPLAIN SELECT * FROM t1 ORDER BY b DESC, a ASC;
1153
 
id      1
1154
 
select_type     SIMPLE
1155
 
table   t1
1156
 
type    index
1157
 
possible_keys   NULL
1158
 
key     PRIMARY
1159
 
key_len 4
1160
 
ref     NULL
1161
 
rows    3
1162
 
Extra   Using filesort
1163
 
SELECT * FROM t1 ORDER BY b DESC, a ASC;
1164
 
a       b
1165
 
2       2
1166
 
3       2
1167
 
1       1
1168
 
DROP TABLE t1;
1169
 
 
1170
 
#
1171
 
# Bug#27610: ALTER TABLE ROW_FORMAT=... does not rebuild the table.
1172
 
#
1173
 
 
1174
 
# - prepare;
1175
 
 
1176
 
DROP TABLE IF EXISTS t1;
1177
 
 
1178
 
CREATE TABLE t1(c INT)
1179
 
ENGINE = InnoDB
1180
 
ROW_FORMAT = COMPACT;
1181
 
 
1182
 
# - initial check;
1183
 
 
1184
 
SELECT table_schema, table_name, row_format
1185
 
FROM INFORMATION_SCHEMA.TABLES
1186
 
WHERE table_schema = DATABASE() AND table_name = 't1';
1187
 
table_schema    table_name      row_format
1188
 
test    t1      Compact
1189
 
 
1190
 
# - change ROW_FORMAT and check;
1191
 
 
1192
 
ALTER TABLE t1 ROW_FORMAT = REDUNDANT;
1193
 
 
1194
 
SELECT table_schema, table_name, row_format
1195
 
FROM INFORMATION_SCHEMA.TABLES
1196
 
WHERE table_schema = DATABASE() AND table_name = 't1';
1197
 
table_schema    table_name      row_format
1198
 
test    t1      Redundant
1199
 
 
1200
 
# - that's it, cleanup.
1201
 
 
1202
 
DROP TABLE t1;
1203
 
create table t1(a char(10) not null, unique key aa(a(1)),
1204
 
b char(4) not null, unique key bb(b(4))) engine=innodb;
1205
 
desc t1;
1206
 
Field   Type    Null    Key     Default Extra
1207
 
a       varchar(10)     NO      UNI     NULL    
1208
 
b       varchar(4)      NO      PRI     NULL    
1209
 
show create table t1;
1210
 
Table   Create Table
1211
 
t1      CREATE TABLE `t1` (
1212
 
  `a` varchar(10) NOT NULL,
1213
 
  `b` varchar(4) NOT NULL,
1214
 
  UNIQUE KEY `bb` (`b`),
1215
 
  UNIQUE KEY `aa` (`a`())
1216
 
) ENGINE=InnoDB
1217
 
drop table t1;
1218
 
CREATE TABLE t1 (id int, type char(6), d int, INDEX idx(id,d)) ENGINE=InnoDB;
1219
 
INSERT INTO t1 VALUES 
1220
 
(191, 'member', 1), (NULL, 'member', 3), (NULL, 'member', 4), (201, 'member', 2);
1221
 
EXPLAIN SELECT * FROM t1 WHERE id=191 OR id IS NULL ORDER BY d;
1222
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
1223
 
1       SIMPLE  t1      ALL     idx     NULL    NULL    NULL    4       Using where; Using filesort
1224
 
SELECT * FROM t1 WHERE id=191 OR id IS NULL ORDER BY d;
1225
 
id      type    d
1226
 
191     member  1
1227
 
NULL    member  3
1228
 
NULL    member  4
1229
 
DROP TABLE t1;
1230
 
set @my_innodb_autoextend_increment=@@global.innodb_autoextend_increment;
1231
 
set global innodb_autoextend_increment=8;
1232
 
set global innodb_autoextend_increment=@my_innodb_autoextend_increment;
1233
 
set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency;
1234
 
set global innodb_commit_concurrency=0;
1235
 
set global innodb_commit_concurrency=@my_innodb_commit_concurrency;
1236
 
End of 5.0 tests
1237
 
CREATE TABLE `t2` (
1238
 
`k` int NOT NULL auto_increment,
1239
 
`a` int default NULL,
1240
 
`c` int default NULL,
1241
 
PRIMARY KEY  (`k`),
1242
 
UNIQUE KEY `idx_1` (`a`)
1243
 
);
1244
 
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
1245
 
ifnull( c,
1246
 
0 ) + 1;
1247
 
insert into t2 ( a ) values ( 7 ) on duplicate key update c =
1248
 
ifnull( c,
1249
 
0 ) + 1;
1250
 
select last_insert_id();
1251
 
last_insert_id()
1252
 
2
1253
 
select * from t2;
1254
 
k       a       c
1255
 
1       6       NULL
1256
 
2       7       NULL
1257
 
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
1258
 
ifnull( c,
1259
 
0 ) + 1;
1260
 
select last_insert_id();
1261
 
last_insert_id()
1262
 
2
1263
 
select last_insert_id(0);
1264
 
last_insert_id(0)
1265
 
0
1266
 
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
1267
 
ifnull( c,
1268
 
0 ) + 1;
1269
 
select last_insert_id();
1270
 
last_insert_id()
1271
 
0
1272
 
select * from t2;
1273
 
k       a       c
1274
 
1       6       2
1275
 
2       7       NULL
1276
 
insert ignore into t2 values (null,6,1),(10,8,1);
1277
 
select last_insert_id();
1278
 
last_insert_id()
1279
 
0
1280
 
insert ignore into t2 values (null,6,1),(null,8,1),(null,15,1),(null,20,1);
1281
 
select last_insert_id();
1282
 
last_insert_id()
1283
 
11
1284
 
select * from t2;
1285
 
k       a       c
1286
 
1       6       2
1287
 
2       7       NULL
1288
 
10      8       1
1289
 
11      15      1
1290
 
12      20      1
1291
 
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
1292
 
ifnull( c,
1293
 
0 ) + 1, k=last_insert_id(k);
1294
 
select last_insert_id();
1295
 
last_insert_id()
1296
 
1
1297
 
select * from t2;
1298
 
k       a       c
1299
 
1       6       3
1300
 
2       7       NULL
1301
 
10      8       1
1302
 
11      15      1
1303
 
12      20      1
1304
 
drop table t2;
1305
 
drop table if exists t1, t2;
1306
 
create table t1 (i int);
1307
 
alter table t1 modify i int default 1;
1308
 
alter table t1 modify i int default 2, rename t2;
1309
 
lock table t2 write;
1310
 
alter table t2 modify i int default 3;
1311
 
unlock tables;
1312
 
lock table t2 write;
1313
 
alter table t2 modify i int default 4, rename t1;
1314
 
unlock tables;
1315
 
drop table t1;
1316
 
drop table if exists t1;
1317
 
create table t1 (i int);
1318
 
insert into t1 values ();
1319
 
lock table t1 write;
1320
 
alter table t1 modify i int default 1;
1321
 
insert into t1 values ();
1322
 
select * from t1;
1323
 
i
1324
 
NULL
1325
 
1
1326
 
alter table t1 change i c char(10) default "Two";
1327
 
insert into t1 values ();
1328
 
select * from t1;
1329
 
c
1330
 
NULL
1331
 
1
1332
 
Two
1333
 
unlock tables;
1334
 
select * from t1;
1335
 
c
1336
 
NULL
1337
 
1
1338
 
Two
1339
 
drop tables t1;
1340
 
create table t1(f1 varchar(5) unique, f2 timestamp NOT NULL DEFAULT
1341
 
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
1342
 
insert into t1(f1) values(1);
1343
 
select @a:=f2 from t1;
1344
 
@a:=f2 
1345
 
#
1346
 
update t1 set f1=1;
1347
 
select @b:=f2 from t1;
1348
 
@b:=f2 
1349
 
#
1350
 
select if(@a=@b,"ok","wrong");
1351
 
if(@a=@b,"ok","wrong")
1352
 
ok
1353
 
insert into t1(f1) values (1) on duplicate key update f1="1";
1354
 
select @b:=f2 from t1;
1355
 
@b:=f2 
1356
 
#
1357
 
select if(@a=@b,"ok","wrong");
1358
 
if(@a=@b,"ok","wrong")
1359
 
ok
1360
 
insert into t1(f1) select f1 from t1 on duplicate key update f1="1";
1361
 
select @b:=f2 from t1;
1362
 
@b:=f2 
1363
 
#
1364
 
select if(@a=@b,"ok","wrong");
1365
 
if(@a=@b,"ok","wrong")
1366
 
ok
1367
 
drop table t1;
1368
 
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, PRIMARY KEY (a,b)) engine=innodb;
1369
 
CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
1370
 
CONSTRAINT c2 FOREIGN KEY f2 (c) REFERENCES t1 (a,b) ON UPDATE NO ACTION) engine=innodb;
1371
 
ERROR 42000: Incorrect foreign key definition for 'f2': Key reference and table reference don't match
1372
 
CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
1373
 
CONSTRAINT c2 FOREIGN KEY (c) REFERENCES t1 (a,b) ON UPDATE NO ACTION) engine=innodb;
1374
 
ERROR 42000: Incorrect foreign key definition for 'c2': Key reference and table reference don't match
1375
 
CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
1376
 
CONSTRAINT c1 FOREIGN KEY c2 (c) REFERENCES t1 (a) ON DELETE NO ACTION,
1377
 
CONSTRAINT c2 FOREIGN KEY (c) REFERENCES t1 (a) ON UPDATE NO ACTION) engine=innodb;
1378
 
ALTER TABLE t2 DROP FOREIGN KEY c2;
1379
 
DROP TABLE t2;
1380
 
CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
1381
 
FOREIGN KEY (c) REFERENCES t1 (a,k) ON UPDATE NO ACTION) engine=innodb;
1382
 
ERROR 42000: Incorrect foreign key definition for 'foreign key without name': Key reference and table reference don't match
1383
 
CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
1384
 
FOREIGN KEY f1 (c) REFERENCES t1 (a,k) ON UPDATE NO ACTION) engine=innodb;
1385
 
ERROR 42000: Incorrect foreign key definition for 'f1': Key reference and table reference don't match
1386
 
CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
1387
 
CONSTRAINT c1 FOREIGN KEY f1 (c) REFERENCES t1 (a) ON DELETE NO ACTION,
1388
 
CONSTRAINT c2 FOREIGN KEY (c) REFERENCES t1 (a) ON UPDATE NO ACTION,
1389
 
FOREIGN KEY f3 (c) REFERENCES t1 (a) ON UPDATE NO ACTION,
1390
 
FOREIGN KEY (c) REFERENCES t1 (a) ON UPDATE NO ACTION) engine=innodb;
1391
 
SHOW CREATE TABLE t2;
1392
 
Table   Create Table
1393
 
t2      CREATE TABLE `t2` (
1394
 
  `c` int NOT NULL,
1395
 
  `d` int NOT NULL,
1396
 
  PRIMARY KEY (`c`,`d`),
1397
 
  CONSTRAINT `c1` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON DELETE NO ACTION,
1398
 
  CONSTRAINT `c2` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON UPDATE NO ACTION,
1399
 
  CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON UPDATE NO ACTION,
1400
 
  CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON UPDATE NO ACTION
1401
 
) ENGINE=InnoDB
1402
 
DROP TABLE t2;
1403
 
DROP TABLE t1;
1404
 
create table t1 (a int auto_increment primary key) engine=innodb;
1405
 
alter table t1 order by a;
1406
 
ERROR HY000: order_st BY ignored because there is a user-defined clustered index in the table 't1'
1407
 
drop table t1;
1408
 
CREATE TABLE t1
1409
 
(vid integer NOT NULL,
1410
 
tid integer NOT NULL,
1411
 
idx integer NOT NULL,
1412
 
name varchar(128) NOT NULL,
1413
 
type varchar(128) NULL,
1414
 
PRIMARY KEY(idx, vid, tid),
1415
 
UNIQUE(vid, tid, name)
1416
 
) ENGINE=InnoDB;
1417
 
INSERT INTO t1 VALUES
1418
 
(1,1,1,'pk',NULL),(2,1,1,'pk',NULL),(3,1,1,'pk',NULL),(4,1,1,'c1',NULL),
1419
 
(5,1,1,'pk',NULL),(1,1,2,'c1',NULL),(2,1,2,'c1',NULL),(3,1,2,'c1',NULL),
1420
 
(4,1,2,'c2',NULL),(5,1,2,'c1',NULL),(2,1,3,'c2',NULL),(3,1,3,'c2',NULL),
1421
 
(4,1,3,'pk',NULL),(5,1,3,'c2',NULL),
1422
 
(2,1,4,'c_extra',NULL),(3,1,4,'c_extra',NULL);
1423
 
EXPLAIN SELECT * FROM t1 WHERE tid = 1 AND vid = 3 ORDER BY idx DESC;
1424
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
1425
 
1       SIMPLE  t1      index   vid     PRIMARY 12      NULL    16      Using where
1426
 
SELECT * FROM t1 WHERE tid = 1 AND vid = 3 ORDER BY idx DESC;
1427
 
vid     tid     idx     name    type
1428
 
3       1       4       c_extra NULL
1429
 
3       1       3       c2      NULL
1430
 
3       1       2       c1      NULL
1431
 
3       1       1       pk      NULL
1432
 
DROP TABLE t1;
1433
 
DROP TABLE IF EXISTS t1;
1434
 
DROP TABLE IF EXISTS t2;
1435
 
CREATE TABLE t1(id INT PRIMARY KEY)
1436
 
ENGINE=innodb;
1437
 
CREATE TABLE t2(
1438
 
t1_id INT PRIMARY KEY,
1439
 
CONSTRAINT fk1 FOREIGN KEY (t1_id) REFERENCES t1(id))
1440
 
ENGINE=innodb;
1441
 
 
1442
 
ALTER TABLE t1 CHANGE id id2 INT;
1443
 
 
1444
 
DROP TABLE t2;
1445
 
DROP TABLE t1;
1446
 
End of 5.1 tests