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
|
else
|
||||||
{
|
{
|
||||||
StringInfo history_file;
|
char *history_file;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Write the backup-end xlog record
|
* 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 */
|
/* Build and save the contents of the backup history file */
|
||||||
history_file = build_backup_content(state, true);
|
history_file = build_backup_content(state, true);
|
||||||
fprintf(fp, "%s", history_file->data);
|
fprintf(fp, "%s", history_file);
|
||||||
pfree(history_file->data);
|
|
||||||
pfree(history_file);
|
pfree(history_file);
|
||||||
|
|
||||||
if (fflush(fp) || ferror(fp) || FreeFile(fp))
|
if (fflush(fp) || ferror(fp) || FreeFile(fp))
|
||||||
|
@ -23,15 +23,16 @@
|
|||||||
* When ishistoryfile is true, it creates the contents for a backup history
|
* When ishistoryfile is true, it creates the contents for a backup history
|
||||||
* file, otherwise it creates contents for a backup_label file.
|
* 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)
|
build_backup_content(BackupState *state, bool ishistoryfile)
|
||||||
{
|
{
|
||||||
char startstrbuf[128];
|
char startstrbuf[128];
|
||||||
char startxlogfile[MAXFNAMELEN]; /* backup start WAL file */
|
char startxlogfile[MAXFNAMELEN]; /* backup start WAL file */
|
||||||
XLogSegNo startsegno;
|
XLogSegNo startsegno;
|
||||||
StringInfo result = makeStringInfo();
|
StringInfo result = makeStringInfo();
|
||||||
|
char *data;
|
||||||
|
|
||||||
Assert(state != NULL);
|
Assert(state != NULL);
|
||||||
|
|
||||||
@ -76,5 +77,8 @@ build_backup_content(BackupState *state, bool ishistoryfile)
|
|||||||
appendStringInfo(result, "STOP TIMELINE: %u\n", state->stoptli);
|
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};
|
Datum values[PG_BACKUP_STOP_V2_COLS] = {0};
|
||||||
bool nulls[PG_BACKUP_STOP_V2_COLS] = {0};
|
bool nulls[PG_BACKUP_STOP_V2_COLS] = {0};
|
||||||
bool waitforarchive = PG_GETARG_BOOL(0);
|
bool waitforarchive = PG_GETARG_BOOL(0);
|
||||||
StringInfo backup_label;
|
char *backup_label;
|
||||||
SessionBackupState status = get_backup_status();
|
SessionBackupState status = get_backup_status();
|
||||||
|
|
||||||
/* Initialize attributes information in the tuple descriptor */
|
/* 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);
|
backup_label = build_backup_content(backup_state, false);
|
||||||
|
|
||||||
values[0] = LSNGetDatum(backup_state->stoppoint);
|
values[0] = LSNGetDatum(backup_state->stoppoint);
|
||||||
values[1] = CStringGetTextDatum(backup_label->data);
|
values[1] = CStringGetTextDatum(backup_label);
|
||||||
values[2] = CStringGetTextDatum(tablespace_map->data);
|
values[2] = CStringGetTextDatum(tablespace_map->data);
|
||||||
|
|
||||||
/* Deallocate backup-related variables */
|
/* Deallocate backup-related variables */
|
||||||
@ -162,7 +162,6 @@ pg_backup_stop(PG_FUNCTION_ARGS)
|
|||||||
pfree(tablespace_map->data);
|
pfree(tablespace_map->data);
|
||||||
pfree(tablespace_map);
|
pfree(tablespace_map);
|
||||||
tablespace_map = NULL;
|
tablespace_map = NULL;
|
||||||
pfree(backup_label->data);
|
|
||||||
pfree(backup_label);
|
pfree(backup_label);
|
||||||
|
|
||||||
/* Returns the record as Datum */
|
/* Returns the record as Datum */
|
||||||
|
@ -317,15 +317,14 @@ perform_base_backup(basebackup_options *opt, bbsink *sink)
|
|||||||
{
|
{
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
bool sendtblspclinks = true;
|
bool sendtblspclinks = true;
|
||||||
StringInfo backup_label;
|
char *backup_label;
|
||||||
|
|
||||||
bbsink_begin_archive(sink, "base.tar");
|
bbsink_begin_archive(sink, "base.tar");
|
||||||
|
|
||||||
/* In the main tar, include the backup_label first... */
|
/* In the main tar, include the backup_label first... */
|
||||||
backup_label = build_backup_content(backup_state, false);
|
backup_label = build_backup_content(backup_state, false);
|
||||||
sendFileWithContent(sink, BACKUP_LABEL_FILE,
|
sendFileWithContent(sink, BACKUP_LABEL_FILE,
|
||||||
backup_label->data, &manifest);
|
backup_label, &manifest);
|
||||||
pfree(backup_label->data);
|
|
||||||
pfree(backup_label);
|
pfree(backup_label);
|
||||||
|
|
||||||
/* Then the tablespace_map file, if required... */
|
/* Then the tablespace_map file, if required... */
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
#define XLOG_BACKUP_H
|
#define XLOG_BACKUP_H
|
||||||
|
|
||||||
#include "access/xlogdefs.h"
|
#include "access/xlogdefs.h"
|
||||||
#include "lib/stringinfo.h"
|
|
||||||
#include "pgtime.h"
|
#include "pgtime.h"
|
||||||
|
|
||||||
/* Structure to hold backup state. */
|
/* Structure to hold backup state. */
|
||||||
@ -36,7 +35,7 @@ typedef struct BackupState
|
|||||||
pg_time_t stoptime; /* backup stop time */
|
pg_time_t stoptime; /* backup stop time */
|
||||||
} BackupState;
|
} BackupState;
|
||||||
|
|
||||||
extern StringInfo build_backup_content(BackupState *state,
|
extern char *build_backup_content(BackupState *state,
|
||||||
bool ishistoryfile);
|
bool ishistoryfile);
|
||||||
|
|
||||||
#endif /* XLOG_BACKUP_H */
|
#endif /* XLOG_BACKUP_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user