diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2011-11-26 12:11:00 +0200 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2011-11-26 12:11:00 +0200 |
commit | dea5f6cefe74a6cb51a1cfd39e12a2e1a026df35 (patch) | |
tree | ee70a2701d2d64841a2f65b2a8c606d3a4cba7fb /src | |
parent | 32fb4546e3f8cf9c2ef524e9c20766a046521193 (diff) | |
download | postgresql-dea5f6cefe74a6cb51a1cfd39e12a2e1a026df35.tar.gz postgresql-dea5f6cefe74a6cb51a1cfd39e12a2e1a026df35.zip |
Take fillfactor into account in the new COPY bulk heap insert code.
Jeff Janes
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/access/heap/heapam.c | 5 |
1 files changed, 4 insertions, 1 deletions
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); |