pub struct RangeKvStateStore<R: RangeKv> {
inner: R,
}
Expand description
Fields§
§inner: R
Stores (key, epoch) -> user value.
Implementations§
source§impl<R: RangeKv> RangeKvStateStore<R>
impl<R: RangeKv> RangeKvStateStore<R>
fn scan( &self, key_range: TableKeyRange, epoch: u64, table_id: TableId, limit: Option<usize>, ) -> StorageResult<Vec<(Bytes, Bytes)>>
Trait Implementations§
source§impl<R: Clone + RangeKv> Clone for RangeKvStateStore<R>
impl<R: Clone + RangeKv> Clone for RangeKvStateStore<R>
source§fn clone(&self) -> RangeKvStateStore<R>
fn clone(&self) -> RangeKvStateStore<R>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<R: Default + RangeKv> Default for RangeKvStateStore<R>
impl<R: Default + RangeKv> Default for RangeKvStateStore<R>
source§fn default() -> RangeKvStateStore<R>
fn default() -> RangeKvStateStore<R>
Returns the “default value” for a type. Read more
source§impl<R: RangeKv> StateStore for RangeKvStateStore<R>
impl<R: RangeKv> StateStore for RangeKvStateStore<R>
type Local = MemtableLocalStateStore<RangeKvStateStore<R>>
source§async fn try_wait_epoch(
&self,
_epoch: HummockReadEpoch,
_options: TryWaitEpochOptions,
) -> StorageResult<()>
async fn try_wait_epoch( &self, _epoch: HummockReadEpoch, _options: TryWaitEpochOptions, ) -> StorageResult<()>
If epoch is
Committed
, we will wait until the epoch is committed and its data is ready to
read. If epoch is Current
, we will only check if the data can be read with this epoch.async fn new_local(&self, option: NewLocalOptions) -> Self::Local
source§fn monitored(
self,
storage_metrics: Arc<MonitoredStorageMetrics>,
) -> MonitoredStateStore<Self>
fn monitored( self, storage_metrics: Arc<MonitoredStorageMetrics>, ) -> MonitoredStateStore<Self>
Creates a
MonitoredStateStore
from this state store, with given stats
.source§impl<R: RangeKv> StateStoreRead for RangeKvStateStore<R>
impl<R: RangeKv> StateStoreRead for RangeKvStateStore<R>
type ChangeLogIter = RangeKvStateStoreChangeLogIter<R>
type Iter = RangeKvStateStoreIter<R>
type RevIter = RangeKvStateStoreRevIter<R>
source§async fn get_keyed_row(
&self,
key: TableKey<Bytes>,
epoch: u64,
read_options: ReadOptions,
) -> StorageResult<Option<StateStoreKeyedRow>>
async fn get_keyed_row( &self, key: TableKey<Bytes>, epoch: u64, read_options: ReadOptions, ) -> StorageResult<Option<StateStoreKeyedRow>>
Point gets a value from the state store.
The result is based on a snapshot corresponding to the given
epoch
.
Both full key and the value are returned.source§async fn iter(
&self,
key_range: TableKeyRange,
epoch: u64,
read_options: ReadOptions,
) -> StorageResult<Self::Iter>
async fn iter( &self, key_range: TableKeyRange, epoch: u64, read_options: ReadOptions, ) -> StorageResult<Self::Iter>
Opens and returns an iterator for given
prefix_hint
and full_key_range
Internally, prefix_hint
will be used to for checking bloom_filter
and
full_key_range
used for iter. (if the prefix_hint
not None, it should be be included
in key_range
) The returned iterator will iterate data based on a snapshot
corresponding to the given epoch
.async fn rev_iter( &self, key_range: TableKeyRange, epoch: u64, read_options: ReadOptions, ) -> StorageResult<Self::RevIter>
async fn iter_log( &self, __arg1: (u64, u64), key_range: TableKeyRange, options: ReadLogOptions, ) -> StorageResult<Self::ChangeLogIter>
source§fn get(
&self,
key: TableKey<Bytes>,
epoch: u64,
read_options: ReadOptions,
) -> impl Future<Output = StorageResult<Option<Bytes>>> + Send + '_
fn get( &self, key: TableKey<Bytes>, epoch: u64, read_options: ReadOptions, ) -> impl Future<Output = StorageResult<Option<Bytes>>> + Send + '_
Point gets a value from the state store.
The result is based on a snapshot corresponding to the given
epoch
.
Only the value is returned.source§impl<R: RangeKv> StateStoreWrite for RangeKvStateStore<R>
impl<R: RangeKv> StateStoreWrite for RangeKvStateStore<R>
source§fn ingest_batch(
&self,
kv_pairs: Vec<(TableKey<Bytes>, StorageValue)>,
delete_ranges: Vec<(Bound<Bytes>, Bound<Bytes>)>,
write_options: WriteOptions,
) -> StorageResult<usize>
fn ingest_batch( &self, kv_pairs: Vec<(TableKey<Bytes>, StorageValue)>, delete_ranges: Vec<(Bound<Bytes>, Bound<Bytes>)>, write_options: WriteOptions, ) -> StorageResult<usize>
Writes a batch to storage. The batch should be: Read more
Auto Trait Implementations§
impl<R> Freeze for RangeKvStateStore<R>where
R: Freeze,
impl<R> RefUnwindSafe for RangeKvStateStore<R>where
R: RefUnwindSafe,
impl<R> Send for RangeKvStateStore<R>
impl<R> Sync for RangeKvStateStore<R>
impl<R> Unpin for RangeKvStateStore<R>where
R: Unpin,
impl<R> UnwindSafe for RangeKvStateStore<R>where
R: UnwindSafe,
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
source§impl<S> DynamicDispatchedStateStoreExt for Swhere
S: StateStore,
impl<S> DynamicDispatchedStateStoreExt for Swhere
S: StateStore,
fn try_wait_epoch<'life0, 'async_trait>(
&'life0 self,
epoch: HummockReadEpoch,
options: TryWaitEpochOptions,
) -> Pin<Box<dyn Future<Output = Result<(), StorageError>> + Send + 'async_trait>>where
'life0: 'async_trait,
S: 'async_trait,
fn new_local<'life0, 'async_trait>(
&'life0 self,
option: NewLocalOptions,
) -> Pin<Box<dyn Future<Output = Box<dyn DynamicDispatchedLocalStateStore>> + Send + 'async_trait>>where
'life0: 'async_trait,
S: 'async_trait,
source§impl<S> DynamicDispatchedStateStoreRead for Swhere
S: StateStoreRead,
impl<S> DynamicDispatchedStateStoreRead for Swhere
S: StateStoreRead,
fn get_keyed_row<'life0, 'async_trait>(
&'life0 self,
key: TableKey<Bytes>,
epoch: u64,
read_options: ReadOptions,
) -> Pin<Box<dyn Future<Output = Result<Option<(FullKey<Bytes>, Bytes)>, StorageError>> + Send + 'async_trait>>where
'life0: 'async_trait,
S: 'async_trait,
fn iter<'life0, 'async_trait>(
&'life0 self,
key_range: (Bound<TableKey<Bytes>>, Bound<TableKey<Bytes>>),
epoch: u64,
read_options: ReadOptions,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn DynamicDispatchedStateStoreIter<(FullKey<Bytes>, Bytes)>>, StorageError>> + Send + 'async_trait>>where
'life0: 'async_trait,
S: 'async_trait,
fn rev_iter<'life0, 'async_trait>(
&'life0 self,
key_range: (Bound<TableKey<Bytes>>, Bound<TableKey<Bytes>>),
epoch: u64,
read_options: ReadOptions,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn DynamicDispatchedStateStoreIter<(FullKey<Bytes>, Bytes)>>, StorageError>> + Send + 'async_trait>>where
'life0: 'async_trait,
S: 'async_trait,
fn iter_log<'life0, 'async_trait>(
&'life0 self,
epoch_range: (u64, u64),
key_range: (Bound<TableKey<Bytes>>, Bound<TableKey<Bytes>>),
options: ReadLogOptions,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn DynamicDispatchedStateStoreIter<(TableKey<Bytes>, ChangeLogValue<Bytes>)>>, StorageError>> + Send + 'async_trait>>where
'life0: 'async_trait,
S: 'async_trait,
§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>
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> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§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
§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
type Err = Infallible
fn into_result(self) -> Result<T, <T as IntoResult<T>>::Err>
Creates a shared type from an unshared type.
source§impl<M> MetricVecRelabelExt for M
impl<M> MetricVecRelabelExt for M
source§fn relabel(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
Equivalent to
RelabeledMetricVec::with_metric_level
.source§fn relabel_n(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
relabel_num: usize,
) -> RelabeledMetricVec<M>
fn relabel_n( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, relabel_num: usize, ) -> RelabeledMetricVec<M>
Equivalent to
RelabeledMetricVec::with_metric_level_relabel_n
.source§fn relabel_debug_1(
self,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel_debug_1( self, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
Equivalent to
RelabeledMetricVec::with_metric_level_relabel_n
with metric_level
set to
MetricLevel::Debug
and relabel_num
set to 1.§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<S> StateStoreReadExt for Swhere
S: StateStoreRead,
impl<S> StateStoreReadExt for Swhere
S: StateStoreRead,
source§async fn scan(
&self,
key_range: (Bound<TableKey<Bytes>>, Bound<TableKey<Bytes>>),
epoch: u64,
limit: Option<usize>,
read_options: ReadOptions,
) -> Result<Vec<(FullKey<Bytes>, Bytes)>, StorageError>
async fn scan( &self, key_range: (Bound<TableKey<Bytes>>, Bound<TableKey<Bytes>>), epoch: u64, limit: Option<usize>, read_options: ReadOptions, ) -> Result<Vec<(FullKey<Bytes>, Bytes)>, StorageError>
Scans
limit
number of keys from a key range. If limit
is None
, scans all elements.
Internally, prefix_hint
will be used to for checking bloom_filter
and
full_key_range
used for iter.
The result is based on a snapshot corresponding to the given epoch
. Read more