本節描述了每個邏輯複製訊息的詳細格式。這些訊息可以由複製槽 SQL 介面返回,也可以由 walsender 發送。對於 walsender,它們被封裝在複製協定 WAL 訊息中,如第 53.4 節中所述,並且通常遵循與實體複製相同的訊息流。
將訊息識別為開始訊息。
交易的最終 LSN。
交易的 Commit 時間戳記。該值是自 PostgreSQL epoch (2000-01-01) 以來的微秒數。
交易的 Xid。
將訊息識別為邏輯解碼訊息。
交易的 Xid(僅適用於串流交易)。此欄位自協定版本 2 起可用。
旗標;0 表示沒有旗標,1 表示邏輯解碼訊息是事務性的。
邏輯解碼訊息的 LSN。
邏輯解碼訊息的前置詞。
內容的長度。
n
邏輯解碼訊息的內容。
將訊息識別為 Commit 訊息。
旗標;目前未使用。
Commit 的 LSN。
交易的結束 LSN。
交易的 Commit 時間戳記。該值是自 PostgreSQL epoch (2000-01-01) 以來的微秒數。
將訊息識別為來源訊息。
來源伺服器上 Commit 的 LSN。
來源的名稱。
請注意,單個交易中可能存在多個 Origin 訊息。
將訊息識別為關聯訊息。
交易的 Xid(僅適用於串流交易)。此欄位自協定版本 2 起可用。
關聯的 OID。
命名空間(pg_catalog
的空字串)。
關聯名稱。
關聯的副本識別設定(與 relreplident
在 pg_class
中相同)。
欄位的數量。
接下來,對於發布中包含的每個欄位(除了產生的欄位)都會顯示以下訊息部分
欄位的旗標。目前可以是 0 表示沒有旗標,或 1 表示該欄位是索引鍵的一部分。
欄位的名稱。
欄位資料類型的 OID。
欄位的類型修飾符 (atttypmod
)。
將訊息識別為類型訊息。
交易的 Xid(僅適用於串流交易)。此欄位自協定版本 2 起可用。
資料類型的 OID。
命名空間(pg_catalog
的空字串)。
資料類型的名稱。
將訊息識別為插入訊息。
交易的 Xid(僅適用於串流交易)。此欄位自協定版本 2 起可用。
與關聯訊息中的 ID 對應的關聯的 OID。
將以下 TupleData 訊息識別為新元組。
表示新元組內容的 TupleData 訊息部分。
將訊息識別為更新訊息。
交易的 Xid(僅適用於串流交易)。此欄位自協定版本 2 起可用。
與關聯訊息中的 ID 對應的關聯的 OID。
將以下 TupleData 子訊息識別為索引鍵。 此欄位是可選的,僅當更新更改了 REPLICA IDENTITY 索引中任何欄位的資料時才會顯示。
將以下 TupleData 子訊息識別為舊元組。 此欄位是可選的,僅當更新發生的表格的 REPLICA IDENTITY 設定為 FULL 時才會顯示。
表示舊元組或主鍵內容的 TupleData 訊息部分。 僅當存在先前的 'O' 或 'K' 部分時才會顯示。
將以下 TupleData 訊息識別為新元組。
表示新元組內容的 TupleData 訊息部分。
更新訊息可能包含 'K' 訊息部分或 'O' 訊息部分,或者兩者都不包含,但永遠不會同時包含兩者。
將訊息識別為刪除訊息。
交易的 Xid(僅適用於串流交易)。此欄位自協定版本 2 起可用。
與關聯訊息中的 ID 對應的關聯的 OID。
將以下 TupleData 子訊息識別為索引鍵。 如果刪除發生的表格使用索引作為 REPLICA IDENTITY,則此欄位會顯示。
將以下 TupleData 訊息識別為舊元組。 如果刪除發生的表格的 REPLICA IDENTITY 設定為 FULL,則此欄位會顯示。
TupleData訊息部分,代表舊的 Tuple 或主鍵的內容,取決於前一個欄位。
Delete 訊息可能包含 'K' 訊息部分或 'O' 訊息部分,但永遠不會同時包含兩者。
識別此訊息為截斷 (truncate) 訊息。
交易的 Xid(僅適用於串流交易)。此欄位自協定版本 2 起可用。
關聯的數量
TRUNCATE
的選項位元:1 代表 CASCADE
,2 代表 RESTART IDENTITY
關聯的 OID,對應於關聯訊息中的 ID。此欄位會為每個關聯重複。
以下訊息(Stream Start、Stream Stop、Stream Commit 和 Stream Abort)自協定版本 2 起可用。
識別此訊息為串流開始訊息。
交易的 Xid。
值為 1 表示這是此 XID 的第一個串流片段,0 表示任何其他串流片段。
識別此訊息為串流停止訊息。
識別此訊息為串流提交訊息。
交易的 Xid。
旗標;目前未使用。
Commit 的 LSN。
交易的結束 LSN。
交易的 Commit 時間戳記。該值是自 PostgreSQL epoch (2000-01-01) 以來的微秒數。
識別此訊息為串流中止訊息。
交易的 Xid。
子交易的 Xid (對於頂層交易,將與交易的 xid 相同)。
中止的 LSN。此欄位自協定版本 4 起可用。
交易的中止時間戳記。該值為自 PostgreSQL epoch (2000-01-01) 以來的微秒數。此欄位自協定版本 4 起可用。
以下訊息(Begin Prepare、Prepare、Commit Prepared、Rollback Prepared、Stream Prepare)自協定版本 3 起可用。
識別此訊息為準備交易訊息的開始。
準備的 LSN。
準備交易的結束 LSN。
交易的準備時間戳記。該值為自 PostgreSQL epoch (2000-01-01) 以來的微秒數。
交易的 Xid。
準備交易的使用者定義 GID。
識別此訊息為準備交易訊息。
旗標;目前未使用。
準備的 LSN。
準備交易的結束 LSN。
交易的準備時間戳記。該值為自 PostgreSQL epoch (2000-01-01) 以來的微秒數。
交易的 Xid。
準備交易的使用者定義 GID。
識別此訊息為準備交易訊息的提交。
旗標;目前未使用。
準備交易提交的 LSN。
準備交易提交的結束 LSN。
交易的 Commit 時間戳記。該值是自 PostgreSQL epoch (2000-01-01) 以來的微秒數。
交易的 Xid。
準備交易的使用者定義 GID。
識別此訊息為準備交易訊息的回滾。
旗標;目前未使用。
準備交易的結束 LSN。
準備交易回滾的結束 LSN。
交易的準備時間戳記。該值為自 PostgreSQL epoch (2000-01-01) 以來的微秒數。
交易的回滾時間戳記。該值為自 PostgreSQL epoch (2000-01-01) 以來的微秒數。
交易的 Xid。
準備交易的使用者定義 GID。
識別此訊息為串流準備交易訊息。
旗標;目前未使用。
準備的 LSN。
準備交易的結束 LSN。
交易的準備時間戳記。該值為自 PostgreSQL epoch (2000-01-01) 以來的微秒數。
交易的 Xid。
準備交易的使用者定義 GID。
以下訊息部分由上述訊息共享。
欄位的數量。
接下來,每個欄位 (除了產生的欄位) 都會顯示以下子訊息之一
將資料識別為 NULL 值。
或者
識別未變更的 TOASTed 值 (實際值不會傳送)。
或者
將資料識別為文字格式值。
或者
將資料識別為二進位格式值。
欄位值的長度。
n
欄位的值,以二進位或文字格式表示。(如先前的格式位元組中所指定)。 n
是上述長度。
如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用此表格報告文件問題。