pub struct SstableIterator {
block_iter: Option<BlockIterator>,
cur_idx: usize,
preload_stream: Option<Box<dyn BlockStream>>,
pub sst: TableHolder,
preload_end_block_idx: usize,
preload_retry_times: usize,
sstable_store: SstableStoreRef,
stats: StoreLocalStatistic,
options: Arc<SstableIteratorReadOptions>,
block_start_idx_inclusive: usize,
block_end_idx_inclusive: usize,
}
Expand description
Iterates on a sstable.
Fields§
§block_iter: Option<BlockIterator>
The iterator of the current block.
cur_idx: usize
Current block index.
preload_stream: Option<Box<dyn BlockStream>>
§sst: TableHolder
Reference to the sst
preload_end_block_idx: usize
§preload_retry_times: usize
§sstable_store: SstableStoreRef
§stats: StoreLocalStatistic
§options: Arc<SstableIteratorReadOptions>
§block_start_idx_inclusive: usize
§block_end_idx_inclusive: usize
Implementations§
source§impl SstableIterator
impl SstableIterator
pub fn new( sstable: TableHolder, sstable_store: SstableStoreRef, options: Arc<SstableIteratorReadOptions>, sstable_info_ref: &SstableInfo, ) -> Self
fn init_block_prefetch_range(&mut self, start_idx: usize)
sourceasync fn seek_idx(
&mut self,
idx: usize,
seek_key: Option<FullKey<&[u8]>>,
) -> HummockResult<()>
async fn seek_idx( &mut self, idx: usize, seek_key: Option<FullKey<&[u8]>>, ) -> HummockResult<()>
Seeks to a block, and then seeks to the key if seek_key
is given.
fn calculate_block_idx_by_key(&self, key: FullKey<&[u8]>) -> usize
Trait Implementations§
source§impl HummockIterator for SstableIterator
impl HummockIterator for SstableIterator
type Direction = Forward
source§async fn next(&mut self) -> HummockResult<()>
async fn next(&mut self) -> HummockResult<()>
Moves a valid iterator to the next key. Read more
source§fn value(&self) -> HummockValue<&[u8]>
fn value(&self) -> HummockValue<&[u8]>
Retrieves the current value, decoded as
HummockValue
. Read moresource§async fn rewind(&mut self) -> HummockResult<()>
async fn rewind(&mut self) -> HummockResult<()>
Resets the position of the iterator. Read more
source§async fn seek<'a>(&'a mut self, key: FullKey<&'a [u8]>) -> HummockResult<()>
async fn seek<'a>(&'a mut self, key: FullKey<&'a [u8]>) -> HummockResult<()>
Resets iterator and seeks to the first position where the key >= provided key, or key <=
provided key if this is a backward iterator. Read more
source§fn collect_local_statistic(&self, stats: &mut StoreLocalStatistic)
fn collect_local_statistic(&self, stats: &mut StoreLocalStatistic)
take local statistic info from iterator to report metrics.
source§fn value_meta(&self) -> ValueMeta
fn value_meta(&self) -> ValueMeta
Returns value meta.
source§impl SstableIteratorType for SstableIterator
impl SstableIteratorType for SstableIterator
fn create( sstable: TableHolder, sstable_store: SstableStoreRef, options: Arc<SstableIteratorReadOptions>, sstable_info_ref: &SstableInfo, ) -> Self
Auto Trait Implementations§
impl Freeze for SstableIterator
impl !RefUnwindSafe for SstableIterator
impl Send for SstableIterator
impl Sync for SstableIterator
impl Unpin for SstableIterator
impl !UnwindSafe for SstableIterator
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
§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>
Converts
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn 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>
Converts
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which 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)
Converts
&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)
Converts
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§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.