diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/catalog/system_views.sql | 2 | ||||
-rw-r--r-- | src/backend/replication/basebackup.c | 19 | ||||
-rw-r--r-- | src/include/catalog/catversion.h | 2 | ||||
-rw-r--r-- | src/test/regress/expected/rules.out | 5 |
4 files changed, 23 insertions, 5 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; diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index 50069bea0e1..8aa18483e4e 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -53,6 +53,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 202003191 +#define CATALOG_VERSION_NO 202003241 #endif diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index c7304611c3a..a2077bbad4d 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -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 |