pub struct TableConfiguration { /* private fields */ }internal-api only.Expand description
Holds all the configuration for a table at a specific version. This includes the supported
reader and writer features, table properties, schema, version, and table root. This can be used
to check whether a table supports a feature or has it enabled. For example, deletion vector
support can be checked with TableConfiguration::is_deletion_vector_supported and deletion
vector write enablement can be checked with TableConfiguration::is_deletion_vector_enabled.
TableConfiguration performs checks upon construction with TableConfiguration::try_new
to validate that Metadata and Protocol are correctly formatted and mutually compatible. If
try_new successfully returns TableConfiguration, it is also guaranteed that reading the
table is supported.
Implementations§
Source§impl TableConfiguration
impl TableConfiguration
Sourcepub fn try_new(
metadata: Metadata,
protocol: Protocol,
table_root: Url,
version: Version,
) -> DeltaResult<Self>
pub fn try_new( metadata: Metadata, protocol: Protocol, table_root: Url, version: Version, ) -> DeltaResult<Self>
Constructs a TableConfiguration for a table located in table_root at version.
This validates that the Metadata and Protocol are compatible with one another
and that the kernel supports reading from this table.
Note: This only returns successfully if kernel supports reading the table. It’s important
to do this validation in try_new because all table accesses must first construct
the TableConfiguration. This ensures that developers never forget to check that kernel
supports reading the table, and that all table accesses are legal.
Note: In the future, we will perform stricter checks on the set of reader and writer features. In particular, we will check that: - Non-legacy features must appear in both reader features and writer features lists. If such a feature is present, the reader version and writer version must be 3, and 5 respectively. - Legacy reader features occur when the reader version is 3, but the writer version is either 5 or 6. In this case, the writer feature list must be empty. - Column mapping is the only legacy feature present in kernel. No future delta versions will introduce new legacy features. See: https://github.com/delta-io/delta-kernel-rs/issues/650
Sourcepub fn schema(&self) -> SchemaRef
pub fn schema(&self) -> SchemaRef
The logical schema (SchemaRef) of this table at this version.
Sourcepub fn table_properties(&self) -> &TableProperties
pub fn table_properties(&self) -> &TableProperties
The TableProperties of this table at this version.
Sourcepub fn column_mapping_mode(&self) -> ColumnMappingMode
pub fn column_mapping_mode(&self) -> ColumnMappingMode
The ColumnMappingMode for this table at this version.
Sourcepub fn table_root(&self) -> &Url
pub fn table_root(&self) -> &Url
The Url of the table this TableConfiguration belongs to
Sourcepub fn version(&self) -> Version
pub fn version(&self) -> Version
The Version which this TableConfiguration belongs to.
Sourcepub fn ensure_write_supported(&self) -> DeltaResult<()>
pub fn ensure_write_supported(&self) -> DeltaResult<()>
Returns true if the kernel supports writing to this table. This checks that the
protocol’s writer features are all supported.
Sourcepub fn is_cdf_read_supported(&self) -> bool
pub fn is_cdf_read_supported(&self) -> bool
Returns true if kernel supports reading Change Data Feed on this table.
See the documentation of TableChanges for more details.
Sourcepub fn is_deletion_vector_supported(&self) -> bool
pub fn is_deletion_vector_supported(&self) -> bool
Returns true if deletion vectors is supported on this table. To support deletion vectors,
a table must support reader version 3, writer version 7, and the deletionVectors feature in
both the protocol’s readerFeatures and writerFeatures.
See: https://github.com/delta-io/delta/blob/master/PROTOCOL.md#deletion-vectors
Sourcepub fn is_deletion_vector_enabled(&self) -> bool
pub fn is_deletion_vector_enabled(&self) -> bool
Returns true if writing deletion vectors is enabled for this table. This is the case
when the deletion vectors is supported on this table and the delta.enableDeletionVectors
table property is set to true.
See: https://github.com/delta-io/delta/blob/master/PROTOCOL.md#deletion-vectors
Trait Implementations§
Source§impl Clone for TableConfiguration
impl Clone for TableConfiguration
Source§fn clone(&self) -> TableConfiguration
fn clone(&self) -> TableConfiguration
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TableConfiguration
impl Debug for TableConfiguration
Source§impl PartialEq for TableConfiguration
impl PartialEq for TableConfiguration
impl Eq for TableConfiguration
impl StructuralPartialEq for TableConfiguration
Auto Trait Implementations§
impl Freeze for TableConfiguration
impl RefUnwindSafe for TableConfiguration
impl Send for TableConfiguration
impl Sync for TableConfiguration
impl Unpin for TableConfiguration
impl UnwindSafe for TableConfiguration
Blanket Implementations§
Source§impl<T> AsAny for T
impl<T> AsAny for T
Source§fn any_ref(&self) -> &(dyn Any + Sync + Send + 'static)
fn any_ref(&self) -> &(dyn Any + Sync + Send + 'static)
dyn Any reference to the object: Read moreSource§fn as_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send>
fn as_any(self: Arc<T>) -> Arc<dyn Any + Sync + Send>
Arc<dyn Any> reference to the object: Read moreSource§fn into_any(self: Box<T>) -> Box<dyn Any + Sync + Send>
fn into_any(self: Box<T>) -> Box<dyn Any + Sync + Send>
Box<dyn Any>: Read moreSource§fn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
std::any::type_name, since Any does not provide it and
Any::type_id is useless as a debugging aid (its Debug is just a mess of hex digits).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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DynPartialEq for T
impl<T> DynPartialEq for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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>
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 moreSource§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<KernelType, ArrowType> TryIntoArrow<ArrowType> for KernelTypewhere
ArrowType: TryFromKernel<KernelType>,
impl<KernelType, ArrowType> TryIntoArrow<ArrowType> for KernelTypewhere
ArrowType: TryFromKernel<KernelType>,
Source§fn try_into_arrow(self) -> Result<ArrowType, ArrowError>
fn try_into_arrow(self) -> Result<ArrowType, ArrowError>
default-engine-native-tls or default-engine-rustls or arrow-conversion) and crate feature arrow-conversion only.Source§impl<KernelType, ArrowType> TryIntoKernel<KernelType> for ArrowTypewhere
KernelType: TryFromArrow<ArrowType>,
impl<KernelType, ArrowType> TryIntoKernel<KernelType> for ArrowTypewhere
KernelType: TryFromArrow<ArrowType>,
Source§fn try_into_kernel(self) -> Result<KernelType, ArrowError>
fn try_into_kernel(self) -> Result<KernelType, ArrowError>
default-engine-native-tls or default-engine-rustls or arrow-conversion) and crate feature arrow-conversion only.