summaryrefslogtreecommitdiff
path: root/storage/innobase/include
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2022-04-11 10:22:40 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2022-04-11 10:22:40 +0300
commit7bccf3dd744b6e85b69629c1e18730e77df503a2 (patch)
tree460960e03b04642b5ba382eccbd633f1bc739da1 /storage/innobase/include
parent5a4a37076db1f3a77a40c9636b96eef5625b3d81 (diff)
downloadmariadb-git-7bccf3dd744b6e85b69629c1e18730e77df503a2.tar.gz
MDEV-28274 Assertion s <= READ_FIX failed in buf_page_t::set_state
buf_page_t::set_state(): Relax a debug assertion. It is fine to update a read-fixed block descriptor to be both read-fixed and buffer-fixed. buf_pool_t::watch_unset(): Fix some incorrect logic that was implemented in commit e9e6db93550aee9e6567b94ab928da9b13050e98. Thanks to Elena Stepanova for the test case.
Diffstat (limited to 'storage/innobase/include')
-rw-r--r--storage/innobase/include/buf0buf.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/storage/innobase/include/buf0buf.h b/storage/innobase/include/buf0buf.h
index 7c372379ad3..9e341546c6a 100644
--- a/storage/innobase/include/buf0buf.h
+++ b/storage/innobase/include/buf0buf.h
@@ -2009,7 +2009,8 @@ inline void buf_page_t::set_state(uint32_t s)
{
mysql_mutex_assert_owner(&buf_pool.mutex);
ut_ad(s <= REMOVE_HASH || s >= UNFIXED);
- ut_ad(s <= READ_FIX);
+ ut_ad(s < WRITE_FIX);
+ ut_ad(s <= READ_FIX || zip.fix == READ_FIX);
zip.fix= s;
}