pgsql: Prevent pgstats from getting confused when relkind of a relation - Mailing list pgsql-committers

From Andres Freund
Subject pgsql: Prevent pgstats from getting confused when relkind of a relation
Date
Msg-id E1p1Ipa-001mXg-Mw@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Prevent pgstats from getting confused when relkind of a relation changes

When the relkind of a relache entry changes, because a table is converted into
a view, pgstats can get confused in 15+, leading to crashes or assertion
failures.

For HEAD, Tom fixed this in b23cd185fd5, by removing support for converting a
table to a view, removing the source of the inconsistency. This commit just
adds an assertion that a relcache entry's relkind does not change, just in
case we end up with another case of that in the future. As there's no cases of
changing relkind anymore, we can't add a test that that's handled correctly.

For 15, fix the problem by not maintaining the association with the old pgstat
entry when the relkind changes during a relcache invalidation processing. In
that case the pgstat entry needs to be unlinked first, to avoid
PgStat_TableStatus->relation getting out of sync. Also add a test reproducing
the issues.

No known problem exists in 11-14, so just add the test there.

Reported-by: vignesh C <vignesh21@gmail.com>
Author: Andres Freund <andres@anarazel.de>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/CALDaNm2yXz+zOtv7y5zBd5WKT8O0Ld3YxikuU3dcyCvxF7gypA@mail.gmail.com
Discussion: https://postgr.es/m/CALDaNm3oZA-8Wbps2Jd1g5_Gjrr-x3YWrJPek-mF5Asrrvz2Dg@mail.gmail.com
Backpatch: 15-

Branch
------
REL_12_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/35b99a18f5fb99b44812c9641d98ac1bc3954371

Modified Files
--------------
src/test/regress/expected/create_view.out | 26 +++++++++++++++++++++++++-
src/test/regress/sql/create_view.sql      | 23 +++++++++++++++++++++++
2 files changed, 48 insertions(+), 1 deletion(-)


pgsql-committers by date:

Previous
From: Jeff Davis
Date:
Subject: pgsql: Fix broken hash function hashbpcharextended().
Next
From: David Rowley
Date:
Subject: pgsql: Add missing const qualifier