From a0aab48fcd86e3a167c5bd16bb8a16b8a85e9332 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Tue, 7 Dec 1999 22:41:44 +0000
Subject: [PATCH] Okay, that should put us back in sync. These two patches (src
 & doc) are against the sources from one hour ago and contain all the portable
 and up to date stuff.

A few other CVS "householding" things you might want to take care of:

* Remove the src/bin/cleardbdir directory

* Remove the file src/bin/psql/sql_help.h from the repository, as it is
a derived file and is build by the release_prep.

Peter Eisentraut
---
 doc/src/sgml/install.sgml        |  10 +-
 doc/src/sgml/manage-ag.sgml      |   2 +-
 doc/src/sgml/manage.sgml         |   2 +-
 doc/src/sgml/ref/createdb.sgml   |  12 +-
 doc/src/sgml/ref/createuser.sgml |  22 ++--
 doc/src/sgml/ref/drop_user.sgml  |   6 +-
 doc/src/sgml/ref/dropdb.sgml     |   4 +-
 doc/src/sgml/ref/dropuser.sgml   |  12 +-
 doc/src/sgml/ref/vacuum.sgml     |   4 +-
 doc/src/sgml/ref/vacuumdb.sgml   | 189 ++++++++++++++-----------------
 doc/src/sgml/regress.sgml        |   2 +-
 doc/src/sgml/start-ag.sgml       |   4 +-
 doc/src/sgml/start.sgml          |   2 +-
 src/bin/scripts/createdb         |  71 +++++++++---
 src/bin/scripts/createlang.sh    |   2 +-
 src/bin/scripts/createuser       |  71 +++++++++---
 src/bin/scripts/dropdb           |  30 ++++-
 src/bin/scripts/droplang         |  13 ++-
 src/bin/scripts/dropuser         |  49 ++++++--
 src/bin/scripts/vacuumdb         |  50 ++++++--
 20 files changed, 361 insertions(+), 196 deletions(-)

diff --git a/doc/src/sgml/install.sgml b/doc/src/sgml/install.sgml
index b79bd35600d..8973307dde0 100644
--- a/doc/src/sgml/install.sgml
+++ b/doc/src/sgml/install.sgml
@@ -808,7 +808,7 @@ $ nohup postmaster -i > pgserver.log 2>&1 &
 <para>
 Create a database by typing
 <ProgramListing>
-$ createdb
+$ createdb test
 </ProgramListing>
 </para>
 </step>
@@ -816,7 +816,7 @@ $ createdb
 <para>
 Connect to the new database:
 <ProgramListing>
-$ psql
+$ psql test
 </ProgramListing>
 </para>
 </step>
@@ -840,7 +840,7 @@ postgres=> \q
 <para>
 Remove the test database (unless you will want to use it later for other tests):
 <ProgramListing>
-$ destroydb
+$ dropdb test
 </ProgramListing>
 </para>
 </step>
@@ -1028,7 +1028,7 @@ For example,
      After running the regression tests, type
 
 <ProgramListing>
-$ destroydb regression
+$ dropdb regression
 $ cd /usr/src/pgsql/postgresql-6.5.3/src/test/regress
 $ gmake clean
 </ProgramListing>
@@ -1241,7 +1241,7 @@ Create the database foo:
 
 <ProgramListing>
 template1=> create database foo;
