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: StringThe table governed by this watermark, i.e epochs, checkpoints, transactions.
epoch_hi_inclusive: i64Inclusive 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: i64Inclusive 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: i64Exclusive upper transaction sequence number bound for this entity’s data. Committer updates this field.
epoch_lo: i64Inclusive lower epoch bound for this entity’s data. Pruner updates this field when the epoch range exceeds the retention policy.
reader_lo: i64Inclusive 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: i64Updated 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: i64Column 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::RequestSource§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.