[Pkg-mysql-commits] r1135 - in trunk/debian: . patches
Norbert Tretkowski
nobse at alioth.debian.org
Wed Jan 30 17:36:25 UTC 2008
tags 463137 pending
thanks
Author: nobse
Date: 2008-01-30 17:36:24 +0000 (Wed, 30 Jan 2008)
New Revision: 1135
Added:
trunk/debian/patches/60_raise-max-keylength.dpatch
Modified:
trunk/debian/changelog
trunk/debian/patches/00list
Log:
Raise the maximum key length to 4005 bytes or 1335 UTF-8 characters.
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2008-01-29 18:02:19 UTC (rev 1134)
+++ trunk/debian/changelog 2008-01-30 17:36:24 UTC (rev 1135)
@@ -7,6 +7,8 @@
+ debian/patches/92_SECURITY_CVE-2007-6303.dpatch
+ debian/patches/93_SECURITY_CVE-2007-6304.dpatch
+ debian/patches/94_SECURITY_CVE-2008-0226+0227.dpatch
+ * New patch 60_raise-max-keylength.dpatch to raise the maximum key length to
+ 4005 bytes or 1335 UTF-8 characters. (closes: 463137)
* Add recommendation on libhtml-template-perl to -server package, used by
ndb_size. (closes: #462265)
* Update mysqlreport to 3.4a release.
Modified: trunk/debian/patches/00list
===================================================================
--- trunk/debian/patches/00list 2008-01-29 18:02:19 UTC (rev 1134)
+++ trunk/debian/patches/00list 2008-01-30 17:36:24 UTC (rev 1135)
@@ -11,6 +11,7 @@
53_integer-gcc-4.2.dpatch
54_ssl-client-support.dpatch
55_testsuite-2008.dpatch
+60_raise-max-keylength.dpatch
86_PATH_MAX.dpatch
89_ndb__staticlib.dpatch
90_upstreamdebiandir.dpatch
Added: trunk/debian/patches/60_raise-max-keylength.dpatch
===================================================================
--- trunk/debian/patches/60_raise-max-keylength.dpatch (rev 0)
+++ trunk/debian/patches/60_raise-max-keylength.dpatch 2008-01-30 17:36:24 UTC (rev 1135)
@@ -0,0 +1,495 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 60_raise-max-keylength.dpatch by Norbert Tretkowski <nobse at debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Raises the maximum key length to 4005 bytes or 1335 UTF-8 characters,
+## DP: which is the maximum raise possible without changing other parameters.
+
+ at DPATCH@
+diff -Nrup a/include/myisam.h b/include/myisam.h
+--- a/include/myisam.h 2006-12-23 20:04:05 +01:00
++++ b/include/myisam.h 2008-01-30 18:26:56 +01:00
+@@ -48,15 +48,27 @@ extern "C" {
+ #define MI_MAX_KEY MAX_INDEXES /* Max allowed keys */
+ #endif
+
+-#define MI_MAX_POSSIBLE_KEY_BUFF (1024+6+6) /* For myisam_chk */
+ /*
+ The following defines can be increased if necessary.
+ But beware the dependency of MI_MAX_POSSIBLE_KEY_BUFF and MI_MAX_KEY_LENGTH.
+ */
+-#define MI_MAX_KEY_LENGTH 1000 /* Max length in bytes */
+ #define MI_MAX_KEY_SEG 16 /* Max segments for key */
++ /*
++ Max key length computes from max key block. At least 4 keys should
++ go into a key block. Each key has a length (1 or 3 bytes), a data
++ file pointer (max 8 bytes), optionally a key file pointer (max 8
++ bytes), optional length per key segment (max 3 bytes), and an
++ optional null byte per key segment. The key_length computation in
++ mi_create() adds another data pointer per key (max 8 bytes). A block
++ has a 2 byte length and optionally a key file pointer. See
++ myisamdef.h:MI_BLOCK_SIZE() and mi_create(). With
++ MI_MAX_KEY_BLOCK_LENGTH = 16384 and MI_MAX_KEY_SEG = 16 we have
++ (16384-2-8)/4-8-8-(8+(3+1)*16) = 4005 bytes.
++ */
++#define MI_MAX_KEY_LENGTH 4005 /* Max key length in bytes */
+
+ #define MI_MAX_KEY_BUFF (MI_MAX_KEY_LENGTH+MI_MAX_KEY_SEG*6+8+8)
++#define MI_MAX_POSSIBLE_KEY_BUFF (MI_MAX_KEY_LENGTH+24+6+6) /* For myisam_chk */
+ #define MI_MAX_MSG_BUF 1024 /* used in CHECK TABLE, REPAIR TABLE */
+ #define MI_NAME_IEXT ".MYI"
+ #define MI_NAME_DEXT ".MYD"
+diff -Nrup a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result
+--- a/mysql-test/r/ctype_utf8.result 2007-10-30 09:20:28 +01:00
++++ b/mysql-test/r/ctype_utf8.result 2008-01-30 18:26:56 +01:00
+@@ -240,8 +240,10 @@ select hex(s1) from t1;
+ hex(s1)
+ 41
+ drop table t1;
+-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
++create table t1 (a text character set utf8, primary key(a(1336)));
++ERROR 42000: Specified key was too long; max key length is 4005 bytes
++create table t1 (a text character set utf8, primary key(a(1335)));
++drop table t1;
+ CREATE TABLE t1 ( a varchar(10) ) CHARACTER SET utf8;
+ INSERT INTO t1 VALUES ( 'test' );
+ SELECT a.a, b.a FROM t1 a, t1 b WHERE a.a = b.a;
+diff -Nrup a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result
+--- a/mysql-test/r/innodb.result 2007-12-13 11:49:11 +01:00
++++ b/mysql-test/r/innodb.result 2008-01-30 18:26:56 +01:00
+@@ -2773,7 +2773,7 @@ c varchar(255) character set utf8,
+ d varchar(255) character set utf8,
+ e varchar(255) character set utf8,
+ key (a,b,c,d,e)) engine=innodb;
+-ERROR 42000: Specified key was too long; max key length is 3072 bytes
++ERROR 42000: Specified key was too long; max key length is 3500 bytes
+ create table t1 (s1 varbinary(2),primary key (s1)) engine=innodb;
+ create table t2 (s1 binary(2),primary key (s1)) engine=innodb;
+ create table t3 (s1 varchar(2) binary,primary key (s1)) engine=innodb;
+diff -Nrup a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result
+--- a/mysql-test/r/myisam.result 2008-01-16 12:15:56 +01:00
++++ b/mysql-test/r/myisam.result 2008-01-30 18:26:56 +01:00
+@@ -322,11 +322,34 @@ 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), 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
++CREATE TABLE t1 (
++a varchar(255), b varchar(255), c varchar(255), d varchar(255),
++e varchar(255), f varchar(255), g varchar(255), h varchar(255),
++i varchar(255), j varchar(255), k varchar(255), l varchar(255),
++m varchar(255), n varchar(255), o varchar(255), p varchar(181),
++KEY t1 (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p));
++ERROR 42000: Specified key was too long; max key length is 4005 bytes
++CREATE TABLE t1 (
++a varchar(255), b varchar(255), c varchar(255), d varchar(255),
++e varchar(255), f varchar(255), g varchar(255), h varchar(255),
++i varchar(255), j varchar(255), k varchar(255), l varchar(255),
++m varchar(255), n varchar(255), o varchar(255), p varchar(181));
++ALTER TABLE t1 ADD INDEX t1 (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p);
++ERROR 42000: Specified key was too long; max key length is 4005 bytes
++DROP TABLE t1;
++CREATE TABLE t1 (
++a varchar(255), b varchar(255), c varchar(255), d varchar(255),
++e varchar(255), f varchar(255), g varchar(255), h varchar(255),
++i varchar(255), j varchar(255), k varchar(255), l varchar(255),
++m varchar(255), n varchar(255), o varchar(255), p varchar(180),
++KEY t1 (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p));
++DROP TABLE t1;
++CREATE TABLE t1 (
++a varchar(255), b varchar(255), c varchar(255), d varchar(255),
++e varchar(255), f varchar(255), g varchar(255), h varchar(255),
++i varchar(255), j varchar(255), k varchar(255), l varchar(255),
++m varchar(255), n varchar(255), o varchar(255), p varchar(180));
++ALTER TABLE t1 ADD INDEX t1 (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p);
+ 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);
+@@ -1093,6 +1116,186 @@ length(c1) c1
+ 2 A
+ 2 B
+ DROP TABLE t1;
++CREATE TABLE t1 (
++c1 VARCHAR(255) NOT NULL,
++c2 VARCHAR(255) NOT NULL,
++c3 VARCHAR(255) NOT NULL,
++c4 VARCHAR(255) NOT NULL,
++c5 VARCHAR(255) NOT NULL,
++c6 VARCHAR(61),
++KEY i1 (c1, c2, c3, c4, c5, c6)) DEFAULT CHARSET=UTF8;
++ERROR 42000: Specified key was too long; max key length is 4005 bytes
++CREATE TABLE t1 (
++c1 VARCHAR(255) NOT NULL,
++c2 VARCHAR(255) NOT NULL,
++c3 VARCHAR(255) NOT NULL,
++c4 VARCHAR(255) NOT NULL,
++c5 VARCHAR(255) NOT NULL,
++c6 VARCHAR(60),
++KEY i1 (c1, c2, c3, c4, c5, c6)) DEFAULT CHARSET=UTF8;
++INSERT INTO t1 VALUES
++(REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '1')),
++(REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '7')),
++(REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '5')),
++(REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '8')),
++(REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '6')),
++(REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '5'));
++CHECK TABLE t1 EXTENDED;
++Table Op Msg_type Msg_text
++test.t1 check status OK
++OPTIMIZE TABLE t1;
++Table test.t1
++Op optimize
++Msg_type status
++Msg_text OK
++SHOW CREATE TABLE t1;
++Table t1
++Create Table CREATE TABLE `t1` (
++ `c1` varchar(255) NOT NULL,
++ `c2` varchar(255) NOT NULL,
++ `c3` varchar(255) NOT NULL,
++ `c4` varchar(255) NOT NULL,
++ `c5` varchar(255) NOT NULL,
++ `c6` varchar(60) default NULL,
++ KEY `i1` (`c1`,`c2`,`c3`,`c4`,`c5`,`c6`)
++) ENGINE=MyISAM DEFAULT CHARSET=utf8
++SHOW TABLE STATUS LIKE 't1';
++Name t1
++Engine MyISAM
++Version 10
++Row_format Dynamic
++Rows 6
++Avg_row_length #
++Data_length #
++Max_data_length #
++Index_length #
++Data_free 0
++Auto_increment NULL
++Create_time #
++Update_time #
++Check_time #
++Collation utf8_general_ci
++Checksum NULL
++Create_options
++Comment
++SHOW INDEX FROM t1;
++Table t1
++Non_unique 1
++Key_name i1
++Seq_in_index 1
++Column_name c1
++Collation A
++Cardinality 1
++Sub_part NULL
++Packed NULL
++Null
++Index_type BTREE
++Comment
++Table t1
++Non_unique 1
++Key_name i1
++Seq_in_index 2
++Column_name c2
++Collation A
++Cardinality 1
++Sub_part NULL
++Packed NULL
++Null
++Index_type BTREE
++Comment
++Table t1
++Non_unique 1
++Key_name i1
++Seq_in_index 3
++Column_name c3
++Collation A
++Cardinality 1
++Sub_part NULL
++Packed NULL
++Null
++Index_type BTREE
++Comment
++Table t1
++Non_unique 1
++Key_name i1
++Seq_in_index 4
++Column_name c4
++Collation A
++Cardinality 1
++Sub_part NULL
++Packed NULL
++Null
++Index_type BTREE
++Comment
++Table t1
++Non_unique 1
++Key_name i1
++Seq_in_index 5
++Column_name c5
++Collation A
++Cardinality 1
++Sub_part NULL
++Packed NULL
++Null
++Index_type BTREE
++Comment
++Table t1
++Non_unique 1
++Key_name i1
++Seq_in_index 6
++Column_name c6
++Collation A
++Cardinality 6
++Sub_part NULL
++Packed NULL
++Null YES
++Index_type BTREE
++Comment
++EXPLAIN SELECT SUBSTR(c6, 50) FROM t1
++ORDER BY c1, c2, c3, c4, c5, c6;
++id 1
++select_type SIMPLE
++table t1
++type index
++possible_keys NULL
++key i1
++key_len 4018
++ref NULL
++rows 6
++Extra Using index
++SELECT SUBSTR(c6, 50) FROM t1 ORDER BY c1, c2, c3, c4, c5, c6;
++SUBSTR(c6, 50)
++MMMMMMMMMM1
++MMMMMMMMMM5
++MMMMMMMMMM5
++MMMMMMMMMM6
++MMMMMMMMMM7
++MMMMMMMMMM8
++DELETE FROM t1 WHERE c6 LIKE '%5' LIMIT 1;
++UPDATE t1 SET c6 = CONCAT(REPEAT('M', 59), '9') WHERE c6 LIKE '%1';
++SELECT SUBSTR(c6, 50) FROM t1 ORDER BY c1, c2, c3, c4, c5, c6;
++SUBSTR(c6, 50)
++MMMMMMMMMM5
++MMMMMMMMMM6
++MMMMMMMMMM7
++MMMMMMMMMM8
++MMMMMMMMMM9
++CHECK TABLE t1 EXTENDED;
++Table Op Msg_type Msg_text
++test.t1 check status OK
++REPAIR TABLE t1 EXTENDED;
++Table Op Msg_type Msg_text
++test.t1 repair status OK
++CHECK TABLE t1 EXTENDED;
++Table Op Msg_type Msg_text
++test.t1 check status OK
++DROP TABLE t1;
+ End of 4.1 tests
+ set storage_engine=MyISAM;
+ drop table if exists t1,t2,t3;
+@@ -1668,7 +1871,7 @@ a b
+ drop table t1;
+ create table t1 (v varchar(65530), key(v));
+ Warnings:
+-Warning 1071 Specified key was too long; max key length is 1000 bytes
++Warning 1071 Specified key was too long; max key length is 4005 bytes
+ drop table if exists t1;
+ create table t1 (v varchar(65536));
+ Warnings:
+diff -Nrup a/mysql-test/r/type_blob.result b/mysql-test/r/type_blob.result
+--- a/mysql-test/r/type_blob.result 2007-11-19 18:34:12 +01:00
++++ b/mysql-test/r/type_blob.result 2008-01-30 18:26:56 +01:00
+@@ -356,16 +356,24 @@ HELLO MY 1
+ a 1
+ hello 1
+ drop table t1;
+-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)));
++create table t1 (a text, unique (a(4006)));
++ERROR 42000: Specified key was too long; max key length is 4005 bytes
++create table t1 (a text, unique (a(4005)));
++show create table t1;
++Table Create Table
++t1 CREATE TABLE `t1` (
++ `a` text,
++ UNIQUE KEY `a` (`a`(4005))
++) ENGINE=MyISAM DEFAULT CHARSET=latin1
++drop table t1;
++create table t1 (a text, key (a(4006)));
+ Warnings:
+-Warning 1071 Specified key was too long; max key length is 1000 bytes
++Warning 1071 Specified key was too long; max key length is 4005 bytes
+ show create table t1;
+ Table Create Table
+ t1 CREATE TABLE `t1` (
+ `a` text,
+- KEY `a` (`a`(1000))
++ KEY `a` (`a`(4005))
+ ) ENGINE=MyISAM DEFAULT CHARSET=latin1
+ drop table t1;
+ CREATE TABLE t1 (
+diff -Nrup a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test
+--- a/mysql-test/t/ctype_utf8.test 2007-10-30 09:20:28 +01:00
++++ b/mysql-test/t/ctype_utf8.test 2008-01-30 18:26:56 +01:00
+@@ -162,9 +162,12 @@ drop table t1;
+ #
+ # Bug 2699
+ # UTF8 breaks primary keys for cols > 333 characters
++# Limit raised to 1335 UTF-8 chars by fix for Bug#4541. See myisam.test.
+ #
+ --error 1071
+-create table t1 (a text character set utf8, primary key(a(360)));
++create table t1 (a text character set utf8, primary key(a(1336)));
++create table t1 (a text character set utf8, primary key(a(1335)));
++drop table t1;
+
+
+ #
+diff -Nrup a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test
+--- a/mysql-test/t/myisam.test 2008-01-16 12:15:56 +01:00
++++ b/mysql-test/t/myisam.test 2008-01-30 18:26:56 +01:00
+@@ -334,13 +334,36 @@ drop table t1;
+
+ #
+ # Test of creating table with too long key
++# Limit raised to 4005 bytes by fix for Bug#4541. See myisam.test.
+ #
+-
+ --error 1071
+-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));
++CREATE TABLE t1 (
++ a varchar(255), b varchar(255), c varchar(255), d varchar(255),
++ e varchar(255), f varchar(255), g varchar(255), h varchar(255),
++ i varchar(255), j varchar(255), k varchar(255), l varchar(255),
++ m varchar(255), n varchar(255), o varchar(255), p varchar(181),
++ KEY t1 (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p));
++CREATE TABLE t1 (
++ a varchar(255), b varchar(255), c varchar(255), d varchar(255),
++ e varchar(255), f varchar(255), g varchar(255), h varchar(255),
++ i varchar(255), j varchar(255), k varchar(255), l varchar(255),
++ m varchar(255), n varchar(255), o varchar(255), p varchar(181));
+ --error 1071
+-ALTER TABLE t1 ADD INDEX t1 (a, b, c, d, e);
++ALTER TABLE t1 ADD INDEX t1 (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p);
++DROP TABLE t1;
++CREATE TABLE t1 (
++ a varchar(255), b varchar(255), c varchar(255), d varchar(255),
++ e varchar(255), f varchar(255), g varchar(255), h varchar(255),
++ i varchar(255), j varchar(255), k varchar(255), l varchar(255),
++ m varchar(255), n varchar(255), o varchar(255), p varchar(180),
++ KEY t1 (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p));
++DROP TABLE t1;
++CREATE TABLE t1 (
++ a varchar(255), b varchar(255), c varchar(255), d varchar(255),
++ e varchar(255), f varchar(255), g varchar(255), h varchar(255),
++ i varchar(255), j varchar(255), k varchar(255), l varchar(255),
++ m varchar(255), n varchar(255), o varchar(255), p varchar(180));
++ALTER TABLE t1 ADD INDEX t1 (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p);
+ DROP TABLE t1;
+
+ #
+@@ -1016,6 +1039,59 @@ SELECT DISTINCT length(c1), c1 FROM t1 W
+ SELECT DISTINCT COUNT(*) FROM t1 IGNORE INDEX (c1) WHERE c1 = '';
+ SELECT DISTINCT length(c1), c1 FROM t1 IGNORE INDEX (c1) WHERE c1 = '';
+ SELECT DISTINCT length(c1), c1 FROM t1 ORDER BY c1;
++DROP TABLE t1;
++
++#
++# Bug#4541 - "Specified key was too long; max key length is 1000 bytes"
++# with utf8
++# Raised limit for max key length from 1000 to 4005 bytes.
++# This is maximum without changing other limits (e.g. MI_MAX_KEY_BLOCK_LENGTH)
++#
++--error 1071
++CREATE TABLE t1 (
++ c1 VARCHAR(255) NOT NULL,
++ c2 VARCHAR(255) NOT NULL,
++ c3 VARCHAR(255) NOT NULL,
++ c4 VARCHAR(255) NOT NULL,
++ c5 VARCHAR(255) NOT NULL,
++ c6 VARCHAR(61),
++ KEY i1 (c1, c2, c3, c4, c5, c6)) DEFAULT CHARSET=UTF8;
++CREATE TABLE t1 (
++ c1 VARCHAR(255) NOT NULL,
++ c2 VARCHAR(255) NOT NULL,
++ c3 VARCHAR(255) NOT NULL,
++ c4 VARCHAR(255) NOT NULL,
++ c5 VARCHAR(255) NOT NULL,
++ c6 VARCHAR(60),
++ KEY i1 (c1, c2, c3, c4, c5, c6)) DEFAULT CHARSET=UTF8;
++INSERT INTO t1 VALUES
++ (REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++ REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '1')),
++ (REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++ REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '7')),
++ (REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++ REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '5')),
++ (REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++ REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '8')),
++ (REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++ REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '6')),
++ (REPEAT('0', 255), REPEAT('0', 255), REPEAT('0', 255),
++ REPEAT('0', 255), REPEAT('0', 255), CONCAT(REPEAT('M', 59), '5'));
++CHECK TABLE t1 EXTENDED;
++query_vertical OPTIMIZE TABLE t1;
++query_vertical SHOW CREATE TABLE t1;
++--replace_column 6 # 7 # 8 # 9 # 12 # 13 # 14 #
++query_vertical SHOW TABLE STATUS LIKE 't1';
++query_vertical SHOW INDEX FROM t1;
++query_vertical EXPLAIN SELECT SUBSTR(c6, 50) FROM t1
++ ORDER BY c1, c2, c3, c4, c5, c6;
++SELECT SUBSTR(c6, 50) FROM t1 ORDER BY c1, c2, c3, c4, c5, c6;
++DELETE FROM t1 WHERE c6 LIKE '%5' LIMIT 1;
++UPDATE t1 SET c6 = CONCAT(REPEAT('M', 59), '9') WHERE c6 LIKE '%1';
++SELECT SUBSTR(c6, 50) FROM t1 ORDER BY c1, c2, c3, c4, c5, c6;
++CHECK TABLE t1 EXTENDED;
++REPAIR TABLE t1 EXTENDED;
++CHECK TABLE t1 EXTENDED;
+ DROP TABLE t1;
+
+ --echo End of 4.1 tests
+diff -Nrup a/mysql-test/t/type_blob.test b/mysql-test/t/type_blob.test
+--- a/mysql-test/t/type_blob.test 2007-11-19 18:34:12 +01:00
++++ b/mysql-test/t/type_blob.test 2008-01-30 18:26:56 +01:00
+@@ -131,9 +131,15 @@ select c,count(*) from t1 group by c;
+ select d,count(*) from t1 group by d;
+ drop table t1;
+
++#
++# Limit raised to 4005 bytes by fix for Bug#4541. See myisam.test.
++#
+ -- error 1071
+-create table t1 (a text, unique (a(2100))); # should give an error
+-create table t1 (a text, key (a(2100))); # key is auto-truncated
++create table t1 (a text, unique (a(4006))); # should give an error
++create table t1 (a text, unique (a(4005))); # should give an error
++show create table t1;
++drop table t1;
++create table t1 (a text, key (a(4006))); # key is auto-truncated
+ show create table t1;
+ drop table t1;
+
+diff -Nrup a/sql/unireg.h b/sql/unireg.h
+--- a/sql/unireg.h 2007-08-02 22:57:41 +02:00
++++ b/sql/unireg.h 2008-01-30 18:26:56 +01:00
+@@ -49,7 +49,7 @@
+ #define MAX_SYS_VAR_LENGTH 32
+ #define MAX_KEY MAX_INDEXES /* Max used keys */
+ #define MAX_REF_PARTS 16 /* Max parts used as ref */
+-#define MAX_KEY_LENGTH 3072 /* max possible key */
++#define MAX_KEY_LENGTH 4005 /* myisamdef.h */ /* max possible key */
+ #if SIZEOF_OFF_T > 4
+ #define MAX_REFLENGTH 8 /* Max length for record ref */
+ #else
More information about the Pkg-mysql-commits
mailing list