diff options
Diffstat (limited to 'src/bin/scripts/reindexdb.c')
-rw-r--r-- | src/bin/scripts/reindexdb.c | 85 |
1 files changed, 41 insertions, 44 deletions
diff --git a/src/bin/scripts/reindexdb.c b/src/bin/scripts/reindexdb.c index f62b7ca81ce..fd41bd4472c 100644 --- a/src/bin/scripts/reindexdb.c +++ b/src/bin/scripts/reindexdb.c @@ -15,19 +15,14 @@ #include "fe_utils/string_utils.h" -static void reindex_one_database(const char *name, const char *dbname, - const char *type, const char *host, - const char *port, const char *username, - enum trivalue prompt_password, const char *progname, +static void reindex_one_database(const ConnParams *cparams, + const char *type, const char *name, + const char *progname, bool echo, bool verbose); -static void reindex_all_databases(const char *maintenance_db, - const char *host, const char *port, - const char *username, enum trivalue prompt_password, +static void reindex_all_databases(ConnParams *cparams, const char *progname, bool echo, bool quiet, bool verbose); -static void reindex_system_catalogs(const char *dbname, - const char *host, const char *port, - const char *username, enum trivalue prompt_password, +static void reindex_system_catalogs(const ConnParams *cparams, const char *progname, bool echo, bool verbose); static void help(const char *progname); @@ -63,6 +58,7 @@ main(int argc, char *argv[]) const char *port = NULL; const char *username = NULL; enum trivalue prompt_password = TRI_DEFAULT; + ConnParams cparams; bool syscatalog = false; bool alldb = false; bool echo = false; @@ -151,6 +147,13 @@ main(int argc, char *argv[]) exit(1); } + /* fill cparams except for dbname, which is set below */ + cparams.pghost = host; + cparams.pgport = port; + cparams.pguser = username; + cparams.prompt_password = prompt_password; + cparams.override_dbname = NULL; + setup_cancel_handler(); if (alldb) @@ -181,8 +184,10 @@ main(int argc, char *argv[]) exit(1); } - reindex_all_databases(maintenance_db, host, port, username, - prompt_password, progname, echo, quiet, verbose); + cparams.dbname = maintenance_db; + + reindex_all_databases(&cparams, + progname, echo, quiet, verbose); } else if (syscatalog) { @@ -212,7 +217,9 @@ main(int argc, char *argv[]) dbname = get_user_name_or_exit(progname); } - reindex_system_catalogs(dbname, host, port, username, prompt_password, + cparams.dbname = dbname; + + reindex_system_catalogs(&cparams, progname, echo, verbose); } else @@ -227,14 +234,16 @@ main(int argc, char *argv[]) dbname = get_user_name_or_exit(progname); } + cparams.dbname = dbname; + if (schemas.head != NULL) { SimpleStringListCell *cell; for (cell = schemas.head; cell; cell = cell->next) { - reindex_one_database(cell->val, dbname, "SCHEMA", host, port, - username, prompt_password, progname, echo, verbose); + reindex_one_database(&cparams, "SCHEMA", cell->val, + progname, echo, verbose); } } @@ -244,8 +253,8 @@ main(int argc, char *argv[]) for (cell = indexes.head; cell; cell = cell->next) { - reindex_one_database(cell->val, dbname, "INDEX", host, port, - username, prompt_password, progname, echo, verbose); + reindex_one_database(&cparams, "INDEX", cell->val, + progname, echo, verbose); } } if (tables.head != NULL) @@ -254,8 +263,8 @@ main(int argc, char *argv[]) for (cell = tables.head; cell; cell = cell->next) { - reindex_one_database(cell->val, dbname, "TABLE", host, port, - username, prompt_password, progname, echo, verbose); + reindex_one_database(&cparams, "TABLE", cell->val, + progname, echo, verbose); } } @@ -264,25 +273,24 @@ main(int argc, char *argv[]) * specified */ if (indexes.head == NULL && tables.head == NULL && schemas.head == NULL) - reindex_one_database(NULL, dbname, "DATABASE", host, port, - username, prompt_password, progname, echo, verbose); + reindex_one_database(&cparams, "DATABASE", NULL, + progname, echo, verbose); } exit(0); } static void -reindex_one_database(const char *name, const char *dbname, const char *type, - const char *host, const char *port, const char *username, - enum trivalue prompt_password, const char *progname, bool echo, - bool verbose) +reindex_one_database(const ConnParams *cparams, + const char *type, const char *name, + const char *progname, + bool echo, bool verbose) { PQExpBufferData sql; PGconn *conn; - conn = connectDatabase(dbname, host, port, username, prompt_password, - progname, echo, false, false); + conn = connectDatabase(cparams, progname, echo, false, false); initPQExpBuffer(&sql); @@ -325,22 +333,17 @@ reindex_one_database(const char *name, const char *dbname, const char *type, } static void -reindex_all_databases(const char *maintenance_db, - const char *host, const char *port, - const char *username, enum trivalue prompt_password, +reindex_all_databases(ConnParams *cparams, const char *progname, bool echo, bool quiet, bool verbose) { PGconn *conn; PGresult *result; - PQExpBufferData connstr; int i; - conn = connectMaintenanceDatabase(maintenance_db, host, port, username, - prompt_password, progname, echo); + conn = connectMaintenanceDatabase(cparams, progname, echo); result = executeQuery(conn, "SELECT datname FROM pg_database WHERE datallowconn ORDER BY 1;", progname, echo); PQfinish(conn); - initPQExpBuffer(&connstr); for (i = 0; i < PQntuples(result); i++) { char *dbname = PQgetvalue(result, i, 0); @@ -351,29 +354,23 @@ reindex_all_databases(const char *maintenance_db, fflush(stdout); } - resetPQExpBuffer(&connstr); - appendPQExpBuffer(&connstr, "dbname="); - appendConnStrVal(&connstr, dbname); + cparams->override_dbname = dbname; - reindex_one_database(NULL, connstr.data, "DATABASE", host, - port, username, prompt_password, + reindex_one_database(cparams, "DATABASE", NULL, progname, echo, verbose); } - termPQExpBuffer(&connstr); PQclear(result); } static void -reindex_system_catalogs(const char *dbname, const char *host, const char *port, - const char *username, enum trivalue prompt_password, +reindex_system_catalogs(const ConnParams *cparams, const char *progname, bool echo, bool verbose) { PGconn *conn; PQExpBufferData sql; - conn = connectDatabase(dbname, host, port, username, prompt_password, - progname, echo, false, false); + conn = connectDatabase(cparams, progname, echo, false, false); initPQExpBuffer(&sql); |