pub struct MatchClausePlan {
pub optional_group: Option<u32>,
pub patterns: Vec<PatternPlan>,
pub predicates: Vec<MatchPredicate>,
}Fields§
§optional_group: Option<u32>The all-or-nothing OPTIONAL block this clause belongs to (R3), or None
for a mandatory clause. Whether a clause is optional is exactly
optional_group.is_some() (see MatchClausePlan::is_optional) — the
single source of truth, never a separate flag the two could drift apart.
Every clause lowered from one OPTIONAL { MATCH …; MATCH … } (or one plain
OPTIONAL MATCH …, which is a block of one) shares the same id. The planner
left-joins all clauses of one group as a SINGLE unit (it must NOT join them
one inner clause at a time), so a block matches all-or-nothing; distinct ids
on adjacent optional clauses mean they chain left-to-right as independent
left-joins. The id is an opaque, per-query dense counter (group order ==
textual order); only equality is meaningful.
patterns: Vec<PatternPlan>§predicates: Vec<MatchPredicate>Clause-owned NNF conjuncts.
Implementations§
Source§impl MatchClausePlan
impl MatchClausePlan
Sourcepub fn is_optional(&self) -> bool
pub fn is_optional(&self) -> bool
Whether this clause is the body of an OPTIONAL operand (a left-outer join
against the accumulated binding table, R3) — exactly when it carries an
MatchClausePlan::optional_group id.
Trait Implementations§
Source§impl Clone for MatchClausePlan
impl Clone for MatchClausePlan
Source§impl Debug for MatchClausePlan
impl Debug for MatchClausePlan
impl Eq for MatchClausePlan
Source§impl Hash for MatchClausePlan
impl Hash for MatchClausePlan
Source§impl PartialEq for MatchClausePlan
impl PartialEq for MatchClausePlan
impl StructuralPartialEq for MatchClausePlan
Auto Trait Implementations§
impl Freeze for MatchClausePlan
impl RefUnwindSafe for MatchClausePlan
impl Send for MatchClausePlan
impl Sync for MatchClausePlan
impl Unpin for MatchClausePlan
impl UnsafeUnpin for MatchClausePlan
impl UnwindSafe for MatchClausePlan
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
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§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.