mirror of
https://github.com/postgres/postgres.git
synced 2025-11-26 23:43:30 +03:00
Allow multiple tables to be specified in one VACUUM or ANALYZE command.
Not much to say about this; does what it says on the tin. However, formerly, if there was a column list then the ANALYZE action was implied; now it must be specified, or you get an error. This is because it would otherwise be a bit unclear what the user meant if some tables have column lists and some don't. Nathan Bossart, reviewed by Michael Paquier and Masahiko Sawada, with some editorialization by me Discussion: https://postgr.es/m/E061A8E3-5E3D-494D-94F0-E8A9B312BBFC@amazon.com
This commit is contained in:
@@ -79,6 +79,7 @@
|
||||
#include "lib/ilist.h"
|
||||
#include "libpq/pqsignal.h"
|
||||
#include "miscadmin.h"
|
||||
#include "nodes/makefuncs.h"
|
||||
#include "pgstat.h"
|
||||
#include "postmaster/autovacuum.h"
|
||||
#include "postmaster/fork_process.h"
|
||||
@@ -3081,20 +3082,19 @@ relation_needs_vacanalyze(Oid relid,
|
||||
static void
|
||||
autovacuum_do_vac_analyze(autovac_table *tab, BufferAccessStrategy bstrategy)
|
||||
{
|
||||
RangeVar rangevar;
|
||||
|
||||
/* Set up command parameters --- use local variables instead of palloc */
|
||||
MemSet(&rangevar, 0, sizeof(rangevar));
|
||||
|
||||
rangevar.schemaname = tab->at_nspname;
|
||||
rangevar.relname = tab->at_relname;
|
||||
rangevar.location = -1;
|
||||
RangeVar *rangevar;
|
||||
VacuumRelation *rel;
|
||||
List *rel_list;
|
||||
|
||||
/* Let pgstat know what we're doing */
|
||||
autovac_report_activity(tab);
|
||||
|
||||
vacuum(tab->at_vacoptions, &rangevar, tab->at_relid, &tab->at_params, NIL,
|
||||
bstrategy, true);
|
||||
/* Set up one VacuumRelation target, identified by OID, for vacuum() */
|
||||
rangevar = makeRangeVar(tab->at_nspname, tab->at_relname, -1);
|
||||
rel = makeVacuumRelation(rangevar, tab->at_relid, NIL);
|
||||
rel_list = list_make1(rel);
|
||||
|
||||
vacuum(tab->at_vacoptions, rel_list, &tab->at_params, bstrategy, true);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user