diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 9a52b2ff09..1e50b9e3e7 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.71 2000/09/27 10:41:55 petere Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.72 2000/10/11 21:28:17 momjian Exp $ * * NOTES * Transaction aborts can now occur two ways: @@ -1119,7 +1119,7 @@ AbortTransaction() AtEOXact_portals(); RecordTransactionAbort(); RelationPurgeLocalRelation(false); - invalidate_temp_relations(); + remove_temp_rel_in_myxid(); AtEOXact_SPI(); AtEOXact_nbtree(); AtAbort_Cache(); diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index a9feacd2ad..5353108b98 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.147 2000/10/05 19:48:21 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.148 2000/10/11 21:28:18 momjian Exp $ * * * INTERFACE ROUTINES @@ -131,11 +131,11 @@ static FormData_pg_attribute a6 = { MaxCommandIdAttributeNumber, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }; -/* +/* We decide to call this attribute "tableoid" rather than say "classoid" on the basis that in the future there may be more than one table of a particular class/type. In any case table is still the word -used in SQL. +used in SQL. */ static FormData_pg_attribute a7 = { 0xffffffff, {"tableoid"}, OIDOID, 0, sizeof(Oid), @@ -1489,7 +1489,7 @@ heap_drop_with_catalog(const char *relname, RelationForgetRelation(rid); if (istemp) - remove_temp_relation(rid); + remove_temp_rel_by_relid(rid); if (has_toasttable) { diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index 307f4834b1..33aa67fe45 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.127 2000/10/05 19:48:21 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.128 2000/10/11 21:28:18 momjian Exp $ * * * INTERFACE ROUTINES @@ -1145,7 +1145,7 @@ index_drop(Oid indexId) RelationForgetRelation(indexId); /* does something only if it is a temp index */ - remove_temp_relation(indexId); + remove_temp_rel_by_relid(indexId); } /* ---------------------------------------------------------------- @@ -1374,7 +1374,7 @@ IndexesAreActive(Oid relid, bool confirmCommitted) if (!LockClassinfoForUpdate(relid, &tuple, &buffer, confirmCommitted)) elog(ERROR, "IndexesAreActive couldn't lock %u", relid); if (((Form_pg_class) GETSTRUCT(&tuple))->relkind != RELKIND_RELATION && - ((Form_pg_class) GETSTRUCT(&tuple))->relkind != RELKIND_TOASTVALUE) + ((Form_pg_class) GETSTRUCT(&tuple))->relkind != RELKIND_TOASTVALUE) elog(ERROR, "relation %u isn't an indexable relation", relid); isactive = ((Form_pg_class) GETSTRUCT(&tuple))->relhasindex; ReleaseBuffer(buffer); diff --git a/src/backend/utils/cache/temprel.c b/src/backend/utils/cache/temprel.c index 6ba2d17651..af584591e5 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); + char relname[NAMEDATALEN]; + TempTable *temp_rel = (TempTable *) lfirst(temp_rels); - next = lnext(l); /* do this first, l is deallocated */ - - /* 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, diff --git a/src/include/utils/temprel.h b/src/include/utils/temprel.h index 337188b612..a99839ac26 100644 --- a/src/include/utils/temprel.h +++ b/src/include/utils/temprel.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: temprel.h,v 1.10 2000/06/20 06:41:11 tgl Exp $ + * $Id: temprel.h,v 1.11 2000/10/11 21:28:19 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -18,12 +18,12 @@ extern void create_temp_relation(const char *relname, HeapTuple pg_class_tuple); -extern void remove_temp_relation(Oid relid); +extern void remove_temp_rel_by_relid(Oid relid); extern bool rename_temp_relation(const char *oldname, const char *newname); extern void remove_all_temp_relations(void); -extern void invalidate_temp_relations(void); +extern void remove_temp_rel_in_myxid(void); extern char *get_temp_rel_by_username(const char *user_relname); extern char *get_temp_rel_by_physicalname(const char *relname);