summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2004-02-20 20:38:34 +0100
committerunknown <serg@serg.mylan>2004-02-20 20:38:34 +0100
commit74fa5f09ef7ef6433423f93378bbc070c091d9b0 (patch)
tree40b5e6cdb83d2a91c45651388dc4d63cd2a3fa84
parente2244c94b1f29d176e441e86b7162f520eaa50b2 (diff)
downloadmariadb-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.h2
-rw-r--r--mysql-test/r/ctype_utf8.result4
-rw-r--r--mysql-test/r/key.result21
-rw-r--r--mysql-test/r/myisam.result10
-rw-r--r--mysql-test/r/type_blob.result10
-rw-r--r--mysql-test/t/ctype_utf8.test2
-rw-r--r--mysql-test/t/key.test13
-rw-r--r--mysql-test/t/myisam.test6
-rw-r--r--mysql-test/t/type_blob.test4
-rw-r--r--sql/ha_myisam.h1
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);