From 5acc58c5e5336d16a1e238e8f1d599e8bfa4183b Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 6 Jun 2016 17:44:17 -0400 Subject: Don't reset changes_since_analyze after a selective-columns ANALYZE. If we ANALYZE only selected columns of a table, we should not postpone auto-analyze because of that; other columns may well still need stats updates. As committed, the counter is left alone if a column list is given, whether or not it includes all analyzable columns of the table. Per complaint from Tomasz Ostrowski. It's been like this a long time, so back-patch to all supported branches. Report: --- src/backend/commands/analyze.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/backend/commands/analyze.c') diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index ddb68abf6b4..04b08b6377d 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -605,10 +605,13 @@ do_analyze_rel(Relation onerel, int options, VacuumParams *params, /* * Report ANALYZE to the stats collector, too. However, if doing * inherited stats we shouldn't report, because the stats collector only - * tracks per-table stats. + * tracks per-table stats. Reset the changes_since_analyze counter only + * if we analyzed all columns; otherwise, there is still work for + * auto-analyze to do. */ if (!inh) - pgstat_report_analyze(onerel, totalrows, totaldeadrows); + pgstat_report_analyze(onerel, totalrows, totaldeadrows, + (va_cols == NIL)); /* If this isn't part of VACUUM ANALYZE, let index AMs do cleanup */ if (!(options & VACOPT_VACUUM)) -- cgit v1.2.3