Description
Replication-command handler composed from application-owned slot, WAL, timeline, and logical-change state. Each START_REPLICATION call streams the currently exposed range, persists acknowledged progress, and closes COPY BOTH in PostgreSQL protocol order.
Next_Logical is called repeatedly with the last emitted position. It returns Available = False only between transactions. When available, WAL_Start must be at or after After_LSN, WAL_End must be greater than WAL_Start, and Message must continue a valid pgoutput sequence.
Handle
procedure Handle
(Item : in out Primary;
Client : in out Sessions.Session;
Command : Replication.Command)
Handle one decoded replication command. START_REPLICATION acquires the requested slot, streams application data, waits for sufficient standby feedback, persists progress, releases the lease, applies WAL retention, and performs graceful COPY BOTH completion.
Parameters
- Item
Initialized managed primary.
- Client
Authenticated replication-mode server session.
- Command
Decoded IDENTIFY_SYSTEM, SHOW, TIMELINE_HISTORY, slot lifecycle, or START_REPLICATION command. Slot creation supports SNAPSHOT 'use' and 'nothing'; an exported snapshot must be composed with an application SQL snapshot provider. DROP WAIT polls until the slot becomes inactive or the configured operation timeout expires.
Raised exceptions
- Protocol_Error
Configuration, source ordering, feedback, slot state, or protocol completion is invalid.
Initialize
procedure Initialize
(Item : in out Primary;
System_Id : UInt64;
Database : String := "";
Timeout : Duration := 30.0)
Configure the identity and operation deadline used by Handle.
Parameters
- Item
Primary to initialize.
- System_Id
Stable nonzero PostgreSQL system identifier.
- Database
Database reported by IDENTIFY_SYSTEM, or an empty string for a physical-only connection.
- Timeout
Positive timeout for each protocol operation.
Raised exceptions
- Constraint_Error
System_Id is zero or Timeout is not positive.
Logical_Context
type Logical_Context (<>) is limited private;
Next_Logical
procedure Next_Logical
(Context : in out Logical_Context;
Slot_Name : String;
After_LSN : LSN;
Available : out Boolean;
WAL_Start : out LSN;
WAL_End : out LSN;
Message : out Logical.Message)
Parameters
- Context
- Slot_Name
- After_LSN
- Available
- WAL_Start
- WAL_End
- Message
Primary
type Primary
(Slots : not null access Stores.Slot_Store'Class;
WAL : not null access Stores.WAL_Store'Class;
Timelines : not null access Stores.Timeline_Store'Class;
Logical_Source : not null access Logical_Context) is limited private;
Managed primary bound to application-owned replication state.
Record fields
- Slots
Durable physical and logical slot catalog.
- WAL
Contiguous retained WAL source.
- Timelines
Durable current timeline and history source.
- Logical_Source
Application pgoutput change source.