SplitProjection

Struct SplitProjection 

Source
pub struct SplitProjection {
    pub source: ProjectionExprs,
    pub file_indices: Vec<usize>,
    /* private fields */
}
Expand description

At a high level the goal of SplitProjection is to take a ProjectionExprs meant to be applied to the table schema and split that into:

  • The projection indices into the file schema (file_indices)

  • The projection indices into the partition values (partition_value_indices), which pre-compute both the index into the table schema and the index into the partition values array

  • A remapped projection that can be applied after the file projection is applied This remapped projection has the following properties:

    • Column indices referring to file columns are remapped to [0..file_indices.len())
    • Column indices referring to partition columns are remapped to [file_indices.len()..)

    This allows the ProjectionOpener to easily identify which columns in the remapped projection refer to partition columns and substitute them with literals from the partition values.

Fields§

§source: ProjectionExprs

The original projection this SplitProjection was derived from

§file_indices: Vec<usize>

Column indices to read from file (public for file sources)

Implementations§

Source§

impl SplitProjection

Source

pub fn unprojected(table_schema: &TableSchema) -> Self

Source

pub fn new(logical_file_schema: &Schema, projection: &ProjectionExprs) -> Self

Creates a new SplitProjection by splitting a projection into simple file column indices and a remainder projection that is applied after reading the file.

In other words: we get a Vec<usize> projection that is meant to be applied on top of file_schema and a remainder projection that is applied to the result of that first projection.

Here file_schema is expected to be the logical schema of the file, that is the table schema minus any partition columns. Partition columns are always expected to be at the end of the table schema. Note that file_schema is not the physical schema of the file.

Trait Implementations§

Source§

impl Clone for SplitProjection

Source§

fn clone(&self) -> SplitProjection

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SplitProjection

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> ErasedDestructor for T
where T: 'static,