From cb36c0f6821d52c30e99192bfe31d8becb9931ff Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 4 Sep 1999 21:47:23 +0000
Subject: [PATCH] In RelationNameGetRelation(), replace temp table name by real
 name before doing lookup.  We only want to index temp tables by their real
 names in the relcache, to ensure there's not more than one relcache entry for
 them.

---
 src/backend/utils/cache/relcache.c | 33 +++++++++++-------------------
 1 file changed, 12 insertions(+), 21 deletions(-)

diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 351ae7c6bc8..c534db71a43 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.69 1999/09/04 18:42:13 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.70 1999/09/04 21:47:23 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -56,6 +56,7 @@
 #include "utils/builtins.h"
 #include "utils/catcache.h"
 #include "utils/relcache.h"
+#include "utils/temprel.h"
 
 
 static void RelationFlushRelation(Relation *relationPtr,
@@ -1182,6 +1183,7 @@ RelationIdGetRelation(Oid relationId)
 Relation
 RelationNameGetRelation(char *relationName)
 {
+	char	   *temprelname;
 	Relation	rd;
 	RelationBuildDescInfo buildinfo;
 
@@ -1192,6 +1194,15 @@ RelationNameGetRelation(char *relationName)
 	IncrHeapAccessStat(local_RelationNameGetRelation);
 	IncrHeapAccessStat(global_RelationNameGetRelation);
 
+	/* ----------------
+	 *	if caller is looking for a temp relation, substitute its real name;
+	 *	we only index temp rels by their real names.
+	 * ----------------
+	 */
+	temprelname = get_temp_rel_by_name(relationName);
+	if (temprelname)
+		relationName = temprelname;
+
 	/* ----------------
 	 *	first try and get a reldesc from the cache
 	 * ----------------
@@ -1212,26 +1223,6 @@ RelationNameGetRelation(char *relationName)
 	return rd;
 }
 
-/* ----------------
- *		old "getreldesc" interface.
- * ----------------
- */
-#ifdef NOT_USED
-Relation
-getreldesc(char *relationName)
-{
-	/* ----------------
-	 *	increment access statistics
-	 * ----------------
-	 */
-	IncrHeapAccessStat(local_getreldesc);
-	IncrHeapAccessStat(global_getreldesc);
-
-	return RelationNameGetRelation(relationName);
-}
-
-#endif
-
 /* ----------------------------------------------------------------
  *				cache invalidation support routines
  * ----------------------------------------------------------------
-- 
GitLab