Skip to main content

PostgresConnection

Struct PostgresConnection 

Source
pub struct PostgresConnection { /* private fields */ }
Expand description

PostgreSQL connector lifecycle manager.

Implementations§

Source§

impl PostgresConnection

Source

pub fn new(config: PostgresSourceConfig) -> Self

Source

pub fn with_logger( config: PostgresSourceConfig, logger: StructuredLogger, ) -> Self

Source

pub async fn connect(&self) -> Result<()>

Source

pub async fn close(&self)

Source

pub async fn is_connected(&self) -> bool

Source

pub async fn start_snapshot_from_checkpoint( &mut self, tables: &[&str], resume_from: Option<&dyn Offset>, ) -> Result<Box<dyn SnapshotHandle>>

Source

pub async fn start_incremental_snapshot( &mut self, config: IncrementalSnapshotConfig, resume_from: Option<&dyn Offset>, ) -> Result<Box<dyn StreamHandle>>

Start an incremental (non-blocking) snapshot using the DBLog watermark pattern.

Unlike start_snapshot, this method:

  • Does not pause the replication stream.
  • Does not hold a REPEATABLE READ transaction.
  • Reads the table in small chunks (keyset-paginated, READ COMMITTED).
  • For each chunk, captures a low/high watermark LSN and uses the replication stream to detect concurrent writes, suppressing stale chunk rows.

The returned StreamHandle interleaves snapshot Read events with live replication events. Once all tables are exhausted it acts as a pure stream delegate.

resume_from is forwarded to start_stream to resume from a saved checkpoint offset.

Trait Implementations§

Source§

impl Drop for PostgresConnection

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl Source for PostgresConnection

Source§

fn start_snapshot<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, tables: &'life1 [&'life2 str], ) -> Pin<Box<dyn Future<Output = Result<Box<dyn SnapshotHandle>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn start_stream<'life0, 'life1, 'async_trait>( &'life0 mut self, resume_from: Option<&'life1 dyn Offset>, ) -> Pin<Box<dyn Future<Output = Result<Box<dyn StreamHandle>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn perform_handoff<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, snapshot: &'life1 mut dyn SnapshotHandle, stream: &'life2 mut dyn StreamHandle, ) -> Pin<Box<dyn Future<Output = Result<HandoffResult>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source§

fn source_type(&self) -> &str

Source§

fn capabilities(&self) -> ConnectorCapabilities

Source§

fn start_snapshot_from_checkpoint<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 mut self, tables: &'life1 [&'life2 str], _resume_from: Option<&'life3 dyn Offset>, ) -> Pin<Box<dyn Future<Output = Result<Box<dyn SnapshotHandle>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Start snapshot capture from a previously persisted snapshot checkpoint. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more