summaryrefslogtreecommitdiff
path: root/src/bin/scripts/vacuumdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/scripts/vacuumdb.c')
-rw-r--r--src/bin/scripts/vacuumdb.c66
1 files changed, 11 insertions, 55 deletions
diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c
index 8cbf0392a8d..0863c64cbc5 100644
--- a/src/bin/scripts/vacuumdb.c
+++ b/src/bin/scripts/vacuumdb.c
@@ -43,8 +43,7 @@ static void vacuum_one_database(const char *dbname, vacuumingOptions *vacopts,
const char *host, const char *port,
const char *username, enum trivalue prompt_password,
int concurrentCons,
- const char *progname, bool echo, bool quiet,
- char **password);
+ const char *progname, bool echo, bool quiet);
static void vacuum_all_databases(vacuumingOptions *vacopts,
bool analyze_in_stages,
@@ -276,8 +275,6 @@ main(int argc, char *argv[])
}
else
{
- char *password = NULL;
-
if (dbname == NULL)
{
if (getenv("PGDATABASE"))
@@ -299,8 +296,7 @@ main(int argc, char *argv[])
&tables,
host, port, username, prompt_password,
concurrentCons,
- progname, echo, quiet,
- &password);
+ progname, echo, quiet);
}
}
else
@@ -309,10 +305,7 @@ main(int argc, char *argv[])
&tables,
host, port, username, prompt_password,
concurrentCons,
- progname, echo, quiet,
- &password);
-
- pg_free(password);
+ progname, echo, quiet);
}
exit(0);
@@ -330,21 +323,15 @@ main(int argc, char *argv[])
* If concurrentCons is > 1, multiple connections are used to vacuum tables
* in parallel. In this case and if the table list is empty, we first obtain
* a list of tables from the database.
- *
- * 'password' is both an input and output parameter. If one is not passed,
- * then whatever is used in a connection is returned so that caller can
- * reuse it in future connections.
*/
static void
vacuum_one_database(const char *dbname, vacuumingOptions *vacopts,
int stage,
SimpleStringList *tables,
const char *host, const char *port,
- const char *username,
- enum trivalue prompt_password,
+ const char *username, enum trivalue prompt_password,
int concurrentCons,
- const char *progname, bool echo, bool quiet,
- char **password)
+ const char *progname, bool echo, bool quiet)
{
PQExpBufferData sql;
PGconn *conn;
@@ -378,15 +365,8 @@ vacuum_one_database(const char *dbname, vacuumingOptions *vacopts,
fflush(stdout);
}
- conn = connectDatabase(dbname, host, port, username, *password,
- prompt_password, progname, false);
-
- /*
- * If no password was not specified by caller and the connection required
- * one, remember it; this suppresses further password prompts.
- */
- if (PQconnectionUsedPassword(conn) && *password == NULL)
- *password = pg_strdup(PQpass(conn));
+ conn = connectDatabase(dbname, host, port, username, prompt_password,
+ progname, false, true);
initPQExpBuffer(&sql);
@@ -444,20 +424,10 @@ vacuum_one_database(const char *dbname, vacuumingOptions *vacopts,
init_slot(slots, conn);
if (parallel)
{
- const char *pqpass;
-
- /*
- * If a password was supplied for the initial connection, use it for
- * subsequent ones too. (Note that since we're connecting to the same
- * database with the same user, there's no need to update the stored
- * password any further.)
- */
- pqpass = PQpass(conn);
-
for (i = 1; i < concurrentCons; i++)
{
- conn = connectDatabase(dbname, host, port, username, pqpass,
- prompt_password, progname, false);
+ conn = connectDatabase(dbname, host, port, username, prompt_password,
+ progname, false, true);
init_slot(slots + i, conn);
}
}
@@ -572,23 +542,12 @@ vacuum_all_databases(vacuumingOptions *vacopts,
PGresult *result;
int stage;
int i;
- char *password = NULL;
conn = connectMaintenanceDatabase(maintenance_db, host, port,
username, prompt_password, progname);
-
result = executeQuery(conn,
"SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;",
progname, echo);
-
- /*
- * Remember the password for further connections. If no password was
- * required for the maintenance db connection, this gets updated for the
- * first connection that does.
- */
- if (PQconnectionUsedPassword(conn))
- password = pg_strdup(PQpass(conn));
-
PQfinish(conn);
if (analyze_in_stages)
@@ -613,8 +572,7 @@ vacuum_all_databases(vacuumingOptions *vacopts,
NULL,
host, port, username, prompt_password,
concurrentCons,
- progname, echo, quiet,
- &password);
+ progname, echo, quiet);
}
}
}
@@ -630,13 +588,11 @@ vacuum_all_databases(vacuumingOptions *vacopts,
NULL,
host, port, username, prompt_password,
concurrentCons,
- progname, echo, quiet,
- &password);
+ progname, echo, quiet);
}
}
PQclear(result);
- pg_free(password);
}
/*