← All compilation units

Flyology.Postgres.Replication.Base_Backups.Server_Sessions

Description

Minimal backend primitives for serving or proxying native base backups. Storage, tar production, manifest generation, privileges, and backup consistency remain application responsibilities.

Begin_Manifest_Upload

procedure Begin_Manifest_Upload
  (Client : in out Sessions.Session; Timeout : Duration)

Begin a PostgreSQL 17+ UPLOAD_MANIFEST COPY IN exchange.

Parameters
Client

Replication backend session.

Timeout

Per-message transport timeout.

Begin_Stream

procedure Begin_Stream
  (Client : in out Sessions.Session; Timeout : Duration)

PostgreSQL 14 calls this once per archive and optional manifest; PostgreSQL 15+ calls it once for the multiplexed stream.

Parameters
Client

Replication backend session.

Timeout

Per-message transport timeout.

Begin_Tablespaces

procedure Begin_Tablespaces
  (Client : in out Sessions.Session; Timeout : Duration)

Begin the tablespace metadata result set.

Parameters
Client

Replication backend session.

Timeout

Per-message transport timeout.

Complete_Manifest_Upload

procedure Complete_Manifest_Upload
  (Client : in out Sessions.Session; Timeout : Duration)

Finish a successful manifest upload with ReadyForQuery.

Parameters
Client

Replication backend session.

Timeout

Per-message transport timeout.

Complete_Tablespaces

procedure Complete_Tablespaces
  (Client : in out Sessions.Session; Timeout : Duration)

Complete the tablespace metadata result set.

Parameters
Client

Replication backend session.

Timeout

Per-message transport timeout.

Finish_Stream

procedure Finish_Stream
  (Client : in out Sessions.Session; Timeout : Duration)

Send CopyDone only. PostgreSQL sends the next legacy COPY result, or the final stop-LSN result, without an intervening CommandComplete.

Parameters
Client

Replication backend session.

Timeout

Per-message transport timeout.

Read_Manifest_Command

function Read_Manifest_Command
  (Client : in out Sessions.Session; Timeout : Duration)
   return Protocol.Frontend_Copy_Message

Read one bounded manifest COPY IN message.

Parameters
Client

Replication backend session.

Timeout

Per-message transport timeout.

Return value

CopyData, CopyDone, or CopyFail command.

Send_Archive_Start

procedure Send_Archive_Start
  (Client   : in out Sessions.Session;
   File_Name : String;
   Location : String;
   Timeout  : Duration)

Send a PostgreSQL 15+ archive-start frame.

Parameters
Client

Replication backend session.

File_Name

Safe archive base name.

Location

Associated tablespace location, possibly empty.

Timeout

Per-message transport timeout.

Send_Data

procedure Send_Data
  (Client      : in out Sessions.Session;
   Major       : Server_Major;
   Data        : Byte_Array;
   Timeout     : Duration)

Sends raw PostgreSQL 14 stream bytes or a PostgreSQL 15+ d frame.

Parameters
Client

Replication backend session.

Major

Wire format expected by the peer.

Data

One bounded archive or manifest fragment.

Timeout

Per-message transport timeout.

Send_End_Position

procedure Send_End_Position
  (Client   : in out Sessions.Session;
   Position : LSN;
   Timeline : UInt32;
   Timeout  : Duration)

Send the final result set and ReadyForQuery.

Parameters
Client

Replication backend session.

Position

Consistent backup stop LSN.

Timeline

Timeline containing Position.

Timeout

Per-message transport timeout.

Send_Manifest_Start

procedure Send_Manifest_Start
  (Client : in out Sessions.Session; Timeout : Duration)

Send a PostgreSQL 15+ manifest-start frame.

Parameters
Client

Replication backend session.

Timeout

Per-message transport timeout.

Send_Progress

procedure Send_Progress
  (Client          : in out Sessions.Session;
   Bytes_Completed : UInt64;
   Timeout         : Duration)

Send a PostgreSQL 15+ progress frame.

Parameters
Client

Replication backend session.

Bytes_Completed

Bytes completed in the current archive/tablespace.

Timeout

Per-message transport timeout.

Send_Start_Position

procedure Send_Start_Position
  (Client   : in out Sessions.Session;
   Position : LSN;
   Timeline : UInt32;
   Timeout  : Duration)

Send the first result containing consistent start LSN and timeline.

Parameters
Client

Authenticated replication backend session.

Position

Consistent backup start LSN.

Timeline

Timeline containing Position.

Timeout

Per-message transport timeout.

Send_Tablespace

procedure Send_Tablespace
  (Client           : in out Sessions.Session;
   Oid_Present      : Boolean;
   Oid              : UInt32 := 0;
   Location_Present : Boolean;
   Location         : String := "";
   Size_Present     : Boolean;
   Size_KiB         : UInt64 := 0;
   Timeout          : Duration)

Send one tablespace metadata row with explicit SQL NULL presence.

Parameters
Client

Replication backend session.

Oid_Present

Whether Oid is non-NULL.

Oid

Tablespace OID when present.

Location_Present

Whether Location is non-NULL.

Location

External tablespace path when present.

Size_Present

Whether Size_KiB is non-NULL.

Size_KiB

Estimated size when progress was requested.

Timeout

Per-message transport timeout.