Skip to main content

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.

QueryGoSQLXxwb1989/sqlparser
Simple SELECT925 ns3,441 ns
SELECT with WHERE, ORDER BY, LIMIT2,028 ns5,803 ns
Two-table JOIN3,215 ns11,725 ns
GROUP BY with HAVING2,230 ns5,897 ns
IN subquery1,887 ns9,678 ns
Common table expression2,748 nsnot supported
Window function1,899 nsnot supported
Multi-JOIN analytical query8,776 ns21,260 ns
INSERT VALUES1,443 ns4,209 ns
UPDATE with WHERE1,200 ns4,063 ns
DELETE with WHERE841 ns3,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+.

Full feature matrix