From 88192135348770fa97895bba0f0a92f1ffa85783 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Thu, 20 Mar 2003 18:53:18 +0000
Subject: [PATCH] Now that the CLUSTER ALL machinery is in place, the clusterdb
 script can be simplified (I'd thought that it can even be removed).  This
 patch does that.

Alvaro Herrera
---
 doc/src/sgml/ref/clusterdb.sgml | 16 ++++------------
 src/bin/scripts/clusterdb       | 30 ++++--------------------------
 2 files changed, 8 insertions(+), 38 deletions(-)

diff --git a/doc/src/sgml/ref/clusterdb.sgml b/doc/src/sgml/ref/clusterdb.sgml
index 4a158f334c8..5a7a27fcf63 100644
--- a/doc/src/sgml/ref/clusterdb.sgml
+++ b/doc/src/sgml/ref/clusterdb.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/clusterdb.sgml,v 1.7 2003/02/19 04:06:28 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/clusterdb.sgml,v 1.8 2003/03/20 18:53:18 momjian Exp $
 PostgreSQL documentation
 -->
 
@@ -43,7 +43,7 @@ PostgreSQL documentation
   <para>
    <application>clusterdb</application> is a shell script wrapper around the
    backend command
-   <xref linkend="SQL-CLUSTER" endterm="SQL-CLUSTER-title"> via
+   <xref linkend="SQL-CLUSTER" endterm="sql-cluster-title"> via
    the <productname>PostgreSQL</productname> interactive terminal
    <xref linkend="APP-PSQL">. There is no effective
    difference between clustering databases via this or other methods.
@@ -53,13 +53,6 @@ PostgreSQL documentation
    and the <application>libpq</application> front-end library do apply.
   </para>
 
-  <para>
-  <application>clusterdb</application> might need to connect several
-  times to the <productname>PostgreSQL</productname> server, asking for
-  a password each time. It is convenient to have a
-  <filename>$HOME/.pgpass</> file in such cases.
-  </para>
-
  </refsect1>
 
 
@@ -202,10 +195,9 @@ PostgreSQL documentation
       <listitem>
        <para>
         Something went wrong. <application>clusterdb</application> is only a wrapper
-        script. See <xref linkend="SQL-CLUSTER" endterm="SQL-CLUSTER-title">
+        script. See <xref linkend="SQL-CLUSTER" endterm="sql-cluster-title">
         and <xref linkend="APP-PSQL"> for a detailed
-        discussion of error messages and potential problems.  Note that this message
-		may appear once per table to be clustered.
+        discussion of error messages and potential problems.
        </para>
       </listitem>
      </varlistentry>
diff --git a/src/bin/scripts/clusterdb b/src/bin/scripts/clusterdb
index 4b9b7c845e9..35329531040 100644
--- a/src/bin/scripts/clusterdb
+++ b/src/bin/scripts/clusterdb
@@ -11,7 +11,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/clusterdb,v 1.9 2003/02/13 05:37:44 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/clusterdb,v 1.10 2003/03/20 18:53:18 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -156,34 +156,12 @@ fi
 for db in $dbname
 do
 	[ "$alldb" ] && echo "Clustering $db"
-	query="SELECT nspname, pg_class.relname, pg_class_2.relname FROM pg_class, pg_class AS pg_class_2 JOIN pg_namespace ON (pg_namespace.oid=relnamespace), pg_index WHERE pg_class.oid=pg_index.indrelid AND pg_class_2.oid=pg_index.indexrelid AND pg_index.indisclustered AND pg_class.relowner=(SELECT usesysid FROM pg_user WHERE usename=current_user)"
 	if [ -z "$table" ]; then
-		tables=`${PATHNAME}psql $db $PSQLOPT -F: -P format=unaligned -t -c "$query"`
+		${PATHNAME}psql $PSQLOPT $ECHOOPT -c "SET autocommit TO 'on';CLUSTER" -d $db
 		[ "$?" -ne 0 ] && exit 1
 	else
-		# if tablename has a dot, use it as namespace separator
-		if echo $table | grep -s '\.' 2>&1 >/dev/null
-		then
-			tbl=`echo $table | cut -d. -f2`
-			nspc=`echo $table | cut -d. -f1`
-			tables=`${PATHNAME}psql $db $PSQLOPT -F: -P format=unaligned -t -c "$query AND pg_class.relname='$tbl' AND nspname='$nspc'"`
-			echo $tables
-		else
-			tables=`${PATHNAME}psql $db $PSQLOPT -F: -P format=unaligned -t -c "$query AND pg_class.relname='$table'"`
-		fi
-	fi
-	query=
-	for tabs in $tables
-	do
-		nspc=`echo $tabs | cut -d: -f1`
-		tab=`echo $tabs | cut -d: -f2`
-		idx=`echo $tabs | cut -d: -f3`
-		query="$query CLUSTER $idx ON $nspc.$tab;"
-	done
-	${PATHNAME}psql $PSQLOPT $ECHOOPT -c "SET autocommit TO 'on';$query" -d $db
-	if [ "$?" -ne 0 ]
-	then
-		echo "$CMDNAME: While clustering $db, the following failed: $query" 1>&2
+		${PATHNAME}psql $PSQLOPT $ECHOOPT -c "SET autocommit TO 'on';CLUSTER $table" -d $db
+		[ "$?" -ne 0 ] && exit 1
 	fi
 done
 
-- 
GitLab