summaryrefslogtreecommitdiff
path: root/src/backend/commands
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-06-06 17:44:17 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2016-06-06 17:44:17 -0400
commit5acc58c5e5336d16a1e238e8f1d599e8bfa4183b (patch)
tree4bd2a422d57d670411779dd9acb51683150b991a /src/backend/commands
parenta7aa61ffe7ed12cf8d5cbdfc887900549f9ed354 (diff)
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: <ef99c1bd-ff60-5f32-2733-c7b504eb960c@ato.waw.pl>
Diffstat (limited to 'src/backend/commands')
-rw-r--r--src/backend/commands/analyze.c7
1 files changed, 5 insertions, 2 deletions
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))