Simon Riggs <simon(at)2ndQuadrant(dot)com> writes:
> heapgetpage() gets a page and a pin, but holds the pin until it reads
> the next page. Wow!
> That is both annoying and very dumb. It should hold the pin long
> enough to copy the data and then release the pin.
I don't find that anywhere near as obvious as you seem to. I think you
are trying to optimize for the wrong set of conditions.
I will also note that the behavior of holding pin for as long as we are
stopped on a particular tuple is not specific to seqscans.
regards, tom lane