From: Bruce Momjian Date: Sat, 10 Aug 2002 21:00:34 +0000 (+0000) Subject: Update with newer version of CLUSTER patch posted August 8. X-Git-Tag: REL7_3~960 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d1c641622364039cd1ba44c5bbdc1ca72d52f0bc;p=postgresql Update with newer version of CLUSTER patch posted August 8. > Looks like Alvaro got sideswiped by the system catalog indexing changes > I made over the weekend. It's a simple change, just reduce the whole > mess to a "CatalogUpdateIndexes()" call. I update two tuples, so I manually CatalogOpenIndexes() and CatalogIndexInsert() two times, as per comments in CatalogUpdateIndexes(). I also removed a couple of useless CommandCounterIncrement(), some useless definitions in src/include/commands/cluster.h and useless includes in src/backend/commands/cluster.c. This version passes the regression test I had made for previous versions. Alvaro Herrera --- diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index ff3ac9f8e5..9362c8f249 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -15,7 +15,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.84 2002/08/10 20:43:46 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.85 2002/08/10 21:00:34 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -29,12 +29,9 @@ #include "catalog/index.h" #include "catalog/indexing.h" #include "catalog/catname.h" -#include "catalog/pg_index.h" -#include "catalog/pg_proc.h" #include "commands/cluster.h" #include "commands/tablecmds.h" #include "miscadmin.h" -#include "utils/builtins.h" #include "utils/fmgroids.h" #include "utils/lsyscache.h" #include "utils/syscache.h" @@ -81,8 +78,6 @@ Relation RelationIdGetRelation(Oid relationId); * AccessExclusiveLock right before swapping the filenodes. * This would allow users to CLUSTER on a regular basis, * practically eliminating the need for auto-clustered indexes. - * - * Preserve constraint bit for the indexes. */ void cluster(RangeVar *oldrelation, char *oldindexname) @@ -349,9 +344,6 @@ recreate_indexattr(Oid OIDOldHeap, List *indexes) swap_relfilenodes(newIndexOID, attrs->indexOID); setRelhasindex(OIDOldHeap, true, attrs->isPrimary, InvalidOid); - /* I'm not sure this one is needed, but let's be safe. */ - CommandCounterIncrement(); - /* Destroy new index with old filenode */ object.classId = RelOid_pg_class; object.objectId = newIndexOID; @@ -380,11 +372,11 @@ swap_relfilenodes(Oid r1, Oid r2) * it every time. */ Relation relRelation, - irels[Num_pg_class_indices], rel; HeapTuple reltup[2]; Oid tempRFNode; int i; + CatalogIndexState indstate; /* We need both RelationRelationName tuples. */ relRelation = heap_openr(RelationRelationName, RowExclusiveLock); @@ -429,11 +421,10 @@ swap_relfilenodes(Oid r1, Oid r2) simple_heap_update(relRelation, &reltup[0]->t_self, reltup[0]); /* To keep system catalogs current. */ - CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, irels); - CatalogIndexInsert(irels, Num_pg_class_indices, relRelation, reltup[1]); - CatalogIndexInsert(irels, Num_pg_class_indices, relRelation, reltup[0]); - CatalogCloseIndices(Num_pg_class_indices, irels); - CommandCounterIncrement(); + indstate = CatalogOpenIndexes(relRelation); + CatalogIndexInsert(indstate, reltup[1]); + CatalogIndexInsert(indstate, reltup[0]); + CatalogCloseIndexes(indstate); heap_close(relRelation, NoLock); heap_freetuple(reltup[0]); diff --git a/src/include/commands/cluster.h b/src/include/commands/cluster.h index 3f4518b497..ff3a8d82d3 100644 --- a/src/include/commands/cluster.h +++ b/src/include/commands/cluster.h @@ -6,20 +6,13 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994-5, Regents of the University of California * - * $Id: cluster.h,v 1.14 2002/06/20 20:29:49 momjian Exp $ + * $Id: cluster.h,v 1.15 2002/08/10 21:00:34 momjian Exp $ * *------------------------------------------------------------------------- */ #ifndef CLUSTER_H #define CLUSTER_H -/* - * defines for contant stuff - */ -#define _TEMP_RELATION_KEY_ "clXXXXXXXX" -#define _SIZE_OF_TEMP_RELATION_KEY_ 11 - - /* * functions */