diff --git a/src/bin/scripts/clusterdb b/src/bin/scripts/clusterdb
index 33d5967dde1c50b29207f9f5bd761a31f8c3eefe..dd3021ae7b638ea63e88ff0acb1e14cdc5608923 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.2 2002/09/07 16:12:27 petere Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/clusterdb,v 1.3 2002/09/12 00:18:14 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -121,7 +121,7 @@ if [ "$usage" ]; then
 	echo "  -W, --password                  Prompt for password"
 	echo "  -d, --dbname=DBNAME             Database to cluster"
 	echo "  -a, --all                       Cluster all databases"
-	echo "  -t, --table='TABLE[(columns)]'  Cluster specific table only"
+	echo "  -t, --table='TABLE'             Cluster specific table only"
 	echo "  -v, --verbose                   Write a lot of output"
 	echo "  -e, --echo                      Show the command being sent to the backend"
 	echo "  -q, --quiet                     Don't write any output"
@@ -152,25 +152,35 @@ fi
 
 for db in $dbname
 do
-	[ "$alldb" -a "$quiet" -ne 1 ] && echo "Clustering $db"
-	query="SELECT pg_class.relname, pg_class_2.relname FROM pg_class, \
-		pg_class AS pg_class_2, pg_index WHERE pg_class.oid=pg_index.indrelid\
-		AND pg_class_2.oid=pg_index.indexrelid AND pg_index.indisclustered"
+	[ "$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"
 	if [ -z "$table" ]; then
 		tables=`${PATHNAME}psql $db $PSQLOPT -F: -P format=unaligned -t -c "$query"`
 	else
-		tables=`${PATHNAME}psql $db $PSQLOPT -F: -P format=unaligned -t -c \
-		"$query AND pg_class.relname='$table'"`
+		# 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
-		tab=`echo $tabs | cut -d: -f1`
-		idx=`echo $tabs | cut -d: -f2`
-		${PATHNAME}psql $PSQLOPT $ECHOOPT -c "CLUSTER $idx on $tab" -d $db
-		if [ "$?" -ne 0 ]; then
-			echo "$CMDNAME: cluster $table $db failed" 1>&2
-		fi
+		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 "$query" -d $db
+	if [ "$?" -ne 0 ]
+	then
+		echo "$CMDNAME: While clustering $db, the following failed: $query" 1>&2
+	fi
 done
 
 exit 0