Assert only valid flag bits are passed to visibilitymap_set()
If visibilitymap_set() is called with flags containing a higher bit than VISIBILITYMAP_ALL_FROZEN, the state of neighboring pages is affected. While there was an assertion that *some* valid bits were set, it did not check that *only* valid bits were. Change that. Discussion: https://postgr.es/m/20230331043300.gux3s5wzrapqi4oe@awork3.anarazel.de
This commit is contained in:
parent
14f98e0af9
commit
a88a18b125
@ -259,9 +259,9 @@ visibilitymap_set(Relation rel, BlockNumber heapBlk, Buffer heapBuf,
|
||||
|
||||
Assert(InRecovery || XLogRecPtrIsInvalid(recptr));
|
||||
Assert(InRecovery || PageIsAllVisible((Page) BufferGetPage(heapBuf)));
|
||||
Assert((flags & VISIBILITYMAP_VALID_BITS) == flags);
|
||||
|
||||
/* Must never set all_frozen bit without also setting all_visible bit */
|
||||
Assert(flags & VISIBILITYMAP_VALID_BITS);
|
||||
Assert(flags != VISIBILITYMAP_ALL_FROZEN);
|
||||
|
||||
/* Check that we have the right heap page pinned, if present */
|
||||
|
Loading…
x
Reference in New Issue
Block a user