mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Commit to make clearer distinction for temp names and real names.
Thanks to Tom Lane for ideas.
This commit is contained in:
6
src/backend/utils/cache/relcache.c
vendored
6
src/backend/utils/cache/relcache.c
vendored
@ -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;
|
||||
|
||||
|
4
src/backend/utils/cache/syscache.c
vendored
4
src/backend/utils/cache/syscache.c
vendored
@ -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);
|
||||
}
|
||||
|
||||
|
24
src/backend/utils/cache/temprel.c
vendored
24
src/backend/utils/cache/temprel.c
vendored
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user