summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier2022-09-27 00:15:07 +0000
committerMichael Paquier2022-09-27 00:15:07 +0000
commite1e6f8f3dfe141839220875270a81ad3a719e0b6 (patch)
treed3bed4b143fa09b7499bf5e1eb3fa150b7ceca00
parent31d2c4716e6b429353bb81cebaa0f2b1267823d6 (diff)
Remove dependency to StringInfo in xlogbackup.{c.h}
This was used as the returned result type of the generated contents for the backup_label and backup history files. This is replaced by a simple string, reducing the cleanup burden of all the callers of build_backup_content(). Reviewed-by: Bharath Rupireddy Discussion: https://postgr.es/m/[email protected]
-rw-r--r--src/backend/access/transam/xlog.c5
-rw-r--r--src/backend/access/transam/xlogbackup.c10
-rw-r--r--src/backend/access/transam/xlogfuncs.c5
-rw-r--r--src/backend/backup/basebackup.c5
-rw-r--r--src/include/access/xlogbackup.h5
5 files changed, 15 insertions, 15 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 7606ee128a9..1dd6df0fe15 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -8711,7 +8711,7 @@ do_pg_backup_stop(BackupState *state, bool waitforarchive)
}
else
{
- StringInfo history_file;
+ char *history_file;
/*
* Write the backup-end xlog record
@@ -8751,8 +8751,7 @@ do_pg_backup_stop(BackupState *state, bool waitforarchive)
/* Build and save the contents of the backup history file */
history_file = build_backup_content(state, true);
- fprintf(fp, "%s", history_file->data);
- pfree(history_file->data);
+ fprintf(fp, "%s", history_file);
pfree(history_file);
if (fflush(fp) || ferror(fp) || FreeFile(fp))
diff --git a/src/backend/access/transam/xlogbackup.c b/src/backend/access/transam/xlogbackup.c
index c01c1f90102..90b5273b028 100644
--- a/src/backend/access/transam/xlogbackup.c
+++ b/src/backend/access/transam/xlogbackup.c
@@ -23,15 +23,16 @@
* When ishistoryfile is true, it creates the contents for a backup history
* file, otherwise it creates contents for a backup_label file.
*
- * Returns the result generated as a palloc'd StringInfo.
+ * Returns the result generated as a palloc'd string.
*/
-StringInfo
+char *
build_backup_content(BackupState *state, bool ishistoryfile)
{
char startstrbuf[128];
char startxlogfile[MAXFNAMELEN]; /* backup start WAL file */
XLogSegNo startsegno;
StringInfo result = makeStringInfo();
+ char *data;
Assert(state != NULL);
@@ -76,5 +77,8 @@ build_backup_content(BackupState *state, bool ishistoryfile)
appendStringInfo(result, "STOP TIMELINE: %u\n", state->stoptli);
}
- return result;
+ data = result->data;
+ pfree(result);
+
+ return data;
}
diff --git a/src/backend/access/transam/xlogfuncs.c b/src/backend/access/transam/xlogfuncs.c
index f724b18733a..a801a94fe85 100644
--- a/src/backend/access/transam/xlogfuncs.c
+++ b/src/backend/access/transam/xlogfuncs.c
@@ -130,7 +130,7 @@ pg_backup_stop(PG_FUNCTION_ARGS)
Datum values[PG_BACKUP_STOP_V2_COLS] = {0};
bool nulls[PG_BACKUP_STOP_V2_COLS] = {0};
bool waitforarchive = PG_GETARG_BOOL(0);
- StringInfo backup_label;
+ char *backup_label;
SessionBackupState status = get_backup_status();
/* Initialize attributes information in the tuple descriptor */
@@ -153,7 +153,7 @@ pg_backup_stop(PG_FUNCTION_ARGS)
backup_label = build_backup_content(backup_state, false);
values[0] = LSNGetDatum(backup_state->stoppoint);
- values[1] = CStringGetTextDatum(backup_label->data);
+ values[1] = CStringGetTextDatum(backup_label);
values[2] = CStringGetTextDatum(tablespace_map->data);
/* Deallocate backup-related variables */
@@ -162,7 +162,6 @@ pg_backup_stop(PG_FUNCTION_ARGS)
pfree(tablespace_map->data);
pfree(tablespace_map);
tablespace_map = NULL;
- pfree(backup_label->data);
pfree(backup_label);
/* Returns the record as Datum */
diff --git a/src/backend/backup/basebackup.c b/src/backend/backup/basebackup.c
index 495bbb506a9..411cac9be3f 100644
--- a/src/backend/backup/basebackup.c
+++ b/src/backend/backup/basebackup.c
@@ -317,15 +317,14 @@ perform_base_backup(basebackup_options *opt, bbsink *sink)
{
struct stat statbuf;
bool sendtblspclinks = true;
- StringInfo backup_label;
+ char *backup_label;
bbsink_begin_archive(sink, "base.tar");
/* In the main tar, include the backup_label first... */
backup_label = build_backup_content(backup_state, false);
sendFileWithContent(sink, BACKUP_LABEL_FILE,
- backup_label->data, &manifest);
- pfree(backup_label->data);
+ backup_label, &manifest);
pfree(backup_label);
/* Then the tablespace_map file, if required... */
diff --git a/src/include/access/xlogbackup.h b/src/include/access/xlogbackup.h
index cb15b8b80a3..8ec3d88b0a8 100644
--- a/src/include/access/xlogbackup.h
+++ b/src/include/access/xlogbackup.h
@@ -15,7 +15,6 @@
#define XLOG_BACKUP_H
#include "access/xlogdefs.h"
-#include "lib/stringinfo.h"
#include "pgtime.h"
/* Structure to hold backup state. */
@@ -36,7 +35,7 @@ typedef struct BackupState
pg_time_t stoptime; /* backup stop time */
} BackupState;
-extern StringInfo build_backup_content(BackupState *state,
- bool ishistoryfile);
+extern char *build_backup_content(BackupState *state,
+ bool ishistoryfile);
#endif /* XLOG_BACKUP_H */