summaryrefslogtreecommitdiff
path: root/src/backend/utils/cache/relfilenodemap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/cache/relfilenodemap.c')
-rw-r--r--src/backend/utils/cache/relfilenodemap.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/backend/utils/cache/relfilenodemap.c b/src/backend/utils/cache/relfilenodemap.c
index 70c323c720d..08a7c5a93ee 100644
--- a/src/backend/utils/cache/relfilenodemap.c
+++ b/src/backend/utils/cache/relfilenodemap.c
@@ -132,6 +132,11 @@ InitializeRelfilenodeMap(void)
* Map a relation's (tablespace, filenode) to a relation's oid and cache the
* result.
*
+ * A temporary relation may share its relfilenumber with a permanent relation
+ * or temporary relations created in other backends. Being able to uniquely
+ * identify a temporary relation would require a backend's proc number, which
+ * we do not know about. Hence, this function ignores this case.
+ *
* Returns InvalidOid if no relation matching the criteria could be found.
*/
Oid
@@ -211,6 +216,9 @@ RelidByRelfilenode(Oid reltablespace, Oid relfilenode)
{
Form_pg_class classform = (Form_pg_class) GETSTRUCT(ntp);
+ if (classform->relpersistence == RELPERSISTENCE_TEMP)
+ continue;
+
if (found)
elog(ERROR,
"unexpected duplicate for tablespace %u, relfilenode %u",