Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pgbackrest for openSUSE:Factory checked in at 2026-08-25 13:20:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pgbackrest (Old) and /work/SRC/openSUSE:Factory/.pgbackrest.new.1258 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pgbackrest" Tue Aug 25 13:20:48 2026 rev:25 rq:1373541 version:2.59.1 Changes: -------- --- /work/SRC/openSUSE:Factory/pgbackrest/pgbackrest.changes 2026-07-21 23:00:34.818080696 +0200 +++ /work/SRC/openSUSE:Factory/.pgbackrest.new.1258/pgbackrest.changes 2026-08-25 13:21:41.469348649 +0200 @@ -1,0 +2,21 @@ +Mon Aug 17 09:38:56 UTC 2026 - Marcus Rueckert <[email protected]> + +- update to 2.59.1 + - Bug Fixes: + - Fix hang when the chunk buffer is smaller than the input + buffer. (Reviewed by Andrew Pogrebnoi, Douglas J Hunley. + Reported by crajac66.) + - Compare a new backup label only against its own full backup + set. (Reviewed by Douglas J Hunley. Reported by Anton + Glushakov.) + - Fix source archives generated by GitHub missing files + required to build. (Reported by aardvarkzed.) + - Features: + - PostgreSQL 19beta3 support. (Contributed by Lardière + Sébastien. Reviewed by David Steele.) + - Documentation Improvements: + - Document exception for dots in S3 bucket names when + repo-s3-uri-style=path. + - Remove explicit hot_standby configuration from user guide. + +------------------------------------------------------------------- Old: ---- pgbackrest-2.59.0.tar.gz New: ---- pgbackrest-2.59.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pgbackrest.spec ++++++ --- /var/tmp/diff_new_pack.WPlm6T/_old 2026-08-25 13:21:42.984402074 +0200 +++ /var/tmp/diff_new_pack.WPlm6T/_new 2026-08-25 13:21:42.986402144 +0200 @@ -19,7 +19,7 @@ %define services pgbackrest.target [email protected] [email protected] [email protected] pgbackrest.service [email protected] [email protected] [email protected] Name: pgbackrest -Version: 2.59.0 +Version: 2.59.1 Release: 0 Summary: Reliable PostgreSQL Backup & Restore License: MIT ++++++ pgbackrest-2.59.0.tar.gz -> pgbackrest-2.59.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/dist new/pgbackrest-2.59.1/dist --- old/pgbackrest-2.59.0/dist 2026-07-20 10:14:42.326436800 +0200 +++ new/pgbackrest-2.59.1/dist 2026-08-17 11:10:21.775967600 +0200 @@ -1 +1 @@ -2.59.0 +2.59.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/doc/html/command.html new/pgbackrest-2.59.1/doc/html/command.html --- old/pgbackrest-2.59.0/doc/html/command.html 2026-07-20 10:14:42.323542800 +0200 +++ new/pgbackrest-2.59.1/doc/html/command.html 2026-08-17 11:10:21.774024000 +0200 @@ -15667,5 +15667,5 @@ <pre class="code-block">default: text example: --output=num</pre> </div></div></div></div></div></div></div><div class="page-footer"> -Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated July 20, 2026 +Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated August 17, 2026 </div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/doc/html/configuration.html new/pgbackrest-2.59.1/doc/html/configuration.html --- old/pgbackrest-2.59.0/doc/html/configuration.html 2026-07-20 10:14:42.323973000 +0200 +++ new/pgbackrest-2.59.1/doc/html/configuration.html 2026-08-17 11:10:21.774469400 +0200 @@ -2191,5 +2191,5 @@ </div> <pre class="code-block">example: pg1-user=backupuser</pre> </div></div></div></div></div><div class="page-footer"> -Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated July 20, 2026 +Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated August 17, 2026 </div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/doc/html/faq.html new/pgbackrest-2.59.1/doc/html/faq.html --- old/pgbackrest-2.59.0/doc/html/faq.html 2026-07-20 10:14:42.324068000 +0200 +++ new/pgbackrest-2.59.1/doc/html/faq.html 2026-08-17 11:10:21.774563800 +0200 @@ -108,6 +108,8 @@ Can I use dots (periods) in my S3 bucket name? </div></div><div class="section-body"><div class="section-body-text"> <span class="host">RFC-2818</span> does not allow wildcards to match on a dot (.) so s3 bucket names must not contain dots. If there are dots in the S3 bucket name then an error such as <q>unable to find hostname 'my.backup.bucket.s3.amazonaws.com' in certificate common name or subject alternative names</q> will occur. +</div><div class="section-body-text"> +The exception is <span class="br-option">repo-s3-uri-style=path</span>, which prepends the bucket to the URI instead of the host. Since the bucket is not part of the host name, the certificate is matched against the endpoint alone and dots in the bucket name are not a problem. Note that path-style URIs are not supported by all S3-compatible object stores. </div></div></div><div class="section1"><a id="old-package"></a><div class="section1-header"><div class="section1-number"></div><div class="section1-title"> Where can I find packages for older versions of <span class="backrest">pgBackRest</span>? </div></div><div class="section-body"><div class="section-body-text"> @@ -151,5 +153,5 @@ </div><div class="section-body-text"> Please note that recovering this backup will not result in a timeline switch, which means that this cluster should not push WAL to the original repository that it was exported from. If the new cluster is in a network-isolated environment this should not be a problem. </div></div></div></div><div class="page-footer"> -Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated July 20, 2026 +Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated August 17, 2026 </div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/doc/html/index.html new/pgbackrest-2.59.1/doc/html/index.html --- old/pgbackrest-2.59.0/doc/html/index.html 2026-07-20 10:14:42.324109300 +0200 +++ new/pgbackrest-2.59.1/doc/html/index.html 2026-08-17 11:10:21.774604000 +0200 @@ -27,7 +27,7 @@ </div></div><div class="section-body"><div class="section-body-text"> <span class="backrest">pgBackRest</span> is a reliable backup and restore solution for <span class="postgres">PostgreSQL</span> that seamlessly scales up to the largest databases and workloads. </div><div class="section-body-text"> -<span class="backrest">pgBackRest</span> <a href="https://github.com/pgbackrest/pgbackrest/releases/tag/release/2.59.0">v2.59.0</a> is the current stable release. Release notes are on the <a href="release.html">Releases</a> page. +<span class="backrest">pgBackRest</span> <a href="https://github.com/pgbackrest/pgbackrest/releases/tag/release/2.59.1">v2.59.1</a> is the current stable release. Release notes are on the <a href="release.html">Releases</a> page. </div><div class="section-body-text"> Please give us a star on <a href="https://github.com/pgbackrest/pgbackrest">GitHub</a> if you like <span class="backrest">pgBackRest</span>! </div></div></div><div class="section1"><a id="features"></a><div class="section1-header"><div class="section1-title"> @@ -137,5 +137,5 @@ </div><div class="section-body-text"> Creating a robust disaster recovery policy with proper replication and backup strategies can be a very complex and daunting task. You may find that you need help during the architecture phase and ongoing support to ensure that your enterprise continues running smoothly. </div></div></div></div><div class="page-footer"> -Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated July 20, 2026 +Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated August 17, 2026 </div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/doc/html/release.html new/pgbackrest-2.59.1/doc/html/release.html --- old/pgbackrest-2.59.0/doc/html/release.html 2026-07-20 10:14:42.324150300 +0200 +++ new/pgbackrest-2.59.1/doc/html/release.html 2026-08-17 11:10:21.774642700 +0200 @@ -26,8 +26,8 @@ Introduction </a></div></div><div class="section1-toc"><div class="section1-toc-title"><a href="#current"> Current Stable Release -</a></div><div class="section2-toc"><div class="section2-toc-title"><a href="#2.59.0"> -v2.59.0 Release Notes +</a></div><div class="section2-toc"><div class="section2-toc-title"><a href="#2.59.1"> +v2.59.1 Release Notes </a></div></div></div><div class="section1-toc"><div class="section1-toc-title"><a href="#supported"> Stable Releases </a></div></div><div class="section1-toc"><div class="section1-toc-title"><a href="#unsupported"> @@ -42,10 +42,36 @@ The notes for a release may also contain <q>Additional Notes</q> but changes in this section are only to documentation or the test suite and have no direct impact on the <span class="backrest">pgBackRest</span> codebase. </div><div class="section-body"></div></div><div class="section1"><a id="current"></a><div class="section1-header"><div class="section1-title"> Current Stable Release +</div></div><div class="section-body"><div class="section2"><a id="2.59.1"></a><div class="section2-header"><div class="section2-title"> +v2.59.1 Release Notes +</div></div><div class="section-body"><div class="section2-subtitle"> +PostgreSQL 19beta3 Support +</div><div class="section2-subsubtitle"> +Released August 17, 2026 +</div><div class="section-body-text"> +<b> Bug Fixes:</b> +</div><ul class="list-unordered"><li class="list-unordered"> +Fix hang when the chunk buffer is smaller than the input buffer. (<i>Reviewed by Andrew Pogrebnoi, Douglas J Hunley. Reported by crajac66.</i>) +</li><li class="list-unordered"> +Compare a new backup label only against its own full backup set. (<i>Reviewed by Douglas J Hunley. Reported by Anton Glushakov.</i>) +</li><li class="list-unordered"> +Fix source archives generated by GitHub missing files required to build. (<i>Reported by aardvarkzed.</i>) +</li></ul><div class="section-body-text"> +<b> Features:</b> +</div><ul class="list-unordered"><li class="list-unordered"> +<span class="host">PostgreSQL 19beta3</span> support. (<i>Contributed by Lardière Sébastien. Reviewed by David Steele.</i>) +</li></ul><div class="section-body-text"> +<b>Documentation Improvements:</b> +</div><ul class="list-unordered"><li class="list-unordered"> +Document exception for dots in <span class="host">S3</span> bucket names when <span class="br-setting">repo-s3-uri-style=path</span>. +</li><li class="list-unordered"> +Remove explicit <span class="pg-setting">hot_standby</span> configuration from user guide. +</li></ul></div></div></div></div><div class="section1"><a id="supported"></a><div class="section1-header"><div class="section1-title"> +Stable Releases </div></div><div class="section-body"><div class="section2"><a id="2.59.0"></a><div class="section2-header"><div class="section2-title"> v2.59.0 Release Notes </div></div><div class="section-body"><div class="section2-subtitle"> -PostgreSQL 19 Support +PostgreSQL 19beta2 Support </div><div class="section2-subsubtitle"> Released July 20, 2026 </div><div class="section-body-text"> @@ -136,9 +162,7 @@ <b>Test Suite Improvements:</b> </div><ul class="list-unordered"><li class="list-unordered"> Fix Alpine group conflicts in CI containers. (<i>Contributed by Artur Zakirov. Reviewed by David Steele.</i>) -</li></ul></div></div></div></div><div class="section1"><a id="supported"></a><div class="section1-header"><div class="section1-title"> -Stable Releases -</div></div><div class="section-body"><div class="section2"><a id="2.58.0"></a><div class="section2-header"><div class="section2-title"> +</li></ul></div></div><div class="section2"><a id="2.58.0"></a><div class="section2-header"><div class="section2-title"> v2.58.0 Release Notes </div></div><div class="section-body"><div class="section2-subtitle"> Object Storage Improvements @@ -3405,5 +3429,5 @@ </div><ul class="list-unordered"><li class="list-unordered"> Absolutely no documentation (outside the code). Well, excepting these release notes. </li></ul></div></div></div></div></div><div class="page-footer"> -Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated July 20, 2026 +Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated August 17, 2026 </div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/doc/html/user-guide-index.html new/pgbackrest-2.59.1/doc/html/user-guide-index.html --- old/pgbackrest-2.59.0/doc/html/user-guide-index.html 2026-07-20 10:14:42.324362300 +0200 +++ new/pgbackrest-2.59.1/doc/html/user-guide-index.html 2026-08-17 11:10:21.774852800 +0200 @@ -29,5 +29,5 @@ </li><li class="list-unordered"> <a href="user-guide-rhel.html">RHEL</a> </li></ul></div></div></div><div class="page-footer"> -Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated July 20, 2026 +Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated August 17, 2026 </div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/doc/html/user-guide-rhel.html new/pgbackrest-2.59.1/doc/html/user-guide-rhel.html --- old/pgbackrest-2.59.0/doc/html/user-guide-rhel.html 2026-07-20 10:14:42.324265700 +0200 +++ new/pgbackrest-2.59.1/doc/html/user-guide-rhel.html 2026-08-17 11:10:21.774757100 +0200 @@ -223,11 +223,11 @@ </div><div class="section-body-text"> When building from source it is best to use a build host rather than building on production. Many of the tools required for the build should generally not be installed in production. <span class="backrest">pgBackRest</span> consists of a single executable so it is easy to copy to a new host once it is built. </div><div class="execute"><div class="execute-title"> -<span class="host">build</span> <b>⇒</b> Download version <span class="id">2.59.0</span> of <span class="backrest">pgBackRest</span> to <span class="path">/build</span> path +<span class="host">build</span> <b>⇒</b> Download version <span class="id">2.59.1</span> of <span class="backrest">pgBackRest</span> to <span class="path">/build</span> path </div><div class="execute-body"> <pre class="execute-body-cmd">mkdir -p /build</pre> <pre class="execute-body-cmd">curl -fsSL \ - https://github.com/pgbackrest/pgbackrest/releases/download/release%2F2.59.0/pgbackrest-2.59.0.tar.gz | \ + https://github.com/pgbackrest/pgbackrest/releases/download/release%2F2.59.1/pgbackrest-2.59.1.tar.gz | \ tar zx -C /build</pre> </div></div><div class="execute"><div class="execute-title"> <span class="host">build</span> <b>⇒</b> Install build dependencies @@ -237,7 +237,7 @@ </div></div><div class="execute"><div class="execute-title"> <span class="host">build</span> <b>⇒</b> Configure and compile <span class="backrest">pgBackRest</span> </div><div class="execute-body"> -<pre class="execute-body-cmd">meson setup /build/pgbackrest /build/pgbackrest-2.59.0</pre> +<pre class="execute-body-cmd">meson setup /build/pgbackrest /build/pgbackrest-2.59.1</pre> <pre class="execute-body-cmd">ninja -C /build/pgbackrest</pre> </div></div><div class="execute"><div class="execute-title"> <span class="host">build</span> <b>⇒</b> Optionally run smoke tests to verify <span class="backrest">pgBackRest</span> was built correctly @@ -393,6 +393,8 @@ </div><div class="execute-body"> <pre class="execute-body-cmd">sudo systemctl restart postgresql-14.service</pre> </div></div><div class="section-body-text"> +The <span class="pg-option">hot_standby</span> setting is enabled by default and should be left that way on every cluster. Any cluster may be restored as a standby later, e.g. a primary that is rebuilt as a standby after failover, and a standby will not accept read-only connections without it. +</div><div class="section-body-text"> When archiving a WAL segment is expected to take more than 60 seconds (the default) to reach the <span class="backrest">pgBackRest</span> repository, then the <span class="backrest">pgBackRest</span> <span class="br-option">archive-timeout</span> option should be increased. Note that this option is not the same as the <span class="postgres">PostgreSQL</span> <span class="pg-option">archive_timeout</span> option which is used to force a WAL segment switch; useful for databases where there are long periods of inactivity. For more information on the <span class="postgres">PostgreSQL</span> <span class="pg-option">archive_timeout</span> option, see <span class="postgres">PostgreSQL</span> <a href="https://www.postgresql.org/docs/current/static/runtime-config-wal.html">Write Ahead Log</a>. </div><div class="section-body-text"> The <span class="cmd">archive-push</span> command can be configured with its own options. For example, a lower compression level may be set to speed archiving without affecting the compression used for backups. @@ -1519,7 +1521,7 @@ <pre class="execute-body-cmd">sudo -u postgres cat /var/lib/pgsql/14/data/postgresql.auto.conf</pre> <pre class="execute-body-output">Output suppressed for testing</pre> </div></div><div class="section-body-text"> -The <span class="pg-setting">hot_standby</span> setting must be enabled before starting <span class="postgres">PostgreSQL</span> to allow read-only connections on <span class="host">pg-standby</span>. Otherwise, connection attempts will be refused. The rest of the configuration is in case the standby is promoted to a primary. +The configuration is in case the standby is promoted to a primary. </div><div class="config"><div class="config-title"> <span class="host">pg-standby</span>:<span class="file">/var/lib/pgsql/14/data/postgresql.conf</span> <b>⇒</b> Configure <span class="postgres">PostgreSQL</span> </div><div class="config-body"><div class="config-body-output"> @@ -1967,11 +1969,7 @@ <span class="host">pg-standby</span> <b>⇒</b> Restore the demo standby cluster </div><div class="execute-body"> <pre class="execute-body-cmd">sudo -u postgres pgbackrest --stanza=demo --type=standby restore</pre> -</div></div><div class="config"><div class="config-title"> -<span class="host">pg-standby</span>:<span class="file">/var/lib/pgsql/15/data/postgresql.conf</span> <b>⇒</b> Configure <span class="postgres">PostgreSQL</span> -</div><div class="config-body"><div class="config-body-output"> -Config suppressed for testing -</div></div></div><div class="execute"><div class="execute-title"> +</div></div><div class="execute"><div class="execute-title"> <span class="host">pg-standby</span> <b>⇒</b> Start <span class="postgres">PostgreSQL</span> and check the <span class="backrest">pgBackRest</span> configuration </div><div class="execute-body"> <pre class="execute-body-cmd">sudo systemctl start postgresql-15.service</pre> @@ -1984,5 +1982,5 @@ </div><div class="config-body"><div class="config-body-output"> Config suppressed for testing </div></div></div></div></div></div><div class="page-footer"> -Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated July 20, 2026 +Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated August 17, 2026 </div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/doc/html/user-guide.html new/pgbackrest-2.59.1/doc/html/user-guide.html --- old/pgbackrest-2.59.0/doc/html/user-guide.html 2026-07-20 10:14:42.323359300 +0200 +++ new/pgbackrest-2.59.1/doc/html/user-guide.html 2026-08-17 11:10:21.773832300 +0200 @@ -229,11 +229,11 @@ </div><div class="section-body-text"> When building from source it is best to use a build host rather than building on production. Many of the tools required for the build should generally not be installed in production. <span class="backrest">pgBackRest</span> consists of a single executable so it is easy to copy to a new host once it is built. </div><div class="execute"><div class="execute-title"> -<span class="host">build</span> <b>⇒</b> Download version <span class="id">2.59.0</span> of <span class="backrest">pgBackRest</span> to <span class="path">/build</span> path +<span class="host">build</span> <b>⇒</b> Download version <span class="id">2.59.1</span> of <span class="backrest">pgBackRest</span> to <span class="path">/build</span> path </div><div class="execute-body"> <pre class="execute-body-cmd">mkdir -p /build</pre> <pre class="execute-body-cmd">curl -fsSL \ - https://github.com/pgbackrest/pgbackrest/releases/download/release%2F2.59.0/pgbackrest-2.59.0.tar.gz | \ + https://github.com/pgbackrest/pgbackrest/releases/download/release%2F2.59.1/pgbackrest-2.59.1.tar.gz | \ tar zx -C /build</pre> </div></div><div class="execute"><div class="execute-title"> <span class="host">build</span> <b>⇒</b> Install build dependencies @@ -243,7 +243,7 @@ </div></div><div class="execute"><div class="execute-title"> <span class="host">build</span> <b>⇒</b> Configure and compile <span class="backrest">pgBackRest</span> </div><div class="execute-body"> -<pre class="execute-body-cmd">meson setup /build/pgbackrest /build/pgbackrest-2.59.0</pre> +<pre class="execute-body-cmd">meson setup /build/pgbackrest /build/pgbackrest-2.59.1</pre> <pre class="execute-body-cmd">ninja -C /build/pgbackrest</pre> </div></div><div class="execute"><div class="execute-title"> <span class="host">build</span> <b>⇒</b> Optionally run smoke tests to verify <span class="backrest">pgBackRest</span> was built correctly @@ -395,6 +395,8 @@ </div><div class="execute-body"> <pre class="execute-body-cmd">sudo pg_ctlcluster 17 demo restart</pre> </div></div><div class="section-body-text"> +The <span class="pg-option">hot_standby</span> setting is enabled by default and should be left that way on every cluster. Any cluster may be restored as a standby later, e.g. a primary that is rebuilt as a standby after failover, and a standby will not accept read-only connections without it. +</div><div class="section-body-text"> When archiving a WAL segment is expected to take more than 60 seconds (the default) to reach the <span class="backrest">pgBackRest</span> repository, then the <span class="backrest">pgBackRest</span> <span class="br-option">archive-timeout</span> option should be increased. Note that this option is not the same as the <span class="postgres">PostgreSQL</span> <span class="pg-option">archive_timeout</span> option which is used to force a WAL segment switch; useful for databases where there are long periods of inactivity. For more information on the <span class="postgres">PostgreSQL</span> <span class="pg-option">archive_timeout</span> option, see <span class="postgres">PostgreSQL</span> <a href="https://www.postgresql.org/docs/current/static/runtime-config-wal.html">Write Ahead Log</a>. </div><div class="section-body-text"> The <span class="cmd">archive-push</span> command can be configured with its own options. For example, a lower compression level may be set to speed archiving without affecting the compression used for backups. @@ -1603,7 +1605,7 @@ <pre class="execute-body-cmd">sudo -u postgres cat /var/lib/postgresql/17/demo/postgresql.auto.conf</pre> <pre class="execute-body-output">Output suppressed for testing</pre> </div></div><div class="section-body-text"> -The <span class="pg-setting">hot_standby</span> setting must be enabled before starting <span class="postgres">PostgreSQL</span> to allow read-only connections on <span class="host">pg-standby</span>. Otherwise, connection attempts will be refused. The rest of the configuration is in case the standby is promoted to a primary. +The configuration is in case the standby is promoted to a primary. </div><div class="config"><div class="config-title"> <span class="host">pg-standby</span>:<span class="file">/etc/postgresql/17/demo/postgresql.conf</span> <b>⇒</b> Configure <span class="postgres">PostgreSQL</span> </div><div class="config-body"><div class="config-body-output"> @@ -2077,11 +2079,7 @@ <span class="host">pg-standby</span> <b>⇒</b> Restore the demo standby cluster </div><div class="execute-body"> <pre class="execute-body-cmd">sudo -u postgres pgbackrest --stanza=demo --delta --type=standby restore</pre> -</div></div><div class="config"><div class="config-title"> -<span class="host">pg-standby</span>:<span class="file">/etc/postgresql/18/demo/postgresql.conf</span> <b>⇒</b> Configure <span class="postgres">PostgreSQL</span> -</div><div class="config-body"><div class="config-body-output"> -Config suppressed for testing -</div></div></div><div class="execute"><div class="execute-title"> +</div></div><div class="execute"><div class="execute-title"> <span class="host">pg-standby</span> <b>⇒</b> Start <span class="postgres">PostgreSQL</span> and check the <span class="backrest">pgBackRest</span> configuration </div><div class="execute-body"> <pre class="execute-body-cmd">sudo pg_ctlcluster 18 demo start</pre> @@ -2094,5 +2092,5 @@ </div><div class="config-body"><div class="config-body-output"> Config suppressed for testing </div></div></div></div></div></div><div class="page-footer"> -Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated July 20, 2026 +Copyright © 2015-2026, The PostgreSQL Global Development Group, <a href="https://github.com/pgbackrest/pgbackrest/blob/main/LICENSE">MIT License</a>. Updated August 17, 2026 </div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/meson.build new/pgbackrest-2.59.1/meson.build --- old/pgbackrest-2.59.0/meson.build 2026-07-20 10:13:35.000000000 +0200 +++ new/pgbackrest-2.59.1/meson.build 2026-08-17 11:08:40.000000000 +0200 @@ -4,7 +4,7 @@ project( 'pgbackrest', ['c'], - version: '2.59.0', + version: '2.59.1', license: 'MIT', meson_version: '>=0.47', default_options: [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/src/command/backup/backup.c new/pgbackrest-2.59.1/src/command/backup/backup.c --- old/pgbackrest-2.59.0/src/command/backup/backup.c 2026-07-20 10:13:35.000000000 +0200 +++ new/pgbackrest-2.59.1/src/command/backup/backup.c 2026-08-17 11:08:40.000000000 +0200 @@ -61,11 +61,20 @@ { const String *backupLabelLatest = NULL; + // For full backup compare against all backups. For other backup types compare only against backups in the same full backup + // set, i.e. those whose name begins with the full backup part of backupLabelPrior. Since the new label is generated from + // backupLabelPrior it can never conflict with a label in another full backup set. This prevents label generation from + // failing when the last full backup is removed and then a diff/incr is generated from the last remaining full backup, or + // when a removed full backup is still returned by the repository listing, which can happen on object stores that retain + // empty prefixes. + const String *const labelRegExp = + type == backupTypeFull ? + backupRegExpP(.full = true, .differential = true, .incremental = true, .noAnchorEnd = true) : + strNewFmt("^%.*sF\\_" DATE_TIME_REGEX "(D|I)", DATE_TIME_LEN, strZ(backupLabelPrior)); + // Get the newest backup const StringList *const backupList = strLstSort( - storageListP( - storageRepo(), STRDEF(STORAGE_REPO_BACKUP), - .expression = backupRegExpP(.full = true, .differential = true, .incremental = true)), + storageListP(storageRepo(), STRDEF(STORAGE_REPO_BACKUP), .expression = strNewFmt("%s$", strZ(labelRegExp))), sortOrderDesc); if (!strLstEmpty(backupList)) @@ -78,18 +87,11 @@ if (!strLstEmpty(historyYearList)) { - // For full backup compare against all backups in the history. For other backup types find backups whose name begins - // with full backup part of backupLabelLatest. This prevents label generation from failing when the last full backup is - // removed and then an diff/incr is generated from the last remaining full backup. - const String *const fileNameRegExp = - (type == backupTypeFull) ? - backupRegExpP(.full = true, .differential = true, .incremental = true, .noAnchorEnd = true) : - strNewFmt("^%.*sF\\_" DATE_TIME_REGEX "(D|I)", DATE_TIME_LEN, strZ(backupLabelLatest)); const StringList *const historyList = strLstSort( storageListP( storageRepo(), strNewFmt(STORAGE_REPO_BACKUP "/" BACKUP_PATH_HISTORY "/%s", strZ(strLstGet(historyYearList, 0))), - .expression = strNewFmt("%s\\.manifest\\.%s$", strZ(fileNameRegExp), strZ(compressTypeStr(compressTypeGz)))), + .expression = strNewFmt("%s\\.manifest\\.%s$", strZ(labelRegExp), strZ(compressTypeStr(compressTypeGz)))), sortOrderDesc); if (!strLstEmpty(historyList)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/src/postgres/interface/version.vendor.h new/pgbackrest-2.59.1/src/postgres/interface/version.vendor.h --- old/pgbackrest-2.59.0/src/postgres/interface/version.vendor.h 2026-07-20 10:13:35.000000000 +0200 +++ new/pgbackrest-2.59.1/src/postgres/interface/version.vendor.h 2026-08-17 11:08:40.000000000 +0200 @@ -1701,7 +1701,7 @@ #elif PG_VERSION >= PG_VERSION_19 -#define XLOG_PAGE_MAGIC 0xD120 /* can be used as WAL version indicator */ +#define XLOG_PAGE_MAGIC 0xD121 /* can be used as WAL version indicator */ #elif PG_VERSION >= PG_VERSION_18 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/src/storage/azure/write.c new/pgbackrest-2.59.1/src/storage/azure/write.c --- old/pgbackrest-2.59.0/src/storage/azure/write.c 2026-07-20 10:13:35.000000000 +0200 +++ new/pgbackrest-2.59.1/src/storage/azure/write.c 2026-08-17 11:08:40.000000000 +0200 @@ -145,14 +145,14 @@ ASSERT(this != NULL); ASSERT(buffer != NULL); - // Resize chunk buffer - storageWriteChunkBufferResize(buffer, this->blockBuffer, this->blockSize); - // Continue until the write buffer has been exhausted size_t bytesTotal = 0; do { + // Resize block buffer. This must be done in the loop because block size grows as blocks are written. + storageWriteChunkBufferResize(buffer, bytesTotal, this->blockBuffer, this->blockSize); + // Copy as many bytes as possible into the block buffer const size_t bytesNext = bufRemains(this->blockBuffer) > bufUsed(buffer) - bytesTotal ? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/src/storage/gcs/write.c new/pgbackrest-2.59.1/src/storage/gcs/write.c --- old/pgbackrest-2.59.0/src/storage/gcs/write.c 2026-07-20 10:13:35.000000000 +0200 +++ new/pgbackrest-2.59.1/src/storage/gcs/write.c 2026-08-17 11:08:40.000000000 +0200 @@ -211,14 +211,14 @@ ASSERT(this != NULL); ASSERT(buffer != NULL); - // Resize chunk buffer - storageWriteChunkBufferResize(buffer, this->chunkBuffer, this->chunkSize); - // Continue until the write buffer has been exhausted size_t bytesTotal = 0; do { + // Resize chunk buffer. This must be done in the loop because chunk size grows as chunks are written. + storageWriteChunkBufferResize(buffer, bytesTotal, this->chunkBuffer, this->chunkSize); + // Copy as many bytes as possible into the chunk buffer const size_t bytesNext = bufRemains(this->chunkBuffer) > bufUsed(buffer) - bytesTotal ? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/src/storage/s3/write.c new/pgbackrest-2.59.1/src/storage/s3/write.c --- old/pgbackrest-2.59.0/src/storage/s3/write.c 2026-07-20 10:13:35.000000000 +0200 +++ new/pgbackrest-2.59.1/src/storage/s3/write.c 2026-08-17 11:08:40.000000000 +0200 @@ -146,14 +146,14 @@ ASSERT(this != NULL); ASSERT(buffer != NULL); - // Resize chunk buffer - storageWriteChunkBufferResize(buffer, this->partBuffer, this->partSize); - // Continue until the write buffer has been exhausted size_t bytesTotal = 0; do { + // Resize part buffer. This must be done in the loop because part size grows as parts are written. + storageWriteChunkBufferResize(buffer, bytesTotal, this->partBuffer, this->partSize); + // Copy as many bytes as possible into the part buffer const size_t bytesNext = bufRemains(this->partBuffer) > bufUsed(buffer) - bytesTotal ? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/src/storage/write.c new/pgbackrest-2.59.1/src/storage/write.c --- old/pgbackrest-2.59.0/src/storage/write.c 2026-07-20 10:13:35.000000000 +0200 +++ new/pgbackrest-2.59.1/src/storage/write.c 2026-08-17 11:08:40.000000000 +0200 @@ -252,38 +252,48 @@ /**********************************************************************************************************************************/ FN_EXTERN void -storageWriteChunkBufferResize(const Buffer *const input, Buffer *const chunk, const size_t chunkSizeMax) +storageWriteChunkBufferResize(const Buffer *const input, const size_t inputOffset, Buffer *const chunk, const size_t chunkSizeMax) { FUNCTION_TEST_BEGIN(); FUNCTION_TEST_PARAM(BUFFER, input); + FUNCTION_TEST_PARAM(SIZE, inputOffset); FUNCTION_TEST_PARAM(BUFFER, chunk); FUNCTION_TEST_PARAM(SIZE, chunkSizeMax); FUNCTION_TEST_END(); ASSERT(input != NULL); + ASSERT(inputOffset <= bufUsed(input)); ASSERT(chunk != NULL); ASSERT(chunkSizeMax > 0); - // Resize chunk buffer if it is less than max chunk size - size_t chunkSize = bufSize(chunk); + // Size required for the chunk buffer to hold the input that has not been copied yet + const size_t chunkSizeRequired = bufUsed(chunk) + (bufUsed(input) - inputOffset); - if (chunkSize < chunkSizeMax) + // Resize chunk buffer if it cannot hold the remaining input and is less than max chunk size + if (chunkSizeRequired > bufSize(chunk) && bufSize(chunk) < chunkSizeMax) { - // If the input buffer is full there is very likely more data so increase size of the chunk buffer aggressively - if (bufFull(input)) + size_t chunkSize; + + // If the input buffer is full or the chunk buffer is not empty there is very likely more data coming, so increase the chunk + // buffer size aggressively rather than resizing repeatedly as small amounts of data arrive + if (bufFull(input) || !bufEmpty(chunk)) { // If this is the first write set chunk size equal to double the input buffer size - if (chunkSize == 0) + if (bufSize(chunk) == 0) { chunkSize = bufSize(input) * 2; } // Else double chunk size so as not to resize the chunk buffer too many times since prior data must be copied else - chunkSize *= 2; + chunkSize = bufSize(chunk) * 2; + + // Chunk size must be large enough to hold the remaining input + if (chunkSize < chunkSizeRequired) + chunkSize = chunkSizeRequired; } // Else no more writes are expected so allocate only what is needed else - chunkSize += bufUsed(input) - bufRemains(chunk); + chunkSize = chunkSizeRequired; // Chunk size cannot be larger than max chunk size if (chunkSize > chunkSizeMax) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/src/storage/write.h new/pgbackrest-2.59.1/src/storage/write.h --- old/pgbackrest-2.59.0/src/storage/write.h 2026-07-20 10:13:35.000000000 +0200 +++ new/pgbackrest-2.59.1/src/storage/write.h 2026-08-17 11:08:40.000000000 +0200 @@ -132,8 +132,9 @@ FN_EXTERN size_t storageWriteChunkSize( size_t chunkSizeDefault, unsigned int defaultSplit, unsigned int maxSplit, unsigned int chunkIdx); -// Resize chunk buffer for multipart upload to an object store -FN_EXTERN void storageWriteChunkBufferResize(const Buffer *input, Buffer *const chunk, size_t chunkSizeMax); +// Resize chunk buffer for multipart upload to an object store. After the resize the chunk buffer is able to hold the input from +// inputOffset to the end of the input buffer, unless max chunk size has been reached. +FN_EXTERN void storageWriteChunkBufferResize(const Buffer *input, size_t inputOffset, Buffer *const chunk, size_t chunkSizeMax); /*********************************************************************************************************************************** Macros for function logging diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pgbackrest-2.59.0/src/version.h new/pgbackrest-2.59.1/src/version.h --- old/pgbackrest-2.59.0/src/version.h 2026-07-20 10:13:35.000000000 +0200 +++ new/pgbackrest-2.59.1/src/version.h 2026-08-17 11:08:40.000000000 +0200 @@ -35,10 +35,10 @@ ***********************************************************************************************************************************/ #define PROJECT_VERSION_MAJOR 2 #define PROJECT_VERSION_MINOR 59 -#define PROJECT_VERSION_PATCH 0 +#define PROJECT_VERSION_PATCH 1 #define PROJECT_VERSION_SUFFIX "" -#define PROJECT_VERSION "2.59.0" -#define PROJECT_VERSION_NUM 2059000 +#define PROJECT_VERSION "2.59.1" +#define PROJECT_VERSION_NUM 2059001 #endif
