From a0aab48fcd86e3a167c5bd16bb8a16b8a85e9332 Mon Sep 17 00:00:00 2001 From: Bruce Momjian 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 b79bd35600..8973307dde 100644 --- a/doc/src/sgml/install.sgml +++ b/doc/src/sgml/install.sgml @@ -808,7 +808,7 @@ $ nohup postmaster -i > pgserver.log 2>&1 & Create a database by typing -$ createdb +$ createdb test @@ -816,7 +816,7 @@ $ createdb Connect to the new database: -$ psql +$ psql test @@ -840,7 +840,7 @@ postgres=> \q Remove the test database (unless you will want to use it later for other tests): -$ destroydb +$ dropdb test @@ -1028,7 +1028,7 @@ For example, After running the regression tests, type -$ destroydb regression +$ dropdb regression $ cd /usr/src/pgsql/postgresql-6.5.3/src/test/regress $ gmake clean @@ -1241,7 +1241,7 @@ Create the database foo: template1=> create database foo; -CREATEDB +CREATE DATABASE (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 fb49306592..4e996fa313 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: dbname mydb, you can destroy it using the following Unix command: -% destroydb dbname +% dropdb dbname This action physically removes all of the Unix files diff --git a/doc/src/sgml/manage.sgml b/doc/src/sgml/manage.sgml index 645e1a2544..d4acd9d7bd 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 mydb, you can destroy it using the following Unix command: -% destroydb mydb +% dropdb mydb 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 902823b822..bdb1e189a0 100644 --- a/doc/src/sgml/ref/createdb.sgml +++ b/doc/src/sgml/ref/createdb.sgml @@ -1,5 +1,5 @@ @@ -96,7 +96,7 @@ createdb [ options ] - -D, --dbpath datadir + -D, --location datadir Specifies the alternate database location for this database installation. @@ -120,7 +120,7 @@ createdb [ options ] Specifies the name of the database to be created. The name must be - unique among all Postgres databases in this installation. + unique among all PostgreSQL databases in this installation. @@ -167,7 +167,7 @@ createdb [ options ] - createdb: Comment creation failed. + createdb: Comment creation failed. (Database was created.) The comment/description for the database could not be created. @@ -235,11 +235,11 @@ CREATE DATABASE To create the database demo using the postmaster on host eden, port 5000, using the LATIN1 - encoding scheme and look at the underlying query: + encoding scheme with a look at the underlying query: $ createdb -p 5000 -h eden -E LATIN1 -e demo -QUERY: CREATE DATABASE "demo" WITH ENCODING = 'LATIN1' +CREATE DATABASE "demo" WITH ENCODING = 'LATIN1' CREATE DATABASE diff --git a/doc/src/sgml/ref/createuser.sgml b/doc/src/sgml/ref/createuser.sgml index 0a030225de..dc0eeb8edc 100644 --- a/doc/src/sgml/ref/createuser.sgml +++ b/doc/src/sgml/ref/createuser.sgml @@ -1,5 +1,5 @@ @@ -125,6 +125,16 @@ createuser [ options ] [ + + -i, --sysid uid + + + Allows you to pick a non-default user id for the new user. This is not + necessary, but some people like it. + + + + username @@ -142,11 +152,9 @@ createuser [ options ] [ The options -h, -p, and -e, - are passed on literally to . If you - need the psql options -U and - -W 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 . The + psql options -U and -W + are available as well, but their use can be confusing in this context. @@ -243,7 +251,7 @@ CREATE USER $ createuser -p 5000 -h eden -D -A -e joe -QUERY: CREATE USER "joe" NOCREATEDB NOCREATEUSER +CREATE USER "joe" NOCREATEDB NOCREATEUSER CREATE USER diff --git a/doc/src/sgml/ref/drop_user.sgml b/doc/src/sgml/ref/drop_user.sgml index 5289ed674c..27f339f82d 100644 --- a/doc/src/sgml/ref/drop_user.sgml +++ b/doc/src/sgml/ref/drop_user.sgml @@ -1,5 +1,5 @@ @@ -94,9 +94,7 @@ ERROR: removeUser: user "name" 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 dropuser - script, regardless of how the user was created. + named user in databases not owned by the user. diff --git a/doc/src/sgml/ref/dropdb.sgml b/doc/src/sgml/ref/dropdb.sgml index f0fd44a35f..c695e9c9e4 100644 --- a/doc/src/sgml/ref/dropdb.sgml +++ b/doc/src/sgml/ref/dropdb.sgml @@ -1,5 +1,5 @@ @@ -207,7 +207,7 @@ DROP DATABASE $ dropdb -p 5000 -h eden -i -e demo Database "demo" will be permanently deleted. Are you sure? (y/n) y -QUERY: DROP DATABASE "demo" +DROP DATABASE "demo" DROP DATABASE diff --git a/doc/src/sgml/ref/dropuser.sgml b/doc/src/sgml/ref/dropuser.sgml index 981a800314..80a2a71576 100644 --- a/doc/src/sgml/ref/dropuser.sgml +++ b/doc/src/sgml/ref/dropuser.sgml @@ -1,5 +1,5 @@ @@ -101,11 +101,9 @@ dropuser [ options ] [ The options -h, -p, and -e, - are passed on literally to . If you - need the psql options -U and - -W 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 . The + psql options -U and -W + are available as well, but they can be confusing in this context. @@ -201,7 +199,7 @@ DROP USER $ dropuser -p 5000 -h eden -i -e joe User "joe" and any owned databases will be permanently deleted. Are you sure? (y/n) y -QUERY: DROP USER "joe" +DROP USER "joe" DROP USER diff --git a/doc/src/sgml/ref/vacuum.sgml b/doc/src/sgml/ref/vacuum.sgml index e7761397a0..6511563523 100644 --- a/doc/src/sgml/ref/vacuum.sgml +++ b/doc/src/sgml/ref/vacuum.sgml @@ -1,5 +1,5 @@ @@ -24,7 +24,7 @@ Postgres documentation VACUUM [ VERBOSE ] [ ANALYZE ] [ table ] -VACUUM [ VERBOSE ] ANALYZE [ ER">tBLE> [ (column [, ...] ) ] ] +VACUUM [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ] diff --git a/doc/src/sgml/ref/vacuumdb.sgml b/doc/src/sgml/ref/vacuumdb.sgml index 1bff5bb1c0..96a4f06d6a 100644 --- a/doc/src/sgml/ref/vacuumdb.sgml +++ b/doc/src/sgml/ref/vacuumdb.sgml @@ -1,5 +1,5 @@ @@ -15,23 +15,21 @@ Postgres documentation vacuumdb - Clean and analyze a Postgres database + Clean and analyze a PostgreSQL database - 1998-10-04 + 1999-12-04 -vacuumdb [ --analyze | -z ] [ --verbose | -v ] [ dbname ] -vacuumdb [ -h host ] [ -p port ] - [ --table 'table [ ( column [,...] ) ]' ] - [ dbname ] +vacuumdb [ connection options ] [ --analyze | -z ] [ --verbose | -v ] + [ --table 'table [ ( column [,...] ) ]' ] [ [-d] dbname ] - 1998-10-04 + 1999-12-04 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 - vacuumdb executes a VACUUM command - on the specified database, so has not explicit external output. - - -ERROR: Can't vacuum columns, only tables. You can 'vacuum analyze' columns. -vacuumdb: database vacuum failed on dbname. - + VACUUM - The non-analyze mode requires cleaning full tables or databases. - Individual columns may be specified only when analyzing a specific table. + Everything went well. - -Connection to database 'template1' failed. -connectDB() failed: Is the postmaster running and accepting connections -at 'UNIX Socket' on port 'port'? - + vacuumdb: Vacuum failed. - vacuumdb could not attach to the - postmaster - process on the specified host and port. If you see this message, - ensure that the postmaster - 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. vacuumdb is only a wrapper + script. See + and for a detailed + discussion of error messages and potential problems. - - -Connection to database 'dbname' failed. -FATAL 1: SetUserId: user 'username' is not in 'pg_shadow' - - - - You do not have a valid entry in the relation pg_shadow - and and will not be allowed to access Postgres. - Contact your Postgres administrator. - - - - - - vacuumdb internally executes a - VACUUM SQL statement. - If you have problems running vacuumdb, - make sure you are able to run VACUUM on the database using, for - example, psql. - - + + + - 1998-10-04 + 1999-12-04 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 - - See for more details. + vacuumdb is a shell script wrapper around the + backend command + via + the PostgreSQL interactive terminal + . There is no effective + difference between vacuuming databases via this or other methods. + psql 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 psql + and the libpq front-end library do apply. + - + 1998-10-04 @@ -241,29 +228,29 @@ FATAL 1: SetUserId: user 'username Usage + - To clean a database of the same name as the user: - - -% vacuumdb - + To clean the database test: + +$ vacuumdb test + To analyze a database named bigdb for the optimizer: - - -% vacuumdb --analyze bigdb - + +$ vacuumdb --analyze bigdb + + To analyze a single column bar in table foo in a database named xyzzy for the optimizer: - - -% vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy - + +$ vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy + + diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml index 62843345a4..380f42801b 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). After running the tests and examining the results, type - destroydb regression + dropdb regression cd /usr/src/pgsql/src/test/regress gmake clean diff --git a/doc/src/sgml/start-ag.sgml b/doc/src/sgml/start-ag.sgml index 19ce761bfd..547b26f968 100644 --- a/doc/src/sgml/start-ag.sgml +++ b/doc/src/sgml/start-ag.sgml @@ -10,7 +10,7 @@ createuser enables specific users to access Postgres. - destroyuser removes users and + dropuser removes users and prevents them from accessing Postgres. @@ -115,7 +115,7 @@ Creating Postgres database system directory /home/postgres/data/base % createdb -D PGDATA2 test -% destroydb test +% dropdb test diff --git a/doc/src/sgml/start.sgml b/doc/src/sgml/start.sgml index c146d7100c..eb390b6722 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 mydb, you can destroy it using the following Unix command: -% destroydb mydb +% dropdb mydb 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 43533a30ff..bed7c3bec7 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 ] [-p ] [-D ] \\" - echo " [-E ] [-U ] [-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 460bca1481..2b39eaa712 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 c3d00d1ea7..8eb9d55456 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 ] [-p ] [-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 93727fd252..8ef22fce84 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 ] [-p ] [-U ] [-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 dffe7dc887..2ff0ddf30e 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 9b631d5c9b..bec2d9bb21 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 ] [-p ] [-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 6e9aa2f43a..4998aa44cf 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 ] [-p ] [-U ] [-W] [-d ] \\" + 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