Nathan Bossart <nathandboss...@gmail.com> writes: > I do see a concern upthread about increased deadlock risk [0], but your > patch doesn't lock the table, but unless I'm wrong [1] (which is always > possible), it doesn't need to lock it.
It bothers me a bit that this proposes to do something as complicated as pg_class_aclcheck on a table we have no lock on. As you say, the lock we hold on the index would prevent DROP TABLE, but that doesn't mean we won't have any issues with other DDL on the table. Still, taking a lock would be bad because of the deadlock hazard, and I think the potential for conflicts with concurrent DDL is nonzero in a lot of other places. So I don't have any concrete reason to object. ReindexIndex() faces this same problem and solves it with some very complex code that manages to get the table's lock first. But I see that it's also doing pg_class_aclcheck on a table it hasn't locked yet, so I don't think that adopting its approach would do anything useful for us here. regards, tom lane