41 #define VACUUM_OPTION_NO_PARALLEL 0
47 #define VACUUM_OPTION_PARALLEL_BULKDEL (1 << 0)
54 #define VACUUM_OPTION_PARALLEL_COND_CLEANUP (1 << 1)
62 #define VACUUM_OPTION_PARALLEL_CLEANUP (1 << 2)
65 #define VACUUM_OPTION_MAX_VALID_VALUE ((1 << 3) - 1)
183 #define VACOPT_VACUUM 0x01
184 #define VACOPT_ANALYZE 0x02
185 #define VACOPT_VERBOSE 0x04
186 #define VACOPT_FREEZE 0x08
187 #define VACOPT_FULL 0x10
188 #define VACOPT_SKIP_LOCKED 0x20
189 #define VACOPT_PROCESS_TOAST 0x40
190 #define VACOPT_DISABLE_PAGE_SKIPPING 0x80
250 #define MAXDEADITEMS(avail_mem) \
251 (((avail_mem) - offsetof(VacDeadItems, items)) / sizeof(ItemPointerData))
278 double scanned_tuples);
286 bool *frozenxid_updated,
287 bool *minmulti_updated,
290 int freeze_min_age,
int freeze_table_age,
291 int multixact_freeze_min_age,
292 int multixact_freeze_table_age,
315 int nindexes,
int nrequested_workers,
316 int max_items,
int elevel,
321 long num_table_tuples,
322 int num_index_scans);
324 long num_table_tuples,
326 bool estimated_count);
TransactionId MultiXactId
#define FLEXIBLE_ARRAY_MEMBER
FormData_pg_attribute * Form_pg_attribute
FormData_pg_class * Form_pg_class
#define STATISTIC_NUM_SLOTS
FormData_pg_type * Form_pg_type
int16 stakind[STATISTIC_NUM_SLOTS]
MemoryContext anl_context
Oid statypid[STATISTIC_NUM_SLOTS]
Oid staop[STATISTIC_NUM_SLOTS]
Oid stacoll[STATISTIC_NUM_SLOTS]
char statypalign[STATISTIC_NUM_SLOTS]
float4 * stanumbers[STATISTIC_NUM_SLOTS]
bool statypbyval[STATISTIC_NUM_SLOTS]
int16 statyplen[STATISTIC_NUM_SLOTS]
int numvalues[STATISTIC_NUM_SLOTS]
Datum * stavalues[STATISTIC_NUM_SLOTS]
int numnumbers[STATISTIC_NUM_SLOTS]
AnalyzeAttrComputeStatsFunc compute_stats
ItemPointerData items[FLEXIBLE_ARRAY_MEMBER]
int multixact_freeze_min_age
int multixact_freeze_table_age
VacOptValue index_cleanup
IndexBulkDeleteResult * vac_bulkdel_one_index(IndexVacuumInfo *ivinfo, IndexBulkDeleteResult *istat, VacDeadItems *dead_items)
void ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel)
PGDLLIMPORT int VacuumCostBalanceLocal
Size vac_max_items_to_alloc_size(int max_items)
PGDLLIMPORT int vacuum_freeze_table_age
struct VacDeadItems VacDeadItems
PGDLLIMPORT pg_atomic_uint32 * VacuumSharedCostBalance
bool std_typanalyze(VacAttrStats *stats)
void vac_open_indexes(Relation relation, LOCKMODE lockmode, int *nindexes, Relation **Irel)
PGDLLIMPORT pg_atomic_uint32 * VacuumActiveNWorkers
void vac_update_relstats(Relation relation, BlockNumber num_pages, double num_tuples, BlockNumber num_all_visible_pages, bool hasindex, TransactionId frozenxid, MultiXactId minmulti, bool *frozenxid_updated, bool *minmulti_updated, bool in_outer_xact)
void vacuum(List *relations, VacuumParams *params, BufferAccessStrategy bstrategy, bool isTopLevel)
bool vacuum_xid_failsafe_check(TransactionId relfrozenxid, MultiXactId relminmxid)
double anl_get_next_S(double t, int n, double *stateptr)
PGDLLIMPORT int vacuum_failsafe_age
VacDeadItems * parallel_vacuum_get_dead_items(ParallelVacuumState *pvs)
bool vacuum_set_xid_limits(Relation rel, int freeze_min_age, int freeze_table_age, int multixact_freeze_min_age, int multixact_freeze_table_age, TransactionId *oldestXmin, MultiXactId *oldestMxact, TransactionId *freezeLimit, MultiXactId *multiXactCutoff)
struct VacAttrStats VacAttrStats
PGDLLIMPORT int vacuum_freeze_min_age
void parallel_vacuum_bulkdel_all_indexes(ParallelVacuumState *pvs, long num_table_tuples, int num_index_scans)
Relation vacuum_open_relation(Oid relid, RangeVar *relation, bits32 options, bool verbose, LOCKMODE lmode)
void vac_close_indexes(int nindexes, Relation *Irel, LOCKMODE lockmode)
void vacuum_delay_point(void)
void parallel_vacuum_cleanup_all_indexes(ParallelVacuumState *pvs, long num_table_tuples, int num_index_scans, bool estimated_count)
Datum(* AnalyzeAttrFetchFunc)(VacAttrStatsP stats, int rownum, bool *isNull)
bool vacuum_is_relation_owner(Oid relid, Form_pg_class reltuple, bits32 options)
void vac_update_datfrozenxid(void)
@ VACOPTVALUE_UNSPECIFIED
PGDLLIMPORT int default_statistics_target
void parallel_vacuum_main(dsm_segment *seg, shm_toc *toc)
struct VacAttrStats * VacAttrStatsP
PGDLLIMPORT int vacuum_multixact_freeze_table_age
PGDLLIMPORT int vacuum_multixact_freeze_min_age
double vac_estimate_reltuples(Relation relation, BlockNumber total_pages, BlockNumber scanned_pages, double scanned_tuples)
double anl_init_selection_state(int n)
void(* AnalyzeAttrComputeStatsFunc)(VacAttrStatsP stats, AnalyzeAttrFetchFunc fetchfunc, int samplerows, double totalrows)
void analyze_rel(Oid relid, RangeVar *relation, VacuumParams *params, List *va_cols, bool in_outer_xact, BufferAccessStrategy bstrategy)
IndexBulkDeleteResult * vac_cleanup_one_index(IndexVacuumInfo *ivinfo, IndexBulkDeleteResult *istat)
struct VacuumParams VacuumParams
void parallel_vacuum_end(ParallelVacuumState *pvs, IndexBulkDeleteResult **istats)
PGDLLIMPORT int vacuum_multixact_failsafe_age
ParallelVacuumState * parallel_vacuum_init(Relation rel, Relation *indrels, int nindexes, int nrequested_workers, int max_items, int elevel, BufferAccessStrategy bstrategy)
double anl_random_fract(void)