Skip to content

Commit ebddd86

Browse files
committed
MDEV-20565 Assertion failure on CHANGE COLUMN...SYSTEM VERSIONING
innobase_rename_or_enlarge_column_try(): Relax a debug assertion. The DATA_VERSIONED bits in dict_col_t::prtype do not affect the storage format.
1 parent 9bacc9d commit ebddd86

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

mysql-test/suite/innodb/r/instant_alter_bugs.result

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,3 +269,17 @@ ALTER TABLE t1 ADD COLUMN (b INT, c INT, d INT, e INT NOT NULL DEFAULT 0);
269269
ALTER TABLE t1 ADD UNIQUE INDEX(e);
270270
ALTER TABLE t1 DROP b, DROP c, DROP d, DROP e;
271271
DROP TABLE t1;
272+
#
273+
# MDEV-20565 Assertion on CHANGE COLUMN...SYSTEM VERSIONING
274+
#
275+
set @@system_versioning_alter_history = keep;
276+
CREATE TABLE t (a INT WITHOUT SYSTEM VERSIONING, b INT) ENGINE=InnoDB
277+
WITH SYSTEM VERSIONING;
278+
ALTER TABLE t CHANGE COLUMN a alpha INT WITH SYSTEM VERSIONING,
279+
ALGORITHM=INSTANT;
280+
DROP TABLE t;
281+
CREATE TABLE t (alpha INT, b INT) ENGINE=InnoDB WITH SYSTEM VERSIONING;
282+
ALTER TABLE t CHANGE COLUMN alpha a INT WITHOUT SYSTEM VERSIONING,
283+
ALGORITHM=INSTANT;
284+
DROP TABLE t;
285+
set @@system_versioning_alter_history = error;

mysql-test/suite/innodb/t/instant_alter_bugs.test

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,3 +277,19 @@ ALTER TABLE t1 ADD COLUMN (b INT, c INT, d INT, e INT NOT NULL DEFAULT 0);
277277
ALTER TABLE t1 ADD UNIQUE INDEX(e);
278278
ALTER TABLE t1 DROP b, DROP c, DROP d, DROP e;
279279
DROP TABLE t1;
280+
281+
--echo #
282+
--echo # MDEV-20565 Assertion on CHANGE COLUMN...SYSTEM VERSIONING
283+
--echo #
284+
set @@system_versioning_alter_history = keep;
285+
CREATE TABLE t (a INT WITHOUT SYSTEM VERSIONING, b INT) ENGINE=InnoDB
286+
WITH SYSTEM VERSIONING;
287+
ALTER TABLE t CHANGE COLUMN a alpha INT WITH SYSTEM VERSIONING,
288+
ALGORITHM=INSTANT;
289+
DROP TABLE t;
290+
291+
CREATE TABLE t (alpha INT, b INT) ENGINE=InnoDB WITH SYSTEM VERSIONING;
292+
ALTER TABLE t CHANGE COLUMN alpha a INT WITHOUT SYSTEM VERSIONING,
293+
ALGORITHM=INSTANT;
294+
DROP TABLE t;
295+
set @@system_versioning_alter_history = error;

storage/innobase/handler/handler0alter.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9139,7 +9139,7 @@ innobase_rename_or_enlarge_column_try(
91399139
case DATA_BLOB:
91409140
break;
91419141
default:
9142-
ut_ad(col->prtype == prtype);
9142+
ut_ad(!((col->prtype ^ prtype) & ~DATA_VERSIONED));
91439143
ut_ad(col->mtype == mtype);
91449144
ut_ad(col->len == len);
91459145
}

0 commit comments

Comments
 (0)