pub enum SchemaConstraintViolation {
ConflictingUpserts {
conflicting_upserts: BTreeMap<TempId, BTreeSet<KnownEntid>>,
},
TypeDisagreements {
conflicting_datoms: BTreeMap<(Entid, Entid, TypedValue), ValueType>,
},
CardinalityConflicts {
conflicts: Vec<CardinalityConflict>,
},
}Variants§
ConflictingUpserts
A transaction tried to assert datoms where one tempid upserts to two (or more) distinct entids.
Fields
§
conflicting_upserts: BTreeMap<TempId, BTreeSet<KnownEntid>>A map from tempid to the entids it would upsert to.
In the future, we might even be able to attribute the upserts to particular (reduced)
datoms, i.e., to particular [e a v] triples that caused the constraint violation.
Attributing constraint violations to input data is more difficult to the multiple
rewriting passes the input undergoes.
TypeDisagreements
A transaction tried to assert a datom or datoms with the wrong value v type(s).
Fields
CardinalityConflicts
A transaction tried to assert datoms that don’t observe the schema’s cardinality constraints.
Fields
§
conflicts: Vec<CardinalityConflict>Trait Implementations§
Source§impl Clone for SchemaConstraintViolation
impl Clone for SchemaConstraintViolation
Source§impl Debug for SchemaConstraintViolation
impl Debug for SchemaConstraintViolation
Source§impl Display for SchemaConstraintViolation
impl Display for SchemaConstraintViolation
impl Eq for SchemaConstraintViolation
impl StructuralPartialEq for SchemaConstraintViolation
Auto Trait Implementations§
impl Freeze for SchemaConstraintViolation
impl RefUnwindSafe for SchemaConstraintViolation
impl Send for SchemaConstraintViolation
impl Sync for SchemaConstraintViolation
impl Unpin for SchemaConstraintViolation
impl UnsafeUnpin for SchemaConstraintViolation
impl UnwindSafe for SchemaConstraintViolation
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.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> ⓘ
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 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> ⓘ
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