pub struct IrUpdate {Show 14 fields
pub target: IrSource,
pub filter: Option<IrExpr>,
pub assignments: Vec<(String, IrExpr)>,
pub rewrites: Vec<IrRewrite>,
pub returning: Vec<IrShapePointer>,
pub enqueue_vector: Vec<VectorEnqueueInfo>,
pub enqueue_search: Vec<SearchEnqueueInfo>,
pub poly_implementors: Vec<IrPolyImplementor>,
pub poly_columns: Vec<String>,
pub multi_link_clears: Vec<IrMultiLinkClear>,
pub multi_link_replaces: Vec<IrMultiLinkMutation>,
pub multi_link_appends: Vec<IrMultiLinkMutation>,
pub multi_link_removals: Vec<IrMultiLinkMutation>,
pub nested_ctes: Vec<IrCteDef>,
}Fields§
§target: IrSource§filter: Option<IrExpr>§assignments: Vec<(String, IrExpr)>§rewrites: Vec<IrRewrite>Schema-defined rewrites appended to the SET clause.
returning: Vec<IrShapePointer>§enqueue_vector: Vec<VectorEnqueueInfo>Vector indexes whose source pointers are touched by this update.
enqueue_search: Vec<SearchEnqueueInfo>OpenSearch-backed SearchIndexes that need outbox rows written.
poly_implementors: Vec<IrPolyImplementor>Populated when updating an interface type; one entry per concrete implementor.
poly_columns: Vec<String>The interface’s own physical columns (properties + {link}_id) — the
only columns every implementor table is guaranteed to share, so a
per-implementor UNION ALL fan-out (see poly_implementors) can only
ever RETURNING this common subset, never *. Empty unless
poly_implementors is also non-empty.
multi_link_clears: Vec<IrMultiLinkClear>friends := {} — DELETE all junction rows for this object.
multi_link_replaces: Vec<IrMultiLinkMutation>friends := expr — clear + insert (both lists share the same index).
multi_link_appends: Vec<IrMultiLinkMutation>friends += expr — INSERT junction rows.
multi_link_removals: Vec<IrMultiLinkMutation>friends -= expr — DELETE specific junction rows.
nested_ctes: Vec<IrCteDef>Same as IrInsert::nested_ctes — hoisted nested DML from a link
assignment value in this update’s own SET shape. Only supported
(see Compiler::compile_update) when this update has no multi-link
mutation, no interface fan-out, and nothing to enqueue; combining
those with a nested DML value is a compile error for now rather than
attempting to emit anything, until that combination is implemented.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for IrUpdate
impl RefUnwindSafe for IrUpdate
impl Send for IrUpdate
impl Sync for IrUpdate
impl Unpin for IrUpdate
impl UnsafeUnpin for IrUpdate
impl UnwindSafe for IrUpdate
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> 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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.