Kouhei Kaigai wrote: > > On 1/31/16 7:38 PM, Kouhei Kaigai wrote: > > To answer your direct question, I'm no expert, but I haven't seen any > > functions that do exactly what you want. You'd have to pull relevant > > bits from ReadBuffer_*. Or maybe a better method would just be to call > > BufTableLookup() without any locks and if you get a result > -1 just > > call the relevant ReadBuffer function. Sometimes you'll end up calling > > ReadBuffer even though the buffer isn't in shared buffers, but I would > > think that would be a rare occurrence. > > > Thanks, indeed, extension can call BufTableLookup(). PrefetchBuffer() > has a good example for this. > > If it returned a valid buf_id, we have nothing difficult; just call > ReadBuffer() to pin the buffer.
Isn't this what (or very similar to) ReadBufferExtended(RBM_ZERO_AND_LOCK) is already doing? -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers