pgsql: Redesign archive modules
От | Michael Paquier |
---|---|
Тема | pgsql: Redesign archive modules |
Дата | |
Msg-id | E1pStLj-001XOc-AN@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Redesign archive modules A new callback named startup_cb, called shortly after a module is loaded, is added. This makes possible the initialization of any additional state data required by a module. This initial state data can be saved in a ArchiveModuleState, that is now passed down to all the callbacks that can be defined in a module. With this design, it is possible to have a per-module state, aimed at opening the door to the support of more than one archive module. The initialization of the callbacks is changed so as _PG_archive_module_init() does not anymore give in input a ArchiveModuleCallbacks that a module has to fill in with callback definitions. Instead, a module now needs to return a const ArchiveModuleCallbacks. All the structure and callback definitions of archive modules are moved into their own header, named archive_module.h, from pgarch.h. Command-based archiving follows the same line, with a new set of files named shell_archive.{c,h}. There are a few more items that are under discussion to improve the design of archive modules, like the fact that basic_archive calls sigsetjmp() by itself to define its own error handling flow. These will be adjusted later, the changes done here cover already a good portion of what has been discussed. Any modules created for v15 will need to be adjusted to this new design. Author: Nathan Bossart Reviewed-by: Andres Freund Discussion: https://postgr.es/m/20230130194810.6fztfgbn32e7qarj@awork3.anarazel.de Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/35739b87dcfef9fc0186aca659f262746fecd778 Modified Files -------------- contrib/basic_archive/basic_archive.c | 86 ++++++++++++++++++---- doc/src/sgml/archive-modules.sgml | 35 +++++++-- src/backend/Makefile | 2 +- src/backend/archive/Makefile | 18 +++++ src/backend/archive/meson.build | 5 ++ .../{postmaster => archive}/shell_archive.c | 41 +++++++---- src/backend/meson.build | 1 + src/backend/postmaster/Makefile | 1 - src/backend/postmaster/meson.build | 1 - src/backend/postmaster/pgarch.c | 27 ++++--- src/backend/utils/misc/guc_tables.c | 1 + src/include/archive/archive_module.h | 59 +++++++++++++++ src/include/archive/shell_archive.h | 24 ++++++ src/include/postmaster/pgarch.h | 39 ---------- src/tools/pgindent/typedefs.list | 1 + 15 files changed, 252 insertions(+), 89 deletions(-)
В списке pgsql-committers по дате отправления: