aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2016-09-03 16:19:11 +0100
committerSimon Riggs <simon@2ndQuadrant.com>2016-09-03 16:19:11 +0100
commit0c40ab3a88edf654165e562deee0c303a6ebef5e (patch)
treed896c83131616bbf91a953b829a2c4ddffdbbd51 /doc/src
parent39b691f251167bbb3d49203abfb39d430f68f411 (diff)
downloadpostgresql-0c40ab3a88edf654165e562deee0c303a6ebef5e.tar.gz
postgresql-0c40ab3a88edf654165e562deee0c303a6ebef5e.zip
Fix wording of logical decoding concepts
Be specific about conditions under which we emit >1 copy of message Craig Ringer
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/logicaldecoding.sgml18
1 files changed, 15 insertions, 3 deletions
diff --git a/doc/src/sgml/logicaldecoding.sgml b/doc/src/sgml/logicaldecoding.sgml
index c42082002e0..484915d0422 100644
--- a/doc/src/sgml/logicaldecoding.sgml
+++ b/doc/src/sgml/logicaldecoding.sgml
@@ -12,7 +12,6 @@
<para>
Changes are sent out in streams identified by logical replication slots.
- Each stream outputs each change exactly once.
</para>
<para>
@@ -204,8 +203,7 @@ $ pg_recvlogical -d postgres --slot test --drop-slot
In the context of logical replication, a slot represents a stream of
changes that can be replayed to a client in the order they were made on
the origin server. Each slot streams a sequence of changes from a single
- database, sending each change exactly once (except when peeking forward
- in the stream).
+ database.
</para>
<note>
@@ -222,6 +220,20 @@ $ pg_recvlogical -d postgres --slot test --drop-slot
</para>
<para>
+ A logical slot will emit each change just once in normal operation.
+ The current position of each slot is persisted only at checkpoint, so in
+ the case of a crash the slot may return to an earlier LSN, which will
+ then cause recent changes to be resent when the server restarts.
+ Logical decoding clients are responsible for avoiding ill effects from
+ handling the same message more than once. Clients may wish to record
+ the last LSN they saw when decoding and skip over any repeated data or
+ (when using the replication protocol) request that decoding start from
+ that LSN rather than letting the server determine the start point.
+ The Replication Progress Tracking feature is designed for this purpose,
+ refer to <link linkend="replication-origins">replication origins</link>.
+ </para>
+
+ <para>
Multiple independent slots may exist for a single database. Each slot has
its own state, allowing different consumers to receive changes from
different points in the database change stream. For most applications, a