diff options
Diffstat (limited to 'src/backend/utils/cache')
-rw-r--r-- | src/backend/utils/cache/relcache.c | 6 | ||||
-rw-r--r-- | src/backend/utils/cache/syscache.c | 4 | ||||
-rw-r--r-- | src/backend/utils/cache/temprel.c | 24 |
3 files changed, 26 insertions, 8 deletions
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index f780cf96b39..a0b97158602 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.76 1999/11/07 23:08:26 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.77 1999/11/16 04:13:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -962,7 +962,7 @@ formrdesc(char *relationName, relation->rd_rel = (Form_pg_class) palloc((Size) (sizeof(*relation->rd_rel))); MemSet(relation->rd_rel, 0, sizeof(FormData_pg_class)); - strcpy(RelationGetRelationName(relation), relationName); + strcpy(RelationGetPhysicalRelationName(relation), relationName); /* ---------------- initialize attribute tuple form @@ -1177,7 +1177,7 @@ RelationNameGetRelation(char *relationName) * we only index temp rels by their real names. * ---------------- */ - temprelname = get_temp_rel_by_name(relationName); + temprelname = get_temp_rel_by_username(relationName); if (temprelname) relationName = temprelname; diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c index 3cb393b802f..476fce4db8c 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.38 1999/11/01 02:29:25 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.39 1999/11/16 04:13:59 momjian Exp $ * * NOTES * These routines allow the parser/planner/executor to perform @@ -472,7 +472,7 @@ SearchSysCacheTuple(int cacheId,/* cache selection code */ char *nontemp_relname; if ((nontemp_relname = - get_temp_rel_by_name(DatumGetPointer(key1))) != NULL) + get_temp_rel_by_username(DatumGetPointer(key1))) != NULL) key1 = PointerGetDatum(nontemp_relname); } diff --git a/src/backend/utils/cache/temprel.c b/src/backend/utils/cache/temprel.c index 0119f9e59ec..d57152d550d 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.15 1999/11/07 23:08:26 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/temprel.c,v 1.16 1999/11/16 04:13:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -150,7 +150,6 @@ remove_temp_relation(Oid relid) prev = l; l = lnext(l); } - } MemoryContextSwitchTo(oldcxt); @@ -203,7 +202,7 @@ invalidate_temp_relations(void) } char * -get_temp_rel_by_name(char *user_relname) +get_temp_rel_by_username(char *user_relname) { List *l; @@ -216,3 +215,22 @@ get_temp_rel_by_name(char *user_relname) } return NULL; } + +char * +get_temp_rel_by_physicalname(char *relname) +{ + List *l; + + /* already physical, needed for bootstrapping temp tables */ + if (strncmp(relname,"pg_temp.", strlen("pg_temp.")) == 0) + return relname; + + foreach(l, temp_rels) + { + TempTable *temp_rel = lfirst(l); + + if (strcmp(temp_rel->relname, relname) == 0) + return temp_rel->user_relname; + } + return NULL; +} |