Now that the CLUSTER ALL machinery is in place, the clusterdb script can
authorBruce Momjian
Thu, 20 Mar 2003 18:53:18 +0000 (18:53 +0000)
committerBruce Momjian
Thu, 20 Mar 2003 18:53:18 +0000 (18:53 +0000)
be simplified (I'd thought that it can even be removed).  This patch
does that.

Alvaro Herrera

doc/src/sgml/ref/clusterdb.sgml
src/bin/scripts/clusterdb

index 4a158f334c854ac9266710168efec2425324b41f..5a7a27fcf6322d88ab0936b313dbfa446103d078 100644 (file)
@@ -1,5 +1,5 @@
 
 
@@ -43,7 +43,7 @@ PostgreSQL documentation
   
    clusterdb is a shell script wrapper around the
    backend command
-   SQL-CLUSTER-title"> via
+   sql-cluster-title"> via
    the PostgreSQL interactive terminal
    . There is no effective
    difference between clustering databases via this or other methods.
@@ -53,13 +53,6 @@ PostgreSQL documentation
    and the libpq front-end library do apply.
   
 
-  
-  clusterdb might need to connect several
-  times to the PostgreSQL server, asking for
-  a password each time. It is convenient to have a
-  $HOME/.pgpass file in such cases.
-  
-
  
 
 
@@ -202,10 +195,9 @@ PostgreSQL documentation
       
        
         Something went wrong. clusterdb is only a wrapper
-        script. See SQL-CLUSTER-title">
+        script. See sql-cluster-title">
         and  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.
        
       
      
index 4b9b7c845e99ad8b3f087cbc7cb8ecaf5560fd9c..353295310401505430fda2c2b288cbd4a0d5a903 100644 (file)
@@ -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