Hi,
While reviewing/testing one of the patches I found the following Assert:
#0 0x000055c6312ba639 in pgstat_unlink_relation (rel=0x7fb73bcbac58)
at pgstat_relation.c:161
#1 0x000055c6312bbb5a in pgstat_relation_delete_pending_cb
(entry_ref=0x55c6335563a8) at pgstat_relation.c:839
#2 0x000055c6312b72bc in pgstat_delete_pending_entry
(entry_ref=0x55c6335563a8) at pgstat.c:1124
#3 0x000055c6312be3f1 in pgstat_release_entry_ref (key=...,
entry_ref=0x55c6335563a8, discard_pending=true) at pgstat_shmem.c:523
#4 0x000055c6312bee9a in pgstat_drop_entry
(kind=PGSTAT_KIND_RELATION, dboid=5, objoid=40960) at
pgstat_shmem.c:867
#5 0x000055c6312c034a in AtEOXact_PgStat_DroppedStats
(xact_state=0x55c6334baac8, isCommit=false) at pgstat_xact.c:97
#6 0x000055c6312c0240 in AtEOXact_PgStat (isCommit=false,
parallel=false) at pgstat_xact.c:55
#7 0x000055c630df8bee in AbortTransaction () at xact.c:2861
#8 0x000055c630df94fd in AbortCurrentTransaction () at xact.c:3352
I could reproduce this issue with the following steps:
create table t1(c1 int);
BEGIN;
CREATE TABLE t (c1 int);
CREATE RULE "_RETURN" AS ON SELECT TO t DO INSTEAD SELECT * FROM t1;
CREATE RULE "_RETURN" AS ON SELECT TO t DO INSTEAD SELECT * FROM t1;
Regards,
Vignesh