| What it is actually for | A data-management framework: relational algebra, cost-based query optimization and federation. It powers Hive, Flink and Druid. Its parser exists to feed that pipeline | A parsing and semantic-analysis SDK. It has no optimizer and no execution engine |
| Query planning, rewriting, federation | Yes — this is its reason to exist, and GSP cannot do any of it | No. If you need a planner, use Calcite and do not let this page distract you |
| License | Apache-2.0, free for commercial use | Commercial, with a 90-day free trial |
| Runs in-process on the JVM | Yes — free in-process parsing genuinely exists on the JVM | Yes, plus a native .NET edition |
| Dialect faithfulness | A configurable ANSI-leaning parser with dialect conformance settings — designed to normalise SQL toward relational algebra | 42 dialects, each with a dedicated grammar that preserves vendor-specific syntax rather than normalising it away |
| Stored procedures / procedural SQL | Out of scope — Calcite parses queries, not PL/SQL packages or T-SQL batches | 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 — EXEC(’…’) strings and parameter bindings folded to recover lineage |
| Column-level lineage | Derivable from RelNode metadata if you build it, and some projects do | A lineage engine across queries, procedures, dynamic SQL and multi-statement scripts, with impact analysis and call graphs |
| Offline validation without a catalog | Validation generally assumes a schema/catalog is available | Validation with error positions, no catalog or database connection required |
| SQL formatting | Via the target dialect writer | Dedicated formatter, 72+ style options |