0002-Use-pg_pwrite-in-rewriteheap.c.patch
application/octet-stream
Filename: 0002-Use-pg_pwrite-in-rewriteheap.c.patch
Type: application/octet-stream
Part: 1
Patch
Format: format-patch
Series: patch 0002
Subject: Use pg_pwrite() in rewriteheap.c.
| File | + | − |
|---|---|---|
| src/backend/access/heap/rewriteheap.c | 1 | 8 |
From 95d7187172f2ac6c08dc92f1043e1662b0dab4ac Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Fri, 7 Feb 2020 12:04:57 +1300
Subject: [PATCH 2/3] Use pg_pwrite() in rewriteheap.c.
This removes an lseek() call.
---
src/backend/access/heap/rewriteheap.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/src/backend/access/heap/rewriteheap.c b/src/backend/access/heap/rewriteheap.c
index 5869922ff8..9c29bc0e0f 100644
--- a/src/backend/access/heap/rewriteheap.c
+++ b/src/backend/access/heap/rewriteheap.c
@@ -1156,13 +1156,6 @@ heap_xlog_logical_rewrite(XLogReaderState *r)
path, (uint32) xlrec->offset)));
pgstat_report_wait_end();
- /* now seek to the position we want to write our data to */
- if (lseek(fd, xlrec->offset, SEEK_SET) != xlrec->offset)
- ereport(ERROR,
- (errcode_for_file_access(),
- errmsg("could not seek to end of file \"%s\": %m",
- path)));
-
data = XLogRecGetData(r) + sizeof(*xlrec);
len = xlrec->num_mappings * sizeof(LogicalRewriteMappingData);
@@ -1170,7 +1163,7 @@ heap_xlog_logical_rewrite(XLogReaderState *r)
/* write out tail end of mapping file (again) */
errno = 0;
pgstat_report_wait_start(WAIT_EVENT_LOGICAL_REWRITE_MAPPING_WRITE);
- if (write(fd, data, len) != len)
+ if (pg_pwrite(fd, data, len, xlrec->offset) != len)
{
/* if write didn't set errno, assume problem is no disk space */
if (errno == 0)
--
2.23.0