@ -491,7 +491,6 @@ vacuum_one_database(ConnParams *cparams,
int ntups ;
bool failed = false ;
bool objects_listed = false ;
bool has_where = false ;
const char * initcmd ;
const char * stage_commands [ ] = {
" SET default_statistics_target=1; SET vacuum_cost_delay=0; " ,
@ -665,7 +664,10 @@ vacuum_one_database(ConnParams *cparams,
" LEFT JOIN pg_catalog.pg_class t "
" ON c.reltoastrelid OPERATOR(pg_catalog.=) t.oid \n " ) ;
/* Used to match the tables or schemas listed by the user */
/*
* Used to match the tables or schemas listed by the user , completing the
* JOIN clause .
*/
if ( objects_listed )
{
appendPQExpBufferStr ( & catalog_query , " LEFT JOIN listed_objects "
@ -676,14 +678,26 @@ vacuum_one_database(ConnParams *cparams,
appendPQExpBufferStr ( & catalog_query , " c.oid \n " ) ;
else
appendPQExpBufferStr ( & catalog_query , " ns.oid \n " ) ;
}
/*
* Exclude temporary tables , beginning the WHERE clause .
*/
appendPQExpBufferStr ( & catalog_query ,
" WHERE c.relpersistence != " CppAsString2 ( RELPERSISTENCE_TEMP ) ) ;
/*
* Used to match the tables or schemas listed by the user , for the WHERE
* clause .
*/
if ( objects_listed )
{
if ( objfilter & OBJFILTER_SCHEMA_EXCLUDE )
appendPQExpBuffer ( & catalog_query ,
" WHERE listed_objects.object_oid IS NULL \n " ) ;
" AND listed_objects.object_oid IS NULL \n " ) ;
else
appendPQExpBuffer ( & catalog_query ,
" WHERE listed_objects.object_oid IS NOT NULL \n " ) ;
has_where = true ;
" AND listed_objects.object_oid IS NOT NULL \n " ) ;
}
/*
@ -695,11 +709,9 @@ vacuum_one_database(ConnParams *cparams,
if ( ( objfilter & OBJFILTER_TABLE ) = = 0 )
{
appendPQExpBuffer ( & catalog_query ,
" %s c.relkind OPERATOR(pg_catalog.=) ANY (array[ "
" AND c.relkind OPERATOR(pg_catalog.=) ANY (array[ "
CppAsString2 ( RELKIND_RELATION ) " , "
CppAsString2 ( RELKIND_MATVIEW ) " ]) \n " ,
has_where ? " AND " : " WHERE " ) ;
has_where = true ;
CppAsString2 ( RELKIND_MATVIEW ) " ]) \n " ) ;
}
/*
@ -712,25 +724,23 @@ vacuum_one_database(ConnParams *cparams,
if ( vacopts - > min_xid_age ! = 0 )
{
appendPQExpBuffer ( & catalog_query ,
" %s GREATEST(pg_catalog.age(c.relfrozenxid), "
" AND GREATEST(pg_catalog.age(c.relfrozenxid), "
" pg_catalog.age(t.relfrozenxid)) "
" OPERATOR(pg_catalog.>=) '%d'::pg_catalog.int4 \n "
" AND c.relfrozenxid OPERATOR(pg_catalog.!=) "
" '0'::pg_catalog.xid \n " ,
has_where ? " AND " : " WHERE " , vacopts - > min_xid_age ) ;
has_where = true ;
vacopts - > min_xid_age ) ;
}
if ( vacopts - > min_mxid_age ! = 0 )
{
appendPQExpBuffer ( & catalog_query ,
" %s GREATEST(pg_catalog.mxid_age(c.relminmxid), "
" AND GREATEST(pg_catalog.mxid_age(c.relminmxid), "
" pg_catalog.mxid_age(t.relminmxid)) OPERATOR(pg_catalog.>=) "
" '%d'::pg_catalog.int4 \n "
" AND c.relminmxid OPERATOR(pg_catalog.!=) "
" '0'::pg_catalog.xid \n " ,
has_where ? " AND " : " WHERE " , vacopts - > min_mxid_age ) ;
has_where = true ;
vacopts - > min_mxid_age ) ;
}
/*