pub struct BlobFieldScheduler { /* private fields */ }
Expand description
A field scheduler for large binary data
Large binary data (1MiB+) can be inefficient if we store as a regular primitive. We essentially end up with 1 page per row (or a few rows) and the overhead of the metadata can be significant.
At the same time the benefits of using pages (contiguous arrays) are pretty small since we can generally perform random access at these sizes without much penalty.
This encoder gives up the random access and stores the large binary data out of line. This keeps the metadata small.
Implementations§
Source§impl BlobFieldScheduler
impl BlobFieldScheduler
pub fn new(descriptions_scheduler: Arc<dyn FieldScheduler>) -> Self
Trait Implementations§
Source§impl Debug for BlobFieldScheduler
impl Debug for BlobFieldScheduler
Source§impl FieldScheduler for BlobFieldScheduler
impl FieldScheduler for BlobFieldScheduler
Source§fn schedule_ranges<'a>(
&'a self,
ranges: &[Range<u64>],
filter: &FilterExpression,
) -> Result<Box<dyn SchedulingJob + 'a>>
fn schedule_ranges<'a>( &'a self, ranges: &[Range<u64>], filter: &FilterExpression, ) -> Result<Box<dyn SchedulingJob + 'a>>
Schedules I/O for the requested portions of the field. Read more
Source§fn initialize<'a>(
&'a self,
filter: &'a FilterExpression,
context: &'a SchedulerContext,
) -> BoxFuture<'a, Result<()>>
fn initialize<'a>( &'a self, filter: &'a FilterExpression, context: &'a SchedulerContext, ) -> BoxFuture<'a, Result<()>>
Called at the beginning of scheduling to initialize the scheduler
Auto Trait Implementations§
impl Freeze for BlobFieldScheduler
impl !RefUnwindSafe for BlobFieldScheduler
impl Send for BlobFieldScheduler
impl Sync for BlobFieldScheduler
impl Unpin for BlobFieldScheduler
impl !UnwindSafe for BlobFieldScheduler
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> 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 more