pgsql: Refactor the syslogger pipe protocol to use a bitmask for its op - Mailing list pgsql-committers

From Michael Paquier
Subject pgsql: Refactor the syslogger pipe protocol to use a bitmask for its op
Date
Msg-id E1mPZSF-0006cE-K7@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Refactor the syslogger pipe protocol to use a bitmask for its options

The previous protocol expected a set of matching characters to check if
a message sent was the last one or not, that changed depending on the
destination wanted:
- 't' and 'f' tracked the last message of a log sent to stderr.
- 'T' and 'F' tracked the last message of a log sent to csvlog.

This could be extended with more characters when introducing new
destinations, but using a bitmask is much more elegant.  This commit
changes the protocol so as a bitmask is used in the header of a log
chunk message sent to the syslogger, with the following options
available for now:
- log_destination as stderr.
- log_destination as csvlog.
- if a message is the last chunk of a message.

Sehrope found this issue in a patch set to introduce JSON as an option
for log_destination, but his patch made the size of the protocol header
larger.  This commit keeps the same size as the original, and adapts the
protocol as wanted.

Thanks also to Andrew Dunstan and Greg Stark for the discussion.

Author: Michael Paquier, Sehrope Sarkuni
Discussion: https://postgr.es/m/CAH7T-aqswBM6JWe4pDehi1uOiufqe06DJWaU5=X7dDLyqUExHg@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/2d77d835403a20b51e17e59f0343ddc17f431eec

Modified Files
--------------
src/backend/postmaster/syslogger.c | 19 ++++++++++++++-----
src/backend/utils/error/elog.c     |  9 +++++++--
src/include/postmaster/syslogger.h |  8 ++++++--
3 files changed, 27 insertions(+), 9 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Make pg_regexec() robust against out-of-range search_start.
Next
From: Michael Paquier
Date:
Subject: pgsql: Add regression tests for csvlog with the logging collector