Compare / xwb1989/sqlparser
xwb1989/sqlparser alternative: GoSQLX compared
xwb1989/sqlparser is a standalone MySQL parser extracted from Vitess. It is widely imported, but its last commit was 2018-06-06.
- Approach
- Fork of the Vitess MySQL parser, extracted as a standalone package
- Dialect
- MySQL
- CGo required
- No
Pick xwb1989/sqlparser when
- You have an existing integration that only uses simple MySQL statements and it works for you.
- You need the exact AST shape of this package for code you cannot change yet.
Pick GoSQLX when
- You need syntax this parser rejects in the benchmark run below, such as CTEs and window functions.
- You want a dependency that still receives releases.
- You need other dialects, or formatting, linting and security scanning.
Parse speed, measured
End-to-end stage (SQL text to AST) · Apple M4 (darwin/arm64) · go1.27.2 · median of 10 runs · measured 2026-10-15 · xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2. Lower is faster.
| Query | GoSQLX | xwb1989/sqlparser |
|---|---|---|
| Simple SELECT | 925 ns | 3,441 ns |
| SELECT with WHERE, ORDER BY, LIMIT | 2,028 ns | 5,803 ns |
| Two-table JOIN | 3,215 ns | 11,725 ns |
| GROUP BY with HAVING | 2,230 ns | 5,897 ns |
| IN subquery | 1,887 ns | 9,678 ns |
| Common table expression | 2,748 ns | not supported |
| Window function | 1,899 ns | not supported |
| Multi-JOIN analytical query | 8,776 ns | 21,260 ns |
| INSERT VALUES | 1,443 ns | 4,209 ns |
| UPDATE with WHERE | 1,200 ns | 4,063 ns |
| DELETE with WHERE | 841 ns | 3,078 ns |
Read with care. The libraries implement different SQL dialects and build different ASTs (pg_query_go wraps the real PostgreSQL parser through CGo and converts its tree to Go structs; Vitess, TiDB and xwb1989 implement MySQL grammars). Each figure is the end-to-end cost of turning the same SQL text into that library's AST on the stated hardware, not identical work. Results vary by query, so check the rows that resemble your workload.
Full table, methodology and reproduce steps: competitor benchmarks. Source: benchmarks/compare/results/latest.json, commit c95aa7c.
What GoSQLX offers
Pure Go with no CGo, 8 dialects, 30 built-in lint rules, a formatter, a SQL injection scanner, an LSP server and an MCP server. Requires Go 1.26+.