aboutsummaryrefslogtreecommitdiff
path: root/src/bin/scripts/clusterdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/scripts/clusterdb.c')
-rw-r--r--src/bin/scripts/clusterdb.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/bin/scripts/clusterdb.c b/src/bin/scripts/clusterdb.c
index 3742091e2a4..fc88692b4e3 100644
--- a/src/bin/scripts/clusterdb.c
+++ b/src/bin/scripts/clusterdb.c
@@ -18,7 +18,8 @@ static void cluster_one_database(const char *dbname, bool verbose, const char *t
const char *host, const char *port,
const char *username, enum trivalue prompt_password,
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 *maintenance_db,
+ const char *host, const char *port,
const char *username, enum trivalue prompt_password,
const char *progname, bool echo, bool quiet);
@@ -40,6 +41,7 @@ main(int argc, char *argv[])
{"all", no_argument, NULL, 'a'},
{"table", required_argument, NULL, 't'},
{"verbose", no_argument, NULL, 'v'},
+ {"maintenance-db", required_argument, NULL, 2},
{NULL, 0, NULL, 0}
};
@@ -48,6 +50,7 @@ main(int argc, char *argv[])
int c;
const char *dbname = NULL;
+ const char *maintenance_db = NULL;
char *host = NULL;
char *port = NULL;
char *username = NULL;
@@ -100,6 +103,9 @@ main(int argc, char *argv[])
case 'v':
verbose = true;
break;
+ case 2:
+ maintenance_db = optarg;
+ break;
default:
fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
exit(1);
@@ -137,7 +143,7 @@ main(int argc, char *argv[])
exit(1);
}
- cluster_all_databases(verbose, host, port, username, prompt_password,
+ cluster_all_databases(verbose, maintenance_db, host, port, username, prompt_password,
progname, echo, quiet);
}
else
@@ -180,7 +186,8 @@ cluster_one_database(const char *dbname, bool verbose, const char *table,
appendPQExpBuffer(&sql, " %s", table);
appendPQExpBuffer(&sql, ";\n");
- conn = connectDatabase(dbname, host, port, username, prompt_password, progname);
+ conn = connectDatabase(dbname, host, port, username, prompt_password,
+ progname, false);
if (!executeMaintenanceCommand(conn, sql.data, echo))
{
if (table)
@@ -198,7 +205,8 @@ cluster_one_database(const char *dbname, bool verbose, const char *table,
static void
-cluster_all_databases(bool verbose, const char *host, const char *port,
+cluster_all_databases(bool verbose, const char *maintenance_db,
+ const char *host, const char *port,
const char *username, enum trivalue prompt_password,
const char *progname, bool echo, bool quiet)
{
@@ -206,7 +214,8 @@ cluster_all_databases(bool verbose, const char *host, const char *port,
PGresult *result;
int i;
- conn = connectDatabase("postgres", host, port, username, prompt_password, progname);
+ 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);
PQfinish(conn);
@@ -250,6 +259,7 @@ help(const char *progname)
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(_(" --maintenance-db=DBNAME alternate maintenance database\n"));
printf(_("\nRead the description of the SQL command CLUSTER for details.\n"));
printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));
}