pub struct BatchOutcome {
pub nodes_inserted: usize,
pub edges_inserted: usize,
pub skipped: usize,
pub replaced: usize,
pub kept_view_owned: usize,
pub row_errors: Vec<(usize, String)>,
}Expand description
What one committed batch did.
BatchBuilder::commit returns the first two fields as a tuple; the rest
exist for OnConflict and are always zero / empty without it.
Fields§
§nodes_inserted: usizeNode records actually written.
edges_inserted: usizeEdge records actually written. A duplicate edge is a silent no-op under every policy — adjacency is a set — and is not counted.
skipped: usizeRows whose key was taken and whose policy was OnConflict::Skip.
replaced: usizeRows whose key was taken and whose policy was OnConflict::Replace.
kept_view_owned: usizeView-owned properties an OnConflict::Replace row kept although
the caller did not supply them — counted per field, so one row that
keeps two contributes two.
This is the one respect in which Replace does not make a node’s props
exactly the supplied ones (see OnConflict::Replace). Those rows
still count in replaced and still raise no row_errors, because
nothing went wrong: a view’s property is not the caller’s to supply or
to remove. A mirror rebuild that needs its copy to be byte-exact reads
this to learn that the store kept fields its frame did not describe.
row_errors: Vec<(usize, String)>(row, why) for rows an OnConflict::Replace refused. row counts
node-insert ops in this batch from zero, which for a caller that queues
its nodes in order is the index of the offending node. The rest of the
frame still commits; the refused row changes nothing.
Trait Implementations§
Source§impl Clone for BatchOutcome
impl Clone for BatchOutcome
Source§impl Debug for BatchOutcome
impl Debug for BatchOutcome
Source§impl Default for BatchOutcome
impl Default for BatchOutcome
impl Eq for BatchOutcome
Source§impl PartialEq for BatchOutcome
impl PartialEq for BatchOutcome
impl StructuralPartialEq for BatchOutcome
Auto Trait Implementations§
impl Freeze for BatchOutcome
impl RefUnwindSafe for BatchOutcome
impl Send for BatchOutcome
impl Sync for BatchOutcome
impl Unpin for BatchOutcome
impl UnsafeUnpin for BatchOutcome
impl UnwindSafe for BatchOutcome
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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.