]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix incorrect errno in OpenWalSummaryFile()
authorMichael Paquier <michael@paquier.xyz>
Tue, 3 Feb 2026 02:25:10 +0000 (11:25 +0900)
committerMichael Paquier <michael@paquier.xyz>
Tue, 3 Feb 2026 02:25:10 +0000 (11:25 +0900)
This routine has an option to bypass an error if a WAL summary file is
opened for read but is missing (missing_ok=true).  However, the code
incorrectly checked for EEXIST, that matters when using O_CREAT and
O_EXCL, rather than ENOENT, for this case.

There are currently only two callers of OpenWalSummaryFile() in the
tree, and both use missing_ok=false, meaning that the check based on the
errno is currently dead code.  This issue could matter for out-of-core
code or future backpatches that would like to use missing_ok set to
true.

Issue spotted while monitoring this area of the code, after
a9afa021e95f.

Author: Michael Paquier <michael@paquier.xyz>
Reviewed-by: Chao Li <li.evan.chao@gmail.com>
Discussion: https://postgr.es/m/aYAf8qDHbpBZ3Rml@paquier.xyz
Backpatch-through: 17

src/backend/backup/walsummary.c

index 4ee510092f997f460c39e9ce9f7a5cf3135924a4..4cd1824fbc6b98b01cb45677f7063e565d196ef5 100644 (file)
@@ -214,7 +214,7 @@ OpenWalSummaryFile(WalSummaryFile *ws, bool missing_ok)
                         LSN_FORMAT_ARGS(ws->end_lsn));
 
        file = PathNameOpenFile(path, O_RDONLY);
-       if (file < 0 && (errno != EEXIST || !missing_ok))
+       if (file < 0 && (errno != ENOENT || !missing_ok))
                ereport(ERROR,
                                (errcode_for_file_access(),
                                 errmsg("could not open file \"%s\": %m", path)));