diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/catalog/namespace.h | 5 | ||||
| -rw-r--r-- | src/include/utils/plancache.h | 8 | ||||
| -rw-r--r-- | src/include/utils/resowner.h | 1 |
3 files changed, 14 insertions, 0 deletions
diff --git a/src/include/catalog/namespace.h b/src/include/catalog/namespace.h index 3e3a192471..2456c08bf7 100644 --- a/src/include/catalog/namespace.h +++ b/src/include/catalog/namespace.h @@ -49,12 +49,17 @@ typedef enum TempNamespaceStatus /* * Structure for xxxOverrideSearchPath functions + * + * The generation counter is private to namespace.c and shouldn't be touched + * by other code. It can be initialized to zero if necessary (that means + * "not known equal to the current active path"). */ typedef struct OverrideSearchPath { List *schemas; /* OIDs of explicitly named schemas */ bool addCatalog; /* implicitly prepend pg_catalog? */ bool addTemp; /* implicitly prepend temp schema? */ + uint64 generation; /* for quick detection of equality to active */ } OverrideSearchPath; /* diff --git a/src/include/utils/plancache.h b/src/include/utils/plancache.h index 6a5953c768..037edd057b 100644 --- a/src/include/utils/plancache.h +++ b/src/include/utils/plancache.h @@ -20,6 +20,8 @@ #include "nodes/params.h" #include "tcop/cmdtag.h" #include "utils/queryenvironment.h" +#include "utils/resowner.h" + /* Forward declaration, to avoid including parsenodes.h here */ struct RawStmt; @@ -220,6 +222,12 @@ extern CachedPlan *GetCachedPlan(CachedPlanSource *plansource, QueryEnvironment *queryEnv); extern void ReleaseCachedPlan(CachedPlan *plan, bool useResOwner); +extern bool CachedPlanAllowsSimpleValidityCheck(CachedPlanSource *plansource, + CachedPlan *plan); +extern bool CachedPlanIsSimplyValid(CachedPlanSource *plansource, + CachedPlan *plan, + ResourceOwner owner); + extern CachedExpression *GetCachedExpression(Node *expr); extern void FreeCachedExpression(CachedExpression *cexpr); diff --git a/src/include/utils/resowner.h b/src/include/utils/resowner.h index 850bf6957a..878f39ccf1 100644 --- a/src/include/utils/resowner.h +++ b/src/include/utils/resowner.h @@ -71,6 +71,7 @@ extern void ResourceOwnerRelease(ResourceOwner owner, ResourceReleasePhase phase, bool isCommit, bool isTopLevel); +extern void ResourceOwnerReleaseAllPlanCacheRefs(ResourceOwner owner); extern void ResourceOwnerDelete(ResourceOwner owner); extern ResourceOwner ResourceOwnerGetParent(ResourceOwner owner); extern void ResourceOwnerNewParent(ResourceOwner owner, |
