Assert that buffers are marked dirty before XLogRegisterBuffer().
authorJeff Davis <[email protected]>
Tue, 24 Oct 2023 00:17:46 +0000 (17:17 -0700)
committerJeff Davis <[email protected]>
Tue, 24 Oct 2023 00:17:46 +0000 (17:17 -0700)
commit00d7fb5e2e39198387ae00af8dd18b787b6a4d63
treef22d1985878091acbf82af156b0f4c5ca0ce4a73
parentbefe9451fbf5a4b49e80f17917d8c6d8b5edad26
Assert that buffers are marked dirty before XLogRegisterBuffer().

Enforce the rule from transam/README in XLogRegisterBuffer(), and
update callers to follow the rule.

Hash indexes sometimes register clean pages as a part of the locking
protocol, so provide a REGBUF_NO_CHANGE flag to support that use.

Discussion: https://postgr.es/m/c84114f8-c7f1-5b57-f85a-3adc31e1a904@iki.fi
Reviewed-by: Heikki Linnakangas
src/backend/access/gin/ginbtree.c
src/backend/access/gin/gindatapage.c
src/backend/access/gin/ginentrypage.c
src/backend/access/gin/ginfast.c
src/backend/access/hash/hash.c
src/backend/access/hash/hashovfl.c
src/backend/access/transam/xloginsert.c
src/backend/storage/buffer/bufmgr.c
src/include/access/xloginsert.h
src/include/storage/bufmgr.h