Documentation
¶
Overview ¶
Package ast defines the Abstract Syntax Tree nodes for Cypher.
The node hierarchy mirrors the openCypher 9 grammar:
- A Query is the root. It contains one or more SingleQuery clauses, optionally joined by UNION / UNION ALL.
- SingleQuery is a sequence of reading, updating, and/or projecting clauses.
- Each clause (MATCH, CREATE, MERGE, RETURN, …) is a Statement.
- Patterns, expressions, and property maps are Expression subtypes.
Index ¶
- type BooleanLiteral
- type CallClause
- type CallSubquery
- type CaseExpression
- type CaseWhen
- type CollectSubquery
- type CountStar
- type CountSubquery
- type CreateClause
- type DeleteClause
- type DynamicPropertyAccess
- type ExistsSubquery
- type Expression
- type FinishClause
- type FloatLiteral
- type ForeachClause
- type FunctionCall
- type Identifier
- type InExpression
- type InfixExpression
- type IntegerLiteral
- type IsNullExpression
- type LabelExpression
- type LabelFilter
- type LabelFilterAnd
- type LabelFilterName
- type LabelFilterNot
- type LabelFilterOr
- type LabelFilterWildcard
- type ListComprehension
- type ListLiteral
- type ListSlice
- type LoadCSVClause
- type MapLiteral
- type MapPair
- type MatchClause
- type MergeClause
- type Node
- type NodePattern
- type NullLiteral
- type Parameter
- type Pattern
- type PatternComprehension
- type PatternElement
- type PatternPart
- type PrefixExpression
- type ProjectionItem
- type PropertyAccess
- type QualifiedName
- type QuantifierExpression
- type Query
- type ReduceExpression
- type RelationshipPattern
- type RemoveClause
- type RemoveItem
- type ReturnClause
- type SetClause
- type SetItem
- type ShortestPathExpression
- type SingleQuery
- type SortItem
- type Statement
- type StringLiteral
- type StringPredicate
- type UnionPart
- type UnwindClause
- type WithClause
- type YieldItem
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BooleanLiteral ¶
BooleanLiteral represents true or false.
func (*BooleanLiteral) String ¶
func (bl *BooleanLiteral) String() string
func (*BooleanLiteral) TokenLiteral ¶
func (bl *BooleanLiteral) TokenLiteral() string
type CallClause ¶
type CallClause struct {
Token token.Token
ProcedureName *QualifiedName
Args []Expression
Yield []*YieldItem // nil means no YIELD
Where Expression // CALL … YIELD … WHERE … (openCypher extension)
}
CallClause represents a CALL procedureName(args) YIELD … clause.
func (*CallClause) String ¶
func (c *CallClause) String() string
func (*CallClause) TokenLiteral ¶
func (c *CallClause) TokenLiteral() string
type CallSubquery ¶
type CallSubquery struct {
Token token.Token // CALL
ImportVars []*Identifier // variables in the scope clause (var1, var2); may be empty
Body *SingleQuery
InTransactions bool
BatchSize Expression // may be nil
Concurrent bool
}
CallSubquery represents a CALL { … } subquery clause (Neo4j 5+). This is distinct from a CALL procedureName(…) procedure invocation.
Forms:
CALL (var1, var2) { query } — explicit scope clause
CALL { query } — implicit (deprecated in 5.x)
CALL (var1) { query } IN TRANSACTIONS [OF n ROWS] — batched form
CALL (var1) { query } IN n CONCURRENT TRANSACTIONS — concurrent form
func (*CallSubquery) String ¶
func (c *CallSubquery) String() string
func (*CallSubquery) TokenLiteral ¶
func (c *CallSubquery) TokenLiteral() string
type CaseExpression ¶
type CaseExpression struct {
Token token.Token
Operand Expression // nil for searched CASE
Alternatives []*CaseWhen
Default Expression // nil when no ELSE clause
}
CaseExpression represents a CASE expression (simple or generic).
func (*CaseExpression) String ¶
func (c *CaseExpression) String() string
func (*CaseExpression) TokenLiteral ¶
func (c *CaseExpression) TokenLiteral() string
type CaseWhen ¶
type CaseWhen struct {
When Expression
Then Expression
}
CaseWhen is one WHEN … THEN … branch.
type CollectSubquery ¶
type CollectSubquery struct {
Token token.Token
Body *SingleQuery
}
CollectSubquery represents COLLECT { … } — a subquery expression that returns a list of values from the RETURN clause of the inner query.
MATCH (n) SET n.friends = COLLECT { MATCH (n)-[:KNOWS]->(m) RETURN m.name }
func (*CollectSubquery) String ¶
func (c *CollectSubquery) String() string
func (*CollectSubquery) TokenLiteral ¶
func (c *CollectSubquery) TokenLiteral() string
type CountSubquery ¶
type CountSubquery struct {
Token token.Token
Body *SingleQuery
}
CountSubquery represents COUNT { … } — a subquery expression that returns the number of rows the inner query produces. Distinct from count() aggregate.
MATCH (n) WHERE COUNT { (n)-[:KNOWS]->(m) } > 3 RETURN n
func (*CountSubquery) String ¶
func (c *CountSubquery) String() string
func (*CountSubquery) TokenLiteral ¶
func (c *CountSubquery) TokenLiteral() string
type CreateClause ¶
CreateClause represents a CREATE clause.
func (*CreateClause) String ¶
func (c *CreateClause) String() string
func (*CreateClause) TokenLiteral ¶
func (c *CreateClause) TokenLiteral() string
type DeleteClause ¶
type DeleteClause struct {
Token token.Token
Detach bool
Exprs []Expression
}
DeleteClause represents DELETE or DETACH DELETE.
func (*DeleteClause) String ¶
func (d *DeleteClause) String() string
func (*DeleteClause) TokenLiteral ¶
func (d *DeleteClause) TokenLiteral() string
type DynamicPropertyAccess ¶
type DynamicPropertyAccess struct {
Token token.Token
Object Expression
Key Expression
}
DynamicPropertyAccess represents expr[keyExpr].
func (*DynamicPropertyAccess) String ¶
func (d *DynamicPropertyAccess) String() string
func (*DynamicPropertyAccess) TokenLiteral ¶
func (d *DynamicPropertyAccess) TokenLiteral() string
type ExistsSubquery ¶
ExistsSubquery represents EXISTS { matchPattern [WHERE pred] }.
func (*ExistsSubquery) String ¶
func (e *ExistsSubquery) String() string
func (*ExistsSubquery) TokenLiteral ¶
func (e *ExistsSubquery) TokenLiteral() string
type Expression ¶
type Expression interface {
Node
// contains filtered or unexported methods
}
Expression represents a value-producing construct (literals, operators, property access, function calls, pattern predicates, …).
type FinishClause ¶
FinishClause represents the FINISH clause (Cypher 25). Terminates a query without returning any rows.
func (*FinishClause) String ¶
func (f *FinishClause) String() string
func (*FinishClause) TokenLiteral ¶
func (f *FinishClause) TokenLiteral() string
type FloatLiteral ¶
FloatLiteral represents a floating-point literal.
func (*FloatLiteral) String ¶
func (fl *FloatLiteral) String() string
func (*FloatLiteral) TokenLiteral ¶
func (fl *FloatLiteral) TokenLiteral() string
type ForeachClause ¶
type ForeachClause struct {
Token token.Token
Var *Identifier
InExpr Expression
Clauses []Statement
}
ForeachClause represents FOREACH (var IN expr | clause…).
func (*ForeachClause) String ¶
func (f *ForeachClause) String() string
func (*ForeachClause) TokenLiteral ¶
func (f *ForeachClause) TokenLiteral() string
type FunctionCall ¶
type FunctionCall struct {
Token token.Token
Name *QualifiedName
Distinct bool
Arguments []Expression
}
FunctionCall represents a function invocation: name(args…) or name(DISTINCT arg).
func (*FunctionCall) String ¶
func (fc *FunctionCall) String() string
func (*FunctionCall) TokenLiteral ¶
func (fc *FunctionCall) TokenLiteral() string
type Identifier ¶
type Identifier struct {
Token token.Token
Value string
Backtick bool // true when the source used backtick escaping
}
Identifier represents a simple name (variable, label, property key, …).
func (*Identifier) String ¶
func (i *Identifier) String() string
func (*Identifier) TokenLiteral ¶
func (i *Identifier) TokenLiteral() string
type InExpression ¶
type InExpression struct {
Token token.Token
Left Expression
Right Expression
Not bool
}
InExpression represents expr IN listExpr.
func (*InExpression) String ¶
func (ie *InExpression) String() string
func (*InExpression) TokenLiteral ¶
func (ie *InExpression) TokenLiteral() string
type InfixExpression ¶
type InfixExpression struct {
Token token.Token
Left Expression
Operator string
Right Expression
}
InfixExpression represents a binary infix operation (a + b, a AND b, …).
func (*InfixExpression) String ¶
func (ie *InfixExpression) String() string
func (*InfixExpression) TokenLiteral ¶
func (ie *InfixExpression) TokenLiteral() string
type IntegerLiteral ¶
IntegerLiteral represents an integer literal.
func (*IntegerLiteral) String ¶
func (il *IntegerLiteral) String() string
func (*IntegerLiteral) TokenLiteral ¶
func (il *IntegerLiteral) TokenLiteral() string
type IsNullExpression ¶
type IsNullExpression struct {
Token token.Token
Expr Expression
Not bool
}
IsNullExpression represents expr IS NULL or expr IS NOT NULL.
func (*IsNullExpression) String ¶
func (in *IsNullExpression) String() string
func (*IsNullExpression) TokenLiteral ¶
func (in *IsNullExpression) TokenLiteral() string
type LabelExpression ¶
type LabelExpression struct {
Token token.Token
Target Expression
Labels []*Identifier
}
LabelExpression represents n:Label or n:Label1|Label2 (used in WHERE and SET).
func (*LabelExpression) String ¶
func (l *LabelExpression) String() string
func (*LabelExpression) TokenLiteral ¶
func (l *LabelExpression) TokenLiteral() string
type LabelFilter ¶
type LabelFilter interface {
Node
// contains filtered or unexported methods
}
LabelFilter is the interface implemented by all label boolean expression nodes.
type LabelFilterAnd ¶
type LabelFilterAnd struct {
Token token.Token
Left LabelFilter
Right LabelFilter
}
func (*LabelFilterAnd) String ¶
func (l *LabelFilterAnd) String() string
func (*LabelFilterAnd) TokenLiteral ¶
func (l *LabelFilterAnd) TokenLiteral() string
type LabelFilterName ¶
func (*LabelFilterName) String ¶
func (l *LabelFilterName) String() string
func (*LabelFilterName) TokenLiteral ¶
func (l *LabelFilterName) TokenLiteral() string
type LabelFilterNot ¶
type LabelFilterNot struct {
Token token.Token
Inner LabelFilter
}
func (*LabelFilterNot) String ¶
func (l *LabelFilterNot) String() string
func (*LabelFilterNot) TokenLiteral ¶
func (l *LabelFilterNot) TokenLiteral() string
type LabelFilterOr ¶
type LabelFilterOr struct {
Token token.Token
Left LabelFilter
Right LabelFilter // nil when there is only one term
}
LabelFilterExpression represents a label boolean expression used in Neo4j 5+ node and relationship patterns: (n:A&B), (n:A|B), (n:!A), (n:%).
The grammar has three forms:
LabelOr = LabelAnd ("|" LabelAnd)*
LabelAnd = LabelNot ("&" LabelNot)*
LabelNot = "!" LabelNot | LabelAtom
LabelAtom = LabelName | "%" | "(" LabelOr ")"
The miniparser in parser/label.go produces this tree directly.
func (*LabelFilterOr) String ¶
func (l *LabelFilterOr) String() string
func (*LabelFilterOr) TokenLiteral ¶
func (l *LabelFilterOr) TokenLiteral() string
type LabelFilterWildcard ¶
func (*LabelFilterWildcard) String ¶
func (l *LabelFilterWildcard) String() string
func (*LabelFilterWildcard) TokenLiteral ¶
func (l *LabelFilterWildcard) TokenLiteral() string
type ListComprehension ¶
type ListComprehension struct {
Token token.Token
Variable *Identifier
InExpr Expression
Where Expression // may be nil
MapExpr Expression // may be nil (bare [x IN list] returns filtered list)
}
ListComprehension represents [var IN expr WHERE pred | mapExpr].
func (*ListComprehension) String ¶
func (lc *ListComprehension) String() string
func (*ListComprehension) TokenLiteral ¶
func (lc *ListComprehension) TokenLiteral() string
type ListLiteral ¶
type ListLiteral struct {
Token token.Token
Elements []Expression
}
ListLiteral represents a list literal: [expr, expr, …].
func (*ListLiteral) String ¶
func (l *ListLiteral) String() string
func (*ListLiteral) TokenLiteral ¶
func (l *ListLiteral) TokenLiteral() string
type ListSlice ¶
type ListSlice struct {
Token token.Token
List Expression
From Expression // may be nil
To Expression // may be nil
}
ListSlice represents list[from..to] (either bound may be nil for open ranges).
func (*ListSlice) TokenLiteral ¶
type LoadCSVClause ¶
type LoadCSVClause struct {
Token token.Token
WithHeaders bool
URL Expression
Alias *Identifier
FieldTerminator Expression // optional FIELDTERMINATOR expr
}
LoadCSVClause represents a LOAD CSV [WITH HEADERS] FROM expr AS var clause.
func (*LoadCSVClause) String ¶
func (l *LoadCSVClause) String() string
func (*LoadCSVClause) TokenLiteral ¶
func (l *LoadCSVClause) TokenLiteral() string
type MapLiteral ¶
MapLiteral represents a property map literal: {key: val, …}.
func (*MapLiteral) String ¶
func (m *MapLiteral) String() string
func (*MapLiteral) TokenLiteral ¶
func (m *MapLiteral) TokenLiteral() string
type MapPair ¶
type MapPair struct {
Key *Identifier
Value Expression
}
MapPair is one key–value entry in a MapLiteral.
type MatchClause ¶
type MatchClause struct {
Token token.Token // MATCH
Optional bool
Pattern *Pattern
Where Expression // may be nil
}
MatchClause represents a MATCH (or OPTIONAL MATCH) clause.
func (*MatchClause) String ¶
func (m *MatchClause) String() string
func (*MatchClause) TokenLiteral ¶
func (m *MatchClause) TokenLiteral() string
type MergeClause ¶
type MergeClause struct {
Token token.Token
Pattern *PatternPart // single path pattern (not a full comma list)
OnMatch []*SetItem
OnCreate []*SetItem
}
MergeClause represents a MERGE clause with optional ON MATCH / ON CREATE actions.
func (*MergeClause) String ¶
func (m *MergeClause) String() string
func (*MergeClause) TokenLiteral ¶
func (m *MergeClause) TokenLiteral() string
type NodePattern ¶
type NodePattern struct {
Token token.Token
Variable *Identifier // may be nil
Labels []*Identifier // may be empty; used for simple :Label:Label form
LabelFilter LabelFilter // may be nil; used for boolean :A&B|!C form (Neo4j 5+)
Properties Expression // MapLiteral or Parameter; may be nil
InlineWhere Expression // may be nil; inline WHERE predicate: (n WHERE n.age > 18)
}
NodePattern represents a node in a pattern: (var:Label {props}).
func (*NodePattern) String ¶
func (n *NodePattern) String() string
func (*NodePattern) TokenLiteral ¶
func (n *NodePattern) TokenLiteral() string
type NullLiteral ¶
NullLiteral represents the null literal.
func (*NullLiteral) String ¶
func (nl *NullLiteral) String() string
func (*NullLiteral) TokenLiteral ¶
func (nl *NullLiteral) TokenLiteral() string
type Parameter ¶
Parameter represents a query parameter ($name or {name}).
func (*Parameter) TokenLiteral ¶
type Pattern ¶
type Pattern struct {
Parts []*PatternPart
}
Pattern is a comma-separated list of PatternParts in a MATCH or CREATE clause.
func (*Pattern) TokenLiteral ¶
type PatternComprehension ¶
type PatternComprehension struct {
Token token.Token
Pattern *PatternPart
Where Expression // may be nil
MapExpr Expression
}
PatternComprehension represents [(var)-[r]->(n) WHERE pred | expr].
func (*PatternComprehension) String ¶
func (pc *PatternComprehension) String() string
func (*PatternComprehension) TokenLiteral ¶
func (pc *PatternComprehension) TokenLiteral() string
type PatternElement ¶
type PatternElement interface {
Node
// contains filtered or unexported methods
}
PatternElement is either a NodePattern or a RelationshipPattern.
type PatternPart ¶
type PatternPart struct {
Variable *Identifier // may be nil
All bool // true when produced by allShortestPaths(…)
Elements []PatternElement
}
PatternPart is one path pattern, optionally bound to a variable. e.g. p = (a)-[:KNOWS]->(b)
func (*PatternPart) String ¶
func (p *PatternPart) String() string
func (*PatternPart) TokenLiteral ¶
func (p *PatternPart) TokenLiteral() string
type PrefixExpression ¶
type PrefixExpression struct {
Token token.Token
Operator string
Right Expression
}
PrefixExpression represents a unary prefix operation (NOT x, -x, …).
func (*PrefixExpression) String ¶
func (pe *PrefixExpression) String() string
func (*PrefixExpression) TokenLiteral ¶
func (pe *PrefixExpression) TokenLiteral() string
type ProjectionItem ¶
type ProjectionItem struct {
Expr Expression
Alias *Identifier // may be nil
Star bool // true for bare RETURN *
}
ProjectionItem is one item in RETURN or WITH. Alias is nil when no AS clause is present.
func (*ProjectionItem) String ¶
func (p *ProjectionItem) String() string
func (*ProjectionItem) TokenLiteral ¶
func (p *ProjectionItem) TokenLiteral() string
type PropertyAccess ¶
type PropertyAccess struct {
Token token.Token
Object Expression
Property *Identifier
}
PropertyAccess represents node.property or relationship.property.
func (*PropertyAccess) String ¶
func (pa *PropertyAccess) String() string
func (*PropertyAccess) TokenLiteral ¶
func (pa *PropertyAccess) TokenLiteral() string
type QualifiedName ¶
type QualifiedName struct {
Parts []*Identifier
}
QualifiedName represents a dotted procedure/function name, e.g. apoc.util.sleep.
func (*QualifiedName) String ¶
func (q *QualifiedName) String() string
func (*QualifiedName) TokenLiteral ¶
func (q *QualifiedName) TokenLiteral() string
type QuantifierExpression ¶
type QuantifierExpression struct {
Token token.Token
Quantifier string // "ALL", "ANY", "NONE", "SINGLE", "FILTER"
Variable *Identifier
InExpr Expression
Where Expression
}
QuantifierExpression represents ALL/ANY/NONE/SINGLE/FILTER(var IN expr WHERE pred).
func (*QuantifierExpression) String ¶
func (q *QuantifierExpression) String() string
func (*QuantifierExpression) TokenLiteral ¶
func (q *QuantifierExpression) TokenLiteral() string
type Query ¶
type Query struct {
Parts []*SingleQuery // len >= 1
Union []*UnionPart // len == len(Parts)-1; empty when no UNION
}
Query is the root AST node produced by parsing a single Cypher input. It is either a RegularQuery (one or more SingleQuerys joined by UNION) or a StandaloneCall (a bare CALL … YIELD … RETURN).
func (*Query) TokenLiteral ¶
type ReduceExpression ¶
type ReduceExpression struct {
Token token.Token
Accumulator *Identifier
Seed Expression
Variable *Identifier
InExpr Expression
MapExpr Expression
}
ReduceExpression represents reduce(acc = seed, x IN list | expr). The accumulator variable and seed value are initialised once; the map expression is evaluated for each element and accumulated.
func (*ReduceExpression) String ¶
func (r *ReduceExpression) String() string
func (*ReduceExpression) TokenLiteral ¶
func (r *ReduceExpression) TokenLiteral() string
type RelationshipPattern ¶
type RelationshipPattern struct {
Token token.Token
Left bool // arrow on left side
Right bool // arrow on right side
Variable *Identifier // may be nil
RelTypes []*Identifier // may be empty; alternatives separated by | (simple form)
LabelFilter LabelFilter // may be nil; boolean type expression (Neo4j 5+)
RangeMin *IntegerLiteral // may be nil (unbounded)
RangeMax *IntegerLiteral // may be nil (unbounded)
HasRange bool // true when [*] or [*n..m] is present
QuantMin *IntegerLiteral // may be nil; quantified path {n,m} min (Neo4j 25+)
QuantMax *IntegerLiteral // may be nil; quantified path {n,m} max
HasQuant bool // true when {n,m} quantifier is present
Properties Expression // MapLiteral or Parameter; may be nil
}
RelationshipPattern represents a relationship in a pattern. Direction:
Left true, Right false → <-[…]- Left false, Right true → -[…]-> Left false, Right false → -[…]- (undirected)
func (*RelationshipPattern) String ¶
func (r *RelationshipPattern) String() string
func (*RelationshipPattern) TokenLiteral ¶
func (r *RelationshipPattern) TokenLiteral() string
type RemoveClause ¶
type RemoveClause struct {
Token token.Token
Items []*RemoveItem
}
RemoveClause represents a REMOVE clause (remove properties or labels).
func (*RemoveClause) String ¶
func (r *RemoveClause) String() string
func (*RemoveClause) TokenLiteral ¶
func (r *RemoveClause) TokenLiteral() string
type RemoveItem ¶
type RemoveItem struct {
Target Expression // PropertyAccess or LabelExpression
}
RemoveItem is one target within REMOVE.
func (*RemoveItem) String ¶
func (ri *RemoveItem) String() string
type ReturnClause ¶
type ReturnClause struct {
Token token.Token
Distinct bool
Items []*ProjectionItem
OrderBy []*SortItem
Skip Expression
Limit Expression
}
ReturnClause represents a RETURN clause.
func (*ReturnClause) String ¶
func (r *ReturnClause) String() string
func (*ReturnClause) TokenLiteral ¶
func (r *ReturnClause) TokenLiteral() string
type SetItem ¶
type SetItem struct {
Target Expression // PropertyAccess, NodeRef, or LabelExpression
Operator string // "=", "+=", or ":"
Value Expression // nil for label-setting
}
SetItem is one assignment within a SET clause. Cypher SET has several forms:
n.prop = expr — property assignment
n = {map} — replace all properties
n += {map} — merge properties
n:Label — add label
type ShortestPathExpression ¶
type ShortestPathExpression struct {
Token token.Token
All bool // true for allShortestPaths
Pattern *PatternPart
}
ShortestPathExpression wraps a pattern in shortestPath(…) or allShortestPaths(…).
func (*ShortestPathExpression) String ¶
func (sp *ShortestPathExpression) String() string
func (*ShortestPathExpression) TokenLiteral ¶
func (sp *ShortestPathExpression) TokenLiteral() string
type SingleQuery ¶
type SingleQuery struct {
Clauses []Statement
}
SingleQuery is a sequential composition of reading, updating, and/or projection clauses that form one arm of a UNION query.
func (*SingleQuery) String ¶
func (s *SingleQuery) String() string
func (*SingleQuery) TokenLiteral ¶
func (s *SingleQuery) TokenLiteral() string
type SortItem ¶
type SortItem struct {
Expr Expression
Descending bool
}
SortItem represents one ORDER BY element.
type Statement ¶
type Statement interface {
Node
// contains filtered or unexported methods
}
Statement represents a clause-level construct (MATCH, CREATE, RETURN, …).
type StringLiteral ¶
StringLiteral represents a string literal ('…' or "…").
func (*StringLiteral) String ¶
func (sl *StringLiteral) String() string
func (*StringLiteral) TokenLiteral ¶
func (sl *StringLiteral) TokenLiteral() string
type StringPredicate ¶
type StringPredicate struct {
Token token.Token
Left Expression
Predicate string // "STARTS WITH", "ENDS WITH", "CONTAINS", "=~"
Right Expression
Not bool
}
StringPredicate represents STARTS WITH, ENDS WITH, CONTAINS, or =~ (regex).
func (*StringPredicate) String ¶
func (sp *StringPredicate) String() string
func (*StringPredicate) TokenLiteral ¶
func (sp *StringPredicate) TokenLiteral() string
type UnionPart ¶
UnionPart holds the UNION / UNION ALL keyword between two SingleQuery parts.
func (*UnionPart) TokenLiteral ¶
type UnwindClause ¶
type UnwindClause struct {
Token token.Token
Expr Expression
Alias *Identifier
}
UnwindClause represents UNWIND expr AS var.
func (*UnwindClause) String ¶
func (u *UnwindClause) String() string
func (*UnwindClause) TokenLiteral ¶
func (u *UnwindClause) TokenLiteral() string
type WithClause ¶
type WithClause struct {
Token token.Token
Distinct bool
Items []*ProjectionItem
OrderBy []*SortItem
Skip Expression
Limit Expression
Where Expression
}
WithClause represents a WITH clause (acts as a pipeline projection).
func (*WithClause) String ¶
func (w *WithClause) String() string
func (*WithClause) TokenLiteral ¶
func (w *WithClause) TokenLiteral() string
type YieldItem ¶
type YieldItem struct {
Name *Identifier
Alias *Identifier // may be nil
}
YieldItem is one item in a YIELD clause.