-CREATEDB
+CREATE DATABASE
 </ProgramListing>
 
 (Get in the habit of including those SQL semicolons.  Psql won't execute
diff --git a/doc/src/sgml/manage-ag.sgml b/doc/src/sgml/manage-ag.sgml
index fb493065922..4e996fa3137 100644
--- a/doc/src/sgml/manage-ag.sgml
+++ b/doc/src/sgml/manage-ag.sgml
@@ -143,7 +143,7 @@ You are currently connected to the database: <replaceable>dbname</replaceable>
     mydb,  you can destroy it using the following Unix command:
 
     <programlisting>
-% destroydb <replaceable class="parameter">dbname</replaceable>
+% dropdb <replaceable class="parameter">dbname</replaceable>
     </programlisting>
 
     This action physically removes all of  the  Unix  files
diff --git a/doc/src/sgml/manage.sgml b/doc/src/sgml/manage.sgml
index 645e1a25442..d4acd9d7bd3 100644
--- a/doc/src/sgml/manage.sgml
+++ b/doc/src/sgml/manage.sgml
@@ -283,7 +283,7 @@ TBD
      If you are the database administrator for the  database
      <Database>mydb</Database>,  you can destroy it using the following Unix command:
 <ProgramListing>
-% destroydb mydb
+% dropdb mydb
 </ProgramListing>
      This action physically removes all of  the  Unix  files
      associated  with  the database and cannot be undone, so
diff --git a/doc/src/sgml/ref/createdb.sgml b/doc/src/sgml/ref/createdb.sgml
index 902823b8226..bdb1e189a0c 100644
--- a/doc/src/sgml/ref/createdb.sgml
+++ b/doc/src/sgml/ref/createdb.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/createdb.sgml,v 1.7 1999/12/04 04:53:15 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/createdb.sgml,v 1.8 1999/12/07 22:41:41 momjian Exp $
 Postgres documentation
 -->
 
@@ -96,7 +96,7 @@ createdb [ <replaceable class="parameter">options</replaceable> ] <replaceable c
      </varlistentry>
 
      <varlistentry>
-      <term>-D, --dbpath <replaceable class="parameter">datadir</replaceable></term>
+      <term>-D, --location <replaceable class="parameter">datadir</replaceable></term>
       <listitem>
        <para>
 	Specifies the alternate database location for this database installation.
@@ -120,7 +120,7 @@ createdb [ <replaceable class="parameter">options</replaceable> ] <replaceable c
       <listitem>
        <para>
 	Specifies the name of the database to be created.  The name must be
-	unique among all <productname>Postgres</productname> databases in this installation.
+	unique among all <productname>PostgreSQL</productname> databases in this installation.
        </para>
       </listitem>
      </varlistentry>
@@ -167,7 +167,7 @@ createdb [ <replaceable class="parameter">options</replaceable> ] <replaceable c
      </varlistentry>
 
      <varlistentry>
-      <term><computeroutput>createdb: Comment creation failed.</computeroutput></term>
+      <term><computeroutput>createdb: Comment creation failed. (Database was created.)</computeroutput></term>
       <listitem>
        <para>
        The comment/description for the database could not be created.
@@ -235,11 +235,11 @@ CREATE DATABASE
   <para>
    To create the database <literal>demo</literal>
    using the postmaster on host eden, port 5000, using the <literal>LATIN1</literal>
-   encoding scheme and look at the underlying query:
+   encoding scheme with a look at the underlying query:
 
    <programlisting>
 $ <userinput>createdb -p 5000 -h eden -E LATIN1 -e demo</userinput>
-QUERY: CREATE DATABASE "demo" WITH ENCODING = 'LATIN1'
+CREATE DATABASE "demo" WITH ENCODING = 'LATIN1'
 CREATE DATABASE
    </programlisting>
   </para>
diff --git a/doc/src/sgml/ref/createuser.sgml b/doc/src/sgml/ref/createuser.sgml
index 0a030225de3..dc0eeb8edce 100644
--- a/doc/src/sgml/ref/createuser.sgml
+++ b/doc/src/sgml/ref/createuser.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/createuser.sgml,v 1.6 1999/12/04 04:53:15 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/createuser.sgml,v 1.7 1999/12/07 22:41:41 momjian Exp $
 Postgres documentation
 -->
 
@@ -125,6 +125,16 @@ createuser [ <replaceable class="parameter">options</replaceable> ] [ <replaceab
       </listitem>
      </varlistentry>
 
+     <varlistentry>
+      <term>-i, --sysid <replaceable class="parameter">uid</replaceable></term>
+      <listitem>
+       <para>
+       Allows you to pick a non-default user id for the new user. This is not
+       necessary, but some people like it.
+       </para>
+      </listitem>
+     </varlistentry>
+
      <varlistentry>
       <term><replaceable class="parameter">username</replaceable></term>
       <listitem>
@@ -142,11 +152,9 @@ createuser [ <replaceable class="parameter">options</replaceable> ] [ <replaceab
 
     <para>
     The options <literal>-h</literal>, <literal>-p</literal>, and <literal>-e</literal>,
-    are passed on literally to <xref linkend="APP-PSQL" endterm="APP-PSQL-title">. If you
-    need the <application>psql</application> options <literal>-U</literal> and
-    <literal>-W</literal> as well, you can uncomment the
-    respective lines in the source. They are disabled by default because of the potential
-    conceptual confusion between existing and new users.
+    are passed on literally to <xref linkend="APP-PSQL" endterm="APP-PSQL-title">. The
+    <application>psql</application> options <literal>-U</literal> and <literal>-W</literal>
+    are available as well, but their use can be confusing in this context.
    </para>
   </refsect2>
 
@@ -243,7 +251,7 @@ CREATE USER
 
    <programlisting>
 $ <userinput>createuser -p 5000 -h eden -D -A -e joe</userinput>
-QUERY: CREATE USER "joe" NOCREATEDB NOCREATEUSER
+CREATE USER "joe" NOCREATEDB NOCREATEUSER
 CREATE USER
    </programlisting>
   </para>
diff --git a/doc/src/sgml/ref/drop_user.sgml b/doc/src/sgml/ref/drop_user.sgml
index 5289ed674ca..27f339f82dc 100644
--- a/doc/src/sgml/ref/drop_user.sgml
+++ b/doc/src/sgml/ref/drop_user.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_user.sgml,v 1.8 1999/12/04 04:53:15 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_user.sgml,v 1.9 1999/12/07 22:41:41 momjian Exp $
 Postgres documentation
 -->
 
@@ -94,9 +94,7 @@ ERROR: removeUser: user "<replaceable class="parameter">name</replaceable>" does
    user from the database,
    along with any databases owned by the user. It
    does not remove tables, views, or triggers owned by the
-   named user in databases not owned by the user. This statement
-   can be used in place of the <application>dropuser</application>
-   script, regardless of how the user was created.
+   named user in databases not owned by the user.
   </para>
 
   <refsect2 id="R2-SQL-DROPUSER-3">
diff --git a/doc/src/sgml/ref/dropdb.sgml b/doc/src/sgml/ref/dropdb.sgml
index f0fd44a35f7..c695e9c9e4b 100644
--- a/doc/src/sgml/ref/dropdb.sgml
+++ b/doc/src/sgml/ref/dropdb.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/dropdb.sgml,v 1.1 1999/12/04 04:53:15 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/dropdb.sgml,v 1.2 1999/12/07 22:41:41 momjian Exp $
 Postgres documentation
 -->
 
@@ -207,7 +207,7 @@ DROP DATABASE
 $ <userinput>dropdb -p 5000 -h eden -i -e demo</userinput>
 Database "demo" will be permanently deleted.
 Are you sure? (y/n) <userinput>y</userinput>
-QUERY: DROP DATABASE "demo"
+DROP DATABASE "demo"
 DROP DATABASE
    </programlisting>
   </para>
diff --git a/doc/src/sgml/ref/dropuser.sgml b/doc/src/sgml/ref/dropuser.sgml
index 981a8003143..80a2a715762 100644
--- a/doc/src/sgml/ref/dropuser.sgml
+++ b/doc/src/sgml/ref/dropuser.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/dropuser.sgml,v 1.1 1999/12/04 04:53:15 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/dropuser.sgml,v 1.2 1999/12/07 22:41:41 momjian Exp $
 Postgres documentation
 -->
 
@@ -101,11 +101,9 @@ dropuser [ <replaceable class="parameter">options</replaceable> ] [ <replaceable
 
     <para>
     The options <literal>-h</literal>, <literal>-p</literal>, and <literal>-e</literal>,
-    are passed on literally to <xref linkend="APP-PSQL" endterm="APP-PSQL-title">. If you
-    need the <application>psql</application> options <literal>-U</literal> and
-    <literal>-W</literal> as well, you can uncomment the
-    respective lines in the source. They are disabled by default because of the potential
-    conceptual confusion between existing and new users.
+    are passed on literally to <xref linkend="APP-PSQL" endterm="APP-PSQL-title">. The
+    <application>psql</application> options <literal>-U</literal> and <literal>-W</literal>
+    are available as well, but they can be confusing in this context.
    </para>
   </refsect2>
 
@@ -201,7 +199,7 @@ DROP USER
 $ <userinput>dropuser -p 5000 -h eden -i -e joe</userinput>
 User "joe" and any owned databases will be permanently deleted.
 Are you sure? (y/n) <userinput>y</userinput>
-QUERY: DROP USER "joe"
+DROP USER "joe"
 DROP USER
    </programlisting>
   </para>
diff --git a/doc/src/sgml/ref/vacuum.sgml b/doc/src/sgml/ref/vacuum.sgml
index e7761397a0f..6511563523c 100644
--- a/doc/src/sgml/ref/vacuum.sgml
+++ b/doc/src/sgml/ref/vacuum.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/vacuum.sgml,v 1.6 1999/11/28 02:17:04 tgl Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/vacuum.sgml,v 1.7 1999/12/07 22:41:41 momjian Exp $
 Postgres documentation
 -->
 
@@ -24,7 +24,7 @@ Postgres documentation
   </refsynopsisdivinfo>
   <synopsis>
 VACUUM [ VERBOSE ] [ ANALYZE ] [ <replaceable class="PARAMETER">table</replaceable> ]
-VACUUM [ VERBOSE ] ANALYZE [ <replaceable class="PARAMETER">ER">t</replaceable>BLE> [ (<replaceable class="PARAMETER">column</replaceable> [, ...] ) ] ]
+VACUUM [ VERBOSE ] ANALYZE [ <replaceable class="PARAMETER">table</replaceable> [ (<replaceable class="PARAMETER">column</replaceable> [, ...] ) ] ]
   </synopsis>
 
   <refsect2 id="R2-SQL-VACUUM-1">
diff --git a/doc/src/sgml/ref/vacuumdb.sgml b/doc/src/sgml/ref/vacuumdb.sgml
index 1bff5bb1c0d..96a4f06d6a1 100644
--- a/doc/src/sgml/ref/vacuumdb.sgml
+++ b/doc/src/sgml/ref/vacuumdb.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/vacuumdb.sgml,v 1.5 1999/07/22 15:09:15 thomas Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/vacuumdb.sgml,v 1.6 1999/12/07 22:41:41 momjian Exp $
 Postgres documentation
 -->
 
@@ -15,23 +15,21 @@ Postgres documentation
    <application>vacuumdb</application>
   </refname>
   <refpurpose>
-   Clean and analyze a <productname>Postgres</productname> database
+   Clean and analyze a <productname>PostgreSQL</productname> database
   </refpurpose>
  </refnamediv>
  <refsynopsisdiv>
   <refsynopsisdivinfo>
-   <date>1998-10-04</date>
+   <date>1999-12-04</date>
   </refsynopsisdivinfo>
   <synopsis>
-vacuumdb [ --analyze | -z ] [ --verbose | -v ] [ <replaceable class="parameter">dbname</replaceable> ]
-vacuumdb [ -h <replaceable class="parameter">host</replaceable> ] [ -p <replaceable class="parameter">port</replaceable> ]
-    [ --table '<replaceable class="parameter">table</replaceable> [ ( <replaceable class="parameter">column</replaceable> [,...] ) ]' ]
-    [ <replaceable class="parameter">dbname</replaceable> ]
+vacuumdb [ <replaceable class="parameter">connection options</replaceable> ] [ --analyze | -z ] [ --verbose | -v ]
+         [ --table '<replaceable class="parameter">table</replaceable> [ ( <replaceable class="parameter">column</replaceable> [,...] ) ]' ] [ [-d] <replaceable class="parameter">dbname</replaceable> ]
   </synopsis>
 
   <refsect2 id="R2-APP-VACUUMDB-1">
    <refsect2info>
-    <date>1998-10-04</date>
+    <date>1999-12-04</date>
    </refsect2info>
    <title>
     Inputs
@@ -41,21 +39,16 @@ vacuumdb [ -h <replaceable class="parameter">host</replaceable> ] [ -p <replacea
     
     <variablelist>
      <varlistentry>
-      <term><replaceable class="parameter">dbname</replaceable></term>
+      <term>[-d, --dbname] <replaceable class="parameter">dbname</replaceable></term>
       <listitem>
        <para>
 	Specifies the name of the database to be cleaned or analyzed.
-	<replaceable class="parameter">dbname</replaceable>
-	defaults to the value of the
-	<envar>USER</envar>
-	environment variable.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term>--analyze</term>
-      <term>-z</term>
+      <term>-z, --analyze</term>
       <listitem>
        <para>
 	Calculate statistics on the database for use by the optimizer.
@@ -64,8 +57,7 @@ vacuumdb [ -h <replaceable class="parameter">host</replaceable> ] [ -p <replacea
      </varlistentry>
 
      <varlistentry>
-      <term>--verbose</term>
-      <term>-v</term>
+      <term>-v, --verbose</term>
       <listitem>
        <para>
 	Print detailed information during processing.
@@ -74,14 +66,19 @@ vacuumdb [ -h <replaceable class="parameter">host</replaceable> ] [ -p <replacea
      </varlistentry>
 
      <varlistentry>
-      <term>--table <replaceable class="parameter">table</replaceable> [ (<replaceable class="parameter">column</replaceable> [,...]) ]</term>
-      <term>-t <replaceable class="parameter">table</replaceable> [ (<replaceable class="parameter">column</replaceable> [,...]) ]</term>
+      <term>-t, --table <replaceable class="parameter">table</replaceable> [ (<replaceable class="parameter">column</replaceable> [,...]) ]</term>
       <listitem>
        <para>
 	Clean or analyze <replaceable class="parameter">table</replaceable> only.
 	Column names may be specified only in conjunction with
 	the <option>--analyze</option> option.
        </para>
+       <tip>
+        <para>
+         If you specify columns to vacuum, you probably have to escape the parentheses
+         from the shell.
+        </para>
+       </tip>
       </listitem>
      </varlistentry>
 
@@ -94,38 +91,60 @@ vacuumdb [ -h <replaceable class="parameter">host</replaceable> ] [ -p <replacea
     
     <variablelist>
      <varlistentry>
-      <term>-h <replaceable class="parameter">host</replaceable></term>
+      <term>-h, --host <replaceable class="parameter">host</replaceable></term>
       <listitem>
        <para>
 	Specifies the hostname of the machine on which the 
 	<application>postmaster</application>
-	is running.  Defaults to using a local Unix domain socket
-	rather than an IP connection..
+	is running.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term>-p <replaceable class="parameter">port</replaceable></term>
+      <term>-p, --port <replaceable class="parameter">port</replaceable></term>
       <listitem>
        <para>
 	Specifies the Internet TCP/IP port or local Unix domain socket file 
 	extension on which the <application>postmaster</application>
-	is listening for connections.  The port number defaults to 5432,
-	or the value of the <envar>PGPORT</envar>
-	environment variable (if set).
+	is listening for connections.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-U, --username <replaceable class="parameter">username</replaceable></term>
+      <listitem>
+       <para>
+        Username to connect as.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-W, --password</term>
+      <listitem>
+       <para>
+        Force password prompt.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>-e, --echo</term>
+      <listitem>
+       <para>
+        Echo the commands that <application>vacuumdb</application> generates
+	and sends to the backend.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term>-u</term>
+      <term>-q, --quiet</term>
       <listitem>
        <para>
-	Use password authentication. 
-	Prompts for
-	<replaceable class="parameter">username</replaceable>
-	and <replaceable class="parameter">password</replaceable>.
+        Do not display a response.
        </para>
       </listitem>
      </varlistentry>
@@ -135,79 +154,46 @@ vacuumdb [ -h <replaceable class="parameter">host</replaceable> ] [ -p <replacea
 
   <refsect2 id="R2-APP-VACUUMDB-2">
    <refsect2info>
-    <date>1998-10-04</date>
+    <date>1999-12-04</date>
    </refsect2info>
    <title>
     Outputs
    </title>
    <para>
-    <application>vacuumdb</application> executes a <command>VACUUM</command> command
-    on the specified database, so has not explicit external output.
-
     <variablelist>
      <varlistentry>
-      <term><computeroutput>
-ERROR:  Can't vacuum columns, only tables.  You can 'vacuum analyze' columns.
-vacuumdb: database vacuum failed on <replaceable class="parameter">dbname</replaceable>.
-       </computeroutput></term>
+      <term><computeroutput>VACUUM</computeroutput></term>
       <listitem>
        <para>
-	The non-analyze mode requires cleaning full tables or databases.
-	Individual columns may be specified only when analyzing a specific table.
+        Everything went well.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><computeroutput>
-Connection to database 'template1' failed.
-connectDB() failed: Is the postmaster running and accepting connections
-at 'UNIX Socket' on port '<replaceable class="parameter">port</replaceable>'?
-       </computeroutput></term>
+      <term><computeroutput>vacuumdb: Vacuum failed.</computeroutput></term>
       <listitem>
        <para>
-	<application>vacuumdb</application> could not attach to the 
-	<application>postmaster</application> 
-	process on the specified host and port.  If you see this message,
-	ensure that the <application>postmaster</application> 
-	is running on the proper host and that you have specified the proper
-	port.  If your site uses an authentication system, ensure that you
-	have obtained the required authentication credentials.
+        Something went wrong. <application>vacuumdb</application> is only a wrapper
+        script. See <xref linkend="SQL-VACUUM" endterm="SQL-VACUUM-title">
+        and <xref linkend="APP-PSQL" endterm="APP-PSQL-title"> for a detailed
+        discussion of error messages and potential problems.
        </para>
       </listitem>
      </varlistentry>
 
-     <varlistentry>
-      <term><computeroutput>
-Connection to database '<replaceable class="parameter">dbname</replaceable>' failed.
-FATAL 1:  SetUserId: user '<replaceable class="parameter">username</replaceable>' is not in 'pg_shadow'
-       </computeroutput></term>
-      <listitem>
-       <para>
-	You do not have a valid entry in the relation <literal>pg_shadow</literal>
-	and and will not be allowed to access <productname>Postgres</productname>. 
-	Contact your <productname>Postgres</productname> administrator.
-       </para>
-      </listitem>
-     </varlistentry>
     </variablelist>
    </para>
 
-   <note>
-    <para>
-     <application>vacuumdb</application> internally executes a
-     <command>VACUUM</command> <acronym>SQL</acronym> statement. 
-     If you have problems running <application>vacuumdb</application>,
-     make sure you are able to run <command>VACUUM</command> on the database using, for
-     example, <application>psql</application>.
-    </para>
-   </note>
+   <para>
+   </para>
+
   </refsect2>
  </refsynopsisdiv>
  
  <refsect1 id="R1-APP-VACUUMDB-1">
   <refsect1info>
-   <date>1998-10-04</date>
+   <date>1999-12-04</date>
   </refsect1info>
   <title>
    Description
@@ -215,25 +201,26 @@ FATAL 1:  SetUserId: user '<replaceable class="parameter">username</replaceable>
 
   <para>
    <application>vacuumdb</application> is a utility for cleaning a
-   <productname>Postgres</productname> database.
+   <productname>PostgreSQL</productname> database.
    <application>vacuumdb</application> will also generate internal statistics
    used by the <productname>Postgres</productname> query optimizer.
   </para>
- </refsect1>
-
- <refsect1 id="R1-APP-VACUUMDB-2">
-  <refsect1info>
-   <date>1998-10-04</date>
-  </refsect1info>
-  <title>
-   Notes
-  </title>
 
   <para>
-   See <xref endterm="sql-vacuum-title" linkend="sql-vacuum-title"> for more details.
+   <application>vacuumdb</application> is a shell script wrapper around the
+   backend command
+   <xref linkend="SQL-VACUUM" endterm="SQL-VACUUM-title"> via
+   the <productname>PostgreSQL</productname> interactive terminal
+   <xref linkend="APP-PSQL" endterm="APP-PSQL-title">. There is no effective
+   difference between vacuuming databases via this or other methods.
+   <application>psql</application> must be found by the script and
+   a database server must be running at the targeted host. Also, any default
+   settings and environment variables available to <application>psql</application>
+   and the <application>libpq</application> front-end library do apply.
   </para>
+
  </refsect1>
- 
+
  <refsect1 id="R1-APP-VACUUMDB-3">
   <refsect1info>
    <date>1998-10-04</date>
@@ -241,29 +228,29 @@ FATAL 1:  SetUserId: user '<replaceable class="parameter">username</replaceable>
   <title>
    Usage
   </title>
+
   <para>
-   To clean a database of the same name as the user:
-   
-   <programlisting>
-% vacuumdb
-   </programlisting>
+   To clean the database <literal>test</literal>:
+<programlisting>
+$ vacuumdb test
+</programlisting>
   </para>
 
   <para>
    To analyze a database named <literal>bigdb</literal> for the optimizer:
-
-   <programlisting>
-% vacuumdb --analyze bigdb
-   </programlisting>
+<programlisting>
+$ vacuumdb --analyze bigdb
+</programlisting>
   </para>
+
   <para>
    To analyze a single column <literal>bar</literal> in table <literal>foo</literal>
    in a database named <literal>xyzzy</literal> for the optimizer:
-
-   <programlisting>
-% vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy
-   </programlisting>
+<programlisting>
+$ vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy
+</programlisting>
   </para>
+
  </refsect1>
 </refentry>
 
diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml
index 62843345a43..380f42801b1 100644
--- a/doc/src/sgml/regress.sgml
+++ b/doc/src/sgml/regress.sgml
@@ -246,7 +246,7 @@ The runtime path is /usr/local/pgsql (other paths are possible).
 	<Para>
 	  After running the tests and examining the results, type
 	  <ProgramListing>
-	    destroydb regression
+	    dropdb regression
 	    cd /usr/src/pgsql/src/test/regress
 	    gmake clean
 	  </ProgramListing>
diff --git a/doc/src/sgml/start-ag.sgml b/doc/src/sgml/start-ag.sgml
index 19ce761bfd2..547b26f968a 100644
--- a/doc/src/sgml/start-ag.sgml
+++ b/doc/src/sgml/start-ag.sgml
@@ -10,7 +10,7 @@
   <para>
    <application>createuser</application> enables specific users to access
    <productname>Postgres</productname>.  
-   <application>destroyuser</application> removes  users  and
+   <application>dropuser</application> removes  users  and
    prevents them from accessing <productname>Postgres</productname>.
   </para>
 
@@ -115,7 +115,7 @@ Creating Postgres database system directory /home/postgres/data/base
 
     <programlisting>
 % createdb -D PGDATA2 test
-% destroydb test
+% dropdb test
     </programlisting>
 
    </para>
diff --git a/doc/src/sgml/start.sgml b/doc/src/sgml/start.sgml
index c146d7100c7..eb390b6722e 100644
--- a/doc/src/sgml/start.sgml
+++ b/doc/src/sgml/start.sgml
@@ -305,7 +305,7 @@ mydb=> \q
      If you are the database administrator for the  database
      <Database>mydb</Database>,  you can destroy it using the following Unix command:
 <ProgramListing>
-% destroydb mydb
+% dropdb mydb
 </ProgramListing>
      This action physically removes all of  the  Unix  files
      associated  with  the database and cannot be undone, so
diff --git a/src/bin/scripts/createdb b/src/bin/scripts/createdb
index 43533a30ff4..bed7c3bec7d 100644
--- a/src/bin/scripts/createdb
+++ b/src/bin/scripts/createdb
@@ -1,7 +1,7 @@
 #!/bin/sh
 #-------------------------------------------------------------------------
 #
-# createdb.sh--
+# createdb--
 #    create a postgres database
 #
 #    This program runs psql with the "-c" option to create
@@ -11,7 +11,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createdb,v 1.1 1999/12/04 04:53:21 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createdb,v 1.2 1999/12/07 22:41:44 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -21,6 +21,7 @@ MB=
 PSQLOPT=
 dbname=
 dbcomment=
+dbpath=
 
 while [ $# -gt 0 ]
 do
@@ -33,12 +34,33 @@ do
 	--host|-h)
 		PSQLOPT="$PSQLOPT -h $2"
 		shift;;
+        -h*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --host=*)
+                PSQLOPT="$PSQLOPT -h "`echo $1 | sed 's/^--host=//'`
+                ;;
 	--port|-p)
 		PSQLOPT="$PSQLOPT -p $2"
 		shift;;
+        -p*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --port=*)
+                PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'`
+                ;;
 	--user|--username|-U)
-		PSQLOPT="$PSQLOPT -U $2"
+		PSQLOPT="$PSQLOPT -U '$2'"
 		shift;;
+        -U*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --user=*)
+                PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--user=//'`
+                ;;
+        --username=*)
+                PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--username=//'`
+                ;;
 	--password|-W)
 		PSQLOPT="$PSQLOPT -W"
 		;;
@@ -49,18 +71,24 @@ do
 		PSQLOPT="$PSQLOPT -o /dev/null"
 		;;
 # options converted into SQL command
-	--dbpath|-D)
+	--location|-D)
 		dbpath="$2"
 		shift;;
+        -D*)
+                dbpath=`echo $1 | sed 's/^-D//'`
+                ;;
+        --location=*)
+                dbpath=`echo $1 | sed 's/^--location=//'`
+                ;;
 	--encoding|-E)
 		MB=$2
