I realized that commit 19d8e2308bc5 (and 5753d4ee320b before that) added a new output type to RelationGetIndexAttrBitmap but forgot to list its effect in the function's documenting comment. Here's a patch that updates it, making it more specific (and IMO more readable). I also add a comment to the enum definition, to remind people that the other one needs to be modified.
This ought to be backpatched to 16. -- Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/ "La conclusión que podemos sacar de esos estudios es que no podemos sacar ninguna conclusión de ellos" (Tanenbaum)
>From db07c83e4baa04146a4c8e5ebc663c7eb5cfaa10 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera <alvhe...@alvh.no-ip.org> Date: Wed, 12 Jul 2023 14:19:23 +0200 Subject: [PATCH 1/1] document RelationGetIndexAttrBitmap --- src/backend/utils/cache/relcache.c | 12 +++++++++--- src/include/utils/relcache.h | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 8a08463c2b7..2f3b580cb0d 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -5149,9 +5149,15 @@ RelationGetIndexPredicate(Relation relation) * simple index keys, but attributes used in expressions and partial-index * predicates.) * - * Depending on attrKind, a bitmap covering the attnums for all index columns, - * for all potential foreign key columns, or for all columns in the configured - * replica identity index is returned. + * Depending on attrKind, a bitmap covering attnums for certain columns is + * returned: + * INDEX_ATTR_BITMAP_KEY Columns in non-partial unique indexes not + * in expressions (i.e., usable for FKs) + * INDEX_ATTR_BITMAP_PRIMARY_KEY Columns in the table's primary key + * INDEX_ATTR_BITMAP_IDENTITY_KEY Columns in the table's replica identity + * index (empty if FULL) + * INDEX_ATTR_BITMAP_HOT_BLOCKING Columns that block updates from being HOT + * INDEX_ATTR_BITMAP_SUMMARIZED Columns included in summarizing indexes * * Attribute numbers are offset by FirstLowInvalidHeapAttributeNumber so that * we can include system attributes (e.g., OID) in the bitmap representation. diff --git a/src/include/utils/relcache.h b/src/include/utils/relcache.h index beeb28b83cb..1637ff7152b 100644 --- a/src/include/utils/relcache.h +++ b/src/include/utils/relcache.h @@ -54,6 +54,10 @@ extern List *RelationGetIndexPredicate(Relation relation); extern Datum *RelationGetIndexRawAttOptions(Relation indexrel); extern bytea **RelationGetIndexAttOptions(Relation relation, bool copy); +/* + * Possible set types returned by RelationGetIndexAttrBitmap. Update + * the comment atop that function if you modify this enum. + */ typedef enum IndexAttrBitmapKind { INDEX_ATTR_BITMAP_KEY, -- 2.39.2