Fix pg_statio_all_tables view for multiple TOAST indexes.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 24 Mar 2022 20:33:13 +0000 (16:33 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 24 Mar 2022 20:33:13 +0000 (16:33 -0400)
commitce95c543763b6fade641a67fa0c70649d8527243
treebe93c9329bc90681ad7936fce55c16b4f507489e
parent7dac61402e34c6d41d5d11cdc4c6a55f91e24026
Fix pg_statio_all_tables view for multiple TOAST indexes.

A TOAST table can normally have only one index, but there are corner
cases where it has more; for example, transiently during REINDEX
CONCURRENTLY.  In such a case, the pg_statio_all_tables view produced
multiple rows for the owning table, one per TOAST index.  Refactor the
view to avoid that, instead summing the stats across all the indexes,
as we do for regular table indexes.

While this has been wrong for a long time, back-patching seems unwise
due to the difficulty of putting a system view change into back
branches.

Andrei Zubkov, tweaked a bit by me

Discussion: https://postgr.es/m/acefef4189706971fc475f912c1afdab1c48d627.camel@moonset.ru
src/backend/catalog/system_views.sql
src/include/catalog/catversion.h
src/test/regress/expected/rules.out