milvus/internal/mysqld/planner/sql_statement.go

46 lines
946 B
Go

package planner
import "github.com/moznion/go-optional"
type NodeSqlStatement struct {
baseNode
DmlStatement optional.Option[*NodeDmlStatement]
}
func (n *NodeSqlStatement) String() string {
return "NodeSqlStatement"
}
func (n *NodeSqlStatement) GetChildren() []Node {
if n.DmlStatement.IsSome() {
return []Node{n.DmlStatement.Unwrap()}
}
return nil
}
func (n *NodeSqlStatement) Accept(v Visitor) interface{} {
return v.VisitSqlStatement(n)
}
type NodeSqlStatementOption func(*NodeSqlStatement)
func (n *NodeSqlStatement) apply(opts ...NodeSqlStatementOption) {
for _, opt := range opts {
opt(n)
}
}
func WithDmlStatement(s *NodeDmlStatement) NodeSqlStatementOption {
return func(n *NodeSqlStatement) {
n.DmlStatement = optional.Some(s)
}
}
func NewNodeSqlStatement(text string, opts ...NodeSqlStatementOption) *NodeSqlStatement {
n := &NodeSqlStatement{
baseNode: newBaseNode(text),
}
n.apply(opts...)
return n
}