pub enum Statement {
Create(Vec<Pattern>),
Match {
clauses: Vec<QueryClause>,
tail: Option<Tail>,
order_by: Option<Vec<(ReturnExpr, SortDir)>>,
limit: Option<i64>,
},
}Variants§
Create(Vec<Pattern>)
Match
Fields
clauses: Vec<QueryClause>One or more MATCH/UNWIND/MERGE ... [WITH ...] clauses. The
parser enforces every Match clause except the statement’s
last has a with before the next Match clause (matching real
Cypher’s rule that multiple reading clauses must be separated
by WITH) — Unwind/Merge clauses are exempt from this
specific check (they share one binding scope the same way
OPTIONAL MATCH already does, real Cypher needs no WITH around
a bare UNWIND/MERGE either) — and that at most one clause (of
any kind) has a with at all across the whole statement (v1
doesn’t support chaining past one WITH boundary — nothing in
the target query set needs it, and it keeps a hand-rolled
parser’s untested-path surface smaller).
tail: Option<Tail>None only when a MERGE clause is present with nothing after
it (MERGE (n:Label) alone, no RETURN/etc — a pure write,
same as standalone CREATE). The parser rejects a missing tail
otherwise (MATCH (n) alone is almost certainly a mistake, not
a deliberate no-op).