diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2018-11-26 16:41:53 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2018-11-26 16:42:44 +0200 |
commit | 8fe34dd45f39b22ae0134532b5b5247e4e8620fe (patch) | |
tree | 73c745cd0149771d9d3043f3f9dd5363cc90182f /storage | |
parent | 4447a02cf13a49876001a40ca7db8fdedb731fd5 (diff) | |
download | mariadb-git-8fe34dd45f39b22ae0134532b5b5247e4e8620fe.tar.gz |
MDEV-17831 Assertion `supports_instant()' failed in dict_table_t::prepare_instant upon ADD COLUMN on table with KEY_BLOCK_SIZE
dict_table_t::prepare_instant(): Remove too strict assertions that
could fail if the MariaDB and InnoDB data dictionaries are out of sync.
That the dictionaries got out of sync during TRUNCATE TABLE
is a separate bug was fixed in 10.2 by
commit 971e1d8677be58cd51e558ef80042c76a5c21e1a.
Diffstat (limited to 'storage')
-rw-r--r-- | storage/innobase/handler/handler0alter.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc index 253f9c40323..2c36de1dad6 100644 --- a/storage/innobase/handler/handler0alter.cc +++ b/storage/innobase/handler/handler0alter.cc @@ -172,9 +172,12 @@ inline void dict_table_t::prepare_instant(const dict_table_t& old, DBUG_ASSERT(n_dropped() == 0); DBUG_ASSERT(old.n_cols == old.n_def); DBUG_ASSERT(n_cols == n_def); - DBUG_ASSERT(old.not_redundant() == not_redundant()); DBUG_ASSERT(old.supports_instant()); - DBUG_ASSERT(supports_instant()); + /* supports_instant() does not necessarily hold here, + in case ROW_FORMAT=COMPRESSED according to the + MariaDB data dictionary, and ALTER_OPTIONS was not set. + If that is the case, the instant ALTER TABLE would keep + the InnoDB table in its current format. */ dict_index_t& oindex = *old.indexes.start; dict_index_t& index = *indexes.start; |