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);
-static void run_vacuum_command(PGconn *conn, const char *sql, bool echo,
- const char *table);
+static void run_vacuum_command(PGconn *conn, vacuumingOptions *vacopts,
+ const char *sql, const char *table);
/*
* Executes vacuum/analyze as indicated. Returns 0 if the plan is carried
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);
return vacuum_all_databases(cparams, vacopts,
objects,
concurrentCons,
- progname, echo, quiet);
+ progname);
}
else
{
objects,
vacopts->missing_stats_only ? &found_objs : NULL,
concurrentCons,
- progname, echo, quiet);
+ progname);
if (ret != 0)
{
free_retrieved_objects(found_objs);
ANALYZE_NO_STAGE,
objects, NULL,
concurrentCons,
- progname, echo, quiet);
+ progname);
}
}
SimpleStringList *objects,
SimpleStringList **found_objs,
int concurrentCons,
- const char *progname, bool echo, bool quiet)
+ const char *progname)
{
PQExpBufferData sql;
PGconn *conn;
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)
{
/* 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"),
retobjs = *found_objs;
else
{
- retobjs = retrieve_objects(conn, vacopts, objects, echo);
+ retobjs = retrieve_objects(conn, vacopts, objects);
if (found_objs)
*found_objs = retobjs;
else
if (vacopts->mode == MODE_ANALYZE_IN_STAGES)
{
initcmd = stage_commands[stage];
- executeCommand(conn, initcmd, echo);
+ executeCommand(conn, initcmd, vacopts->echo);
}
else
initcmd = NULL;
* 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);
* through ParallelSlotsGetIdle.
*/
ParallelSlotSetHandler(free_slot, TableCommandResultHandler, NULL);
- run_vacuum_command(free_slot->connection, sql.data,
- echo, tabname);
+ run_vacuum_command(free_slot->connection, vacopts, sql.data, tabname);
cell = cell->next;
} while (cell != NULL);
}
ParallelSlotSetHandler(free_slot, TableCommandResultHandler, NULL);
- run_vacuum_command(free_slot->connection, cmd, echo, NULL);
+ run_vacuum_command(free_slot->connection, vacopts, cmd, NULL);
if (!ParallelSlotsWaitCompletion(sa))
ret = EXIT_FAILURE; /* error already reported by handler */
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);
objects,
vacopts->missing_stats_only ? &found_objs[i] : NULL,
concurrentCons,
- progname, echo, quiet);
+ progname);
if (ret != EXIT_SUCCESS)
break;
}
objects,
NULL,
concurrentCons,
- progname, echo, quiet);
+ progname);
if (ret != EXIT_SUCCESS)
break;
}
*/
static SimpleStringList *
retrieve_objects(PGconn *conn, vacuumingOptions *vacopts,
- SimpleStringList *objects, bool echo)
+ SimpleStringList *objects)
{
PQExpBufferData buf;
PQExpBufferData catalog_query;
* 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
* Any errors during command execution are reported to stderr.
*/
static void
-run_vacuum_command(PGconn *conn, const char *sql, bool echo,
- const char *table)
+run_vacuum_command(PGconn *conn, vacuumingOptions *vacopts,
+ const char *sql, const char *table)
{
bool status;
- if (echo)
+ if (vacopts->echo)
printf("%s\n", sql);
status = PQsendQuery(conn, sql) == 1;