Pure-Go SQL parser, formatter, linter and security scanner for 8 dialects.
Playground · Docs · Benchmarks · VS Code · MCP server
| ~3.1M parses/sec† | 318 ns parse latency† | ~80–85% SQL-99 (est.) | 8 dialects | 0 race conditions |
|---|
† Parse stage only (pre-tokenized input to AST), SELECT id, name FROM users, Apple M4, Go 1.27, median of 10 runs of BenchmarkPerformanceBaseline. Complex queries take longer (see performance_baselines.json). Reproduce: go test -run ^$ -bench BenchmarkPerformanceBaseline -benchmem -count=10 ./pkg/sql/parser/.
GoSQLX is a production-ready SQL parsing SDK for Go. It tokenizes, parses, and generates ASTs from SQL with zero-copy optimizations and intelligent object pooling - parsing a simple SELECT in about 318 ns (~3.1M parses/sec).
- Not an ORM - a parser. You get the AST, you decide what to do with it.
- Not slow - zero-copy tokenization, sync.Pool recycling, no allocations on hot paths.
- Not limited - PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, SQLite, Snowflake, ClickHouse. CTEs, window functions, MERGE, set operations.
- Not just a library - CLI, VS Code extension, GitHub Action, MCP server, WASM playground, Python bindings.
go get github.com/ajitpratap0/GoSQLXgo install github.com/ajitpratap0/GoSQLX/cmd/gosqlx@latestcode --install-extension ajitpratap0.gosqlxThe extension bundles the binary, so there is no extra setup. Learn more.
claude mcp add --transport http gosqlx https://mcp.gosqlx.dev/mcp7 SQL tools in Claude, Cursor, or any MCP client. MCP guide.
- uses: ajitpratap0/GoSQLX@v1
with:
files: '**/*.sql'
validate: trueSource: examples/readme_quickstart/main.go, compiled in CI against HEAD and the latest release.
package main
import (
"context"
"errors"
"fmt"
"log"
"github.com/ajitpratap0/GoSQLX/pkg/gosqlx"
"github.com/ajitpratap0/GoSQLX/pkg/sql/ast"
)
func main() {
ctx := context.Background()
// ParseTree is the recommended entry point. It returns an
// opaque handle with built-in helpers.
tree, err := gosqlx.ParseTree(ctx, "SELECT id, name FROM users WHERE active = true",
gosqlx.WithDialect("postgresql"))
if err != nil {
// Sentinel errors work with errors.Is
if errors.Is(err, gosqlx.ErrSyntax) {
log.Fatalf("syntax error: %v", err)
}
log.Fatal(err)
}
fmt.Println("Tables:", tree.Tables())
fmt.Println(tree.Format(gosqlx.WithIndent(2), gosqlx.WithUppercaseKeywords(true)))
// Walk the AST - typed walkers avoid the type-assertion dance:
tree.WalkSelects(func(s *ast.SelectStatement) bool {
fmt.Printf(" SELECT with %d columns\n", len(s.Columns))
return true
})
// The legacy Parse/Format/Validate API still works for v1.x code.
// See docs/MIGRATION.md for the Tree migration guide.
}Output:
Tables: [users]
SELECT id, name
FROM users
WHERE active = true
SELECT with 2 columns
Formatting turns one-line SQL into a readable query:
- Parser - zero-copy tokenizer, recursive descent parser and full AST generation.
- Analysis - SQL injection scanner, 30 lint rules (L001-L030), 20 optimizer rules and metadata extraction.
- Tooling - AST-based formatter, query transforms API, VS Code extension and GitHub Action.
- Multi-dialect - PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, SQLite, Snowflake, ClickHouse.
- AI-ready - MCP server with 7 tools, public remote endpoint, Streamable HTTP.
- Tested - race-detector clean in CI, ~80-85% SQL-99 (estimated).
- Getting Started - parse your first SQL in 5 minutes
- Usage Guide - comprehensive patterns and examples
- API Reference - complete API documentation
- CLI Guide - command-line tool reference
- SQL Compatibility - dialect support matrix
- MCP Guide - AI assistant integration
- Architecture - system design deep-dive
- Benchmarks - performance data and methodology
- Changelog - what changed in each version
GoSQLX is built by contributors like you. Whether it's a bug fix, new feature, documentation improvement, or just a typo - every contribution matters.
git clone https://github.com/ajitpratap0/GoSQLX.git && cd GoSQLX
task check # fmt → vet → lint → test (with race detection)- Fork & branch from
main - Write tests - we use TDD and require race-free code
- Run
task check- must pass before PR - Open a PR - we review within 24 hours
Contributing Guide · Code of Conduct · Governance
Questions or ideas: Discussions. Found a bug or want a feature: Issues.
Apache License 2.0 - see LICENSE for details.
gosqlx.dev · Playground · Docs · MCP Server · VS Code
