summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/storage/aio/read_stream.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/storage/aio/read_stream.c b/src/backend/storage/aio/read_stream.c
index 36c54fb695b..0e7f5557f5c 100644
--- a/src/backend/storage/aio/read_stream.c
+++ b/src/backend/storage/aio/read_stream.c
@@ -237,7 +237,7 @@ read_stream_start_pending_read(ReadStream *stream)
int16 io_index;
int16 overflow;
int16 buffer_index;
- int16 buffer_limit;
+ int buffer_limit;
/* This should only be called with a pending read. */
Assert(stream->pending_read_nblocks > 0);
@@ -294,7 +294,10 @@ read_stream_start_pending_read(ReadStream *stream)
else
buffer_limit = Min(GetAdditionalPinLimit(), PG_INT16_MAX);
Assert(stream->forwarded_buffers <= stream->pending_read_nblocks);
+
buffer_limit += stream->forwarded_buffers;
+ buffer_limit = Min(buffer_limit, PG_INT16_MAX);
+
if (buffer_limit == 0 && stream->pinned_buffers == 0)
buffer_limit = 1; /* guarantee progress */