Add "vacuumdb" utility to make it easier to clean databases.

Also supports the "analyze" mode, with or without specifying tables
 and columns.
This commit is contained in:
Thomas G. Lockhart 1998-11-14 01:58:15 +00:00
parent 69ff5b9c7e
commit 9f07f8f40f
2 changed files with 122 additions and 0 deletions

24
src/bin/vacuumdb/Makefile Normal file
View File

@ -0,0 +1,24 @@
#-------------------------------------------------------------------------
#
# Makefile--
# Makefile for bin/vacuumdb
#
# Copyright (c) 1994, Regents of the University of California
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/vacuumdb/Attic/Makefile,v 1.1 1998/11/14 01:58:14 thomas Exp $
#
#-------------------------------------------------------------------------
SRCDIR= ../..
include ../../Makefile.global
all: vacuumdb
install: vacuumdb
$(INSTALL) $(INSTL_EXE_OPTS) $< $(BINDIR)/$<
clean:
dep depend:

98
src/bin/vacuumdb/vacuumdb Normal file
View File

@ -0,0 +1,98 @@
#!/bin/sh
#-------------------------------------------------------------------------
#
# vacuumdb--
# vacuum a postgres database
#
# this program runs the monitor with the "-c" option to vacuum
# the requested database.
#
# Copyright (c) 1994, Regents of the University of California
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/vacuumdb/Attic/vacuumdb,v 1.1 1998/11/14 01:58:15 thomas Exp $
#
#-------------------------------------------------------------------------
CMDNAME=`basename $0`
if [ -z "$USER" ]; then
if [ -z "$LOGNAME" ]; then
if [ -z "`whoami`" ]; then
echo "$CMDNAME: cannot determine user name"
exit 1
fi
else
USER=$LOGNAME
export USER
fi
fi
dbname=$USER
PASSWDOPT="";
while test -n "$1"
do
case $1 in
--help) usage=1;;
--analyze) analyze="analyze";;
--table) table=$2; shift;;
--verbose) verbose="verbose";;
-a) AUTHSYS=$2; shift;;
-h) PGHOST=$2; shift;;
-p) PGPORT=$2; shift;;
-t) table=$2; shift;;
-u) PASSWDOPT=$1;;
-v) verbose="verbose";;
-z) analyze="analyze";;
-*) echo "$CMDNAME: unrecognized parameter $1"; usage=1;;
*) dbname=$1;;
esac
shift;
done
if [ "$usage" ]; then
echo "Usage: $CMDNAME -a <authtype> -h <server> -p <portnumber> --analyze --verbose [--table 'table[(cols)]'] [dbname]"
exit 1
fi
if [ -z "$AUTHSYS" ]; then
AUTHOPT=""
else
AUTHOPT="-a $AUTHSYS"
fi
if [ -z "$PGHOST" ]; then
PGHOSTOPT=""
else
PGHOSTOPT="-h $PGHOST"
fi
if [ -z "$PGPORT" ]; then
PGPORTOPT=""
else
PGPORTOPT="-p $PGPORT"
fi
if [ -z "$dbpath" ]; then
location=""
else
# if [ ! -d "$dbpath"/base ]; then
# echo "$CMDNAME: database creation failed on $dbname."
# echo "directory $dbpath/base not found."
# exit 1
# fi
location="with location = '$dbpath'"
fi
psql $PASSWDOPT -tq $AUTHOPT $PGHOSTOPT $PGPORTOPT -c "vacuum $verbose $analyze $table" $dbname
if [ $? -ne 0 ]; then
echo "$CMDNAME: database vacuum failed on $dbname."
exit 1
fi
exit 0