Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
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 56f6dab the refactored function mtr_t::write() asserts by default that the page contents is being changed.
- Loading branch information
Showing
3 changed files
with
53 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| # | ||
| # MDEV-21259 Assertion 'w != NORMAL || mach_read_from_4(ptr) != val' | ||
| # failed in mtr_t::write(), btr_free_externally_stored_field() | ||
| # | ||
| 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; | ||
| InnoDB 0 transactions not purged | ||
| DROP TABLE t1; | ||
| SET GLOBAL innodb_compression_level = @level; | ||
| SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters