From 225d1df1d299061498182714d207fae77436702c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Herrera?= Date: Mon, 12 Jan 2026 18:09:36 +0100 Subject: [PATCH] Stop including {brin,gin}_tuple.h in tuplesort.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Doing this meant that those two headers, which are supposed to be internal to their corresponding index AMs, were being included pretty much universally, because tuplesort.h is included by execnodes.h which is very widely used. Stop that, and fix fallout. We also change indexing.h to no longer include execnodes.h (tuptable.h is sufficient), and relscan.h to no longer include buf.h (pointless since c2fe139c201c). Author: Mario González Discussion: https://postgr.es/m/CAFsReFUcBFup=Ohv_xd7SNQ=e73TXi8YNEkTsFEE2BW7jS1noQ@mail.gmail.com --- contrib/pageinspect/gistfuncs.c | 1 + src/backend/access/gin/gininsert.c | 3 ++- src/backend/catalog/pg_attrdef.c | 1 + src/backend/catalog/pg_largeobject.c | 1 + src/backend/commands/collationcmds.c | 1 + src/backend/commands/user.c | 1 + src/backend/executor/execReplication.c | 1 + src/backend/parser/parse_expr.c | 1 + src/backend/replication/logical/relation.c | 1 + src/backend/replication/logical/sequencesync.c | 1 + src/backend/statistics/stat_utils.c | 1 + src/include/access/relscan.h | 1 - src/include/catalog/indexing.h | 2 +- src/include/nodes/execnodes.h | 2 ++ src/include/utils/tuplesort.h | 5 +++-- 15 files changed, 18 insertions(+), 5 deletions(-) diff --git a/contrib/pageinspect/gistfuncs.c b/contrib/pageinspect/gistfuncs.c index 60a4b240302..e7759488c36 100644 --- a/contrib/pageinspect/gistfuncs.c +++ b/contrib/pageinspect/gistfuncs.c @@ -9,6 +9,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/gist.h" #include "access/htup.h" #include "access/htup_details.h" diff --git a/src/backend/access/gin/gininsert.c b/src/backend/access/gin/gininsert.c index c08ea927ac5..0d63fb4ba27 100644 --- a/src/backend/access/gin/gininsert.c +++ b/src/backend/access/gin/gininsert.c @@ -31,8 +31,9 @@ #include "tcop/tcopprot.h" #include "utils/datum.h" #include "utils/memutils.h" -#include "utils/rel.h" #include "utils/builtins.h" +#include "utils/rel.h" +#include "utils/typcache.h" /* Magic numbers for parallel state sharing */ diff --git a/src/backend/catalog/pg_attrdef.c b/src/backend/catalog/pg_attrdef.c index b62f19bb803..24815090d3d 100644 --- a/src/backend/catalog/pg_attrdef.c +++ b/src/backend/catalog/pg_attrdef.c @@ -14,6 +14,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/htup_details.h" #include "access/relation.h" #include "access/table.h" diff --git a/src/backend/catalog/pg_largeobject.c b/src/backend/catalog/pg_largeobject.c index 0f14ea198de..0e1dd22d908 100644 --- a/src/backend/catalog/pg_largeobject.c +++ b/src/backend/catalog/pg_largeobject.c @@ -14,6 +14,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/htup_details.h" #include "access/table.h" #include "catalog/catalog.h" diff --git a/src/backend/commands/collationcmds.c b/src/backend/commands/collationcmds.c index 980cc3ac627..0bc31ec2b6f 100644 --- a/src/backend/commands/collationcmds.c +++ b/src/backend/commands/collationcmds.c @@ -34,6 +34,7 @@ #include "common/string.h" #include "mb/pg_wchar.h" #include "miscadmin.h" +#include "storage/fd.h" #include "utils/acl.h" #include "utils/builtins.h" #include "utils/lsyscache.h" diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index 97288b7f2c5..8fb9ea25db0 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -32,6 +32,7 @@ #include "commands/user.h" #include "libpq/crypt.h" #include "miscadmin.h" +#include "port/pg_bitutils.h" #include "storage/lmgr.h" #include "utils/acl.h" #include "utils/builtins.h" diff --git a/src/backend/executor/execReplication.c b/src/backend/executor/execReplication.c index 173d2fe548d..72f2bff7708 100644 --- a/src/backend/executor/execReplication.c +++ b/src/backend/executor/execReplication.c @@ -14,6 +14,7 @@ #include "postgres.h" +#include "access/amapi.h" #include "access/commit_ts.h" #include "access/genam.h" #include "access/gist.h" diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 9cba1272253..56826db4c26 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -38,6 +38,7 @@ #include "utils/fmgroids.h" #include "utils/lsyscache.h" #include "utils/timestamp.h" +#include "utils/typcache.h" #include "utils/xml.h" /* GUC parameters */ diff --git a/src/backend/replication/logical/relation.c b/src/backend/replication/logical/relation.c index 2df910378dc..0b1d80b5b0f 100644 --- a/src/backend/replication/logical/relation.c +++ b/src/backend/replication/logical/relation.c @@ -29,6 +29,7 @@ #include "utils/inval.h" #include "utils/lsyscache.h" #include "utils/syscache.h" +#include "utils/typcache.h" static MemoryContext LogicalRepRelMapContext = NULL; diff --git a/src/backend/replication/logical/sequencesync.c b/src/backend/replication/logical/sequencesync.c index e51cb51a8ba..509388d1bf4 100644 --- a/src/backend/replication/logical/sequencesync.c +++ b/src/backend/replication/logical/sequencesync.c @@ -51,6 +51,7 @@ #include "postgres.h" +#include "access/genam.h" #include "access/table.h" #include "catalog/pg_sequence.h" #include "catalog/pg_subscription_rel.h" diff --git a/src/backend/statistics/stat_utils.c b/src/backend/statistics/stat_utils.c index 44969159ea8..9c680f1cb37 100644 --- a/src/backend/statistics/stat_utils.c +++ b/src/backend/statistics/stat_utils.c @@ -35,6 +35,7 @@ #include "utils/lsyscache.h" #include "utils/rel.h" #include "utils/syscache.h" +#include "utils/typcache.h" /* Default values assigned to new pg_statistic tuples. */ #define DEFAULT_STATATT_NULL_FRAC Float4GetDatum(0.0) /* stanullfrac */ diff --git a/src/include/access/relscan.h b/src/include/access/relscan.h index 9b342d5bd80..ce340c076f8 100644 --- a/src/include/access/relscan.h +++ b/src/include/access/relscan.h @@ -18,7 +18,6 @@ #include "access/itup.h" #include "nodes/tidbitmap.h" #include "port/atomics.h" -#include "storage/buf.h" #include "storage/relfilelocator.h" #include "storage/spin.h" #include "utils/relcache.h" diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h index ab397409f17..58fc185d0d8 100644 --- a/src/include/catalog/indexing.h +++ b/src/include/catalog/indexing.h @@ -16,7 +16,7 @@ #define INDEXING_H #include "access/htup.h" -#include "nodes/execnodes.h" +#include "executor/tuptable.h" #include "utils/relcache.h" /* diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index 6fd8b6bfc06..f8053d9e572 100644 --- a/src/include/nodes/execnodes.h +++ b/src/include/nodes/execnodes.h @@ -29,8 +29,10 @@ #ifndef EXECNODES_H #define EXECNODES_H +#include "access/skey.h" #include "access/tupconvert.h" #include "executor/instrument.h" +#include "executor/instrument_node.h" #include "fmgr.h" #include "lib/ilist.h" #include "lib/pairingheap.h" diff --git a/src/include/utils/tuplesort.h b/src/include/utils/tuplesort.h index 943a2b7dc93..5fe229e211b 100644 --- a/src/include/utils/tuplesort.h +++ b/src/include/utils/tuplesort.h @@ -21,8 +21,6 @@ #ifndef TUPLESORT_H #define TUPLESORT_H -#include "access/brin_tuple.h" -#include "access/gin_tuple.h" #include "access/itup.h" #include "executor/instrument_node.h" #include "executor/tuptable.h" @@ -31,6 +29,9 @@ #include "utils/relcache.h" #include "utils/sortsupport.h" +/* We don't want this file to depend on AM-specific header files */ +typedef struct BrinTuple BrinTuple; +typedef struct GinTuple GinTuple; /* * Tuplesortstate and Sharedsort are opaque types whose details are not