| Language / runtime | Python (optional Rust tokenizer) | Java (JDK 8+) and .NET (.NET Standard 2.0) |
| License | MIT open source | Commercial with support SLA and 90-day free trial |
| Dialect-to-dialect transpilation | Yes — the headline feature (e.g. Snowflake → DuckDB) | No. GSP parses, validates, formats, rewrites, and analyzes — it is not a transpiler |
| Dialects | ~30 dialects, one shared grammar with per-dialect overrides | 38 dialects, each with its own dedicated grammar — including IBM Db2, Informix, Netezza, Sybase, SAP HANA, Vertica, Couchbase N1QL, Salesforce SOQL, GaussDB, Dameng, OceanBase, and Power Query M |
| Stored procedures / procedural SQL | Procedural blocks (PL/SQL packages, T-SQL blocks, DB2 SQL PL) generally fall back to opaque Command nodes | Fully parsed ASTs: PL/SQL packages, types, and triggers; T-SQL blocks, TRY/CATCH, EXECUTE; DB2 SQL PL cursors; Teradata procedures and BTEQ |
| Dynamic SQL | Not evaluated | Evaluated — GSP constant-folds EXEC('...') strings and parameter bindings to recover lineage from dynamic SQL |
| Column-level lineage | Lineage module for queries; used by DataHub for query-based lineage | Lineage engine covering queries, stored procedures, dynamic SQL, and multi-statement scripts, with impact analysis and call graphs (the engine behind Gudu SQLFlow) |
| Syntax validation | Best-effort (tolerant parser by design) | Offline validation with detailed error positions, no database connection required |
| SQL formatting | pretty output flag | Dedicated formatter with 72+ configurable style options |
| Tests / releases | Active open-source project, frequent releases | 12,000+ unit tests, releases roughly weekly, 20+ years of development |
| Support for edge cases | GitHub issues, community-driven | Commercial support: send failing SQL, get a fix in a scheduled release |