diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/catalog/system_views.sql | 2 | ||||
-rw-r--r-- | src/backend/replication/basebackup.c | 19 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index b8a3f46912d..5a6dc616301 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -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 diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c index 806d013108d..a2e28b064cd 100644 --- a/src/backend/replication/basebackup.c +++ b/src/backend/replication/basebackup.c @@ -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; |