summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThirunarayanan Balathandayuthapani <thiru@mariadb.com>2019-01-29 12:48:52 +0530
committerThirunarayanan Balathandayuthapani <thiru@mariadb.com>2019-01-29 12:48:52 +0530
commite39fc75241e8a53a1cd6ab5a9a9eb5906ac1e92c (patch)
tree2e41d0e26bb2b4884c14fcf2ba67e21b75d64689
parent322301e24349b501fffbec2d66c2ba2374aac411 (diff)
downloadmariadb-git-bb-10.2-MDEV-16849.tar.gz
MDEV-16849 Extending indexed VARCHAR column should be instantaneousbb-10.2-MDEV-16849
- Addressed Serg's review comments again. - If column length is decreased then the table will be rebuild. So removed the un-necessary index id comparison to avoid confusion in test case. - Set the column index length flag if only index length is increased.
-rw-r--r--mysql-test/suite/innodb/r/alter_varchar_change.result11
-rw-r--r--mysql-test/suite/innodb/t/alter_varchar_change.test4
-rw-r--r--sql/sql_table.cc2
3 files changed, 5 insertions, 12 deletions
diff --git a/mysql-test/suite/innodb/r/alter_varchar_change.result b/mysql-test/suite/innodb/r/alter_varchar_change.result
index 2f412aecbf1..0b06fddd35e 100644
--- a/mysql-test/suite/innodb/r/alter_varchar_change.result
+++ b/mysql-test/suite/innodb/r/alter_varchar_change.result
@@ -319,20 +319,18 @@ f2 VARCHAR(100),
INDEX idx(f2(10)),
INDEX idx1(f1))ENGINE=InnoDB;
CALL get_table_id("test/t1", @tbl_id);
-ALTER TABLE t1 MODIFY f2 VARCHAR(50), DROP INDEX idx1;
+ALTER TABLE t1 MODIFY f2 VARCHAR(50);
CALL get_table_id("test/t1", @tbl1_id);
SELECT @tbl1_id = @tbl_id;
@tbl1_id = @tbl_id
0
-SELECT @idx1_id = @idx_id;
-@idx1_id = @idx_id
-0
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`f1` int(11) NOT NULL,
`f2` varchar(50) DEFAULT NULL,
- KEY `idx` (`f2`(10))
+ KEY `idx` (`f2`(10)),
+ KEY `idx1` (`f1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1(f1 INT NOT NULL,
@@ -345,9 +343,6 @@ CALL get_table_id("test/t1", @tbl1_id);
SELECT @tbl1_id = @tbl_id;
@tbl1_id = @tbl_id
0
-SELECT @idx1_id = @idx_id;
-@idx1_id = @idx_id
-0
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
diff --git a/mysql-test/suite/innodb/t/alter_varchar_change.test b/mysql-test/suite/innodb/t/alter_varchar_change.test
index 508ebbabf32..f435125e581 100644
--- a/mysql-test/suite/innodb/t/alter_varchar_change.test
+++ b/mysql-test/suite/innodb/t/alter_varchar_change.test
@@ -236,11 +236,10 @@ CREATE TABLE t1(f1 INT NOT NULL,
INDEX idx1(f1))ENGINE=InnoDB;
CALL get_table_id("test/t1", @tbl_id);
-ALTER TABLE t1 MODIFY f2 VARCHAR(50), DROP INDEX idx1;
+ALTER TABLE t1 MODIFY f2 VARCHAR(50);
CALL get_table_id("test/t1", @tbl1_id);
SELECT @tbl1_id = @tbl_id;
-SELECT @idx1_id = @idx_id;
SHOW CREATE TABLE t1;
DROP TABLE t1;
@@ -254,7 +253,6 @@ ALTER TABLE t1 MODIFY f2 VARCHAR(5), DROP INDEX idx1;
CALL get_table_id("test/t1", @tbl1_id);
SELECT @tbl1_id = @tbl_id;
-SELECT @idx1_id = @idx_id;
SHOW CREATE TABLE t1;
DROP TABLE t1;
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 7eca33812b9..3673a373931 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -6708,7 +6708,7 @@ static bool fill_alter_inplace_info(THD *thd,
}
if (key_part->length == old_field_len &&
- key_part->length <= new_part->length &&
+ key_part->length < new_part->length &&
(key_part->field->is_equal((Create_field*) new_field)
== IS_EQUAL_PACK_LENGTH))
{