From ea03c90a99ed07a4df8537dfa4916d7858decef9 Mon Sep 17 00:00:00 2001 From: Nathan Bossart Date: Fri, 27 Jan 2023 21:16:34 -0800 Subject: [PATCH v2 2/3] move archive module exports to dedicated header --- contrib/basic_archive/basic_archive.c | 2 +- src/backend/postmaster/pgarch.c | 1 + src/backend/postmaster/shell_archive.c | 2 +- src/backend/utils/misc/guc_tables.c | 1 + src/include/postmaster/archive_module.h | 54 +++++++++++++++++++++++++ src/include/postmaster/pgarch.h | 39 ------------------ 6 files changed, 58 insertions(+), 41 deletions(-) create mode 100644 src/include/postmaster/archive_module.h diff --git a/contrib/basic_archive/basic_archive.c b/contrib/basic_archive/basic_archive.c index 3d29711a31..87bbb2174d 100644 --- a/contrib/basic_archive/basic_archive.c +++ b/contrib/basic_archive/basic_archive.c @@ -32,7 +32,7 @@ #include "common/int.h" #include "miscadmin.h" -#include "postmaster/pgarch.h" +#include "postmaster/archive_module.h" #include "storage/copydir.h" #include "storage/fd.h" #include "utils/guc.h" diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c index 36800127e8..eca02d5e74 100644 --- a/src/backend/postmaster/pgarch.c +++ b/src/backend/postmaster/pgarch.c @@ -34,6 +34,7 @@ #include "lib/binaryheap.h" #include "libpq/pqsignal.h" #include "pgstat.h" +#include "postmaster/archive_module.h" #include "postmaster/interrupt.h" #include "postmaster/pgarch.h" #include "storage/fd.h" diff --git a/src/backend/postmaster/shell_archive.c b/src/backend/postmaster/shell_archive.c index 806b81c3f2..b64297e3bb 100644 --- a/src/backend/postmaster/shell_archive.c +++ b/src/backend/postmaster/shell_archive.c @@ -20,7 +20,7 @@ #include "access/xlog.h" #include "common/percentrepl.h" #include "pgstat.h" -#include "postmaster/pgarch.h" +#include "postmaster/archive_module.h" static bool shell_archive_configured(void); static bool shell_archive_file(const char *file, const char *path); diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c index c5a95f5dcc..663c6e0011 100644 --- a/src/backend/utils/misc/guc_tables.c +++ b/src/backend/utils/misc/guc_tables.c @@ -52,6 +52,7 @@ #include "parser/parse_expr.h" #include "parser/parser.h" #include "pgstat.h" +#include "postmaster/archive_module.h" #include "postmaster/autovacuum.h" #include "postmaster/bgworker_internals.h" #include "postmaster/bgwriter.h" diff --git a/src/include/postmaster/archive_module.h b/src/include/postmaster/archive_module.h new file mode 100644 index 0000000000..099050c1ca --- /dev/null +++ b/src/include/postmaster/archive_module.h @@ -0,0 +1,54 @@ +/*------------------------------------------------------------------------- + * + * archive_module.h + * Exports for archive modules. + * + * Copyright (c) 2022-2023, PostgreSQL Global Development Group + * + * src/include/postmaster/archive_module.h + * + *------------------------------------------------------------------------- + */ +#ifndef _ARCHIVE_MODULE_H +#define _ARCHIVE_MODULE_H + +/* + * The value of the archive_library GUC. + */ +extern PGDLLIMPORT char *XLogArchiveLibrary; + +/* + * Archive module callbacks + * + * These callback functions should be defined by archive libraries and returned + * via _PG_archive_module_init(). ArchiveFileCB is the only required callback. + * For more information about the purpose of each callback, refer to the + * archive modules documentation. + */ +typedef bool (*ArchiveCheckConfiguredCB) (void); +typedef bool (*ArchiveFileCB) (const char *file, const char *path); +typedef void (*ArchiveShutdownCB) (void); + +typedef struct ArchiveModuleCallbacks +{ + ArchiveCheckConfiguredCB check_configured_cb; + ArchiveFileCB archive_file_cb; + ArchiveShutdownCB shutdown_cb; +} ArchiveModuleCallbacks; + +/* + * Type of the shared library symbol _PG_archive_module_init that is looked + * up when loading an archive library. + */ +typedef void (*ArchiveModuleInit) (ArchiveModuleCallbacks *cb); + +extern PGDLLEXPORT void _PG_archive_module_init(ArchiveModuleCallbacks *cb); + +/* + * Since the logic for archiving via a shell command is in the core server + * and does not need to be loaded via a shared library, it has a special + * initialization function. + */ +extern void shell_archive_init(ArchiveModuleCallbacks *cb); + +#endif /* _ARCHIVE_MODULE_H */ diff --git a/src/include/postmaster/pgarch.h b/src/include/postmaster/pgarch.h index bcd51dfad6..3bd4fac71e 100644 --- a/src/include/postmaster/pgarch.h +++ b/src/include/postmaster/pgarch.h @@ -33,43 +33,4 @@ extern void PgArchiverMain(void) pg_attribute_noreturn(); extern void PgArchWakeup(void); extern void PgArchForceDirScan(void); -/* - * The value of the archive_library GUC. - */ -extern PGDLLIMPORT char *XLogArchiveLibrary; - -/* - * Archive module callbacks - * - * These callback functions should be defined by archive libraries and returned - * via _PG_archive_module_init(). ArchiveFileCB is the only required callback. - * For more information about the purpose of each callback, refer to the - * archive modules documentation. - */ -typedef bool (*ArchiveCheckConfiguredCB) (void); -typedef bool (*ArchiveFileCB) (const char *file, const char *path); -typedef void (*ArchiveShutdownCB) (void); - -typedef struct ArchiveModuleCallbacks -{ - ArchiveCheckConfiguredCB check_configured_cb; - ArchiveFileCB archive_file_cb; - ArchiveShutdownCB shutdown_cb; -} ArchiveModuleCallbacks; - -/* - * Type of the shared library symbol _PG_archive_module_init that is looked - * up when loading an archive library. - */ -typedef void (*ArchiveModuleInit) (ArchiveModuleCallbacks *cb); - -extern PGDLLEXPORT void _PG_archive_module_init(ArchiveModuleCallbacks *cb); - -/* - * Since the logic for archiving via a shell command is in the core server - * and does not need to be loaded via a shared library, it has a special - * initialization function. - */ -extern void shell_archive_init(ArchiveModuleCallbacks *cb); - #endif /* _PGARCH_H */ -- 2.25.1