Compare / TiDB parser
TiDB parser alternative: GoSQLX compared
The TiDB parser (github.com/pingcap/tidb/pkg/parser) is the MySQL-compatible parser of the TiDB database, written in Go.
- Approach
- yacc-generated MySQL-compatible grammar from the TiDB project
- Dialect
- MySQL (TiDB flavour)
- CGo required
- No
Pick TiDB parser when
- You target MySQL or TiDB and want TiDB-specific syntax and its AST visitors.
- You are building tooling around TiDB and want to match how the database itself parses SQL.
Pick GoSQLX when
- You need dialects beyond MySQL.
- You want a self-contained module with formatting, linting and security scanning included.
- You want to avoid importing a subpackage of a database server module.
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 · TiDB parser v0.0.0-20261015143638-7193401b6746. Lower is faster.
| Query | GoSQLX | TiDB parser |
|---|---|---|
| Simple SELECT | 925 ns | 1,464 ns |
| SELECT with WHERE, ORDER BY, LIMIT | 2,028 ns | 3,894 ns |
| Two-table JOIN | 3,215 ns | 4,850 ns |
| GROUP BY with HAVING | 2,230 ns | 3,417 ns |
| IN subquery | 1,887 ns | 3,362 ns |
| Common table expression | 2,748 ns | 4,918 ns |
| Window function | 1,899 ns | 3,221 ns |
| Multi-JOIN analytical query | 8,776 ns | 12,445 ns |
| INSERT VALUES | 1,443 ns | 2,105 ns |
| UPDATE with WHERE | 1,200 ns | 2,127 ns |
| DELETE with WHERE | 841 ns | 1,223 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+.