Skip to main content

Operation

Enum Operation 

Source
pub enum Operation {
Show 16 variants Append { fragments: Vec<Fragment>, }, Delete { updated_fragments: Vec<Fragment>, deleted_fragment_ids: Vec<u64>, predicate: String, }, Overwrite { fragments: Vec<Fragment>, schema: Schema, config_upsert_values: Option<HashMap<String, String>>, initial_bases: Option<Vec<BasePath>>, }, CreateIndex { new_indices: Vec<IndexMetadata>, removed_indices: Vec<IndexMetadata>, }, Rewrite { groups: Vec<RewriteGroup>, rewritten_indices: Vec<RewrittenIndex>, frag_reuse_index: Option<IndexMetadata>, }, DataReplacement { replacements: Vec<DataReplacementGroup>, }, DataOverlay { groups: Vec<DataOverlayGroup>, }, Merge { fragments: Vec<Fragment>, schema: Schema, }, Restore { version: u64, }, ReserveFragments { num_fragments: u32, }, Update { removed_fragment_ids: Vec<u64>, updated_fragments: Vec<Fragment>, new_fragments: Vec<Fragment>, fields_modified: Vec<u32>, merged_generations: Vec<MergedGeneration>, fields_for_preserving_frag_bitmap: Vec<u32>, update_mode: Option<UpdateMode>, inserted_rows_filter: Option<KeyExistenceFilter>, updated_fragment_offsets: Option<UpdatedFragmentOffsets>, }, Project { schema: Schema, }, UpdateConfig { config_updates: Option<UpdateMap>, table_metadata_updates: Option<UpdateMap>, schema_metadata_updates: Option<UpdateMap>, field_metadata_updates: HashMap<i32, UpdateMap>, }, UpdateMemWalState { merged_generations: Vec<MergedGeneration>, }, Clone { is_shallow: bool, ref_name: Option<String>, ref_version: u64, ref_path: String, branch_name: Option<String>, }, UpdateBases { new_bases: Vec<BasePath>, },
}
Expand description

An operation on a dataset.

Variants§

§

Append

Adding new fragments to the dataset. The fragments contained within haven’t yet been assigned a final ID.

Fields

§fragments: Vec<Fragment>
§

Delete

Updated fragments contain those that have been modified with new deletion files. The deleted fragment IDs are those that should be removed from the manifest.

Fields

§updated_fragments: Vec<Fragment>
§deleted_fragment_ids: Vec<u64>
§predicate: String
§

Overwrite

Overwrite the entire dataset with the given fragments. This is also used when initially creating a table.

Fields

§fragments: Vec<Fragment>
§schema: Schema
§config_upsert_values: Option<HashMap<String, String>>
§initial_bases: Option<Vec<BasePath>>
§

CreateIndex

A new index has been created.

Fields

§new_indices: Vec<IndexMetadata>

The new secondary indices, any existing indices with the same name will be replaced.

§removed_indices: Vec<IndexMetadata>

The indices that have been modified.

§

Rewrite

Data is rewritten but not modified. This is used for things like compaction or re-ordering. Contains the old fragments and the new ones that have been replaced.

This operation will modify the row addresses of existing rows and so any existing index covering a rewritten fragment will need to be remapped.

Fields

§groups: Vec<RewriteGroup>

Groups of fragments that have been modified

§rewritten_indices: Vec<RewrittenIndex>

Indices that have been updated with the new row addresses

§frag_reuse_index: Option<IndexMetadata>

The fragment reuse index to be created or updated to

§

DataReplacement

Replace data in a column in the dataset with new data. This is used for null column population where we replace an entirely null column with a new column that has data.

This operation will only allow replacing files that contain the same schema e.g. if the original files contain columns A, B, C and the new files contain only columns A, B then the operation is not allowed. As we would need to split the original files into two files, one with column A, B and the other with column C.

Corollary to the above: the operation will also not allow replacing files unless the affected columns all have the same datafile layout across the fragments being replaced.

