omni

module
v0.0.0-...-768cf3d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 1, 2026 License: MIT

README ΒΆ

Omni

SQL toolchain for multiple database engines. Each engine provides a parser, AST, and additional components such as catalog simulation and semantic analysis -- all in pure Go with zero dependencies.

Features

  • Zero dependencies -- pure Go, no CGo, no generated code at runtime
  • Full AST -- every parsed statement produces a complete abstract syntax tree
  • Position tracking -- every AST node carries byte-offset location info
  • Beyond parsing -- catalog simulation, DDL semantic analysis, and more per engine

Status

Engine Parser Catalog Completion
PostgreSQL βœ… βœ… Planned
MySQL 🚧 Planned Planned
SQL Server 🚧 Planned Planned
Oracle 🚧 Planned Planned

Quick Start

go get github.com/bytebase/omni
PostgreSQL
package main

import (
    "fmt"
    "github.com/bytebase/omni/pg"
    "github.com/bytebase/omni/pg/ast"
)

func main() {
    stmts, err := pg.Parse("SELECT 1; CREATE TABLE t (id int);")
    if err != nil {
        panic(err)
    }
    for _, s := range stmts {
        fmt.Printf("%-20T  %s\n", s.AST, s.Text)
    }
    // *ast.SelectStmt       SELECT 1;
    // *ast.CreateStmt        CREATE TABLE t (id int);
}

Architecture

omni/
β”œβ”€β”€ pg/                     PostgreSQL
β”‚   β”œβ”€β”€ parse.go            Public API: Parse(sql) β†’ []Statement
β”‚   β”œβ”€β”€ ast/                210+ AST node types
β”‚   β”œβ”€β”€ parser/             Recursive descent parser (~29K lines)
β”‚   β”œβ”€β”€ catalog/            In-memory catalog simulation & DDL analysis
β”‚   β”œβ”€β”€ parsertest/         746 test cases
β”‚   └── pgregress/          PostgreSQL regression test compatibility
β”œβ”€β”€ mysql/                  MySQL
β”‚   β”œβ”€β”€ ast/                AST node types
β”‚   β”œβ”€β”€ parser/             Recursive descent parser
β”‚   └── parsertest/         Test cases
β”œβ”€β”€ mssql/                  SQL Server (T-SQL)
β”‚   β”œβ”€β”€ ast/                AST node types
β”‚   β”œβ”€β”€ parser/             Recursive descent parser
β”‚   └── parsertest/         Test cases
β”œβ”€β”€ oracle/                 Oracle
β”‚   β”œβ”€β”€ ast/                AST node types
β”‚   └── parser/             Recursive descent parser
└── scripts/                Shared build & audit tooling

Development

# Run all tests
make test

# Test a specific engine
make test-pg
make test-mysql
make test-mssql
make test-oracle

# Build everything
make build

License

MIT -- see LICENSE.

Directories ΒΆ

Path Synopsis
Package cosmosdb provides a parser for Azure Cosmos DB NoSQL SQL API queries.
Package cosmosdb provides a parser for Azure Cosmos DB NoSQL SQL API queries.
analysis
Package analysis extracts field-level information from parsed CosmosDB queries.
Package analysis extracts field-level information from parsed CosmosDB queries.
ast
Package ast defines parse tree node types for Azure Cosmos DB NoSQL SQL API.
Package ast defines parse tree node types for Azure Cosmos DB NoSQL SQL API.
parser
Package parser implements a hand-written parser for Azure Cosmos DB NoSQL SQL API.
Package parser implements a hand-written parser for Azure Cosmos DB NoSQL SQL API.
Package mongo provides a parser for MongoDB shell (mongosh) commands.
Package mongo provides a parser for MongoDB shell (mongosh) commands.
ast
Package ast defines MongoDB (mongosh) parse tree node types.
Package ast defines MongoDB (mongosh) parse tree node types.
ast
Package ast defines T-SQL parse tree node types.
Package ast defines T-SQL parse tree node types.
completion
Package completion provides parser-native C3-style SQL completion for MSSQL.
Package completion provides parser-native C3-style SQL completion for MSSQL.
parser
Package parser - alter_objects.go implements T-SQL ALTER DATABASE and ALTER INDEX parsing.
Package parser - alter_objects.go implements T-SQL ALTER DATABASE and ALTER INDEX parsing.
mysql
ast
Package ast defines MySQL parse tree node types.
Package ast defines MySQL parse tree node types.
completion
Package completion provides parser-native C3-style SQL completion for MySQL.
Package completion provides parser-native C3-style SQL completion for MySQL.
deparse
Package deparse converts MySQL AST nodes back to SQL text, matching MySQL 8.0's SHOW CREATE VIEW formatting.
Package deparse converts MySQL AST nodes back to SQL text, matching MySQL 8.0's SHOW CREATE VIEW formatting.
parser
Package parser implements a recursive descent SQL parser for MySQL.
Package parser implements a recursive descent SQL parser for MySQL.
oracle
ast
Package ast defines Oracle PL/SQL parse tree node types.
Package ast defines Oracle PL/SQL parse tree node types.
parser
Package parser implements an Oracle PL/SQL lexer and recursive descent parser.
Package parser implements an Oracle PL/SQL lexer and recursive descent parser.
pg
ast
Package nodes defines PostgreSQL parse tree node types.
Package nodes defines PostgreSQL parse tree node types.
ast/cmd/genwalker command
Command genwalker generates walk_generated.go from parsenodes.go.
Command genwalker generates walk_generated.go from parsenodes.go.
completion
Package completion provides parser-native C3-style SQL completion for PostgreSQL.
Package completion provides parser-native C3-style SQL completion for PostgreSQL.
parser
Package parser implements a PostgreSQL-compatible SQL lexer and parser.
Package parser implements a PostgreSQL-compatible SQL lexer and parser.
pgregress
Package pgregress provides tools for running PostgreSQL regression test SQL files against the pgparser parser to verify parse compatibility.
Package pgregress provides tools for running PostgreSQL regression test SQL files against the pgparser parser to verify parse compatibility.
plpgsql/ast
Package ast defines PL/pgSQL AST node types.
Package ast defines PL/pgSQL AST node types.
plpgsql/parser
Package parser implements a recursive descent PL/pgSQL parser.
Package parser implements a recursive descent PL/pgSQL parser.
Dashboard serves a web-based monitoring UI for all parser engine pipelines.
Dashboard serves a web-based monitoring UI for all parser engine pipelines.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL