GoSQLX
<div align="center">
<img src="https://raw.githubusercontent.com/ajitpratap0/GoSQLX/main/.github/logo.png" alt="GoSQLX Logo" width="180"/>
Parse SQL at the speed of Go
   
    
    
<br/>
π Try the Playground Β· π Read the Docs Β· π Get Started Β· π Benchmarks
<br/>
| 1.38M+ ops/sec | <1ΞΌs latency | 85% SQL-99 | 8 dialects | 0 race conditions | |:---:|:---:|:---:|:---:|:---:|
</div>
<br/>
What is GoSQLX?
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 - handling 1.38M+ operations per second with sub-microsecond latency.
// v1.15+ recommended entry point: ParseTree returns an opaque Tree,
// so you don't need to import pkg/sql/ast just to get started.
tree, _ := gosqlx.ParseTree(ctx, "SELECT u.name, COUNT(*) FROM users u JOIN orders o ON u.id = o.user_id GROUP BY u.name",
gosqlx.WithDialect("postgresql"))
fmt.Println("Tables:", tree.Tables())
fmt.Println(tree.Format(gosqlx.WithIndent(2), gosqlx.WithUppercaseKeywords(true)))
Why GoSQLX?
- 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.
<br/>
Get Started in 60 Seconds
go get github.com/ajitpratap0/GoSQLX
package main
import (
"fmt"
"github.com/ajitpratap0/GoSQLX/pkg/gosqlx"
)
func main() {
ctx := context.Background()
// ParseTree (v1.15+) is the recommended entry point. It returns an
// opaque handle with built-in helpers β no need to import pkg/sql/ast.
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.
}
<br/>
Install Everywhere
<table> <tr> <td width="50%">
π¦ Go Library
go get github.com/ajitpratap0/GoSQLX
π₯οΈ CLI Tool
go install github.com/ajitpratap0/GoSQLX/cmd/gosqlx@latest
gosqlx validate "SELECT * FROM users"
gosqlx format query.sql
gosqlx lint query.sql
</td> <td width="50%">
π» VS Code Extension
code --install-extension ajitpratap0.gosqlx
Bundles the binary - zero setup. Learn more β
π€ MCP Server (AI Integration)
claude mcp add --transport http gosqlx \
https://mcp.gosqlx.dev/mcp
7 SQL tools in Claude, Cursor, or any MCP client. Guide β
</td> </tr> </table>
<br/>
Features at a Glance
<table> <tr> <td align="center" width="33%"><h3>β‘ Parser</h3>Zero-copy tokenizer<br/>Recursive descent parser<br/>Full AST generation<br/>Multi-dialect engine</td> <td align="center" width="33%"><h3>π‘οΈ Analysis</h3>SQL injection scanner<br/>30 lint rules (L001βL030)<br/>20 optimizer rules<br/>Metadata extraction</td> <td align="center" width="33%"><h3>π§ Tooling</h3>AST-based formatter<br/>Query transforms API<br/>VS Code extension<br/>GitHub Action</td> </tr> <tr> <td align="center"><h3>π Multi-Dialect</h3>PostgreSQL Β· MySQL Β· MariaDB<br/>SQL Server Β· Oracle<br/>SQLite Β· Snowflake Β· ClickHouse</td> <td align="center"><h3>π€ AI-Ready</h3>MCP server (7 tools)<br/>Public remote endpoint<br/>Streamable HTTP</td> <td align="center"><h3>π§ͺ Battle-Tested</h3>20K+ concurrent ops<br/>Zero race conditions<br/>~85% SQL-99 compliance</td> </tr> </table>
<br/>
Documentation
| | Resource | Description | |---|---|---| | π | gosqlx.dev | Website with interactive playground | | π | 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 | | π | Release Notes | What's new in each version |
<br/>
Contributing
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
<br/>
Who's Using GoSQLX?
GoSQLX is downloaded and cloned by developers worldwide -- 595 unique cloners in just 14 days. If you're using GoSQLX in your project or organization, we'd love to hear about it!
| Project / Company | Use Case | |---|---| | Your project here | Add yourself via PR or tell us in Discussions |
Using GoSQLX at work? Building something cool with it? Share your story in GitHub Discussions -- it helps the community grow and motivates continued development.
<br/>
Community
<div align="center">
Got questions? Ideas? Found a bug?
<a href="https://github.com/ajitpratap0/GoSQLX/discussions"><img src="https://img.shields.io/badge/π¬_Discussions-Ask_&_Share-purple?style=for-the-badge" alt="Discussions"></a> <a href="https://github.com/ajitpratap0/GoSQLX/issues/new/choose"><img src="https://img.shields.io/badge/π_Issues-Report_&_Request-red?style=for-the-badge" alt="Issues"></a> <a href="https://gosqlx.dev/blog/"><img src="https://img.shields.io/badge/π_Blog-Release_Notes-green?style=for-the-badge" alt="Blog"></a>
</div>
<br/>
License
Apache License 2.0 - see LICENSE for details.
---
<div align="center">
<sub>Built with β€οΈ by the GoSQLX community</sub>
gosqlx.dev Β· Playground Β· Docs Β· MCP Server Β· VS Code
<br/>
If GoSQLX helps your project, consider giving it a β
</div>











