mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-18 18:44:06 +08:00
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/YzERvNPaZivHEKZJ@paquier.xyz
This commit is contained in:
parent
31d2c4716e
commit
e1e6f8f3df
@ -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))
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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... */
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user