Skip to content

Commit 67e0adf

Browse files
committed
Report NULL as total backup size if it's not estimated.
Previously 0 was reported in pg_stat_progress_basebackup.total_backup if the total backup size was not estimated. Per discussion, our consensus is that NULL is better choise as the value in total_backup in that case. So this commit makes pg_stat_progress_basebackup view report NULL in total_backup column if the estimation is disabled. Bump catversion. Author: Fujii Masao Reviewed-by: Amit Langote, Magnus Hagander, Alvaro Herrera Discussion: https://postgr.es/m/CABUevExnhOD89zBDuPvfAAh243RzNpwCPEWNLtMYpKHMB8gbAQ@mail.gmail.com
1 parent 64fe602 commit 67e0adf

File tree

6 files changed

+25
-7
lines changed

6 files changed

+25
-7
lines changed

doc/src/sgml/monitoring.sgml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4403,7 +4403,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
44034403
total size. If the estimation is disabled in
44044404
<application>pg_basebackup</application>
44054405
(i.e., <literal>--no-estimate-size</literal> option is specified),
4406-
this is <literal>0</literal>.
4406+
this is <literal>NULL</literal>.
44074407
</entry>
44084408
</row>
44094409
<row>

doc/src/sgml/ref/pg_basebackup.sgml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ PostgreSQL documentation
546546
amount of backup data that will be streamed, resulting in the
547547
<literal>backup_total</literal> column in the
548548
<structname>pg_stat_progress_basebackup</structname>
549-
to be <literal>0</literal>.
549+
to be <literal>NULL</literal>.
550550
</para>
551551
<para>
552552
Without this option, the backup will start by enumerating

src/backend/catalog/system_views.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1070,7 +1070,7 @@ CREATE VIEW pg_stat_progress_basebackup AS
10701070
WHEN 4 THEN 'waiting for wal archiving to finish'
10711071
WHEN 5 THEN 'transferring wal files'
10721072
END AS phase,
1073-
S.param2 AS backup_total,
1073+
CASE S.param2 WHEN -1 THEN NULL ELSE S.param2 END AS backup_total,
10741074
S.param3 AS backup_streamed,
10751075
S.param4 AS tablespaces_total,
10761076
S.param5 AS tablespaces_streamed

src/backend/replication/basebackup.c

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,10 @@ static long long int total_checksum_failures;
123123
/* Do not verify checksums. */
124124
static bool noverify_checksums = false;
125125

126-
/* Total amount of backup data that will be streamed */
126+
/*
127+
* Total amount of backup data that will be streamed.
128+
* -1 means that the size is not estimated.
129+
*/
127130
static int64 backup_total = 0;
128131

129132
/* Amount of backup data already streamed */
@@ -258,6 +261,18 @@ perform_base_backup(basebackup_options *opt)
258261
backup_streamed = 0;
259262
pgstat_progress_start_command(PROGRESS_COMMAND_BASEBACKUP, InvalidOid);
260263

264+
/*
265+
* If the estimation of the total backup size is disabled, make the
266+
* backup_total column in the view return NULL by setting the parameter to
267+
* -1.
268+
*/
269+
if (!opt->progress)
270+
{
271+
backup_total = -1;
272+
pgstat_progress_update_param(PROGRESS_BASEBACKUP_BACKUP_TOTAL,
273+
backup_total);
274+
}
275+
261276
datadirpathlen = strlen(DataDir);
262277

263278
backup_started_in_recovery = RecoveryInProgress();
@@ -1842,7 +1857,7 @@ update_basebackup_progress(int64 delta)
18421857
* will always be wrong if WAL is included), but that's better than having
18431858
* the done column be bigger than the total.
18441859
*/
1845-
if (backup_total > 0 && backup_streamed > backup_total)
1860+
if (backup_total > -1 && backup_streamed > backup_total)
18461861
{
18471862
backup_total = backup_streamed;
18481863
val[nparam++] = backup_total;

src/include/catalog/catversion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,6 @@
5353
*/
5454

5555
/* yyyymmddN */
56-
#define CATALOG_VERSION_NO 202003191
56+
#define CATALOG_VERSION_NO 202003241
5757

5858
#endif

src/test/regress/expected/rules.out

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1886,7 +1886,10 @@ pg_stat_progress_basebackup| SELECT s.pid,
18861886
WHEN 5 THEN 'transferring wal files'::text
18871887
ELSE NULL::text
18881888
END AS phase,
1889-
s.param2 AS backup_total,
1889+
CASE s.param2
1890+
WHEN '-1'::integer THEN NULL::bigint
1891+
ELSE s.param2
1892+
END AS backup_total,
18901893
s.param3 AS backup_streamed,
18911894
s.param4 AS tablespaces_total,
18921895
s.param5 AS tablespaces_streamed

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy