diff --git a/doc/src/sgml/custom-rmgr.sgml b/doc/src/sgml/custom-rmgr.sgml
index 0d982292951..3032b2dc0d2 100644
--- a/doc/src/sgml/custom-rmgr.sgml
+++ b/doc/src/sgml/custom-rmgr.sgml
@@ -1,10 +1,10 @@
-
+Custom WAL Resource Managers
- This chapter explains the interface between the core
+ This section explains the interface between the core
PostgreSQL system and custom WAL resource
managers, which enable extensions to integrate directly with the WAL.
@@ -13,10 +13,7 @@
An extension, especially a Table Access
Method or Index Access Method, may
need to use WAL for recovery, replication, and/or Logical Decoding. Custom resource managers
- are a more flexible alternative to Generic
- WAL (which does not support logical decoding), but more complex for
- an extension to implement.
+ linkend="logicaldecoding">Logical Decoding.
To create a new custom WAL resource manager, first define an
@@ -102,4 +99,4 @@ extern void RegisterCustomRmgr(RmgrId rmid, const RmgrData *rmgr);
the custom WAL records, which may prevent the server from starting.
-
+
diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml
index 3fb0709f5df..38ec362d8f4 100644
--- a/doc/src/sgml/filelist.sgml
+++ b/doc/src/sgml/filelist.sgml
@@ -107,6 +107,7 @@
+
diff --git a/doc/src/sgml/generic-wal.sgml b/doc/src/sgml/generic-wal.sgml
index a028856d2eb..41f97ad7dc8 100644
--- a/doc/src/sgml/generic-wal.sgml
+++ b/doc/src/sgml/generic-wal.sgml
@@ -1,20 +1,12 @@
-
+Generic WAL Records
Although all built-in WAL-logged modules have their own types of WAL
records, there is also a generic WAL record type, which describes changes
- to pages in a generic way. This is useful for extensions that provide
- custom access methods.
-
-
-
- In comparison with Custom WAL Resource
- Managers, Generic WAL is simpler for an extension to implement and
- does not require the extension library to be loaded in order to apply the
- records.
+ to pages in a generic way.
@@ -171,4 +163,4 @@
-
+
diff --git a/doc/src/sgml/postgres.sgml b/doc/src/sgml/postgres.sgml
index e9a350234e7..ec9f90e283e 100644
--- a/doc/src/sgml/postgres.sgml
+++ b/doc/src/sgml/postgres.sgml
@@ -256,8 +256,7 @@ break is not needed in a wider output rendering.
&geqo;
&tableam;
&indexam;
- &generic-wal;
- &custom-rmgr;
+ &wal-for-extensions;
&indextypes;
&storage;
&transaction;
diff --git a/doc/src/sgml/wal-for-extensions.sgml b/doc/src/sgml/wal-for-extensions.sgml
new file mode 100644
index 00000000000..4c4fb29dd19
--- /dev/null
+++ b/doc/src/sgml/wal-for-extensions.sgml
@@ -0,0 +1,32 @@
+
+
+
+ Write Ahead Logging for Extensions
+
+
+ Certain extensions, principally extensions that implement custom access
+ methods, may need to perform write-ahead logging in order to ensure
+ crash-safety. PostgreSQL provides two ways
+ for extensions to achieve this goal.
+
+
+
+ First, extensions can choose to use generic
+ WAL, a special type of WAL record which describes changes to pages
+ in a generic way. This method is simple to implement and does not require
+ that an extension library be loaded in order to apply the records. However,
+ generic WAL records will be ignored when performing logical decoding.
+
+
+
+ Second, extensions can choose to use a custom
+ resource manager. This method is more flexible, supports logical
+ decoding, and can sometimes generate much smaller write-ahead log records
+ than would be possible with generic WAL. However, it is more complex for an
+ extension to implement.
+
+
+&generic-wal;
+&custom-rmgr;
+
+