pub struct SchemaMapping { /* private fields */ }
Expand description
The SchemaMapping struct holds a mapping from the file schema to the table schema and any necessary type conversions.
Note, because map_batch
and map_partial_batch
functions have different
needs, this struct holds two schemas:
- The projected table schema
- The full table schema
map_batch
is used by the ParquetOpener to produce a RecordBatch which
has the projected schema, since that’s the schema which is supposed to come
out of the execution of this query. Thus map_batch
uses
projected_table_schema
as it can only operate on the projected fields.
map_partial_batch
is used to create a RecordBatch with a schema that
can be used for Parquet predicate pushdown, meaning that it may contain
fields which are not in the projected schema (as the fields that parquet
pushdown filters operate can be completely distinct from the fields that are
projected (output) out of the ParquetSource). map_partial_batch
thus uses
table_schema
to create the resulting RecordBatch (as it could be operating
on any fields in the schema).
Trait Implementations§
Source§impl Debug for SchemaMapping
impl Debug for SchemaMapping
Source§impl SchemaMapper for SchemaMapping
impl SchemaMapper for SchemaMapping
Source§fn map_batch(&self, batch: RecordBatch) -> Result<RecordBatch>
fn map_batch(&self, batch: RecordBatch) -> Result<RecordBatch>
Adapts a RecordBatch
to match the projected_table_schema
using the stored mapping and
conversions. The produced RecordBatch has a schema that contains only the projected
columns, so if one needs a RecordBatch with a schema that references columns which are not
in the projected, it would be better to use map_partial_batch
Source§fn map_partial_batch(&self, batch: RecordBatch) -> Result<RecordBatch>
fn map_partial_batch(&self, batch: RecordBatch) -> Result<RecordBatch>
Adapts a RecordBatch
’s schema into one that has all the correct output types and only
contains the fields that exist in both the file schema and table schema.
Unlike map_batch
this method also preserves the columns that
may not appear in the final output (projected_table_schema
) but may
appear in push down predicates
Auto Trait Implementations§
impl Freeze for SchemaMapping
impl RefUnwindSafe for SchemaMapping
impl Send for SchemaMapping
impl Sync for SchemaMapping
impl Unpin for SchemaMapping
impl UnwindSafe for SchemaMapping
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
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>
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>
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