postgres.git / summary / log / commit / refs

commit    dea5f6cefe74a6cb51a1cfd39e12a2e1a026df35
Author:   Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date:     Sat Nov 26 10:11:00 2011 +0000
First released in: 9.2.0

    Take fillfactor into account in the new COPY bulk heap insert code.
    
    Jeff Janes


src/backend/access/heap/heapam.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 630c3ab26c0..7b27c230582 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -2093,8 +2093,11 @@ heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples, char *scratch = NULL; Page page; bool needwal; + Size saveFreeSpace; needwal = !(options & HEAP_INSERT_SKIP_WAL) && RelationNeedsWAL(relation); + saveFreeSpace = RelationGetTargetPageFreeSpace(relation, + HEAP_DEFAULT_FILLFACTOR); /* Toast and set header data in all the tuples */ heaptuples = palloc(ntuples * sizeof(HeapTuple)); @@ -2157,7 +2160,7 @@ heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples, { HeapTuple heaptup = heaptuples[ndone + nthispage]; - if (PageGetHeapFreeSpace(page) < MAXALIGN(heaptup->t_len)) + if (PageGetHeapFreeSpace(page) - saveFreeSpace < MAXALIGN(heaptup->t_len)) break; RelationPutHeapTuple(relation, buffer, heaptup); [parent: 32fb4546e3f8]