mirror of
https://github.com/postgres/postgres.git
synced 2025-08-24 09:27:52 +03:00
Allow archiving via loadable modules.
Running a shell command for each file to be archived has a lot of overhead and may not offer as much error checking as you want, or the exact semantics that you want. So, offer the option to call a loadable module for each file to be archived, rather than running a shell command. Also, add a 'basic_archive' contrib module as an example implementation that archives to a local directory. Nathan Bossart, with a little bit of kibitzing by me. Discussion: http://postgr.es/m/20220202224433.GA1036711@nathanxps13
This commit is contained in:
@@ -2,6 +2,10 @@
|
||||
*
|
||||
* shell_archive.c
|
||||
*
|
||||
* This archiving function uses a user-specified shell command (the
|
||||
* archive_command GUC) to copy write-ahead log files. It is used as the
|
||||
* default, but other modules may define their own custom archiving logic.
|
||||
*
|
||||
* Copyright (c) 2022, PostgreSQL Global Development Group
|
||||
*
|
||||
* IDENTIFICATION
|
||||
@@ -17,7 +21,25 @@
|
||||
#include "pgstat.h"
|
||||
#include "postmaster/pgarch.h"
|
||||
|
||||
bool
|
||||
static bool shell_archive_configured(void);
|
||||
static bool shell_archive_file(const char *file, const char *path);
|
||||
|
||||
void
|
||||
shell_archive_init(ArchiveModuleCallbacks *cb)
|
||||
{
|
||||
AssertVariableIsOfType(&shell_archive_init, ArchiveModuleInit);
|
||||
|
||||
cb->check_configured_cb = shell_archive_configured;
|
||||
cb->archive_file_cb = shell_archive_file;
|
||||
}
|
||||
|
||||
static bool
|
||||
shell_archive_configured(void)
|
||||
{
|
||||
return XLogArchiveCommand[0] != '\0';
|
||||
}
|
||||
|
||||
static bool
|
||||
shell_archive_file(const char *file, const char *path)
|
||||
{
|
||||
char xlogarchcmd[MAXPGPATH];
|
||||
|
Reference in New Issue
Block a user