From d003213225d650ff78f32cc059742f05820cf69e Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 2 Jul 2000 04:46:09 +0000 Subject: [PATCH] Don't run in CacheMemoryContext longer than necessary. --- src/backend/catalog/heap.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index 9ba935f716..dceab60c8e 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.134 2000/06/28 03:31:22 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.135 2000/07/02 04:46:09 tgl Exp $ * * * INTERFACE ROUTINES @@ -166,12 +166,11 @@ heap_create(char *relname, { static unsigned int uniqueId = 0; - int i; Oid relid; Relation rel; - int len; bool nailme = false; int natts = tupDesc->natts; + int i; MemoryContext oldcxt; /* ---------------- @@ -236,13 +235,13 @@ heap_create(char *relname, * allocate a new relation descriptor. * ---------------- */ - len = sizeof(RelationData); - - rel = (Relation) palloc(len); - MemSet((char *) rel, 0, len); + rel = (Relation) palloc(sizeof(RelationData)); + MemSet((char *) rel, 0, sizeof(RelationData)); rel->rd_fd = -1; /* table is not open */ rel->rd_unlinked = true; /* table is not created yet */ + RelationSetReferenceCount(rel, 1); + /* * create a new tuple descriptor from the one passed in */ @@ -257,14 +256,11 @@ heap_create(char *relname, if (nailme) rel->rd_isnailed = true; - RelationSetReferenceCount(rel, 1); - - rel->rd_rel = (Form_pg_class) palloc(sizeof *rel->rd_rel); - /* ---------------- * initialize the fields of our new relation descriptor * ---------------- */ + rel->rd_rel = (Form_pg_class) palloc(sizeof *rel->rd_rel); MemSet((char *) rel->rd_rel, 0, sizeof *rel->rd_rel); strcpy(RelationGetPhysicalRelationName(rel), relname); rel->rd_rel->relkind = RELKIND_UNCATALOGED; @@ -283,10 +279,14 @@ heap_create(char *relname, rel->rd_rel->reltype = relid; } + /* ---------------- + * done building relcache entry. + * ---------------- + */ + MemoryContextSwitchTo(oldcxt); + /* ---------------- * have the storage manager create the relation. - * - * XXX shouldn't we switch out of CacheMemoryContext for that? * ---------------- */ @@ -296,8 +296,6 @@ heap_create(char *relname, RelationRegisterRelation(rel); - MemoryContextSwitchTo(oldcxt); - return rel; } -- 2.40.0