Struct mz_persist::postgres::PostgresConsensus
source · pub struct PostgresConsensus {
postgres_client: PostgresClient,
}
Expand description
Implementation of Consensus over a Postgres database.
Fields§
§postgres_client: PostgresClient
Implementations§
source§impl PostgresConsensus
impl PostgresConsensus
sourcepub async fn open(
config: PostgresConsensusConfig,
) -> Result<Self, ExternalError>
pub async fn open( config: PostgresConsensusConfig, ) -> Result<Self, ExternalError>
Open a Postgres Consensus instance with config
, for the collection
named shard
.
sourcepub async fn drop_and_recreate(&self) -> Result<(), ExternalError>
pub async fn drop_and_recreate(&self) -> Result<(), ExternalError>
Drops and recreates the consensus
table in Postgres
ONLY FOR TESTING
async fn get_connection(&self) -> Result<Object, PoolError>
Trait Implementations§
source§impl Consensus for PostgresConsensus
impl Consensus for PostgresConsensus
source§fn list_keys(&self) -> ResultStream<'_, String>
fn list_keys(&self) -> ResultStream<'_, String>
Returns all the keys ever created in the consensus store.
source§fn head<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<VersionedData>, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn head<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<VersionedData>, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns a recent version of
data
, and the corresponding sequence number, if
one exists at this location.source§fn compare_and_set<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
expected: Option<SeqNo>,
new: VersionedData,
) -> Pin<Box<dyn Future<Output = Result<CaSResult, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn compare_and_set<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
expected: Option<SeqNo>,
new: VersionedData,
) -> Pin<Box<dyn Future<Output = Result<CaSResult, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Update the VersionedData stored at this location to
new
, iff the
current sequence number is exactly expected
and new
’s sequence
number > the current sequence number. Read moresource§fn scan<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
from: SeqNo,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<VersionedData>, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn scan<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
from: SeqNo,
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<VersionedData>, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Return
limit
versions of data stored for this key
at sequence numbers >= from
,
in ascending order of sequence number. Read moresource§fn truncate<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
seqno: SeqNo,
) -> Pin<Box<dyn Future<Output = Result<usize, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn truncate<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
seqno: SeqNo,
) -> Pin<Box<dyn Future<Output = Result<usize, ExternalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Deletes all historical versions of the data stored at
key
that are <
seqno
, iff seqno
<= the current sequence number. Read moreAuto Trait Implementations§
impl Freeze for PostgresConsensus
impl !RefUnwindSafe for PostgresConsensus
impl Send for PostgresConsensus
impl Sync for PostgresConsensus
impl Unpin for PostgresConsensus
impl !UnwindSafe for PostgresConsensus
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T
in a tonic::Request
Creates a shared type from an unshared type.
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
See
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See
RustType::into_proto
.source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
The method of
std::ops::AddAssign
, for types that do not implement AddAssign
.