On 16 July 2018 at 12:12, Robert Haas <robertmh...@gmail.com> wrote: > On Sun, Jul 15, 2018 at 1:02 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: >> What we'd be better off doing, if we go this route, is to install an >> assertion-build-only test that verifies during relation_open(NoLock) >> that some kind of lock is already held on the rel. That would protect >> not only the executor, but a boatload of existing places that open >> rels with NoLock on the currently-unverified assumption that a lock is >> already held. > > +1. In fact, maybe we ought to go a little further and have a > relation_reopen(oid, mode) that verifies that a lock in the specified > mode is held.
Wouldn't it be better to just store the Relation indexed by its relid somewhere the first time we opened it? Then just do a direct array lookup on that rather than looking up by hashtable in syscache? -- David Rowley http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services