mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-11 19:20:40 +08:00
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
This commit is contained in:
parent
64fe602279
commit
67e0adfb3f
@ -4403,7 +4403,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
|
||||
total size. If the estimation is disabled in
|
||||
<application>pg_basebackup</application>
|
||||
(i.e., <literal>--no-estimate-size</literal> option is specified),
|
||||
this is <literal>0</literal>.
|
||||
this is <literal>NULL</literal>.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
|
@ -546,7 +546,7 @@ PostgreSQL documentation
|
||||
amount of backup data that will be streamed, resulting in the
|
||||
<literal>backup_total</literal> column in the
|
||||
<structname>pg_stat_progress_basebackup</structname>
|
||||
to be <literal>0</literal>.
|
||||
to be <literal>NULL</literal>.
|
||||
</para>
|
||||
<para>
|
||||
Without this option, the backup will start by enumerating
|
||||
|
@ -1070,7 +1070,7 @@ CREATE VIEW pg_stat_progress_basebackup AS
|
||||
WHEN 4 THEN 'waiting for wal archiving to finish'
|
||||
WHEN 5 THEN 'transferring wal files'
|
||||
END AS phase,
|
||||
S.param2 AS backup_total,
|
||||
CASE S.param2 WHEN -1 THEN NULL ELSE S.param2 END AS backup_total,
|
||||
S.param3 AS backup_streamed,
|
||||
S.param4 AS tablespaces_total,
|
||||
S.param5 AS tablespaces_streamed
|
||||
|
@ -123,7 +123,10 @@ static long long int total_checksum_failures;
|
||||
/* Do not verify checksums. */
|
||||
static bool noverify_checksums = false;
|
||||
|
||||
/* Total amount of backup data that will be streamed */
|
||||
/*
|
||||
* Total amount of backup data that will be streamed.
|
||||
* -1 means that the size is not estimated.
|
||||
*/
|
||||
static int64 backup_total = 0;
|
||||
|
||||
/* Amount of backup data already streamed */
|
||||
@ -258,6 +261,18 @@ perform_base_backup(basebackup_options *opt)
|
||||
backup_streamed = 0;
|
||||
pgstat_progress_start_command(PROGRESS_COMMAND_BASEBACKUP, InvalidOid);
|
||||
|
||||
/*
|
||||
* If the estimation of the total backup size is disabled, make the
|
||||
* backup_total column in the view return NULL by setting the parameter to
|
||||
* -1.
|
||||
*/
|
||||
if (!opt->progress)
|
||||
{
|
||||
backup_total = -1;
|
||||
pgstat_progress_update_param(PROGRESS_BASEBACKUP_BACKUP_TOTAL,
|
||||
backup_total);
|
||||
}
|
||||
|
||||
datadirpathlen = strlen(DataDir);
|
||||
|
||||
backup_started_in_recovery = RecoveryInProgress();
|
||||
@ -1842,7 +1857,7 @@ update_basebackup_progress(int64 delta)
|
||||
* will always be wrong if WAL is included), but that's better than having
|
||||
* the done column be bigger than the total.
|
||||
*/
|
||||
if (backup_total > 0 && backup_streamed > backup_total)
|
||||
if (backup_total > -1 && backup_streamed > backup_total)
|
||||
{
|
||||
backup_total = backup_streamed;
|
||||
val[nparam++] = backup_total;
|
||||
|
@ -53,6 +53,6 @@
|
||||
*/
|
||||
|
||||
/* yyyymmddN */
|
||||
#define CATALOG_VERSION_NO 202003191
|
||||
#define CATALOG_VERSION_NO 202003241
|
||||
|
||||
#endif
|
||||
|
@ -1886,7 +1886,10 @@ pg_stat_progress_basebackup| SELECT s.pid,
|
||||
WHEN 5 THEN 'transferring wal files'::text
|
||||
ELSE NULL::text
|
||||
END AS phase,
|
||||
s.param2 AS backup_total,
|
||||
CASE s.param2
|
||||
WHEN '-1'::integer THEN NULL::bigint
|
||||
ELSE s.param2
|
||||
END AS backup_total,
|
||||
s.param3 AS backup_streamed,
|
||||
s.param4 AS tablespaces_total,
|
||||
s.param5 AS tablespaces_streamed
|
||||
|
Loading…
Reference in New Issue
Block a user