-		shift
-		if [ -z `pg_encoding $MB` ]; then
-			echo "$CMDNAME: $MB is not a valid encoding name"
-			exit 1
-		fi
-		;;
-
+		shift;;
+        -E*)
+                MB=`echo $1 | sed 's/^-E//'`
+                ;;
+        --encoding=*)
+                MB=`echo $1 | sed 's/^--encoding=//'`
+                ;;
 	-*)
 		echo "$CMDNAME: Unrecognized option: $1. Try -? for help."
 		exit 1
@@ -78,17 +106,26 @@ done
 
 
 if [ "$usage" ]; then
-	echo "Usage: $CMDNAME [-h <server>] [-p <port>] [-D <path>] \\"
-	echo "       [-E <encoding>] [-U <username>] [-W] dbname [description]"
+	echo "Usage: $CMDNAME [-h server] [-p port] [-D path] \\"
+	echo "       [-E encoding] [-U username] dbname [description]"
 	exit 0
 fi
 
+
+if [ "$MB" -a -z "`pg_encoding '$MB'`" ]; then
+	echo "$CMDNAME: \"$MB\" is not a valid encoding name."
+	exit 1
+fi
+
 if [ -z "$dbname" ]; then
 	echo "$CMDNAME: Missing required argument database name. Try -? for help."
 	exit 1
 fi
 
 
+dbpath=`echo $dbpath | sed "s/'/\\\\\'/g"`
+dbname=`echo $dbname | sed 's/\"/\\\"/g'`
+
 withstring=
 [ "$dbpath" ] &&     withstring="$withstring LOCATION = '$dbpath'"
 [ "$MB" ] &&         withstring="$withstring ENCODING = '$MB'"
@@ -103,10 +140,12 @@ fi
 # Insert comment as well, if requested
 [ -z "$dbcomment" ] && exit 0
 
-psql $PSQLOPT -d template1 -c "COMMENT ON DATABASE \"$dbname\" IS \'$dbcomment\'"
+dbcomment=`echo $dbcomment | sed "s/'/\\\\\'/g"`
+
+psql $PSQLOPT -d template1 -c "COMMENT ON DATABASE \"$dbname\" IS '$dbcomment'"
 if [ $? -ne 0 ]; then
-	echo "$CMDNAME: Comment creation failed."
+	echo "$CMDNAME: Comment creation failed. (Database was created.)"
 	exit 1
 fi
 
-exit 0
\ No newline at end of file
+exit 0
diff --git a/src/bin/scripts/createlang.sh b/src/bin/scripts/createlang.sh
index 460bca1481e..2b39eaa7125 100644
--- a/src/bin/scripts/createlang.sh
+++ b/src/bin/scripts/createlang.sh
@@ -8,7 +8,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createlang.sh,v 1.1 1999/12/05 20:02:48 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createlang.sh,v 1.2 1999/12/07 22:41:44 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
diff --git a/src/bin/scripts/createuser b/src/bin/scripts/createuser
index c3d00d1ea71..8eb9d55456e 100644
--- a/src/bin/scripts/createuser
+++ b/src/bin/scripts/createuser
@@ -8,7 +8,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createuser,v 1.2 1999/12/05 20:52:54 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createuser,v 1.3 1999/12/07 22:41:44 momjian Exp $
 #
 # Note - this should NOT be setuid.
 #
