From d1c641622364039cd1ba44c5bbdc1ca72d52f0bc Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sat, 10 Aug 2002 21:00:34 +0000
Subject: [PATCH] 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
---
 src/backend/commands/cluster.c | 21 ++++++---------------
 src/include/commands/cluster.h |  9 +--------
 2 files changed, 7 insertions(+), 23 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]);
diff --git a/src/include/commands/cluster.h b/src/include/commands/cluster.h
index 3f4518b4970..ff3a8d82d39 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
  */
-- 
GitLab