Skip to content
Permalink
Browse files
MDEV-18589 Assertion on info.page_size failed in xb_delta_open_matchi…
…ng_space

xb_read_delta_metadata(): For ROW_FORMAT=COMPRESSED tables, initialize
the info.zip_size with the physical page size and let info.page_size
remain the logical page size, like xb_delta_open_matching_space()
expects it to be ever since
commit 0a1c347 (MDEV-18493).
  • Loading branch information
dr-m committed Sep 14, 2022
1 parent 289105e commit 3e3cfa8
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 1 deletion.
@@ -2411,7 +2411,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) {
@@ -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;
@@ -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;

0 comments on commit 3e3cfa8

Please sign in to comment.