aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-06-19 14:00:48 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2011-06-19 14:00:48 -0400
commit63513b207df618b52cf0bdf42c1ec3f6e9378f40 (patch)
tree49cea1621f9e1f79f73bede33cc3e01eb69fbeb0 /src
parent8a8fbe7e799cfc0d8dc5ffef5640df6dac8acd6c (diff)
downloadpostgresql-63513b207df618b52cf0bdf42c1ec3f6e9378f40.tar.gz
postgresql-63513b207df618b52cf0bdf42c1ec3f6e9378f40.zip
Fix thinko in previous patch to always update pg_class.reltuples/relpages.
I mis-simplified the test where ANALYZE decided if it could get away without doing anything: under the new regime, that's never allowed. Per bug #6068 from Jeff Janes. Back-patch to 8.4, just like previous patch.
Diffstat (limited to 'src')
-rw-r--r--src/backend/commands/analyze.c17
1 files changed, 2 insertions, 15 deletions
diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c
index 7b73355dde3..a68da590ce8 100644
--- a/src/backend/commands/analyze.c
+++ b/src/backend/commands/analyze.c
@@ -266,7 +266,6 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, bool inh)
Relation *Irel;
int nindexes;
bool hasindex;
- bool analyzableindex;
VacAttrStats **vacattrstats;
AnlIndexData *indexdata;
int targrows,
@@ -380,7 +379,6 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, bool inh)
}
hasindex = (nindexes > 0);
indexdata = NULL;
- analyzableindex = false;
if (hasindex)
{
indexdata = (AnlIndexData *) palloc0(nindexes * sizeof(AnlIndexData));
@@ -414,10 +412,7 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, bool inh)
thisdata->vacattrstats[tcnt] =
examine_attribute(Irel[ind], i + 1, indexkey);
if (thisdata->vacattrstats[tcnt] != NULL)
- {
tcnt++;
- analyzableindex = true;
- }
}
}
thisdata->attr_cnt = tcnt;
@@ -426,15 +421,10 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, bool inh)
}
/*
- * Quit if no analyzable columns.
- */
- if (attr_cnt <= 0 && !analyzableindex)
- goto cleanup;
-
- /*
* Determine how many rows we need to sample, using the worst case from
* all analyzable columns. We use a lower bound of 100 rows to avoid
- * possible overflow in Vitter's algorithm.
+ * possible overflow in Vitter's algorithm. (Note: that will also be
+ * the target in the corner case where there are no analyzable columns.)
*/
targrows = 100;
for (i = 0; i < attr_cnt; i++)
@@ -573,9 +563,6 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, bool inh)
if (!inh)
pgstat_report_analyze(onerel, totalrows, totaldeadrows);
- /* We skip to here if there were no analyzable columns */
-cleanup:
-
/* If this isn't part of VACUUM ANALYZE, let index AMs do cleanup */
if (!(vacstmt->options & VACOPT_VACUUM))
{