pgsql: Clean up manipulations of hash indexes' hasho_flag field.
Hackorum builds and tests every patch posted to the lists, not only commitfest submissions. This is Hackorum's own CI rather than the PostgreSQL project's, and it is still under testing - please report anything that looks wrong.
Clean up manipulations of hash indexes' hasho_flag field.
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.
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/2040bb4a0b50ef0434a1a723f00d040ab4f1c06f
Modified Files
--------------
contrib/pageinspect/hashfuncs.c | 12 +++++++-----
contrib/pgstattuple/pgstattuple.c | 2 +-
src/backend/access/hash/hash_xlog.c | 8 +++++---
src/backend/access/hash/hashovfl.c | 2 +-
src/backend/access/hash/hashutil.c | 4 ++--
src/include/access/hash.h | 26 +++++++++++++-------------
6 files changed, 29 insertions(+), 25 deletions(-)
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
On Sat, Apr 15, 2017 at 2:34 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Clean up manipulations of hash indexes' hasho_flag field.
Attached patch to fix one remaining cleanup for the hasho_flag field.
--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com
Attachments:
change_usage_hashho_flag.patchapplication/octet-stream; name=change_usage_hashho_flag.patchDownload+1-1
Amit Kapila <amit.kapila16@gmail.com> writes:
Attached patch to fix one remaining cleanup for the hasho_flag field.
Pushed, thanks.
regards, tom lane
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers