Skip to main content

WriteParams

Struct WriteParams 

Source
pub struct WriteParams {
Show 24 fields pub max_rows_per_file: usize, pub max_rows_per_group: usize, pub max_bytes_per_file: usize, pub mode: WriteMode, pub store_params: Option<ObjectStoreParams>, pub base_store_params: Option<HashMap<String, ObjectStoreParams>>, pub progress: Arc<dyn WriteFragmentProgress>, pub write_progress: Option<WriteProgressFn>, pub commit_handler: Option<Arc<dyn CommitHandler>>, pub data_storage_version: Option<LanceFileVersion>, pub enable_stable_row_ids: bool, pub enable_v2_manifest_paths: bool, pub session: Option<Arc<Session>>, pub auto_cleanup: Option<AutoCleanupParams>, pub skip_auto_cleanup: bool, pub transaction_properties: Option<Arc<HashMap<String, String>>>, pub initial_bases: Option<Vec<BasePath>>, pub target_bases: Option<Vec<u32>>, pub target_base_names_or_paths: Option<Vec<String>>, pub target_all_bases: Option<bool>, pub allow_external_blob_outside_bases: bool, pub external_blob_mode: ExternalBlobMode, pub blob_pack_file_size_threshold: Option<usize>, pub file_writer_options: Option<FileWriterOptions>,
}
Expand description

Dataset Write Parameters

Fields§

§max_rows_per_file: usize

Max number of records per file.

§max_rows_per_group: usize

Max number of rows per row group.

§max_bytes_per_file: usize

Max file size in bytes.

This is a soft limit. The actual file size may be larger than this value by a few megabytes, since once we detect we hit this limit, we still need to flush the footer.

This limit is checked after writing each group, so if max_rows_per_group is set to a large value, this limit may be exceeded by a large amount.

The default is 90 GB. If you are using an object store such as S3, we currently have a hard 100 GB limit.

§mode: WriteMode

Write mode

§store_params: Option<ObjectStoreParams>

Default object store params for the write.

Storage options may carry base-scoped entries (base_<id>.<key>) that apply only to the registered base path with that id, overriding the unscoped options that every base inherits.

§base_store_params: Option<HashMap<String, ObjectStoreParams>>

Exact object store params per base path URI, taking precedence over base_<id>.<key> storage options in Self::store_params. See Self::with_base_store_params.

§progress: Arc<dyn WriteFragmentProgress>§write_progress: Option<WriteProgressFn>

Optional callback invoked after each batch is written.

Receives cumulative WriteStats so callers can render a progress bar or compute throughput. The callback must be cheap and non-blocking; spawn a task if you need async work.

§commit_handler: Option<Arc<dyn CommitHandler>>

If present, dataset will use this to update the latest version

If not set, the default will be based on the object store. Generally this will be RenameCommitHandler unless the object store does not handle atomic renames (e.g. S3)

If a custom object store is provided (via store_params.object_store) then this must also be provided.

§data_storage_version: Option<LanceFileVersion>

The format version to use when writing data.

Newer versions are more efficient but the data can only be read by more recent versions of lance. Lance file version 2.3 enables RLE v2 run length widths by default.

For an existing dataset, an explicit version is the exact target for this operation; if omitted, the manifest default storage version is used. New datasets default to the latest stable version.

§enable_stable_row_ids: bool

Experimental: if set to true, the writer will use stable row ids. These row ids are stable after compaction operations, but not after updates. This makes compaction more efficient, since with stable row ids no secondary indices need to be updated to point to new row ids.

§enable_v2_manifest_paths: bool

If set to true, and this is a new dataset, uses the new v2 manifest paths. These allow constant-time lookups for the latest manifest on object storage. This parameter has no effect on existing datasets. To migrate an existing dataset, use the super::Dataset::migrate_manifest_paths_v2 method. Default is True.

§session: Option<Arc<Session>>§auto_cleanup: Option<AutoCleanupParams>

If Some and this is a new dataset, old dataset versions will be automatically cleaned up after commits according to the parameters set out in AutoCleanupParams. This parameter has no effect on existing datasets. To add auto-cleanup to an existing dataset, use Dataset::update_config to set lance.auto_cleanup.interval and lance.auto_cleanup.older_than. Both parameters must be set to invoke auto-cleanup.

Defaults to None (auto-cleanup disabled). Enabling it makes every interval-th commit run a full cleanup pass, which lists and reads every manifest in the dataset even when nothing is old enough to delete; on object stores this adds noticeable per-commit latency that grows with the version count. Prefer calling Dataset::cleanup_old_versions explicitly when you actually need to reclaim space.

§skip_auto_cleanup: bool

If true, skip auto cleanup during commits. This should be set to true for high frequency writes to improve performance. This is also useful if the writer does not have delete permissions and the clean up would just try and log a failure anyway. Default is false.

§transaction_properties: Option<Arc<HashMap<String, String>>>

