diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 3177abcd918..67a00493606 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -1623,7 +1623,10 @@ The commands accepted in walsender mode are:
Requests the server to send over the timeline history file for timeline
tli. Server replies with a
- result set of a single row, containing two fields:
+ result set of a single row, containing two fields. While the
+ fields are labeled as text and bytea,
+ they effectively return raw bytes, with no escaping or encoding
+ conversion:
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index 907fdad7752..0e3b8d3694f 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -463,6 +463,10 @@ SendTimeLineHistory(TimeLineHistoryCmd *cmd)
pq_sendstring(&buf, "content"); /* col name */
pq_sendint(&buf, 0, 4); /* table oid */
pq_sendint(&buf, 0, 2); /* attnum */
+ /*
+ * While this is labeled as BYTEAOID, it is the same output format
+ * as TEXTOID above.
+ */
pq_sendint(&buf, BYTEAOID, 4); /* type oid */
pq_sendint(&buf, -1, 2); /* typlen */
pq_sendint(&buf, 0, 4); /* typmod */