aboutsummaryrefslogtreecommitdiff
path: root/src/backend/catalog/heap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/catalog/heap.c')
-rw-r--r--src/backend/catalog/heap.c74
1 files changed, 35 insertions, 39 deletions
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 0a9d6ce6bb3..a7f22cd6cfe 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.167 2001/06/12 05:55:49 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.168 2001/06/18 16:13:21 momjian Exp $
*
*
* INTERFACE ROUTINES
@@ -281,8 +281,8 @@ heap_create(char *relname,
* replace relname of caller with a unique name for a temp
* relation
*/
- snprintf(relname, NAMEDATALEN, "pg_temp.%d.%u",
- (int) MyProcPid, uniqueId++);
+ snprintf(relname, NAMEDATALEN, "%s_%d_%u",
+ PG_TEMP_REL_PREFIX, (int) MyProcPid, uniqueId++);
}
/*
@@ -874,37 +874,6 @@ heap_create_with_catalog(char *relname,
}
-/* ----------------------------------------------------------------
- * heap_drop_with_catalog - removes all record of named relation from catalogs
- *
- * 1) open relation, check for existence, etc.
- * 2) remove inheritance information
- * 3) remove indexes
- * 4) remove pg_class tuple
- * 5) remove pg_attribute tuples and related descriptions
- * 6) remove pg_description tuples
- * 7) remove pg_type tuples
- * 8) RemoveConstraints ()
- * 9) unlink relation
- *
- * old comments
- * Except for vital relations, removes relation from
- * relation catalog, and related attributes from
- * attribute catalog (needed?). (Anything else?)
- *
- * get proper relation from relation catalog (if not arg)
- * scan attribute catalog deleting attributes of reldesc
- * (necessary?)
- * delete relation from relation catalog
- * (How are the tuples of the relation discarded?)
- *
- * XXX Must fix to work with indexes.
- * There may be a better order for doing things.
- * Problems with destroying a deleted database--cannot create
- * a struct reldesc without having an open file descriptor.
- * ----------------------------------------------------------------
- */
-
/* --------------------------------
* RelationRemoveInheritance
*
@@ -1334,10 +1303,35 @@ DeleteTypeTuple(Relation rel)
heap_close(pg_type_desc, RowExclusiveLock);
}
-/* --------------------------------
- * heap_drop_with_catalog
+/* ----------------------------------------------------------------
+ * heap_drop_with_catalog - removes all record of named relation from catalogs
*
- * --------------------------------
+ * 1) open relation, check for existence, etc.
+ * 2) remove inheritance information
+ * 3) remove indexes
+ * 4) remove pg_class tuple
+ * 5) remove pg_attribute tuples and related descriptions
+ * 6) remove pg_description tuples
+ * 7) remove pg_type tuples
+ * 8) RemoveConstraints ()
+ * 9) unlink relation
+ *
+ * old comments
+ * Except for vital relations, removes relation from
+ * relation catalog, and related attributes from
+ * attribute catalog (needed?). (Anything else?)
+ *
+ * get proper relation from relation catalog (if not arg)
+ * scan attribute catalog deleting attributes of reldesc
+ * (necessary?)
+ * delete relation from relation catalog
+ * (How are the tuples of the relation discarded?)
+ *
+ * XXX Must fix to work with indexes.
+ * There may be a better order for doing things.
+ * Problems with destroying a deleted database--cannot create
+ * a struct reldesc without having an open file descriptor.
+ * ----------------------------------------------------------------
*/
void
heap_drop_with_catalog(const char *relname,
@@ -1360,8 +1354,10 @@ heap_drop_with_catalog(const char *relname,
* prevent deletion of system relations
*/
/* allow temp of pg_class? Guess so. */
- if (!istemp && !allow_system_table_mods &&
- IsSystemRelationName(RelationGetRelationName(rel)))
+ if (!istemp &&
+ !allow_system_table_mods &&
+ IsSystemRelationName(RelationGetRelationName(rel)) &&
+ !is_temp_relname(RelationGetRelationName(rel)))
elog(ERROR, "System relation \"%s\" may not be dropped",
RelationGetRelationName(rel));