Configuration key-value pairs for this write operation. This can include commit messages, engine information, etc. this properties map will be persisted as part of Transaction object.

§initial_bases: Option<Vec<BasePath>>

New base paths to register in the manifest during dataset creation. Each BasePath must have a properly assigned ID (non-zero). Only used in CREATE/OVERWRITE modes for manifest registration. IDs should be assigned by the caller before passing to WriteParams.

§target_bases: Option<Vec<u32>>

Target base IDs for writing data files. When provided, all new data files will be written to bases with these IDs. Used in all modes (CREATE, APPEND, OVERWRITE) to specify where data should be written. The IDs must correspond to either:

  • IDs in initial_bases (for CREATE/OVERWRITE modes)
  • IDs already registered in the existing dataset manifest (for APPEND mode)
  • PRIMARY_BASE_ID (0), which targets the dataset’s primary storage and participates in the round-robin like any other entry
§target_base_names_or_paths: Option<Vec<String>>

Target base names or paths as strings (unresolved). These will be resolved to IDs when the write operation executes. Resolution happens at builder execution time when dataset context is available. An entry equal to the dataset’s URI targets the dataset’s primary storage.

§target_all_bases: Option<bool>

Target every base registered in the dataset manifest, resolved when the write executes. Some(include_primary): when include_primary is true the dataset’s primary storage participates in the rotation as the first slot. Cannot be combined with target_bases or target_base_names_or_paths.

§allow_external_blob_outside_bases: bool

Allow writing external blob URIs that cannot be mapped to any registered non-dataset-root base path. When disabled, such rows are rejected.

§external_blob_mode: ExternalBlobMode

The strategy used when writing external blob URIs.

§blob_pack_file_size_threshold: Option<usize>

Maximum size in bytes for blob v2 pack (.blob) sidecar files. When a pack file reaches this size, a new one is started. If not set, defaults to 1 GiB.

§file_writer_options: Option<FileWriterOptions>

File writer options to use when writing data files.

Options set here apply to current-format data files. They have no effect when writing legacy V1 files. If not set, the file writer uses its configured defaults.

Implementations§

Source§

impl WriteParams

Source

pub fn with_storage_version(version: LanceFileVersion) -> Self

Create a new WriteParams with the given storage version. The other fields are set to their default values.

Source

pub fn storage_version_or_default(&self) -> ConcreteFileVersion

Source

pub fn store_registry(&self) -> Arc<ObjectStoreRegistry> ⓘ

Source

pub fn with_base_store_params( self, base_path: impl AsRef<str>, store_params: ObjectStoreParams, ) -> Self

Set exact runtime object store params for a registered base path.

These params are used as-is for that base, taking precedence over base_<id>.<key> storage options in store_params. The write-level default store_params remain the fallback for bases without an explicit binding.

Source

pub fn with_transaction_properties( self, properties: HashMap<String, String>, ) -> Self

Set the properties for this WriteParams.

Source

pub fn with_initial_bases(self, bases: Vec<BasePath>) -> Self

Set the initial_bases for this WriteParams.

This specifies new base paths to register in the manifest during dataset creation. Each BasePath must have a properly assigned ID (non-zero) before calling this method. Only used in CREATE/OVERWRITE modes for manifest registration.

Source

pub fn with_target_bases(self, base_ids: Vec<u32>) -> Self

Set the target_bases for this WriteParams.

This specifies the base IDs where data files should be written. The IDs must correspond to either:

  • IDs in initial_bases (for CREATE/OVERWRITE modes)
  • IDs already registered in the existing dataset manifest (for APPEND mode)
Source

pub fn with_target_base_names_or_paths(self, references: Vec<String>) -> Self

Store target base names or paths for deferred resolution.

This method stores the references in target_base_names_or_paths field to be resolved later at execution time when the dataset manifest is available.

Resolution will happen at write execution time and will try to match:

  1. initial_bases by name
  2. initial_bases by path
  3. existing manifest by name
  4. existing manifest by path
§Arguments
  • references - Vector of base names or paths to be resolved later
Source

pub fn with_target_all_bases(self, include_primary: bool) -> Self

Target every base registered in the dataset manifest, resolved when the write executes. When include_primary is true the dataset’s primary storage participates in the rotation as the first slot.

Cannot be combined with Self::with_target_bases or Self::with_target_base_names_or_paths.

Source

pub fn with_allow_external_blob_outside_bases(self, allow: bool) -> Self

Configure whether external blobs outside registered bases are allowed.

Source

pub fn with_external_blob_mode(self, mode: ExternalBlobMode) -> Self

Configure how external blob URIs are handled during writes.

Source

pub fn with_blob_pack_file_size_threshold(self, max_bytes: usize) -> Self

Set the maximum size in bytes for blob v2 pack (.blob) sidecar files.

Trait Implementations§

Source§

impl Clone for WriteParams

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 WriteParams

Source§

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

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

impl Default for WriteParams

Source§

fn default() -> Self

Returns the “default value” for a type. 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<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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<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