mirror of https://github.com/milvus-io/milvus.git
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package planner
|
|
|
|
import "github.com/moznion/go-optional"
|
|
|
|
type NodeExpressionAtomPredicate struct {
|
|
baseNode
|
|
Assignment optional.Option[*NodeLocalID]
|
|
ExpressionAtom *NodeExpressionAtom
|
|
}
|
|
|
|
func (n *NodeExpressionAtomPredicate) String() string {
|
|
return "NodeExpressionAtomPredicate"
|
|
}
|
|
|
|
func (n *NodeExpressionAtomPredicate) GetChildren() []Node {
|
|
return []Node{n.ExpressionAtom}
|
|
}
|
|
|
|
func (n *NodeExpressionAtomPredicate) Accept(v Visitor) interface{} {
|
|
return v.VisitExpressionAtomPredicate(n)
|
|
}
|
|
|
|
type NodeExpressionAtomPredicateOption func(*NodeExpressionAtomPredicate)
|
|
|
|
func (n *NodeExpressionAtomPredicate) apply(opts ...NodeExpressionAtomPredicateOption) {
|
|
for _, opt := range opts {
|
|
opt(n)
|
|
}
|
|
}
|
|
|
|
func WithAssignment(assign *NodeLocalID) NodeExpressionAtomPredicateOption {
|
|
return func(n *NodeExpressionAtomPredicate) {
|
|
n.Assignment = optional.Some(assign)
|
|
}
|
|
}
|
|
|
|
func NewNodeExpressionAtomPredicate(text string, exprAtom *NodeExpressionAtom, opts ...NodeExpressionAtomPredicateOption) *NodeExpressionAtomPredicate {
|
|
n := &NodeExpressionAtomPredicate{
|
|
baseNode: newBaseNode(text),
|
|
ExpressionAtom: exprAtom,
|
|
}
|
|
n.apply(opts...)
|
|
return n
|
|
}
|