Hi all, I wondered can we have a shortcut somewhat similar to following POC in recomputeNamespacePath () when the recomputed path is the same as the previous baseSearchPath/activeSearchPath :
== POC patch == diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c index e251f5a9fdc..b25ef489e47 100644 --- a/src/backend/catalog/namespace.c +++ b/src/backend/catalog/namespace.c @@ -3813,6 +3813,9 @@ recomputeNamespacePath(void) !list_member_oid(oidlist, myTempNamespace)) oidlist = lcons_oid(myTempNamespace, oidlist); + /* TODO: POC */ + if (equal(oidlist, baseSearchPath)) + return; /* * Now that we've successfully built the new list of namespace OIDs, save * it in permanent storage. == POC patch end == It can have two advantages as: 1. Avoid unnecessary list_copy() in TopMemoryContext context & 2. Global pointers like activeSearchPath/baseSearchPath will not change if some implementation end up with cascaded call to recomputeNamespacePath(). Thoughts/Comments? Regards, Amul