@@ -35,6 +35,7 @@ else
     ECHO_C='\c'
 fi
 
+
 while [ $# -gt 0 ]
 do
     case "$1" in
@@ -46,17 +47,38 @@ do
 	--host|-h)
 		PSQLOPT="$PSQLOPT -h $2"
 		shift;;
+        -h*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --host=*)
+                PSQLOPT="$PSQLOPT -h "`echo $1 | sed 's/^--host=//'`
+                ;;
 	--port|-p)
 		PSQLOPT="$PSQLOPT -p $2"
 		shift;;
-# Uncomment these lines if you need the -U and -W options.
-# They are confusing in this context, however.
-#	--user|--username|-U)
-#		PSQLOPT="$PSQLOPT -U $2"
-#		shift;;
-#	--password|-W)
-#		PSQLOPT="$PSQLOPT -W"
-#		;;
+        -p*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --port=*)
+                PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'`
+                ;;
+# Note: These two specify the user to connect as (like in psql),
+#       not the user you're creating.
+	--user|--username|-U)
+		PSQLOPT="$PSQLOPT -U '$2'"
+		shift;;
+        -U*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --user=*)
+                PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--user=//'`
+                ;;
+        --username=*)
+                PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--username=//'`
+                ;;
+	--password|-W)
+		PSQLOPT="$PSQLOPT -W"
+		;;
 	--echo|-e)
 		PSQLOPT="$PSQLOPT -e"
 		;;
