mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-11 01:43:30 +02:00
Standardize on testing a hash index page's type by doing (opaque->hasho_flag & LH_PAGE_TYPE) == LH_xxx_PAGE Various places were taking shortcuts like opaque->hasho_flag & LH_BUCKET_PAGE which while not actually wrong, is still bad practice because it encourages use of opaque->hasho_flag & LH_UNUSED_PAGE which *is* wrong (LH_UNUSED_PAGE == 0, so the above is constant false). hash_xlog.c's hash_mask() contained such an incorrect test. This also ensures that we mask out the additional flag bits that hasho_flag has accreted since 9.6. pgstattuple's pgstat_hash_page(), for one, was failing to do that and was thus actively broken. Also fix assorted comments that hadn't been updated to reflect the extended usage of hasho_flag, and fix some macros that were testing just "(hasho_flag & bit)" to use the less dangerous, project-approved form "((hasho_flag & bit) != 0)". Coverity found the bug in hash_mask(); I noted the one in pgstat_hash_page() through code reading. |
||
---|---|---|
.. | ||
expected | ||
sql | ||
.gitignore | ||
brinfuncs.c | ||
btreefuncs.c | ||
fsmfuncs.c | ||
ginfuncs.c | ||
hashfuncs.c | ||
heapfuncs.c | ||
Makefile | ||
pageinspect--1.0--1.1.sql | ||
pageinspect--1.1--1.2.sql | ||
pageinspect--1.2--1.3.sql | ||
pageinspect--1.3--1.4.sql | ||
pageinspect--1.4--1.5.sql | ||
pageinspect--1.5--1.6.sql | ||
pageinspect--1.5.sql | ||
pageinspect--unpackaged--1.0.sql | ||
pageinspect.control | ||
pageinspect.h | ||
rawpage.c |