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:
parent
69ff5b9c7e
commit
9f07f8f40f
|
@ -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:
|
|
@ -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
|
Loading…
Reference in New Issue