pub struct StoredWatermark {
pub pipeline: String,
pub epoch_hi_inclusive: i64,
pub checkpoint_hi_inclusive: i64,
pub tx_hi: i64,
pub epoch_lo: i64,
pub reader_lo: i64,
pub timestamp_ms: i64,
pub pruner_hi: i64,
}
Expand description
Represents a row in the watermarks
table.
Fields§
§pipeline: String
The table governed by this watermark, i.e epochs
, checkpoints
, transactions
.
epoch_hi_inclusive: i64
Inclusive upper epoch bound for this entity’s data. Committer updates this field. Pruner uses this to determine if pruning is necessary based on the retention policy.
checkpoint_hi_inclusive: i64
Inclusive upper checkpoint bound for this entity’s data. Committer updates this field. All data of this entity in the checkpoint must be persisted before advancing this watermark. The committer refers to this on disaster recovery to resume writing.
tx_hi: i64
Exclusive upper transaction sequence number bound for this entity’s data. Committer updates this field.
epoch_lo: i64
Inclusive lower epoch bound for this entity’s data. Pruner updates this field when the epoch range exceeds the retention policy.
reader_lo: i64
Inclusive low watermark that the pruner advances. Corresponds to the epoch id, checkpoint sequence number, or tx sequence number depending on the entity. Data before this watermark is considered pruned by a reader. The underlying data may still exist in the db instance.
timestamp_ms: i64
Updated using the database’s current timestamp when the pruner sees that some data needs to be dropped. The pruner uses this column to determine whether to prune or wait long enough that all in-flight reads complete or timeout before it acts on an updated watermark.
pruner_hi: i64
Column used by the pruner to track its true progress. Data below this watermark can be immediately pruned.
Implementations§
Source§impl StoredWatermark
impl StoredWatermark
pub fn from_upper_bound_update( entity: &str, watermark: CommitterWatermark, ) -> Self
pub fn from_lower_bound_update( entity: &str, epoch_lo: u64, reader_lo: u64, ) -> Self
pub fn entity(&self) -> Option<PrunableTable>
Sourcepub fn new_epoch_lo(&self, retention: u64) -> Option<u64>
pub fn new_epoch_lo(&self, retention: u64) -> Option<u64>
Determine whether to set a new epoch lower bound based on the retention policy.
Trait Implementations§
Source§impl Clone for StoredWatermark
impl Clone for StoredWatermark
Source§fn clone(&self) -> StoredWatermark
fn clone(&self) -> StoredWatermark
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Default for StoredWatermark
impl Default for StoredWatermark
Source§fn default() -> StoredWatermark
fn default() -> StoredWatermark
Source§impl<'insert> Insertable<table> for &'insert StoredWatermark
impl<'insert> Insertable<table> for &'insert StoredWatermark
Source§type Values = <(Option<Grouped<Eq<pipeline, <&'insert String as AsExpression<<pipeline as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<epoch_hi_inclusive, <&'insert i64 as AsExpression<<epoch_hi_inclusive as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<checkpoint_hi_inclusive, <&'insert i64 as AsExpression<<checkpoint_hi_inclusive as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<tx_hi, <&'insert i64 as AsExpression<<tx_hi as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<epoch_lo, <&'insert i64 as AsExpression<<epoch_lo as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<reader_lo, <&'insert i64 as AsExpression<<reader_lo as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<timestamp_ms, <&'insert i64 as AsExpression<<timestamp_ms as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<pruner_hi, <&'insert i64 as AsExpression<<pruner_hi as Expression>::SqlType>>::Expression>>>) as Insertable<table>>::Values
type Values = <(Option<Grouped<Eq<pipeline, <&'insert String as AsExpression<<pipeline as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<epoch_hi_inclusive, <&'insert i64 as AsExpression<<epoch_hi_inclusive as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<checkpoint_hi_inclusive, <&'insert i64 as AsExpression<<checkpoint_hi_inclusive as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<tx_hi, <&'insert i64 as AsExpression<<tx_hi as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<epoch_lo, <&'insert i64 as AsExpression<<epoch_lo as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<reader_lo, <&'insert i64 as AsExpression<<reader_lo as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<timestamp_ms, <&'insert i64 as AsExpression<<timestamp_ms as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<pruner_hi, <&'insert i64 as AsExpression<<pruner_hi as Expression>::SqlType>>::Expression>>>) as Insertable<table>>::Values
VALUES
clause to insert these records Read moreSource§fn values(
self,
) -> <(Option<Eq<pipeline, &'insert String>>, Option<Eq<epoch_hi_inclusive, &'insert i64>>, Option<Eq<checkpoint_hi_inclusive, &'insert i64>>, Option<Eq<tx_hi, &'insert i64>>, Option<Eq<epoch_lo, &'insert i64>>, Option<Eq<reader_lo, &'insert i64>>, Option<Eq<timestamp_ms, &'insert i64>>, Option<Eq<pruner_hi, &'insert i64>>) as Insertable<table>>::Values
fn values( self, ) -> <(Option<Eq<pipeline, &'insert String>>, Option<Eq<epoch_hi_inclusive, &'insert i64>>, Option<Eq<checkpoint_hi_inclusive, &'insert i64>>, Option<Eq<tx_hi, &'insert i64>>, Option<Eq<epoch_lo, &'insert i64>>, Option<Eq<reader_lo, &'insert i64>>, Option<Eq<timestamp_ms, &'insert i64>>, Option<Eq<pruner_hi, &'insert i64>>) as Insertable<table>>::Values
Self::Values
Read more§fn insert_into(self, table: T) -> InsertStatement<T, Self::Values>where
T: Table,
Self: Sized,
fn insert_into(self, table: T) -> InsertStatement<T, Self::Values>where
T: Table,
Self: Sized,
self
into a given table. Read moreSource§impl Insertable<table> for StoredWatermark
impl Insertable<table> for StoredWatermark
Source§type Values = <(Option<Grouped<Eq<pipeline, <String as AsExpression<<pipeline as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<epoch_hi_inclusive, <i64 as AsExpression<<epoch_hi_inclusive as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<checkpoint_hi_inclusive, <i64 as AsExpression<<checkpoint_hi_inclusive as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<tx_hi, <i64 as AsExpression<<tx_hi as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<epoch_lo, <i64 as AsExpression<<epoch_lo as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<reader_lo, <i64 as AsExpression<<reader_lo as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<timestamp_ms, <i64 as AsExpression<<timestamp_ms as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<pruner_hi, <i64 as AsExpression<<pruner_hi as Expression>::SqlType>>::Expression>>>) as Insertable<table>>::Values
type Values = <(Option<Grouped<Eq<pipeline, <String as AsExpression<<pipeline as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<epoch_hi_inclusive, <i64 as AsExpression<<epoch_hi_inclusive as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<checkpoint_hi_inclusive, <i64 as AsExpression<<checkpoint_hi_inclusive as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<tx_hi, <i64 as AsExpression<<tx_hi as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<epoch_lo, <i64 as AsExpression<<epoch_lo as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<reader_lo, <i64 as AsExpression<<reader_lo as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<timestamp_ms, <i64 as AsExpression<<timestamp_ms as Expression>::SqlType>>::Expression>>>, Option<Grouped<Eq<pruner_hi, <i64 as AsExpression<<pruner_hi as Expression>::SqlType>>::Expression>>>) as Insertable<table>>::Values
VALUES
clause to insert these records Read moreSource§fn values(
self,
) -> <(Option<Eq<pipeline, String>>, Option<Eq<epoch_hi_inclusive, i64>>, Option<Eq<checkpoint_hi_inclusive, i64>>, Option<Eq<tx_hi, i64>>, Option<Eq<epoch_lo, i64>>, Option<Eq<reader_lo, i64>>, Option<Eq<timestamp_ms, i64>>, Option<Eq<pruner_hi, i64>>) as Insertable<table>>::Values
fn values( self, ) -> <(Option<Eq<pipeline, String>>, Option<Eq<epoch_hi_inclusive, i64>>, Option<Eq<checkpoint_hi_inclusive, i64>>, Option<Eq<tx_hi, i64>>, Option<Eq<epoch_lo, i64>>, Option<Eq<reader_lo, i64>>, Option<Eq<timestamp_ms, i64>>, Option<Eq<pruner_hi, i64>>) as Insertable<table>>::Values
Self::Values
Read more§fn insert_into(self, table: T) -> InsertStatement<T, Self::Values>where
T: Table,
Self: Sized,
fn insert_into(self, table: T) -> InsertStatement<T, Self::Values>where
T: Table,
Self: Sized,
self
into a given table. Read moreSource§impl<__DB: Backend, __ST0, __ST1, __ST2, __ST3, __ST4, __ST5, __ST6, __ST7> Queryable<(__ST0, __ST1, __ST2, __ST3, __ST4, __ST5, __ST6, __ST7), __DB> for StoredWatermark
impl<__DB: Backend, __ST0, __ST1, __ST2, __ST3, __ST4, __ST5, __ST6, __ST7> Queryable<(__ST0, __ST1, __ST2, __ST3, __ST4, __ST5, __ST6, __ST7), __DB> for StoredWatermark
Source§impl<__DB: Backend> QueryableByName<__DB> for StoredWatermarkwhere
String: FromSql<SqlTypeOf<pipeline>, __DB>,
i64: FromSql<SqlTypeOf<epoch_hi_inclusive>, __DB> + FromSql<SqlTypeOf<checkpoint_hi_inclusive>, __DB> + FromSql<SqlTypeOf<tx_hi>, __DB> + FromSql<SqlTypeOf<epoch_lo>, __DB> + FromSql<SqlTypeOf<reader_lo>, __DB> + FromSql<SqlTypeOf<timestamp_ms>, __DB> + FromSql<SqlTypeOf<pruner_hi>, __DB>,
impl<__DB: Backend> QueryableByName<__DB> for StoredWatermarkwhere
String: FromSql<SqlTypeOf<pipeline>, __DB>,
i64: FromSql<SqlTypeOf<epoch_hi_inclusive>, __DB> + FromSql<SqlTypeOf<checkpoint_hi_inclusive>, __DB> + FromSql<SqlTypeOf<tx_hi>, __DB> + FromSql<SqlTypeOf<epoch_lo>, __DB> + FromSql<SqlTypeOf<reader_lo>, __DB> + FromSql<SqlTypeOf<timestamp_ms>, __DB> + FromSql<SqlTypeOf<pruner_hi>, __DB>,
impl UndecoratedInsertRecord<table> for StoredWatermark
Auto Trait Implementations§
impl Freeze for StoredWatermark
impl RefUnwindSafe for StoredWatermark
impl Send for StoredWatermark
impl Sync for StoredWatermark
impl Unpin for StoredWatermark
impl UnwindSafe for StoredWatermark
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self
to type T
. The semantics of numeric casting with the as
operator are followed, so <T as As>::as_::<U>
can be used in the same way as T as U
for numeric conversions. Read more§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<DB, T> FromSqlRow<Untyped, DB> for Twhere
DB: Backend,
T: QueryableByName<DB>,
impl<DB, T> FromSqlRow<Untyped, DB> for Twhere
DB: Backend,
T: QueryableByName<DB>,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a Request
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
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>
T
in a tonic::Request
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>
T
in a tonic::Request
§impl<T> IntoSql for T
impl<T> IntoSql for T
§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered
].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T, Conn> RunQueryDsl<Conn> for T
impl<T, Conn> RunQueryDsl<Conn> for T
§fn execute<'conn, 'query>(
self,
conn: &'conn mut Conn,
) -> <Conn as AsyncConnection>::ExecuteFuture<'conn, 'query>where
Conn: AsyncConnection + Send,
Self: ExecuteDsl<Conn> + 'query,
fn execute<'conn, 'query>(
self,
conn: &'conn mut Conn,
) -> <Conn as AsyncConnection>::ExecuteFuture<'conn, 'query>where
Conn: AsyncConnection + Send,
Self: ExecuteDsl<Conn> + 'query,
§fn load<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U>>, fn(_: Self::Stream<'conn>) -> TryCollect<Self::Stream<'conn>, Vec<U>>>where
U: Send,
Conn: AsyncConnection,
Self: LoadQuery<'query, Conn, U> + 'query,
fn load<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U>>, fn(_: Self::Stream<'conn>) -> TryCollect<Self::Stream<'conn>, Vec<U>>>where
U: Send,
Conn: AsyncConnection,
Self: LoadQuery<'query, Conn, U> + 'query,
§fn load_stream<'conn, 'query, U>(
self,
conn: &'conn mut Conn,
) -> Self::LoadFuture<'conn>where
Conn: AsyncConnection,
U: 'conn,
Self: LoadQuery<'query, Conn, U> + 'query,
fn load_stream<'conn, 'query, U>(
self,
conn: &'conn mut Conn,
) -> Self::LoadFuture<'conn>where
Conn: AsyncConnection,
U: 'conn,
Self: LoadQuery<'query, Conn, U> + 'query,
Stream
] with the returned rows. Read more§fn get_result<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, Map<StreamFuture<Pin<Box<Self::Stream<'conn>>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<Self::Stream<'conn>>>)) -> Result<U, Error>>, fn(_: Self::Stream<'conn>) -> Map<StreamFuture<Pin<Box<Self::Stream<'conn>>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<Self::Stream<'conn>>>)) -> Result<U, Error>>>where
U: Send + 'conn,
Conn: AsyncConnection,
Self: LoadQuery<'query, Conn, U> + 'query,
fn get_result<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, Map<StreamFuture<Pin<Box<Self::Stream<'conn>>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<Self::Stream<'conn>>>)) -> Result<U, Error>>, fn(_: Self::Stream<'conn>) -> Map<StreamFuture<Pin<Box<Self::Stream<'conn>>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<Self::Stream<'conn>>>)) -> Result<U, Error>>>where
U: Send + 'conn,
Conn: AsyncConnection,
Self: LoadQuery<'query, Conn, U> + 'query,
§fn get_results<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U>>, fn(_: Self::Stream<'conn>) -> TryCollect<Self::Stream<'conn>, Vec<U>>>where
U: Send,
Conn: AsyncConnection,
Self: LoadQuery<'query, Conn, U> + 'query,
fn get_results<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U>>, fn(_: Self::Stream<'conn>) -> TryCollect<Self::Stream<'conn>, Vec<U>>>where
U: Send,
Conn: AsyncConnection,
Self: LoadQuery<'query, Conn, U> + 'query,
Vec
with the affected rows. Read more§fn first<'query, 'conn, U>(
self,
conn: &'conn mut Conn,
) -> AndThen<<Self::Output as LoadQuery<'query, Conn, U>>::LoadFuture<'conn>, Map<StreamFuture<Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>>>)) -> Result<U, Error>>, fn(_: <Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>) -> Map<StreamFuture<Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>>>)) -> Result<U, Error>>>
fn first<'query, 'conn, U>( self, conn: &'conn mut Conn, ) -> AndThen<<Self::Output as LoadQuery<'query, Conn, U>>::LoadFuture<'conn>, Map<StreamFuture<Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>>>)) -> Result<U, Error>>, fn(_: <Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>) -> Map<StreamFuture<Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>>>>, fn(_: (Option<Result<U, Error>>, Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>>>)) -> Result<U, Error>>>
§impl<T, ST, DB> StaticallySizedRow<ST, DB> for Twhere
ST: SqlTypeOrSelectable + TupleSize,
T: Queryable<ST, DB>,
DB: Backend,
impl<T, ST, DB> StaticallySizedRow<ST, DB> for Twhere
ST: SqlTypeOrSelectable + TupleSize,
T: Queryable<ST, DB>,
DB: Backend,
§const FIELD_COUNT: usize = <ST as crate::util::TupleSize>::SIZE
const FIELD_COUNT: usize = <ST as crate::util::TupleSize>::SIZE
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.