milvus/internal/mysqld/planner/expression_atom_predicate.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
}