diff options
author | unknown <serg@serg.mylan> | 2004-02-20 20:38:34 +0100 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2004-02-20 20:38:34 +0100 |
commit | 74fa5f09ef7ef6433423f93378bbc070c091d9b0 (patch) | |
tree | 40b5e6cdb83d2a91c45651388dc4d63cd2a3fa84 | |
parent | e2244c94b1f29d176e441e86b7162f520eaa50b2 (diff) | |
download | mariadb-git-74fa5f09ef7ef6433423f93378bbc070c091d9b0.tar.gz |
longer myisam keys
mysql-test/r/ctype_utf8.result:
updated
mysql-test/r/key.result:
updated
mysql-test/r/myisam.result:
updated
mysql-test/r/type_blob.result:
updated
mysql-test/t/ctype_utf8.test:
updated
mysql-test/t/key.test:
updated
mysql-test/t/myisam.test:
updated
mysql-test/t/type_blob.test:
updated
-rw-r--r-- | include/myisam.h | 2 | ||||
-rw-r--r-- | mysql-test/r/ctype_utf8.result | 4 | ||||
-rw-r--r-- | mysql-test/r/key.result | 21 | ||||
-rw-r--r-- | mysql-test/r/myisam.result | 10 | ||||
-rw-r--r-- | mysql-test/r/type_blob.result | 10 | ||||
-rw-r--r-- | mysql-test/t/ctype_utf8.test | 2 | ||||
-rw-r--r-- | mysql-test/t/key.test | 13 | ||||
-rw-r--r-- | mysql-test/t/myisam.test | 6 | ||||
-rw-r--r-- | mysql-test/t/type_blob.test | 4 | ||||
-rw-r--r-- | sql/ha_myisam.h | 1 |
10 files changed, 54 insertions, 19 deletions
diff --git a/include/myisam.h b/include/myisam.h index f4ef4695016..ed4f4aff8fe 100644 --- a/include/myisam.h +++ b/include/myisam.h @@ -38,7 +38,7 @@ extern "C" { /* The following defines can be increased if necessary */ #define MI_MAX_KEY 32 /* Max allowed keys */ #define MI_MAX_KEY_SEG 16 /* Max segments for key */ -#define MI_MAX_KEY_LENGTH 500 +#define MI_MAX_KEY_LENGTH 1000 #define MI_MAX_KEY_BUFF (MI_MAX_KEY_LENGTH+MI_MAX_KEY_SEG*6+8+8) #define MI_MAX_POSSIBLE_KEY_BUFF (1024+6+6) /* For myisam_chk */ diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result index ad1f7785527..ddb5355f9ec 100644 --- a/mysql-test/r/ctype_utf8.result +++ b/mysql-test/r/ctype_utf8.result @@ -167,5 +167,5 @@ select hex(s1) from t1; hex(s1) 41 drop table t1; -create table t1 (a char(160) character set utf8, primary key(a)); -ERROR 42000: Specified key was too long; max key length is 255 bytes +create table t1 (a text character set utf8, primary key(a(360))); +ERROR 42000: Specified key was too long; max key length is 1000 bytes diff --git a/mysql-test/r/key.result b/mysql-test/r/key.result index dca7b580378..115f15bacb6 100644 --- a/mysql-test/r/key.result +++ b/mysql-test/r/key.result @@ -185,3 +185,24 @@ NULL 2 a 1 a 2 drop table t1; +create table t1 (i int, a char(200), b text, unique (a), unique (b(300))) charset utf8; +insert t1 values (1, repeat('a',210), repeat('b', 310)); +Warnings: +Warning 1265 Data truncated for column 'a' at row 1 +insert t1 values (2, repeat(0xD0B1,215), repeat(0xD0B1, 310)); +Warnings: +Warning 1265 Data truncated for column 'a' at row 1 +select i, length(a), length(b), char_length(a), char_length(b) from t1; +i length(a) length(b) char_length(a) char_length(b) +1 200 310 200 310 +2 400 620 200 310 +select i from t1 where a=repeat(_utf8 'a',200); +i +1 +select i from t1 where a=repeat(_utf8 0xD0B1,200); +i +2 +select i from t1 where b=repeat(_utf8 'b',310); +i +1 +drop table t1; diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result index 1f3e12a33aa..1433c50f25c 100644 --- a/mysql-test/r/myisam.result +++ b/mysql-test/r/myisam.result @@ -322,11 +322,11 @@ CHECK TABLE t1; Table Op Msg_type Msg_text test.t1 check status OK drop table t1; -CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255), KEY t1 (a, b, c)); -ERROR 42000: Specified key was too long; max key length is 500 bytes -CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255)); -ALTER TABLE t1 ADD INDEX t1 (a, b, c); -ERROR 42000: Specified key was too long; max key length is 500 bytes +CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255), d varchar(255), e varchar(255), KEY t1 (a, b, c, d, e)); +ERROR 42000: Specified key was too long; max key length is 1000 bytes +CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255), d varchar(255), e varchar(255)); +ALTER TABLE t1 ADD INDEX t1 (a, b, c, d, e); +ERROR 42000: Specified key was too long; max key length is 1000 bytes DROP TABLE t1; CREATE TABLE t1 (a int not null, b int, c int, key(b), key(c), key(a,b), key(c,a)); INSERT into t1 values (0, null, 0), (0, null, 1), (0, null, 2), (0, null,3), (1,1,4); diff --git a/mysql-test/r/type_blob.result b/mysql-test/r/type_blob.result index a895325d1fc..d44face6512 100644 --- a/mysql-test/r/type_blob.result +++ b/mysql-test/r/type_blob.result @@ -346,16 +346,16 @@ HELLO MY 1 a 1 hello 1 drop table t1; -create table t1 (a text, unique (a(300))); -ERROR 42000: Specified key was too long; max key length is 255 bytes -create table t1 (a text, key (a(300))); +create table t1 (a text, unique (a(2100))); +ERROR 42000: Specified key was too long; max key length is 1000 bytes +create table t1 (a text, key (a(2100))); Warnings: -Warning 1071 Specified key was too long; max key length is 255 bytes +Warning 1071 Specified key was too long; max key length is 1000 bytes show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` text, - KEY `a` (`a`(255)) + KEY `a` (`a`(1000)) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; CREATE TABLE t1 ( diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test index 6361f49fe55..797af89c6ad 100644 --- a/mysql-test/t/ctype_utf8.test +++ b/mysql-test/t/ctype_utf8.test @@ -104,4 +104,4 @@ drop table t1; # UTF8 breaks primary keys for cols > 85 characters # --error 1071 -create table t1 (a char(160) character set utf8, primary key(a)); +create table t1 (a text character set utf8, primary key(a(360))); diff --git a/mysql-test/t/key.test b/mysql-test/t/key.test index 109cbb91e2f..cdaf6062771 100644 --- a/mysql-test/t/key.test +++ b/mysql-test/t/key.test @@ -191,3 +191,16 @@ SELECT * FROM t1; INSERT INTO t1 (c) VALUES ('a'),('a'); SELECT * FROM t1; drop table t1; + +# +# longer keys +# +create table t1 (i int, a char(200), b text, unique (a), unique (b(300))) charset utf8; +insert t1 values (1, repeat('a',210), repeat('b', 310)); +insert t1 values (2, repeat(0xD0B1,215), repeat(0xD0B1, 310)); +select i, length(a), length(b), char_length(a), char_length(b) from t1; +select i from t1 where a=repeat(_utf8 'a',200); +select i from t1 where a=repeat(_utf8 0xD0B1,200); +select i from t1 where b=repeat(_utf8 'b',310); +drop table t1; + diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test index c407cba4800..65bc4f1fff6 100644 --- a/mysql-test/t/myisam.test +++ b/mysql-test/t/myisam.test @@ -337,10 +337,10 @@ drop table t1; # --error 1071 -CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255), KEY t1 (a, b, c)); -CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255)); +CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255), d varchar(255), e varchar(255), KEY t1 (a, b, c, d, e)); +CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255), d varchar(255), e varchar(255)); --error 1071 -ALTER TABLE t1 ADD INDEX t1 (a, b, c); +ALTER TABLE t1 ADD INDEX t1 (a, b, c, d, e); DROP TABLE t1; # diff --git a/mysql-test/t/type_blob.test b/mysql-test/t/type_blob.test index 97c38057e72..cae64b9dd27 100644 --- a/mysql-test/t/type_blob.test +++ b/mysql-test/t/type_blob.test @@ -122,8 +122,8 @@ select d,count(*) from t1 group by d; drop table t1; -- error 1071 -create table t1 (a text, unique (a(300))); # should give an error -create table t1 (a text, key (a(300))); # key is auto-truncated +create table t1 (a text, unique (a(2100))); # should give an error +create table t1 (a text, key (a(2100))); # key is auto-truncated show create table t1; drop table t1; diff --git a/sql/ha_myisam.h b/sql/ha_myisam.h index 06663516011..ddffcfecc29 100644 --- a/sql/ha_myisam.h +++ b/sql/ha_myisam.h @@ -65,6 +65,7 @@ class ha_myisam: public handler uint max_keys() const { return MI_MAX_KEY; } uint max_key_parts() const { return MAX_REF_PARTS; } uint max_key_length() const { return MI_MAX_KEY_LENGTH; } + uint max_key_part_length() { return MI_MAX_KEY_LENGTH; } uint checksum() const; int open(const char *name, int mode, uint test_if_locked); |