diff options
Diffstat (limited to 'src/backend/utils/cache/temprel.c')
-rw-r--r-- | src/backend/utils/cache/temprel.c | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/src/backend/utils/cache/temprel.c b/src/backend/utils/cache/temprel.c index 6ba2d176512..af584591e57 100644 --- a/src/backend/utils/cache/temprel.c +++ b/src/backend/utils/cache/temprel.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/temprel.c,v 1.27 2000/07/12 18:04:45 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/temprel.c,v 1.28 2000/10/11 21:28:19 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -91,35 +91,24 @@ create_temp_relation(const char *relname, HeapTuple pg_class_tuple) void remove_all_temp_relations(void) { - List *l, - *next; - - if (temp_rels == NIL) - return; - AbortOutOfAnyTransaction(); StartTransactionCommand(); - l = temp_rels; - while (l != NIL) + while (temp_rels != NIL) { - TempTable *temp_rel = (TempTable *) lfirst(l); - - next = lnext(l); /* do this first, l is deallocated */ + char relname[NAMEDATALEN]; + TempTable *temp_rel = (TempTable *) lfirst(temp_rels); - /* Indexes are dropped during heap drop */ if (temp_rel->relkind != RELKIND_INDEX) { - char relname[NAMEDATALEN]; - /* safe from deallocation */ strcpy(relname, temp_rel->user_relname); heap_drop_with_catalog(relname, allowSystemTableMods); } - - l = next; + else + index_drop(temp_rel->relid); + CommandCounterIncrement(); } - temp_rels = NIL; CommitTransactionCommand(); } @@ -129,7 +118,7 @@ remove_all_temp_relations(void) * we don't have the relname for indexes, so we just pass the oid */ void -remove_temp_relation(Oid relid) +remove_temp_rel_by_relid(Oid relid) { MemoryContext oldcxt; List *l, @@ -179,7 +168,7 @@ remove_temp_relation(Oid relid) * We just have to delete the map entry. */ void -invalidate_temp_relations(void) +remove_temp_rel_in_myxid(void) { MemoryContext oldcxt; List *l, |