diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index 2c4da11c860..03b8a1d3ea5 100644 --- a/extra/mariabackup/xtrabackup.cc +++ b/extra/mariabackup/xtrabackup.cc @@ -2364,7 +2364,8 @@ xb_read_delta_metadata(const char *filepath, xb_delta_info_t *info) msg("page_size is required in %s", filepath); r = FALSE; } else { - info->page_size = zip_size ? zip_size : page_size; + info->page_size = page_size; + info->zip_size = zip_size; } if (info->space_id == ULINT_UNDEFINED) { diff --git a/mysql-test/suite/mariabackup/incremental_compressed.result b/mysql-test/suite/mariabackup/incremental_compressed.result new file mode 100644 index 00000000000..f8b01808642 --- /dev/null +++ b/mysql-test/suite/mariabackup/incremental_compressed.result @@ -0,0 +1,18 @@ +# +# MDEV-18589 Assertion ...physical_size(flags) == info.page_size +# failed in xb_delta_open_matching_space +# +CREATE TABLE t (pk INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; +ALTER TABLE t PARTITION BY KEY(pk); +# shutdown server +# remove datadir +# xtrabackup move back +# restart +SHOW CREATE TABLE t; +Table Create Table +t CREATE TABLE `t` ( + `pk` int(11) NOT NULL, + PRIMARY KEY (`pk`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=COMPRESSED + PARTITION BY KEY (`pk`) +DROP TABLE t; diff --git a/mysql-test/suite/mariabackup/incremental_compressed.test b/mysql-test/suite/mariabackup/incremental_compressed.test new file mode 100644 index 00000000000..32607d57174 --- /dev/null +++ b/mysql-test/suite/mariabackup/incremental_compressed.test @@ -0,0 +1,26 @@ +--source include/have_innodb.inc +--source include/have_partition.inc + +let $basedir=$MYSQLTEST_VARDIR/tmp/backup; +let $incremental_dir=$MYSQLTEST_VARDIR/tmp/backup_inc1; + +--echo # +--echo # MDEV-18589 Assertion ...physical_size(flags) == info.page_size +--echo # failed in xb_delta_open_matching_space +--echo # + +CREATE TABLE t (pk INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; + +--exec $XTRABACKUP --backup --target-dir=$basedir --protocol=tcp --port=$MASTER_MYPORT --user=root + +ALTER TABLE t PARTITION BY KEY(pk); + +--exec $XTRABACKUP --backup --target-dir=$incremental_dir --incremental-basedir=$basedir --protocol=tcp --port=$MASTER_MYPORT --user=root > $incremental_dir.log 2>&1 +--exec $XTRABACKUP --prepare --target-dir=$basedir --user=root > $MYSQL_TMP_DIR/backup_prepare_0.log 2>&1 +--exec $XTRABACKUP --prepare --target-dir=$basedir --incremental-dir=$incremental_dir --user=root > $MYSQL_TMP_DIR/backup_prepare_1.log +--cat_file $MYSQL_TMP_DIR/backup_prepare_1.log +let $targetdir=$basedir; +-- source include/restart_and_restore.inc + +SHOW CREATE TABLE t; +DROP TABLE t;