On Thursday, June 28, 2012 10:03:26 PM Andres Freund wrote:
> What I wonder is how hard it would be to remove catcache.h's structs into
> the  implementation. Thats the reason why the old and new list
> implementation currently is included all over the backend...
Moving them into the implementation isn't possible, but catcache.h being 
included just about everywhere simply isn't needed.

It being included everywhere was introduced by a series of commits from Bruce:
b85a965f5fc7243d0386085e12f7a6c836503b42
b43ebe5f83b28e06a3fd933b989aeccf0df7844a
e0522505bd13bc5aae993fc50b8f420665d78e96
and others

That looks broken. An implementation file not including its own header... A 
minimal patch to fix this particular problem is attached (looks like there are 
others in the series).

Andres
-- 
 Andres Freund                     http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services
From 45e2c358e6a21e837f13731981da2644bcb57a88 Mon Sep 17 00:00:00 2001
From: Andres Freund <and...@anarazel.de>
Date: Thu, 28 Jun 2012 23:03:44 +0200
Subject: [PATCH] Stop including catcache.h from syscache.h

syscache.h used to not rely on catcache.h and even today ships with the comment
"Users of this must import catcache.h too" for the one function requiring
catcache.h knowledge.

This was changed in a series of commits including:
b85a965f5fc7243d0386085e12f7a6c836503b42
b43ebe5f83b28e06a3fd933b989aeccf0df7844a
e0522505bd13bc5aae993fc50b8f420665d78e96

Change it back.
---
 src/backend/access/transam/xact.c     |    1 +
 src/backend/catalog/namespace.c       |    1 +
 src/backend/catalog/pg_conversion.c   |    1 +
 src/backend/catalog/pg_enum.c         |    1 +
 src/backend/utils/adt/acl.c           |    1 +
 src/backend/utils/cache/attoptcache.c |    1 +
 src/backend/utils/cache/catcache.c    |    1 +
 src/backend/utils/cache/inval.c       |    1 +
 src/backend/utils/cache/lsyscache.c   |    1 +
 src/backend/utils/cache/relcache.c    |    1 +
 src/backend/utils/cache/spccache.c    |    1 +
 src/backend/utils/cache/syscache.c    |    1 +
 src/backend/utils/cache/ts_cache.c    |    1 +
 src/backend/utils/cache/typcache.c    |    1 +
 src/backend/utils/resowner/resowner.c |    5 +++--
 src/include/utils/resowner.h          |   10 ++++++----
 src/include/utils/snapmgr.h           |    1 +
 src/include/utils/syscache.h          |    2 +-
 18 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 4755ee6..1f743f7 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -44,6 +44,7 @@
 #include "storage/procarray.h"
 #include "storage/sinvaladt.h"
 #include "storage/smgr.h"
+#include "utils/catcache.h"
 #include "utils/combocid.h"
 #include "utils/guc.h"
 #include "utils/inval.h"
diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c
index 20850ab..10ad82b 100644
--- a/src/backend/catalog/namespace.c
+++ b/src/backend/catalog/namespace.c
@@ -46,6 +46,7 @@
 #include "storage/sinval.h"
 #include "utils/acl.h"
 #include "utils/builtins.h"
+#include "utils/catcache.h"
 #include "utils/guc.h"
 #include "utils/inval.h"
 #include "utils/lsyscache.h"
diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c
index f86c84f..358bd39 100644
--- a/src/backend/catalog/pg_conversion.c
+++ b/src/backend/catalog/pg_conversion.c
@@ -25,6 +25,7 @@
 #include "catalog/pg_proc.h"
 #include "mb/pg_wchar.h"
 #include "utils/builtins.h"
+#include "utils/catcache.h"
 #include "utils/fmgroids.h"
 #include "utils/rel.h"
 #include "utils/syscache.h"
diff --git a/src/backend/catalog/pg_enum.c b/src/backend/catalog/pg_enum.c
index 41665c1..20e26c4 100644
--- a/src/backend/catalog/pg_enum.c
+++ b/src/backend/catalog/pg_enum.c
@@ -23,6 +23,7 @@
 #include "storage/lmgr.h"
 #include "miscadmin.h"
 #include "utils/builtins.h"
+#include "utils/catcache.h"
 #include "utils/fmgroids.h"
 #include "utils/syscache.h"
 #include "utils/tqual.h"
diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c
index 77322a1..2cc87d8 100644
--- a/src/backend/utils/adt/acl.c
+++ b/src/backend/utils/adt/acl.c
@@ -29,6 +29,7 @@
 #include "miscadmin.h"
 #include "utils/acl.h"
 #include "utils/builtins.h"
+#include "utils/catcache.h"
 #include "utils/inval.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
diff --git a/src/backend/utils/cache/attoptcache.c b/src/backend/utils/cache/attoptcache.c
index e01ae21..5d872ba 100644
--- a/src/backend/utils/cache/attoptcache.c
+++ b/src/backend/utils/cache/attoptcache.c
@@ -18,6 +18,7 @@
 
 #include "access/reloptions.h"
 #include "utils/attoptcache.h"
+#include "utils/catcache.h"
 #include "utils/hsearch.h"
 #include "utils/inval.h"
 #include "utils/syscache.h"
diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c
index 0307b96..f27d90d 100644
--- a/src/backend/utils/cache/catcache.c
+++ b/src/backend/utils/cache/catcache.c
@@ -29,6 +29,7 @@
 #endif
 #include "storage/lmgr.h"
 #include "utils/builtins.h"
+#include "utils/catcache.h"
 #include "utils/fmgroids.h"
 #include "utils/inval.h"
 #include "utils/memutils.h"
diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c
index 34802ee..15b1711 100644
--- a/src/backend/utils/cache/inval.c
+++ b/src/backend/utils/cache/inval.c
@@ -100,6 +100,7 @@
 #include "miscadmin.h"
 #include "storage/sinval.h"
 #include "storage/smgr.h"
+#include "utils/catcache.h"
 #include "utils/inval.h"
 #include "utils/memutils.h"
 #include "utils/rel.h"
diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c
index 64b413b..0e479e8 100644
--- a/src/backend/utils/cache/lsyscache.c
+++ b/src/backend/utils/cache/lsyscache.c
@@ -33,6 +33,7 @@
 #include "nodes/makefuncs.h"
 #include "utils/array.h"
 #include "utils/builtins.h"
+#include "utils/catcache.h"
 #include "utils/datum.h"
 #include "utils/fmgroids.h"
 #include "utils/lsyscache.h"
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 2e6776e..8d7e766 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -64,6 +64,7 @@
 #include "storage/smgr.h"
 #include "utils/array.h"
 #include "utils/builtins.h"
+#include "utils/catcache.h"
 #include "utils/fmgroids.h"
 #include "utils/inval.h"
 #include "utils/lsyscache.h"
diff --git a/src/backend/utils/cache/spccache.c b/src/backend/utils/cache/spccache.c
index cf18ee1..0b8cc39 100644
--- a/src/backend/utils/cache/spccache.c
+++ b/src/backend/utils/cache/spccache.c
@@ -23,6 +23,7 @@
 #include "commands/tablespace.h"
 #include "miscadmin.h"
 #include "optimizer/cost.h"
+#include "utils/catcache.h"
 #include "utils/hsearch.h"
 #include "utils/inval.h"
 #include "utils/spccache.h"
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c
index c365ec7..bf96678 100644
--- a/src/backend/utils/cache/syscache.c
+++ b/src/backend/utils/cache/syscache.c
@@ -54,6 +54,7 @@
 #include "catalog/pg_ts_template.h"
 #include "catalog/pg_type.h"
 #include "catalog/pg_user_mapping.h"
+#include "utils/catcache.h"
 #include "utils/rel.h"
 #include "utils/syscache.h"
 
diff --git a/src/backend/utils/cache/ts_cache.c b/src/backend/utils/cache/ts_cache.c
index b408de0..b369790 100644
--- a/src/backend/utils/cache/ts_cache.c
+++ b/src/backend/utils/cache/ts_cache.c
@@ -39,6 +39,7 @@
 #include "commands/defrem.h"
 #include "tsearch/ts_cache.h"
 #include "utils/builtins.h"
+#include "utils/catcache.h"
 #include "utils/fmgroids.h"
 #include "utils/inval.h"
 #include "utils/lsyscache.h"
diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c
index 72798ef..8726dba 100644
--- a/src/backend/utils/cache/typcache.c
+++ b/src/backend/utils/cache/typcache.c
@@ -55,6 +55,7 @@
 #include "catalog/pg_type.h"
 #include "commands/defrem.h"
 #include "utils/builtins.h"
