aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2023-07-31 17:04:47 -0700
committerNoah Misch <noah@leadboat.com>2023-07-31 17:04:47 -0700
commitd3a38318ac614f20a9e2e163bba083d15be54f06 (patch)
tree58f314185705c1dde7b91101a5f40789dde69433
parent7c5c4e1c0396b0617a6f9b659dd7375fb0bfb9dc (diff)
downloadpostgresql-d3a38318ac614f20a9e2e163bba083d15be54f06.tar.gz
postgresql-d3a38318ac614f20a9e2e163bba083d15be54f06.zip
Rename OverrideSearchPath to SearchPathMatcher.
The previous commit removed the "override" APIs. Surviving APIs facilitate plancache.c to snapshot search_path and test whether the current value equals a remembered snapshot. Aleksander Alekseev. Reported by Alexander Lakhin and Noah Misch. Discussion: https://postgr.es/m/8ffb4650-52c4-6a81-38fc-8f99be981130@gmail.com
-rw-r--r--src/backend/catalog/namespace.c24
-rw-r--r--src/backend/utils/cache/plancache.c12
-rw-r--r--src/include/catalog/namespace.h12
-rw-r--r--src/include/utils/plancache.h2
-rw-r--r--src/tools/pgindent/typedefs.list2
5 files changed, 26 insertions, 26 deletions
diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c
index f51a13aa56f..1f76b5d7f7b 100644
--- a/src/backend/catalog/namespace.c
+++ b/src/backend/catalog/namespace.c
@@ -3374,16 +3374,16 @@ SetTempNamespaceState(Oid tempNamespaceId, Oid tempToastNamespaceId)
/*
- * GetOverrideSearchPath - fetch current search path definition.
+ * GetSearchPathMatcher - fetch current search path definition.
*
* The result structure is allocated in the specified memory context
* (which might or might not be equal to CurrentMemoryContext); but any
* junk created by revalidation calculations will be in CurrentMemoryContext.
*/
-OverrideSearchPath *
-GetOverrideSearchPath(MemoryContext context)
+SearchPathMatcher *
+GetSearchPathMatcher(MemoryContext context)
{
- OverrideSearchPath *result;
+ SearchPathMatcher *result;
List *schemas;
MemoryContext oldcxt;
@@ -3391,7 +3391,7 @@ GetOverrideSearchPath(MemoryContext context)
oldcxt = MemoryContextSwitchTo(context);
- result = (OverrideSearchPath *) palloc0(sizeof(OverrideSearchPath));
+ result = (SearchPathMatcher *) palloc0(sizeof(SearchPathMatcher));
schemas = list_copy(activeSearchPath);
while (schemas && linitial_oid(schemas) != activeCreationNamespace)
{
@@ -3413,16 +3413,16 @@ GetOverrideSearchPath(MemoryContext context)
}
/*
- * CopyOverrideSearchPath - copy the specified OverrideSearchPath.
+ * CopySearchPathMatcher - copy the specified SearchPathMatcher.
*
* The result structure is allocated in CurrentMemoryContext.
*/
-OverrideSearchPath *
-CopyOverrideSearchPath(OverrideSearchPath *path)
+SearchPathMatcher *
+CopySearchPathMatcher(SearchPathMatcher *path)
{
- OverrideSearchPath *result;
+ SearchPathMatcher *result;
- result = (OverrideSearchPath *) palloc(sizeof(OverrideSearchPath));
+ result = (SearchPathMatcher *) palloc(sizeof(SearchPathMatcher));
result->schemas = list_copy(path->schemas);
result->addCatalog = path->addCatalog;
result->addTemp = path->addTemp;
@@ -3432,7 +3432,7 @@ CopyOverrideSearchPath(OverrideSearchPath *path)
}
/*
- * OverrideSearchPathMatchesCurrent - does path match current setting?
+ * SearchPathMatchesCurrentEnvironment - does path match current environment?
*
* This is tested over and over in some common code paths, and in the typical
* scenario where the active search path seldom changes, it'll always succeed.
@@ -3440,7 +3440,7 @@ CopyOverrideSearchPath(OverrideSearchPath *path)
* whenever the active search path changes.
*/
bool
-OverrideSearchPathMatchesCurrent(OverrideSearchPath *path)
+SearchPathMatchesCurrentEnvironment(SearchPathMatcher *path)
{
ListCell *lc,
*lcp;
diff --git a/src/backend/utils/cache/plancache.c b/src/backend/utils/cache/plancache.c
index 56c84e1e629..d67cd9a4053 100644
--- a/src/backend/utils/cache/plancache.c
+++ b/src/backend/utils/cache/plancache.c
@@ -407,7 +407,7 @@ CompleteCachedPlan(CachedPlanSource *plansource,
* one-shot plans; and we *must* skip this for transaction control
* commands, because this could result in catalog accesses.
*/
- plansource->search_path = GetOverrideSearchPath(querytree_context);
+ plansource->search_path = GetSearchPathMatcher(querytree_context);
}
/*
@@ -586,7 +586,7 @@ RevalidateCachedQuery(CachedPlanSource *plansource,
if (plansource->is_valid)
{
Assert(plansource->search_path != NULL);
- if (!OverrideSearchPathMatchesCurrent(plansource->search_path))
+ if (!SearchPathMatchesCurrentEnvironment(plansource->search_path))
{
/* Invalidate the querytree and generic plan */
plansource->is_valid = false;
@@ -759,7 +759,7 @@ RevalidateCachedQuery(CachedPlanSource *plansource,
* not generate much extra cruft either, since almost certainly the path
* is already valid.)
*/
- plansource->search_path = GetOverrideSearchPath(querytree_context);
+ plansource->search_path = GetSearchPathMatcher(querytree_context);
MemoryContextSwitchTo(oldcxt);
@@ -1326,7 +1326,7 @@ CachedPlanAllowsSimpleValidityCheck(CachedPlanSource *plansource,
Assert(plan->is_valid);
Assert(plan == plansource->gplan);
Assert(plansource->search_path != NULL);
- Assert(OverrideSearchPathMatchesCurrent(plansource->search_path));
+ Assert(SearchPathMatchesCurrentEnvironment(plansource->search_path));
/* We don't support oneshot plans here. */
if (plansource->is_oneshot)
@@ -1449,7 +1449,7 @@ CachedPlanIsSimplyValid(CachedPlanSource *plansource, CachedPlan *plan,
/* Is the search_path still the same as when we made it? */
Assert(plansource->search_path != NULL);
- if (!OverrideSearchPathMatchesCurrent(plansource->search_path))
+ if (!SearchPathMatchesCurrentEnvironment(plansource->search_path))
return false;
/* It's still good. Bump refcount if requested. */
@@ -1565,7 +1565,7 @@ CopyCachedPlan(CachedPlanSource *plansource)
newsource->relationOids = copyObject(plansource->relationOids);
newsource->invalItems = copyObject(plansource->invalItems);
if (plansource->search_path)
- newsource->search_path = CopyOverrideSearchPath(plansource->search_path);
+ newsource->search_path = CopySearchPathMatcher(plansource->search_path);
newsource->query_context = querytree_context;
newsource->rewriteRoleId = plansource->rewriteRoleId;
newsource->rewriteRowSecurity = plansource->rewriteRowSecurity;
diff --git a/src/include/catalog/namespace.h b/src/include/catalog/namespace.h
index 93e0c123453..49ef619e4b8 100644
--- a/src/include/catalog/namespace.h
+++ b/src/include/catalog/namespace.h
@@ -49,19 +49,19 @@ typedef enum TempNamespaceStatus
} TempNamespaceStatus;
/*
- * Structure for xxxOverrideSearchPath functions
+ * Structure for xxxSearchPathMatcher 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
+typedef struct SearchPathMatcher
{
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;
+} SearchPathMatcher;
/*
* Option flag bits for RangeVarGetRelidExtended().
@@ -164,9 +164,9 @@ extern void SetTempNamespaceState(Oid tempNamespaceId,
Oid tempToastNamespaceId);
extern void ResetTempTableNamespace(void);
-extern OverrideSearchPath *GetOverrideSearchPath(MemoryContext context);
-extern OverrideSearchPath *CopyOverrideSearchPath(OverrideSearchPath *path);
-extern bool OverrideSearchPathMatchesCurrent(OverrideSearchPath *path);
+extern SearchPathMatcher *GetSearchPathMatcher(MemoryContext context);
+extern SearchPathMatcher *CopySearchPathMatcher(SearchPathMatcher *path);
+extern bool SearchPathMatchesCurrentEnvironment(SearchPathMatcher *path);
extern Oid get_collation_oid(List *collname, bool missing_ok);
extern Oid get_conversion_oid(List *conname, bool missing_ok);
diff --git a/src/include/utils/plancache.h b/src/include/utils/plancache.h
index a443181d416..916e59d9fef 100644
--- a/src/include/utils/plancache.h
+++ b/src/include/utils/plancache.h
@@ -111,7 +111,7 @@ typedef struct CachedPlanSource
List *query_list; /* list of Query nodes, or NIL if not valid */
List *relationOids; /* OIDs of relations the queries depend on */
List *invalItems; /* other dependencies, as PlanInvalItems */
- struct OverrideSearchPath *search_path; /* search_path used for parsing
+ struct SearchPathMatcher *search_path; /* search_path used for parsing
* and planning */
MemoryContext query_context; /* context holding the above, or NULL */
Oid rewriteRoleId; /* Role ID we did rewriting for */
diff --git a/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedefs.list
index dc296afb63d..66823bc2a77 100644
--- a/src/tools/pgindent/typedefs.list
+++ b/src/tools/pgindent/typedefs.list
@@ -1686,7 +1686,6 @@ OuterJoinClauseInfo
OutputPluginCallbacks
OutputPluginOptions
OutputPluginOutputType
-OverrideSearchPath
OverridingKind
PACE_HEADER
PACL
@@ -2463,6 +2462,7 @@ ScanState
ScanTypeControl
ScannerCallbackState
SchemaQuery
+SearchPathMatcher
SecBuffer
SecBufferDesc
SecLabelItem