OpenMetadata's SQL parser silently
drops MSSQL stored procedure lineage.
OpenMetadata's three-parser chain (sqlglot → sqlfluff → sqlparse)
silently skips stored procedures, temp tables, MERGE, and square bracket identifiers —
losing column-level lineage without warning. gsp-openmetadata-sidecar recovers it.
Your MSSQL lineage graph is silently empty.
OpenMetadata extracts lineage by passing SQL through three parsers in sequence:
sqlglot, sqlfluff, and sqlparse (via collate-sqllineage).
If all three fail, the statement is silently skipped — no error, no warning, just empty lineage.
MSSQL stored procedures aren't plain SQL. They use CREATE PROCEDURE,
BEGIN/END, DECLARE, temp tables, and MERGE —
standard T-SQL patterns that none of the three parsers can handle.
Same stored procedure. Dramatically different results.
Same stored procedure. Same 4 tables. 0 vs 12 column-level relationships.
These issues have been open for years. The sidecar solves them today.
| Issue | Problem | Pattern | Status |
|---|---|---|---|
| #16737 | Data Lineage Not Reflected for MSSQL Stored Procedure | BEGIN/END blocks | Open since June 2024 |
| #25299 | Stored Procedure lineage not supported for MS SQL connector | Temp tables + BEGIN/END | Release backlog |
| #17586 | MS SQL Procedures Lineage Not Picked Up | CREATE PROCEDURE filter | Partially fixed |
| #16710 | SQL Server ingestion fails on stored procs with % | Special characters | Open |
| #16424 | Square bracket syntax breaks lineage | Cross-database identifiers | Open |
3 steps. 60 seconds. No OpenMetadata changes.
Install
One pip command. No Docker, no infra changes, no OpenMetadata plugins.
pip install gsp-openmetadata-sidecar Parse with SQLFlow
Point the sidecar at your SQL files. Gudu SQLFlow parses T-SQL natively — stored procedures, temp tables, MERGE, square brackets, all handled.
gsp-openmetadata-sidecar --sql-file proc.sql --dry-run Push to OpenMetadata
Column-level lineage is pushed to OpenMetadata via PUT /api/v1/lineage. Your lineage graph is complete — no fork, no redeploy.
gsp-openmetadata-sidecar --sql-file proc.sql --om-server http://localhost:8585/api --om-token eyJ... Four backends. Pick your comfort level.
Every backend uses the same GSP SQLFlow engine. The only difference is where SQL gets parsed.
Anonymous
- 50 calls/day per IP
- Cloud-parsed, not logged
- Great for evaluation
Authenticated
- Personal API key
- Higher per-minute quota
- Usage dashboard
- Priority processing
Self-Hosted / Local JAR
- SQL never leaves your network
- No rate limits
- Docker or standalone JAR
- Enterprise support
Common questions.
Does this replace OpenMetadata's lineage parser?
No. The sidecar complements OpenMetadata's existing parser. OpenMetadata still runs its three-parser chain (sqlglot, sqlfluff, sqlparse) for standard SQL — it handles straightforward queries well. The sidecar only re-parses statements where all three parsers fail, recovering the lineage that would otherwise be silently lost.
Does this modify OpenMetadata's code?
No. The sidecar uses OpenMetadata's public REST API only (PUT /api/v1/lineage and GET /api/v1/tables). No forks, no plugins, no code changes. It runs as a standalone CLI tool alongside your OpenMetadata installation.
Which SQL dialects are supported?
MSSQL (T-SQL) is the primary focus, but the underlying GSP SQLFlow engine supports 20+ dialects including BigQuery, Snowflake, Oracle PL/SQL, Hive, Spark SQL, DB2, and more. The sidecar works with any dialect that SQLFlow can parse.
Do tables need to exist in OpenMetadata first?
Yes. The sidecar creates lineage edges between existing entities — it does not create tables, databases, or schemas. Run OpenMetadata's metadata ingestion first so your tables are registered, then run the sidecar to add the lineage that was missed.
Is my SQL sent to a third party?
Depends on your backend. Anonymous and Authenticated modes parse SQL via Gudu Software's cloud API (processed in memory, never logged or stored). Self-hosted mode runs the GSP engine on your infrastructure — SQL never leaves your network. The local JAR mode needs no network at all.
What's the licensing model?
The sidecar tool itself is open source (Apache 2.0). The Anonymous backend is free (50 calls/day). The Authenticated backend provides 10k calls/month with a personal API key. Self-hosted and local JAR deployments require a commercial SQLFlow license — contact us for pricing.
Install in 60 seconds. See what you've been missing.
One command. Every missing column-level relationship back in OpenMetadata.
Open source on GitHub · Apache 2.0 license · Also available: gsp-datahub-sidecar for DataHub