diff --git a/mysql-test/suite/versioning/r/online.result b/mysql-test/suite/versioning/r/online.result index d20b7444350..e78db22bd2c 100644 --- a/mysql-test/suite/versioning/r/online.result +++ b/mysql-test/suite/versioning/r/online.result @@ -143,5 +143,14 @@ create or replace table t1 (pk integer primary key, a int, b int, v int as (a)) with system versioning; alter table t1 force; alter table t1 drop column b; +# +# MDEV-18122 Assertion `table->versioned() == m_prebuilt->table->versioned()' failed in ha_innobase::open +# +create or replace table t1 ( +x int, +v int as (x) virtual, +y int +) with system versioning; +alter table t1 drop system versioning; drop database test; create database test; diff --git a/mysql-test/suite/versioning/t/online.test b/mysql-test/suite/versioning/t/online.test index edf592d3f14..02fde474d55 100644 --- a/mysql-test/suite/versioning/t/online.test +++ b/mysql-test/suite/versioning/t/online.test @@ -182,6 +182,15 @@ with system versioning; alter table t1 force; alter table t1 drop column b; +--echo # +--echo # MDEV-18122 Assertion `table->versioned() == m_prebuilt->table->versioned()' failed in ha_innobase::open +--echo # +create or replace table t1 ( + x int, + v int as (x) virtual, + y int +) with system versioning; +alter table t1 drop system versioning; drop database test; create database test; diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc index 108703142d6..a3e2349b10d 100644 --- a/storage/innobase/handler/handler0alter.cc +++ b/storage/innobase/handler/handler0alter.cc @@ -4234,7 +4234,8 @@ innobase_build_col_map( } col_map[old_i - num_old_v] = i; - if (old_table->versioned()) { + if (old_table->versioned() + && altered_table->versioned()) { if (old_i == old_table->vers_start) { new_table->vers_start = i + num_v; } else if (old_i == old_table->vers_end) {