diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index b692648fca4..84ddab09984 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -2891,13 +2891,25 @@ The commands accepted in replication mode are:
- Every DML message contains an arbitrary relation ID, which can be mapped to
- an ID in the Relation messages. The Relation messages describe the schema of the
- given relation. The Relation message is sent for a given relation either
- because it is the first time we send a DML message for given relation in the
- current session or because the relation definition has changed since the
- last Relation message was sent for it. The protocol assumes that the client
- is capable of caching the metadata for as many relations as needed.
+ Every DML message contains a relation OID, identifying the publisher's
+ relation that was acted on. Before the first DML message for a given
+ relation OID, a Relation message will be sent, describing the schema of
+ that relation. Subsequently, a new Relation message will be sent if
+ the relation's definition has changed since the last Relation message
+ was sent for it. (The protocol assumes that the client is capable of
+ remembering this metadata for as many relations as needed.)
+
+
+
+ Relation messages identify column types by their OIDs. In the case
+ of a built-in type, it is assumed that the client can look up that
+ type OID locally, so no additional data is needed. For a non-built-in
+ type OID, a Type message will be sent before the Relation message,
+ to provide the type name associated with that OID. Thus, a client that
+ needs to specifically identify the types of relation columns should
+ cache the contents of Type messages, and first consult that cache to
+ see if the type OID is defined there. If not, look up the type OID
+ locally.
diff --git a/src/backend/replication/logical/worker.c b/src/backend/replication/logical/worker.c
index f67d4ce2328..c04abd79e74 100644
--- a/src/backend/replication/logical/worker.c
+++ b/src/backend/replication/logical/worker.c
@@ -617,7 +617,10 @@ apply_handle_relation(StringInfo s)
/*
* Handle TYPE message.
*
- * This is now vestigial; we read the info and discard it.
+ * This implementation pays no attention to TYPE messages; we expect the user
+ * to have set things up so that the incoming data is acceptable to the input
+ * functions for the locally subscribed tables. Hence, we just read and
+ * discard the message.
*/
static void
apply_handle_type(StringInfo s)