2824 Georgi Kodinov 2008-09-04
reverted the push(es) of bug 26180 as they're causing problems in pushbuild.
modified:
mysql-test/r/ctype_utf8.result
mysql-test/t/ctype_utf8.test
sql/sql_table.cc
2823 Alexander Barkov 2008-09-04
Postfix for bug#26180 Can't add columns to tables created with utf8 (regular) text indexes
The original patch broke "fulltext" test.
modified:
sql/sql_table.cc
=== modified file 'mysql-test/r/ctype_utf8.result'
--- a/mysql-test/r/ctype_utf8.result 2008-09-03 12:22:55 +0000
+++ b/mysql-test/r/ctype_utf8.result 2008-09-04 08:47:10 +0000
@@ -2402,23 +2402,6 @@ b
c
drop table t1;
set max_sort_length=default;
-CREATE TABLE t1 (
-clipid INT NOT NULL,
-Tape TINYTEXT,
-PRIMARY KEY (clipid),
-KEY tape(Tape(255))
-) CHARACTER SET=utf8;
-ALTER TABLE t1 ADD mos TINYINT DEFAULT 0 AFTER clipid;
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `clipid` int(11) NOT NULL,
- `mos` tinyint(4) DEFAULT '0',
- `Tape` tinytext,
- PRIMARY KEY (`clipid`),
- KEY `tape` (`Tape`(255))
-) ENGINE=MyISAM DEFAULT CHARSET=utf8
-DROP TABLE t1;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
predicted_order int NOT NULL,
=== modified file 'mysql-test/t/ctype_utf8.test'
--- a/mysql-test/t/ctype_utf8.test 2008-09-03 12:22:55 +0000
+++ b/mysql-test/t/ctype_utf8.test 2008-09-04 08:47:10 +0000
@@ -1524,19 +1524,6 @@ drop table t1;
set max_sort_length=default;
#
-# Bug#26180: Can't add columns to tables created with utf8 text indexes
-#
-CREATE TABLE t1 (
- clipid INT NOT NULL,
- Tape TINYTEXT,
- PRIMARY KEY (clipid),
- KEY tape(Tape(255))
-) CHARACTER SET=utf8;
-ALTER TABLE t1 ADD mos TINYINT DEFAULT 0 AFTER clipid;
-SHOW CREATE TABLE t1;
-DROP TABLE t1;
-
-#
# Bug#26474: Add Sinhala script (Sri Lanka) collation to MySQL
#
--disable_warnings
=== modified file 'sql/sql_table.cc'
--- a/sql/sql_table.cc 2008-09-04 03:24:41 +0000
+++ b/sql/sql_table.cc 2008-09-04 08:47:10 +0000
@@ -5905,35 +5905,6 @@ mysql_fast_or_online_alter_table(THD *th
/**
- maximum possible length for certain blob types.
-
- @param[in] type Blob type (e.g. MYSQL_TYPE_TINY_BLOB)
-
- @return
- length
-*/
-
-static uint
-blob_length_by_type(enum_field_types type)
-{
- switch (type)
- {
- case MYSQL_TYPE_TINY_BLOB:
- return 255;
- case MYSQL_TYPE_BLOB:
- return 65535;
- case MYSQL_TYPE_MEDIUM_BLOB:
- return 16777215;
- case MYSQL_TYPE_LONG_BLOB:
- return 4294967295U;
- default:
- DBUG_ASSERT(0); // we should never go here
- return 0;
- }
-}
-
-
-/**
Prepare column and key definitions for CREATE TABLE in ALTER TABLE.
This function transforms parse output of ALTER TABLE - lists of
@@ -6238,14 +6209,6 @@ mysql_prepare_alter_table(THD *thd, TABL
BLOBs may have cfield->length == 0, which is why we test it before
checking whether cfield->length < key_part_length (in chars).
-
- In case of TEXTs we check the data type maximum length *in bytes*
- to key part length measured *in characters* (i.e. key_part_length
- devided to mbmaxlen). This is because it's OK to have:
- CREATE TABLE t1 (a tinytext, key(a(254)) character set utf8);
- In case of this example:
- - data type maximum length is 255.
- - key_part_length is 1016 (=254*4, where 4 is mbmaxlen)
*/
if (!Field::type_can_have_key_part(cfield->field->type()) ||
!Field::type_can_have_key_part(cfield->sql_type) ||
@@ -6253,11 +6216,8 @@ mysql_prepare_alter_table(THD *thd, TABL
(key_info->flags & HA_SPATIAL) ||
(cfield->field->field_length == key_part_length &&
!f_is_blob(key_part->key_type)) ||
- (cfield->length && (((cfield->sql_type >= MYSQL_TYPE_TINY_BLOB &&
- cfield->sql_type <= MYSQL_TYPE_BLOB) ?
- blob_length_by_type(cfield->sql_type) :
- cfield->length) <
- key_part_length / key_part->field->charset()->mbmaxlen)))
+ (cfield->length && (cfield->length < key_part_length /
+ key_part->field->charset()->mbmaxlen)))
key_part_length= 0; // Use whole field
}
key_part_length /= key_part->field->charset()->mbmaxlen;
| Thread |
|---|
| • bzr push into mysql-6.0 branch (kgeorge:2823 to 2824) | Georgi Kodinov | 4 Sep |