postgres.git / summary / log / commit / refs

commit    9590dcfca498879678fe4d280f7b21fff0cbfff9
Author:   Fujii Masao <fujii@postgresql.org>
Date:     Wed May 20 06:54:13 2026 +0000
First released in: 14.24, 15.19, 16.15, 17.11, 18.6

    pg_recvlogical: Honor source cluster file permissions for output files
    
    Commit c37b3d08ca6 attempted to preserve group permissions on pg_recvlogical
    output files when group access was enabled on the source cluster. However,
    the output files were still created with a fixed S_IRUSR | S_IWUSR mode,
    preventing group-read permissions from being applied.
    
    This commit fixes the issue by creating output files with pg_file_create_mode
    instead of a hard-coded mode. This allows pg_recvlogical to correctly preserve
    group permissions from the source cluster.
    
    Backpatch to all supported branches.
    
    Author: Fujii Masao <masao.fujii@gmail.com>
    Reviewed-by: Srinath Reddy Sadipiralla <srinath2133@gmail.com>
    Discussion: https://postgr.es/m/CAHGQGwHhpizYzMo3nFP4GkNMueSNMY3QfC-gBN1VTXtuiANDvw@mail.gmail.com
    Backpatch-through: 14


doc/src/sgml/ref/pg_recvlogical.sgml | 2 +- src/bin/pg_basebackup/pg_recvlogical.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/sgml/ref/pg_recvlogical.sgml b/doc/src/sgml/ref/pg_recvlogical.sgml index 0af2343b87b..3f1ff20badb 100644 --- a/doc/src/sgml/ref/pg_recvlogical.sgml +++ b/doc/src/sgml/ref/pg_recvlogical.sgml @@ -457,7 +457,7 @@ PostgreSQL documentation <para> <application>pg_recvlogical</application> will preserve group permissions on - the received WAL files if group permissions are enabled on the source + the output files if group permissions are enabled on the source cluster. </para> diff --git a/src/bin/pg_basebackup/pg_recvlogical.c b/src/bin/pg_basebackup/pg_recvlogical.c index f3c7937a1df..7228d54cc2d 100644 --- a/src/bin/pg_basebackup/pg_recvlogical.c +++ b/src/bin/pg_basebackup/pg_recvlogical.c @@ -327,7 +327,7 @@ StreamLogicalLog(void) outfd = fileno(stdout); else outfd = open(outfile, O_CREAT | O_APPEND | O_WRONLY | PG_BINARY, - S_IRUSR | S_IWUSR); + pg_file_create_mode); if (outfd == -1) { pg_log_error("could not open log file \"%s\": %m", outfile); [parent: 59759e1a5b49]