On Wed, 12 Dec 2012 13:56:08 +0200
Heikki Linnakangas <hlinnakan...@vmware.com> wrote:

> However, RelationGetBufferForTuple() won't return such 
> a page, it guarantees that the first tuple does indeed fit on the page 
> it returns. For the same reason, the later check that at least one tuple 
> was actually placed on the page is not necessary.
> 
> I committed a slightly different version, which unconditionally puts the 
> first tuple on the page, and only applies the freespace check to the 
> subsequent tuples. Since RelationGetBufferForTuple() guarantees that the 
> first tuple fits, we can trust that, like heap_insert does.
> 
> --- a/src/backend/access/heap/heapam.c
> +++ b/src/backend/access/heap/heapam.c
> @@ -2172,8 +2172,12 @@ heap_multi_insert(Relation relation, HeapTuple 
> *tuples, int ntuples,
>               /* NO EREPORT(ERROR) from here till changes are logged */
>               START_CRIT_SECTION();
> 
> -             /* Put as many tuples as fit on this page */
> -             for (nthispage = 0; ndone + nthispage < ntuples; nthispage++)
> +             /*
> +              * ()  has ensured that the first tuple fits.
> +              * Put that on the page, and then as many other tuples as fit.
> +              */
> +             RelationPutHeapTuple(relation, buffer, heaptuples[ndone]);
> +             for (nthispage = 1; ndone + nthispage < ntuples; nthispage++)
>               {
>                       HeapTuple       heaptup = heaptuples[ndone + nthispage];

I don't know if this is the same thing. At least in the comments I was
reading trying to figure this out there was some concern that someone
else could change the space on the page. Does RelationGetBufferForTuple()
guarantee against this too?

-dg

-- 
David Gould              510 282 0869         da...@sonic.net
If simplicity worked, the world would be overrun with insects.


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to