本節描述每個邏輯複製訊息的詳細格式。這些訊息可以由複製槽 SQL 介面傳回,也可以由 walsender 發送。在 walsender 的情況下,它們被封裝在複製協定 WAL 訊息中,如第 53.4 節中所述,並且通常遵守與實體複製相同的訊息流程。
將訊息識別為 begin 訊息。
交易的最終 LSN。
交易的提交時間戳。該值是自 PostgreSQL epoch (2000-01-01) 以來的微秒數。
交易的 Xid。
將訊息識別為邏輯解碼訊息。
交易的 Xid(僅適用於串流交易)。自協定版本 2 起可用。
旗標;0 表示沒有旗標,1 表示邏輯解碼訊息是事務性的。
邏輯解碼訊息的 LSN。
邏輯解碼訊息的前綴。
內容的長度。
n
邏輯解碼訊息的內容。
將訊息識別為 commit 訊息。
旗標;目前未使用。
提交的 LSN。
交易的結束 LSN。
交易的提交時間戳。該值是自 PostgreSQL epoch (2000-01-01) 以來的微秒數。
將訊息識別為 origin 訊息。
原始伺服器上提交的 LSN。
原始的名稱。
請注意,在單個交易中可以有多個 Origin 訊息。
將訊息識別為 relation 訊息。
交易的 Xid(僅適用於串流交易)。自協定版本 2 起可用。
關係的 OID。
命名空間(對於 pg_catalog
,則為空字串)。
關係名稱。
關係的副本身分設定(與 relreplident
在 pg_class
中相同)。
欄位的數量。
接下來,對於發布中包含的每個欄位(除了生成的欄位),都會出現以下訊息部分。
欄位的旗標。目前可以是 0 表示沒有旗標,也可以是 1 表示該欄位是索引鍵的一部分。
欄位的名稱。
欄位資料類型的 OID。
欄位的類型修飾符 (atttypmod
)。
將訊息識別為 type 訊息。
交易的 Xid(僅適用於串流交易)。自協定版本 2 起可用。
資料類型的 OID。
命名空間(對於 pg_catalog
,則為空字串)。
資料類型的名稱。
將訊息識別為 insert 訊息。
交易的 Xid(僅適用於串流交易)。自協定版本 2 起可用。
與 relation 訊息中 ID 對應的關係的 OID。
將以下 TupleData 訊息識別為新元組。
TupleData 訊息部分,代表新元組的內容。
將訊息識別為 update 訊息。
交易的 Xid(僅適用於串流交易)。自協定版本 2 起可用。
與 relation 訊息中 ID 對應的關係的 OID。
將以下 TupleData 子訊息識別為鍵。 只有當更新變更了 REPLICA IDENTITY 索引中的任何欄位的資料時,此欄位才是可選的。
將以下 TupleData 子訊息識別為舊元組。 只有當更新發生的表格的 REPLICA IDENTITY 設置為 FULL 時,此欄位才是可選的。
TupleData 訊息部分,代表舊元組或主鍵的內容。 只有在存在先前的 'O' 或 'K' 部分時,才存在。
將以下 TupleData 訊息識別為新元組。
TupleData 訊息部分,代表新元組的內容。
Update 訊息可能包含 'K' 訊息部分或 'O' 訊息部分,或者兩者都不包含,但永遠不能同時包含兩者。
將訊息識別為 delete 訊息。
交易的 Xid(僅適用於串流交易)。自協定版本 2 起可用。
與 relation 訊息中 ID 對應的關係的 OID。
將以下 TupleData 子訊息識別為鍵。 如果發生刪除的表格使用索引作為 REPLICA IDENTITY,則存在此欄位。
將以下 TupleData 訊息識別為舊元組。 如果發生刪除的表格的 REPLICA IDENTITY 設置為 FULL,則存在此欄位。
TupleData 訊息部分,代表舊元組或主鍵的內容,具體取決於先前的欄位。
Delete 訊息可能包含 'K' 訊息部分或 'O' 訊息部分,但永遠不能同時包含兩者。
將訊息識別為 truncate 訊息。
交易的 Xid(僅適用於串流交易)。自協定版本 2 起可用。
關係的數量
TRUNCATE
的選項位:1 表示 CASCADE
,2 表示 RESTART IDENTITY
與 relation 訊息中 ID 對應的關係的 OID。 此欄位對於每個關係重複出現。
以下訊息(Stream Start、Stream Stop、Stream Commit 和 Stream Abort)自協定版本 2 起可用。
識別此訊息為串流開始訊息。
交易的 Xid。
值為 1 表示這是此 XID 的第一個串流區段,0 表示任何其他串流區段。
識別此訊息為串流停止訊息。
識別此訊息為串流提交訊息。
交易的 Xid。
旗標;目前未使用。
提交的 LSN。
交易的結束 LSN。
交易的提交時間戳。該值是自 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。
交易的提交時間戳。該值是自 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
是上述長度。
如果您在文件中發現任何不正確、與您特定功能的體驗不符或需要進一步澄清的地方,請使用此表格報告文件問題。