pg.ddx.io pgsql-hackers@postgresql.org mailing list archive
help / color / mirror / Atom feed From: Japin Li <japinli@hotmail.com>
Subject: [PATCH v3] Add IS_INDEX macro to brin and gist index
Date: Wed, 14 Jan 2026 09:55:46 +0800
This commit also moves IS_INDEX macro to pageinspect.h
Suggested-by: Japin Li <japinli@hotmail.com>
Suggested-by: Andrey Borodin <x4mmm@yandex-team.ru>
Reviewed-by: Andreas Karlsson <andreas@proxel.se>
Reviewed-by: Kirill Reshke <reshkekirill@gmail.com>
Discussion: https://postgr.es/m/MEAPR01MB3031A889D4B3F610E9D2A3AFB68FA@MEAPR01MB3031.ausprd01.prod.outlook.com
Discussion: https://postgr.es/m/BFCA6110-EC97-4569-917A-747A72F62CE8@yandex-team.ru
---
contrib/pageinspect/brinfuncs.c | 2 +-
contrib/pageinspect/btreefuncs.c | 7 +++----
contrib/pageinspect/gistfuncs.c | 2 +-
contrib/pageinspect/hashfuncs.c | 5 ++---
contrib/pageinspect/pageinspect.h | 2 ++
5 files changed, 9 insertions(+), 9 deletions(-)
inline patch 1: contrib/pageinspect/brinfuncs.c, contrib/pageinspect/btreefuncs.c, contrib/pageinspect/gistfuncs.c and 2 more (+9/-9 lines) download inline-1.patch diff --git a/contrib/pageinspect/brinfuncs.c b/contrib/pageinspect/brinfuncs.c
index 26cf78252ed..a1cbd9fa040 100644
--- a/contrib/pageinspect/brinfuncs.c
+++ b/contrib/pageinspect/brinfuncs.c
@@ -28,7 +28,7 @@ PG_FUNCTION_INFO_V1(brin_page_items);
PG_FUNCTION_INFO_V1(brin_metapage_info);
PG_FUNCTION_INFO_V1(brin_revmap_data);
-#define IS_BRIN(r) ((r)->rd_rel->relam == BRIN_AM_OID)
+#define IS_BRIN(r) (IS_INDEX(r) && (r)->rd_rel->relam == BRIN_AM_OID)
typedef struct brin_column_state
{
diff --git a/contrib/pageinspect/btreefuncs.c b/contrib/pageinspect/btreefuncs.c
index 0585b7cee40..a49a9beee68 100644
--- a/contrib/pageinspect/btreefuncs.c
+++ b/contrib/pageinspect/btreefuncs.c
@@ -49,8 +49,7 @@ PG_FUNCTION_INFO_V1(bt_page_stats_1_9);
PG_FUNCTION_INFO_V1(bt_page_stats);
PG_FUNCTION_INFO_V1(bt_multi_page_stats);
-#define IS_INDEX(r) ((r)->rd_rel->relkind == RELKIND_INDEX)
-#define IS_BTREE(r) ((r)->rd_rel->relam == BTREE_AM_OID)
+#define IS_BTREE(r) (IS_INDEX(r) && (r)->rd_rel->relam == BTREE_AM_OID)
/* ------------------------------------------------
* structure for single btree page statistics
@@ -225,7 +224,7 @@ check_relation_block_range(Relation rel, int64 blkno)
static void
bt_index_block_validate(Relation rel, int64 blkno)
{
- if (!IS_INDEX(rel) || !IS_BTREE(rel))
+ if (!IS_BTREE(rel))
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
errmsg("\"%s\" is not a %s index",
@@ -858,7 +857,7 @@ bt_metap(PG_FUNCTION_ARGS)
relrv = makeRangeVarFromNameList(textToQualifiedNameList(relname));
rel = relation_openrv(relrv, AccessShareLock);
- if (!IS_INDEX(rel) || !IS_BTREE(rel))
+ if (!IS_BTREE(rel))
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
errmsg("\"%s\" is not a %s index",
diff --git a/contrib/pageinspect/gistfuncs.c b/contrib/pageinspect/gistfuncs.c
index a205cb8a334..88776b04d5d 100644
--- a/contrib/pageinspect/gistfuncs.c
+++ b/contrib/pageinspect/gistfuncs.c
@@ -30,7 +30,7 @@ PG_FUNCTION_INFO_V1(gist_page_opaque_info);
PG_FUNCTION_INFO_V1(gist_page_items);
PG_FUNCTION_INFO_V1(gist_page_items_bytea);
-#define IS_GIST(r) ((r)->rd_rel->relam == GIST_AM_OID)
+#define IS_GIST(r) (IS_INDEX(r) && (r)->rd_rel->relam == GIST_AM_OID)
static Page verify_gist_page(bytea *raw_page);
diff --git a/contrib/pageinspect/hashfuncs.c b/contrib/pageinspect/hashfuncs.c
index 7fc97d043ce..86e73b36b41 100644
--- a/contrib/pageinspect/hashfuncs.c
+++ b/contrib/pageinspect/hashfuncs.c
@@ -28,8 +28,7 @@ PG_FUNCTION_INFO_V1(hash_page_items);
PG_FUNCTION_INFO_V1(hash_bitmap_info);
PG_FUNCTION_INFO_V1(hash_metapage_info);
-#define IS_INDEX(r) ((r)->rd_rel->relkind == RELKIND_INDEX)
-#define IS_HASH(r) ((r)->rd_rel->relam == HASH_AM_OID)
+#define IS_HASH(r) (IS_INDEX(r) && (r)->rd_rel->relam == HASH_AM_OID)
/* ------------------------------------------------
* structure for single hash page statistics
@@ -421,7 +420,7 @@ hash_bitmap_info(PG_FUNCTION_ARGS)
*/
indexRel = relation_open(indexRelid, AccessShareLock);
- if (!IS_INDEX(indexRel) || !IS_HASH(indexRel))
+ if (!IS_HASH(indexRel))
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
errmsg("\"%s\" is not a %s index",
diff --git a/contrib/pageinspect/pageinspect.h b/contrib/pageinspect/pageinspect.h
index b241fdc97b2..7d472dc784f 100644
--- a/contrib/pageinspect/pageinspect.h
+++ b/contrib/pageinspect/pageinspect.h
@@ -15,6 +15,8 @@
#include "storage/bufpage.h"
+#define IS_INDEX(r) ((r)->rd_rel->relkind == RELKIND_INDEX)
+
/*
* Extension version number, for supporting older extension versions' objects
*/
--
2.43.0
--=-=-=--
Message-ID: <no-message-id-1836044@localhost>
Permalink: ../no-message-id-1836044@localhost/
Also on: postgresql.org/message-id/no-message-id-1836044@localhost
copy link · copy postgr.es · copy git am
reply Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: japinli@hotmail.com
Subject: Re: [PATCH v3] Add IS_INDEX macro to brin and gist index
In-Reply-To: <no-message-id-1836044@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox