Thread: pgsql: Custom WAL Resource Managers.

pgsql: Custom WAL Resource Managers.

From
Jeff Davis
Date:
Custom WAL Resource Managers.

Allow extensions to specify a new custom resource manager (rmgr),
which allows specialized WAL. This is meant to be used by a Table
Access Method or Index Access Method.

Prior to this commit, only Generic WAL was available, which offers
support for recovery and physical replication but not logical
replication.

Reviewed-by: Julien Rouhaud, Bharath Rupireddy, Andres Freund
Discussion: https://postgr.es/m/ed1fb2e22d15d3563ae0eb610f7b61bb15999c0a.camel%40j-davis.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/5c279a6d350205cc98f91fb8e1d3e4442a6b25d1

Modified Files
--------------
doc/src/sgml/config.sgml                  |   4 +-
doc/src/sgml/custom-rmgr.sgml             |  98 +++++++++++++++++++++++
doc/src/sgml/filelist.sgml                |   1 +
doc/src/sgml/func.sgml                    |  19 +++++
doc/src/sgml/generic-wal.sgml             |  20 ++++-
doc/src/sgml/postgres.sgml                |   1 +
doc/src/sgml/ref/pg_waldump.sgml          |   8 ++
src/backend/access/transam/rmgr.c         | 124 +++++++++++++++++++++++++++++-
src/backend/access/transam/xlogreader.c   |   2 +-
src/backend/access/transam/xlogrecovery.c |  33 +++-----
src/backend/postmaster/postmaster.c       |   6 ++
src/backend/replication/logical/decode.c  |   8 +-
src/backend/utils/init/miscinit.c         |   2 +
src/backend/utils/misc/guc.c              |  77 ++++++++++++++++---
src/bin/pg_rewind/parsexlog.c             |  11 ++-
src/bin/pg_waldump/pg_waldump.c           |  66 +++++++++++-----
src/bin/pg_waldump/rmgrdesc.c             |  61 ++++++++++++++-
src/bin/pg_waldump/rmgrdesc.h             |   2 +-
src/include/access/rmgr.h                 |  19 ++++-
src/include/access/xlog_internal.h        |  23 +++++-
src/include/catalog/catversion.h          |   2 +-
src/include/catalog/pg_proc.dat           |   7 ++
src/include/miscadmin.h                   |   1 +
src/include/utils/guc.h                   |   1 +
24 files changed, 526 insertions(+), 70 deletions(-)