@@ -18,7 +18,8 @@ static void cluster_one_database(const char *dbname, bool verbose, const char *t
18
18
const char * host ,const char * port ,
19
19
const char * username ,enum trivalue prompt_password ,
20
20
const 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 ,
22
23
const char * username ,enum trivalue prompt_password ,
23
24
const char * progname ,bool echo ,bool quiet );
24
25
@@ -40,6 +41,7 @@ main(int argc, char *argv[])
40
41
{"all" ,no_argument ,NULL ,'a' },
41
42
{"table" ,required_argument ,NULL ,'t' },
42
43
{"verbose" ,no_argument ,NULL ,'v' },
44
+ {"maintenance-db" ,required_argument ,NULL ,2 },
43
45
{NULL ,0 ,NULL ,0 }
44
46
};
45
47
@@ -48,6 +50,7 @@ main(int argc, char *argv[])
48
50
int c ;
49
51
50
52
const char * dbname = NULL ;
53
+ const char * maintenance_db = NULL ;
51
54
char * host = NULL ;
52
55
char * port = NULL ;
53
56
char * username = NULL ;
@@ -100,6 +103,9 @@ main(int argc, char *argv[])
100
103
case 'v' :
101
104
verbose = true;
102
105
break ;
106
+ case 2 :
107
+ maintenance_db = optarg ;
108
+ break ;
103
109
default :
104
110
fprintf (stderr ,_ ("Try \"%s --help\" for more information.\n" ),progname );
105
111
exit (1 );
@@ -137,7 +143,7 @@ main(int argc, char *argv[])
137
143
exit (1 );
138
144
}
139
145
140
- cluster_all_databases (verbose ,host ,port ,username ,prompt_password ,
146
+ cluster_all_databases (verbose ,maintenance_db , host ,port ,username ,prompt_password ,
141
147
progname ,echo ,quiet );
142
148
}
143
149
else
@@ -180,7 +186,8 @@ cluster_one_database(const char *dbname, bool verbose, const char *table,
180
186
appendPQExpBuffer (& sql ," %s" ,table );
181
187
appendPQExpBuffer (& sql ,";\n" );
182
188
183
- conn = connectDatabase (dbname ,host ,port ,username ,prompt_password ,progname );
189
+ conn = connectDatabase (dbname ,host ,port ,username ,prompt_password ,
190
+ progname , false);
184
191
if (!executeMaintenanceCommand (conn ,sql .data ,echo ))
185
192
{
186
193
if (table )
@@ -198,15 +205,17 @@ cluster_one_database(const char *dbname, bool verbose, const char *table,
198
205
199
206
200
207
static 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 ,
202
210
const char * username ,enum trivalue prompt_password ,
203
211
const char * progname ,bool echo ,bool quiet )
204
212
{
205
213
PGconn * conn ;
206
214
PGresult * result ;
207
215
int i ;
208
216
209
- conn = connectDatabase ("postgres" ,host ,port ,username ,prompt_password ,progname );
217
+ conn = connectMaintenanceDatabase (maintenance_db ,host ,port ,username ,
218
+ prompt_password ,progname );
210
219
result = executeQuery (conn ,"SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;" ,progname ,echo );
211
220
PQfinish (conn );
212
221
@@ -250,6 +259,7 @@ help(const char *progname)
250
259
printf (_ (" -U, --username=USERNAME user name to connect as\n" ));
251
260
printf (_ (" -w, --no-password never prompt for password\n" ));
252
261
printf (_ (" -W, --password force password prompt\n" ));
262
+ printf (_ (" --maintenance-db=DBNAME alternate maintenance database\n" ));
253
263
printf (_ ("\nRead the description of the SQL command CLUSTER for details.\n" ));
254
264
printf (_ ("\nReport bugs to <pgsql-bugs@postgresql.org>.\n" ));
255
265
}