@ -30,21 +30,20 @@ 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 ) ;
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
@ -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 ) ;
@ -383,8 +383,7 @@ vacuum_one_database(ConnParams *cparams,
* 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 ) ;
@ -408,7 +407,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 , vacopts , cmd , NULL ) ;
if ( ! ParallelSlotsWaitCompletion ( sa ) )
ret = EXIT_FAILURE ; /* error already reported by handler */
@ -436,17 +435,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 +473,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 +498,7 @@ vacuum_all_databases(ConnParams *cparams,
objects ,
NULL ,
concurrentCons ,
progname , echo , quiet ) ;
progname ) ;
if ( ret ! = EXIT_SUCCESS )
break ;
}
@ -524,7 +523,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 +775,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
@ -1001,12 +1000,12 @@ prepare_vacuum_command(PGconn *conn, PQExpBuffer sql,
* 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 ;