@@ -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
}
0 commit comments