Skip to content
Permalink
Browse files
MDEV-26577 InnoDB: Failing assertion: dict_tf2_is_valid(flags, flags2…
…) during ADD COLUMN

prepare_inplace_alter_table_dict(): If the table will not be rebuilt,
preserve all of the original ROW_FORMAT, including the compressed
page size flags related to ROW_FORMAT=COMPRESSED.
  • Loading branch information
dr-m committed Jun 27, 2022
1 parent a75ad73 commit f339ef3
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 0 deletions.
@@ -0,0 +1,9 @@
#
# MDEV-26577 InnoDB: Failing assertion: dict_tf2_is_valid(flags, flags2)
# during ADD COLUMN
#
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
CREATE TABLE t2(a INT PRIMARY KEY) ENGINE=InnoDB;
FLUSH TABLES;
ALTER TABLE t2 ADD COLUMN b INT;
DROP TABLE t1,t2;
@@ -0,0 +1,16 @@
--source include/have_innodb.inc
--source include/innodb_row_format.inc

--echo #
--echo # MDEV-26577 InnoDB: Failing assertion: dict_tf2_is_valid(flags, flags2)
--echo # during ADD COLUMN
--echo #

CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
CREATE TABLE t2(a INT PRIMARY KEY) ENGINE=InnoDB;
FLUSH TABLES;
--let $datadir=`select @@datadir`
--remove_file $datadir/test/t2.frm
--copy_file $datadir/test/t1.frm $datadir/test/t2.frm
ALTER TABLE t2 ADD COLUMN b INT;
DROP TABLE t1,t2;
@@ -5012,8 +5012,10 @@ prepare_inplace_alter_table_dict(
/* If we promised ALGORITHM=NOCOPY or ALGORITHM=INSTANT,
we must retain the original ROW_FORMAT of the table. */
flags = (user_table->flags & (DICT_TF_MASK_COMPACT
| DICT_TF_MASK_ZIP_SSIZE
| DICT_TF_MASK_ATOMIC_BLOBS))
| (flags & ~(DICT_TF_MASK_COMPACT
| DICT_TF_MASK_ZIP_SSIZE
| DICT_TF_MASK_ATOMIC_BLOBS));
}

0 comments on commit f339ef3

Please sign in to comment.