diff options
Diffstat (limited to 'src/backend/utils')
| -rw-r--r-- | src/backend/utils/cache/syscache.c | 13 | ||||
| -rw-r--r-- | src/backend/utils/cache/temprel.c | 10 |
2 files changed, 21 insertions, 2 deletions
diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c index 470780676c..c9c7770f8c 100644 --- a/src/backend/utils/cache/syscache.c +++ b/src/backend/utils/cache/syscache.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.34 1999/08/09 03:13:30 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.35 1999/09/04 22:00:30 momjian Exp $ * * NOTES * These routines allow the parser/planner/executor to perform @@ -35,6 +35,7 @@ #include "catalog/pg_shadow.h" #include "catalog/pg_type.h" #include "utils/catcache.h" +#include "utils/temprel.h" extern bool AMI_OVERRIDE; /* XXX style */ @@ -487,6 +488,16 @@ SearchSysCacheTuple(int cacheId,/* cache selection code */ cacheId); } + /* temp table name remapping */ + if (cacheId == RELNAME) + { + char *nontemp_relname; + + if ((nontemp_relname = + get_temp_rel_by_name(DatumGetPointer(key1))) != NULL) + key1 = PointerGetDatum(nontemp_relname); + } + tp = SearchSysCache(SysCache[cacheId], key1, key2, key3, key4); if (!HeapTupleIsValid(tp)) { diff --git a/src/backend/utils/cache/temprel.c b/src/backend/utils/cache/temprel.c index 75cfe14fbc..ece1c9519f 100644 --- a/src/backend/utils/cache/temprel.c +++ b/src/backend/utils/cache/temprel.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/temprel.c,v 1.12 1999/09/04 21:45:48 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/temprel.c,v 1.13 1999/09/04 22:00:30 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -117,6 +117,8 @@ remove_temp_relation(Oid relid) MemoryContext oldcxt; List *l, *prev; + +elog(NOTICE,"oid = %d", relid); oldcxt = MemoryContextSwitchTo((MemoryContext) CacheCxt); @@ -126,8 +128,11 @@ remove_temp_relation(Oid relid) { TempTable *temp_rel = lfirst(l); +elog(NOTICE,"check oid = %d", temp_rel->relid); + if (temp_rel->relid == relid) { +elog(NOTICE,"removed"); pfree(temp_rel->user_relname); pfree(temp_rel->relname); pfree(temp_rel); @@ -212,7 +217,10 @@ get_temp_rel_by_name(char *user_relname) TempTable *temp_rel = lfirst(l); if (strcmp(temp_rel->user_relname, user_relname) == 0) + { + elog(NOTICE,"found"); return temp_rel->relname; + } } return NULL; } |
