Skip to main content

Table

Struct Table 

Source
pub struct Table { /* private fields */ }
Expand description

An exact immutable table version.

Writing a table produces its next version without publishing it: nothing changes in the Catalog until a Commit stages the new version and publishes.

Implementations§

Source§

impl Table

Source

pub async fn write_blob( &self, media_type: &str, max_bytes: u64, input: BlobStream, ) -> Result<Blob, Error>

Stream a dedicated payload into this Table’s storage before publishing its row.

Enforces max_bytes while consuming the stream. Failure returns no reference; cancellation aborts an active upload when possible. A process crash may leave an unreferenced object for retention cleanup. This does not publish a row.

Source

pub async fn stat_blob(&self, blob: &Blob) -> Result<BlobStat, Error>

What storage holds for an owned payload, without reading its bytes.

Source

pub async fn read_blob( &self, blob: &Blob, range: Option<Range<u64>>, ) -> Result<BlobStream, Error>

Stream an owned payload or range using this client’s current read authorization. A complete read verifies its digest; a range verifies its returned length.

Source§

impl Table

Source

pub async fn plan_changes( &self, since: &Table, columns: Option<Vec<String>>, ) -> Result<ChangePlan, Error>

How this version changed since since, from version metadata only: for each fragment, whether since has it at the same positions, with the row IDs patched and deleted since, or whether it was added since, with the row IDs appended since and those a rewrite carried over. columns names the columns whose changes count; all when absent. since must be this version or one of its ancestors.

Source

pub async fn changes_since( &self, since: &Table, options: ChangeOptions, ) -> Result<Scan, Error>

The rows that changed since since, with their ChangeKind and row ID, as one scan.

A row a rewrite carried without changing it is not reported; across an overwrite of the whole table every old row is deleted and every new row inserted. The filter applies to each image, and an update is reported when either image matches. Before images are read from since with the same columns and must have this version’s names and types there. The scan has no splits to read by work item.

Source§

impl Table

Source

pub async fn column_writer( &self, fields: SchemaRef, ) -> Result<ColumnWrite, Error>

Begin writing values for new nullable fields of this table, which join its schema in its next version. Rows the write gives no values read NULL, so values may follow over several versions.

Source

pub async fn add_columns( &self, columns: Vec<NamedExpression>, ) -> Result<Table, Error>

Write the next version of this table with a new nullable column for each of columns, filled for every row with the expression’s value over that row.

Each fragment is read in stored order with the expressions as its projection and written whole, several fragments at once.

Source§

impl Table

Source

pub async fn merge_rows( &self, source: impl IntoArrowStream, on: &[&str], actions: MergeActions, ) -> Result<MergedRows, Error>

Write the next version of this table with source merged into it by the on columns, as actions say: one version with every patch, deletion and appended row.

The source is held in memory, so a merge suits batches of upserts; join larger sources in DataFusion. Duplicate source keys are an error, and null keys match nothing. One source row may match several table rows and updates all of them. A matched row whose values are unchanged is not written. Unless unmatched table rows are deleted, the table scan is pruned by the bounds of the source’s integer and string keys. When nothing changes, nothing is written and the result holds this table.

Source§

impl Table

Source

pub fn identity(&self) -> TableIdentity

Exact immutable identity selected by this handle.

Source

pub fn resolved_address(&self) -> Option<&ResourceAddress>

Canonical path@v<version> provenance, when opened through a resource path. Tables opened by IDs, and versions written from a table, have no resource path.

Source

pub async fn maintain(&self, run: Run) -> Result<Option<TaskHandle>, Error>

Submit maintenance of this table’s latest version on the branch it was opened from.

Maintenance compacts and reclusters, publishing each step as a new version; its result lists them. Returns None when maintenance of this table and branch is already waiting to run.

Source

pub async fn scan(&self, options: ScanOptions) -> Result<Scan, Error>

Open a scan with fixed projection, predicate, schema, and execution binding.

Metadata is resolved once. Batches are read when its streams are polled.

Source

pub async fn append(&self, input: impl IntoArrowStream) -> Result<Table, Error>

Write the next version of this table: its rows followed by input.

Source

pub async fn overwrite( &self, input: impl IntoArrowStream, ) -> Result<Table, Error>

Write the next version of this table with only the rows of input.

Source

pub async fn delete_rows( &self, filter: Option<Expression>, ) -> Result<DeletedRows, Error>

Write the next version of this table without the visible rows matching filter, or without any rows when there is no filter.

Retained rows keep their stable row IDs. When no row matches, nothing is written and the result holds this table. Unsupported predicates fail before anything is written.

Source

pub async fn recover_write( &self, receipt: PreparedWriteReceipt, ) -> Result<Table, Error>

Register a version of this table that a write prepared but whose registration outcome was unknown (Error::RegistrationUnknown), without uploading its rows again.

Source§

impl Table

Source

pub async fn schema(&self) -> Result<SchemaRef, Error>

This version’s Arrow schema. It plans a scan but reads no rows.

Source

pub async fn alter_schema( &self, changes: impl IntoIterator<Item = SchemaChange>, ) -> Result<Table, Error>

Write the next version of this table with changes applied to its schema, in order, without writing data files. Every change is checked against this version before anything is written; with no changes the result is this table.

Source

pub async fn patch_rows( &self, filter: Option<Expression>, set: Vec<NamedExpression>, ) -> Result<UpdatedRows, Error>

Write the next version of this table with the values of set in the visible rows that match filter, or in every row without a filter, recorded as patches beside the data.

Each assignment names an existing column and must evaluate to its stored type; nothing is cast. Rows keep their row IDs. When no row matches, nothing is written and the result holds this table.

Source§

impl Table

Source

pub async fn writer(&self) -> Result<TableWrite, Error>

Begin the next version of this table: its rows, edited by the patches and deletions the write takes, followed by every appended row.

Trait Implementations§

Source§

impl Clone for Table

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Table

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Table

§

impl !UnwindSafe for Table

§

impl Freeze for Table

§

impl Send for Table

§

impl Sync for Table

§

impl Unpin for Table

§

impl UnsafeUnpin for Table

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + 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: Sized + 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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