66
66
drop database if exists mysqltest;
69
eval create $temp table t1 (id int not null auto_increment, code int not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=$engine_type;
69
eval create table t1 (id int not null auto_increment, code int not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=$engine_type;
71
71
insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David'), (2, 'Erik'), (3, 'Sasha'), (3, 'Jeremy'), (4, 'Matt');
72
72
select id, code, name from t1 order by id;
336
336
# Test that keys are created in right order
339
eval create $temp table t1 (a int not null, b int not null,c int not null,
339
eval CREATE TABLE t1 (a int not null, b int not null,c int not null,
340
340
key(a),primary key(a,b), unique(c),key(a),unique(b)) ENGINE = $engine_type;
341
341
--replace_column 7 #
346
346
# Test of ALTER TABLE and innodb tables
349
eval create $temp table t1 (col1 int not null, col2 char(4) not null, primary key(col1)) ENGINE = $other_engine_type;
349
eval create table t1 (col1 int not null, col2 char(4) not null, primary key(col1)) ENGINE = $other_engine_type;
350
350
eval alter table t1 engine=$engine_type;
351
351
insert into t1 values ('1','1'),('5','2'),('2','3'),('3','4'),('4','4');
352
352
select * from t1;
353
353
update t1 set col2='7' where col1='4';
354
354
select * from t1;
355
alter table t1 add co3 int DEFAULT 42 not null;
355
alter table t1 add co3 int not null;
356
356
select * from t1;
357
357
update t1 set col2='9' where col1='2';
358
358
select * from t1;
499
499
# Test of opening table twice and timestamps
505
eval create $temp table t1 (a int not null, b timestamp not null, primary key (a)) engine=$engine_type;
502
eval CREATE TABLE t1 (a int not null, b timestamp not null, primary key (a)) engine=$engine_type;
506
503
insert into t1 (a) values(1),(2),(3);
507
504
select t1.a from t1 natural join t1 as t2 where t1.b >= @a order by t1.a;
508
505
select a from t1 natural join t1 as t2 where b >= @a order by a;
509
506
update t1 set a=5 where a=1;
510
507
select a from t1;
514
511
# Test with variable length primary key
516
eval create $temp table t1 (a varchar(100) not null, primary key(a), b int not null) engine=$engine_type;
513
eval create table t1 (a varchar(100) not null, primary key(a), b int not null) engine=$engine_type;
517
514
insert into t1 values("hello",1),("world",2);
518
515
select * from t1 order by b desc;
519
eval alter table t1 ENGINE=$engine_type;
520
517
--replace_column 7 #
525
522
# Test of create index with NULL columns
527
eval create $temp table t1 (i int, j int ) ENGINE=$engine_type;
524
eval create table t1 (i int, j int ) ENGINE=$engine_type;
528
525
insert into t1 values (1,2);
529
526
select * from t1 where i=1 and j=2;
530
527
create index ax1 on t1 (i,j);
561
558
# Crash when using many tables (Test case by Jeremy D Zawodny)
564
eval create $temp 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 = $engine_type;
561
eval 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 = $engine_type;
565
562
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);
566
563
--replace_column 9 #
567
564
explain select * from t1 where a > 0 and a < 50;
571
eval 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=$engine_type;
572
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
573
LOCK TABLES t1 WRITE;
575
insert into t1 values (99,1,2,'D'),(1,1,2,'D');
581
eval 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=$engine_type;
582
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
583
LOCK TABLES t1 WRITE;
586
insert into t1 values (99,1,2,'D'),(1,1,2,'D');
588
insert ignore into t1 values (100,1,2,'D'),(1,1,99,'D');
590
select id,id3 from t1;
571
595
# Test prefix key
573
eval create $temp table t1 (a char(20), unique (a(5))) engine=$engine_type;
597
eval create table t1 (a char(20), unique (a(5))) engine=$engine_type;
575
eval create $temp table t1 (a char(20), index (a(5))) engine=$engine_type;
599
eval create table t1 (a char(20), index (a(5))) engine=$engine_type;
576
600
show create table t1;
689
eval create $temp table t1 (t int not null default 1, key (t)) engine=$engine_type;
713
eval create table t1 (t int not null default 1, key (t)) engine=$engine_type;
718
# Test of multi-table-delete
721
eval CREATE TABLE t1 (
722
number bigint NOT NULL default '0',
723
cname char(15) NOT NULL default '',
724
carrier_id int NOT NULL default '0',
725
privacy int NOT NULL default '0',
726
last_mod_date timestamp NOT NULL,
727
last_mod_id int NOT NULL default '0',
728
last_app_date timestamp NULL,
729
last_app_id int default '-1',
730
version int NOT NULL default '0',
731
assigned_scps int default '0',
732
status int default '0'
733
) ENGINE=$engine_type;
734
INSERT INTO t1 VALUES (4077711111,'SeanWheeler',90,2,20020111112846,500,NULL,-1,2,3,1);
735
INSERT INTO t1 VALUES (9197722223,'berry',90,3,20020111112809,500,20020102114532,501,4,10,0);
736
INSERT INTO t1 VALUES (650,'San Francisco',0,0,20011227111336,342,NULL,-1,1,24,1);
737
INSERT INTO t1 VALUES (302467,'Sue\'s Subshop',90,3,20020109113241,500,20020102115111,501,7,24,0);
738
INSERT INTO t1 VALUES (6014911113,'SudzCarwash',520,1,20020102115234,500,20020102115259,501,33,32768,0);
739
INSERT INTO t1 VALUES (333,'tubs',99,2,20020109113440,501,20020109113440,500,3,10,0);
740
eval CREATE TABLE t2 (
741
number bigint NOT NULL default '0',
742
cname char(15) NOT NULL default '',
743
carrier_id int NOT NULL default '0',
744
privacy int NOT NULL default '0',
745
last_mod_date timestamp NOT NULL,
746
last_mod_id int NOT NULL default '0',
747
last_app_date timestamp NULL,
748
last_app_id int default '-1',
749
version int NOT NULL default '0',
750
assigned_scps int default '0',
751
status int default '0'
752
) ENGINE=$engine_type;
753
INSERT INTO t2 VALUES (4077711111,'SeanWheeler',0,2,20020111112853,500,NULL,-1,2,3,1);
754
INSERT INTO t2 VALUES (9197722223,'berry',90,3,20020111112818,500,20020102114532,501,4,10,0);
755
INSERT INTO t2 VALUES (650,'San Francisco',90,0,20020109113158,342,NULL,-1,1,24,1);
756
INSERT INTO t2 VALUES (333,'tubs',99,2,20020109113453,501,20020109113453,500,3,10,0);
759
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);
694
766
# A simple test with some isolation levels
695
767
# TODO: Make this into a test using replication to really test how
699
eval create $temp table t1 (id int not null auto_increment, code int not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=$engine_type;
771
eval create table t1 (id int not null auto_increment, code int not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=$engine_type;
702
774
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
794
# Test of multi-table-update
796
eval create table t1 (n int, d int) engine=$engine_type;
797
eval create table t2 (n int, d int) engine=$engine_type;
798
insert into t1 values(1,1),(1,2);
799
insert into t2 values(1,10),(2,20);
800
UPDATE t1,t2 SET t1.d=t2.d,t2.d=30 WHERE t1.n=t2.n;
722
806
# Testing of IFNULL
726
eval create $temp table t1 (a int, b int) engine=$engine_type;
808
eval create table t1 (a int, b int) engine=$engine_type;
727
809
insert into t1 values(20,null);
728
810
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
741
837
# Test of multi-table-delete with foreign key constraints
744
eval create $temp table t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=$engine_type;
745
eval create $temp 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=$engine_type;
840
eval CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=$engine_type;
841
eval 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=$engine_type;
746
842
insert into t1 set id=1;
747
843
insert into t2 set id=1, t1_id=1;
748
844
delete t1,t2 from t1,t2 where t1.id=t2.t1_id;
749
845
select * from t1;
750
846
select * from t2;
751
847
drop table t2,t1;
752
eval create $temp table t1(id INT NOT NULL, PRIMARY KEY (id)) ENGINE=$engine_type;
753
eval create $temp table t2(id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id) ) ENGINE=$engine_type;
848
eval CREATE TABLE t1(id INT NOT NULL, PRIMARY KEY (id)) ENGINE=$engine_type;
849
eval CREATE TABLE t2(id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id) ) ENGINE=$engine_type;
754
850
INSERT INTO t1 VALUES(1);
755
851
INSERT INTO t2 VALUES(1, 1);
756
852
SELECT * from t1;
907
# Test multi update with different join methods
910
eval CREATE TABLE t1 (a int not null primary key, b int not null, key (b)) engine=$engine_type;
911
eval CREATE TABLE t2 (a int not null primary key, b int not null, key (b)) engine=$engine_type;
912
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);
913
INSERT INTO t2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
915
# Full join, without key
916
update t1,t2 set t1.a=t1.a+100;
920
update t1,t2 set t1.a=t1.a+100 where t1.a=101;
924
update t1,t2 set t1.b=t1.b+10 where t1.b=2;
928
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;
933
eval CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=$other_non_trans_engine_type;
934
eval CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=$engine_type;
936
INSERT INTO t1 ( B_ID ) VALUES ( 1 );
937
INSERT INTO t2 ( NEXT_T ) VALUES ( 1 );
941
eval create table t1 ( pk int primary key, parent int not null, child int not null, index (parent) ) engine = $engine_type;
942
insert into t1 values (1,0,4), (2,1,3), (3,2,1), (4,1,2);
943
select distinct parent,child from t1 order by parent;
811
947
# Test that MySQL priorities clustered indexes
813
eval create $temp table t1 (a int not null auto_increment primary key, b int, c int, key(c)) engine=$engine_type;
814
eval create $temp table t2 (a int not null auto_increment primary key, b int) ENGINE = $other_engine_type;
949
eval create table t1 (a int not null auto_increment primary key, b int, c int, key(c)) engine=$engine_type;
950
eval create table t2 (a int not null auto_increment primary key, b int) ENGINE = $other_engine_type;
815
951
insert into t1 (b) values (null),(null),(null),(null),(null),(null),(null);
816
952
insert into t2 (a) select b from t1;
817
953
insert into t1 (b) select b from t2;
843
979
# Test of UPDATE ... ORDER BY
846
eval create $temp table t1 (id int primary key auto_increment, fk int, index index_fk (fk)) engine=$engine_type;
982
eval create table t1 (id int primary key auto_increment, fk int, index index_fk (fk)) engine=$engine_type;
848
984
insert into t1 (id) values (null),(null),(null),(null),(null);
849
985
update t1 set fk=69 where fk is null order by id limit 1;
850
986
SELECT * from t1;
853
eval create $temp table t1 (a int not null, b int not null, key (a)) engine=$engine_type;
989
eval create table t1 (a int not null, b int not null, key (a)) engine=$engine_type;
854
990
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);
856
992
update t1 set b=(@tmp:=@tmp+1) order by a;
1000
# Test of multi-table-updates (bug #1980).
1003
eval create table t1 ( c char(8) not null ) engine=$engine_type;
1004
insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9');
1005
insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F');
1007
alter table t1 add b char(8) not null;
1008
alter table t1 add a char(8) not null;
1009
alter table t1 add primary key (a,b,c);
1010
update t1 set a=c, b=c;
1012
eval create table t2 (c char(8) not null, b char(8) not null, a char(8) not null, primary key(a,b,c)) engine=$engine_type;
1013
insert into t2 select * from t1;
1015
delete t1,t2 from t2,t1 where t1.a<'B' and t2.b=t1.b;
864
1019
# test autoincrement with TRUNCATE
867
1022
SET AUTOCOMMIT=1;
868
eval create $temp table t1 (a integer auto_increment primary key) engine=$engine_type;
1023
eval create table t1 (a integer auto_increment primary key) engine=$engine_type;
869
1024
insert into t1 (a) values (NULL),(NULL);
870
1025
truncate table t1;
871
1026
insert into t1 (a) values (NULL),(NULL);
888
1043
# Test of multi updated and foreign keys
891
eval create $temp table `t1` (`id` int not null ,primary key ( `id` )) engine = $engine_type;
1046
eval create table `t1` (`id` int not null ,primary key ( `id` )) engine = $engine_type;
892
1047
insert into `t1`values ( 1 ) ;
893
eval create $temp table `t2` (`id` int not null default '0',unique key `id` ( `id` ) ,constraint `t1_id_fk` foreign key ( `id` ) references `t1` (`id` )) engine = $engine_type;
1048
eval create table `t2` (`id` int not null default '0',unique key `id` ( `id` ) ,constraint `t1_id_fk` foreign key ( `id` ) references `t1` (`id` )) engine = $engine_type;
894
1049
insert into `t2`values ( 1 ) ;
895
eval create $temp table `t3` (`id` int not null default '0',key `id` ( `id` ) ,constraint `t2_id_fk` foreign key ( `id` ) references `t2` (`id` )) engine = $engine_type;
1050
eval create table `t3` (`id` int not null default '0',key `id` ( `id` ) ,constraint `t2_id_fk` foreign key ( `id` ) references `t2` (`id` )) engine = $engine_type;
896
1051
insert into `t3`values ( 1 ) ;
898
1053
delete t3,t2,t1 from t1,t2,t3 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
956
1109
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);
958
eval create $temp table t2 (
1111
eval CREATE TABLE t2 (
959
1112
`id` int NOT NULL auto_increment,
960
1113
`id_version` int NOT NULL default '1',
961
1114
PRIMARY KEY (`id`),
968
1121
(SELECT t1.id_object as id_object FROM t1 WHERE t1.`label` LIKE '%test%') AS lbl
969
1122
ON (t2.id = lbl.id_object) INNER JOIN t1 ON (t2.id = t1.id_object);
970
1123
drop table t1,t2;
973
1125
# Live checksum feature available + enabled
974
eval create $temp table t1 (a int, b varchar(200), c text not null) engine=$other_live_chks_engine_type;
1126
eval create table t1 (a int, b varchar(200), c text not null) checksum=1 engine=$other_live_chks_engine_type;
975
1127
# Live checksum feature available + disabled
976
eval create $temp table t2 (a int, b varchar(200), c text not null) engine=$other_live_chks_engine_type;
1128
eval create table t2 (a int, b varchar(200), c text not null) checksum=0 engine=$other_live_chks_engine_type;
978
1130
# Live checksum feature not available + enabled
979
eval create $temp table t3 (a int, b varchar(200), c varchar(200) not null) engine=$other_non_live_chks_engine_type;
1131
eval create table t3 (a int, b varchar(200), c varchar(200) not null) checksum=1 engine=$other_non_live_chks_engine_type;
980
1132
# Live checksum feature not available + disabled
981
eval create $temp table t4 (a int, b varchar(200), c varchar(200) not null) engine=$other_non_live_chks_engine_type;
1133
eval create table t4 (a int, b varchar(200), c varchar(200) not null) checksum=0 engine=$other_non_live_chks_engine_type;
983
1135
# Live checksum feature probably available + enabled
984
eval create $temp table t5 (a int, b varchar(200), c text not null) engine=$engine_type;
1136
eval create table t5 (a int, b varchar(200), c text not null) checksum=1 engine=$engine_type;
985
1137
# Live checksum feature probably available + disabled
986
eval create $temp table t6 (a int, b varchar(200), c text not null) engine=$engine_type;
1138
eval create table t6 (a int, b varchar(200), c text not null) checksum=0 engine=$engine_type;
988
1140
insert t1 values (1, "aaa", "bbb"), (NULL, "", "ccccc"), (0, NULL, "");
989
1141
insert t2 select * from t1;
991
1143
insert t4 select * from t1;
992
1144
insert t5 select * from t1;
993
1145
insert t6 select * from t1;
1146
checksum table t1, t2, t3, t4, t5, t6, t7 quick;
1147
checksum table t1, t2, t3, t4, t5, t6, t7;
1148
checksum table t1, t2, t3, t4, t5, t6, t7 extended;
994
1149
# #show table status;
995
1150
drop table t1,t2,t3, t4, t5, t6;
998
1153
# Test problem with refering to different fields in same table in UNION
999
1154
# (Bug#2552: UNION returns NULL instead of expected value (innoDB only tables))
1003
eval create $temp table t1 (id int, name char(10) not null, name2 char(10) not null) engine=$engine_type;
1156
eval create table t1 (id int, name char(10) not null, name2 char(10) not null) engine=$engine_type;
1004
1157
insert into t1 values(1,'first','fff'),(2,'second','sss'),(3,'third','ttt');
1005
1158
select trim(name2) from t1 union all select trim(name) from t1 union all select trim(id) from t1;
1009
# Bug#2160: Extra error message for create $temp table LIKE with InnoDB
1011
eval create $temp table t1 (a int) engine=$engine_type;
1162
# Bug#2160: Extra error message for CREATE TABLE LIKE with InnoDB
1164
eval create table t1 (a int) engine=$engine_type;
1013
1165
create table t2 like t1;
1014
create table t2 like t1 engine=innodb;
1015
1166
show create table t2;
1016
1167
drop table t1,t2;
1035
1186
show create table t2;
1038
eval create $temp table t2 (id int not null, id2 int not null, constraint t1_id_fk foreign key (id,id2) references t1 (id,id2)) engine = $engine_type;
1189
eval create table t2 (id int not null, id2 int not null, constraint t1_id_fk foreign key (id,id2) references t1 (id,id2)) engine = $engine_type;
1039
1190
show create table t2;
1040
1191
create unique index id on t2 (id,id2);
1041
1192
show create table t2;
1044
1195
# Check foreign key columns created in different order than key columns
1045
eval create $temp table t2 (id int not null, id2 int not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = $engine_type;
1046
show create table t2;
1049
eval create $temp table t2 (id int not null, id2 int not null, unique (id,id2), constraint t1_id_fk foreign key (id) references t1 (id)) engine = $engine_type;
1050
show create table t2;
1053
eval create $temp table t2 (id int not null, id2 int not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = $engine_type;
1054
show create table t2;
1057
eval create $temp table t2 (id int not null auto_increment, id2 int not null, constraint t1_id_fk foreign key (id) references t1 (id), primary key (id), index (id,id2)) engine = $engine_type;
1058
show create table t2;
1061
eval create $temp table t2 (id int not null auto_increment, id2 int not null, constraint t1_id_fk foreign key (id) references t1 (id)) engine= $engine_type;
1196
eval create table t2 (id int not null, id2 int not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = $engine_type;
1197
show create table t2;
1200
eval create table t2 (id int not null, id2 int not null, unique (id,id2), constraint t1_id_fk foreign key (id) references t1 (id)) engine = $engine_type;
1201
show create table t2;
1204
eval create table t2 (id int not null, id2 int not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = $engine_type;
1205
show create table t2;
1208
eval create table t2 (id int not null auto_increment, id2 int not null, constraint t1_id_fk foreign key (id) references t1 (id), primary key (id), index (id,id2)) engine = $engine_type;
1209
show create table t2;
1212
eval create table t2 (id int not null auto_increment, id2 int not null, constraint t1_id_fk foreign key (id) references t1 (id)) engine= $engine_type;
1062
1213
show create table t2;
1063
1214
alter table t2 add index id_test (id), add index id_test2 (id,id2);
1064
1215
show create table t2;
1070
1221
# regular server reports relative path with .frm (argh!)
1071
1222
--replace_result \\ / $DRIZZLE_TEST_DIR . /var/master-data/ / t2.frm t2
1073
eval create $temp table t2 (id int not null, id2 int not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = $engine_type;
1224
eval create table t2 (id int not null, id2 int not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = $engine_type;
1077
eval create $temp table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=$engine_type;
1228
eval create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=$engine_type;
1078
1229
show create table t2;
1080
eval create $temp 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=$engine_type;
1231
eval 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=$engine_type;
1081
1232
show create table t2;
1082
1233
drop table t2, t1;
1123
1274
# Bug #6126: Duplicate columns in keys gives misleading error message
1126
eval create $temp table t1 (c char(10), index (c,c)) engine=$engine_type;
1128
eval create $temp table t1 (c1 char(10), c2 char(10), index (c1,c2,c1)) engine=$engine_type;
1130
eval create $temp table t1 (c1 char(10), c2 char(10), index (c1,c1,c2)) engine=$engine_type;
1132
eval create $temp table t1 (c1 char(10), c2 char(10), index (c2,c1,c1)) engine=$engine_type;
1133
eval create $temp table t1 (c1 char(10), c2 char(10)) engine=$engine_type;
1277
eval create table t1 (c char(10), index (c,c)) engine=$engine_type;
1279
eval create table t1 (c1 char(10), c2 char(10), index (c1,c2,c1)) engine=$engine_type;
1281
eval create table t1 (c1 char(10), c2 char(10), index (c1,c1,c2)) engine=$engine_type;
1283
eval create table t1 (c1 char(10), c2 char(10), index (c2,c1,c1)) engine=$engine_type;
1284
eval create table t1 (c1 char(10), c2 char(10)) engine=$engine_type;
1135
1286
alter table t1 add key (c1,c1);
1172
1323
--disable_warnings
1173
eval create $temp table t1 (a_id int NOT NULL default '0', PRIMARY KEY (a_id)) ENGINE=$engine_type DEFAULT CHARSET=latin1;
1324
eval CREATE TABLE t1 (a_id int NOT NULL default '0', PRIMARY KEY (a_id)) ENGINE=$engine_type DEFAULT CHARSET=latin1;
1174
1325
INSERT INTO t1 VALUES (1),(2),(3);
1175
eval create $temp table t2 (b_id int NOT NULL default '0',b_a int NOT NULL default '0', PRIMARY KEY (b_id), KEY (b_a),
1326
eval CREATE TABLE t2 (b_id int NOT NULL default '0',b_a int NOT NULL default '0', PRIMARY KEY (b_id), KEY (b_a),
1176
1327
CONSTRAINT fk_b_a FOREIGN KEY (b_a) REFERENCES t1 (a_id) ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE=$engine_type DEFAULT CHARSET=latin1;
1177
1328
--enable_warnings
1178
1329
INSERT INTO t2 VALUES (1,1),(2,1),(3,1),(4,2),(5,2);
1203
1354
# Bug #13025 Server crash during filesort
1206
eval create $temp 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=$engine_type;
1357
eval 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=$engine_type;
1207
1358
insert into t1 values (2,2,"b",2,2),(1,1,"a",1,1),(3,3,"ab",3,3);
1208
1359
select * from t1 order by a,b,c,d;
1209
1360
explain select * from t1 order by a,b,c,d;
1318
1469
# @TODO The below fails because it assumes latin1
1319
1470
# as the charset. Possibly re-enable a similar test
1320
1471
#--replace_result \\ / $DRIZZLE_TEST_DIR . /var/master-data/ / t1.frm t1
1321
#create $temp table t1 (v varchar(65530), key(v));
1472
#create table t1 (v varchar(65530), key(v));
1322
1473
#drop table t1;
1323
#create $temp table t1 (v varchar(65536));
1474
#create table t1 (v varchar(65536));
1324
1475
#show create table t1;
1325
1476
#drop table t1;
1326
#create $temp table t1 (v varchar(65530) character set utf8);
1477
#create table t1 (v varchar(65530) character set utf8);
1327
1478
#show create table t1;
1328
1479
#drop table t1;
1330
1481
#eval set storage_engine=$default;
1332
1483
# InnoDB specific varchar tests
1333
#eval create $temp table t1 (v varchar(16384)) engine=$engine_type;
1484
#eval create table t1 (v varchar(16384)) engine=$engine_type;
1334
1485
#drop table t1;
1337
1488
# BUG#11039 Wrong key length in min()
1340
eval create $temp table t1 (a char(1), b char(1), key(a, b)) engine=$engine_type;
1491
eval create table t1 (a char(1), b char(1), key(a, b)) engine=$engine_type;
1341
1492
insert into t1 values ('8', '6'), ('4', '7');
1342
1493
select min(a) from t1;
1343
1494
select min(b) from t1 where a='8';
1392
1543
--disable_warnings
1393
eval create $temp table t1 (GRADE DECIMAL(4) NOT NULL, PRIMARY KEY (GRADE)) ENGINE=$engine_type;
1544
eval CREATE TABLE t1 (GRADE DECIMAL(4) NOT NULL, PRIMARY KEY (GRADE)) ENGINE=$engine_type;
1394
1545
--enable_warnings
1395
1546
INSERT INTO t1 (GRADE) VALUES (151),(252),(343);
1396
1547
SELECT GRADE FROM t1 WHERE GRADE > 160 AND GRADE < 300;
1397
1548
SELECT GRADE FROM t1 WHERE GRADE= 151;
1552
# Bug #12340 multitable delete deletes only one record
1554
eval create table t1 (f1 varchar(10), f2 varchar(10), primary key (f1,f2)) engine=$engine_type;
1555
eval create table t2 (f3 varchar(10), f4 varchar(10), key (f4)) engine=$engine_type;
1556
insert into t2 values ('aa','cc');
1557
insert into t1 values ('aa','bb'),('aa','cc');
1558
delete t1 from t1,t2 where f1=f3 and f4='cc';
1400
1562
if ($test_foreign_keys)
1458
eval create $temp table t1 (col1 varchar(2000), index (col1(767)))
1620
eval create table t1 (col1 varchar(2000), index (col1(767)))
1459
1621
character set = latin1 engine = $engine_type;
1461
1623
# normal indexes
1462
eval create $temp table t2 (col1 char(255), index (col1))
1463
character set = latin1 engine = $engine_type;
1464
eval create $temp table t3 (col1 binary(255), index (col1))
1465
character set = latin1 engine = $engine_type;
1466
eval create $temp table t4 (col1 varchar(767), index (col1))
1467
character set = latin1 engine = $engine_type;
1468
eval create $temp table t5 (col1 varchar(767) primary key)
1469
character set = latin1 engine = $engine_type;
1470
eval create $temp table t6 (col1 varbinary(767) primary key)
1471
character set = latin1 engine = $engine_type;
1472
eval create $temp table t7 (col1 text, index(col1(767)))
1473
character set = latin1 engine = $engine_type;
1474
eval create $temp table t8 (col1 blob, index(col1(767)))
1624
eval create table t2 (col1 char(255), index (col1))
1625
character set = latin1 engine = $engine_type;
1626
eval create table t3 (col1 binary(255), index (col1))
1627
character set = latin1 engine = $engine_type;
1628
eval create table t4 (col1 varchar(767), index (col1))
1629
character set = latin1 engine = $engine_type;
1630
eval create table t5 (col1 varchar(767) primary key)
1631
character set = latin1 engine = $engine_type;
1632
eval create table t6 (col1 varbinary(767) primary key)
1633
character set = latin1 engine = $engine_type;
1634
eval create table t7 (col1 text, index(col1(767)))
1635
character set = latin1 engine = $engine_type;
1636
eval create table t8 (col1 blob, index(col1(767)))
1475
1637
character set = latin1 engine = $engine_type;
1478
1640
# multi-column indexes are allowed to be longer
1479
eval create $temp table t9 (col1 varchar(512), col2 varchar(512), index(col1, col2))
1641
eval create table t9 (col1 varchar(512), col2 varchar(512), index(col1, col2))
1480
1642
character set = latin1 engine = $engine_type;
1482
1644
show create table t9;
1484
1646
drop table t1, t2, t3, t4, t5, t6, t7, t8, t9;
1486
1648
# these should have their index length trimmed
1487
eval create $temp table t1 (col1 varchar(768), index(col1))
1488
character set = latin1 engine = $engine_type;
1489
eval create $temp table t2 (col1 varbinary(768), index(col1))
1490
character set = latin1 engine = $engine_type;
1491
eval create $temp table t3 (col1 text, index(col1(768)))
1492
character set = latin1 engine = $engine_type;
1493
eval create $temp table t4 (col1 blob, index(col1(768)))
1649
eval create table t1 (col1 varchar(768), index(col1))
1650
character set = latin1 engine = $engine_type;
1651
eval create table t2 (col1 varbinary(768), index(col1))
1652
character set = latin1 engine = $engine_type;
1653
eval create table t3 (col1 text, index(col1(768)))
1654
character set = latin1 engine = $engine_type;
1655
eval create table t4 (col1 blob, index(col1(768)))
1494
1656
character set = latin1 engine = $engine_type;
1496
1658
show create table t1;
1509
1671
# these should be refused
1511
eval create $temp table t1 (col1 varchar(768) primary key)
1512
character set = latin1 engine = $engine_type;
1514
eval create $temp table t2 (col1 varbinary(768) primary key)
1515
character set = latin1 engine = $engine_type;
1517
eval create $temp table t3 (col1 text, primary key(col1(768)))
1518
character set = latin1 engine = $engine_type;
1520
eval create $temp table t4 (col1 blob, primary key(col1(768)))
1673
eval create table t1 (col1 varchar(768) primary key)
1674
character set = latin1 engine = $engine_type;
1676
eval create table t2 (col1 varbinary(768) primary key)
1677
character set = latin1 engine = $engine_type;
1679
eval create table t3 (col1 text, primary key(col1(768)))
1680
character set = latin1 engine = $engine_type;
1682
eval create table t4 (col1 blob, primary key(col1(768)))
1521
1683
character set = latin1 engine = $engine_type;
1580
1789
# when f_k_c is 0
1582
1791
set foreign_key_checks=0;
1583
eval create $temp table t1(a varchar(10) primary key) engine = $engine_type DEFAULT CHARSET=latin1;
1792
eval create table t1(a varchar(10) primary key) engine = $engine_type DEFAULT CHARSET=latin1;
1584
1793
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
1586
eval create $temp table t2 (a varchar(10), foreign key (a) references t1(a)) engine = $engine_type DEFAULT CHARSET=utf8;
1795
eval create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = $engine_type DEFAULT CHARSET=utf8;
1587
1796
set foreign_key_checks=1;
1590
1799
# test that invalid datatype conversions with ALTER are not allowed
1592
1801
set foreign_key_checks=0;
1593
eval create $temp table t2 (a varchar(10), foreign key (a) references t1(a)) engine = $engine_type;
1594
eval create $temp table t1(a varchar(10) primary key) engine = $engine_type;
1802
eval create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = $engine_type;
1803
eval create table t1(a varchar(10) primary key) engine = $engine_type;
1595
1804
-- error 1025,1025
1596
1805
alter table t1 modify column a int;
1597
1806
set foreign_key_checks=1;
1664
1873
# Test that we can create a large (>1K) key
1666
eval create $temp table t1 (a varchar(255) character set utf8,
1875
eval create table t1 (a varchar(255) character set utf8,
1667
1876
b varchar(255) character set utf8,
1668
1877
c varchar(255) character set utf8,
1669
1878
d varchar(255) character set utf8,
1670
1879
key (a,b,c,d)) engine=$engine_type;
1672
1881
--error ER_TOO_LONG_KEY
1673
eval create $temp table t1 (a varchar(255) character set utf8,
1882
eval create table t1 (a varchar(255) character set utf8,
1674
1883
b varchar(255) character set utf8,
1675
1884
c varchar(255) character set utf8,
1676
1885
d varchar(255) character set utf8,
1834
2043
# Bug #14360: problem with intervals
1837
eval create $temp table t1(a date) engine=$engine_type;
1838
eval create $temp table t2(a date, key(a)) engine=$engine_type;
2046
eval create table t1(a date) engine=$engine_type;
2047
eval create table t2(a date, key(a)) engine=$engine_type;
1839
2048
insert into t1 values('2005-10-01');
1840
2049
insert into t2 values('2005-10-01');
1841
2050
select * from t1, t2
1842
2051
where t2.a between t1.a - interval 2 day and t1.a + interval 2 day;
1843
2052
drop table t1, t2;
1845
eval create $temp table t1 (id int not null, f_id int not null, f int not null,
2054
eval create table t1 (id int not null, f_id int not null, f int not null,
1846
2055
primary key(f_id, id)) engine=$engine_type;
1847
eval create $temp table t2 (id int not null,s_id int not null,s varchar(200),
2056
eval create table t2 (id int not null,s_id int not null,s varchar(200),
1848
2057
primary key(id)) engine=$engine_type;
1849
2058
INSERT INTO t1 VALUES (8, 1, 3);
1850
2059
INSERT INTO t1 VALUES (1, 2, 1);
1851
2060
INSERT INTO t2 VALUES (1, 0, '');
1852
2061
INSERT INTO t2 VALUES (8, 1, '');
2063
DELETE ml.* FROM t1 AS ml LEFT JOIN t2 AS mm ON (mm.id=ml.id)
2064
WHERE mm.id IS NULL;
1854
2065
select ml.* from t1 as ml left join t2 as mm on (mm.id=ml.id)
1855
2066
where mm.id is null lock in share mode;
1856
2067
drop table t1,t2;
1859
2070
# Test case where X-locks on unused rows should be released in a
1860
2071
# update (because READ COMMITTED isolation level)
1864
2074
connect (a,localhost,root,,);
1865
2075
connect (b,localhost,root,,);
1867
eval create $temp table t1(a int not null, b int, primary key(a)) engine=$engine_type;
2077
eval create table t1(a int not null, b int, primary key(a)) engine=$engine_type;
1868
2078
insert into t1 values(1,1),(2,2),(3,1),(4,2),(5,1),(6,2),(7,3);
1870
2080
set autocommit = 0;
1932
2142
connect (a,localhost,root,,);
1933
2143
connect (b,localhost,root,,);
1935
eval create $temp table t1(a int not null, b int, primary key(a)) engine=$engine_type;
2145
eval create table t1(a int not null, b int, primary key(a)) engine=$engine_type;
1936
2146
insert into t1 values (1,2),(5,3),(4,2);
1937
eval create $temp table t2(d int not null, e int, primary key(d)) engine=$engine_type;
2147
eval create table t2(d int not null, e int, primary key(d)) engine=$engine_type;
1938
2148
insert into t2 values (8,6),(12,1),(3,1);
1940
2150
set autocommit = 0;
1988
2198
connect (j,localhost,root,,);
1989
2199
eval SET SESSION STORAGE_ENGINE = $engine_type;
1991
create $temp table t1(a int not null, b int, primary key(a));
2201
create table t1(a int not null, b int, primary key(a));
1992
2202
insert into t1 values (1,2),(5,3),(4,2);
1993
create $temp table t2(a int not null, b int, primary key(a));
2203
create table t2(a int not null, b int, primary key(a));
1994
2204
insert into t2 values (8,6),(12,1),(3,1);
1995
create $temp table t3(d int not null, b int, primary key(d));
2205
create table t3(d int not null, b int, primary key(d));
1996
2206
insert into t3 values (8,6),(12,1),(3,1);
1997
create $temp table t5(a int not null, b int, primary key(a));
2207
create table t5(a int not null, b int, primary key(a));
1998
2208
insert into t5 values (1,2),(5,3),(4,2);
1999
create $temp table t6(d int not null, e int, primary key(d));
2209
create table t6(d int not null, e int, primary key(d));
2000
2210
insert into t6 values (8,6),(12,1),(3,1);
2001
create $temp table t8(a int not null, b int, primary key(a));
2211
create table t8(a int not null, b int, primary key(a));
2002
2212
insert into t8 values (1,2),(5,3),(4,2);
2003
create $temp table t9(d int not null, e int, primary key(d));
2213
create table t9(d int not null, e int, primary key(d));
2004
2214
insert into t9 values (8,6),(12,1),(3,1);
2006
2216
set autocommit = 0;