aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2023-08-12 14:37:05 -0700
committerNoah Misch <noah@leadboat.com>2023-08-12 14:37:11 -0700
commit7823a298ba5c54a67f98c928f73500bc4089449f (patch)
tree75c94741a4efca4896167f0ab6eb1655bcfed158 /src/backend
parent7bed93a469bfa6954ce937b72ef1dc76fda7159e (diff)
downloadpostgresql-7823a298ba5c54a67f98c928f73500bc4089449f.tar.gz
postgresql-7823a298ba5c54a67f98c928f73500bc4089449f.zip
Fix off-by-one in XLogRecordMaxSize check.
pg_logical_emit_message(false, '_', repeat('x', 1069547465)) failed with self-contradictory message "WAL record would be 1069547520 bytes (of maximum 1069547520 bytes)". There's no particular benefit from allowing or denying one byte in either direction; XLogRecordMaxSize could rise a few megabytes without trouble. Hence, this is just for cleanliness. Back-patch to v16, where this check first appeared.
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/access/transam/xloginsert.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/access/transam/xloginsert.c b/src/backend/access/transam/xloginsert.c
index 54247e1d81b..258cbd70355 100644
--- a/src/backend/access/transam/xloginsert.c
+++ b/src/backend/access/transam/xloginsert.c
@@ -900,7 +900,7 @@ XLogRecordAssemble(RmgrId rmid, uint8 info,
* not emit records larger than the sizes advertised to be supported. This
* cap is based on DecodeXLogRecordRequiredSpace().
*/
- if (total_len >= XLogRecordMaxSize)
+ if (total_len > XLogRecordMaxSize)
ereport(ERROR,
(errmsg_internal("oversized WAL record"),
errdetail_internal("WAL record would be %llu bytes (of maximum %u bytes); rmid %u flags %u.",