From 69911834a8046c226ce6c54a6afd2b51830084d0 Mon Sep 17 00:00:00 2001 From: Nathan Bossart Date: Wed, 3 Dec 2025 16:12:37 -0600 Subject: [PATCH v5 1/3] Move some vacuumdb options to vacopts struct. --- src/bin/scripts/vacuumdb.c | 8 +++--- src/bin/scripts/vacuuming.c | 50 ++++++++++++++++++------------------- src/bin/scripts/vacuuming.h | 4 ++- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c index e117dac2242..f72ad9dd0ba 100644 --- a/src/bin/scripts/vacuumdb.c +++ b/src/bin/scripts/vacuumdb.c @@ -68,8 +68,6 @@ main(int argc, char *argv[]) const char *dbname = NULL; const char *maintenance_db = NULL; ConnParams cparams; - bool echo = false; - bool quiet = false; vacuumingOptions vacopts; SimpleStringList objects = {NULL, NULL}; int concurrentCons = 1; @@ -110,7 +108,7 @@ main(int argc, char *argv[]) dbname = pg_strdup(optarg); break; case 'e': - echo = true; + vacopts.echo = true; break; case 'f': vacopts.full = true; @@ -143,7 +141,7 @@ main(int argc, char *argv[]) exit(1); break; case 'q': - quiet = true; + vacopts.quiet = true; break; case 't': vacopts.objfilter |= OBJFILTER_TABLE; @@ -312,7 +310,7 @@ main(int argc, char *argv[]) ret = vacuuming_main(&cparams, dbname, maintenance_db, &vacopts, &objects, tbl_count, concurrentCons, - progname, echo, quiet); + progname); exit(ret); } diff --git a/src/bin/scripts/vacuuming.c b/src/bin/scripts/vacuuming.c index f836f21fb03..1af242b60d7 100644 --- a/src/bin/scripts/vacuuming.c +++ b/src/bin/scripts/vacuuming.c @@ -30,16 +30,15 @@ static int vacuum_one_database(ConnParams *cparams, SimpleStringList *objects, SimpleStringList **found_objs, int concurrentCons, - const char *progname, bool echo, bool quiet); + const char *progname); static int vacuum_all_databases(ConnParams *cparams, vacuumingOptions *vacopts, SimpleStringList *objects, int concurrentCons, - const char *progname, bool echo, bool quiet); + const char *progname); static SimpleStringList *retrieve_objects(PGconn *conn, vacuumingOptions *vacopts, - SimpleStringList *objects, - bool echo); + SimpleStringList *objects); static void free_retrieved_objects(SimpleStringList *list); static void prepare_vacuum_command(PGconn *conn, PQExpBuffer sql, vacuumingOptions *vacopts, const char *table); @@ -56,7 +55,7 @@ vacuuming_main(ConnParams *cparams, const char *dbname, const char *maintenance_db, vacuumingOptions *vacopts, SimpleStringList *objects, unsigned int tbl_count, int concurrentCons, - const char *progname, bool echo, bool quiet) + const char *progname) { setup_cancel_handler(NULL); @@ -71,7 +70,7 @@ vacuuming_main(ConnParams *cparams, const char *dbname, return vacuum_all_databases(cparams, vacopts, objects, concurrentCons, - progname, echo, quiet); + progname); } else { @@ -100,7 +99,7 @@ vacuuming_main(ConnParams *cparams, const char *dbname, objects, vacopts->missing_stats_only ? &found_objs : NULL, concurrentCons, - progname, echo, quiet); + progname); if (ret != 0) { free_retrieved_objects(found_objs); @@ -116,7 +115,7 @@ vacuuming_main(ConnParams *cparams, const char *dbname, ANALYZE_NO_STAGE, objects, NULL, concurrentCons, - progname, echo, quiet); + progname); } } @@ -167,7 +166,7 @@ vacuum_one_database(ConnParams *cparams, SimpleStringList *objects, SimpleStringList **found_objs, int concurrentCons, - const char *progname, bool echo, bool quiet) + const char *progname) { PQExpBufferData sql; PGconn *conn; @@ -192,7 +191,7 @@ vacuum_one_database(ConnParams *cparams, Assert(stage == ANALYZE_NO_STAGE || (stage >= 0 && stage < ANALYZE_NUM_STAGES)); - conn = connectDatabase(cparams, progname, echo, false, true); + conn = connectDatabase(cparams, progname, vacopts->echo, false, true); if (vacopts->disable_page_skipping && PQserverVersion(conn) < 90600) { @@ -281,7 +280,7 @@ vacuum_one_database(ConnParams *cparams, /* skip_database_stats is used automatically if server supports it */ vacopts->skip_database_stats = (PQserverVersion(conn) >= 160000); - if (!quiet) + if (!vacopts->quiet) { if (vacopts->mode == MODE_ANALYZE_IN_STAGES) printf(_("%s: processing database \"%s\": %s\n"), @@ -302,7 +301,7 @@ vacuum_one_database(ConnParams *cparams, retobjs = *found_objs; else { - retobjs = retrieve_objects(conn, vacopts, objects, echo); + retobjs = retrieve_objects(conn, vacopts, objects); if (found_objs) *found_objs = retobjs; else @@ -341,7 +340,7 @@ vacuum_one_database(ConnParams *cparams, if (vacopts->mode == MODE_ANALYZE_IN_STAGES) { initcmd = stage_commands[stage]; - executeCommand(conn, initcmd, echo); + executeCommand(conn, initcmd, vacopts->echo); } else initcmd = NULL; @@ -351,7 +350,8 @@ vacuum_one_database(ConnParams *cparams, * for the first slot. If not in parallel mode, the first slot in the * array contains the connection. */ - sa = ParallelSlotsSetup(concurrentCons, cparams, progname, echo, initcmd); + sa = ParallelSlotsSetup(concurrentCons, cparams, progname, + vacopts->echo, initcmd); ParallelSlotsAdoptConn(sa, conn); initPQExpBuffer(&sql); @@ -384,7 +384,7 @@ vacuum_one_database(ConnParams *cparams, */ ParallelSlotSetHandler(free_slot, TableCommandResultHandler, NULL); run_vacuum_command(free_slot->connection, sql.data, - echo, tabname); + vacopts->echo, tabname); cell = cell->next; } while (cell != NULL); @@ -408,7 +408,7 @@ vacuum_one_database(ConnParams *cparams, } ParallelSlotSetHandler(free_slot, TableCommandResultHandler, NULL); - run_vacuum_command(free_slot->connection, cmd, echo, NULL); + run_vacuum_command(free_slot->connection, cmd, vacopts->echo, NULL); if (!ParallelSlotsWaitCompletion(sa)) ret = EXIT_FAILURE; /* error already reported by handler */ @@ -436,17 +436,17 @@ vacuum_all_databases(ConnParams *cparams, vacuumingOptions *vacopts, SimpleStringList *objects, int concurrentCons, - const char *progname, bool echo, bool quiet) + const char *progname) { int ret = EXIT_SUCCESS; PGconn *conn; PGresult *result; int numdbs; - conn = connectMaintenanceDatabase(cparams, progname, echo); + conn = connectMaintenanceDatabase(cparams, progname, vacopts->echo); result = executeQuery(conn, "SELECT datname FROM pg_database WHERE datallowconn AND datconnlimit <> -2 ORDER BY 1;", - echo); + vacopts->echo); numdbs = PQntuples(result); PQfinish(conn); @@ -474,7 +474,7 @@ vacuum_all_databases(ConnParams *cparams, objects, vacopts->missing_stats_only ? &found_objs[i] : NULL, concurrentCons, - progname, echo, quiet); + progname); if (ret != EXIT_SUCCESS) break; } @@ -499,7 +499,7 @@ vacuum_all_databases(ConnParams *cparams, objects, NULL, concurrentCons, - progname, echo, quiet); + progname); if (ret != EXIT_SUCCESS) break; } @@ -524,7 +524,7 @@ vacuum_all_databases(ConnParams *cparams, */ static SimpleStringList * retrieve_objects(PGconn *conn, vacuumingOptions *vacopts, - SimpleStringList *objects, bool echo) + SimpleStringList *objects) { PQExpBufferData buf; PQExpBufferData catalog_query; @@ -776,10 +776,10 @@ retrieve_objects(PGconn *conn, vacuumingOptions *vacopts, * query for consistency with table lookups done elsewhere by the user. */ appendPQExpBufferStr(&catalog_query, " ORDER BY c.relpages DESC;"); - executeCommand(conn, "RESET search_path;", echo); - res = executeQuery(conn, catalog_query.data, echo); + executeCommand(conn, "RESET search_path;", vacopts->echo); + res = executeQuery(conn, catalog_query.data, vacopts->echo); termPQExpBuffer(&catalog_query); - PQclear(executeQuery(conn, ALWAYS_SECURE_SEARCH_PATH_SQL, echo)); + PQclear(executeQuery(conn, ALWAYS_SECURE_SEARCH_PATH_SQL, vacopts->echo)); /* * Build qualified identifiers for each table, including the column list diff --git a/src/bin/scripts/vacuuming.h b/src/bin/scripts/vacuuming.h index 49f968b32e5..90db4fa1a64 100644 --- a/src/bin/scripts/vacuuming.h +++ b/src/bin/scripts/vacuuming.h @@ -51,6 +51,8 @@ typedef struct vacuumingOptions bool skip_database_stats; char *buffer_usage_limit; bool missing_stats_only; + bool echo; + bool quiet; } vacuumingOptions; /* Valid values for vacuumingOptions->objfilter */ @@ -65,7 +67,7 @@ extern int vacuuming_main(ConnParams *cparams, const char *dbname, SimpleStringList *objects, unsigned int tbl_count, int concurrentCons, - const char *progname, bool echo, bool quiet); + const char *progname); extern char *escape_quotes(const char *src); -- 2.39.5 (Apple Git-154)