Re: Failed Assert in pgstat_assoc_relation
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: vignesh C <vignesh21@gmail.com>
Cc: Andres Freund <andres@anarazel.de>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-11-28T18:37:16Z
Lists: pgsql-hackers
vignesh C <vignesh21@gmail.com> writes: > I could reproduce this issue with the following steps: > create table t1(c int); > BEGIN; > CREATE TABLE t (c int); > SAVEPOINT q; > CREATE RULE "_RETURN" AS ON SELECT TO t DO INSTEAD SELECT * FROM t1; > select * from t; > ROLLBACK TO q; > CREATE RULE "_RETURN" AS ON SELECT TO t DO INSTEAD SELECT * FROM t1; > ROLLBACK; Uh-huh. I've not bothered to trace this in detail, but presumably what is happening is that the first CREATE RULE converts the table to a view, and then the ROLLBACK undoes that so far as the catalogs are concerned, but probably doesn't undo related pg_stats state changes fully. Then we're in a bad state that will cause problems. (It still crashes if you replace the second CREATE RULE with "select * from t".) As far as HEAD is concerned, maybe it's time to nuke the whole convert-table-to-view kluge entirely? Only pg_dump older than 9.4 will emit such code, so we're really about out of reasons to keep on maintaining it. However, I'm not sure that removing that code in v15 will fly, so maybe we need to make the new pg_stats code a little more robust against the possibility of a relkind change. regards, tom lane
Commits
-
Prevent pgstats from getting confused when relkind of a relation changes
- af3517c15c84 11.19 landed
- 35b99a18f5fb 12.14 landed
- 7944d2d8c78b 13.10 landed
- cb2e7ddfe571 16.0 landed
- 6344bc0974dc 14.7 landed
- c6a60471a1a5 15.2 landed
-
Remove logic for converting a table to a view.
- b23cd185fd54 16.0 landed