On Wed, Apr 18, 2018 at 04:53:29PM -0700, Peter Geoghegan wrote: > It occurred to me that it would be nice to be able to > Assert(!AnyBufferLockHeldByMe()) at a certain point within > index_form_tuple(), to make sure that our assumptions hold. If > index_truncate_tuple() (or any other function) ever called > index_form_tuple(), and ended up actually performing table access with > an exclusive buffer lock held, we'd at least be able to catch the bug > when assertions are enabled. A function that lets code assert that no > buffer locks are held, for the rare cases where external table access > is required seems like good general infrastructure.
Personally, I favor approaches like that, because it allows to catch up problems in using some APIs when people working on a patch miss any kind of warning comments at the top of the function or within it which summarize the conditions under which something needs to be used. > Does this seem like a good idea? This could get pretty expensive if it > was overused, even by the standards of what we expect from > assertion-enabled builds, but we could make it optional if the > overhead got out of hand. There are other places which could be improved, mentioned one here: https://www.postgresql.org/message-id/CAB7nPqRJtKO5NLZZis3xxzH05sdAodG39qFdLQRg371Pi94PzQ%40mail.gmail.com And if you see downthread this is a topic where it seems hard to reach a consensus. -- Michael
signature.asc
Description: PGP signature