Skip to content
Permalink
Browse files
MDEV-18790 Server crash in fields_in_hash_keyinfo after unsuccessful...
attempt to drop BLOB with long index

Restore long table->key_info, So that in the case of unsuccessful table
alter table->key_info should have a correct value. In the case of successful
table alter old table is flushed so that is why we don't see this error in
the case of successful alter.
  • Loading branch information
mariadb-SachinSetiya authored and SachinSetiya committed Mar 13, 2019
1 parent 3568427 commit f9f625f
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 0 deletions.
@@ -57,3 +57,9 @@ create table t (b blob, unique(b)) engine=myisam;
insert into t values ('foo');
replace into t values ('foo');
drop table t;
CREATE TABLE t1 (f INT, x BLOB, UNIQUE (x));
INSERT INTO t1 VALUES (1,'foo');
ALTER TABLE t1 DROP x, ALGORITHM=INPLACE;
ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY
UPDATE t1 SET x = 'bar';
DROP TABLE t1;
@@ -72,3 +72,13 @@ create table t (b blob, unique(b)) engine=myisam;
insert into t values ('foo');
replace into t values ('foo');
drop table t;

#
# MDEV-18790 Server crash in fields_in_hash_keyinfo after unsuccessful attempt to drop BLOB with long index
#
CREATE TABLE t1 (f INT, x BLOB, UNIQUE (x));
INSERT INTO t1 VALUES (1,'foo');
--error ER_ALTER_OPERATION_NOT_SUPPORTED
ALTER TABLE t1 DROP x, ALGORITHM=INPLACE;
UPDATE t1 SET x = 'bar';
DROP TABLE t1;
@@ -8476,6 +8476,8 @@ mysql_prepare_alter_table(THD *thd, TABLE *table,
&key_parts, key_info->option_list, DDL_options());
new_key_list.push_back(key, thd->mem_root);
}
if (key_info->algorithm == HA_KEY_ALG_LONG_HASH)
re_setup_keyinfo_hash(key_info);
}
{
Key *key;

0 comments on commit f9f625f

Please sign in to comment.