diff options
Diffstat (limited to 'src/backend/catalog/namespace.c')
| -rw-r--r-- | src/backend/catalog/namespace.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c index e2e19985506..2e5bb276097 100644 --- a/src/backend/catalog/namespace.c +++ b/src/backend/catalog/namespace.c @@ -13,7 +13,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/namespace.c,v 1.125 2010/02/26 02:00:36 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/namespace.c,v 1.125.4.1 2010/08/13 16:27:18 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -2666,6 +2666,17 @@ GetOverrideSearchPath(MemoryContext context) * * We allow nested overrides, hence the push/pop terminology. The GUC * search_path variable is ignored while an override is active. + * + * It's possible that newpath->useTemp is set but there is no longer any + * active temp namespace, if the path was saved during a transaction that + * created a temp namespace and was later rolled back. In that case we just + * ignore useTemp. A plausible alternative would be to create a new temp + * namespace, but for existing callers that's not necessary because an empty + * temp namespace wouldn't affect their results anyway. + * + * It's also worth noting that other schemas listed in newpath might not + * exist anymore either. We don't worry about this because OIDs that match + * no existing namespace will simply not produce any hits during searches. */ void PushOverrideSearchPath(OverrideSearchPath *newpath) @@ -2699,11 +2710,8 @@ PushOverrideSearchPath(OverrideSearchPath *newpath) if (newpath->addCatalog) oidlist = lcons_oid(PG_CATALOG_NAMESPACE, oidlist); - if (newpath->addTemp) - { - Assert(OidIsValid(myTempNamespace)); + if (newpath->addTemp && OidIsValid(myTempNamespace)) oidlist = lcons_oid(myTempNamespace, oidlist); - } /* * Build the new stack entry, then insert it at the head of the list. |