@@ -76,6 +98,15 @@ do
         --no-adduser|-A)
 		CanAddUser=f
 		;;
+        --sysid|-i)
+                SysID=$2
+                shift;;
+        --sysid=*)
+                SysID=`echo $1 | sed 's/^--sysid=//'`
+                ;;
+        -i*)
+                SysID=`echo $1 | sed 's/^-i//'`
+                ;;
 	--pwprompt|--pw|-P)
 		PwPrompt=t
 		;;
@@ -94,11 +125,18 @@ done
 # Help
 
 if [ "$usage" ]; then
-	echo "Usage: $CMDNAME [-h <server>] [-p <port>] [-d|-D] [-a|-A] [-P] [username]"
+	echo "Usage: $CMDNAME [-h server] [-p port] [-d|-D] [-a|-A] [-P] [-i id] [username]"
 	exit 0
 fi
 
 
+if [ "$SysID" ]; then
+        if [ "$SysID" != "`echo $SysID | sed 's/[^0-9]//g'`" ]; then
+                echo "$CMDNAME: User sysid must be a positive number."
+                exit 1
+        fi
+fi
+
 # Get missing user attributes
 
 if [ -z "$NewUser" ]; then
@@ -108,12 +146,12 @@ if [ -z "$NewUser" ]; then
 fi
 
 if [ "$PwPrompt" ]; then
