pub struct StructPatchBuilder<Item> { /* private fields */ }Expand description
Builds a sparse struct patch from a sequence of requested patch operations.
The builder records user intent, checks for conflicting destructive operations, and lowers
nested field paths into recursive struct patches. The same builder surface drives both
expression patching
(ExpressionStructPatchBuilder) and schema
patching (SchemaStructPatchBuilder); only the
terminal build step differs.
Implementations§
Source§impl<Item> StructPatchBuilder<Item>
impl<Item> StructPatchBuilder<Item>
Sourcepub fn new_nested(path: impl CollectInto<ColumnName>) -> Self
pub fn new_nested(path: impl CollectInto<ColumnName>) -> Self
Creates a new builder that operates on fields of a nested struct identified by path.
Sourcepub fn drop_at(
self,
struct_path: impl CollectInto<ColumnName>,
field_name: impl Into<String>,
) -> Self
pub fn drop_at( self, struct_path: impl CollectInto<ColumnName>, field_name: impl Into<String>, ) -> Self
Records a field drop in a nested struct.
Sourcepub fn drop_if_exists(self, field_name: impl Into<String>) -> Self
pub fn drop_if_exists(self, field_name: impl Into<String>) -> Self
Records an optional field drop.
Sourcepub fn drop_if_exists_at(
self,
struct_path: impl CollectInto<ColumnName>,
field_name: impl Into<String>,
) -> Self
pub fn drop_if_exists_at( self, struct_path: impl CollectInto<ColumnName>, field_name: impl Into<String>, ) -> Self
Records an optional field drop in a nested struct.
Sourcepub fn replace(
self,
field_name: impl Into<String>,
item: impl Into<Item>,
) -> Self
pub fn replace( self, field_name: impl Into<String>, item: impl Into<Item>, ) -> Self
Records a field replacement.
Sourcepub fn replace_at(
self,
struct_path: impl CollectInto<ColumnName>,
field_name: impl Into<String>,
item: impl Into<Item>,
) -> Self
pub fn replace_at( self, struct_path: impl CollectInto<ColumnName>, field_name: impl Into<String>, item: impl Into<Item>, ) -> Self
Records a field replacement in a nested struct.
Sourcepub fn prepend(self, item: impl Into<Item>) -> Self
pub fn prepend(self, item: impl Into<Item>) -> Self
Records an item to emit before processing the first input field.
Sourcepub fn prepend_at(
self,
struct_path: impl CollectInto<ColumnName>,
item: impl Into<Item>,
) -> Self
pub fn prepend_at( self, struct_path: impl CollectInto<ColumnName>, item: impl Into<Item>, ) -> Self
Records an item to emit before processing the first input field of a nested struct.
Sourcepub fn insert_after(
self,
field_name: impl Into<String>,
item: impl Into<Item>,
) -> Self
pub fn insert_after( self, field_name: impl Into<String>, item: impl Into<Item>, ) -> Self
Records an item to insert after the named field.
Sourcepub fn insert_after_at(
self,
struct_path: impl CollectInto<ColumnName>,
field_name: impl Into<String>,
item: impl Into<Item>,
) -> Self
pub fn insert_after_at( self, struct_path: impl CollectInto<ColumnName>, field_name: impl Into<String>, item: impl Into<Item>, ) -> Self
Records an item to insert after the named field in a nested struct.
Sourcepub fn append(self, item: impl Into<Item>) -> Self
pub fn append(self, item: impl Into<Item>) -> Self
Records an item to append after all input fields and field-specific insertions.
Sourcepub fn append_at(
self,
struct_path: impl CollectInto<ColumnName>,
item: impl Into<Item>,
) -> Self
pub fn append_at( self, struct_path: impl CollectInto<ColumnName>, item: impl Into<Item>, ) -> Self
Records an item to append after all fields of a nested struct.
Source§impl StructPatchBuilder<ExpressionRef>
impl StructPatchBuilder<ExpressionRef>
Sourcepub fn build(self) -> DeltaResult<ExpressionStructPatch>
pub fn build(self) -> DeltaResult<ExpressionStructPatch>
Builds the final expression patch.
§Errors
Returns an error when builder calls request multiple drop/replace operations for the same field, or when a destructive operation on one field overlapped with an operation on a nested child field.
Source§impl StructPatchBuilder<StructField>
impl StructPatchBuilder<StructField>
Sourcepub fn build(self, input_schema: &StructType) -> DeltaResult<StructType>
pub fn build(self, input_schema: &StructType) -> DeltaResult<StructType>
Builds the output struct schema for this patch over input_schema.
If this builder targets a nested path (via new_nested), the returned
schema is the patched schema for the nested struct at that path, not the full top-level
input schema.
§Errors
Returns an error if a builder call produced a conflicting operation, the input path cannot be resolved to a struct, a required field patch references a missing input field, a nested field patch targets a non-struct field, or the resulting output schema is invalid.
Trait Implementations§
Source§impl<Item: Debug> Debug for StructPatchBuilder<Item>
impl<Item: Debug> Debug for StructPatchBuilder<Item>
Source§impl TryFrom<StructPatchBuilder<Arc<Expression>>> for ExpressionStructPatch
impl TryFrom<StructPatchBuilder<Arc<Expression>>> for ExpressionStructPatch
Source§fn try_from(builder: StructPatchBuilder<ExpressionRef>) -> DeltaResult<Self>
fn try_from(builder: StructPatchBuilder<ExpressionRef>) -> DeltaResult<Self>
Auto Trait Implementations§
impl<Item> !RefUnwindSafe for StructPatchBuilder<Item>
impl<Item> !UnwindSafe for StructPatchBuilder<Item>
impl<Item> Freeze for StructPatchBuilder<Item>
impl<Item> Send for StructPatchBuilder<Item>where
Item: Send,
impl<Item> Sync for StructPatchBuilder<Item>where
Item: Sync,
impl<Item> Unpin for StructPatchBuilder<Item>where
Item: Unpin,
impl<Item> UnsafeUnpin for StructPatchBuilder<Item>
Blanket Implementations§
Source§impl<T> AsAny for T
impl<T> AsAny for T
Source§fn any_ref(&self) -> &(dyn Any + Send + Sync + 'static)
fn any_ref(&self) -> &(dyn Any + Send + Sync + 'static)
dyn Any reference to the object: Read moreSource§fn as_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ
fn as_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ
Arc<dyn Any> reference to the object: Read moreSource§fn into_any(self: Box<T>) -> Box<dyn Any + Send + Sync>
fn into_any(self: Box<T>) -> Box<dyn Any + Send + Sync>
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> FoldWithOption for T
impl<T> FoldWithOption for T
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>
arrow-conversion and (crate features arrow-conversion or declarative-plans or default-engine-base) 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>
arrow-conversion and (crate features arrow-conversion or declarative-plans or default-engine-base) only.