本節描述了每個邏輯複製訊息的詳細格式。這些訊息由複製槽 SQL 介面返回,或由 walsender 傳送。對於 walsender,它們被封裝在複製協議 WAL 訊息中,如第 54.4 節所述,並且通常遵循與物理複製相同的訊息流。
標識訊息為 begin 訊息。
事務的最終 LSN。
事務的提交時間戳。該值是以自 PostgreSQL 紀元 (2000-01-01) 以來的微秒數表示。
事務的 Xid。
標識訊息為邏輯解碼訊息。
事務的 Xid (僅當是流式事務時存在)。此欄位自協議版本 2 起可用。
標誌;0 表示無標誌,1 表示邏輯解碼訊息是事務性的。
邏輯解碼訊息的 LSN。
邏輯解碼訊息的 prefix。
content 的長度。
n
邏輯解碼訊息的 content。
標識訊息為 commit 訊息。
標誌;目前未使用。
commit 的 LSN。
事務的結束 LSN。
事務的提交時間戳。該值是以自 PostgreSQL 紀元 (2000-01-01) 以來的微秒數表示。
標識訊息為 origin 訊息。
源伺服器上 commit 的 LSN。
源的名稱。
請注意,一個事務中可能包含多個 Origin 訊息。
標識訊息為 relation 訊息。
事務的 Xid (僅當是流式事務時存在)。此欄位自協議版本 2 起可用。
relation 的 OID。
Namespace (對於 pg_catalog
為空字串)。
Relation 的名稱。
relation 的 replica identity 設定 (與 pg_class
中的 relreplident
相同)。
列的數量。
接下來,對於釋出中包含的每一列,將出現以下訊息部分。
列的標誌。目前可以是 0 (無標誌) 或 1 (標記該列是 key 的一部分)。
列的名稱。
列資料型別的 OID。
列的型別修飾符 (atttypmod
)。
標識訊息為 type 訊息。
事務的 Xid (僅當是流式事務時存在)。此欄位自協議版本 2 起可用。
資料型別的 OID。
Namespace (對於 pg_catalog
為空字串)。
資料型別的名稱。
標識訊息為 insert 訊息。
事務的 Xid (僅當是流式事務時存在)。此欄位自協議版本 2 起可用。
relation 的 OID,對應 relation 訊息中的 ID。
標識下面的 TupleData 訊息為新元組。
代表新元組內容的 TupleData 訊息部分。
標識訊息為 update 訊息。
事務的 Xid (僅當是流式事務時存在)。此欄位自協議版本 2 起可用。
relation 的 OID,對應 relation 訊息中的 ID。
標識下面的 TupleData 子訊息為 key。此欄位是可選的,僅當 update 更改了 REPLICA IDENTITY 索引所包含的列中的任何資料時存在。
標識下面的 TupleData 子訊息為舊元組。此欄位是可選的,僅當發生 update 的表將 REPLICA IDENTITY 設定為 FULL 時存在。
代表舊元組或主鍵內容的 TupleData 訊息部分。僅當存在前面的 'O' 或 'K' 部分時存在。
標識下面的 TupleData 訊息為新元組。
代表新元組內容的 TupleData 訊息部分。
Update 訊息可能包含 'K' 訊息部分或 'O' 訊息部分,或者兩者都不包含,但絕不會同時包含兩者。
標識訊息為 delete 訊息。
事務的 Xid (僅當是流式事務時存在)。此欄位自協議版本 2 起可用。
relation 的 OID,對應 relation 訊息中的 ID。
標識下面的 TupleData 子訊息為 key。當發生 delete 的表使用索引作為 REPLICA IDENTITY 時,此欄位存在。
標識下面的 TupleData 訊息為舊元組。當發生 delete 的表將 REPLICA IDENTITY 設定為 FULL 時,此欄位存在。
根據前面的欄位,表示舊元組或主鍵內容的 TupleData 訊息部分。
Delete 訊息可能包含 'K' 訊息部分或 'O' 訊息部分,但絕不會同時包含兩者。
標識訊息為 truncate 訊息。
事務的 Xid (僅當是流式事務時存在)。此欄位自協議版本 2 起可用。
relation 的數量。
TRUNCATE
的選項位:1 表示 CASCADE
,2 表示 RESTART IDENTITY
。
relation 的 OID,對應 relation 訊息中的 ID。此欄位對每個 relation 重複。
以下訊息 (Stream Start, Stream Stop, Stream Commit, Stream Abort) 自協議版本 2 起可用。
標識訊息為 stream start 訊息。
事務的 Xid。
值為 1 表示這是此 XID 的第一個 stream 片段,0 表示其他 stream 片段。
標識訊息為 stream stop 訊息。
標識訊息為 stream commit 訊息。
事務的 Xid。
標誌;目前未使用。
commit 的 LSN。
事務的結束 LSN。
事務的提交時間戳。該值是以自 PostgreSQL 紀元 (2000-01-01) 以來的微秒數表示。
標識訊息為 stream abort 訊息。
事務的 Xid。
子事務的 Xid (對於頂級事務,將與事務的 xid 相同)。
abort 操作的 LSN,僅當 streaming 設定為 parallel 時存在。此欄位自協議版本 4 起可用。
事務的 abort 時間戳,僅當 streaming 設定為 parallel 時存在。該值是以自 PostgreSQL 紀元 (2000-01-01) 以來的微秒數表示。此欄位自協議版本 4 起可用。
以下訊息 (Begin Prepare, Prepare, Commit Prepared, Rollback Prepared, Stream Prepare) 自協議版本 3 起可用。
標識訊息為 prepared transaction 訊息的開始。
prepare 的 LSN。
prepared transaction 的結束 LSN。
事務的 prepare 時間戳。該值是以自 PostgreSQL 紀元 (2000-01-01) 以來的微秒數表示。
事務的 Xid。
事務的使用者定義 GID。
標識訊息為 prepared transaction 訊息。
標誌;目前未使用。
prepare 的 LSN。
prepared transaction 的結束 LSN。
事務的 prepare 時間戳。該值是以自 PostgreSQL 紀元 (2000-01-01) 以來的微秒數表示。
事務的 Xid。
事務的使用者定義 GID。
標識訊息為 prepared transaction commit 訊息。
標誌;目前未使用。
prepared transaction commit 的 LSN。
prepared transaction commit 的結束 LSN。
事務的提交時間戳。該值是以自 PostgreSQL 紀元 (2000-01-01) 以來的微秒數表示。
事務的 Xid。
事務的使用者定義 GID。
標識訊息為 prepared transaction rollback 訊息。
標誌;目前未使用。
prepared transaction 的結束 LSN。
prepared transaction rollback 的結束 LSN。
事務的 prepare 時間戳。該值是以自 PostgreSQL 紀元 (2000-01-01) 以來的微秒數表示。
事務的 rollback 時間戳。該值是以自 PostgreSQL 紀元 (2000-01-01) 以來的微秒數表示。
事務的 Xid。
事務的使用者定義 GID。
標識訊息為 stream prepared transaction 訊息。
標誌;目前未使用。
prepare 的 LSN。
prepared transaction 的結束 LSN。
事務的 prepare 時間戳。該值是以自 PostgreSQL 紀元 (2000-01-01) 以來的微秒數表示。
事務的 Xid。
事務的使用者定義 GID。
上述訊息共享以下訊息部分。
列的數量。
接下來,對於每個釋出的列,將出現以下子訊息之一。
標識資料為 NULL 值。
或者
標識未更改的 TOASTed 值 (實際值未傳送)。
或者
標識資料為文字格式的值。
或者
標識資料為二進位制格式的值。
列值的長度。
n
列的值,可以是二進位制格式或文字格式 (如前面格式位元組指定)。n
是上述長度。
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用此表單報告文件問題。