ParseSQL parses a query string to raw ast.StmtNode.
(sql string, params ...ParseParam)
| 147 | |
| 148 | // ParseSQL parses a query string to raw ast.StmtNode. |
| 149 | func (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. |