NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3953 most downloaded on PyPI
SQL Lineage Analysis Tool powered by Python
Last release 29 days ago
05 Sep 2026
Release timing varies
gaps range from 4 weeks to 9 months
Nearly every release is documented
notes for 47 of 47 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
47 releases · first in 2019
This is a minor release with six enhancements and several bugfixes. A special thanks to @rubytobi for a series of contributions that keep pushing sqll
This is a minor release with six enhancements and several bugfixes. A special thanks to @rubytobi for a series of contributions that keep pushing sqllineage's performance forward: batch SQLFluff parsing, Table/Column stringification and hashing cache, node-scoped column lineage, and, since v1.5.7, the rustworkx-based graph operator.
Having been validated against large-scale SQL workloads in production, the rustworkx graph operator shows significant performance improvement over the networkx implementation. We now recommend users to switch the graph operator to rustworkx by setting GRAPH_OPERATOR_CLASS to sqllineage.core.graph.rustworkx.RustworkXGraphOperator.
For users consuming sqllineage as a library, this release ships a py.typed marker (PEP 561) so static type checkers such as mypy and pyright can make use of sqllineage's type hints, no longer reconfigures the root logger so embedding sqllineage in your own application leaves your logging setup untouched, and moves development and documentation dependencies into PEP 735 dependency groups so the ci and docs extras are no longer shipped with the published package.
ci and docs extras are no longer shipped with the published package (#828)py.typed marker for PEP 561 compliance so static type checkers such as mypy and pyright can make use of sqllineage's type hints when it is used as a library (#802)Table and Column __str__/__hash__ results to avoid repeated recomputation, a performance improvement (#792) @rubytobisqllineage logger in DEFAULT_LOGGING instead of the root logger, so embedding sqllineage in your own application no longer alters your application's logging setup (#791)One column per quarter.
This is a minor release with two enhancements and several bugfixes:
This is a minor release with two enhancements and several bugfixes:
This is a regular minor release. We deprecated Python 3.9 and added support for Python 3.14 based on Python end-of-life schedule. Also a new opt-in fe…
This is a regular minor release. We deprecated Python 3.9 and added support for Python 3.14 based on Python end-of-life schedule. Also a new opt-in feature to use rustworkx as graph operator to improve performance on large SQLs is added. Check configuration section in our documentation for more details. Any feedback is welcome.
This is a bugfix release with a couple of dialect-specific minor enhancements:
This is a bugfix release with a couple of dialect-specific minor enhancements:
This is a tech refresh release, including the following changes:
This is a tech refresh release, including the following changes:
In this release, we deprecated Python 3.8 and added support for Python 3.13 based on Python end-of-life schedule.
In this release, we deprecated Python 3.8 and added support for Python 3.13 based on Python end-of-life schedule.
The most notable enhancement is upgrading sqlfluff to 3.3.1. As a result, we can now support Impala dialect and
StarRocks dialect. Many parser issues are also fixed automatically by sqlfluff upgrade.
This is a security release to upgrade some dependencies to latest version as we receive vulnerability alerts. We strongly recommend that all sqllineag…
This is a security release to upgrade some dependencies to latest version as we receive vulnerability alerts.
We strongly recommend that all sqllineage installations be upgraded to this version immediately.
This release also includes an improvement regarding metadata provider.
#528) @delphisharpEnable support of sqlfluff context ( #548 ) @reata
This is a bugfix release mostly driven by community contributors. Thanks everyone for making SQLLineage better.
This is a bugfix release mostly driven by community contributors. Thanks everyone for making SQLLineage better.
Also a breaking change is made to make ansi the default dialect in v1.5.x release as we target ultimately deprecating non-validating dialect in v1.6.x…
Great thanks to @lixxvsky for contributing on MetaData-awareness lineage. Now we're able to generate more accurate
column lineage result for select * or select unqualified columns in case of table join through a unified
MetaDataProvider interface.
Also a breaking change is made to make ansi the default dialect in v1.5.x release as we target ultimately deprecating
non-validating dialect in v1.6.x release.
This is a bugfix release where we closed a bunch of issues concerning CTE and UNION
This is a bugfix release where we closed a bunch of issues concerning CTE and UNION
programmatically list supported dialects
Support subquery in VALUES clause
That's a big step in ultimately deprecating sqlparse. Also by upgrading to latest version of sqlfluff (with our PR merged), we enjoy the benefits of i…
In this release, we finally reach the milestone to make all sqlparse only test cases passed with sqlfluff implementation. That's a big step in ultimately deprecating sqlparse. Also by upgrading to latest version of sqlfluff (with our PR merged), we enjoy the benefits of improved sqlfluff performance when parsing some SQLs with nested query pattern.
Switch to PyPI Trusted Publishers
BigQuery Specific MERGE statement feature support
Support postgres style type casts "keyword::TIMESTAMP"
sqlparse v0.4.4 breaks non-validating dialect
Date : April 22, 2023
sqlparse v0.4.4 breaks non-validating dialect ( #361 )
frontend app unable to load dialect when launched for the first time
Date : April 2, 2023
frontend app unable to load dialect when launched for the first time
Deprecate support for Python 3.6 and Python 3.7, add support for Python 3.11
Great thanks to @nahuelverdugo, @ulixius9 and @pmbrull from @open-metadata community for contributing on feature Dialect-awareness lineage. Leveraging sqlfluff underneath, we're now able to give more correct lineage result with user input on SQL dialect.
sqlparse v0.4.4 breaks non-validating dialect
migrate demo site off Heroku to GitHub Pages
support MySQL RENAME TABLE statement
support parsing column in cast/try_cast with function
table/column lineage mixed up for self dependent SQL
smarter column-to-table resolution using query context
Date : December 26, 2021
smarter column-to-table resolution using query context ( #203 )
column lineage for union operation ( #207 )
subquery in where clause not parsed for table lineage ( #204 )
support optional AS keyword in CTE
Date : December 12, 2021
support optional AS keyword in CTE ( #198 )
support referring to a CTE in subsequent CTEs ( #196 )
support for Redshift ‘copy from’ syntax ( #164 )
Alias Parsed As Table Name for Column Lineage Using ANSI-89 Join
- SHOW CREATE TABLE parsed as target table
Date : November 13, 2021
Column-Level Lineage ( #103 )
SHOW CREATE TABLE parsed as target table ( #167 )
- highlight selected node and its ancestors as well as children recursively
Date : June 14, 2021
highlight selected node and its ancestors as well as children recursively ( #156 )
add support for database.schema.table as identifier name ( #153 )
add support for swap_partitions_between_tables ( #152 )
- lineage API response exception handling
Date : May 15, 2021
lineage API response exception handling ( #148 )
- resize dragger remain on the UI when drawer is closed
Date : May 5, 2021
resize dragger remain on the UI when drawer is closed ( #145 )
- re-sizable directory tree drawer
Date : May 3, 2021
option to specify hostname ( #142 )
re-sizable directory tree drawer ( #140 )
async loading for directory tree in frontend UI ( #138 )
- A Full Fledged Frontend Visualization App
Date : April 18, 2021
A Full Fledged Frontend Visualization App ( #118 )
Use TPC-DS Queries as Visualization Example ( #116 )
Unit Test Failure With sqlparse==0.3.0, update dependency to be >=0.3.1 ( #117 )
contributing guide ( #14 )
- trim function with from in arguments
Date : March 9, 2021
trim function with from in arguments ( #127 )
- UNCACHE TABLE statement parsed with target table
Date : February 1, 2021
UNCACHE TABLE statement parsed with target table ( #123 )
- Bring back draw method of LineageRunner to avoid backward incompatible change
Date : January 26, 2021
Bring back draw method of LineageRunner to avoid backward incompatible change ( #120 )
- SQLLineageException for Multiple CTE Subclauses
Date : January 24, 2021
SQLLineageException for Multiple CTE Subclauses ( #115 )
- A new JavaScript-based approach for visualization, drop dependency for graphviz
Date : January 17, 2021
A new JavaScript-based approach for visualization, drop dependency for graphviz ( #94 )
Test against Mac OS and Windows ( #87 )
buckets parsed as table name for Spark bucket table DDL ( #111 )
incorrect result for update statement ( #105 )
- switch to GitHub Actions for CI
Date : November 17, 2020
black check in CI ( #99 )
switch to GitHub Actions for CI ( #95 )
test against Python 3.9 ( #84 )
cartesian product exception with ANSI-89 syntax ( #89 )
- remove upper bound for dependencies
Date : October 17, 2020
remove upper bound for dependencies ( #85 )
- a detailed documentation hosted by readthedocs
Date : September 27, 2020
a detailed documentation hosted by readthedocs ( #81 )
drop support for Python 3.5 ( #79 )
- DAG based lineage representation with visualization functionality
Date : August 29, 2020
DAG based lineage representation with visualization functionality ( #55 )
replace print to stderr with logging ( #75 )
sort by table name in LineageResult ( #70 )
change schema default value from <unknown> to <default> ( #69 )
set up Github actions for PyPi publish ( #68 )
- statement granularity lineage result
Date : July 19, 2020
statement granularity lineage result ( #32 )
schema aware parsing ( #20 )
allow user to specify combiner ( #64 )
trim leading comment for statement in verbose output ( #57 )
add mypy as static type checker ( #50 )
add bandit as security issue checker ( #48 )
enforce black as code formatter ( #46 )
dedicated Table/Partition/Column Class ( #31 )
friendly exception handling ( #30 )
subquery without alias raises exception ( #62 )
refresh table and cache table should not count as target table ( #59 )
let user choose whether to filter temp table or not ( #23 )
- comment in line raise AssertionError
Date : April 11, 2020
test against Python 3.8 ( #39 )
comment in line raise AssertionError ( #37 )
white space in left join ( #36 )
temp table checking ( #35 )
enable case-sensitive parsing ( #34 )
support for create table like statement ( #29 )
special treatment for DDL ( #28 )
empty statement return ( #25 )
drop table parsed as target table ( #21 )
multi-line sql causes AssertionError ( #18 )
subquery mistake alias as table name ( #16 )
- stable command line interface
Date : July 26, 2019
stable command line interface ( #2 )
combine setup.py and requirements.txt ( #6 )
combine tox and Travis CI ( #5 )
table-wise lineage with sufficient test cases ( #4 )
a startup docs for sqllineage’s usage ( #3 )
pypi badges in README ( #1 )
Date : June 16, 2019 ### New Features initial public release
Date : June 16, 2019
initial public release
Your coding agent can read these notes before it upgrades. Set up the MCP server →