diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2019-12-09 21:11:08 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2019-12-09 21:11:08 +0200 |
commit | d3b2625ba0c84e97ce508088b41cc33201929aa2 (patch) | |
tree | 7d7978a876ca4acf6a220c06ee400332901967cf /mysql-test/suite/innodb_zip/t/blob.test | |
parent | d30dbaa20d6fd5fae7027e8d69d8921037614ae2 (diff) | |
download | mariadb-git-d3b2625ba0c84e97ce508088b41cc33201929aa2.tar.gz |
MDEV-21259 Assertion failed in mtr_t::write()
btr_free_externally_stored_field(): Pass w=mtr_t::OPT to
note that the BTR_EXTERN_LEN is not necessarily changing
when a multi-page ROW_FORMAT=COMPRESSED off-page column
is being freed, and to allow redundant writes to the redo
log to be optimized away.
Ever since commit 56f6dab1d0e5a464ea49c1e5efb0032a0f5cea3e
the refactored function mtr_t::write() asserts by default
that the page contents is being changed.
Diffstat (limited to 'mysql-test/suite/innodb_zip/t/blob.test')
-rw-r--r-- | mysql-test/suite/innodb_zip/t/blob.test | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb_zip/t/blob.test b/mysql-test/suite/innodb_zip/t/blob.test new file mode 100644 index 00000000000..b85cf7313d0 --- /dev/null +++ b/mysql-test/suite/innodb_zip/t/blob.test @@ -0,0 +1,29 @@ +--source include/innodb_page_size_small.inc + +--echo # +--echo # MDEV-21259 Assertion 'w != NORMAL || mach_read_from_4(ptr) != val' +--echo # failed in mtr_t::write(), btr_free_externally_stored_field() +--echo # + +SET @saved_frequency = @@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; + +CREATE TABLE t1 (c TEXT, f2 INT PRIMARY KEY, f3 INT UNIQUE) +ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; + +SET @level= @@GLOBAL.innodb_compression_level; +SET GLOBAL innodb_compression_level=0; +--connect (prevent_purge,localhost,root) +START TRANSACTION WITH CONSISTENT SNAPSHOT; + +--connection default +INSERT INTO t1 VALUES('a',1,0); +UPDATE t1 SET c= REPEAT('a b ',4096); +REPLACE INTO t1 SELECT * FROM t1; + +--disconnect prevent_purge +--source ../../innodb/include/wait_all_purged.inc + +DROP TABLE t1; +SET GLOBAL innodb_compression_level = @level; +SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; |