summaryrefslogtreecommitdiff
path: root/src/backend/postmaster/pgstat.c
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2021-08-28 15:58:23 -0400
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2021-08-28 15:58:23 -0400
commite1efc5b465c844969a0ed0d07e1364f3ce424d8c (patch)
treeba19ee5817c961931573ab8b067db39dc1e41e39 /src/backend/postmaster/pgstat.c
parent359bcf775550aa577c86ea30a6d071487fcca1ed (diff)
Keep stats up to date for partitioned tables
In the long-going saga for analyze on partitioned tables, one thing I missed while reverting 0827e8af70f4 is the maintenance of analyze count and last analyze time for partitioned tables. This is a mostly trivial change that enables users assess the need for invoking manual ANALYZE on partitioned tables. This patch, posted by Justin and modified a bit by me (Álvaro), can be mostly traced back to Hosoya-san, though any problems introduced with the scissors are mine. Backpatch to 14, in line with 6f8127b73901. Co-authored-by: Yuzuko Hosoya <yuzukohosoya@gmail.com> Co-authored-by: Justin Pryzby <pryzby@telsasoft.com> Co-authored-by: Álvaro Herrera <alvherre@alvh.no-ip.org> Reported-by: Justin Pryzby <pryzby@telsasoft.com> Discussion: https://postgr.es/m/20210816222810.GE10479@telsasoft.com
Diffstat (limited to 'src/backend/postmaster/pgstat.c')
-rw-r--r--src/backend/postmaster/pgstat.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 7fcc3f6ded8..cbf763ac58d 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -1618,8 +1618,11 @@ pgstat_report_analyze(Relation rel,
* be double-counted after commit. (This approach also ensures that the
* collector ends up with the right numbers if we abort instead of
* committing.)
+ *
+ * Waste no time on partitioned tables, though.
*/
- if (rel->pgstat_info != NULL)
+ if (rel->pgstat_info != NULL &&
+ rel->rd_rel->relkind != RELKIND_PARTITIONED_TABLE)
{
PgStat_TableXactStatus *trans;
@@ -1981,8 +1984,10 @@ pgstat_initstats(Relation rel)
Oid rel_id = rel->rd_id;
char relkind = rel->rd_rel->relkind;
- /* We only count stats for things that have storage */
- if (!RELKIND_HAS_STORAGE(relkind))
+ /*
+ * We only count stats for relations with storage and partitioned tables
+ */
+ if (!RELKIND_HAS_STORAGE(relkind) && relkind != RELKIND_PARTITIONED_TABLE)
{
rel->pgstat_info = NULL;
return;