-	$ECHO_N "Enter password for user $NewUser: "$ECHO_C
+	$ECHO_N "Enter password for user \"$NewUser\": "$ECHO_C
 	read Password
 fi
 
 if [ -z "$CanCreateDb" ]; then
-	$ECHO_N "Is the new user allowed to create databases? (y/n) "$ECHO_C
+	$ECHO_N "Shall the new user be allowed to create databases? (y/n) "$ECHO_C
 	read REPLY
 	[ $? -ne 0 ] && exit 1
 	if [ $REPLY = "y" -o $REPLY = "Y" ]; then
@@ -138,9 +176,16 @@ fi
 #
 # build SQL command
 #
+NewUser=`echo $NewUser | sed 's/\"/\\\"/g'`
+Password=`echo $Password | sed 's/\"/\\\"/g'`
+
 QUERY="CREATE USER \"$NewUser\""
 
-[ "$Password" ] &&        QUERY="$QUERY WITH PASSWORD \"$Password\""
+SUBQUERY=
+[ "$SysID" ] &&    SUBQUERY="$SUBQUERY SYSID $SysID"
+[ "$Password" ] && SUBQUERY="$SUBQUERY PASSWORD \"$Password\""
+[ "$SUBQUERY" ] &&        QUERY="$QUERY WITH $SUBQUERY"
+
 [ "$CanCreateDb" = t ] && QUERY="$QUERY CREATEDB"
 [ "$CanCreateDb" = f ] && QUERY="$QUERY NOCREATEDB"
 [ "$CanAddUser" = t ] &&  QUERY="$QUERY CREATEUSER"
diff --git a/src/bin/scripts/dropdb b/src/bin/scripts/dropdb
index 93727fd2525..8ef22fce84d 100644
--- a/src/bin/scripts/dropdb
+++ b/src/bin/scripts/dropdb
@@ -10,7 +10,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropdb,v 1.2 1999/12/05 20:52:54 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropdb,v 1.3 1999/12/07 22:41:44 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -31,6 +31,7 @@ else
     ECHO_C='\c'
 fi
 
+
 while [ $# -gt 0 ]
 do
     case "$1" in 
@@ -42,12 +43,33 @@ do
 	--host|-h)
 		PSQLOPT="$PSQLOPT -h $2"
 		shift;;
+        -h*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --host=*)
+                PSQLOPT="$PSQLOPT -h "`echo $1 | sed 's/^--host=//'`
+                ;;
 	--port|-p)
 		PSQLOPT="$PSQLOPT -p $2"
 		shift;;
+        -p*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --port=*)
+                PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'`
+                ;;
 	--user|--username|-U)
-		PSQLOPT="$PSQLOPT -U $2"
+		PSQLOPT="$PSQLOPT -U '$2'"
 		shift;;
+        -U*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --user=*)
+                PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--user=//'`
+                ;;
+        --username=*)
+                PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--username=//'`
+                ;;
 	--password|-W)
 		PSQLOPT="$PSQLOPT -W"
 		;;
@@ -74,7 +96,7 @@ done
 
 
 if [ "$usage" ]; then
-	echo "Usage: $CMDNAME [-h <server>] [-p <port>] [-U <username>] [-W] [-i] dbname"
+	echo "Usage: $CMDNAME [-h server] [-p port] [-U username] [-i] dbname"
 	exit 0
 fi
 
@@ -94,6 +116,8 @@ if [ "$forcedel" = f ]; then
 fi
 
 
+dbname=`echo $dbname | sed 's/\"/\\\"/g'`
+
 psql $PSQLOPT -d template1 -c "DROP DATABASE \"$dbname\""
 if [ $? -ne 0 ]; then
 	echo "$CMDNAME: Database removal failed."
diff --git a/src/bin/scripts/droplang b/src/bin/scripts/droplang
index dffe7dc8877..2ff0ddf30ea 100644
--- a/src/bin/scripts/droplang
+++ b/src/bin/scripts/droplang
@@ -8,7 +8,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/droplang,v 1.2 1999/12/05 20:52:54 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/droplang,v 1.3 1999/12/07 22:41:44 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -20,6 +20,17 @@ langname=
 echo=
 list=
 
+# Check for echo -n vs echo \c
+
+if echo '\c' | grep -s c >/dev/null 2>&1
+then
+    ECHO_N="echo -n"
+    ECHO_C=""
+else
+    ECHO_N="echo"
+    ECHO_C='\c'
+fi
+
 
 # ----------
 # Get options, language name and dbname
diff --git a/src/bin/scripts/dropuser b/src/bin/scripts/dropuser
index 9b631d5c9b9..bec2d9bb218 100644
--- a/src/bin/scripts/dropuser
+++ b/src/bin/scripts/dropuser
@@ -2,13 +2,13 @@
 #-------------------------------------------------------------------------
 #
 # dropuser--
-#    Utility for remocing a user from the PostgreSQL database.
+#    Utility for removing a user from the PostgreSQL database.
 #
 # Copyright (c) 1994, Regents of the University of California
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropuser,v 1.2 1999/12/05 20:52:54 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropuser,v 1.3 1999/12/07 22:41:44 momjian Exp $
 #
 # Note - this should NOT be setuid.
 #
@@ -17,6 +17,7 @@
 CMDNAME=`basename $0`
 PSQLOPT=
 forcedel=t
+DelUser=
 
 # Check for echo -n vs echo \c
 
@@ -29,6 +30,7 @@ else
     ECHO_C='\c'
 fi
 
