@@ -18,7 +18,8 @@ static void cluster_one_database(const char *dbname, bool verbose, const char *t
1818const char * host ,const char * port ,
1919const char * username ,enum trivalue prompt_password ,
2020const char * progname ,bool echo );
21- static void cluster_all_databases (bool verbose ,const char * host ,const char * port ,
21+ static void cluster_all_databases (bool verbose ,const char * maintenance_db ,
22+ const char * host ,const char * port ,
2223const char * username ,enum trivalue prompt_password ,
2324const char * progname ,bool echo ,bool quiet );
2425
@@ -40,6 +41,7 @@ main(int argc, char *argv[])
4041{"all" ,no_argument ,NULL ,'a' },
4142{"table" ,required_argument ,NULL ,'t' },
4243{"verbose" ,no_argument ,NULL ,'v' },
44+ {"maintenance-db" ,required_argument ,NULL ,2 },
4345{NULL ,0 ,NULL ,0 }
4446};
4547
@@ -48,6 +50,7 @@ main(int argc, char *argv[])
4850int c ;
4951
5052const char * dbname = NULL ;
53+ const char * maintenance_db = NULL ;
5154char * host = NULL ;
5255char * port = NULL ;
5356char * username = NULL ;
@@ -100,6 +103,9 @@ main(int argc, char *argv[])
100103case 'v' :
101104verbose = true;
102105break ;
106+ case 2 :
107+ maintenance_db = optarg ;
108+ break ;
103109default :
104110fprintf (stderr ,_ ("Try \"%s --help\" for more information.\n" ),progname );
105111exit (1 );
@@ -137,7 +143,7 @@ main(int argc, char *argv[])
137143exit (1 );
138144}
139145
140- cluster_all_databases (verbose ,host ,port ,username ,prompt_password ,
146+ cluster_all_databases (verbose ,maintenance_db , host ,port ,username ,prompt_password ,
141147progname ,echo ,quiet );
142148}
143149else
@@ -180,7 +186,8 @@ cluster_one_database(const char *dbname, bool verbose, const char *table,
180186appendPQExpBuffer (& sql ," %s" ,table );
181187appendPQExpBuffer (& sql ,";\n" );
182188
183- conn = connectDatabase (dbname ,host ,port ,username ,prompt_password ,progname );
189+ conn = connectDatabase (dbname ,host ,port ,username ,prompt_password ,
190+ progname , false);
184191if (!executeMaintenanceCommand (conn ,sql .data ,echo ))
185192{
186193if (table )
@@ -198,15 +205,17 @@ cluster_one_database(const char *dbname, bool verbose, const char *table,
198205
199206
200207static void
201- cluster_all_databases (bool verbose ,const char * host ,const char * port ,
208+ cluster_all_databases (bool verbose ,const char * maintenance_db ,
209+ const char * host ,const char * port ,
202210const char * username ,enum trivalue prompt_password ,
203211const char * progname ,bool echo ,bool quiet )
204212{
205213PGconn * conn ;
206214PGresult * result ;
207215int i ;
208216
209- conn = connectDatabase ("postgres" ,host ,port ,username ,prompt_password ,progname );
217+ conn = connectMaintenanceDatabase (maintenance_db ,host ,port ,username ,
218+ prompt_password ,progname );
210219result = executeQuery (conn ,"SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;" ,progname ,echo );
211220PQfinish (conn );
212221
@@ -250,6 +259,7 @@ help(const char *progname)
250259printf (_ (" -U, --username=USERNAME user name to connect as\n" ));
251260printf (_ (" -w, --no-password never prompt for password\n" ));
252261printf (_ (" -W, --password force password prompt\n" ));
262+ printf (_ (" --maintenance-db=DBNAME alternate maintenance database\n" ));
253263printf (_ ("\nRead the description of the SQL command CLUSTER for details.\n" ));
254264printf (_ ("\nReport bugs to <pgsql-bugs@postgresql.org>.\n" ));
255265}