MCPcopy
hub / github.com/pingcap/tidb / ParseSQL

Method ParseSQL

pkg/parser/yy_parser.go:149–176  ·  view source on GitHub ↗

ParseSQL parses a query string to raw ast.StmtNode.

(sql string, params ...ParseParam)

Source from the content-addressed store, hash-verified

147
148// ParseSQL parses a query string to raw ast.StmtNode.
149func (parser *Parser) ParseSQL(sql string, params ...ParseParam) (stmt []ast.StmtNode, warns []error, err error) {
150 resetParams(parser)
151 parser.lexer.reset(sql)
152 for _, p := range params {
153 if err := p.ApplyOn(parser); err != nil {
154 return nil, nil, err
155 }
156 }
157 parser.src = sql
158 parser.result = parser.result[:0]
159
160 var l yyLexer = &parser.lexer
161 yyParse(l, parser)
162
163 warns, errs := l.Errors()
164 if len(warns) > 0 {
165 warns = append([]error(nil), warns...)
166 } else {
167 warns = nil
168 }
169 if len(errs) != 0 {
170 return nil, warns, errors.Trace(errs[0])
171 }
172 for _, stmt := range parser.result {
173 ast.SetFlag(stmt)
174 }
175 return parser.result, warns, nil
176}
177
178// Parse parses a query string to raw ast.StmtNode.
179// If charset or collation is "", default charset and collation will be used.

Callers 2

ParseMethod · 0.95
ParseOneStmtMethod · 0.95

Calls 6

ErrorsMethod · 0.95
SetFlagFunction · 0.92
resetParamsFunction · 0.85
yyParseFunction · 0.85
ApplyOnMethod · 0.65
resetMethod · 0.45

Tested by

no test coverage detected