e.g. if fragments being replaced contain files with different schema layouts on the column being replaced, the operation is not allowed. say frag_1: [A] [B, C] and frag_2: [A, B] [C] and we are trying to replace column A with a new column A, the operation is not allowed.

Fields

§

DataOverlay

Attach overlay files to fragments, supplying new values for a subset of (physical offset, field) cells without rewriting the fragments’ base data files. See DataOverlayFile and the Data Overlay Files specification for resolution, coverage, and versioning rules.

Fields

§

Merge

Merge a new column in ‘fragments’ is the final fragments include all data files, the new fragments must align with old ones at rows. ‘schema’ is not forced to include existed columns, which means we could use Merge to drop column data

Fields

§fragments: Vec<Fragment>
§schema: Schema
§

Restore

Restore an old version of the database

Fields

§version: u64
§

ReserveFragments

Reserves fragment ids for future use This can be used when row ids need to be known before a transaction has been committed. It is used during a rewrite operation to allow indices to be remapped to the new row ids as part of the operation.

Fields

§num_fragments: u32
§

Update

Update values in the dataset.

Updates are generally vertical or horizontal.

A vertical update adds new rows. In this case, the updated_fragments will only have existing rows deleted and will not have any new fields added. All new data will be contained in new_fragments. This is what is used by a merge_insert that matches the whole schema and what is used by the dataset updater.

A horizontal update adds new columns. In this case, the updated fragments may have fields removed or added. It is even possible for a field to be tombstoned and then added back in the same update. (which is a field modification). If any fields are modified in this way then they need to be added to the fields_modified list. This way we can correctly update the indices. This is what is used by a merge insert that does not match the whole schema.

Fields

§removed_fragment_ids: Vec<u64>

Ids of fragments that have been moved

§updated_fragments: Vec<Fragment>

Fragments that have been updated

§new_fragments: Vec<Fragment>

Fragments that have been added

§fields_modified: Vec<u32>

The fields that have been modified

§merged_generations: Vec<MergedGeneration>

List of MemWAL region generations to mark as merged after this transaction

§fields_for_preserving_frag_bitmap: Vec<u32>

The fields that used to judge whether to preserve the new frag’s id into the frag bitmap of the specified indices.

§update_mode: Option<UpdateMode>

The mode of update

§inserted_rows_filter: Option<KeyExistenceFilter>

Optional filter for detecting conflicts on inserted row keys. Only tracks keys from INSERT operations during merge insert, not updates.

§updated_fragment_offsets: Option<UpdatedFragmentOffsets>

Physical row offsets (per fragment) that matched update_columns for RewriteColumns. None means callers did not supply offsets; build_manifest skips partial refresh then.

§

Project

Project to a new schema. This only changes the schema, not the data.

Fields

§schema: Schema
§

UpdateConfig

Update the dataset configuration.

Fields

§config_updates: Option<UpdateMap>
§table_metadata_updates: Option<UpdateMap>
§schema_metadata_updates: Option<UpdateMap>
§field_metadata_updates: HashMap<i32, UpdateMap>
§

UpdateMemWalState

Update merged generations in MemWAL index. This is used during merge-insert to atomically record which generations have been merged to the base table.

Fields

§merged_generations: Vec<MergedGeneration>
§

Clone

Clone a dataset.

Fields

§is_shallow: bool
§ref_name: Option<String>
§ref_version: u64
§ref_path: String
§branch_name: Option<String>
§

UpdateBases

Fields

§new_bases: Vec<BasePath>

The new base paths to add to the manifest.

Implementations§

Source§

impl Operation

Source

pub fn name(&self) -> &str

Trait Implementations§

Source§

impl Clone for Operation

Source§

fn clone(&self) -> Operation

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 Operation

Source§

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

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

impl DeepSizeOf for Operation

Source§

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

Source§

fn deep_size_of(&self) -> usize

Source§

impl Display for Operation

Source§

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

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

impl PartialEq for Operation

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. 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<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> ErasedDestructor for T
where T: 'static,

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