From a40a5d9468a5f9f11d355ebf07f7741f5c267588 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Fri, 17 Jun 2011 09:43:32 -0400 Subject: [PATCH] Remove extra copying of TupleDescs for heap_create_with_catalog Some callers were creating copies of tuple descriptors to pass to that function, stating in code comments that it was necessary because it modified the passed descriptor. Code inspection reveals this not to be true, and indeed not all callers are passing copies in the first place. So remove the extra ones and the misleading comments about this behavior as well. --- src/backend/commands/cluster.c | 9 +++------ src/backend/executor/execMain.c | 8 +------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index c020dc2e4e..9a7649bb4f 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -591,8 +591,7 @@ rebuild_relation(Relation OldHeap, Oid indexOid, Oid make_new_heap(Oid OIDOldHeap, Oid NewTableSpace) { - TupleDesc OldHeapDesc, - tupdesc; + TupleDesc OldHeapDesc; char NewHeapName[NAMEDATALEN]; Oid OIDNewHeap; Oid toastid; @@ -605,13 +604,11 @@ make_new_heap(Oid OIDOldHeap, Oid NewTableSpace) OldHeapDesc = RelationGetDescr(OldHeap); /* - * Need to make a copy of the tuple descriptor, since - * heap_create_with_catalog modifies it. Note that the NewHeap will not + * Note that the NewHeap will not * receive any of the defaults or constraints associated with the OldHeap; * we don't need 'em, and there's no reason to spend cycles inserting them * into the catalogs only to delete them. */ - tupdesc = CreateTupleDescCopy(OldHeapDesc); /* * But we do want to use reloptions of the old heap for new heap. @@ -645,7 +642,7 @@ make_new_heap(Oid OIDOldHeap, Oid NewTableSpace) InvalidOid, InvalidOid, OldHeap->rd_rel->relowner, - tupdesc, + OldHeapDesc, NIL, OldHeap->rd_rel->relkind, OldHeap->rd_rel->relpersistence, diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index df1d3cab4d..2f8deb470c 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -2394,7 +2394,6 @@ OpenIntoRel(QueryDesc *queryDesc) Oid tablespaceId; Datum reloptions; Oid intoRelationId; - TupleDesc tupdesc; DR_intorel *myState; static char *validnsps[] = HEAP_RELOPT_NAMESPACES; @@ -2467,9 +2466,6 @@ OpenIntoRel(QueryDesc *queryDesc) false); (void) heap_reloptions(RELKIND_RELATION, reloptions, true); - /* Copy the tupdesc because heap_create_with_catalog modifies it */ - tupdesc = CreateTupleDescCopy(queryDesc->tupDesc); - /* Now we can actually create the new relation */ intoRelationId = heap_create_with_catalog(intoName, namespaceId, @@ -2478,7 +2474,7 @@ OpenIntoRel(QueryDesc *queryDesc) InvalidOid, InvalidOid, GetUserId(), - tupdesc, + queryDesc->tupDesc, NIL, RELKIND_RELATION, into->rel->relpersistence, @@ -2492,8 +2488,6 @@ OpenIntoRel(QueryDesc *queryDesc) allowSystemTableMods); Assert(intoRelationId != InvalidOid); - FreeTupleDesc(tupdesc); - /* * Advance command counter so that the newly-created relation's catalog * tuples will be visible to heap_open.