summaryrefslogtreecommitdiff
path: root/sql/handler.h
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2020-07-27 15:04:04 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2020-07-27 15:04:04 +0300
commitfd9ca2a742abe2e91b2b77e70915dec7bd3cd7e1 (patch)
treea1dd480724f4b4e8a4f359a456eb90c412e6e505 /sql/handler.h
parent4968fdbcef1c2d62ed525dffac153cf9f8eb1913 (diff)
downloadmariadb-git-fd9ca2a742abe2e91b2b77e70915dec7bd3cd7e1.tar.gz
MDEV-23295 ROW_FORMAT mismatch in instant ALTER TABLE
An instant ADD/DROP/reorder column could create a dummy table object with the wrong ROW_FORMAT when innodb_default_row_format was changed between CREATE TABLE and ALTER TABLE. prepare_inplace_alter_table_dict(): If we had promised that ALGORITHM=INPLACE is supported, we must preserve the ROW_FORMAT. dict_table_t::prepare_instant(): Add debug assertions to catch ROW_FORMAT mismatch. The rest of the changes are related to adding Alter_inplace_info::inplace_supported to cache the return value of handler::check_if_supported_inplace_alter().
Diffstat (limited to 'sql/handler.h')
-rw-r--r--sql/handler.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/sql/handler.h b/sql/handler.h
index 3757a3ab2f9..f4399ef0f5d 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -2440,6 +2440,9 @@ public:
/** true for online operation (LOCK=NONE) */
bool online;
+ /** which ALGORITHM and LOCK are supported by the storage engine */
+ enum_alter_inplace_result inplace_supported;
+
/**
Can be set by handler to describe why a given operation cannot be done
in-place (HA_ALTER_INPLACE_NOT_SUPPORTED) or why it cannot be done