Remove extra copying of TupleDescs for heap_create_with_catalog
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 17 Jun 2011 13:43:32 +0000 (09:43 -0400)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Mon, 20 Jun 2011 14:50:23 +0000 (10:50 -0400)
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
src/backend/executor/execMain.c

index c020dc2e4ecbd8702eb1f7c3e0f97b457d1c5e4f..9a7649bb4f95581e0169f0a341a9d8d0b1287db3 100644 (file)
@@ -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,
index df1d3cab4d16258017439ec4d69e12ae695cc3d1..2f8deb470c56fb901bb063c4a9287cd8b14b0256 100644 (file)
@@ -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.