Skip to main content

Schema

Struct Schema 

Source
pub struct Schema {
    pub fields: Vec<Field>,
    pub metadata: HashMap<String, String>,
}
Expand description

Lance Schema.

Fields§

§fields: Vec<Field>

Top-level fields in the dataset.

§metadata: HashMap<String, String>

Metadata of the schema

Implementations§

Source§

impl Schema

Source

pub fn unenforced_primary_key(&self) -> Vec<&Field>

The unenforced primary key fields in the schema, ordered by position.

Fields with explicit positions (1, 2, 3, …) are ordered by their position value. Fields without explicit positions (using the legacy boolean flag) are ordered by their schema field id and come after fields with explicit positions.

Source

pub fn compare_with_options( &self, expected: &Schema, options: &SchemaCompareOptions, ) -> bool

Source

pub fn explain_difference( &self, expected: &Schema, options: &SchemaCompareOptions, ) -> Option<String>

Source

pub fn has_dictionary_types(&self) -> bool

Source

pub fn check_compatible( &self, expected: &Schema, options: &SchemaCompareOptions, ) -> Result<(), Error>

Source

pub fn to_compact_string(&self, indent: Indentation) -> String

Convert to a compact string representation.

This is intended for display purposes and not for serialization.

Source

pub fn resolve(&self, column: impl AsRef<str>) -> Option<Vec<&Field>>

Given a string column reference, resolve the path of fields

For example, given a.b.c we will return the fields [a, b, c] Field names containing dots must be quoted: parent.“child.with.dot”

Returns None if we can’t find a segment at any point

Source

pub fn project<T>(&self, columns: &[T]) -> Result<Schema, Error>
where T: AsRef<str>,

Project the columns over the schema.

let schema = Schema::from(...);
let projected = schema.project(&["col1", "col2.sub_col3.field4"])?;
Source

pub fn project_or_drop<T>(&self, columns: &[T]) -> Result<Schema, Error>
where T: AsRef<str>,

Project the columns over the schema, dropping unrecognized columns

Source

pub fn project_preserve_system_columns<T>( &self, columns: &[T], ) -> Result<Schema, Error>
where T: AsRef<str>,

Project the columns over the schema, preserving system columns.

Source

pub fn validate(&self) -> Result<(), Error>

Check that the top level fields don’t contain . in their names to distinguish from nested fields.

Source

pub fn intersection(&self, other: &Schema) -> Result<Schema, Error>

Intersection between two Schema.

Source

pub fn intersection_ignore_types(&self, other: &Schema) -> Result<Schema, Error>

Intersection between two Schema, ignoring data types.

Source

pub fn fields_pre_order(&self) -> impl Iterator<Item = &Field>

Iterates over the fields using a pre-order traversal

This is a DFS traversal where the parent is visited before its children

Source

pub fn field_paths(&self) -> Vec<String>

Get all field paths in the schema as a list of strings.

This returns all field paths in the schema, including nested fields. For example, if there’s a struct field “user” with a field “name”, this will return “user.name” as one of the paths.

Source

pub fn project_by_ids( &self, column_ids: &[i32], include_all_children: bool, ) -> Schema

Returns a new schema that only contains the fields in column_ids.

This projection can filter out both top-level and nested fields

If include_all_children is true, then if a parent field id is passed, then all children of that field will be included in the projection regardless of whether their ids were passed. If this is false, then only the child fields with the passed ids will be included.

Source

pub fn project_by_schema<S>( &self, projection: S, on_missing: OnMissing, on_type_mismatch: OnTypeMismatch, ) -> Result<Schema, Error>
where S: TryInto<Schema, Error = Error>,

Project the schema by another schema, and preserves field metadata, i.e., Field IDs.

Parameters

Source

pub fn exclude<T>(&self, schema: T) -> Result<Schema, Error>
where T: TryInto<Schema> + Debug,

Exclude the fields from other Schema, and returns a new Schema.

Source

pub fn field(&self, name: &str) -> Option<&Field>

Get a field by its path. Return None if the field does not exist. Field names containing dots must be quoted: parent.“child.with.dot”

Source

pub fn field_case_insensitive(&self, name: &str) -> Option<&Field>

Get a field by its path, with case-insensitive matching.

This first tries an exact match, then falls back to case-insensitive matching. Returns the actual field from the schema (preserving original case). Field names containing dots must be quoted: parent.“child.with.dot”

Source

