Skip to main content

SccFixpointError

Enum SccFixpointError 

Source
pub enum SccFixpointError {
    RuleHeadPredicateMismatch {
        group_key: String,
        rule_index: usize,
        observed: String,
    },
    HeadArityMismatch {
        predicate: String,
        rule_index: usize,
        observed_arity: usize,
        expected_arity: usize,
    },
    InconsistentHeadValueTypes {
        predicate: String,
        column: usize,
        expected: ScalarType,
        got: String,
    },
    PredicateInBaseRelations {
        name: String,
    },
    RuleEval {
        predicate: String,
        rule_index: usize,
        source: RefEvalError,
    },
    MaxIterationsExceeded {
        limit: usize,
        predicate_count: usize,
        total_observed_rows: usize,
    },
    SchemaIndeterminable {
        predicate: String,
    },
    InvalidMaxIterations,
}
Expand description

Errors surfaced by evaluate_scc_fixpoint.

Variants§

§

RuleHeadPredicateMismatch

A rule grouped under predicate key heads a different predicate. The grouping invariant — every rule’s head predicate equals its BTreeMap key — is checked at function entry.

Fields

§group_key: String

BTreeMap key under which the rule was grouped.

§rule_index: usize

Index of the rule within that group.

§observed: String

Head predicate observed on the rule.

§

HeadArityMismatch

Two rules grouped under the same predicate disagree on head arity.

Fields

§predicate: String

Predicate name.

§rule_index: usize

Index of the offending rule within its group.

§observed_arity: usize

Head arity observed on this rule.

§expected_arity: usize

Head arity established by the first non-empty-head rule in the same group.

§

InconsistentHeadValueTypes

A predicate’s rules produced rows whose RefValue variants disagree across iterations or across rules within an iteration. Detected by validating each newly produced row’s variant tuple against the predicate’s frozen schema before unioning.

Fields

§predicate: String

Predicate name.

§column: usize

Column index where the mismatch was first observed.

§expected: ScalarType

Schema-frozen scalar type at that column.

§got: String

String description of the offending value.

§

PredicateInBaseRelations

target_predicate was already present in base_relations. SCC predicates are constructed by the fixpoint; allowing base_relations to seed any of them would silently shadow the caller’s seed.

Fields

§name: String

The SCC predicate name as supplied.

§

RuleEval

A rule failed evaluation. Wraps the per-rule error with (predicate, rule_index) so the caller can pinpoint which rule of which group failed.

Fields

§predicate: String

Predicate group of the offending rule.

§rule_index: usize

Index within that group.

§source: RefEvalError

The wrapped per-rule error.

§

MaxIterationsExceeded

The SCC fixpoint did not converge within FixpointConfig::max_iterations.

Fields

§limit: usize

The configured cap.

§predicate_count: usize

Number of predicates in the SCC.

§total_observed_rows: usize

Total derived rows summed across all SCC predicates at the cap.

§

SchemaIndeterminable

At least one predicate had no rules with a non-empty head, so its arity could not be inferred.

Fields

§predicate: String

Predicate name whose arity could not be inferred.

§

InvalidMaxIterations

max_iterations was zero. Must be ≥ 1.

Trait Implementations§

Source§

impl Clone for SccFixpointError

Source§

fn clone(&self) -> SccFixpointError

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SccFixpointError

Source§

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

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

impl PartialEq for SccFixpointError

Source§

fn eq(&self, other: &SccFixpointError) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for SccFixpointError

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<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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,