+#include "utils/catcache.h"
 #include "utils/fmgroids.h"
 #include "utils/inval.h"
 #include "utils/lsyscache.h"
diff --git a/src/backend/utils/resowner/resowner.c b/src/backend/utils/resowner/resowner.c
index 3ded469..f7a658f 100644
--- a/src/backend/utils/resowner/resowner.c
+++ b/src/backend/utils/resowner/resowner.c
@@ -23,6 +23,7 @@
 #include "access/hash.h"
 #include "storage/predicate.h"
 #include "storage/proc.h"
+#include "utils/catcache.h"
 #include "utils/memutils.h"
 #include "utils/rel.h"
 #include "utils/snapmgr.h"
@@ -787,7 +788,7 @@ ResourceOwnerEnlargeCatCacheListRefs(ResourceOwner owner)
  * Caller must have previously done ResourceOwnerEnlargeCatCacheListRefs()
  */
 void
-ResourceOwnerRememberCatCacheListRef(ResourceOwner owner, CatCList *list)
+ResourceOwnerRememberCatCacheListRef(ResourceOwner owner, struct catclist *list)
 {
 	Assert(owner->ncatlistrefs < owner->maxcatlistrefs);
 	owner->catlistrefs[owner->ncatlistrefs] = list;
@@ -798,7 +799,7 @@ ResourceOwnerRememberCatCacheListRef(ResourceOwner owner, CatCList *list)
  * Forget that a catcache-list reference is owned by a ResourceOwner
  */
 void
-ResourceOwnerForgetCatCacheListRef(ResourceOwner owner, CatCList *list)
+ResourceOwnerForgetCatCacheListRef(ResourceOwner owner, struct catclist *list)
 {
 	CatCList  **catlistrefs = owner->catlistrefs;
 	int			nc1 = owner->ncatlistrefs - 1;
diff --git a/src/include/utils/resowner.h b/src/include/utils/resowner.h
index e1c992e..30c8444 100644
--- a/src/include/utils/resowner.h
+++ b/src/include/utils/resowner.h
@@ -21,10 +21,9 @@
 
 #include "storage/fd.h"
 #include "storage/lock.h"
-#include "utils/catcache.h"
 #include "utils/plancache.h"
 #include "utils/snapshot.h"
-
+#include "utils/relcache.h"
 
 /*
  * ResourceOwner objects are an opaque data structure known only within
@@ -64,6 +63,8 @@ typedef void (*ResourceReleaseCallback) (ResourceReleasePhase phase,
 													 bool isTopLevel,
 													 void *arg);
 
+/* forward declare to avoid including catcache.h everywhere */
+struct catclist;
 
 /*
  * Functions in resowner.c
@@ -101,10 +102,11 @@ extern void ResourceOwnerRememberCatCacheRef(ResourceOwner owner,
 extern void ResourceOwnerForgetCatCacheRef(ResourceOwner owner,
 							   HeapTuple tuple);
 extern void ResourceOwnerEnlargeCatCacheListRefs(ResourceOwner owner);
+/* Users of these must import catcache.h too */
 extern void ResourceOwnerRememberCatCacheListRef(ResourceOwner owner,
-									 CatCList *list);
+									 struct catclist *list);
 extern void ResourceOwnerForgetCatCacheListRef(ResourceOwner owner,
-								   CatCList *list);
+								   struct catclist *list);
 
 /* support for relcache refcount management */
 extern void ResourceOwnerEnlargeRelationRefs(ResourceOwner owner);
diff --git a/src/include/utils/snapmgr.h b/src/include/utils/snapmgr.h
index f195981..54bf602 100644
--- a/src/include/utils/snapmgr.h
+++ b/src/include/utils/snapmgr.h
@@ -13,6 +13,7 @@
 #ifndef SNAPMGR_H
 #define SNAPMGR_H
 
+#include "fmgr.h"
 #include "utils/resowner.h"
 
 
diff --git a/src/include/utils/syscache.h b/src/include/utils/syscache.h
index d59dd4e..37dc9ed 100644
--- a/src/include/utils/syscache.h
+++ b/src/include/utils/syscache.h
@@ -16,7 +16,7 @@
 #ifndef SYSCACHE_H
 #define SYSCACHE_H
 
-#include "utils/catcache.h"
+#include "access/htup.h"
 
 /*
  *		SysCache identifiers.
-- 
1.7.10.rc3.3.g19a6c.dirty

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to