Hi Sasha On 2021-Jul-14, Sasha Aliashkevich wrote: > lp | ctid | xmin | xmax | xmax_is_lock | xmax_committed | xmax_rolled_back | xmax_multixact > ----+---------+-----------+------+--------------+----------------+------------------+---------------- > 19 | (75,21) | 571 | 572 | f | f | t | f > 21 | (75,21) | 572 | 0 | f | f | t | f Yeah, row 19 here is dead and should have been removed by vacuum (same with the ones in pg_depend). I don't know why it wasn't. If you query the tables SELECT * FROM pg_proc WHERE ctid = '(75,19)' are they visible? They shouldn't. If they are visible, maybe try to UPDATE them, again by ctid; perhaps that will kill them for good. But since the txid_status() returns committed, that likely won't work. Maybe if you try to VACUUM by setting vacuum_freeze_min_age to a high value (so that it doesn't try to freeze, but only remove them) they are removed? (I didn't verify that the values you &-mask the infomask with are correct.) -- Álvaro Herrera Valdivia, Chile — https://www.EnterpriseDB.com/