There appears to be a race condition in which dropping a view and replacing it with an identically-named table inside one transaction while other transactions are concurrently updating the view/table causes the following error:
WARNING: Error occurred while executing PL/pgSQL function f WARNING: line 16 at SQL statement ERROR: RelationClearRelation: relation NNN deleted while still in use Here's basically how to reproduce this bug: create table foo_1... create table foo_2... (identical to foo_1) create view foo as select * from foo_1 union all select * from foo_2; create "do instead" rule on foo view that redirects foo inserts into foo_2; create table bar... create trigger+func that inserts into foo on insert to bar; Next, start a couple of processes that continually insert one row at a time into bar as fast as possible (they should result in rows inserted into foo_1); Finally, run the following in a transaction: begin; drop view foo cascade; alter table foo_2 rename to foo; end; Sometimes this works without error, but many times it will result in the above error. Wratcheting up the number of processes writing to bar seems to increase the odds of encountering the race condition error. Ed ---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend