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.
This commit is contained in:
Tom Lane 1999-09-04 21:47:23 +00:00
parent 15dd167854
commit cb36c0f682
1 changed files with 12 additions and 21 deletions

View File

@ -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
* ----------------------------------------------------------------