Commit 347e832a authored by unknown's avatar unknown
Browse files

Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt

into  magare.gmz:/home/kgeorge/mysql/autopush/B26794-5.0-opt


sql/field.cc:
  Auto merged
parents 4108ca96 a22f257e
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -826,3 +826,37 @@ create table t1 (t varchar(255) default null, key t (t(80)))
engine=myisam default charset=latin1;
alter table t1 change t t text;
drop table t1;
CREATE TABLE t1 (a varchar(500));
ALTER TABLE t1 ADD b GEOMETRY NOT NULL, ADD SPATIAL INDEX(b);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(500) default NULL,
  `b` geometry NOT NULL,
  SPATIAL KEY `b` (`b`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
ALTER TABLE t1 ADD KEY(b(50));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(500) default NULL,
  `b` geometry NOT NULL,
  SPATIAL KEY `b` (`b`),
  KEY `b_2` (`b`(50))
) ENGINE=MyISAM DEFAULT CHARSET=latin1
ALTER TABLE t1 ADD c POINT;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(500) default NULL,
  `b` geometry NOT NULL,
  `c` point default NULL,
  SPATIAL KEY `b` (`b`),
  KEY `b_2` (`b`(50))
) ENGINE=MyISAM DEFAULT CHARSET=latin1
CREATE TABLE t2 (a INT, KEY (a(20)));
ERROR HY000: Incorrect sub part key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique sub keys
ALTER TABLE t1 ADD d INT;
ALTER TABLE t1 ADD KEY (d(20));
ERROR HY000: Incorrect sub part key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique sub keys
DROP TABLE t1;
+2 −2
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ t1 CREATE TABLE `t1` (
  `fid` int(11) NOT NULL auto_increment,
  `g` geometry NOT NULL,
  PRIMARY KEY  (`fid`),
  SPATIAL KEY `g` (`g`(32))
  SPATIAL KEY `g` (`g`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(150 150, 150 150)'));
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(149 149, 151 151)'));
@@ -293,7 +293,7 @@ t2 CREATE TABLE `t2` (
  `fid` int(11) NOT NULL auto_increment,
  `g` geometry NOT NULL,
  PRIMARY KEY  (`fid`),
  SPATIAL KEY `g` (`g`(32))
  SPATIAL KEY `g` (`g`)
) ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=latin1
SELECT count(*) FROM t2;
count(*)
+23 −0
Original line number Diff line number Diff line
@@ -613,3 +613,26 @@ create table t1 (t varchar(255) default null, key t (t(80)))
engine=myisam default charset=latin1;
alter table t1 change t t text;
drop table t1;

#
# Bug #26794: Adding an index with a prefix on a SPATIAL type breaks ALTER
# TABLE
#
CREATE TABLE t1 (a varchar(500));

ALTER TABLE t1 ADD b GEOMETRY NOT NULL, ADD SPATIAL INDEX(b);
SHOW CREATE TABLE t1;
ALTER TABLE t1 ADD KEY(b(50));
SHOW CREATE TABLE t1;

ALTER TABLE t1 ADD c POINT;
SHOW CREATE TABLE t1;

--error ER_WRONG_SUB_KEY
CREATE TABLE t2 (a INT, KEY (a(20)));

ALTER TABLE t1 ADD d INT;
--error ER_WRONG_SUB_KEY
ALTER TABLE t1 ADD KEY (d(20));

DROP TABLE t1;
+1 −0
Original line number Diff line number Diff line
@@ -1011,6 +1011,7 @@ bool Field::type_can_have_key_part(enum enum_field_types type)
  case MYSQL_TYPE_BLOB:
  case MYSQL_TYPE_VAR_STRING:
  case MYSQL_TYPE_STRING:
  case MYSQL_TYPE_GEOMETRY:
    return TRUE;
  default:
    return FALSE;
+1 −1
Original line number Diff line number Diff line
@@ -992,7 +992,7 @@ store_create_info(THD *thd, TABLE_LIST *table_list, String *packet)
      if (key_part->field &&
          (key_part->length !=
           table->field[key_part->fieldnr-1]->key_length() &&
           !(key_info->flags & HA_FULLTEXT)))
           !(key_info->flags & (HA_FULLTEXT | HA_SPATIAL))))
      {
        buff[0] = '(';
        char* end=int10_to_str((long) key_part->length /
Loading