Commit d9210613 authored by unknown's avatar unknown
Browse files

Merge magare.gmz:/home/kgeorge/mysql/work/B26794-5.0-opt

into  magare.gmz:/home/kgeorge/mysql/work/B26794-5.1-opt


mysql-test/r/gis-rtree.result:
  Auto merged
sql/field.cc:
  Auto merged
sql/sql_show.cc:
  Auto merged
sql/sql_table.cc:
  Auto merged
mysql-test/r/alter_table.result:
  tests merge
mysql-test/t/alter_table.test:
  tests merge
parents 4ce3624e bd6aecf3
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -881,6 +881,40 @@ 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;
CREATE TABLE t1 (s CHAR(8) BINARY);
INSERT INTO t1 VALUES ('test');
SELECT LENGTH(s) FROM 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
@@ -641,6 +641,29 @@ 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;

#
# Bug#18038  MySQL server corrupts binary columns data
#
+1 −0
Original line number Diff line number Diff line
@@ -1015,6 +1015,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
@@ -1221,7 +1221,7 @@ int 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))))
      {
        char *end;
        buff[0] = '(';
Loading