"Robert Haas" <robertmhaas@gmail.com> writes:
>> 2. The logic changes in RelationGetBufferForTuple seem bizarre and
>> overcomplicated. ISTM that the buffer saved by the bistate ought to
>> be about equivalent to relation->rd_targblock, ie, it's your first
>> trial location and also a place to save the located buffer on the way
>> out. I'd suggest tossing that part of the patch and starting over.
> Hmm, would that be safe in the presence of concurrent or recursive
> bulk inserts into the same relation?
As safe as it is now --- you're relying on the bistate to carry the
query-local state. Probably the best design is to just ignore
rd_targblock when a bistate is provided, and use the bistate's buffer
instead.
regards, tom lane