[PATCH] Add missing XLogEnsureRecordSpace() call in LogLogicalMessage

From: Henson Choi <assam258(at)gmail(dot)com>
To: pgsql-hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: [PATCH] Add missing XLogEnsureRecordSpace() call in LogLogicalMessage
Date: 2025-12-30 01:21:26
Message-ID: CAAAe_zC44MXjAOp394mwjWVqUUenyQuaAb7XTghrsGjG7y4Y4A@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi hackers,

LogLogicalMessage() in src/backend/replication/logical/message.c is
missing the XLogEnsureRecordSpace() call that appears before every
other XLogBeginInsert() in the codebase.

While this currently works because the 3 rdatas used here fit within
the default allocation of MAX_GENERIC_XLOG_RDATAS (20), this pattern
inconsistency could cause issues if:

1. MAX_GENERIC_XLOG_RDATAS is reduced in the future
2. This function is modified to use more rdatas
3. Someone copies this code without realizing the omission

All other WAL insertion code follows the pattern of calling
XLogEnsureRecordSpace() before XLogBeginInsert(). This patch adds
the missing call for consistency.

XLogRecPtr
LogLogicalMessage(const char *prefix, const char *message, size_t size,
bool transactional, bool flush)
{
...
xlrec.prefix_size = strlen(prefix) + 1;
xlrec.message_size = size;

+ XLogEnsureRecordSpace(0, 3);
XLogBeginInsert();
XLogRegisterData(&xlrec, SizeOfLogicalMessage);
XLogRegisterData(prefix, xlrec.prefix_size);
XLogRegisterData(message, size);
...
}

Best regards,
Henson

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message jian he 2025-12-30 01:35:12 Re: Fix ALTER TABLE DROP EXPRESSION with inheritance hierarchy
Previous Message Tomas Vondra 2025-12-30 01:19:15 Re: RFC: PostgreSQL Storage I/O Transformation Hooks