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 по дате отправления:

Предыдущее
От: Thomas Munro
Дата:
Сообщение: pgsql: Remove obsolete platforms from ps_status.c.
Следующее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: Fix incorrect format placeholder