diff options
author | Bruce Momjian <bruce@momjian.us> | 2002-08-10 21:00:34 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2002-08-10 21:00:34 +0000 |
commit | d1c641622364039cd1ba44c5bbdc1ca72d52f0bc (patch) | |
tree | 4a2825acbdaa2bec1561b6d2a57cdc0f3bb77d13 /src/backend/commands/cluster.c | |
parent | 8db20b4a5db6f60bd815e76738fd75fd895e7eef (diff) | |
download | postgresql-d1c641622364039cd1ba44c5bbdc1ca72d52f0bc.tar.gz postgresql-d1c641622364039cd1ba44c5bbdc1ca72d52f0bc.zip |
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
Diffstat (limited to 'src/backend/commands/cluster.c')
-rw-r--r-- | src/backend/commands/cluster.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index ff3ac9f8e55..9362c8f2496 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]); |