pub fn resolve_case_insensitive( &self, column: impl AsRef<str>, ) -> Option<Vec<&Field>>

Given a string column reference, resolve the path of fields with case-insensitive matching.

This first tries an exact match, then falls back to case-insensitive matching. Returns the actual fields from the schema (preserving original case).

Source

pub fn field_id(&self, column: &str) -> Result<i32, Error>

Source

pub fn top_level_field_ids(&self) -> Vec<i32>

Source

pub fn field_ids(&self) -> Vec<i32>

Source

pub fn field_by_id_mut(&mut self, id: impl Into<i32>) -> Option<&mut Field>

Get field by its id.

Source

pub fn field_by_id(&self, id: impl Into<i32>) -> Option<&Field>

Source

pub fn field_ancestry_by_id(&self, id: i32) -> Option<Vec<&Field>>

Get the sequence of fields from the root to the field with the given id.

Source

pub fn mut_field_by_id(&mut self, id: impl Into<i32>) -> Option<&mut Field>

Source

pub fn max_field_id(&self) -> Option<i32>

Get the maximum field id in the schema.

Note: When working with Datasets, you should prefer Manifest::max_field_id() over this method. This method does not take into account the field IDs of dropped fields.

Source

pub fn set_dictionary(&mut self, batch: &RecordBatch) -> Result<(), Error>

Recursively attach set up dictionary values to the dictionary fields.

Source

pub fn set_field_id(&mut self, max_existing_id: Option<i32>)

Walk through the fields and assign a new field id to each field that does not have one (e.g. is set to -1)

If this schema is on an existing dataset, pass the result of Manifest::max_field_id to max_existing_id. If for some reason that id is lower than the maximum field id in this schema, the field IDs will be reassigned starting from the maximum field id in this schema.

If this schema is not associated with a dataset, pass None to max_existing_id. This is the same as passing Self::max_field_id().

Source

pub fn extend(&mut self, fields: &[Field]) -> Result<(), Error>

Create a new schema by adding fields to the end of this schema

Source

pub fn merge<S>(&self, other: S) -> Result<Schema, Error>
where S: TryInto<Schema, Error = Error>,

Merge this schema from the other schema.

After merging, the field IDs from other schema will be reassigned, following the fields in self.

Source

pub fn all_fields_nullable(&self) -> bool

Source

pub fn field_path(&self, field_id: i32) -> Result<String, Error>

Returns the properly formatted path from root to the field. Field names containing dots are quoted (e.g., struct.field.with.dot)

Source

pub fn verify_primary_key(&self) -> Result<(), Error>

Trait Implementations§

Source§

impl Clone for Schema

Source§

fn clone(&self) -> Schema

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 Schema

Source§

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

Formats the value using the given formatter. Read more
Source§

impl DeepSizeOf for Schema

Source§

fn deep_size_of_children(&self, context: &mut Context) -> usize

Returns an estimation of the heap-managed storage of this object. This does not include the size of the object itself. Read more
Source§

fn deep_size_of(&self) -> usize

Returns an estimation of a total size of memory owned by the object, including heap-managed storage. Read more
Source§

impl Default for Schema

Source§

fn default() -> Schema

Returns the “default value” for a type. Read more
Source§

impl Display for Schema

Source§

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

Formats the value using the given formatter. Read more
Source§

impl From<&Fields> for Schema

Convert list of protobuf Field to a Schema.

Source§

fn from(fields: &Fields) -> Schema

Converts to this type from the input type.
Source§

impl From<FieldsWithMeta> for Schema

Convert list of protobuf Field and Metadata to a Schema.

Source§

fn from(fields_with_meta: FieldsWithMeta) -> Schema

Converts to this type from the input type.
Source§

impl From<Schema> for ProjectionRequest

Source§

fn from(schema: Schema) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for Schema

Source§

fn eq(&self, other: &Schema) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Projectable for Schema

Source§

fn schema(&self) -> &Schema

Source§

impl TryFrom<&Schema> for Schema

Convert arrow2::datatype::Schema to Lance

Source§

type Error = Error

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

fn try_from(schema: &Schema) -> Result<Schema, Error>

Performs the conversion.
Source§

impl TryFrom<&Schema> for Schema

Make API cleaner to accept both Schema and Arrow Schema.

Source§

type Error = Error

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

fn try_from(schema: &Schema) -> Result<Schema, Error>

Performs the conversion.

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> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

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

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

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

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

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Sync + Send>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> Fruit for T
where T: Send + Downcast,