Add a -w/--no-password option that prevents all password prompts to all

programs that have a -W/--password option.

In passing, remove the ancient PSQL_ALWAYS_GET_PASSWORDS compile option.
This commit is contained in:
Peter Eisentraut 2009-02-26 16:02:39 +00:00
parent eea49769d4
commit 9de59fd191
38 changed files with 478 additions and 170 deletions

View File

@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/contrib/vacuumlo/vacuumlo.c,v 1.39 2009/02/25 13:34:32 petere Exp $ * $PostgreSQL: pgsql/contrib/vacuumlo/vacuumlo.c,v 1.40 2009/02/26 16:02:37 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -33,10 +33,17 @@ extern int optind,
opterr, opterr,
optopt; optopt;
enum trivalue
{
TRI_DEFAULT,
TRI_NO,
TRI_YES
};
struct _param struct _param
{ {
char *pg_user; char *pg_user;
int pg_prompt; enum trivalue pg_prompt;
char *pg_port; char *pg_port;
char *pg_host; char *pg_host;
int verbose; int verbose;
@ -64,7 +71,7 @@ vacuumlo(char *database, struct _param * param)
static char *password = NULL; static char *password = NULL;
bool new_pass; bool new_pass;
if (param->pg_prompt && password == NULL) if (param->pg_prompt == TRI_YES && password == NULL)
password = simple_prompt("Password: ", 100, false); password = simple_prompt("Password: ", 100, false);
/* /*
@ -91,7 +98,8 @@ vacuumlo(char *database, struct _param * param)
if (PQstatus(conn) == CONNECTION_BAD && if (PQstatus(conn) == CONNECTION_BAD &&
PQconnectionNeedsPassword(conn) && PQconnectionNeedsPassword(conn) &&
password == NULL) password == NULL &&
param->pg_prompt != TRI_NO)
{ {
PQfinish(conn); PQfinish(conn);
password = simple_prompt("Password: ", 100, false); password = simple_prompt("Password: ", 100, false);
@ -308,6 +316,7 @@ usage(void)
printf(" -n don't remove large objects, just show what would be done\n"); printf(" -n don't remove large objects, just show what would be done\n");
printf(" -p PORT database server port\n"); printf(" -p PORT database server port\n");
printf(" -U USERNAME user name to connect as\n"); printf(" -U USERNAME user name to connect as\n");
printf(" -w never prompt for password\n");
printf(" -W force password prompt\n"); printf(" -W force password prompt\n");
printf(" -v write a lot of progress messages\n"); printf(" -v write a lot of progress messages\n");
printf("\n"); printf("\n");
@ -324,7 +333,7 @@ main(int argc, char **argv)
/* Parameter handling */ /* Parameter handling */
param.pg_user = NULL; param.pg_user = NULL;
param.pg_prompt = 0; param.pg_prompt = TRI_DEFAULT;
param.pg_host = NULL; param.pg_host = NULL;
param.pg_port = NULL; param.pg_port = NULL;
param.verbose = 0; param.verbose = 0;
@ -332,7 +341,7 @@ main(int argc, char **argv)
while (1) while (1)
{ {
c = getopt(argc, argv, "?h:U:p:vnW"); c = getopt(argc, argv, "?h:U:p:vnwW");
if (c == -1) if (c == -1)
break; break;
@ -357,8 +366,11 @@ main(int argc, char **argv)
case 'U': case 'U':
param.pg_user = strdup(optarg); param.pg_user = strdup(optarg);
break; break;
case 'w':
param.pg_prompt = TRI_NO;
break;
case 'W': case 'W':
param.pg_prompt = 1; param.pg_prompt = TRI_YES;
break; break;
case 'p': case 'p':
port = strtol(optarg, NULL, 10); port = strtol(optarg, NULL, 10);

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/clusterdb.sgml,v 1.24 2008/11/24 08:46:03 petere Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/clusterdb.sgml,v 1.25 2009/02/26 16:02:37 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -171,6 +171,21 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</></term> <term><option>-W</></term>
<term><option>--password</></term> <term><option>--password</></term>

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/createdb.sgml,v 1.48 2008/11/10 16:25:41 alvherre Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/createdb.sgml,v 1.49 2009/02/26 16:02:37 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -217,6 +217,21 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</></term> <term><option>-W</></term>
<term><option>--password</></term> <term><option>--password</></term>

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/createlang.sgml,v 1.42 2007/12/11 19:57:32 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/createlang.sgml,v 1.43 2009/02/26 16:02:37 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -139,6 +139,21 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</></term> <term><option>-W</></term>
<term><option>--password</></term> <term><option>--password</></term>

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/createuser.sgml,v 1.51 2007/12/11 19:57:32 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/createuser.sgml,v 1.52 2009/02/26 16:02:37 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -290,6 +290,21 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</></term> <term><option>-W</></term>
<term><option>--password</></term> <term><option>--password</></term>

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/dropdb.sgml,v 1.34 2007/12/11 19:57:32 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/dropdb.sgml,v 1.35 2009/02/26 16:02:37 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -128,6 +128,21 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</></term> <term><option>-W</></term>
<term><option>--password</></term> <term><option>--password</></term>

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/droplang.sgml,v 1.31 2007/12/11 19:57:32 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/droplang.sgml,v 1.32 2009/02/26 16:02:37 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -147,6 +147,21 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</></term> <term><option>-W</></term>
<term><option>--password</></term> <term><option>--password</></term>

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/dropuser.sgml,v 1.39 2007/12/11 19:57:32 tgl Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/dropuser.sgml,v 1.40 2009/02/26 16:02:37 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -130,6 +130,21 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</></term> <term><option>-W</></term>
<term><option>--password</></term> <term><option>--password</></term>

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_dump.sgml,v 1.110 2009/02/17 15:41:50 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/pg_dump.sgml,v 1.111 2009/02/26 16:02:37 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -678,6 +678,21 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</option></term> <term><option>-W</option></term>
<term><option>--password</option></term> <term><option>--password</option></term>

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v 1.76 2009/02/17 15:41:50 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v 1.77 2009/02/26 16:02:37 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -391,6 +391,21 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</option></term> <term><option>-W</option></term>
<term><option>--password</option></term> <term><option>--password</option></term>

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.79 2009/02/07 14:31:30 momjian Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.80 2009/02/26 16:02:37 petere Exp $ -->
<refentry id="APP-PGRESTORE"> <refentry id="APP-PGRESTORE">
<refmeta> <refmeta>
@ -510,6 +510,21 @@
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</option></term> <term><option>-W</option></term>
<term><option>--password</option></term> <term><option>--password</option></term>

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.219 2009/02/09 14:09:56 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.220 2009/02/26 16:02:37 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -401,6 +401,26 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires password
authentication and a password is not available by other means
such as a <filename>.pgpass</filename> file, the connection
attempt will fail. This option can be useful in batch jobs and
scripts where no user is present to enter a password.
</para>
<para>
Note that this option will remain set for the entire session,
and so it affects uses of the meta-command
<command>\connect</command> as well as the initial connection attempt.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</></term> <term><option>-W</></term>
<term><option>--password</></term> <term><option>--password</></term>

View File

@ -181,6 +181,21 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</></term> <term><option>-W</></term>
<term><option>--password</></term> <term><option>--password</></term>

View File

@ -1,5 +1,5 @@
<!-- <!--
$PostgreSQL: pgsql/doc/src/sgml/ref/vacuumdb.sgml,v 1.43 2009/02/18 12:11:55 momjian Exp $ $PostgreSQL: pgsql/doc/src/sgml/ref/vacuumdb.sgml,v 1.44 2009/02/26 16:02:37 petere Exp $
PostgreSQL documentation PostgreSQL documentation
--> -->
@ -216,6 +216,21 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires
password authentication and a password is not available by
other means such as a <filename>.pgpass</filename> file, the
connection attempt will fail. This option can be useful in
batch jobs and scripts where no user is present to enter a
password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</></term> <term><option>-W</></term>
<term><option>--password</></term> <term><option>--password</></term>

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/vacuumlo.sgml,v 1.3 2007/12/11 19:57:32 tgl Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/vacuumlo.sgml,v 1.4 2009/02/26 16:02:37 petere Exp $ -->
<sect1 id="vacuumlo"> <sect1 id="vacuumlo">
<title>vacuumlo</title> <title>vacuumlo</title>
@ -56,6 +56,20 @@ vacuumlo [options] database [database2 ... databaseN]
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-w</></term>
<term><option>--no-password</></term>
<listitem>
<para>
Never issue a password prompt. If the server requires password
authentication and a password is not available by other means
such as a <filename>.pgpass</filename> file, the connection
attempt will fail. This option can be useful in batch jobs and
scripts where no user is present to enter a password.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-W</option></term> <term><option>-W</option></term>
<listitem> <listitem>

View File

@ -15,7 +15,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup.h,v 1.49 2009/02/02 20:07:36 adunstan Exp $ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup.h,v 1.50 2009/02/26 16:02:37 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -37,6 +37,13 @@
#define oidge(x,y) ( (x) >= (y) ) #define oidge(x,y) ( (x) >= (y) )
#define oidzero(x) ( (x) == 0 ) #define oidzero(x) ( (x) == 0 )
enum trivalue
{
TRI_DEFAULT,
TRI_NO,
TRI_YES
};
typedef enum _archiveFormat typedef enum _archiveFormat
{ {
archUnknown = 0, archUnknown = 0,
@ -126,7 +133,7 @@ typedef struct _restoreOptions
char *pghost; char *pghost;
char *username; char *username;
int noDataForFailedTables; int noDataForFailedTables;
int requirePassword; enum trivalue promptPassword;
int exit_on_error; int exit_on_error;
int compression; int compression;
int suppressDumpWarnings; /* Suppress output of WARNING entries int suppressDumpWarnings; /* Suppress output of WARNING entries
@ -153,7 +160,7 @@ PGconn *ConnectDatabase(Archive *AH,
const char *pghost, const char *pghost,
const char *pgport, const char *pgport,
const char *username, const char *username,
int reqPwd); enum trivalue prompt_password);
/* Called to add a TOC entry */ /* Called to add a TOC entry */
extern void ArchiveEntry(Archive *AHX, extern void ArchiveEntry(Archive *AHX,

View File

@ -15,7 +15,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.163 2009/02/20 02:57:21 adunstan Exp $ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.164 2009/02/26 16:02:37 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -246,7 +246,7 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt)
ConnectDatabase(AHX, ropt->dbname, ConnectDatabase(AHX, ropt->dbname,
ropt->pghost, ropt->pgport, ropt->username, ropt->pghost, ropt->pgport, ropt->username,
ropt->requirePassword); ropt->promptPassword);
/* /*
* If we're talking to the DB directly, don't send comments since they * If we're talking to the DB directly, don't send comments since they
@ -609,6 +609,7 @@ NewRestoreOptions(void)
/* set any fields that shouldn't default to zeroes */ /* set any fields that shouldn't default to zeroes */
opts->format = archUnknown; opts->format = archUnknown;
opts->promptPassword = TRI_DEFAULT;
return opts; return opts;
} }
@ -1886,6 +1887,8 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
else else
AH->format = fmt; AH->format = fmt;
AH->promptPassword = TRI_DEFAULT;
switch (AH->format) switch (AH->format)
{ {
case archCustom: case archCustom:
@ -3206,7 +3209,7 @@ restore_toc_entries_parallel(ArchiveHandle *AH)
*/ */
ConnectDatabase((Archive *) AH, ropt->dbname, ConnectDatabase((Archive *) AH, ropt->dbname,
ropt->pghost, ropt->pgport, ropt->username, ropt->pghost, ropt->pgport, ropt->username,
ropt->requirePassword); ropt->promptPassword);
_doSetFixedOutputState(AH); _doSetFixedOutputState(AH);
@ -3476,7 +3479,7 @@ parallel_restore(RestoreArgs *args)
*/ */
ConnectDatabase((Archive *) AH, ropt->dbname, ConnectDatabase((Archive *) AH, ropt->dbname,
ropt->pghost, ropt->pgport, ropt->username, ropt->pghost, ropt->pgport, ropt->username,
ropt->requirePassword); ropt->promptPassword);
_doSetFixedOutputState(AH); _doSetFixedOutputState(AH);

View File

@ -17,7 +17,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.77 2009/02/02 20:07:37 adunstan Exp $ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.78 2009/02/26 16:02:38 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -238,7 +238,7 @@ typedef struct _archiveHandle
/* Stuff for direct DB connection */ /* Stuff for direct DB connection */
char *archdbname; /* DB name *read* from archive */ char *archdbname; /* DB name *read* from archive */
bool requirePassword; enum trivalue promptPassword;
char *savedPassword; /* password for ropt->username, if known */ char *savedPassword; /* password for ropt->username, if known */
PGconn *connection; PGconn *connection;
int connectToDB; /* Flag to indicate if direct DB connection is int connectToDB; /* Flag to indicate if direct DB connection is

View File

@ -5,7 +5,7 @@
* Implements the basic DB functions used by the archiver. * Implements the basic DB functions used by the archiver.
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_db.c,v 1.82 2009/02/25 13:24:40 petere Exp $ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_db.c,v 1.83 2009/02/26 16:02:38 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -145,7 +145,7 @@ _connectDB(ArchiveHandle *AH, const char *reqdb, const char *requser)
ahlog(AH, 1, "connecting to database \"%s\" as user \"%s\"\n", ahlog(AH, 1, "connecting to database \"%s\" as user \"%s\"\n",
newdb, newuser); newdb, newuser);
if (AH->requirePassword && password == NULL) if (AH->promptPassword == TRI_YES && password == NULL)
{ {
password = simple_prompt("Password: ", 100, false); password = simple_prompt("Password: ", 100, false);
if (password == NULL) if (password == NULL)
@ -176,7 +176,12 @@ _connectDB(ArchiveHandle *AH, const char *reqdb, const char *requser)
if (password) if (password)
free(password); free(password);
password = simple_prompt("Password: ", 100, false);
if (AH->promptPassword != TRI_NO)
password = simple_prompt("Password: ", 100, false);
else
die_horribly(AH, modulename, "connection needs password\n");
if (password == NULL) if (password == NULL)
die_horribly(AH, modulename, "out of memory\n"); die_horribly(AH, modulename, "out of memory\n");
new_pass = true; new_pass = true;
@ -209,7 +214,7 @@ ConnectDatabase(Archive *AHX,
const char *pghost, const char *pghost,
const char *pgport, const char *pgport,
const char *username, const char *username,
int reqPwd) enum trivalue prompt_password)
{ {
ArchiveHandle *AH = (ArchiveHandle *) AHX; ArchiveHandle *AH = (ArchiveHandle *) AHX;
char *password = AH->savedPassword; char *password = AH->savedPassword;
@ -218,13 +223,13 @@ ConnectDatabase(Archive *AHX,
if (AH->connection) if (AH->connection)
die_horribly(AH, modulename, "already connected to a database\n"); die_horribly(AH, modulename, "already connected to a database\n");
if (reqPwd && password == NULL) if (prompt_password == TRI_YES && password == NULL)
{ {
password = simple_prompt("Password: ", 100, false); password = simple_prompt("Password: ", 100, false);
if (password == NULL) if (password == NULL)
die_horribly(AH, modulename, "out of memory\n"); die_horribly(AH, modulename, "out of memory\n");
} }
AH->requirePassword = reqPwd; AH->promptPassword = prompt_password;
/* /*
* Start the connection. Loop until we have a password if requested by * Start the connection. Loop until we have a password if requested by
@ -241,7 +246,8 @@ ConnectDatabase(Archive *AHX,
if (PQstatus(AH->connection) == CONNECTION_BAD && if (PQstatus(AH->connection) == CONNECTION_BAD &&
PQconnectionNeedsPassword(AH->connection) && PQconnectionNeedsPassword(AH->connection) &&
password == NULL) password == NULL &&
prompt_password != TRI_NO)
{ {
PQfinish(AH->connection); PQfinish(AH->connection);
password = simple_prompt("Password: ", 100, false); password = simple_prompt("Password: ", 100, false);

View File

@ -12,7 +12,7 @@
* by PostgreSQL * by PostgreSQL
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.526 2009/02/25 13:03:06 petere Exp $ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.527 2009/02/26 16:02:38 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -221,7 +221,7 @@ main(int argc, char **argv)
DumpableObject **dobjs; DumpableObject **dobjs;
int numObjs; int numObjs;
int i; int i;
bool force_password = false; enum trivalue prompt_password = TRI_DEFAULT;
int compressLevel = -1; int compressLevel = -1;
int plainText = 0; int plainText = 0;
int outputClean = 0; int outputClean = 0;
@ -261,6 +261,7 @@ main(int argc, char **argv)
{"superuser", required_argument, NULL, 'S'}, {"superuser", required_argument, NULL, 'S'},
{"table", required_argument, NULL, 't'}, {"table", required_argument, NULL, 't'},
{"exclude-table", required_argument, NULL, 'T'}, {"exclude-table", required_argument, NULL, 'T'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"username", required_argument, NULL, 'U'}, {"username", required_argument, NULL, 'U'},
{"verbose", no_argument, NULL, 'v'}, {"verbose", no_argument, NULL, 'v'},
@ -315,7 +316,7 @@ main(int argc, char **argv)
} }
} }
while ((c = getopt_long(argc, argv, "abcCdDE:f:F:h:in:N:oOp:RsS:t:T:U:vWxX:Z:", while ((c = getopt_long(argc, argv, "abcCdDE:f:F:h:in:N:oOp:RsS:t:T:U:vwWxX:Z:",
long_options, &optindex)) != -1) long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
@ -416,8 +417,12 @@ main(int argc, char **argv)
g_verbose = true; g_verbose = true;
break; break;
case 'w':
prompt_password = TRI_NO;
break;
case 'W': case 'W':
force_password = true; prompt_password = TRI_YES;
break; break;
case 'x': /* skip ACL dump */ case 'x': /* skip ACL dump */
@ -556,7 +561,7 @@ main(int argc, char **argv)
* death. * death.
*/ */
g_conn = ConnectDatabase(g_fout, dbname, pghost, pgport, g_conn = ConnectDatabase(g_fout, dbname, pghost, pgport,
username, force_password); username, prompt_password);
/* Set the client encoding if requested */ /* Set the client encoding if requested */
if (dumpencoding) if (dumpencoding)

View File

@ -6,7 +6,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* *
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.117 2009/02/25 13:24:40 petere Exp $ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.118 2009/02/26 16:02:38 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -52,7 +52,7 @@ static void doShellQuoting(PQExpBuffer buf, const char *str);
static int runPgDump(const char *dbname); static int runPgDump(const char *dbname);
static PGconn *connectDatabase(const char *dbname, const char *pghost, const char *pgport, static PGconn *connectDatabase(const char *dbname, const char *pghost, const char *pgport,
const char *pguser, bool require_password, bool fail_on_error); const char *pguser, enum trivalue prompt_password, bool fail_on_error);
static PGresult *executeQuery(PGconn *conn, const char *query); static PGresult *executeQuery(PGconn *conn, const char *query);
static void executeCommand(PGconn *conn, const char *query); static void executeCommand(PGconn *conn, const char *query);
@ -81,7 +81,7 @@ main(int argc, char *argv[])
char *pguser = NULL; char *pguser = NULL;
char *pgdb = NULL; char *pgdb = NULL;
char *use_role = NULL; char *use_role = NULL;
bool force_password = false; enum trivalue prompt_password = TRI_DEFAULT;
bool data_only = false; bool data_only = false;
bool globals_only = false; bool globals_only = false;
bool roles_only = false; bool roles_only = false;
@ -114,6 +114,7 @@ main(int argc, char *argv[])
{"tablespaces-only", no_argument, NULL, 't'}, {"tablespaces-only", no_argument, NULL, 't'},
{"username", required_argument, NULL, 'U'}, {"username", required_argument, NULL, 'U'},
{"verbose", no_argument, NULL, 'v'}, {"verbose", no_argument, NULL, 'v'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"no-privileges", no_argument, NULL, 'x'}, {"no-privileges", no_argument, NULL, 'x'},
{"no-acl", no_argument, NULL, 'x'}, {"no-acl", no_argument, NULL, 'x'},
@ -177,7 +178,7 @@ main(int argc, char *argv[])
pgdumpopts = createPQExpBuffer(); pgdumpopts = createPQExpBuffer();
while ((c = getopt_long(argc, argv, "acdDf:gh:il:oOp:rsS:tU:vWxX:", long_options, &optindex)) != -1) while ((c = getopt_long(argc, argv, "acdDf:gh:il:oOp:rsS:tU:vwWxX:", long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
{ {
@ -262,8 +263,13 @@ main(int argc, char *argv[])
appendPQExpBuffer(pgdumpopts, " -v"); appendPQExpBuffer(pgdumpopts, " -v");
break; break;
case 'w':
prompt_password = TRI_NO;
appendPQExpBuffer(pgdumpopts, " -w");
break;
case 'W': case 'W':
force_password = true; prompt_password = TRI_YES;
appendPQExpBuffer(pgdumpopts, " -W"); appendPQExpBuffer(pgdumpopts, " -W");
break; break;
@ -370,7 +376,7 @@ main(int argc, char *argv[])
if (pgdb) if (pgdb)
{ {
conn = connectDatabase(pgdb, pghost, pgport, pguser, conn = connectDatabase(pgdb, pghost, pgport, pguser,
force_password, false); prompt_password, false);
if (!conn) if (!conn)
{ {
@ -382,10 +388,10 @@ main(int argc, char *argv[])
else else
{ {
conn = connectDatabase("postgres", pghost, pgport, pguser, conn = connectDatabase("postgres", pghost, pgport, pguser,
force_password, false); prompt_password, false);
if (!conn) if (!conn)
conn = connectDatabase("template1", pghost, pgport, pguser, conn = connectDatabase("template1", pghost, pgport, pguser,
force_password, true); prompt_password, true);
if (!conn) if (!conn)
{ {
@ -528,6 +534,7 @@ help(void)
printf(_(" -l, --database=DBNAME alternative default database\n")); printf(_(" -l, --database=DBNAME alternative default database\n"));
printf(_(" -p, --port=PORT database server port number\n")); printf(_(" -p, --port=PORT database server port number\n"));
printf(_(" -U, --username=NAME connect as specified database user\n")); printf(_(" -U, --username=NAME connect as specified database user\n"));
printf(_(" -w, --no-password never prompt for password\n"));
printf(_(" -W, --password force password prompt (should happen automatically)\n")); printf(_(" -W, --password force password prompt (should happen automatically)\n"));
printf(_("\nIf -f/--file is not used, then the SQL script will be written to the standard\n" printf(_("\nIf -f/--file is not used, then the SQL script will be written to the standard\n"
@ -1329,7 +1336,7 @@ runPgDump(const char *dbname)
*/ */
static PGconn * static PGconn *
connectDatabase(const char *dbname, const char *pghost, const char *pgport, connectDatabase(const char *dbname, const char *pghost, const char *pgport,
const char *pguser, bool require_password, bool fail_on_error) const char *pguser, enum trivalue prompt_password, bool fail_on_error)
{ {
PGconn *conn; PGconn *conn;
bool new_pass; bool new_pass;
@ -1337,7 +1344,7 @@ connectDatabase(const char *dbname, const char *pghost, const char *pgport,
int my_version; int my_version;
static char *password = NULL; static char *password = NULL;
if (require_password && !password) if (prompt_password == TRI_YES && !password)
password = simple_prompt("Password: ", 100, false); password = simple_prompt("Password: ", 100, false);
/* /*
@ -1358,7 +1365,8 @@ connectDatabase(const char *dbname, const char *pghost, const char *pgport,
if (PQstatus(conn) == CONNECTION_BAD && if (PQstatus(conn) == CONNECTION_BAD &&
PQconnectionNeedsPassword(conn) && PQconnectionNeedsPassword(conn) &&
password == NULL) password == NULL &&
prompt_password != TRI_NO)
{ {
PQfinish(conn); PQfinish(conn);
password = simple_prompt("Password: ", 100, false); password = simple_prompt("Password: ", 100, false);

View File

@ -34,7 +34,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.93 2009/02/25 13:03:06 petere Exp $ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.94 2009/02/26 16:02:38 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -99,6 +99,7 @@ main(int argc, char **argv)
{"no-owner", 0, NULL, 'O'}, {"no-owner", 0, NULL, 'O'},
{"no-reconnect", 0, NULL, 'R'}, {"no-reconnect", 0, NULL, 'R'},
{"port", 1, NULL, 'p'}, {"port", 1, NULL, 'p'},
{"no-password", 0, NULL, 'w'},
{"password", 0, NULL, 'W'}, {"password", 0, NULL, 'W'},
{"schema", 1, NULL, 'n'}, {"schema", 1, NULL, 'n'},
{"schema-only", 0, NULL, 's'}, {"schema-only", 0, NULL, 's'},
@ -142,7 +143,7 @@ main(int argc, char **argv)
} }
} }
while ((c = getopt_long(argc, argv, "acCd:ef:F:h:iI:lL:m:n:Op:P:RsS:t:T:U:vWxX:1", while ((c = getopt_long(argc, argv, "acCd:ef:F:h:iI:lL:m:n:Op:P:RsS:t:T:U:vwWxX:1",
cmdopts, NULL)) != -1) cmdopts, NULL)) != -1)
{ {
switch (c) switch (c)
@ -240,8 +241,12 @@ main(int argc, char **argv)
opts->verbose = 1; opts->verbose = 1;
break; break;
case 'w':
opts->promptPassword = TRI_NO;
break;
case 'W': case 'W':
opts->requirePassword = true; opts->promptPassword = TRI_YES;
break; break;
case 'x': /* skip ACL dump */ case 'x': /* skip ACL dump */
@ -437,6 +442,7 @@ usage(const char *progname)
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
printf(_(" -p, --port=PORT database server port number\n")); printf(_(" -p, --port=PORT database server port number\n"));
printf(_(" -U, --username=NAME connect as specified database user\n")); printf(_(" -U, --username=NAME connect as specified database user\n"));
printf(_(" -w, --no-password never prompt for password\n"));
printf(_(" -W, --password force password prompt (should happen automatically)\n")); printf(_(" -W, --password force password prompt (should happen automatically)\n"));
printf(_("\nIf no input file name is supplied, then standard input is used.\n\n")); printf(_("\nIf no input file name is supplied, then standard input is used.\n\n"));

View File

@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2009, PostgreSQL Global Development Group * Copyright (c) 2000-2009, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.202 2009/01/20 02:13:42 momjian Exp $ * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.203 2009/02/26 16:02:38 petere Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
#include "command.h" #include "command.h"
@ -1212,7 +1212,7 @@ do_connect(char *dbname, char *user, char *host, char *port)
* the postmaster's log. But libpq offers no API that would let us obtain * the postmaster's log. But libpq offers no API that would let us obtain
* a password and then continue with the first connection attempt. * a password and then continue with the first connection attempt.
*/ */
if (pset.getPassword) if (pset.getPassword == TRI_YES)
{ {
password = prompt_for_password(user); password = prompt_for_password(user);
} }
@ -1237,7 +1237,7 @@ do_connect(char *dbname, char *user, char *host, char *port)
* Connection attempt failed; either retry the connection attempt with * Connection attempt failed; either retry the connection attempt with
* a new password, or give up. * a new password, or give up.
*/ */
if (!password && PQconnectionNeedsPassword(n_conn)) if (!password && PQconnectionNeedsPassword(n_conn) && pset.getPassword != TRI_NO)
{ {
PQfinish(n_conn); PQfinish(n_conn);
password = prompt_for_password(user); password = prompt_for_password(user);

View File

@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2009, PostgreSQL Global Development Group * Copyright (c) 2000-2009, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/help.c,v 1.139 2009/02/25 13:03:07 petere Exp $ * $PostgreSQL: pgsql/src/bin/psql/help.c,v 1.140 2009/02/26 16:02:38 petere Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
@ -140,6 +140,7 @@ usage(void)
if (!env) if (!env)
env = user; env = user;
printf(_(" -U NAME database user name (default: \"%s\")\n"), env); printf(_(" -U NAME database user name (default: \"%s\")\n"), env);
puts(_(" -w never prompt for password"));
puts(_(" -W force password prompt (should happen automatically)")); puts(_(" -W force password prompt (should happen automatically)"));
puts(_( puts(_(

View File

@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2009, PostgreSQL Global Development Group * Copyright (c) 2000-2009, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/settings.h,v 1.34 2009/01/01 17:23:55 momjian Exp $ * $PostgreSQL: pgsql/src/bin/psql/settings.h,v 1.35 2009/02/26 16:02:38 petere Exp $
*/ */
#ifndef SETTINGS_H #ifndef SETTINGS_H
#define SETTINGS_H #define SETTINGS_H
@ -55,6 +55,12 @@ typedef enum
hctl_ignoreboth = hctl_ignorespace | hctl_ignoredups hctl_ignoreboth = hctl_ignorespace | hctl_ignoredups
} HistControl; } HistControl;
enum trivalue
{
TRI_DEFAULT,
TRI_NO,
TRI_YES
};
typedef struct _psqlSettings typedef struct _psqlSettings
{ {
@ -69,7 +75,7 @@ typedef struct _psqlSettings
bool notty; /* stdin or stdout is not a tty (as determined bool notty; /* stdin or stdout is not a tty (as determined
* on startup) */ * on startup) */
bool getPassword; /* prompt the user for a username and password */ enum trivalue getPassword; /* prompt the user for a username and password */
FILE *cur_cmd_source; /* describe the status of the current main FILE *cur_cmd_source; /* describe the status of the current main
* loop */ * loop */
bool cur_cmd_interactive; bool cur_cmd_interactive;

View File

@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2009, PostgreSQL Global Development Group * Copyright (c) 2000-2009, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.154 2009/02/25 13:24:40 petere Exp $ * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.155 2009/02/26 16:02:38 petere Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
@ -140,12 +140,7 @@ main(int argc, char *argv[])
pset.notty = (!isatty(fileno(stdin)) || !isatty(fileno(stdout))); pset.notty = (!isatty(fileno(stdin)) || !isatty(fileno(stdout)));
/* This is obsolete and should be removed sometime. */ pset.getPassword = TRI_DEFAULT;
#ifdef PSQL_ALWAYS_GET_PASSWORDS
pset.getPassword = true;
#else
pset.getPassword = false;
#endif
EstablishVariableSpace(); EstablishVariableSpace();
@ -175,7 +170,7 @@ main(int argc, char *argv[])
options.username); options.username);
} }
if (pset.getPassword) if (pset.getPassword == TRI_YES)
password = simple_prompt(password_prompt, 100, false); password = simple_prompt(password_prompt, 100, false);
/* loop until we have a password if requested by backend */ /* loop until we have a password if requested by backend */
@ -189,7 +184,8 @@ main(int argc, char *argv[])
if (PQstatus(pset.db) == CONNECTION_BAD && if (PQstatus(pset.db) == CONNECTION_BAD &&
PQconnectionNeedsPassword(pset.db) && PQconnectionNeedsPassword(pset.db) &&
password == NULL) password == NULL &&
pset.getPassword != TRI_NO)
{ {
PQfinish(pset.db); PQfinish(pset.db);
password = simple_prompt(password_prompt, 100, false); password = simple_prompt(password_prompt, 100, false);
@ -340,6 +336,7 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
{"set", required_argument, NULL, 'v'}, {"set", required_argument, NULL, 'v'},
{"variable", required_argument, NULL, 'v'}, {"variable", required_argument, NULL, 'v'},
{"version", no_argument, NULL, 'V'}, {"version", no_argument, NULL, 'V'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"expanded", no_argument, NULL, 'x'}, {"expanded", no_argument, NULL, 'x'},
{"no-psqlrc", no_argument, NULL, 'X'}, {"no-psqlrc", no_argument, NULL, 'X'},
@ -354,7 +351,7 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
memset(options, 0, sizeof *options); memset(options, 0, sizeof *options);
while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:h:HlL:no:p:P:qR:sStT:U:v:VWxX?1", while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:h:HlL:no:p:P:qR:sStT:U:v:VwWxX?1",
long_options, &optindex)) != -1) long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
@ -491,8 +488,11 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
case 'V': case 'V':
showVersion(); showVersion();
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
case 'w':
pset.getPassword = TRI_NO;
break;
case 'W': case 'W':
pset.getPassword = true; pset.getPassword = TRI_YES;
break; break;
case 'x': case 'x':
pset.popt.topt.expanded = true; pset.popt.topt.expanded = true;

View File

@ -4,7 +4,7 @@
* *
* Portions Copyright (c) 2002-2009, PostgreSQL Global Development Group * Portions Copyright (c) 2002-2009, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/scripts/clusterdb.c,v 1.24 2009/02/25 13:03:07 petere Exp $ * $PostgreSQL: pgsql/src/bin/scripts/clusterdb.c,v 1.25 2009/02/26 16:02:38 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -16,10 +16,10 @@
static void cluster_one_database(const char *dbname, bool verbose, const char *table, static void cluster_one_database(const char *dbname, bool verbose, const char *table,
const char *host, const char *port, const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo); const char *progname, bool echo);
static void cluster_all_databases(bool verbose, const char *host, const char *port, static void cluster_all_databases(bool verbose, const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo, bool quiet); const char *progname, bool echo, bool quiet);
static void help(const char *progname); static void help(const char *progname);
@ -32,6 +32,7 @@ main(int argc, char *argv[])
{"host", required_argument, NULL, 'h'}, {"host", required_argument, NULL, 'h'},
{"port", required_argument, NULL, 'p'}, {"port", required_argument, NULL, 'p'},
{"username", required_argument, NULL, 'U'}, {"username", required_argument, NULL, 'U'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"echo", no_argument, NULL, 'e'}, {"echo", no_argument, NULL, 'e'},
{"quiet", no_argument, NULL, 'q'}, {"quiet", no_argument, NULL, 'q'},
@ -50,7 +51,7 @@ main(int argc, char *argv[])
char *host = NULL; char *host = NULL;
char *port = NULL; char *port = NULL;
char *username = NULL; char *username = NULL;
bool password = false; enum trivalue prompt_password = TRI_DEFAULT;
bool echo = false; bool echo = false;
bool quiet = false; bool quiet = false;
bool alldb = false; bool alldb = false;
@ -62,7 +63,7 @@ main(int argc, char *argv[])
handle_help_version_opts(argc, argv, "clusterdb", help); handle_help_version_opts(argc, argv, "clusterdb", help);
while ((c = getopt_long(argc, argv, "h:p:U:Weqd:at:v", long_options, &optindex)) != -1) while ((c = getopt_long(argc, argv, "h:p:U:wWeqd:at:v", long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
{ {
@ -75,8 +76,11 @@ main(int argc, char *argv[])
case 'U': case 'U':
username = optarg; username = optarg;
break; break;
case 'w':
prompt_password = TRI_NO;
break;
case 'W': case 'W':
password = true; prompt_password = TRI_YES;
break; break;
case 'e': case 'e':
echo = true; echo = true;
@ -133,7 +137,7 @@ main(int argc, char *argv[])
exit(1); exit(1);
} }
cluster_all_databases(verbose, host, port, username, password, cluster_all_databases(verbose, host, port, username, prompt_password,
progname, echo, quiet); progname, echo, quiet);
} }
else else
@ -149,7 +153,7 @@ main(int argc, char *argv[])
} }
cluster_one_database(dbname, verbose, table, cluster_one_database(dbname, verbose, table,
host, port, username, password, host, port, username, prompt_password,
progname, echo); progname, echo);
} }
@ -160,7 +164,7 @@ main(int argc, char *argv[])
static void static void
cluster_one_database(const char *dbname, bool verbose, const char *table, cluster_one_database(const char *dbname, bool verbose, const char *table,
const char *host, const char *port, const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo) const char *progname, bool echo)
{ {
PQExpBufferData sql; PQExpBufferData sql;
@ -176,7 +180,7 @@ cluster_one_database(const char *dbname, bool verbose, const char *table,
appendPQExpBuffer(&sql, " %s", fmtId(table)); appendPQExpBuffer(&sql, " %s", fmtId(table));
appendPQExpBuffer(&sql, ";\n"); appendPQExpBuffer(&sql, ";\n");
conn = connectDatabase(dbname, host, port, username, password, progname); conn = connectDatabase(dbname, host, port, username, prompt_password, progname);
if (!executeMaintenanceCommand(conn, sql.data, echo)) if (!executeMaintenanceCommand(conn, sql.data, echo))
{ {
if (table) if (table)
@ -195,14 +199,14 @@ cluster_one_database(const char *dbname, bool verbose, const char *table,
static void static void
cluster_all_databases(bool verbose, const char *host, const char *port, cluster_all_databases(bool verbose, const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo, bool quiet) const char *progname, bool echo, bool quiet)
{ {
PGconn *conn; PGconn *conn;
PGresult *result; PGresult *result;
int i; int i;
conn = connectDatabase("postgres", host, port, username, password, progname); conn = connectDatabase("postgres", host, port, username, prompt_password, progname);
result = executeQuery(conn, "SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;", progname, echo); result = executeQuery(conn, "SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;", progname, echo);
PQfinish(conn); PQfinish(conn);
@ -217,7 +221,7 @@ cluster_all_databases(bool verbose, const char *host, const char *port,
} }
cluster_one_database(dbname, verbose, NULL, cluster_one_database(dbname, verbose, NULL,
host, port, username, password, host, port, username, prompt_password,
progname, echo); progname, echo);
} }
@ -244,6 +248,7 @@ help(const char *progname)
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
printf(_(" -p, --port=PORT database server port\n")); printf(_(" -p, --port=PORT database server port\n"));
printf(_(" -U, --username=USERNAME user name to connect as\n")); printf(_(" -U, --username=USERNAME user name to connect as\n"));
printf(_(" -w, --no-password never prompt for password\n"));
printf(_(" -W, --password force password prompt\n")); printf(_(" -W, --password force password prompt\n"));
printf(_("\nRead the description of the SQL command CLUSTER for details.\n")); printf(_("\nRead the description of the SQL command CLUSTER for details.\n"));
printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n")); printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/bin/scripts/common.c,v 1.34 2009/02/25 13:24:40 petere Exp $ * $PostgreSQL: pgsql/src/bin/scripts/common.c,v 1.35 2009/02/26 16:02:38 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -96,14 +96,14 @@ handle_help_version_opts(int argc, char *argv[],
*/ */
PGconn * PGconn *
connectDatabase(const char *dbname, const char *pghost, const char *pgport, connectDatabase(const char *dbname, const char *pghost, const char *pgport,
const char *pguser, bool require_password, const char *pguser, enum trivalue prompt_password,
const char *progname) const char *progname)
{ {
PGconn *conn; PGconn *conn;
char *password = NULL; char *password = NULL;
bool new_pass; bool new_pass;
if (require_password) if (prompt_password == TRI_YES)
password = simple_prompt("Password: ", 100, false); password = simple_prompt("Password: ", 100, false);
/* /*
@ -124,7 +124,8 @@ connectDatabase(const char *dbname, const char *pghost, const char *pgport,
if (PQstatus(conn) == CONNECTION_BAD && if (PQstatus(conn) == CONNECTION_BAD &&
PQconnectionNeedsPassword(conn) && PQconnectionNeedsPassword(conn) &&
password == NULL) password == NULL &&
prompt_password != TRI_NO)
{ {
PQfinish(conn); PQfinish(conn);
password = simple_prompt("Password: ", 100, false); password = simple_prompt("Password: ", 100, false);

View File

@ -4,7 +4,7 @@
* *
* Copyright (c) 2003-2009, PostgreSQL Global Development Group * Copyright (c) 2003-2009, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/scripts/common.h,v 1.21 2009/01/01 17:23:55 momjian Exp $ * $PostgreSQL: pgsql/src/bin/scripts/common.h,v 1.22 2009/02/26 16:02:39 petere Exp $
*/ */
#ifndef COMMON_H #ifndef COMMON_H
#define COMMON_H #define COMMON_H
@ -17,6 +17,13 @@
extern int optreset; extern int optreset;
#endif #endif
enum trivalue
{
TRI_DEFAULT,
TRI_NO,
TRI_YES
};
typedef void (*help_handler) (const char *progname); typedef void (*help_handler) (const char *progname);
extern const char *get_user_name(const char *progname); extern const char *get_user_name(const char *progname);
@ -27,7 +34,7 @@ extern void handle_help_version_opts(int argc, char *argv[],
extern PGconn *connectDatabase(const char *dbname, const char *pghost, extern PGconn *connectDatabase(const char *dbname, const char *pghost,
const char *pgport, const char *pguser, const char *pgport, const char *pguser,
bool require_password, const char *progname); enum trivalue prompt_password, const char *progname);
extern PGresult *executeQuery(PGconn *conn, const char *query, extern PGresult *executeQuery(PGconn *conn, const char *query,
const char *progname, bool echo); const char *progname, bool echo);

View File

@ -5,7 +5,7 @@
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/bin/scripts/createdb.c,v 1.31 2009/02/25 13:03:07 petere Exp $ * $PostgreSQL: pgsql/src/bin/scripts/createdb.c,v 1.32 2009/02/26 16:02:39 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -25,6 +25,7 @@ main(int argc, char *argv[])
{"host", required_argument, NULL, 'h'}, {"host", required_argument, NULL, 'h'},
{"port", required_argument, NULL, 'p'}, {"port", required_argument, NULL, 'p'},
{"username", required_argument, NULL, 'U'}, {"username", required_argument, NULL, 'U'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"echo", no_argument, NULL, 'e'}, {"echo", no_argument, NULL, 'e'},
{"quiet", no_argument, NULL, 'q'}, {"quiet", no_argument, NULL, 'q'},
@ -47,7 +48,7 @@ main(int argc, char *argv[])
char *host = NULL; char *host = NULL;
char *port = NULL; char *port = NULL;
char *username = NULL; char *username = NULL;
bool password = false; enum trivalue prompt_password = TRI_DEFAULT;
bool echo = false; bool echo = false;
char *owner = NULL; char *owner = NULL;
char *tablespace = NULL; char *tablespace = NULL;
@ -67,7 +68,7 @@ main(int argc, char *argv[])
handle_help_version_opts(argc, argv, "createdb", help); handle_help_version_opts(argc, argv, "createdb", help);
while ((c = getopt_long(argc, argv, "h:p:U:WeqO:D:T:E:l:", long_options, &optindex)) != -1) while ((c = getopt_long(argc, argv, "h:p:U:wWeqO:D:T:E:l:", long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
{ {
@ -80,8 +81,11 @@ main(int argc, char *argv[])
case 'U': case 'U':
username = optarg; username = optarg;
break; break;
case 'w':
prompt_password = TRI_NO;
break;
case 'W': case 'W':
password = true; prompt_password = TRI_YES;
break; break;
case 'e': case 'e':
echo = true; echo = true;
@ -193,7 +197,7 @@ main(int argc, char *argv[])
appendPQExpBuffer(&sql, ";\n"); appendPQExpBuffer(&sql, ";\n");
conn = connectDatabase(strcmp(dbname, "postgres") == 0 ? "template1" : "postgres", conn = connectDatabase(strcmp(dbname, "postgres") == 0 ? "template1" : "postgres",
host, port, username, password, progname); host, port, username, prompt_password, progname);
if (echo) if (echo)
printf("%s", sql.data); printf("%s", sql.data);
@ -212,7 +216,7 @@ main(int argc, char *argv[])
if (comment) if (comment)
{ {
conn = connectDatabase(dbname, host, port, username, password, progname); conn = connectDatabase(dbname, host, port, username, prompt_password, progname);
printfPQExpBuffer(&sql, "COMMENT ON DATABASE %s IS ", fmtId(dbname)); printfPQExpBuffer(&sql, "COMMENT ON DATABASE %s IS ", fmtId(dbname));
appendStringLiteralConn(&sql, comment, conn); appendStringLiteralConn(&sql, comment, conn);
@ -259,6 +263,7 @@ help(const char *progname)
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
printf(_(" -p, --port=PORT database server port\n")); printf(_(" -p, --port=PORT database server port\n"));
printf(_(" -U, --username=USERNAME user name to connect as\n")); printf(_(" -U, --username=USERNAME user name to connect as\n"));
printf(_(" -w, --no-password never prompt for password\n"));
printf(_(" -W, --password force password prompt\n")); printf(_(" -W, --password force password prompt\n"));
printf(_("\nBy default, a database with the same name as the current user is created.\n")); printf(_("\nBy default, a database with the same name as the current user is created.\n"));
printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n")); printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));

View File

@ -5,7 +5,7 @@
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/bin/scripts/createlang.c,v 1.33 2009/02/25 13:03:07 petere Exp $ * $PostgreSQL: pgsql/src/bin/scripts/createlang.c,v 1.34 2009/02/26 16:02:39 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -25,6 +25,7 @@ main(int argc, char *argv[])
{"host", required_argument, NULL, 'h'}, {"host", required_argument, NULL, 'h'},
{"port", required_argument, NULL, 'p'}, {"port", required_argument, NULL, 'p'},
{"username", required_argument, NULL, 'U'}, {"username", required_argument, NULL, 'U'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"dbname", required_argument, NULL, 'd'}, {"dbname", required_argument, NULL, 'd'},
{"echo", no_argument, NULL, 'e'}, {"echo", no_argument, NULL, 'e'},
@ -40,7 +41,7 @@ main(int argc, char *argv[])
char *host = NULL; char *host = NULL;
char *port = NULL; char *port = NULL;
char *username = NULL; char *username = NULL;
bool password = false; enum trivalue prompt_password = TRI_DEFAULT;
bool echo = false; bool echo = false;
char *langname = NULL; char *langname = NULL;
@ -56,7 +57,7 @@ main(int argc, char *argv[])
handle_help_version_opts(argc, argv, "createlang", help); handle_help_version_opts(argc, argv, "createlang", help);
while ((c = getopt_long(argc, argv, "lh:p:U:Wd:e", long_options, &optindex)) != -1) while ((c = getopt_long(argc, argv, "lh:p:U:wWd:e", long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
{ {
@ -72,8 +73,11 @@ main(int argc, char *argv[])
case 'U': case 'U':
username = optarg; username = optarg;
break; break;
case 'w':
prompt_password = TRI_NO;
break;
case 'W': case 'W':
password = true; prompt_password = TRI_YES;
break; break;
case 'd': case 'd':
dbname = optarg; dbname = optarg;
@ -127,7 +131,7 @@ main(int argc, char *argv[])
printQueryOpt popt; printQueryOpt popt;
static const bool translate_columns[] = {false, true}; static const bool translate_columns[] = {false, true};
conn = connectDatabase(dbname, host, port, username, password, conn = connectDatabase(dbname, host, port, username, prompt_password,
progname); progname);
printfPQExpBuffer(&sql, "SELECT lanname as \"%s\", " printfPQExpBuffer(&sql, "SELECT lanname as \"%s\", "
@ -164,7 +168,7 @@ main(int argc, char *argv[])
if (*p >= 'A' && *p <= 'Z') if (*p >= 'A' && *p <= 'Z')
*p += ('a' - 'A'); *p += ('a' - 'A');
conn = connectDatabase(dbname, host, port, username, password, progname); conn = connectDatabase(dbname, host, port, username, prompt_password, progname);
/* /*
* Make sure the language isn't already installed * Make sure the language isn't already installed
@ -220,6 +224,7 @@ help(const char *progname)
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
printf(_(" -p, --port=PORT database server port\n")); printf(_(" -p, --port=PORT database server port\n"));
printf(_(" -U, --username=USERNAME user name to connect as\n")); printf(_(" -U, --username=USERNAME user name to connect as\n"));
printf(_(" -w, --no-password never prompt for password\n"));
printf(_(" -W, --password force password prompt\n")); printf(_(" -W, --password force password prompt\n"));
printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n")); printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));
} }

View File

@ -5,7 +5,7 @@
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/bin/scripts/createuser.c,v 1.41 2009/02/25 13:03:07 petere Exp $ * $PostgreSQL: pgsql/src/bin/scripts/createuser.c,v 1.42 2009/02/26 16:02:39 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -17,13 +17,6 @@
static void help(const char *progname); static void help(const char *progname);
enum trivalue
{
TRI_DEFAULT,
TRI_NO,
TRI_YES
};
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
@ -31,6 +24,7 @@ main(int argc, char *argv[])
{"host", required_argument, NULL, 'h'}, {"host", required_argument, NULL, 'h'},
{"port", required_argument, NULL, 'p'}, {"port", required_argument, NULL, 'p'},
{"username", required_argument, NULL, 'U'}, {"username", required_argument, NULL, 'U'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"echo", no_argument, NULL, 'e'}, {"echo", no_argument, NULL, 'e'},
{"quiet", no_argument, NULL, 'q'}, {"quiet", no_argument, NULL, 'q'},
@ -61,7 +55,7 @@ main(int argc, char *argv[])
char *host = NULL; char *host = NULL;
char *port = NULL; char *port = NULL;
char *username = NULL; char *username = NULL;
bool password = false; enum trivalue prompt_password = TRI_DEFAULT;
bool echo = false; bool echo = false;
char *conn_limit = NULL; char *conn_limit = NULL;
bool pwprompt = false; bool pwprompt = false;
@ -85,7 +79,7 @@ main(int argc, char *argv[])
handle_help_version_opts(argc, argv, "createuser", help); handle_help_version_opts(argc, argv, "createuser", help);
while ((c = getopt_long(argc, argv, "h:p:U:WeqdDsSaArRiIlLc:PEN", while ((c = getopt_long(argc, argv, "h:p:U:wWeqdDsSaArRiIlLc:PEN",
long_options, &optindex)) != -1) long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
@ -99,8 +93,11 @@ main(int argc, char *argv[])
case 'U': case 'U':
username = optarg; username = optarg;
break; break;
case 'w':
prompt_password = TRI_NO;
break;
case 'W': case 'W':
password = true; prompt_password = TRI_YES;
break; break;
case 'e': case 'e':
echo = true; echo = true;
@ -228,7 +225,7 @@ main(int argc, char *argv[])
if (login == 0) if (login == 0)
login = TRI_YES; login = TRI_YES;
conn = connectDatabase("postgres", host, port, username, password, progname); conn = connectDatabase("postgres", host, port, username, prompt_password, progname);
initPQExpBuffer(&sql); initPQExpBuffer(&sql);
@ -329,6 +326,7 @@ help(const char *progname)
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
printf(_(" -p, --port=PORT database server port\n")); printf(_(" -p, --port=PORT database server port\n"));
printf(_(" -U, --username=USERNAME user name to connect as (not the one to create)\n")); printf(_(" -U, --username=USERNAME user name to connect as (not the one to create)\n"));
printf(_(" -w, --no-password never prompt for password\n"));
printf(_(" -W, --password force password prompt\n")); printf(_(" -W, --password force password prompt\n"));
printf(_("\nIf one of -d, -D, -r, -R, -s, -S, and ROLENAME is not specified, you will\n" printf(_("\nIf one of -d, -D, -r, -R, -s, -S, and ROLENAME is not specified, you will\n"
"be prompted interactively.\n")); "be prompted interactively.\n"));

View File

@ -5,7 +5,7 @@
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/bin/scripts/dropdb.c,v 1.25 2009/02/25 13:03:07 petere Exp $ * $PostgreSQL: pgsql/src/bin/scripts/dropdb.c,v 1.26 2009/02/26 16:02:39 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -25,6 +25,7 @@ main(int argc, char *argv[])
{"host", required_argument, NULL, 'h'}, {"host", required_argument, NULL, 'h'},
{"port", required_argument, NULL, 'p'}, {"port", required_argument, NULL, 'p'},
{"username", required_argument, NULL, 'U'}, {"username", required_argument, NULL, 'U'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"echo", no_argument, NULL, 'e'}, {"echo", no_argument, NULL, 'e'},
{"quiet", no_argument, NULL, 'q'}, {"quiet", no_argument, NULL, 'q'},
@ -40,7 +41,7 @@ main(int argc, char *argv[])
char *host = NULL; char *host = NULL;
char *port = NULL; char *port = NULL;
char *username = NULL; char *username = NULL;
bool password = false; enum trivalue prompt_password = TRI_DEFAULT;
bool echo = false; bool echo = false;
bool interactive = false; bool interactive = false;
@ -54,7 +55,7 @@ main(int argc, char *argv[])
handle_help_version_opts(argc, argv, "dropdb", help); handle_help_version_opts(argc, argv, "dropdb", help);
while ((c = getopt_long(argc, argv, "h:p:U:Weqi", long_options, &optindex)) != -1) while ((c = getopt_long(argc, argv, "h:p:U:wWeqi", long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
{ {
@ -67,8 +68,11 @@ main(int argc, char *argv[])
case 'U': case 'U':
username = optarg; username = optarg;
break; break;
case 'w':
prompt_password = TRI_NO;
break;
case 'W': case 'W':
password = true; prompt_password = TRI_YES;
break; break;
case 'e': case 'e':
echo = true; echo = true;
@ -114,7 +118,7 @@ main(int argc, char *argv[])
fmtId(dbname)); fmtId(dbname));
conn = connectDatabase(strcmp(dbname, "postgres") == 0 ? "template1" : "postgres", conn = connectDatabase(strcmp(dbname, "postgres") == 0 ? "template1" : "postgres",
host, port, username, password, progname); host, port, username, prompt_password, progname);
if (echo) if (echo)
printf("%s", sql.data); printf("%s", sql.data);
@ -148,6 +152,7 @@ help(const char *progname)
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
printf(_(" -p, --port=PORT database server port\n")); printf(_(" -p, --port=PORT database server port\n"));
printf(_(" -U, --username=USERNAME user name to connect as\n")); printf(_(" -U, --username=USERNAME user name to connect as\n"));
printf(_(" -w, --no-password never prompt for password\n"));
printf(_(" -W, --password force password prompt\n")); printf(_(" -W, --password force password prompt\n"));
printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n")); printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));
} }

View File

@ -5,7 +5,7 @@
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/bin/scripts/droplang.c,v 1.30 2009/02/25 13:03:07 petere Exp $ * $PostgreSQL: pgsql/src/bin/scripts/droplang.c,v 1.31 2009/02/26 16:02:39 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -28,6 +28,7 @@ main(int argc, char *argv[])
{"host", required_argument, NULL, 'h'}, {"host", required_argument, NULL, 'h'},
{"port", required_argument, NULL, 'p'}, {"port", required_argument, NULL, 'p'},
{"username", required_argument, NULL, 'U'}, {"username", required_argument, NULL, 'U'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"dbname", required_argument, NULL, 'd'}, {"dbname", required_argument, NULL, 'd'},
{"echo", no_argument, NULL, 'e'}, {"echo", no_argument, NULL, 'e'},
@ -43,7 +44,7 @@ main(int argc, char *argv[])
char *host = NULL; char *host = NULL;
char *port = NULL; char *port = NULL;
char *username = NULL; char *username = NULL;
bool password = false; enum trivalue prompt_password = TRI_DEFAULT;
bool echo = false; bool echo = false;
char *langname = NULL; char *langname = NULL;
@ -67,7 +68,7 @@ main(int argc, char *argv[])
handle_help_version_opts(argc, argv, "droplang", help); handle_help_version_opts(argc, argv, "droplang", help);
while ((c = getopt_long(argc, argv, "lh:p:U:Wd:e", long_options, &optindex)) != -1) while ((c = getopt_long(argc, argv, "lh:p:U:wWd:e", long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
{ {
@ -83,8 +84,11 @@ main(int argc, char *argv[])
case 'U': case 'U':
username = optarg; username = optarg;
break; break;
case 'w':
prompt_password = TRI_NO;
break;
case 'W': case 'W':
password = true; prompt_password = TRI_YES;
break; break;
case 'd': case 'd':
dbname = optarg; dbname = optarg;
@ -138,7 +142,7 @@ main(int argc, char *argv[])
printQueryOpt popt; printQueryOpt popt;
static const bool translate_columns[] = {false, true}; static const bool translate_columns[] = {false, true};
conn = connectDatabase(dbname, host, port, username, password, conn = connectDatabase(dbname, host, port, username, prompt_password,
progname); progname);
printfPQExpBuffer(&sql, "SELECT lanname as \"%s\", " printfPQExpBuffer(&sql, "SELECT lanname as \"%s\", "
@ -177,7 +181,7 @@ main(int argc, char *argv[])
if (*p >= 'A' && *p <= 'Z') if (*p >= 'A' && *p <= 'Z')
*p += ('a' - 'A'); *p += ('a' - 'A');
conn = connectDatabase(dbname, host, port, username, password, progname); conn = connectDatabase(dbname, host, port, username, prompt_password, progname);
/* /*
* Force schema search path to be just pg_catalog, so that we don't have * Force schema search path to be just pg_catalog, so that we don't have
@ -337,6 +341,7 @@ help(const char *progname)
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
printf(_(" -p, --port=PORT database server port\n")); printf(_(" -p, --port=PORT database server port\n"));
printf(_(" -U, --username=USERNAME user name to connect as\n")); printf(_(" -U, --username=USERNAME user name to connect as\n"));
printf(_(" -w, --no-password never prompt for password\n"));
printf(_(" -W, --password force password prompt\n")); printf(_(" -W, --password force password prompt\n"));
printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n")); printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));
} }

View File

@ -5,7 +5,7 @@
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/bin/scripts/dropuser.c,v 1.26 2009/02/25 13:03:07 petere Exp $ * $PostgreSQL: pgsql/src/bin/scripts/dropuser.c,v 1.27 2009/02/26 16:02:39 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -25,6 +25,7 @@ main(int argc, char *argv[])
{"host", required_argument, NULL, 'h'}, {"host", required_argument, NULL, 'h'},
{"port", required_argument, NULL, 'p'}, {"port", required_argument, NULL, 'p'},
{"username", required_argument, NULL, 'U'}, {"username", required_argument, NULL, 'U'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"echo", no_argument, NULL, 'e'}, {"echo", no_argument, NULL, 'e'},
{"quiet", no_argument, NULL, 'q'}, {"quiet", no_argument, NULL, 'q'},
@ -40,7 +41,7 @@ main(int argc, char *argv[])
char *host = NULL; char *host = NULL;
char *port = NULL; char *port = NULL;
char *username = NULL; char *username = NULL;
bool password = false; enum trivalue prompt_password = TRI_DEFAULT;
bool echo = false; bool echo = false;
bool interactive = false; bool interactive = false;
@ -54,7 +55,7 @@ main(int argc, char *argv[])
handle_help_version_opts(argc, argv, "dropuser", help); handle_help_version_opts(argc, argv, "dropuser", help);
while ((c = getopt_long(argc, argv, "h:p:U:Weqi", long_options, &optindex)) != -1) while ((c = getopt_long(argc, argv, "h:p:U:wWeqi", long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
{ {
@ -67,8 +68,11 @@ main(int argc, char *argv[])
case 'U': case 'U':
username = optarg; username = optarg;
break; break;
case 'w':
prompt_password = TRI_NO;
break;
case 'W': case 'W':
password = true; prompt_password = TRI_YES;
break; break;
case 'e': case 'e':
echo = true; echo = true;
@ -112,7 +116,7 @@ main(int argc, char *argv[])
initPQExpBuffer(&sql); initPQExpBuffer(&sql);
appendPQExpBuffer(&sql, "DROP ROLE %s;\n", fmtId(dropuser)); appendPQExpBuffer(&sql, "DROP ROLE %s;\n", fmtId(dropuser));
conn = connectDatabase("postgres", host, port, username, password, progname); conn = connectDatabase("postgres", host, port, username, prompt_password, progname);
if (echo) if (echo)
printf("%s", sql.data); printf("%s", sql.data);
@ -147,6 +151,7 @@ help(const char *progname)
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
printf(_(" -p, --port=PORT database server port\n")); printf(_(" -p, --port=PORT database server port\n"));
printf(_(" -U, --username=USERNAME user name to connect as (not the one to drop)\n")); printf(_(" -U, --username=USERNAME user name to connect as (not the one to drop)\n"));
printf(_(" -w, --no-password never prompt for password\n"));
printf(_(" -W, --password force password prompt\n")); printf(_(" -W, --password force password prompt\n"));
printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n")); printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));
} }

View File

@ -4,7 +4,7 @@
* *
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/scripts/reindexdb.c,v 1.16 2009/02/25 13:03:07 petere Exp $ * $PostgreSQL: pgsql/src/bin/scripts/reindexdb.c,v 1.17 2009/02/26 16:02:39 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -17,15 +17,15 @@
static void reindex_one_database(const char *name, const char *dbname, static void reindex_one_database(const char *name, const char *dbname,
const char *type, const char *host, const char *type, const char *host,
const char *port, const char *username, const char *port, const char *username,
bool password, const char *progname, enum trivalue prompt_password, const char *progname,
bool echo); bool echo);
static void reindex_all_databases(const char *host, const char *port, static void reindex_all_databases(const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo, const char *progname, bool echo,
bool quiet); bool quiet);
static void reindex_system_catalogs(const char *dbname, static void reindex_system_catalogs(const char *dbname,
const char *host, const char *port, const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo); const char *progname, bool echo);
static void help(const char *progname); static void help(const char *progname);
@ -36,6 +36,7 @@ main(int argc, char *argv[])
{"host", required_argument, NULL, 'h'}, {"host", required_argument, NULL, 'h'},
{"port", required_argument, NULL, 'p'}, {"port", required_argument, NULL, 'p'},
{"username", required_argument, NULL, 'U'}, {"username", required_argument, NULL, 'U'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"echo", no_argument, NULL, 'e'}, {"echo", no_argument, NULL, 'e'},
{"quiet", no_argument, NULL, 'q'}, {"quiet", no_argument, NULL, 'q'},
@ -55,7 +56,7 @@ main(int argc, char *argv[])
const char *host = NULL; const char *host = NULL;
const char *port = NULL; const char *port = NULL;
const char *username = NULL; const char *username = NULL;
bool password = false; enum trivalue prompt_password = TRI_DEFAULT;
bool syscatalog = false; bool syscatalog = false;
bool alldb = false; bool alldb = false;
bool echo = false; bool echo = false;
@ -69,7 +70,7 @@ main(int argc, char *argv[])
handle_help_version_opts(argc, argv, "reindexdb", help); handle_help_version_opts(argc, argv, "reindexdb", help);
/* process command-line options */ /* process command-line options */
while ((c = getopt_long(argc, argv, "h:p:U:Weqd:ast:i:", long_options, &optindex)) != -1) while ((c = getopt_long(argc, argv, "h:p:U:wWeqd:ast:i:", long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
{ {
@ -82,8 +83,11 @@ main(int argc, char *argv[])
case 'U': case 'U':
username = optarg; username = optarg;
break; break;
case 'w':
prompt_password = TRI_NO;
break;
case 'W': case 'W':
password = true; prompt_password = TRI_YES;
break; break;
case 'e': case 'e':
echo = true; echo = true;
@ -150,7 +154,7 @@ main(int argc, char *argv[])
exit(1); exit(1);
} }
reindex_all_databases(host, port, username, password, reindex_all_databases(host, port, username, prompt_password,
progname, echo, quiet); progname, echo, quiet);
} }
else if (syscatalog) else if (syscatalog)
@ -176,7 +180,7 @@ main(int argc, char *argv[])
dbname = get_user_name(progname); dbname = get_user_name(progname);
} }
reindex_system_catalogs(dbname, host, port, username, password, reindex_system_catalogs(dbname, host, port, username, prompt_password,
progname, echo); progname, echo);
} }
else else
@ -193,14 +197,14 @@ main(int argc, char *argv[])
if (index) if (index)
reindex_one_database(index, dbname, "INDEX", host, port, reindex_one_database(index, dbname, "INDEX", host, port,
username, password, progname, echo); username, prompt_password, progname, echo);
if (table) if (table)
reindex_one_database(table, dbname, "TABLE", host, port, reindex_one_database(table, dbname, "TABLE", host, port,
username, password, progname, echo); username, prompt_password, progname, echo);
/* reindex database only if index or table is not specified */ /* reindex database only if index or table is not specified */
if (index == NULL && table == NULL) if (index == NULL && table == NULL)
reindex_one_database(dbname, dbname, "DATABASE", host, port, reindex_one_database(dbname, dbname, "DATABASE", host, port,
username, password, progname, echo); username, prompt_password, progname, echo);
} }
exit(0); exit(0);
@ -209,7 +213,7 @@ main(int argc, char *argv[])
static void static void
reindex_one_database(const char *name, const char *dbname, const char *type, reindex_one_database(const char *name, const char *dbname, const char *type,
const char *host, const char *port, const char *username, const char *host, const char *port, const char *username,
bool password, const char *progname, bool echo) enum trivalue prompt_password, const char *progname, bool echo)
{ {
PQExpBufferData sql; PQExpBufferData sql;
@ -226,7 +230,7 @@ reindex_one_database(const char *name, const char *dbname, const char *type,
appendPQExpBuffer(&sql, " DATABASE %s", fmtId(name)); appendPQExpBuffer(&sql, " DATABASE %s", fmtId(name));
appendPQExpBuffer(&sql, ";\n"); appendPQExpBuffer(&sql, ";\n");
conn = connectDatabase(dbname, host, port, username, password, progname); conn = connectDatabase(dbname, host, port, username, prompt_password, progname);
if (!executeMaintenanceCommand(conn, sql.data, echo)) if (!executeMaintenanceCommand(conn, sql.data, echo))
{ {
@ -249,14 +253,14 @@ reindex_one_database(const char *name, const char *dbname, const char *type,
static void static void
reindex_all_databases(const char *host, const char *port, reindex_all_databases(const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo, bool quiet) const char *progname, bool echo, bool quiet)
{ {
PGconn *conn; PGconn *conn;
PGresult *result; PGresult *result;
int i; int i;
conn = connectDatabase("postgres", host, port, username, password, progname); conn = connectDatabase("postgres", host, port, username, prompt_password, progname);
result = executeQuery(conn, "SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;", progname, echo); result = executeQuery(conn, "SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;", progname, echo);
PQfinish(conn); PQfinish(conn);
@ -271,7 +275,7 @@ reindex_all_databases(const char *host, const char *port,
} }
reindex_one_database(dbname, dbname, "DATABASE", host, port, username, reindex_one_database(dbname, dbname, "DATABASE", host, port, username,
password, progname, echo); prompt_password, progname, echo);
} }
PQclear(result); PQclear(result);
@ -279,7 +283,7 @@ reindex_all_databases(const char *host, const char *port,
static void static void
reindex_system_catalogs(const char *dbname, const char *host, const char *port, reindex_system_catalogs(const char *dbname, const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo) const char *progname, bool echo)
{ {
PQExpBufferData sql; PQExpBufferData sql;
@ -290,7 +294,7 @@ reindex_system_catalogs(const char *dbname, const char *host, const char *port,
appendPQExpBuffer(&sql, "REINDEX SYSTEM %s;\n", dbname); appendPQExpBuffer(&sql, "REINDEX SYSTEM %s;\n", dbname);
conn = connectDatabase(dbname, host, port, username, password, progname); conn = connectDatabase(dbname, host, port, username, prompt_password, progname);
if (!executeMaintenanceCommand(conn, sql.data, echo)) if (!executeMaintenanceCommand(conn, sql.data, echo))
{ {
fprintf(stderr, _("%s: reindexing of system catalogs failed: %s"), fprintf(stderr, _("%s: reindexing of system catalogs failed: %s"),
@ -322,6 +326,7 @@ help(const char *progname)
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
printf(_(" -p, --port=PORT database server port\n")); printf(_(" -p, --port=PORT database server port\n"));
printf(_(" -U, --username=USERNAME user name to connect as\n")); printf(_(" -U, --username=USERNAME user name to connect as\n"));
printf(_(" -w, --no-password never prompt for password\n"));
printf(_(" -W, --password force password prompt\n")); printf(_(" -W, --password force password prompt\n"));
printf(_("\nRead the description of the SQL command REINDEX for details.\n")); printf(_("\nRead the description of the SQL command REINDEX for details.\n"));
printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n")); printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));

View File

@ -5,7 +5,7 @@
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/bin/scripts/vacuumdb.c,v 1.24 2009/02/25 13:03:07 petere Exp $ * $PostgreSQL: pgsql/src/bin/scripts/vacuumdb.c,v 1.25 2009/02/26 16:02:39 petere Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -17,11 +17,11 @@
static void vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze, static void vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze,
bool freeze, const char *table, bool freeze, const char *table,
const char *host, const char *port, const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo); const char *progname, bool echo);
static void vacuum_all_databases(bool full, bool verbose, bool analyze, bool freeze, static void vacuum_all_databases(bool full, bool verbose, bool analyze, bool freeze,
const char *host, const char *port, const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo, bool quiet); const char *progname, bool echo, bool quiet);
static void help(const char *progname); static void help(const char *progname);
@ -34,6 +34,7 @@ main(int argc, char *argv[])
{"host", required_argument, NULL, 'h'}, {"host", required_argument, NULL, 'h'},
{"port", required_argument, NULL, 'p'}, {"port", required_argument, NULL, 'p'},
{"username", required_argument, NULL, 'U'}, {"username", required_argument, NULL, 'U'},
{"no-password", no_argument, NULL, 'w'},
{"password", no_argument, NULL, 'W'}, {"password", no_argument, NULL, 'W'},
{"echo", no_argument, NULL, 'e'}, {"echo", no_argument, NULL, 'e'},
{"quiet", no_argument, NULL, 'q'}, {"quiet", no_argument, NULL, 'q'},
@ -55,7 +56,7 @@ main(int argc, char *argv[])
char *host = NULL; char *host = NULL;
char *port = NULL; char *port = NULL;
char *username = NULL; char *username = NULL;
bool password = false; enum trivalue prompt_password = TRI_DEFAULT;
bool echo = false; bool echo = false;
bool quiet = false; bool quiet = false;
bool analyze = false; bool analyze = false;
@ -70,7 +71,7 @@ main(int argc, char *argv[])
handle_help_version_opts(argc, argv, "vacuumdb", help); handle_help_version_opts(argc, argv, "vacuumdb", help);
while ((c = getopt_long(argc, argv, "h:p:U:Weqd:zaFt:fv", long_options, &optindex)) != -1) while ((c = getopt_long(argc, argv, "h:p:U:wWeqd:zaFt:fv", long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
{ {
@ -83,8 +84,11 @@ main(int argc, char *argv[])
case 'U': case 'U':
username = optarg; username = optarg;
break; break;
case 'w':
prompt_password = TRI_NO;
break;
case 'W': case 'W':
password = true; prompt_password = TRI_YES;
break; break;
case 'e': case 'e':
echo = true; echo = true;
@ -151,7 +155,7 @@ main(int argc, char *argv[])
} }
vacuum_all_databases(full, verbose, analyze, freeze, vacuum_all_databases(full, verbose, analyze, freeze,
host, port, username, password, host, port, username, prompt_password,
progname, echo, quiet); progname, echo, quiet);
} }
else else
@ -167,7 +171,7 @@ main(int argc, char *argv[])
} }
vacuum_one_database(dbname, full, verbose, analyze, freeze, table, vacuum_one_database(dbname, full, verbose, analyze, freeze, table,
host, port, username, password, host, port, username, prompt_password,
progname, echo); progname, echo);
} }
@ -179,7 +183,7 @@ static void
vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze, vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze,
bool freeze, const char *table, bool freeze, const char *table,
const char *host, const char *port, const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo) const char *progname, bool echo)
{ {
PQExpBufferData sql; PQExpBufferData sql;
@ -201,7 +205,7 @@ vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze,
appendPQExpBuffer(&sql, " %s", table); appendPQExpBuffer(&sql, " %s", table);
appendPQExpBuffer(&sql, ";\n"); appendPQExpBuffer(&sql, ";\n");
conn = connectDatabase(dbname, host, port, username, password, progname); conn = connectDatabase(dbname, host, port, username, prompt_password, progname);
if (!executeMaintenanceCommand(conn, sql.data, echo)) if (!executeMaintenanceCommand(conn, sql.data, echo))
{ {
if (table) if (table)
@ -221,14 +225,14 @@ vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze,
static void static void
vacuum_all_databases(bool full, bool verbose, bool analyze, bool freeze, vacuum_all_databases(bool full, bool verbose, bool analyze, bool freeze,
const char *host, const char *port, const char *host, const char *port,
const char *username, bool password, const char *username, enum trivalue prompt_password,
const char *progname, bool echo, bool quiet) const char *progname, bool echo, bool quiet)
{ {
PGconn *conn; PGconn *conn;
PGresult *result; PGresult *result;
int i; int i;
conn = connectDatabase("postgres", host, port, username, password, progname); conn = connectDatabase("postgres", host, port, username, prompt_password, progname);
result = executeQuery(conn, "SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;", progname, echo); result = executeQuery(conn, "SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;", progname, echo);
PQfinish(conn); PQfinish(conn);
@ -243,7 +247,7 @@ vacuum_all_databases(bool full, bool verbose, bool analyze, bool freeze,
} }
vacuum_one_database(dbname, full, verbose, analyze, freeze, NULL, vacuum_one_database(dbname, full, verbose, analyze, freeze, NULL,
host, port, username, password, host, port, username, prompt_password,
progname, echo); progname, echo);
} }
@ -273,6 +277,7 @@ help(const char *progname)
printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));
printf(_(" -p, --port=PORT database server port\n")); printf(_(" -p, --port=PORT database server port\n"));
printf(_(" -U, --username=USERNAME user name to connect as\n")); printf(_(" -U, --username=USERNAME user name to connect as\n"));
printf(_(" -w, --no-password never prompt for password\n"));
printf(_(" -W, --password force password prompt\n")); printf(_(" -W, --password force password prompt\n"));
printf(_("\nRead the description of the SQL command VACUUM for details.\n")); printf(_("\nRead the description of the SQL command VACUUM for details.\n"));
printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n")); printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));

View File

@ -6,7 +6,7 @@
* for developers. If you edit any of these, be sure to do a *full* * for developers. If you edit any of these, be sure to do a *full*
* rebuild (and an initdb if noted). * rebuild (and an initdb if noted).
* *
* $PostgreSQL: pgsql/src/include/pg_config_manual.h,v 1.37 2009/01/12 05:10:45 tgl Exp $ * $PostgreSQL: pgsql/src/include/pg_config_manual.h,v 1.38 2009/02/26 16:02:39 petere Exp $
*------------------------------------------------------------------------ *------------------------------------------------------------------------
*/ */
@ -58,12 +58,6 @@
*/ */
#define NUM_USER_DEFINED_LWLOCKS 4 #define NUM_USER_DEFINED_LWLOCKS 4
/*
* Define this if you want psql to _always_ ask for a username and a
* password for password authentication.
*/
/* #define PSQL_ALWAYS_GET_PASSWORDS */
/* /*
* Define this if you want to allow the lo_import and lo_export SQL * Define this if you want to allow the lo_import and lo_export SQL
* functions to be executed by ordinary users. By default these * functions to be executed by ordinary users. By default these