~ubuntu-branches/ubuntu/trusty/drizzle/trusty

« back to all changes in this revision

Viewing changes to tests/r/innodb_mysql.result

  • Committer: Bazaar Package Importer
  • Author(s): Monty Taylor
  • Date: 2010-03-18 12:12:31 UTC
  • Revision ID: james.westby@ubuntu.com-20100318121231-k6g1xe6cshbwa0f8
Tags: upstream-2010.03.1347
ImportĀ upstreamĀ versionĀ 2010.03.1347

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