+
 while [ $# -gt 0 ]
 do
     case "$1" in
@@ -40,17 +42,38 @@ do
 	--host|-h)
 		PSQLOPT="$PSQLOPT -h $2"
 		shift;;
+        -h*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --host=*)
+                PSQLOPT="$PSQLOPT -h "`echo $1 | sed 's/^--host=//'`
+                ;;
 	--port|-p)
 		PSQLOPT="$PSQLOPT -p $2"
 		shift;;
-# Uncomment these lines if you need the -U and -W options.
-# They are confusing in this context, however.
-#	--user|--username|-U)
-#		PSQLOPT="$PSQLOPT -U $2"
-#		shift;;
-#	--password|-W)
-#		PSQLOPT="$PSQLOPT -W"
-#		;;
+        -p*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --port=*)
+                PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'`
+                ;;
+# Note: These two specify the user to connect as (like in psql),
+#       not the user you're dropping.
+	--user|--username|-U)
+		PSQLOPT="$PSQLOPT -U '$2'"
+		shift;;
+        -U*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --user=*)
+                PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--user=//'`
+                ;;
+        --username=*)
+                PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--username=//'`
+                ;;
+	--password|-W)
+		PSQLOPT="$PSQLOPT -W"
+		;;
 	--echo|-e)
 		PSQLOPT="$PSQLOPT -e"
 		;;
@@ -76,7 +99,7 @@ done
 # Help
 
 if [ "$usage" ]; then
-	echo "Usage: $CMDNAME [-h <server>] [-p <port>] [-i] [username]"
+	echo "Usage: $CMDNAME [-h server] [-p port] [-i] [username]"
 	exit 0
 fi
 
@@ -84,7 +107,7 @@ fi
 
 if [ -z "$DelUser" ]; then
 	$ECHO_N "Enter name of user to delete: "$ECHO_C
-	read NewUser
+	read DelUser
 	[ $? -ne 0 ] && exit 1
 fi
 
@@ -99,6 +122,8 @@ if [ "$forcedel" = f ]; then
 fi
 
 
+DelUser=`echo $DelUser | sed 's/\"/\\\"/g'`
+
 psql $PSQLOPT -d template1 -c "DROP USER \"$DelUser\""
 
 if [ $? -ne 0 ]; then
diff --git a/src/bin/scripts/vacuumdb b/src/bin/scripts/vacuumdb
index 6e9aa2f43a2..4998aa44cf0 100644
--- a/src/bin/scripts/vacuumdb
+++ b/src/bin/scripts/vacuumdb
@@ -11,7 +11,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/vacuumdb,v 1.2 1999/12/05 20:02:49 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/vacuumdb,v 1.3 1999/12/07 22:41:44 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -21,6 +21,7 @@ PSQLOPT=
 verbose=
 analyze=
 table=
+dbname=
 
 while [ $# -gt 0 ]
 do
@@ -33,12 +34,33 @@ do
 	--host|-h)
 		PSQLOPT="$PSQLOPT -h $2"
 		shift;;
+        -h*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --host=*)
+                PSQLOPT="$PSQLOPT -h "`echo $1 | sed 's/^--host=//'`
+                ;;
 	--port|-p)
 		PSQLOPT="$PSQLOPT -p $2"
 		shift;;
+        -p*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --port=*)
+                PSQLOPT="$PSQLOPT -p "`echo $1 | sed 's/^--port=//'`
+                ;;
 	--user|--username|-U)
-		PSQLOPT="$PSQLOPT -U $2"
+		PSQLOPT="$PSQLOPT -U '$2'"
 		shift;;
+        -U*)
+                PSQLOPT="$PSQLOPT $1"
+                ;;
+        --user=*)
+                PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--user=//'`
+                ;;
+        --username=*)
+                PSQLOPT="$PSQLOPT -U "`echo $1 | sed 's/^--username=//'`
+                ;;
 	--password|-W)
 		PSQLOPT="$PSQLOPT -W"
 		;;
@@ -48,6 +70,9 @@ do
 	--quiet|-q)
 		PSQLOPT="$PSQLOPT -o /dev/null"
 		;;
+	--dbname|--database|-d)
+		dbname="$2"
+		shift;;
         -d*)
                 dbname=`echo $1 | sed 's/^-d//'`
                 ;;
@@ -59,21 +84,26 @@ do
                 ;;
 # options converted into SQL command
 	--analyze|-z)
-		analyze="analyze"
+		analyze="ANALYZE "
 		;;
 	--table|-t)
-		table=$2
+		table="$2"
 		shift;;
+        -t*)
+                table=`echo $1 | sed 's/^-t//'`
+                ;;
+        --table=*)
+                table=`echo $1 | sed 's/^--table=//'`
+                ;;
 	--verbose|-v)
-		verbose="verbose"
+		verbose="VERBOSE "
 		;;
 
 	-*)
 		echo "$CMDNAME: Unrecognized option: $1. Try -? for help."
 		exit 1
 		;;
-
-	 *)
+	*)
 		dbname="$1"
 		;;
     esac
@@ -82,7 +112,7 @@ done
 
 
 if [ "$usage" ]; then
-	echo "Usage: $CMDNAME [-h <server>] [-p <port>] [-U <username>] [-W] [-d <dbname>] \\"
+	echo "Usage: $CMDNAME [-h server] [-p port] [-U username] [-d dbname] \\"
 	echo "       [-z|--analyze] [-v|--verbose] [-t|--table 'table[(columns)]'] [dbname]"
 	exit 0
 fi
@@ -92,10 +122,10 @@ if [ -z "$dbname" ]; then
 	exit 1
 fi
 
-psql $PSQLOPT -d "$dbname" -c "VACUUM $verbose $analyze $table"
+psql $PSQLOPT -d "$dbname" -c "VACUUM $verbose$analyze$table"
 
 if [ $? -ne 0 ]; then
-	echo "$CMDNAME: Database vacuum failed."
+	echo "$CMDNAME: Vacuum failed."
 	exit 1
 fi
 
-- 
GitLab