bulkwal_copy_1.patch

application/octet-stream

Filename: bulkwal_copy_1.patch
Type: application/octet-stream
Part: 0
Message: Re: Inserting heap tuples in bulk in COPY

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
File+
src/backend/access/heap/heapam.c 3 1
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index 72ed632..88bb5e3 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -2096,6 +2096,8 @@ heap_multi_insert(Relation relation, HeapTuple *tuples, int ntuples,
 	char	   *scratch = NULL;
 	Page		page;
 	bool		needwal;
+	Size	saveFreeSpace = RelationGetTargetPageFreeSpace(relation,
+										HEAP_DEFAULT_FILLFACTOR);
 
 	needwal = !(options & HEAP_INSERT_SKIP_WAL) && RelationNeedsWAL(relation);
 
@@ -2157,7 +2159,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);