Rename OverrideSearchPath to SearchPathMatcher.
authorNoah Misch <[email protected]>
Tue, 1 Aug 2023 00:04:47 +0000 (17:04 -0700)
committerNoah Misch <[email protected]>
Tue, 1 Aug 2023 00:04:47 +0000 (17:04 -0700)
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

src/backend/catalog/namespace.c
src/backend/utils/cache/plancache.c
src/include/catalog/namespace.h
src/include/utils/plancache.h
src/tools/pgindent/typedefs.list

index f51a13aa56f09eb60eb9e7f72050b524be59751f..1f76b5d7f7bc766b98b6ae537dd277210b28a89c 100644 (file)
@@ -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;
index 56c84e1e629c749d296ebb858b684ff91a0ce138..d67cd9a405382077a084079ab30002651bb451e8 100644 (file)
@@ -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;
index 93e0c1234539b2f5537a4fc78e7d70451f9628c9..49ef619e4b8c7010c2e21404550e6557eabcc4cd 100644 (file)
@@ -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);
index a443181d41654e96d875f529f535666f45da1210..916e59d9fefa83c688e2116bb80e17dc2ab9bd0d 100644 (file)
@@ -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 */
index dc296afb63d2506a3f4ef41f1670cbf14fca3662..66823bc2a771bf9c4dfab6a84362b131816f5f3f 100644 (file)
@@ -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