Added test for innobase
Fixed problem with NULL keys in BDB BitKeeper/deleted/.del-select.res~1295456b93948768: ***MISSING WEAVE*** mysql-test/r/join_outer.result: Fix results sql/ha_berkeley.cc: Fixed problem with NULL keys
This commit is contained in:
parent
72b3120dcc
commit
686faae582
@ -315,3 +315,4 @@ sasha@mysql.sashanet.com|mysql-test/t/include/master-slave.inc|20001118030458|01
|
||||
sasha@work.mysql.com|BitKeeper/etc/logging_ok|20001214015456|29919|32b6551b8288c2fa
|
||||
serg@serg.mysql.com|mysql-test/r/3.23/mrg000001.dummy.result|20001206231604|05053|bf7e6d609f22b897
|
||||
serg@serg.mysql.com|mysql-test/r/3.23/mrg000001.result|20001206231609|46662|db2ef2e717ab8332
|
||||
mwagner@evoq.home.mwagner.org|mysql-test/chew_on_this/select.res|20001014084759|41327|1295456b9394876
|
||||
|
2
mysql-test/include/have_innobase.inc
Normal file
2
mysql-test/include/have_innobase.inc
Normal file
@ -0,0 +1,2 @@
|
||||
-- require r/have_innobase.require
|
||||
show variables like "have_innobase";
|
2
mysql-test/r/have_innobase.require
Normal file
2
mysql-test/r/have_innobase.require
Normal file
@ -0,0 +1,2 @@
|
||||
Variable_name Value
|
||||
have_innobase YES
|
408
mysql-test/r/innobase.result
Normal file
408
mysql-test/r/innobase.result
Normal file
@ -0,0 +1,408 @@
|
||||
id code name
|
||||
1 1 Tim
|
||||
2 1 Monty
|
||||
3 2 David
|
||||
4 2 Erik
|
||||
5 3 Sasha
|
||||
6 3 Jeremy
|
||||
7 4 Matt
|
||||
id code name
|
||||
2 1 Monty
|
||||
3 2 David
|
||||
4 2 Erik
|
||||
5 3 Sasha
|
||||
6 3 Jeremy
|
||||
7 4 Matt
|
||||
8 1 Sinisa
|
||||
id code name
|
||||
3 2 David
|
||||
4 2 Erik
|
||||
5 3 Sasha
|
||||
6 3 Jeremy
|
||||
7 4 Matt
|
||||
8 1 Sinisa
|
||||
12 1 Ralph
|
||||
id parent_id level
|
||||
8 102 2
|
||||
9 102 2
|
||||
15 102 2
|
||||
id parent_id level
|
||||
1001 100 0
|
||||
1002 101 1
|
||||
1003 101 1
|
||||
1004 101 1
|
||||
1005 101 1
|
||||
1006 101 1
|
||||
1007 101 1
|
||||
1008 102 2
|
||||
1009 102 2
|
||||
1015 102 2
|
||||
1016 103 2
|
||||
1017 103 2
|
||||
1018 103 2
|
||||
1019 103 2
|
||||
1020 103 2
|
||||
1021 104 2
|
||||
1022 104 2
|
||||
1024 104 2
|
||||
1025 105 2
|
||||
1026 105 2
|
||||
1027 105 2
|
||||
1028 105 2
|
||||
1029 105 2
|
||||
1030 105 2
|
||||
1031 106 2
|
||||
1032 106 2
|
||||
1033 106 2
|
||||
1034 106 2
|
||||
1035 106 2
|
||||
1036 107 2
|
||||
1037 107 2
|
||||
1038 107 2
|
||||
1040 107 2
|
||||
1157 100 0
|
||||
1179 105 2
|
||||
1183 104 2
|
||||
1193 105 2
|
||||
1202 107 2
|
||||
1203 107 2
|
||||
id parent_id level
|
||||
1001 100 0
|
||||
1002 101 1
|
||||
1003 101 1
|
||||
1004 101 1
|
||||
1005 101 1
|
||||
1006 101 1
|
||||
1007 101 1
|
||||
1008 102 2
|
||||
1010 102 2
|
||||
1015 102 2
|
||||
1016 103 2
|
||||
1017 103 2
|
||||
1018 103 2
|
||||
1019 103 2
|
||||
1020 103 2
|
||||
1021 104 2
|
||||
1023 104 2
|
||||
1024 104 2
|
||||
1025 105 2
|
||||
1026 105 2
|
||||
1027 105 2
|
||||
1028 105 2
|
||||
1029 105 2
|
||||
1030 105 2
|
||||
1031 106 2
|
||||
1032 106 2
|
||||
1033 106 2
|
||||
1034 106 2
|
||||
1035 106 2
|
||||
1036 107 2
|
||||
1037 107 2
|
||||
1039 107 2
|
||||
1041 107 2
|
||||
1158 100 0
|
||||
1180 105 2
|
||||
1184 104 2
|
||||
1194 105 2
|
||||
1202 107 2
|
||||
1204 107 2
|
||||
id parent_id level
|
||||
1008 102 2
|
||||
1015 102 2
|
||||
1010 102 2
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t1 ref level level 1 const 1 where used; Using index
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t1 ref level level 1 const 1 where used; Using index
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t1 ref level level 1 const 1 where used
|
||||
level id
|
||||
1 1002
|
||||
1 1003
|
||||
1 1004
|
||||
1 1005
|
||||
1 1006
|
||||
1 1007
|
||||
level id parent_id
|
||||
1 1002 101
|
||||
1 1003 101
|
||||
1 1004 101
|
||||
1 1005 101
|
||||
1 1006 101
|
||||
1 1007 101
|
||||
gesuchnr benutzer_id
|
||||
1 1
|
||||
2 1
|
||||
a
|
||||
2
|
||||
a b
|
||||
a 1
|
||||
a 2
|
||||
a 3
|
||||
a 4
|
||||
a 5
|
||||
b 2
|
||||
b 3
|
||||
b 4
|
||||
c 1
|
||||
c 2
|
||||
c 3
|
||||
d 1
|
||||
d 2
|
||||
d 5
|
||||
e 1
|
||||
k 1
|
||||
n after rollback
|
||||
n after commit
|
||||
4 after commit
|
||||
n after commit
|
||||
4 after commit
|
||||
5 after commit
|
||||
n
|
||||
4
|
||||
5
|
||||
6
|
||||
afterbegin_id afterbegin_nom
|
||||
1 hamdouni
|
||||
afterrollback_id afterrollback_nom
|
||||
afterautocommit0_id afterautocommit0_nom
|
||||
2 mysql
|
||||
afterrollback_id afterrollback_nom
|
||||
id val
|
||||
id val
|
||||
pippo 12
|
||||
id val
|
||||
ID NAME
|
||||
1 Jochen
|
||||
_userid
|
||||
marc@anyware.co.uk
|
||||
_userid
|
||||
marc@anyware.co.uk
|
||||
user_id name phone ref_email detail
|
||||
10292 sanjeev 29153373 sansh777@hotmail.com xxx
|
||||
10292 shirish 2333604 shirish@yahoo.com ddsds
|
||||
10292 sonali 323232 sonali@bolly.com filmstar
|
||||
user_id name phone ref_email detail
|
||||
10292 sanjeev 29153373 sansh777@hotmail.com xxx
|
||||
10292 shirish 2333604 shirish@yahoo.com ddsds
|
||||
10292 sonali 323232 sonali@bolly.com filmstar
|
||||
user_id name phone ref_email detail
|
||||
10292 sanjeev 29153373 sansh777@hotmail.com xxx
|
||||
10292 shirish 2333604 shirish@yahoo.com ddsds
|
||||
10292 sonali 323232 sonali@bolly.com filmstar
|
||||
10293 shirish 2333604 shirish@yahoo.com ddsds
|
||||
user_id name phone ref_email detail
|
||||
10293 shirish 2333604 shirish@yahoo.com ddsds
|
||||
user_id name phone ref_email detail
|
||||
10291 sanjeev 29153373 sansh777@hotmail.com xxx
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment
|
||||
t1 0 PRIMARY 1 a A NULL NULL NULL
|
||||
t1 0 PRIMARY 2 b A 0 NULL NULL
|
||||
t1 0 b 1 b A 0 NULL NULL
|
||||
t1 0 c 1 c A 0 NULL NULL
|
||||
t1 1 a 1 a A NULL NULL NULL
|
||||
t1 1 a_2 1 a A NULL NULL NULL
|
||||
col1 col2
|
||||
1 1
|
||||
2 3
|
||||
3 4
|
||||
4 4
|
||||
5 2
|
||||
col1 col2
|
||||
1 1
|
||||
2 3
|
||||
3 4
|
||||
4 7
|
||||
5 2
|
||||
col1 col2 co3
|
||||
1 1 0
|
||||
2 3 0
|
||||
3 4 0
|
||||
4 7 0
|
||||
5 2 0
|
||||
col1 col2 co3
|
||||
1 1 0
|
||||
2 9 0
|
||||
3 4 0
|
||||
4 7 0
|
||||
5 2 0
|
||||
a b
|
||||
1 3
|
||||
2 3
|
||||
3 3
|
||||
a b
|
||||
1 3
|
||||
2 3
|
||||
3 3
|
||||
a b
|
||||
a b
|
||||
1 3
|
||||
2 3
|
||||
3 3
|
||||
a b
|
||||
1 3
|
||||
2 3
|
||||
3 3
|
||||
id ggid email passwd
|
||||
1 test1 xxx
|
||||
id ggid email passwd
|
||||
1 test1 xxx
|
||||
id ggid email passwd
|
||||
2 test2 yyy
|
||||
user_name password subscribed user_id quota weight access_date access_time approved dummy_primary_key
|
||||
user_0 somepassword N 0 0 0 2000-09-07 23:06:59 2000-09-07 23:06:59 1
|
||||
user_1 somepassword Y 1 1 1 2000-09-07 23:06:59 2000-09-07 23:06:59 2
|
||||
user_2 somepassword N 2 2 1.4142135623731 2000-09-07 23:06:59 2000-09-07 23:06:59 3
|
||||
user_3 somepassword Y 3 3 1.7320508075689 2000-09-07 23:06:59 2000-09-07 23:06:59 4
|
||||
user_4 somepassword N 4 4 2 2000-09-07 23:06:59 2000-09-07 23:06:59 5
|
||||
id parent_id level
|
||||
8 102 2
|
||||
9 102 2
|
||||
15 102 2
|
||||
id parent_id level
|
||||
1001 100 0
|
||||
1003 101 1
|
||||
1004 101 1
|
||||
1008 102 2
|
||||
1024 102 2
|
||||
1017 103 2
|
||||
1022 104 2
|
||||
1024 104 2
|
||||
1028 105 2
|
||||
1029 105 2
|
||||
1030 105 2
|
||||
1031 106 2
|
||||
1032 106 2
|
||||
1033 106 2
|
||||
1203 107 2
|
||||
1202 107 2
|
||||
1020 103 2
|
||||
1157 100 0
|
||||
1193 105 2
|
||||
1040 107 2
|
||||
1002 101 1
|
||||
1015 102 2
|
||||
1006 101 1
|
||||
1034 106 2
|
||||
1035 106 2
|
||||
1016 103 2
|
||||
1007 101 1
|
||||
1036 107 2
|
||||
1018 103 2
|
||||
1026 105 2
|
||||
1027 105 2
|
||||
1183 104 2
|
||||
1038 107 2
|
||||
1025 105 2
|
||||
1037 107 2
|
||||
1021 104 2
|
||||
1019 103 2
|
||||
1005 101 1
|
||||
1179 105 2
|
||||
id parent_id level
|
||||
1002 100 0
|
||||
1004 101 1
|
||||
1005 101 1
|
||||
1009 102 2
|
||||
1025 102 2
|
||||
1018 103 2
|
||||
1023 104 2
|
||||
1025 104 2
|
||||
1029 105 2
|
||||
1030 105 2
|
||||
1031 105 2
|
||||
1032 106 2
|
||||
1033 106 2
|
||||
1034 106 2
|
||||
1204 107 2
|
||||
1203 107 2
|
||||
1021 103 2
|
||||
1158 100 0
|
||||
1194 105 2
|
||||
1041 107 2
|
||||
1003 101 1
|
||||
1016 102 2
|
||||
1007 101 1
|
||||
1035 106 2
|
||||
1036 106 2
|
||||
1017 103 2
|
||||
1008 101 1
|
||||
1037 107 2
|
||||
1019 103 2
|
||||
1027 105 2
|
||||
1028 105 2
|
||||
1184 104 2
|
||||
1039 107 2
|
||||
1026 105 2
|
||||
1038 107 2
|
||||
1022 104 2
|
||||
1020 103 2
|
||||
1006 101 1
|
||||
1180 105 2
|
||||
id parent_id level
|
||||
1009 102 2
|
||||
1025 102 2
|
||||
1016 102 2
|
||||
table type possible_keys key key_len ref rows Extra
|
||||
t1 ref level level 1 const 1 where used; Using index
|
||||
level id
|
||||
1 1004
|
||||
1 1005
|
||||
1 1003
|
||||
1 1007
|
||||
1 1008
|
||||
1 1006
|
||||
level id parent_id
|
||||
1 1004 101
|
||||
1 1005 101
|
||||
1 1003 101
|
||||
1 1007 101
|
||||
1 1008 101
|
||||
1 1006 101
|
||||
level id
|
||||
1 1003
|
||||
1 1004
|
||||
1 1005
|
||||
1 1006
|
||||
1 1007
|
||||
1 1008
|
||||
id parent_id level
|
||||
1002 100 0
|
||||
1009 102 2
|
||||
1025 102 2
|
||||
1018 103 2
|
||||
1023 104 2
|
||||
1025 104 2
|
||||
1029 105 2
|
||||
1030 105 2
|
||||
1031 105 2
|
||||
1032 106 2
|
||||
1033 106 2
|
||||
1034 106 2
|
||||
1204 107 2
|
||||
1203 107 2
|
||||
1021 103 2
|
||||
1158 100 0
|
||||
1194 105 2
|
||||
1041 107 2
|
||||
1016 102 2
|
||||
1035 106 2
|
||||
1036 106 2
|
||||
1017 103 2
|
||||
1037 107 2
|
||||
1019 103 2
|
||||
1027 105 2
|
||||
1028 105 2
|
||||
1184 104 2
|
||||
1039 107 2
|
||||
1026 105 2
|
||||
1038 107 2
|
||||
1022 104 2
|
||||
1020 103 2
|
||||
1180 105 2
|
||||
count(*)
|
||||
1
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
@ -33,12 +33,9 @@ grp a c id a c d
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
grp a c id a c d
|
||||
1 1 a 1 1 a 1
|
||||
2 2 b NULL NULL NULL NULL
|
||||
2 3 c NULL NULL NULL NULL
|
||||
3 4 E 3 4 A 4
|
||||
3 5 C 3 5 B 5
|
||||
3 6 D 3 6 C 6
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
grp a c id a c d
|
||||
1 1 a 1 1 a 1
|
||||
2 2 b NULL NULL NULL NULL
|
||||
|
336
mysql-test/t/innobase.test
Normal file
336
mysql-test/t/innobase.test
Normal file
@ -0,0 +1,336 @@
|
||||
-- source include/have_innobase.inc
|
||||
|
||||
#
|
||||
# Small basic test with ignore
|
||||
#
|
||||
|
||||
drop table if exists t1;
|
||||
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)) type=innobase;
|
||||
|
||||
insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David'), (2, 'Erik'), (3, 'Sasha'), (3, 'Jeremy'), (4, 'Matt');
|
||||
select id, code, name from t1 order by id;
|
||||
|
||||
update ignore t1 set id = 8, name = 'Sinisa' where id < 3;
|
||||
select id, code, name from t1 order by id;
|
||||
update ignore t1 set id = id + 10, name = 'Ralph' where id < 4;
|
||||
select id, code, name from t1 order by id;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# A bit bigger test
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
id int(11) NOT NULL auto_increment,
|
||||
parent_id int(11) DEFAULT '0' NOT NULL,
|
||||
level tinyint(4) DEFAULT '0' NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
KEY parent_id (parent_id),
|
||||
KEY level (level)
|
||||
) type=innobase;
|
||||
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);
|
||||
update t1 set parent_id=parent_id+100;
|
||||
select * from t1 where parent_id=102;
|
||||
update t1 set id=id+1000;
|
||||
!$1062 update t1 set id=1024 where id=1009;
|
||||
select * from t1;
|
||||
update ignore t1 set id=id+1; # This will change all rows
|
||||
select * from t1;
|
||||
update ignore t1 set id=1023 where id=1010;
|
||||
select * from t1 where parent_id=102;
|
||||
explain select level from t1 where level=1;
|
||||
explain select level,id from t1 where level=1;
|
||||
explain select level,id,parent_id from t1 where level=1;
|
||||
select level,id from t1 where level=1;
|
||||
select level,id,parent_id from t1 where level=1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test replace
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
gesuchnr int(11) DEFAULT '0' NOT NULL,
|
||||
benutzer_id int(11) DEFAULT '0' NOT NULL,
|
||||
PRIMARY KEY (gesuchnr,benutzer_id)
|
||||
) type=innobase;
|
||||
|
||||
replace into t1 (gesuchnr,benutzer_id) values (2,1);
|
||||
replace into t1 (gesuchnr,benutzer_id) values (1,1);
|
||||
replace into t1 (gesuchnr,benutzer_id) values (1,1);
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# test delete using hidden_primary_key
|
||||
#
|
||||
|
||||
create table t1 (a int) type=innobase;
|
||||
insert into t1 values (1), (2);
|
||||
delete from t1 where a = 1;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test auto_increment on sub key
|
||||
#
|
||||
|
||||
create table t1 (a char(10) not null, b int not null auto_increment, primary key(a,b)) type=innobase;
|
||||
insert into t1 values ("a",1),("b",2),("a",2),("c",1);
|
||||
insert into t1 values ("a",NULL),("b",NULL),("c",NULL),("e",NULL);
|
||||
insert into t1 (a) values ("a"),("b"),("c"),("d");
|
||||
insert into t1 (a) values ('k'),('d');
|
||||
insert into t1 (a) values ("a");
|
||||
insert into t1 values ("d",last_insert_id());
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test rollback
|
||||
#
|
||||
|
||||
create table t1 (n int not null primary key) type=innobase;
|
||||
set autocommit=0;
|
||||
insert into t1 values (4);
|
||||
rollback;
|
||||
select n, "after rollback" from t1;
|
||||
insert into t1 values (4);
|
||||
commit;
|
||||
select n, "after commit" from t1;
|
||||
commit;
|
||||
insert into t1 values (5);
|
||||
!$1062 insert into t1 values (4);
|
||||
commit;
|
||||
select n, "after commit" from t1;
|
||||
set autocommit=1;
|
||||
insert into t1 values (6);
|
||||
!$1062 insert into t1 values (4);
|
||||
select n from t1;
|
||||
# nop
|
||||
rollback;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Testing transactions
|
||||
#
|
||||
|
||||
create table t1 ( id int NOT NULL PRIMARY KEY, nom varchar(64)) type=innobase;
|
||||
begin;
|
||||
insert into t1 values(1,'hamdouni');
|
||||
select id as afterbegin_id,nom as afterbegin_nom from t1;
|
||||
rollback;
|
||||
select id as afterrollback_id,nom as afterrollback_nom from t1;
|
||||
set autocommit=0;
|
||||
insert into t1 values(2,'mysql');
|
||||
select id as afterautocommit0_id,nom as afterautocommit0_nom from t1;
|
||||
rollback;
|
||||
select id as afterrollback_id,nom as afterrollback_nom from t1;
|
||||
set autocommit=1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Simple not autocommit test
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (id char(8) not null primary key, val int not null) type=innobase;
|
||||
insert into t1 values ('pippo', 12);
|
||||
!$1062 insert into t1 values ('pippo', 12); # Gives error
|
||||
delete from t1;
|
||||
delete from t1 where id = 'pippo';
|
||||
select * from t1;
|
||||
|
||||
insert into t1 values ('pippo', 12);
|
||||
set autocommit=0;
|
||||
delete from t1;
|
||||
rollback;
|
||||
select * from t1;
|
||||
delete from t1;
|
||||
commit;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
set autocommit=1;
|
||||
|
||||
#
|
||||
# The following simple tests failed at some point
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR(64)) TYPE=innobase;
|
||||
INSERT INTO t1 VALUES (1, 'Jochen');
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1 ( _userid VARCHAR(60) NOT NULL PRIMARY KEY) TYPE=innobase;
|
||||
set autocommit=0;
|
||||
INSERT INTO t1 SET _userid='marc@anyware.co.uk';
|
||||
COMMIT;
|
||||
SELECT * FROM t1;
|
||||
SELECT _userid FROM t1 WHERE _userid='marc@anyware.co.uk';
|
||||
drop table t1;
|
||||
set autocommit=1;
|
||||
|
||||
#
|
||||
# Test when reading on part of unique key
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
user_id int(10) DEFAULT '0' NOT NULL,
|
||||
name varchar(100),
|
||||
phone varchar(100),
|
||||
ref_email varchar(100) DEFAULT '' NOT NULL,
|
||||
detail varchar(200),
|
||||
PRIMARY KEY (user_id,ref_email)
|
||||
)type=innobase;
|
||||
|
||||
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');
|
||||
select * from t1 where user_id=10292;
|
||||
INSERT INTO t1 VALUES (10291,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10293,'shirish','2333604','shirish@yahoo.com','ddsds');
|
||||
select * from t1 where user_id=10292;
|
||||
select * from t1 where user_id>=10292;
|
||||
select * from t1 where user_id>10292;
|
||||
select * from t1 where user_id<10292;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test that keys are created in right order
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int not null, b int not null,c int not null,
|
||||
key(a),primary key(a,b), unique(c),key(a),unique(b));
|
||||
show index from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test of ALTER TABLE and innobase tables
|
||||
#
|
||||
|
||||
create table t1 (col1 int not null, col2 char(4) not null, primary key(col1));
|
||||
alter table t1 type=innobase;
|
||||
insert into t1 values ('1','1'),('5','2'),('2','3'),('3','4'),('4','4');
|
||||
select * from t1;
|
||||
update t1 set col2='7' where col1='4';
|
||||
select * from t1;
|
||||
alter table t1 add co3 int not null;
|
||||
select * from t1;
|
||||
update t1 set col2='9' where col1='2';
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# INSERT INTO innobase tables
|
||||
#
|
||||
|
||||
create table t1 (a int not null , b int, primary key (a)) type = innobase;
|
||||
create table t2 (a int not null , b int, primary key (a)) type = myisam;
|
||||
insert into t1 VALUES (1,3) , (2,3), (3,3);
|
||||
select * from t1;
|
||||
insert into t2 select * from t1;
|
||||
select * from t2;
|
||||
delete from t1 where b = 3;
|
||||
select * from t1;
|
||||
insert into t1 select * from t2;
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Search on unique key
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
id int(11) NOT NULL auto_increment,
|
||||
ggid varchar(32) binary DEFAULT '' NOT NULL,
|
||||
email varchar(64) DEFAULT '' NOT NULL,
|
||||
passwd varchar(32) binary DEFAULT '' NOT NULL,
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE ggid (ggid)
|
||||
) TYPE=innobase;
|
||||
|
||||
insert into t1 (ggid,passwd) values ('test1','xxx');
|
||||
insert into t1 (ggid,passwd) values ('test2','yyy');
|
||||
|
||||
select * from t1 where ggid='test1';
|
||||
select * from t1 where passwd='xxx';
|
||||
select * from t1 where id=2;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# ORDER BY on not primary key
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
user_name varchar(12),
|
||||
password text,
|
||||
subscribed char(1),
|
||||
user_id int(11) DEFAULT '0' NOT NULL,
|
||||
quota bigint(20),
|
||||
weight double,
|
||||
access_date date,
|
||||
access_time time,
|
||||
approved datetime,
|
||||
dummy_primary_key int(11) NOT NULL auto_increment,
|
||||
PRIMARY KEY (dummy_primary_key)
|
||||
) TYPE=innobase;
|
||||
INSERT INTO t1 VALUES ('user_0','somepassword','N',0,0,0,'2000-09-07','23:06:59','2000-09-07 23:06:59',1);
|
||||
INSERT INTO t1 VALUES ('user_1','somepassword','Y',1,1,1,'2000-09-07','23:06:59','2000-09-07 23:06:59',2);
|
||||
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);
|
||||
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);
|
||||
INSERT INTO t1 VALUES ('user_4','somepassword','N',4,4,2,'2000-09-07','23:06:59','2000-09-07 23:06:59',5);
|
||||
select user_name, password , subscribed, user_id, quota, weight, access_date, access_time, approved, dummy_primary_key from t1 order by user_name;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Testing of tables without primary keys
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
id int(11) NOT NULL auto_increment,
|
||||
parent_id int(11) DEFAULT '0' NOT NULL,
|
||||
level tinyint(4) DEFAULT '0' NOT NULL,
|
||||
KEY (id),
|
||||
KEY parent_id (parent_id),
|
||||
KEY level (level)
|
||||
) type=innobase;
|
||||
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);
|
||||
INSERT INTO t1 values (179,5,2);
|
||||
update t1 set parent_id=parent_id+100;
|
||||
select * from t1 where parent_id=102;
|
||||
update t1 set id=id+1000;
|
||||
update t1 set id=1024 where id=1009;
|
||||
select * from t1;
|
||||
update ignore t1 set id=id+1; # This will change all rows
|
||||
select * from t1;
|
||||
update ignore t1 set id=1023 where id=1010;
|
||||
select * from t1 where parent_id=102;
|
||||
explain select level from t1 where level=1;
|
||||
select level,id from t1 where level=1;
|
||||
select level,id,parent_id from t1 where level=1;
|
||||
select level,id from t1 where level=1 order by id;
|
||||
delete from t1 where level=1;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test of index only reads
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
sca_code char(6) NOT NULL,
|
||||
cat_code char(6) NOT NULL,
|
||||
sca_desc varchar(50),
|
||||
lan_code char(2) NOT NULL,
|
||||
sca_pic varchar(100),
|
||||
sca_sdesc varchar(50),
|
||||
sca_sch_desc varchar(16),
|
||||
PRIMARY KEY (sca_code, cat_code, lan_code)
|
||||
) type = innobase ;
|
||||
|
||||
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');
|
||||
select count(*) from t1 where sca_code = 'PD';
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test of opening table twice
|
||||
#
|
||||
CREATE TABLE t1 (a int not null, primary key (a)) type=innobase;
|
||||
insert into t1 values(1),(2),(3);
|
||||
select t1.a from t1 natural join t1 as t2 order by t1.a;
|
||||
drop table t1;
|
@ -770,10 +770,8 @@ DBT *ha_berkeley::pack_key(DBT *key, uint keynr, char *buff,
|
||||
|
||||
for (; key_part != end && (int) key_length > 0 ; key_part++)
|
||||
{
|
||||
uint offset=0;
|
||||
if (key_part->null_bit)
|
||||
{
|
||||
offset=1;
|
||||
if (!(*buff++ = (*key_ptr == 0))) // Store 0 if NULL
|
||||
{
|
||||
key_length-= key_part->store_length;
|
||||
@ -783,7 +781,7 @@ DBT *ha_berkeley::pack_key(DBT *key, uint keynr, char *buff,
|
||||
}
|
||||
key_ptr++;
|
||||
}
|
||||
buff=key_part->field->keypack(buff,key_ptr+offset,key_part->length);
|
||||
buff=key_part->field->keypack(buff,key_ptr,key_part->length);
|
||||
key_ptr+=key_part->store_length;
|
||||
key_length-=key_part->store_length;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user