1
#######################################################################
3
# Please, DO NOT TOUCH this file as well as the innodb.result file. #
4
# These files are to be modified ONLY BY INNOBASE guys. #
6
# Use innodb_mysql.[test|result] files instead. #
8
# If nevertheless you need to make some changes here, please, forward #
9
# your commit message To: dev@innodb.com Cc: dev-innodb@mysql.com #
10
# (otherwise your changes may be erased). #
12
#######################################################################
14
-- source include/have_innodb.inc
17
# Small basic test with ignore
21
drop table if exists t1,t2,t3,t4;
22
drop database if exists mysqltest;
24
#set engine_condition_pushdown=0;
25
create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;
27
insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David'), (2, 'Erik'), (3, 'Sasha'), (3, 'Jeremy'), (4, 'Matt');
28
select id, code, name from t1 order by id;
30
update ignore t1 set id = 8, name = 'Sinisa' where id < 3;
31
select id, code, name from t1 order by id;
32
update ignore t1 set id = id + 10, name = 'Ralph' where id < 4;
33
select id, code, name from t1 order by id;
39
# The 'replace_column' statements are needed because the cardinality calculated
40
# by innodb is not always the same between runs
44
id int(11) NOT NULL auto_increment,
45
parent_id int(11) DEFAULT '0' NOT NULL,
46
level tinyint(4) DEFAULT '0' NOT NULL,
48
KEY parent_id (parent_id),
51
INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1),(179,5,2);
52
update t1 set parent_id=parent_id+100;
53
select * from t1 where parent_id=102;
54
update t1 set id=id+1000;
55
-- error ER_DUP_ENTRY,1022
56
update t1 set id=1024 where id=1009;
58
update ignore t1 set id=id+1; # This will change all rows
60
update ignore t1 set id=1023 where id=1010;
61
select * from t1 where parent_id=102;
63
explain select level from t1 where level=1;
65
explain select level,id from t1 where level=1;
67
explain select level,id,parent_id from t1 where level=1;
68
select level,id from t1 where level=1;
69
select level,id,parent_id from t1 where level=1;
80
gesuchnr int(11) DEFAULT '0' NOT NULL,
81
benutzer_id int(11) DEFAULT '0' NOT NULL,
82
PRIMARY KEY (gesuchnr,benutzer_id)
85
replace into t1 (gesuchnr,benutzer_id) values (2,1);
86
replace into t1 (gesuchnr,benutzer_id) values (1,1);
87
replace into t1 (gesuchnr,benutzer_id) values (1,1);
92
# test delete using hidden_primary_key
95
create table t1 (a int) engine=innodb;
96
insert into t1 values (1), (2);
98
delete from t1 where a = 1;
103
create table t1 (a int,b varchar(20)) engine=innodb;
104
insert into t1 values (1,""), (2,"testing");
105
delete from t1 where a = 1;
107
create index skr on t1 (a);
108
insert into t1 values (3,""), (4,"testing");
115
# Test of reading on secondary key with may be null
117
create table t1 (a int,b varchar(20),key(a)) engine=innodb;
118
insert into t1 values (1,""), (2,"testing");
119
select * from t1 where a = 1;
126
create table t1 (n int not null primary key) engine=innodb;
128
insert into t1 values (4);
130
select n, "after rollback" from t1;
131
insert into t1 values (4);
133
select n, "after commit" from t1;
135
insert into t1 values (5);
136
-- error ER_DUP_ENTRY
137
insert into t1 values (4);
139
select n, "after commit" from t1;
141
insert into t1 values (6);
142
-- error ER_DUP_ENTRY
143
insert into t1 values (4);
150
savepoint `my_savepoint`;
151
insert into t1 values (7);
153
insert into t1 values (3);
156
rollback to savepoint savept2;
158
rollback to savepoint savept3;
159
rollback to savepoint savept2;
160
release savepoint `my_savepoint`;
163
rollback to savepoint `my_savepoint`;
165
rollback to savepoint savept2;
166
insert into t1 values (8);
176
# Test for commit and FLUSH TABLES WITH READ LOCK
179
create table t1 (n int not null primary key) engine=innodb;
181
insert into t1 values (4);
182
flush tables with read lock;
184
# Current code can't handle a read lock in middle of transaction
193
# Testing transactions
196
create table t1 ( id int NOT NULL PRIMARY KEY, nom varchar(64)) engine=innodb;
198
insert into t1 values(1,'hamdouni');
199
select id as afterbegin_id,nom as afterbegin_nom from t1;
201
select id as afterrollback_id,nom as afterrollback_nom from t1;
203
insert into t1 values(2,'mysql');
204
select id as afterautocommit0_id,nom as afterautocommit0_nom from t1;
206
select id as afterrollback_id,nom as afterrollback_nom from t1;
211
# Simple not autocommit test
214
CREATE TABLE t1 (id char(8) not null primary key, val int not null) engine=innodb;
215
insert into t1 values ('pippo', 12);
216
-- error ER_DUP_ENTRY
217
insert into t1 values ('pippo', 12); # Gives error
219
delete from t1 where id = 'pippo';
222
insert into t1 values ('pippo', 12);
233
# Test of active transactions
236
create table t1 (a integer) engine=innodb;
238
rename table t1 to t2;
239
create table t1 (b integer) engine=innodb;
240
insert into t1 values (1);
243
rename table t2 to t1;
248
# The following simple tests failed at some point
251
CREATE TABLE t1 (ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR(64)) ENGINE=innodb;
252
INSERT INTO t1 VALUES (1, 'Jochen');
256
CREATE TABLE t1 ( _userid VARCHAR(60) NOT NULL PRIMARY KEY) ENGINE=innodb;
258
INSERT INTO t1 SET _userid='marc@anyware.co.uk';
261
SELECT _userid FROM t1 WHERE _userid='marc@anyware.co.uk';
266
# Test when reading on part of unique key
269
user_id int(10) DEFAULT '0' NOT NULL,
272
ref_email varchar(100) DEFAULT '' NOT NULL,
274
PRIMARY KEY (user_id,ref_email)
277
INSERT INTO t1 VALUES (10292,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10292,'shirish','2333604','shirish@yahoo.com','ddsds'),(10292,'sonali','323232','sonali@bolly.com','filmstar');
278
select * from t1 where user_id=10292;
279
INSERT INTO t1 VALUES (10291,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10293,'shirish','2333604','shirish@yahoo.com','ddsds');
280
select * from t1 where user_id=10292;
281
select * from t1 where user_id>=10292;
282
select * from t1 where user_id>10292;
283
select * from t1 where user_id<10292;
287
# Test that keys are created in right order
290
CREATE TABLE t1 (a int not null, b int not null,c int not null,
291
key(a),primary key(a,b), unique(c),key(a),unique(b));
297
# Test of ALTER TABLE and innodb tables
300
create table t1 (col1 int not null, col2 char(4) not null, primary key(col1));
301
alter table t1 engine=innodb;
302
insert into t1 values ('1','1'),('5','2'),('2','3'),('3','4'),('4','4');
304
update t1 set col2='7' where col1='4';
306
alter table t1 add co3 int not null;
308
update t1 set col2='9' where col1='2';
313
# INSERT INTO innodb tables
316
create table t1 (a int not null , b int, primary key (a)) engine = innodb;
317
create table t2 (a int not null , b int, primary key (a)) engine = myisam;
318
insert into t1 VALUES (1,3) , (2,3), (3,3);
320
insert into t2 select * from t1;
322
delete from t1 where b = 3;
324
insert into t1 select * from t2;
330
# ORDER BY on not primary key
334
user_name varchar(12),
337
user_id int(11) DEFAULT '0' NOT NULL,
343
dummy_primary_key int(11) NOT NULL auto_increment,
344
PRIMARY KEY (dummy_primary_key)
346
INSERT INTO t1 VALUES ('user_0','somepassword','N',0,0,0,'2000-09-07','23:06:59','2000-09-07 23:06:59',1);
347
INSERT INTO t1 VALUES ('user_1','somepassword','Y',1,1,1,'2000-09-07','23:06:59','2000-09-07 23:06:59',2);
348
INSERT INTO t1 VALUES ('user_2','somepassword','N',2,2,1.4142135623731,'2000-09-07','23:06:59','2000-09-07 23:06:59',3);
349
INSERT INTO t1 VALUES ('user_3','somepassword','Y',3,3,1.7320508075689,'2000-09-07','23:06:59','2000-09-07 23:06:59',4);
350
INSERT INTO t1 VALUES ('user_4','somepassword','N',4,4,2,'2000-09-07','23:06:59','2000-09-07 23:06:59',5);
351
select user_name, password , subscribed, user_id, quota, weight, access_date, access_time, approved, dummy_primary_key from t1 order by user_name;
355
# Testing of tables without primary keys
359
id int(11) NOT NULL auto_increment,
360
parent_id int(11) DEFAULT '0' NOT NULL,
361
level tinyint(4) DEFAULT '0' NOT NULL,
363
KEY parent_id (parent_id),
366
INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1);
367
INSERT INTO t1 values (179,5,2);
368
update t1 set parent_id=parent_id+100;
369
select * from t1 where parent_id=102;
370
update t1 set id=id+1000;
371
update t1 set id=1024 where id=1009;
373
update ignore t1 set id=id+1; # This will change all rows
375
update ignore t1 set id=1023 where id=1010;
376
select * from t1 where parent_id=102;
378
explain select level from t1 where level=1;
379
select level,id from t1 where level=1;
380
select level,id,parent_id from t1 where level=1;
381
select level,id from t1 where level=1 order by id;
382
delete from t1 where level=1;
387
# Test of index only reads
390
sca_code char(6) NOT NULL,
391
cat_code char(6) NOT NULL,
392
sca_desc varchar(50),
393
lan_code char(2) NOT NULL,
394
sca_pic varchar(100),
395
sca_sdesc varchar(50),
396
sca_sch_desc varchar(16),
397
PRIMARY KEY (sca_code, cat_code, lan_code),
398
INDEX sca_pic (sca_pic)
401
INSERT INTO t1 ( sca_code, cat_code, sca_desc, lan_code, sca_pic, sca_sdesc, sca_sch_desc) VALUES ( 'PD', 'J', 'PENDANT', 'EN', NULL, NULL, 'PENDANT'),( 'RI', 'J', 'RING', 'EN', NULL, NULL, 'RING'),( 'QQ', 'N', 'RING', 'EN', 'not null', NULL, 'RING');
402
select count(*) from t1 where sca_code = 'PD';
403
select count(*) from t1 where sca_code <= 'PD';
404
select count(*) from t1 where sca_pic is null;
405
alter table t1 drop index sca_pic, add index sca_pic (cat_code, sca_pic);
406
select count(*) from t1 where sca_code='PD' and sca_pic is null;
407
select count(*) from t1 where cat_code='E';
408
alter table t1 drop index sca_pic, add index (sca_pic, cat_code);
409
select count(*) from t1 where sca_code='PD' and sca_pic is null;
410
select count(*) from t1 where sca_pic >= 'n';
411
select sca_pic from t1 where sca_pic is null;
412
update t1 set sca_pic="test" where sca_pic is null;
413
delete from t1 where sca_code='pd';
417
# Test of opening table twice and timestamps
420
CREATE TABLE t1 (a int not null, b timestamp not null, primary key (a)) engine=innodb;
421
insert into t1 (a) values(1),(2),(3);
422
select t1.a from t1 natural join t1 as t2 where t1.b >= @a order by t1.a;
423
select a from t1 natural join t1 as t2 where b >= @a order by a;
424
update t1 set a=5 where a=1;
429
# Test with variable length primary key
431
create table t1 (a varchar(100) not null, primary key(a), b int not null) engine=innodb;
432
insert into t1 values("hello",1),("world",2);
433
select * from t1 order by b desc;
440
# Test of create index with NULL columns
442
create table t1 (i int, j int ) ENGINE=innodb;
443
insert into t1 values (1,2);
444
select * from t1 where i=1 and j=2;
445
create index ax1 on t1 (i,j);
446
select * from t1 where i=1 and j=2;
450
# Test min-max optimization
454
a int3 unsigned NOT NULL,
455
b int1 unsigned NOT NULL,
459
INSERT INTO t1 VALUES (1, 1);
460
SELECT MIN(B),MAX(b) FROM t1 WHERE t1.a = 1;
464
# Test INSERT DELAYED
467
CREATE TABLE t1 (a int unsigned NOT NULL) engine=innodb;
468
# Can't test this in 3.23
469
# INSERT DELAYED INTO t1 VALUES (1);
470
INSERT INTO t1 VALUES (1);
476
# Crash when using many tables (Test case by Jeremy D Zawodny)
479
create table t1 (a int primary key,b int, c int, d int, e int, f int, g int, h int, i int, j int, k int, l int, m int, n int, o int, p int, q int, r int, s int, t int, u int, v int, w int, x int, y int, z int, a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, b1 int, b2 int, b3 int, b4 int, b5 int, b6 int) engine = innodb;
480
insert into t1 values (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
482
explain select * from t1 where a > 0 and a < 50;
489
create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
490
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
491
LOCK TABLES t1 WRITE;
493
insert into t1 values (99,1,2,'D'),(1,1,2,'D');
499
create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
500
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
501
LOCK TABLES t1 WRITE;
504
insert into t1 values (99,1,2,'D'),(1,1,2,'D');
506
insert ignore into t1 values (100,1,2,'D'),(1,1,99,'D');
508
select id,id3 from t1;
515
create table t1 (a char(20), unique (a(5))) engine=innodb;
517
create table t1 (a char(20), index (a(5))) engine=innodb;
518
show create table t1;
522
# Test using temporary table and auto_increment
525
create temporary table t1 (a int not null auto_increment, primary key(a)) engine=innodb;
526
insert into t1 values (NULL),(NULL),(NULL);
527
delete from t1 where a=3;
528
insert into t1 values (NULL);
530
alter table t1 add b int;
537
id int auto_increment primary key,
538
name varchar(32) not null,
543
insert into t1 values (1,'one','one value',101),
544
(2,'two','two value',102),(3,'three','three value',103);
546
replace into t1 (value,name,uid) values ('other value','two',102);
547
delete from t1 where uid=102;
549
replace into t1 (value,name,uid) values ('other value','two',102);
551
replace into t1 (value,name,uid) values ('other value','two',102);
559
create database mysqltest;
560
create table mysqltest.t1 (a int not null) engine= innodb;
561
insert into mysqltest.t1 values(1);
562
create table mysqltest.t2 (a int not null) engine= myisam;
563
insert into mysqltest.t2 values(1);
564
create table mysqltest.t3 (a int not null) engine= heap;
565
insert into mysqltest.t3 values(1);
567
drop database mysqltest;
568
# Don't check error message
570
show tables from mysqltest;
573
# Test truncate table with and without auto_commit
577
create table t1 (a int not null) engine= innodb;
578
insert into t1 values(1),(2);
584
insert into t1 values(1),(2);
591
create table t1 (a int not null) engine= innodb;
592
insert into t1 values(1),(2);
594
insert into t1 values(1),(2);
597
insert into t1 values(1),(2);
603
# Test of how ORDER BY works when doing it on the whole table
606
create table t1 (a int not null, b int not null, c int not null, primary key (a),key(b)) engine=innodb;
607
insert into t1 values (3,3,3),(1,1,1),(2,2,2),(4,4,4);
609
explain select * from t1 order by a;
611
explain select * from t1 order by b;
613
explain select * from t1 order by c;
615
explain select a from t1 order by a;
617
explain select b from t1 order by b;
619
explain select a,b from t1 order by b;
621
explain select a,b from t1;
623
explain select a,b,c from t1;
630
create table t1 (t int not null default 1, key (t)) engine=innodb;
635
# Test of multi-table-delete
639
number bigint(20) NOT NULL default '0',
640
cname char(15) NOT NULL default '',
641
carrier_id smallint(6) NOT NULL default '0',
642
privacy tinyint(4) NOT NULL default '0',
643
last_mod_date timestamp NOT NULL,
644
last_mod_id smallint(6) NOT NULL default '0',
645
last_app_date timestamp NOT NULL,
646
last_app_id smallint(6) default '-1',
647
version smallint(6) NOT NULL default '0',
648
assigned_scps int(11) default '0',
649
status tinyint(4) default '0'
651
INSERT INTO t1 VALUES (4077711111,'SeanWheeler',90,2,20020111112846,500,00000000000000,-1,2,3,1);
652
INSERT INTO t1 VALUES (9197722223,'berry',90,3,20020111112809,500,20020102114532,501,4,10,0);
653
INSERT INTO t1 VALUES (650,'San Francisco',0,0,20011227111336,342,00000000000000,-1,1,24,1);
654
INSERT INTO t1 VALUES (302467,'Sue\'s Subshop',90,3,20020109113241,500,20020102115111,501,7,24,0);
655
INSERT INTO t1 VALUES (6014911113,'SudzCarwash',520,1,20020102115234,500,20020102115259,501,33,32768,0);
656
INSERT INTO t1 VALUES (333,'tubs',99,2,20020109113440,501,20020109113440,500,3,10,0);
658
number bigint(20) NOT NULL default '0',
659
cname char(15) NOT NULL default '',
660
carrier_id smallint(6) NOT NULL default '0',
661
privacy tinyint(4) NOT NULL default '0',
662
last_mod_date timestamp NOT NULL,
663
last_mod_id smallint(6) NOT NULL default '0',
664
last_app_date timestamp NOT NULL,
665
last_app_id smallint(6) default '-1',
666
version smallint(6) NOT NULL default '0',
667
assigned_scps int(11) default '0',
668
status tinyint(4) default '0'
670
INSERT INTO t2 VALUES (4077711111,'SeanWheeler',0,2,20020111112853,500,00000000000000,-1,2,3,1);
671
INSERT INTO t2 VALUES (9197722223,'berry',90,3,20020111112818,500,20020102114532,501,4,10,0);
672
INSERT INTO t2 VALUES (650,'San Francisco',90,0,20020109113158,342,00000000000000,-1,1,24,1);
673
INSERT INTO t2 VALUES (333,'tubs',99,2,20020109113453,501,20020109113453,500,3,10,0);
676
delete t1, t2 from t1 left join t2 on t1.number=t2.number where (t1.carrier_id=90 and t1.number=t2.number) or (t2.carrier_id=90 and t1.number=t2.number) or (t1.carrier_id=90 and t2.number is null);
683
# A simple test with some isolation levels
684
# TODO: Make this into a test using replication to really test how
688
create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;
691
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
692
SELECT @@tx_isolation,@@global.tx_isolation;
693
insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David');
694
select id, code, name from t1 order by id;
698
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
699
insert into t1 (code, name) values (2, 'Erik'), (3, 'Sasha');
700
select id, code, name from t1 order by id;
704
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
705
insert into t1 (code, name) values (3, 'Jeremy'), (4, 'Matt');
706
select id, code, name from t1 order by id;
711
# Test of multi-table-update
713
create table t1 (n int(10), d int(10)) engine=innodb;
714
create table t2 (n int(10), d int(10)) engine=innodb;
715
insert into t1 values(1,1),(1,2);
716
insert into t2 values(1,10),(2,20);
717
UPDATE t1,t2 SET t1.d=t2.d,t2.d=30 WHERE t1.n=t2.n;
723
# Bug #29136 erred multi-delete on trans table does not rollback
728
drop table if exists t1, t2;
730
CREATE TABLE t1 (a int, PRIMARY KEY (a));
731
CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
732
create trigger trg_del_t2 after delete on t2 for each row
733
insert into t1 values (1);
734
insert into t1 values (1);
735
insert into t2 values (1),(2);
738
# exec cases A, B - see multi_update.test
740
# A. send_error() w/o send_eof() branch
747
select count(*) from t2 /* must be 2 as restored after rollback caused by the error */;
757
create table t1 (a int, b int) engine=innodb;
758
insert into t1 values(20,null);
759
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
761
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
762
t2.b=t3.a order by 1;
763
insert into t1 values(10,null);
764
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
765
t2.b=t3.a order by 1;
769
# Test of read_through not existing const_table
772
create table t1 (a varchar(10) not null) engine=myisam;
773
create table t2 (b varchar(10) not null unique) engine=innodb;
774
select t1.a from t1,t2 where t1.a=t2.b;
776
create table t1 (a int not null, b int, primary key (a)) engine = innodb;
777
create table t2 (a int not null, b int, primary key (a)) engine = innodb;
778
insert into t1 values (10, 20);
779
insert into t2 values (10, 20);
780
update t1, t2 set t1.b = 150, t2.b = t1.b where t2.a = t1.a and t1.a = 10;
784
# Test of multi-table-delete with foreign key constraints
787
CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
788
CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (t1_id) REFERENCES t1(id) ON DELETE CASCADE ) ENGINE=INNODB;
789
insert into t1 set id=1;
790
insert into t2 set id=1, t1_id=1;
791
delete t1,t2 from t1,t2 where t1.id=t2.t1_id;
795
CREATE TABLE t1(id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
796
CREATE TABLE t2(id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id) ) ENGINE=INNODB;
797
INSERT INTO t1 VALUES(1);
798
INSERT INTO t2 VALUES(1, 1);
800
UPDATE t1,t2 SET t1.id=t1.id+1, t2.t1_id=t1.id+1;
802
UPDATE t1,t2 SET t1.id=t1.id+1 where t1.id!=t2.id;
807
# Test of range_optimizer
812
CREATE TABLE t1 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
814
CREATE TABLE t2 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
816
CREATE TABLE t3 (id1 CHAR(15) NOT NULL, id2 CHAR(15) NOT NULL, PRIMARY KEY(id1, id2)) ENGINE=InnoDB;
818
INSERT INTO t3 VALUES("my-test-1", "my-test-2");
821
INSERT INTO t1 VALUES("this-key", "will disappear");
822
INSERT INTO t2 VALUES("this-key", "will also disappear");
823
DELETE FROM t3 WHERE id1="my-test-1";
833
SELECT * FROM t3 WHERE id1="my-test-1" LOCK IN SHARE MODE;
839
# Check update with conflicting key
842
CREATE TABLE t1 (a int not null primary key, b int not null, unique (b)) engine=innodb;
843
INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
844
# We need the a < 1000 test here to quard against the halloween problems
845
UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000;
850
# Test multi update with different join methods
853
CREATE TABLE t1 (a int not null primary key, b int not null, key (b)) engine=innodb;
854
CREATE TABLE t2 (a int not null primary key, b int not null, key (b)) engine=innodb;
855
INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12);
856
INSERT INTO t2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
858
# Full join, without key
859
update t1,t2 set t1.a=t1.a+100;
863
update t1,t2 set t1.a=t1.a+100 where t1.a=101;
867
update t1,t2 set t1.b=t1.b+10 where t1.b=2;
871
update t1,t2 set t1.b=t1.b+2,t2.b=t1.b+10 where t1.b between 3 and 5 and t1.a=t2.a+100;
876
CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM;
877
CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB;
879
INSERT INTO t1 ( B_ID ) VALUES ( 1 );
880
INSERT INTO t2 ( NEXT_T ) VALUES ( 1 );
884
create table t1 ( pk int primary key, parent int not null, child int not null, index (parent) ) engine = innodb;
885
insert into t1 values (1,0,4), (2,1,3), (3,2,1), (4,1,2);
886
select distinct parent,child from t1 order by parent;
890
# Test that MySQL priorities clustered indexes
892
create table t1 (a int not null auto_increment primary key, b int, c int, key(c)) engine=innodb;
893
create table t2 (a int not null auto_increment primary key, b int);
894
insert into t1 (b) values (null),(null),(null),(null),(null),(null),(null);
895
insert into t2 (a) select b from t1;
896
insert into t1 (b) select b from t2;
897
insert into t2 (a) select b from t1;
898
insert into t1 (a) select b from t2;
899
insert into t2 (a) select b from t1;
900
insert into t1 (a) select b from t2;
901
insert into t2 (a) select b from t1;
902
insert into t1 (a) select b from t2;
903
insert into t2 (a) select b from t1;
904
insert into t1 (a) select b from t2;
905
select count(*) from t1;
907
explain select * from t1 where c between 1 and 2500;
910
explain select * from t1 where c between 1 and 2500;
914
# Test of UPDATE ... ORDER BY
917
create table t1 (id int primary key auto_increment, fk int, index index_fk (fk)) engine=innodb;
919
insert into t1 (id) values (null),(null),(null),(null),(null);
920
update t1 set fk=69 where fk is null order by id limit 1;
924
create table t1 (a int not null, b int not null, key (a));
925
insert into t1 values (1,1),(1,2),(1,3),(3,1),(3,2),(3,3),(3,1),(3,2),(3,3),(2,1),(2,2),(2,3);
927
update t1 set b=(@tmp:=@tmp+1) order by a;
928
update t1 set b=99 where a=1 order by b asc limit 1;
929
update t1 set b=100 where a=1 order by b desc limit 2;
930
update t1 set a=a+10+b where a=1 order by b;
931
select * from t1 order by a,b;
935
# Test of multi-table-updates (bug #1980).
938
create table t1 ( c char(8) not null ) engine=innodb;
939
insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9');
940
insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F');
942
alter table t1 add b char(8) not null;
943
alter table t1 add a char(8) not null;
944
alter table t1 add primary key (a,b,c);
945
update t1 set a=c, b=c;
947
create table t2 (c char(8) not null, b char(8) not null, a char(8) not null, primary key(a,b,c)) engine=innodb;
948
insert into t2 select * from t1;
950
delete t1,t2 from t2,t1 where t1.a<'B' and t2.b=t1.b;
954
# test autoincrement with TRUNCATE
958
create table t1 (a integer auto_increment primary key) engine=innodb;
959
insert into t1 (a) values (NULL),(NULL);
961
insert into t1 (a) values (NULL),(NULL);
966
# Test dictionary handling with spaceand quoting
969
CREATE TABLE t1 (`id 1` INT NOT NULL, PRIMARY KEY (`id 1`)) ENGINE=INNODB;
970
CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (`t1_id`) REFERENCES `t1`(`id 1`) ON DELETE CASCADE ) ENGINE=INNODB;
971
#show create table t2;
975
# Test of multi updated and foreign keys
978
create table `t1` (`id` int( 11 ) not null ,primary key ( `id` )) engine = innodb;
979
insert into `t1`values ( 1 ) ;
980
create table `t2` (`id` int( 11 ) not null default '0',unique key `id` ( `id` ) ,constraint `t1_id_fk` foreign key ( `id` ) references `t1` (`id` )) engine = innodb;
981
insert into `t2`values ( 1 ) ;
982
create table `t3` (`id` int( 11 ) not null default '0',key `id` ( `id` ) ,constraint `t2_id_fk` foreign key ( `id` ) references `t2` (`id` )) engine = innodb;
983
insert into `t3`values ( 1 ) ;
985
delete t3,t2,t1 from t1,t2,t3 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
987
update t1,t2,t3 set t3.id=5, t2.id=6, t1.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
989
update t3 set t3.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
993
# test for recursion depth limit
999
foreign key(pid) references t1(id) on delete cascade) engine=innodb;
1000
insert into t1 values(0,0),(1,0),(2,1),(3,2),(4,3),(5,4),(6,5),(7,6),
1001
(8,7),(9,8),(10,9),(11,10),(12,11),(13,12),(14,13),(15,14);
1003
delete from t1 where id=0;
1004
delete from t1 where id=15;
1005
delete from t1 where id=0;
1013
CREATE TABLE t1 (col1 int(1))ENGINE=InnoDB;
1014
CREATE TABLE t2 (col1 int(1),stamp TIMESTAMP,INDEX stamp_idx
1015
(stamp))ENGINE=InnoDB;
1016
insert into t1 values (1),(2),(3);
1017
# Note that timestamp 3 is wrong
1018
insert into t2 values (1, 20020204130000),(2, 20020204130000),(4,20020204310000 ),(5,20020204230000);
1019
SELECT col1 FROM t1 UNION SELECT col1 FROM t2 WHERE stamp <
1020
'20020204120000' GROUP BY col1;
1024
# Test by Francois MASUREL
1028
`id` int(10) unsigned NOT NULL auto_increment,
1029
`id_object` int(10) unsigned default '0',
1030
`id_version` int(10) unsigned NOT NULL default '1',
1031
`label` varchar(100) NOT NULL default '',
1034
KEY `id_object` (`id_object`),
1035
KEY `id_version` (`id_version`)
1038
INSERT INTO t1 VALUES("6", "3382", "9", "Test", NULL), ("7", "102", "5", "Le Pekin (Test)", NULL),("584", "1794", "4", "Test de resto", NULL),("837", "1822", "6", "Test 3", NULL),("1119", "3524", "1", "Societe Test", NULL),("1122", "3525", "1", "Fournisseur Test", NULL);
1041
`id` int(10) unsigned NOT NULL auto_increment,
1042
`id_version` int(10) unsigned NOT NULL default '1',
1044
KEY `id_version` (`id_version`)
1047
INSERT INTO t2 VALUES("3524", "1"),("3525", "1"),("1794", "4"),("102", "5"),("1822", "6"),("3382", "9");
1049
SELECT t2.id, t1.`label` FROM t2 INNER JOIN
1050
(SELECT t1.id_object as id_object FROM t1 WHERE t1.`label` LIKE '%test%') AS lbl
1051
ON (t2.id = lbl.id_object) INNER JOIN t1 ON (t2.id = t1.id_object);
1054
create table t1 (a int, b varchar(200), c text not null) checksum=1 engine=myisam;
1055
create table t2 (a int, b varchar(200), c text not null) checksum=0 engine=innodb;
1056
create table t3 (a int, b varchar(200), c text not null) checksum=1 engine=innodb;
1057
insert t1 values (1, "aaa", "bbb"), (NULL, "", "ccccc"), (0, NULL, "");
1058
insert t2 select * from t1;
1059
insert t3 select * from t1;
1060
checksum table t1, t2, t3, t4 quick;
1061
checksum table t1, t2, t3, t4;
1062
checksum table t1, t2, t3, t4 extended;
1064
drop table t1,t2,t3;
1067
# Test problem with refering to different fields in same table in UNION
1070
create table t1 (id int, name char(10) not null, name2 char(10) not null) engine=innodb;
1071
insert into t1 values(1,'first','fff'),(2,'second','sss'),(3,'third','ttt');
1072
select trim(name2) from t1 union all select trim(name) from t1 union all select trim(id) from t1;
1078
create table t1 (a int) engine=innodb;
1079
create table t2 like t1;
1083
# Test of automaticly created foreign keys
1086
create table t1 (id int(11) not null, id2 int(11) not null, unique (id,id2)) engine=innodb;
1087
create table t2 (id int(11) not null, constraint t1_id_fk foreign key ( id ) references t1 (id)) engine = innodb;
1088
show create table t1;
1089
show create table t2;
1090
create index id on t2 (id);
1091
show create table t2;
1092
create index id2 on t2 (id);
1093
show create table t2;
1094
drop index id2 on t2;
1096
drop index id on t2;
1097
show create table t2;
1100
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id,id2) references t1 (id,id2)) engine = innodb;
1101
show create table t2;
1102
create unique index id on t2 (id,id2);
1103
show create table t2;
1106
# Check foreign key columns created in different order than key columns
1107
create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;
1108
show create table t2;
1111
create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2), constraint t1_id_fk foreign key (id) references t1 (id)) engine = innodb;
1112
show create table t2;
1115
create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;
1116
show create table t2;
1119
create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id), primary key (id), index (id,id2)) engine = innodb;
1120
show create table t2;
1123
create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id)) engine= innodb;
1124
show create table t2;
1125
alter table t2 add index id_test (id), add index id_test2 (id,id2);
1126
show create table t2;
1129
# Test error handling
1131
# Embedded server doesn't chdir to data directory
1132
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
1133
--error ER_WRONG_FK_DEF
1134
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
1138
create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb;
1139
show create table t2;
1141
create table t2 (a int auto_increment primary key, b int, foreign key (b) references t1(id), foreign key (b) references t1(id), unique(b)) engine=innodb;
1142
show create table t2;
1147
# Bug #6126: Duplicate columns in keys gives misleading error message
1150
create table t1 (c char(10), index (c,c)) engine=innodb;
1152
create table t1 (c1 char(10), c2 char(10), index (c1,c2,c1)) engine=innodb;
1154
create table t1 (c1 char(10), c2 char(10), index (c1,c1,c2)) engine=innodb;
1156
create table t1 (c1 char(10), c2 char(10), index (c2,c1,c1)) engine=innodb;
1157
create table t1 (c1 char(10), c2 char(10)) engine=innodb;
1159
alter table t1 add key (c1,c1);
1161
alter table t1 add key (c2,c1,c1);
1163
alter table t1 add key (c1,c2,c1);
1165
alter table t1 add key (c1,c1,c2);
1169
# Bug #4082: integer truncation
1172
create table t1(a int(1) , b int(1)) engine=innodb;
1173
insert into t1 values ('1111', '3333');
1174
select distinct concat(a, b) from t1;
1178
# BUG#7709 test case - Boolean fulltext query against unsupported
1179
# engines does not fail
1182
CREATE TABLE t1 ( a char(10) ) ENGINE=InnoDB;
1184
SELECT a FROM t1 WHERE MATCH (a) AGAINST ('test' IN BOOLEAN MODE);
1188
# check null values #1
1192
CREATE TABLE t1 (a_id tinyint(4) NOT NULL default '0', PRIMARY KEY (a_id)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1193
INSERT INTO t1 VALUES (1),(2),(3);
1194
CREATE TABLE t2 (b_id tinyint(4) NOT NULL default '0',b_a tinyint(4) NOT NULL default '0', PRIMARY KEY (b_id), KEY (b_a),
1195
CONSTRAINT fk_b_a FOREIGN KEY (b_a) REFERENCES t1 (a_id) ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1197
INSERT INTO t2 VALUES (1,1),(2,1),(3,1),(4,2),(5,2);
1198
SELECT * FROM (SELECT t1.*,GROUP_CONCAT(t2.b_id SEPARATOR ',') as b_list FROM (t1 LEFT JOIN (t2) on t1.a_id = t2.b_a) GROUP BY t1.a_id ) AS xyz;
1203
# Bug#11816 - Truncate table doesn't work with temporary innodb tables
1204
# This is not an innodb bug, but we test it using innodb.
1206
create temporary table t1 (a int) engine=innodb;
1207
insert into t1 values (4711);
1209
insert into t1 values (42);
1212
# Show that it works with permanent tables too.
1213
create table t1 (a int) engine=innodb;
1214
insert into t1 values (4711);
1216
insert into t1 values (42);
1221
# Bug #13025 Server crash during filesort
1224
create table t1 (a int not null, b int not null, c blob not null, d int not null, e int, primary key (a,b,c(255),d)) engine=innodb;
1225
insert into t1 values (2,2,"b",2,2),(1,1,"a",1,1),(3,3,"ab",3,3);
1226
select * from t1 order by a,b,c,d;
1227
explain select * from t1 order by a,b,c,d;
1231
# BUG#11039,#13218 Wrong key length in min()
1234
create table t1 (a char(1), b char(1), key(a, b)) engine=innodb;
1235
insert into t1 values ('8', '6'), ('4', '7');
1236
select min(a) from t1;
1237
select min(b) from t1 where a='8';
1243
# range optimizer problem
1246
create table t1 (x bigint unsigned not null primary key) engine=innodb;
1247
insert into t1(x) values (0xfffffffffffffff0),(0xfffffffffffffff1);
1249
select count(*) from t1 where x>0;
1250
select count(*) from t1 where x=0;
1251
select count(*) from t1 where x<0;
1252
select count(*) from t1 where x < -16;
1253
select count(*) from t1 where x = -16;
1254
explain select count(*) from t1 where x > -16;
1255
select count(*) from t1 where x > -16;
1256
select * from t1 where x > -16;
1257
select count(*) from t1 where x = 18446744073709551601;
1261
# Test for testable InnoDB status variables. This test
1262
# uses previous ones(pages_created, rows_deleted, ...).
1263
show status like "Innodb_buffer_pool_pages_total";
1264
show status like "Innodb_page_size";
1265
show status like "Innodb_rows_deleted";
1266
show status like "Innodb_rows_inserted";
1267
show status like "Innodb_rows_updated";
1269
# Test for row locks InnoDB status variables.
1270
show status like "Innodb_row_lock_waits";
1271
show status like "Innodb_row_lock_current_waits";
1272
show status like "Innodb_row_lock_time";
1273
show status like "Innodb_row_lock_time_max";
1274
show status like "Innodb_row_lock_time_avg";
1276
# Test for innodb_sync_spin_loops variable
1277
show variables like "innodb_sync_spin_loops";
1278
set global innodb_sync_spin_loops=1000;
1279
show variables like "innodb_sync_spin_loops";
1280
set global innodb_sync_spin_loops=0;
1281
show variables like "innodb_sync_spin_loops";
1282
set global innodb_sync_spin_loops=20;
1283
show variables like "innodb_sync_spin_loops";
1285
# Test for innodb_thread_concurrency variable
1286
show variables like "innodb_thread_concurrency";
1287
set global innodb_thread_concurrency=1001;
1288
show variables like "innodb_thread_concurrency";
1289
set global innodb_thread_concurrency=0;
1290
show variables like "innodb_thread_concurrency";
1291
set global innodb_thread_concurrency=16;
1292
show variables like "innodb_thread_concurrency";
1294
# Test for innodb_concurrency_tickets variable
1295
show variables like "innodb_concurrency_tickets";
1296
set global innodb_concurrency_tickets=1000;
1297
show variables like "innodb_concurrency_tickets";
1298
set global innodb_concurrency_tickets=0;
1299
show variables like "innodb_concurrency_tickets";
1300
set global innodb_concurrency_tickets=500;
1301
show variables like "innodb_concurrency_tickets";
1303
# Test for innodb_thread_sleep_delay variable
1304
show variables like "innodb_thread_sleep_delay";
1305
set global innodb_thread_sleep_delay=100000;
1306
show variables like "innodb_thread_sleep_delay";
1307
set global innodb_thread_sleep_delay=0;
1308
show variables like "innodb_thread_sleep_delay";
1309
set global innodb_thread_sleep_delay=10000;
1310
show variables like "innodb_thread_sleep_delay";
1316
let $default=`select @@storage_engine`;
1317
set storage_engine=INNODB;
1318
source include/varchar.inc;
1321
# Some errors/warnings on create
1324
# Embedded server doesn't chdir to data directory
1325
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
1326
create table t1 (v varchar(65530), key(v));
1328
create table t1 (v varchar(65536));
1329
show create table t1;
1331
create table t1 (v varchar(65530) character set utf8);
1332
show create table t1;
1335
eval set storage_engine=$default;
1337
# InnoDB specific varchar tests
1338
create table t1 (v varchar(16384)) engine=innodb;
1342
# BUG#11039 Wrong key length in min()
1345
create table t1 (a char(1), b char(1), key(a, b)) engine=innodb;
1346
insert into t1 values ('8', '6'), ('4', '7');
1347
select min(a) from t1;
1348
select min(b) from t1 where a='8';
1352
# Bug #11080 & #11005 Multi-row REPLACE fails on a duplicate key error
1355
CREATE TABLE t1 ( `a` int(11) NOT NULL auto_increment, `b` int(11) default NULL,PRIMARY KEY (`a`),UNIQUE KEY `b` (`b`)) ENGINE=innodb;
1356
insert into t1 (b) values (1);
1357
replace into t1 (b) values (2), (1), (3);
1360
insert into t1 (b) values (1);
1361
replace into t1 (b) values (2);
1362
replace into t1 (b) values (1);
1363
replace into t1 (b) values (3);
1367
create table t1 (rowid int not null auto_increment, val int not null,primary
1368
key (rowid), unique(val)) engine=innodb;
1369
replace into t1 (val) values ('1'),('2');
1370
replace into t1 (val) values ('1'),('2');
1371
--error ER_DUP_ENTRY
1372
insert into t1 (val) values ('1'),('2');
1377
# Test that update does not change internal auto-increment value
1380
create table t1 (a int not null auto_increment primary key, val int) engine=InnoDB;
1381
insert into t1 (val) values (1);
1382
update t1 set a=2 where a=1;
1383
# We should get the following error because InnoDB does not update the counter
1384
--error ER_DUP_ENTRY
1385
insert into t1 (val) values (1);
1393
CREATE TABLE t1 (GRADE DECIMAL(4) NOT NULL, PRIMARY KEY (GRADE)) ENGINE=INNODB;
1395
INSERT INTO t1 (GRADE) VALUES (151),(252),(343);
1396
SELECT GRADE FROM t1 WHERE GRADE > 160 AND GRADE < 300;
1397
SELECT GRADE FROM t1 WHERE GRADE= 151;
1401
# Bug #12340 multitable delete deletes only one record
1403
create table t1 (f1 varchar(10), f2 varchar(10), primary key (f1,f2)) engine=innodb;
1404
create table t2 (f3 varchar(10), f4 varchar(10), key (f4)) engine=innodb;
1405
insert into t2 values ('aa','cc');
1406
insert into t1 values ('aa','bb'),('aa','cc');
1407
delete t1 from t1,t2 where f1=f3 and f4='cc';
1412
# Test that the slow TRUNCATE implementation resets autoincrement columns
1417
id INTEGER NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)
1421
id INTEGER NOT NULL,
1422
FOREIGN KEY (id) REFERENCES t1 (id)
1425
INSERT INTO t1 (id) VALUES (NULL);
1428
INSERT INTO t1 (id) VALUES (NULL);
1431
# continued from above; test that doing a slow TRUNCATE on a table with 0
1432
# rows resets autoincrement columns
1435
INSERT INTO t1 (id) VALUES (NULL);
1439
# Test that foreign keys in temporary tables are not accepted (bug #12084)
1446
CREATE TEMPORARY TABLE t2
1448
id INT NOT NULL PRIMARY KEY,
1450
FOREIGN KEY (b) REFERENCES test.t1(id)
1455
# Test that index column max sizes are honored (bug #13315)
1459
create table t1 (col1 varchar(2000), index (col1(767)))
1460
character set = latin1 engine = innodb;
1463
create table t2 (col1 char(255), index (col1))
1464
character set = latin1 engine = innodb;
1465
create table t3 (col1 binary(255), index (col1))
1466
character set = latin1 engine = innodb;
1467
create table t4 (col1 varchar(767), index (col1))
1468
character set = latin1 engine = innodb;
1469
create table t5 (col1 varchar(767) primary key)
1470
character set = latin1 engine = innodb;
1471
create table t6 (col1 varbinary(767) primary key)
1472
character set = latin1 engine = innodb;
1473
create table t7 (col1 text, index(col1(767)))
1474
character set = latin1 engine = innodb;
1475
create table t8 (col1 blob, index(col1(767)))
1476
character set = latin1 engine = innodb;
1478
# multi-column indexes are allowed to be longer
1479
create table t9 (col1 varchar(512), col2 varchar(512), index(col1, col2))
1480
character set = latin1 engine = innodb;
1482
show create table t9;
1484
drop table t1, t2, t3, t4, t5, t6, t7, t8, t9;
1486
# these should have their index length trimmed
1487
create table t1 (col1 varchar(768), index(col1))
1488
character set = latin1 engine = innodb;
1489
create table t2 (col1 varbinary(768), index(col1))
1490
character set = latin1 engine = innodb;
1491
create table t3 (col1 text, index(col1(768)))
1492
character set = latin1 engine = innodb;
1493
create table t4 (col1 blob, index(col1(768)))
1494
character set = latin1 engine = innodb;
1496
show create table t1;
1498
drop table t1, t2, t3, t4;
1500
# these should be refused
1502
create table t1 (col1 varchar(768) primary key)
1503
character set = latin1 engine = innodb;
1505
create table t2 (col1 varbinary(768) primary key)
1506
character set = latin1 engine = innodb;
1508
create table t3 (col1 text, primary key(col1(768)))
1509
character set = latin1 engine = innodb;
1511
create table t4 (col1 blob, primary key(col1(768)))
1512
character set = latin1 engine = innodb;
1515
# Test improved foreign key error messages (bug #3443)
1526
CONSTRAINT c1 FOREIGN KEY (v) REFERENCES t1(id)
1530
INSERT INTO t2 VALUES(2);
1532
INSERT INTO t1 VALUES(1);
1533
INSERT INTO t2 VALUES(1);
1536
DELETE FROM t1 WHERE id = 1;
1541
SET FOREIGN_KEY_CHECKS=0;
1543
SET FOREIGN_KEY_CHECKS=1;
1546
INSERT INTO t2 VALUES(3);
1550
# Test that checksum table uses a consistent read Bug #12669
1552
connect (a,localhost,root,,);
1553
connect (b,localhost,root,,);
1555
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
1556
insert into t1 values (1),(2);
1560
insert into t1 values(3);
1563
# Here checksum should not see insert
1575
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
1576
insert into t1 values (1),(2);
1581
insert into t1 values(3);
1584
# Here checksum sees insert
1593
# tests for bugs #9802 and #13778
1595
# test that FKs between invalid types are not accepted
1597
set foreign_key_checks=0;
1598
create table t2 (a int primary key, b int, foreign key (b) references t1(a)) engine = innodb;
1599
# Embedded server doesn't chdir to data directory
1600
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
1602
create table t1(a char(10) primary key, b varchar(20)) engine = innodb;
1603
set foreign_key_checks=1;
1606
# test that FKs between different charsets are not accepted in CREATE even
1609
set foreign_key_checks=0;
1610
create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
1611
# Embedded server doesn't chdir to data directory
1612
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
1614
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=utf8;
1615
set foreign_key_checks=1;
1618
# test that invalid datatype conversions with ALTER are not allowed
1620
set foreign_key_checks=0;
1621
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb;
1622
create table t1(a varchar(10) primary key) engine = innodb;
1624
alter table t1 modify column a int;
1625
set foreign_key_checks=1;
1628
# test that charset conversions with ALTER are allowed when f_k_c is 0
1630
set foreign_key_checks=0;
1631
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
1632
create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
1633
alter table t1 convert to character set utf8;
1634
set foreign_key_checks=1;
1637
# test that RENAME does not allow invalid charsets when f_k_c is 0
1639
set foreign_key_checks=0;
1640
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
1641
create table t3(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=utf8;
1642
# Embedded server doesn't chdir to data directory
1643
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
1645
rename table t3 to t1;
1646
set foreign_key_checks=1;
1649
# test that foreign key errors are reported correctly (Bug #15550)
1651
create table t1(a int primary key) row_format=redundant engine=innodb;
1652
create table t2(a int primary key,constraint foreign key(a)references t1(a)) row_format=compact engine=innodb;
1653
create table t3(a int primary key) row_format=compact engine=innodb;
1654
create table t4(a int primary key,constraint foreign key(a)references t3(a)) row_format=redundant engine=innodb;
1656
insert into t1 values(1);
1657
insert into t3 values(1);
1659
insert into t2 values(2);
1661
insert into t4 values(2);
1662
insert into t2 values(1);
1663
insert into t4 values(1);
1681
drop table t4,t3,t2,t1;
1685
# Test that we can create a large (>1K) key
1687
create table t1 (a varchar(255) character set utf8,
1688
b varchar(255) character set utf8,
1689
c varchar(255) character set utf8,
1690
d varchar(255) character set utf8,
1691
key (a,b,c,d)) engine=innodb;
1693
--error ER_TOO_LONG_KEY
1694
create table t1 (a varchar(255) character set utf8,
1695
b varchar(255) character set utf8,
1696
c varchar(255) character set utf8,
1697
d varchar(255) character set utf8,
1698
e varchar(255) character set utf8,
1699
key (a,b,c,d,e)) engine=innodb;
1702
# test the padding of BINARY types and collations (Bug #14189)
1704
create table t1 (s1 varbinary(2),primary key (s1)) engine=innodb;
1705
create table t2 (s1 binary(2),primary key (s1)) engine=innodb;
1706
create table t3 (s1 varchar(2) binary,primary key (s1)) engine=innodb;
1707
create table t4 (s1 char(2) binary,primary key (s1)) engine=innodb;
1709
insert into t1 values (0x41),(0x4120),(0x4100);
1710
-- error ER_DUP_ENTRY
1711
insert into t2 values (0x41),(0x4120),(0x4100);
1712
insert into t2 values (0x41),(0x4120);
1713
-- error ER_DUP_ENTRY
1714
insert into t3 values (0x41),(0x4120),(0x4100);
1715
insert into t3 values (0x41),(0x4100);
1716
-- error ER_DUP_ENTRY
1717
insert into t4 values (0x41),(0x4120),(0x4100);
1718
insert into t4 values (0x41),(0x4100);
1719
select hex(s1) from t1;
1720
select hex(s1) from t2;
1721
select hex(s1) from t3;
1722
select hex(s1) from t4;
1723
drop table t1,t2,t3,t4;
1725
create table t1 (a int primary key,s1 varbinary(3) not null unique) engine=innodb;
1726
create table t2 (s1 binary(2) not null, constraint c foreign key(s1) references t1(s1) on update cascade) engine=innodb;
1728
insert into t1 values(1,0x4100),(2,0x41),(3,0x4120),(4,0x42);
1730
insert into t2 values(0x42);
1731
insert into t2 values(0x41);
1732
select hex(s1) from t2;
1733
update t1 set s1=0x123456 where a=2;
1734
select hex(s1) from t2;
1736
update t1 set s1=0x12 where a=1;
1738
update t1 set s1=0x12345678 where a=1;
1740
update t1 set s1=0x123457 where a=1;
1741
update t1 set s1=0x1220 where a=1;
1742
select hex(s1) from t2;
1743
update t1 set s1=0x1200 where a=1;
1744
select hex(s1) from t2;
1745
update t1 set s1=0x4200 where a=1;
1746
select hex(s1) from t2;
1748
delete from t1 where a=1;
1749
delete from t1 where a=2;
1750
update t2 set s1=0x4120;
1753
delete from t1 where a!=3;
1754
select a,hex(s1) from t1;
1755
select hex(s1) from t2;
1759
create table t1 (a int primary key,s1 varchar(2) binary not null unique) engine=innodb;
1760
create table t2 (s1 char(2) binary not null, constraint c foreign key(s1) references t1(s1) on update cascade) engine=innodb;
1762
insert into t1 values(1,0x4100),(2,0x41);
1763
insert into t2 values(0x41);
1764
select hex(s1) from t2;
1765
update t1 set s1=0x1234 where a=1;
1766
select hex(s1) from t2;
1767
update t1 set s1=0x12 where a=2;
1768
select hex(s1) from t2;
1769
delete from t1 where a=1;
1771
delete from t1 where a=2;
1772
select a,hex(s1) from t1;
1773
select hex(s1) from t2;
1776
# Ensure that <tablename>_ibfk_0 is not mistreated as a
1777
# generated foreign key identifier. (Bug #16387)
1779
CREATE TABLE t1(a INT, PRIMARY KEY(a)) ENGINE=InnoDB;
1780
CREATE TABLE t2(a INT) ENGINE=InnoDB;
1781
ALTER TABLE t2 ADD FOREIGN KEY (a) REFERENCES t1(a);
1782
ALTER TABLE t2 DROP FOREIGN KEY t2_ibfk_1;
1783
ALTER TABLE t2 ADD CONSTRAINT t2_ibfk_0 FOREIGN KEY (a) REFERENCES t1(a);
1784
ALTER TABLE t2 DROP FOREIGN KEY t2_ibfk_0;
1785
SHOW CREATE TABLE t2;
1789
# Test case for bug #16229: MySQL/InnoDB uses full explicit table locks in trigger processing
1792
connect (a,localhost,root,,);
1793
connect (b,localhost,root,,);
1795
create table t1(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
1796
insert into t1(a) values (1),(2),(3);
1800
update t1 set b = 5 where a = 2;
1803
create trigger t1t before insert on t1 for each row begin set NEW.b = NEW.a * 10 + 5, NEW.c = NEW.a / 10; end |
1807
insert into t1(a) values (10),(20),(30),(40),(50),(60),(70),(80),(90),(100),
1808
(11),(21),(31),(41),(51),(61),(71),(81),(91),(101),
1809
(12),(22),(32),(42),(52),(62),(72),(82),(92),(102),
1810
(13),(23),(33),(43),(53),(63),(73),(83),(93),(103),
1811
(14),(24),(34),(44),(54),(64),(74),(84),(94),(104);
1821
# Another trigger test
1823
connect (a,localhost,root,,);
1824
connect (b,localhost,root,,);
1826
create table t1(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
1827
create table t2(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
1828
create table t3(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
1829
create table t4(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
1830
create table t5(a int not null, b int, c int, d int, primary key(a)) engine=innodb;
1831
insert into t1(a) values (1),(2),(3);
1832
insert into t2(a) values (1),(2),(3);
1833
insert into t3(a) values (1),(2),(3);
1834
insert into t4(a) values (1),(2),(3);
1835
insert into t3(a) values (5),(7),(8);
1836
insert into t4(a) values (5),(7),(8);
1837
insert into t5(a) values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12);
1840
create trigger t1t before insert on t1 for each row begin
1841
INSERT INTO t2 SET a = NEW.a;
1844
create trigger t2t before insert on t2 for each row begin
1845
DELETE FROM t3 WHERE a = NEW.a;
1848
create trigger t3t before delete on t3 for each row begin
1849
UPDATE t4 SET b = b + 1 WHERE a = OLD.a;
1852
create trigger t4t before update on t4 for each row begin
1853
UPDATE t5 SET b = b + 1 where a = NEW.a;
1858
update t1 set b = b + 5 where a = 1;
1859
update t2 set b = b + 5 where a = 1;
1860
update t3 set b = b + 5 where a = 1;
1861
update t4 set b = b + 5 where a = 1;
1862
insert into t5(a) values(20);
1865
insert into t1(a) values(7);
1866
insert into t2(a) values(8);
1867
delete from t2 where a = 3;
1868
update t4 set b = b + 1 where a = 3;
1874
drop table t1, t2, t3, t4, t5;
1880
# Test that cascading updates leading to duplicate keys give the correct
1881
# error message (bug #9680)
1885
field1 varchar(8) NOT NULL DEFAULT '',
1886
field2 varchar(8) NOT NULL DEFAULT '',
1887
PRIMARY KEY (field1, field2)
1891
field1 varchar(8) NOT NULL DEFAULT '' PRIMARY KEY,
1892
FOREIGN KEY (field1) REFERENCES t1 (field1)
1893
ON DELETE CASCADE ON UPDATE CASCADE
1896
INSERT INTO t1 VALUES ('old', 'somevalu');
1897
INSERT INTO t1 VALUES ('other', 'anyvalue');
1899
INSERT INTO t2 VALUES ('old');
1900
INSERT INTO t2 VALUES ('other');
1902
--error ER_FOREIGN_DUPLICATE_KEY
1903
UPDATE t1 SET field1 = 'other' WHERE field2 = 'somevalu';
1909
# Bug#18477 - MySQL/InnoDB Ignoring Foreign Keys in ALTER TABLE
1923
alter table t1 add constraint c2_fk foreign key (c2)
1924
references t2(c1) on delete cascade;
1925
show create table t1;
1927
alter table t1 drop foreign key c2_fk;
1928
show create table t1;
1933
# Bug #14360: problem with intervals
1936
create table t1(a date) engine=innodb;
1937
create table t2(a date, key(a)) engine=innodb;
1938
insert into t1 values('2005-10-01');
1939
insert into t2 values('2005-10-01');
1940
select * from t1, t2
1941
where t2.a between t1.a - interval 2 day and t1.a + interval 2 day;
1944
create table t1 (id int not null, f_id int not null, f int not null,
1945
primary key(f_id, id)) engine=innodb;
1946
create table t2 (id int not null,s_id int not null,s varchar(200),
1947
primary key(id)) engine=innodb;
1948
INSERT INTO t1 VALUES (8, 1, 3);
1949
INSERT INTO t1 VALUES (1, 2, 1);
1950
INSERT INTO t2 VALUES (1, 0, '');
1951
INSERT INTO t2 VALUES (8, 1, '');
1953
DELETE ml.* FROM t1 AS ml LEFT JOIN t2 AS mm ON (mm.id=ml.id)
1954
WHERE mm.id IS NULL;
1955
select ml.* from t1 as ml left join t2 as mm on (mm.id=ml.id)
1956
where mm.id is null lock in share mode;
1960
# Test case where X-locks on unused rows should be released in a
1961
# update (because READ COMMITTED isolation level)
1964
connect (a,localhost,root,,);
1965
connect (b,localhost,root,,);
1967
create table t1(a int not null, b int, primary key(a)) engine=innodb;
1968
insert into t1 values(1,1),(2,2),(3,1),(4,2),(5,1),(6,2),(7,3);
1971
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
1972
update t1 set b = 5 where b = 1;
1975
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
1977
# X-lock to record (7,3) should be released in a update
1979
select * from t1 where a = 7 and b = 3 for update;
1990
# Test case where no locks should be released (because we are not
1991
# using READ COMMITTED isolation level)
1994
connect (a,localhost,root,,);
1995
connect (b,localhost,root,,);
1997
create table t1(a int not null, b int, primary key(a)) engine=innodb;
1998
insert into t1 values(1,1),(2,2),(3,1),(4,2),(5,1),(6,2);
2001
select * from t1 lock in share mode;
2002
update t1 set b = 5 where b = 1;
2006
# S-lock to records (2,2),(4,2), and (6,2) should not be released in a update
2009
select * from t1 where a = 2 and b = 2 for update;
2011
# X-lock to record (1,1),(3,1),(5,1) should not be released in a update
2024
# Consistent read should be used in following selects
2026
# 1) INSERT INTO ... SELECT
2027
# 2) UPDATE ... = ( SELECT ...)
2028
# 3) CREATE ... SELECT
2030
connect (a,localhost,root,,);
2031
connect (b,localhost,root,,);
2033
create table t1(a int not null, b int, primary key(a)) engine=innodb;
2034
insert into t1 values (1,2),(5,3),(4,2);
2035
create table t2(d int not null, e int, primary key(d)) engine=innodb;
2036
insert into t2 values (8,6),(12,1),(3,1);
2039
select * from t2 for update;
2042
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
2043
insert into t1 select * from t2;
2044
update t1 set b = (select e from t2 where a = d);
2045
create table t3(d int not null, e int, primary key(d)) engine=innodb
2053
drop table t1, t2, t3;
2056
# Consistent read should not be used if
2058
# (a) isolation level is serializable OR
2059
# (b) select ... lock in share mode OR
2060
# (c) select ... for update
2062
# in following queries:
2064
# 1) INSERT INTO ... SELECT
2065
# 2) UPDATE ... = ( SELECT ...)
2066
# 3) CREATE ... SELECT
2068
connect (a,localhost,root,,);
2069
connect (b,localhost,root,,);
2070
connect (c,localhost,root,,);
2071
connect (d,localhost,root,,);
2072
connect (e,localhost,root,,);
2073
connect (f,localhost,root,,);
2074
connect (g,localhost,root,,);
2075
connect (h,localhost,root,,);
2076
connect (i,localhost,root,,);
2077
connect (j,localhost,root,,);
2079
create table t1(a int not null, b int, primary key(a)) engine=innodb;
2080
insert into t1 values (1,2),(5,3),(4,2);
2081
create table t2(a int not null, b int, primary key(a)) engine=innodb;
2082
insert into t2 values (8,6),(12,1),(3,1);
2083
create table t3(d int not null, b int, primary key(d)) engine=innodb;
2084
insert into t3 values (8,6),(12,1),(3,1);
2085
create table t5(a int not null, b int, primary key(a)) engine=innodb;
2086
insert into t5 values (1,2),(5,3),(4,2);
2087
create table t6(d int not null, e int, primary key(d)) engine=innodb;
2088
insert into t6 values (8,6),(12,1),(3,1);
2089
create table t8(a int not null, b int, primary key(a)) engine=innodb;
2090
insert into t8 values (1,2),(5,3),(4,2);
2091
create table t9(d int not null, e int, primary key(d)) engine=innodb;
2092
insert into t9 values (8,6),(12,1),(3,1);
2095
select * from t2 for update;
2098
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
2100
insert into t1 select * from t2;
2103
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
2105
update t3 set b = (select b from t2 where a = d);
2108
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
2110
create table t4(a int not null, b int, primary key(a)) engine=innodb select * from t2;
2113
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
2115
insert into t5 (select * from t2 lock in share mode);
2118
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
2120
update t6 set e = (select b from t2 where a = d lock in share mode);
2123
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
2125
create table t7(a int not null, b int, primary key(a)) engine=innodb select * from t2 lock in share mode;
2128
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
2130
insert into t8 (select * from t2 for update);
2133
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
2135
update t9 set e = (select b from t2 where a = d for update);
2138
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
2140
create table t10(a int not null, b int, primary key(a)) engine=innodb select * from t2 for update;
2192
drop table t1, t2, t3, t5, t6, t8, t9;
2194
# bug 18934, "InnoDB crashes when table uses column names like DB_ROW_ID"
2196
CREATE TABLE t1 (DB_ROW_ID int) engine=innodb;
2199
# Bug #17152: Wrong result with BINARY comparison on aliased column
2203
a BIGINT(20) NOT NULL,
2205
) ENGINE=INNODB DEFAULT CHARSET=UTF8;
2208
a BIGINT(20) NOT NULL,
2209
b VARCHAR(128) NOT NULL,
2212
KEY idx_t2_b_c (b,c(200)),
2213
CONSTRAINT t_fk FOREIGN KEY (a) REFERENCES t1 (a)
2215
) ENGINE=INNODB DEFAULT CHARSET=UTF8;
2217
INSERT INTO t1 VALUES (1);
2218
INSERT INTO t2 VALUES (1, 'bar', 'vbar');
2219
INSERT INTO t2 VALUES (1, 'BAR2', 'VBAR');
2220
INSERT INTO t2 VALUES (1, 'bar_bar', 'bibi');
2221
INSERT INTO t2 VALUES (1, 'customer_over', '1');
2223
SELECT * FROM t2 WHERE b = 'customer_over';
2224
SELECT * FROM t2 WHERE BINARY b = 'customer_over';
2225
SELECT DISTINCT p0.a FROM t2 p0 WHERE p0.b = 'customer_over';
2226
/* Bang: Empty result set, above was expected: */
2227
SELECT DISTINCT p0.a FROM t2 p0 WHERE BINARY p0.b = 'customer_over';
2228
SELECT p0.a FROM t2 p0 WHERE BINARY p0.b = 'customer_over';
2233
# Test optimize on table with open transaction
2236
CREATE TABLE t1 ( a int ) ENGINE=innodb;
2238
INSERT INTO t1 VALUES (1);
2243
# Bug #24741 (existing cascade clauses disappear when adding foreign keys)
2246
CREATE TABLE t1 (id int PRIMARY KEY, f int NOT NULL, INDEX(f)) ENGINE=InnoDB;
2248
CREATE TABLE t2 (id int PRIMARY KEY, f INT NOT NULL,
2249
CONSTRAINT t2_t1 FOREIGN KEY (id) REFERENCES t1 (id)
2250
ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;
2252
ALTER TABLE t2 ADD FOREIGN KEY (f) REFERENCES t1 (f) ON
2253
DELETE CASCADE ON UPDATE CASCADE;
2255
SHOW CREATE TABLE t2;
2259
# Bug #25927: Prevent ALTER TABLE ... MODIFY ... NOT NULL on columns
2260
# for which there is a foreign key constraint ON ... SET NULL.
2263
CREATE TABLE t1 (a INT, INDEX(a)) ENGINE=InnoDB;
2264
CREATE TABLE t2 (a INT, INDEX(a)) ENGINE=InnoDB;
2265
INSERT INTO t1 VALUES (1);
2266
INSERT INTO t2 VALUES (1);
2267
ALTER TABLE t2 ADD FOREIGN KEY (a) REFERENCES t1 (a) ON DELETE SET NULL;
2268
# mysqltest first does replace_regex, then replace_result
2269
--replace_regex /'[^']*test\/#sql-[0-9a-f_]*'/'#sql-temporary'/
2270
# Embedded server doesn't chdir to data directory
2271
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
2273
ALTER TABLE t2 MODIFY a INT NOT NULL;
2278
# Bug #26835: table corruption after delete+insert
2281
CREATE TABLE t1 (a VARCHAR(5) COLLATE utf8_unicode_ci PRIMARY KEY)
2283
INSERT INTO t1 VALUES (0xEFBCA4EFBCA4EFBCA4);
2285
INSERT INTO t1 VALUES ('DDD');
2290
# Bug #23313 (AUTO_INCREMENT=# not reported back for InnoDB tables)
2291
# Bug #21404 (AUTO_INCREMENT value reset when Adding FKEY (or ALTER?))
2294
CREATE TABLE t1 (id int PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB
2297
INSERT INTO t1 VALUES (0),(347),(0);
2300
SHOW CREATE TABLE t1;
2302
CREATE TABLE t2 (id int PRIMARY KEY) ENGINE=InnoDB;
2303
INSERT INTO t2 VALUES(42),(347),(348);
2304
ALTER TABLE t1 ADD CONSTRAINT t1_t2 FOREIGN KEY (id) REFERENCES t2(id);
2305
SHOW CREATE TABLE t1;
2310
# Bug #21101 (Prints wrong error message if max row size is too large)
2314
c01 CHAR(255), c02 CHAR(255), c03 CHAR(255), c04 CHAR(255),
2315
c05 CHAR(255), c06 CHAR(255), c07 CHAR(255), c08 CHAR(255),
2316
c09 CHAR(255), c10 CHAR(255), c11 CHAR(255), c12 CHAR(255),
2317
c13 CHAR(255), c14 CHAR(255), c15 CHAR(255), c16 CHAR(255),
2318
c17 CHAR(255), c18 CHAR(255), c19 CHAR(255), c20 CHAR(255),
2319
c21 CHAR(255), c22 CHAR(255), c23 CHAR(255), c24 CHAR(255),
2320
c25 CHAR(255), c26 CHAR(255), c27 CHAR(255), c28 CHAR(255),
2321
c29 CHAR(255), c30 CHAR(255), c31 CHAR(255), c32 CHAR(255)
2325
# Bug #31860 InnoDB assumes AUTOINC values can only be positive.
2327
DROP TABLE IF EXISTS t1;
2329
id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY
2331
INSERT INTO t1 VALUES(-10);
2334
# NOTE: The server really needs to be restarted at this point
2335
# for the test to be useful.
2337
# Without the fix InnoDB would trip over an assertion here.
2338
INSERT INTO t1 VALUES(NULL);
2339
# The next value should be 1 and not -9 or a -ve number
2344
# Bug #21409 Incorrect result returned when in READ-COMMITTED with
2347
CONNECT (c1,localhost,root,,);
2348
CONNECT (c2,localhost,root,,);
2350
SET TX_ISOLATION='read-committed';
2352
DROP TABLE IF EXISTS t1, t2;
2353
CREATE TABLE t1 ( a int ) ENGINE=InnoDB;
2354
CREATE TABLE t2 LIKE t1;
2357
SET TX_ISOLATION='read-committed';
2359
INSERT INTO t1 VALUES (1);
2362
SELECT * FROM t1 WHERE a=1;
2365
CONNECT (c1,localhost,root,,);
2366
CONNECT (c2,localhost,root,,);
2368
SET TX_ISOLATION='read-committed';
2372
SET TX_ISOLATION='read-committed';
2374
INSERT INTO t1 VALUES (2);
2377
# The result set below should be the same for both selects
2378
SELECT * FROM t1 WHERE a=2;
2379
SELECT * FROM t1 WHERE a=2;
2385
#######################################################################
2387
# Please, DO NOT TOUCH this file as well as the innodb.result file. #
2388
# These files are to be modified ONLY BY INNOBASE guys. #
2390
# Use innodb_mysql.[test|result] files instead. #
2392
# If nevertheless you need to make some changes here, please, forward #
2393
# your commit message To: dev@innodb.com Cc: dev-innodb@mysql.com #
2394
# (otherwise your changes may be erased). #
2396
#######################################################################