mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
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.
This commit is contained in:
committed by
sachinsetia1001@gmail.com
parent
3568427d11
commit
f9f625fb43
@ -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;
|
||||
|
Reference in New Issue
Block a user