v1-0011-Clean-up-FileRead-return-type.patch

text/plain

Filename: v1-0011-Clean-up-FileRead-return-type.patch
Type: text/plain
Part: 10
Message: clean up size_t/ssize_t use with POSIX file system APIs

Patch

Format: format-patch
Series: patch v1-0011
Subject: Clean up FileRead() return type
File+
src/backend/replication/logical/reorderbuffer.c 5 5
src/backend/storage/file/buffile.c 9 6
src/backend/storage/smgr/md.c 1 1
src/backend/utils/probes.d 1 1
From 65afa2d7deeee97e39120a2ba65c75fbabc6ac63 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Mon, 29 Jun 2026 13:37:54 +0200
Subject: [PATCH v1 11/15] Clean up FileRead() return type

analogous to the previous changes for read()
---
 src/backend/replication/logical/reorderbuffer.c | 10 +++++-----
 src/backend/storage/file/buffile.c              | 15 +++++++++------
 src/backend/storage/smgr/md.c                   |  2 +-
 src/backend/utils/probes.d                      |  2 +-
 4 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c
index bd005a2aaf9..40cee674566 100644
--- a/src/backend/replication/logical/reorderbuffer.c
+++ b/src/backend/replication/logical/reorderbuffer.c
@@ -4564,7 +4564,7 @@ ReorderBufferRestoreChanges(ReorderBuffer *rb, ReorderBufferTXN *txn,
 
 	while (restored < max_changes_in_memory && *segno <= last_segno)
 	{
-		int			readBytes;
+		ssize_t		readBytes;
 		ReorderBufferDiskChange *ondisk;
 
 		CHECK_FOR_INTERRUPTS();
@@ -4629,9 +4629,9 @@ ReorderBufferRestoreChanges(ReorderBuffer *rb, ReorderBufferTXN *txn,
 		else if (readBytes != sizeof(ReorderBufferDiskChange))
 			ereport(ERROR,
 					(errcode_for_file_access(),
-					 errmsg("could not read from reorderbuffer spill file: read %d instead of %u bytes",
+					 errmsg("could not read from reorderbuffer spill file: read %zd of %zu",
 							readBytes,
-							(uint32) sizeof(ReorderBufferDiskChange))));
+							sizeof(ReorderBufferDiskChange))));
 
 		file->curOffset += readBytes;
 
@@ -4654,9 +4654,9 @@ ReorderBufferRestoreChanges(ReorderBuffer *rb, ReorderBufferTXN *txn,
 		else if (readBytes != ondisk->size - sizeof(ReorderBufferDiskChange))
 			ereport(ERROR,
 					(errcode_for_file_access(),
-					 errmsg("could not read from reorderbuffer spill file: read %d instead of %u bytes",
+					 errmsg("could not read from reorderbuffer spill file: read %zd of %zu",
 							readBytes,
-							(uint32) (ondisk->size - sizeof(ReorderBufferDiskChange)))));
+							(ondisk->size - sizeof(ReorderBufferDiskChange)))));
 
 		file->curOffset += readBytes;
 
diff --git a/src/backend/storage/file/buffile.c b/src/backend/storage/file/buffile.c
index c4afe4d368a..b44d24cdbd3 100644
--- a/src/backend/storage/file/buffile.c
+++ b/src/backend/storage/file/buffile.c
@@ -437,6 +437,7 @@ BufFileLoadBuffer(BufFile *file)
 	File		thisfile;
 	instr_time	io_start;
 	instr_time	io_time;
+	ssize_t		rc;
 
 	/*
 	 * Advance to next component file if necessary and possible.
@@ -458,12 +459,12 @@ BufFileLoadBuffer(BufFile *file)
 	/*
 	 * Read whatever we can get, up to a full bufferload.
 	 */
-	file->nbytes = FileRead(thisfile,
-							file->buffer.data,
-							sizeof(file->buffer.data),
-							file->curOffset,
-							WAIT_EVENT_BUFFILE_READ);
-	if (file->nbytes < 0)
+	rc = FileRead(thisfile,
+				  file->buffer.data,
+				  sizeof(file->buffer.data),
+				  file->curOffset,
+				  WAIT_EVENT_BUFFILE_READ);
+	if (rc < 0)
 	{
 		file->nbytes = 0;
 		ereport(ERROR,
@@ -472,6 +473,8 @@ BufFileLoadBuffer(BufFile *file)
 						FilePathName(thisfile))));
 	}
 
+	file->nbytes = rc;
+
 	if (track_io_timing)
 	{
 		INSTR_TIME_SET_CURRENT(io_time);
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index dee29037b16..5b1f6e1f4b6 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -864,7 +864,7 @@ mdreadv(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
 		struct iovec iov[PG_IOV_MAX];
 		int			iovcnt;
 		pgoff_t		seekpos;
-		int			nbytes;
+		ssize_t		nbytes;
 		MdfdVec    *v;
 		BlockNumber nblocks_this_segment;
 		size_t		transferred_this_segment;
diff --git a/src/backend/utils/probes.d b/src/backend/utils/probes.d
index 1929521c6a5..48b269468a5 100644
--- a/src/backend/utils/probes.d
+++ b/src/backend/utils/probes.d
@@ -83,7 +83,7 @@ provider postgresql {
 	probe twophase__checkpoint__done();
 
 	probe smgr__md__read__start(ForkNumber, BlockNumber, Oid, Oid, Oid, int);
-	probe smgr__md__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, int, int);
+	probe smgr__md__read__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, long long int, long long int);
 	probe smgr__md__write__start(ForkNumber, BlockNumber, Oid, Oid, Oid, int);
 	probe smgr__md__write__done(ForkNumber, BlockNumber, Oid, Oid, Oid, int, int, int);
 
-- 
2.54.0