Release Notes¶
GSP Java v3.x to v4 Migration Guide
Version history of general sql parser¶
GSP Java version 4.1.0.5(2026-03-06)¶
- 2026-03-06 [Teradata] Support abbreviated GRANT privileges
- 2026-03-06 [Vertica] Support CREATE FLEX TABLE syntax
- 2026-03-06 [Teradata] Support USER, DATABASE, CREATE USER as GRANT privileges
- 2026-03-06 [Teradata] Support TABLE, VIEW, MACRO as GRANT privileges
- 2026-03-06 [Snowflake] Populate stage location from COPY INTO subquery
- 2026-03-06 [Redshift] Support IGNORE/RESPECT NULLS in both positions
- 2026-03-06 Add comprehensive TAttributeNode deprecated API inventory
- 2026-03-06 Support SQL query statistics
- 2026-03-06 Add large SQL file splitter tool
- 2026-03-06 Fixed NPE in logger error handling
- 2026-03-05 [Oracle] Improve call graph for parameterless calls and trigger tables
- 2026-03-05 [Oracle] Fix forward declaration causing AMBIGUOUS resolution
- 2026-03-05 [Oracle] Model package body initializer as synthetic routine
- 2026-03-05 [Oracle] Classify built-in functions as external deps
- 2026-03-05 [Oracle] Detect calls from enclosing routine to nested functions
- 2026-03-05 [Oracle] Detect function calls in TABLE(func) without arguments
- 2026-03-05 [Oracle] Detect parameterless function calls in all contexts
- 2026-03-05 [Oracle] Detect calls inside EXCEPTION handler blocks
- 2026-03-05 [Oracle] Detect constructor calls inside PIPE ROW statements
- 2026-03-05 [Oracle] Filter boolean literals from call graph edges
- 2026-03-05 [Oracle] Detect function calls in PL/SQL declarative sections
- 2026-03-05 [Oracle] Traverse compound trigger timing section bodies
- 2026-03-05 [Oracle] Detect double-parenthesized function calls
- 2026-03-05 [Oracle] Detect standalone dotted procedure calls
- 2026-03-05 [Oracle] Detect procedure calls in CASE statement branches
- 2026-03-05 [Oracle] Filter collection parameter access from call graph
- 2026-03-05 [Oracle] Filter SYSDATE and pseudo-columns from call graph
- 2026-03-05 [Oracle] Filter out collection variable/method calls from call graph
- 2026-03-05 [Oracle] Merge forward declaration and implementation
- 2026-03-05 [Oracle] Resolve calls to procs with default parameters
- 2026-03-05 [Oracle] Detect built-in SQL function calls in PL/SQL expressions
- 2026-03-05 [Oracle] Deduplicate cursor table accesses on OPEN CURSOR
- 2026-03-05 [Oracle] Fix trigger ON table access kind classification
- 2026-03-05 [MSSQL] Add T-SQL call graph support (Phase A IR)
- 2026-03-05 [MSSQL] Filter XML methods and .WRITE() from call graph
- 2026-03-05 [MSSQL] Classify JSON built-in functions as external deps
- 2026-03-05 [MSSQL] Detect function calls in SET assignments
- 2026-03-04 [Vertica] Support PLvSQL truncating assignment (<-)
- 2026-03-03 [PostgreSQL] Fix parser errors on various SELECT commands
- 2026-03-03 [PostgreSQL] Expose ON CONFLICT clause in GSP API
- 2026-03-03 [PostgreSQL] INCLUDE clause in constraints
- 2026-03-03 [PostgreSQL] Add PGvector distance operators
- 2026-03-03 [PostgreSQL] Process operands for binary operator expressions
- 2026-03-03 [PostgreSQL] Fix NPE in TElsifStmt.acceptChildren
- 2026-03-03 Fix null guards in TStarColumnPushDownResolver
- 2026-03-03 [SparkSQL] Support FOR loop statement
- 2026-03-03 [SparkSQL] Support LOOP/END LOOP statement
- 2026-03-03 [SparkSQL] Support labeled WHILE and REPEAT loops
- 2026-03-03 [SparkSQL] Support LEAVE and ITERATE without labels
- 2026-03-02 [Redshift] Database@Catalog cross-database notation
- 2026-03-02 [Redshift] VACUUM TO PERCENT BOOST and ANALYZE ALL COLUMNS
- 2026-03-02 [Redshift] Transaction isolation level extensions
- 2026-03-02 [Redshift] SHOW TEMPLATES LIKE/LIMIT and SHOW DATABASES extensions
- 2026-03-02 [Redshift] SHOW COLUMN GRANTS/CONSTRAINTS and FOR ROLE
- 2026-03-02 [Redshift] SHOW GRANTS extended types and FOR/LIMIT clauses
- 2026-03-02 [Redshift] COPY SIMPLIFY AUTO clause for Shapefile format
- 2026-03-02 [Redshift] CREATE/ALTER USER EXTERNALID double-quoted value
- 2026-03-02 [Redshift] ALTER USER CONNECTION LIMIT, VALID UNTIL, SET SEARCH_PATH
- 2026-03-02 [Redshift] ALTER TABLE MASKING and RLS FOR DATASHARES
- 2026-03-02 [Redshift] CREATE DATABASE extensions
- 2026-03-02 [Redshift] ALTER DATABASE CONNECTION LIMIT and SET INTEGRATION REFRESH
- 2026-03-02 [Redshift] Allow POSITION keyword as column name
GSP Java version 4.1.0.3(2026-03-02)¶
- 2026-03-02 [SparkSQL] Support standalone TABLE expression
- 2026-03-02 [SparkSQL] Support MSCK REPAIR TABLE with ADD/DROP/SYNC PARTITIONS
- 2026-03-02 [SparkSQL] Support FROM-first query syntax
- 2026-03-02 [SparkSQL] Support ILIKE operator for case-insensitive pattern matching
- 2026-03-02 [SparkSQL] Support VALUES with table alias and column definitions
- 2026-03-02 [SparkSQL] Support default keyword as schema/database identifier
- 2026-03-02 [SparkSQL] Support compound statement (BEGIN...END)
- 2026-03-02 [SparkSQL] Support Pipe Syntax operators
- 2026-03-02 [SparkSQL] Support TRANSFORM clause, UNPIVOT, CREATE SQL FUNCTION
- 2026-03-02 [SparkSQL] Support ALTER DATABASE, ALTER TABLE extended operations
- 2026-03-02 [SparkSQL] Support WITHIN GROUP, GROUP BY WITH ROLLUP/CUBE
- 2026-03-02 [SparkSQL] Support IGNORE/RESPECT NULLS, EXCEPT ALL, MINUS ALL
- 2026-03-02 [SparkSQL] Support OFFSET, SET VAR, DROP TEMPORARY VARIABLE
- 2026-03-02 [SparkSQL] Support EXECUTE IMMEDIATE, DECLARE VARIABLE
- 2026-03-02 [SparkSQL] Support star EXCEPT with struct field references
- 2026-03-02 [SparkSQL] Support WINDOW clause, INSERT BY NAME, REPLACE WHERE
- 2026-03-02 [SparkSQL] Support ADD/LIST resource management, CREATE TABLE/VIEW AS VALUES
- 2026-03-02 [SparkSQL] Support CREATE/ALTER VIEW WITH SCHEMA EVOLUTION
- 2026-03-02 [SparkSQL] Support SHOW SCHEMAS, SHOW SYSTEM FUNCTIONS, ANALYZE TABLES
- 2026-03-02 [Redshift] Support SHOW TEMPLATE command
- 2026-03-02 [Redshift] Support NONATOMIC stored procedures
- 2026-03-02 [Redshift] Support CREATE EXTERNAL MODEL with MODEL_TYPE BEDROCK
- 2026-03-02 [Redshift] Support EXTERNALID and namespaced usernames
- 2026-03-02 [Redshift] Support CREATE EXTERNAL SCHEMA FROM MSK with AUTHENTICATION
- 2026-03-02 [Redshift] Support nested complex types in CREATE EXTERNAL TABLE
- 2026-03-02 [Redshift] Support BZIP2 and SERIALIZETOJSON in COPY command
- 2026-03-02 [Redshift] Support DISTSTYLE AUTO and SORTKEY AUTO
- 2026-03-02 [Redshift] Support VACUUM BOOST, LATERAL, ARRAY()
- 2026-03-02 [Redshift] Support CREATE VIEW WITH NO SCHEMA BINDING
- 2026-03-02 [Redshift] Support GENERATED ALWAYS AS IDENTITY
- 2026-03-02 [Redshift] Support UNPIVOT INCLUDE/EXCLUDE NULLS
- 2026-03-02 [Redshift] Support CREATE/ALTER/DROP RLS POLICY and MASKING POLICY
- 2026-03-02 [Redshift] Support CONNECT BY hierarchical queries
- 2026-03-02 [Redshift] Support COPY/UNLOAD extensions (ORC, SHAPEFILE, KMS_KEY_ID)
- 2026-03-02 [Redshift] Support CREATE/ALTER DATABASE extensions
- 2026-03-02 [Redshift] Support CREATE/ALTER USER extensions
- 2026-03-02 [Redshift] Support SHOW extensions (COLUMNS, TABLES, SCHEMAS, GRANTS, DATASHARES)
- 2026-03-02 [Redshift] Support CREATE/ALTER/DROP TEMPLATE, ROLE, DATASHARE
- 2026-03-02 [Redshift] Support CREATE EXTERNAL FUNCTION for Lambda UDFs
- 2026-03-02 [Redshift] Support GRANT/REVOKE extensions (column-level, scoped, ROLE)
- 2026-03-02 [Redshift] Support SELECT * EXCLUDE (columns) syntax
- 2026-03-02 [Redshift] Support USE statement
- 2026-03-02 [Snowflake] Add CHANGES clause for time travel queries
- 2026-03-02 [Snowflake] Support object wildcard {} and {table.} in SELECT
- 2026-03-02 [Snowflake] Support @%table and @~ stage references in SELECT
- 2026-03-02 [Snowflake] Support parenthesized COPY in CREATE PIPE
- 2026-03-02 [Snowflake] Support FILE_FORMAT shorthand and quoted MATCH_BY_COLUMN_NAME
- 2026-03-02 [Snowflake] Support unquoted S3 URLs in COPY INTO FROM
- 2026-03-02 [Snowflake] Support PARTITION BY with external locations in COPY INTO
- 2026-03-02 [Snowflake] Support standalone HEADER keyword in COPY INTO
- 2026-03-02 [Snowflake] Support @stage/ trailing slash in COPY INTO
- 2026-03-02 [Snowflake] Allow varchar2 as unquoted identifier
- 2026-03-02 [Snowflake] Support ALTER TABLE extensions (search optimization, policies, tags, metrics)
- 2026-03-02 [Snowflake] Support multi-column ALTER/MODIFY, constraint management
- 2026-03-02 [BigQuery] Support CREATE MODEL ARIMA custom holidays, INPUT/OUTPUT clauses
- 2026-03-02 [BigQuery] Support Apache Spark procedures and WITH CONNECTION for Python UDFs
- 2026-03-02 [BigQuery] Support OPTIONS clause after function body
- 2026-03-02 [BigQuery] Support hyphenated identifiers in DROP CAPACITY/RESERVATION/ASSIGNMENT
- 2026-03-02 [BigQuery] Support RANGE
type in column definitions - 2026-03-02 fix: getFinalTable() traces through column aliases to physical tables
- 2026-03-02 feat: Add getTracedFinalTable() for alias-aware lineage
- 2026-03-02 fix: [Oracle] ALTER INDEX RENAME TO sets newIndexName, not tableName
GSP Java version 4.1.0.2(2026-02-25)¶
- 2026-02-25 Fixed NPE
- 2026-02-25 [BigQuery] Regenerate yacc table to fix parser regression
- 2026-02-25 [BigQuery] Fix NPE crash on malformed input
- 2026-02-25 [BigQuery] Support CREATE FUNCTION OPTIONS after RETURNS
- 2026-02-25 [BigQuery] Support labeled loop and block statements
- 2026-02-25 [BigQuery] Support bare RAISE statement in exception handlers
- 2026-02-25 [BigQuery] Support ELSEIF in IF statements
- 2026-02-25 [BigQuery] Add tests for REPEAT...UNTIL loop syntax
- 2026-02-25 [BigQuery] Support WHILE...DO loop syntax
- 2026-02-25 [Snowflake] Support CREATE PROCEDURE without LANGUAGE clause
- 2026-02-25 [Snowflake] Support EXECUTE IMMEDIATE FROM with DRY_RUN option
- 2026-02-25 [Snowflake] Support EXECUTE IMMEDIATE FROM with USING clause
- 2026-02-25 [Snowflake] Support EXECUTE IMMEDIATE FROM syntax
- 2026-02-25 [Netezza] Regenerate yacc table to restore || precedence
- 2026-02-25 [Snowflake] Support CREATE ICEBERG TABLE syntax
- 2026-02-25 [Snowflake] Support backslash-escaped strings in function body
- 2026-02-25 [Snowflake] Support GRANT USAGE ON FUNCTION with parameter signature
GSP Java version 4.1.0.1(2026-02-23)¶
- 2026-02-23 [Teradata] Fix objectToken when alias matches schema name
- 2026-02-23 [Snowflake] Fix phantom star column expansion in JOIN lineage
- 2026-02-23 Add PL/SQL call graph sample files with JSON output
- 2026-02-23 Add JSON schema v1.1 for call graph and impact analysis
- 2026-02-23 [Oracle] Upgrade Phase A IR to industrial-grade
- 2026-02-22 [Oracle] Add OracleBoundIRBuilder and CallGraph
- 2026-02-22 Add TSQLResolver2 adapter strategy for IBoundIRBuilder
- 2026-02-22 [BigQuery] Fix nested struct column lineage naming
- 2026-02-22 [BigQuery] Add StructFieldHint for 3-part no-alias struct access
- 2026-02-22 [BigQuery] Add FieldPath infrastructure for nested column lineage
- 2026-02-21 [Snowflake] Support nested stored procedure declarations
- 2026-02-21 [Snowflake] Support EXIT keyword in exception handlers
- 2026-02-21 [Snowflake] Fix NOT NULL constraint on variable declarations
- 2026-02-21 [BigQuery] Support MATCH_RECOGNIZE pipe operator
- 2026-02-21 [BigQuery] Support WINDOW pipe operator
- 2026-02-21 [BigQuery] Support CALL pipe operator for TVFs
- 2026-02-21 [BigQuery] Support TABLESAMPLE pipe operator
- 2026-02-21 [BigQuery] Support OFFSET in pipe LIMIT operator
- 2026-02-21 [Vertica] Fix CREATE EXTERNAL TABLE AS COPY FROM support
- 2026-02-21 [Vertica] Add SECURITY INVOKER/DEFINER support for CREATE PROCEDURE
- 2026-02-21 [Redshift] Fix comparison operator access in group_comparison_t
- 2026-02-21 [Redshift] Fix quantified comparison (ALL/ANY/SOME) AST
- 2026-02-20 [Snowflake] Support ASYNC keyword in parenthesized resultset assignments
- 2026-02-20 [Snowflake] Support cursor row dot notation in FOR loops
- 2026-02-20 [BigQuery] Allow expression in RAISE USING MESSAGE
- 2026-02-20 [Snowflake] Support DECLARE EXCEPTION without parameters
- 2026-02-20 [BigQuery] Add support for additional ML table functions
- 2026-02-20 [Snowflake] Fix NULL; statement NullPointerException in $$ bodies
- 2026-02-20 [BigQuery] Support FOR SYSTEM_TIME AS OF with alias in JOIN
- 2026-02-20 [Impala] Add PURGE keyword support for DROP TABLE
- 2026-02-20 [Redshift] Fix TOP clause returning null on AST
- 2026-02-20 Resolve GROUP BY alias references to source tables
GSP Java version 3.3.1.9(2025-11-23)¶
- 2025-11-23 Convert ENABLE_RESOLVER to ThreadLocal for thread safety
- 2025-11-22 Add support for PL/SQL NEW constructor with empty params
- 2025-11-20 Fix resolver error in parseExpression method
3.3.1.7 (2025-11-16)¶
- 2025-11-16: Improve UNION column propagation and prevent duplicate links
- 2025-11-16: Fix star column push down for UNION in CTE subqueries
- 2025-11-16: Fix Snowflake CREATE TABLE to support multiple table options
- 2025-11-15: Fix parse bug for lock row for access used in cursor declaration
- 2025-11-15: Fix CASE expression matching in Teradata procedures
- 2025-11-15: Fix NullPointerException in Teradata implicit table column linking
- 2025-11-15: Fix UNION column name resolution to use leftmost query
- 2025-11-15: Add SET TIME ZONE statement parsing for Teradata
- 2025-11-15: Add END_FASTEXPORT command type for Teradata
3.2.1.5 (2025-10-26)¶
- 2025-10-26: Fix DROP SECURITY POLICY parsing in IF statements
- 2025-10-26: Fix PARTITION BY expression parsing in Snowflake
- 2025-10-26: Integrate file format properties parsing and XML output
- 2025-10-26: Add parseFileFormatProperties method to TCreateTableOption
- 2025-10-26: Add file format properties list to TCreateTableOption
3.2.1.4 (2025-10-26)¶
- 2025-10-26: Add areEqualStatic method to IdentifierService
- 2025-10-26: Add static cache to IdentifierService for performance
- 2025-10-26: Refactor identifier normalization to use service pattern
- 2025-10-26: Fix multithreading bug in SqlCmdsFactory
- 2025-10-26: Improve SQL Server identifier handling and tests
- 2025-10-22: Enable catalog hierarchical and bucketed indexes
- 2025-10-21: Use SQLUtil.getIdentifierNormalName in keyForMap (temporary)
- 2025-10-21: Enhance IdentifierRules Javadoc with compatibility info
- 2025-10-20: Enhance Javadoc for IdentifierService and SQLUtil
- 2025-10-20: Remove redundant catalogStore field and USE_CALCITE_CATALOG_VIEW flag
- 2025-10-20: Refactor CatalogStore to use IdentifierService
- 2025-10-19: Add catalog documentation README index
- 2025-10-19: Add comprehensive catalog documentation for 12 major databases
- 2025-10-18: Add Oracle catalog documentation for beginners
- 2025-10-18: Fix collation case sensitivity configuration bugs
3.2.0.2 (2025-10-15)¶
- 2025-10-15: Fix parsing conversion functions as column names
- 2025-10-15: Add array indexing support for GaussDB
- 2025-10-15: Add table kind support for GaussDB CREATE TABLE
- 2025-10-10: Add GitHub Actions workflow for PR test automation
- 2025-10-10: Add INSERTED/DELETED as SQL Server reserved words
3.2.0.1 (2025-10-08)¶
- 2025-10-08: Fix json_table rewrite bug in script generator
- 2025-10-08: Remove unused findXXXCmd methods from TSqlCmds
- 2025-10-08: Refactor TSqlCmds.java into db vendor specific TSqlCmdsXXX
- 2025-10-08: Document command ordering bug with real example
- 2025-10-08: Fix command ordering for DATABASE SCOPED CREDENTIAL
- 2025-10-08: Migrate MDX to modular architecture
- 2025-10-08: Unify vendor implementations for Trino, SOQL, ODBC
- 2025-10-07: Migrate Vertica to modular architecture
- 2025-10-07: Migrate Sybase to modular architecture
- 2025-10-07: Migrate SparkSQL to modular architecture
- 2025-10-07: Migrate Snowflake to modular architecture
- 2025-10-07: Migrate Redshift to modular architecture
- 2025-10-07: Migrate Presto to modular architecture
- 2025-10-07: Migrate OpenEdge to modular architecture
- 2025-10-07: Migrate Netezza to modular architecture
- 2025-10-07: Migrate Informix to modular architecture
- 2025-10-07: Migrate HANA to modular architecture
- 2025-10-07: Migrate Greenplum to modular architecture
- 2025-10-07: Migrate GaussDB to modular architecture
- 2025-10-07: Migrate DB2 to modular architecture
- 2025-10-07: Migrate Databricks to modular architecture
- 2025-10-07: Migrate Couchbase to modular architecture
- 2025-10-07: Migrate BigQuery to modular architecture
- 2025-10-07: Migrate Teradata to modular architecture
- 2025-10-07: Remove FindMssqlCmdUsedByYacc
- 2025-10-07: Migrate MySQL to modular architecture
- 2025-10-07: Migrate PostgreSQL to modular architecture
- 2025-10-07: Migrate MSSQL to modular vendor-specific architecture
- 2025-10-07: Support vendor-specific token strings in modular architecture
- 2025-10-06: Migrate MSSQL command initialization to TSqlCmdsMssql
- 2025-10-06: Refactor TSqlCmds to vendor-specific lazy-loading architecture
- 2025-10-05: Refactor: Move TSqlCmds to sqlcmds package
- 2025-10-05: Add high-impact factory methods based on profiler analysis
- 2025-10-05: Optimize Oracle package function lookup with thread-safe lazy init
- 2025-10-05: Expand factory methods for common node types
- 2025-10-04: Avoid skipping table.* when only one source exists
- 2025-10-04: Fix Teradata lexer to treat $_ identifiers correctly
- 2025-10-04: Merge pull request #550 from sqlparser/dev
- 2025-10-04: Fixed MySQL Metadata Bug.
3.1.1.3 (2025-10-02)¶
- 2025-10-02: Add getLastLineNoOfLastStatementBeenValidated() for huge file splitting
- 2025-10-02: Optimize token code comparisons in domssqlgetrawsqlstatements
3.1.1.2 (2025-09-27)¶
- 2025-09-27: Optimize isopchar and isselfchar methods in TCustomLexer
- 2025-09-27: Remove sourceBuffer of lexer
- 2025-09-27: Add test units
- 2025-09-27: Fix CTE column mapping when subquery uses SELECT *
- 2025-09-27: Fix Teradata table resolution when original name used despite alias
- 2025-09-27: Document Teradata implicit derived tables processing
3.1.1.1 (2025-09-21)¶
- 2025-09-20: Optimize showERG graph demo
- 2025-09-20: Update DataFlowAnalyzer demo
- 2025-09-19: Build pom for dlineage
- 2025-09-19: Set genDataflowGraph showLinkOnly default value to true
3.1.1.0 (2025-09-14)¶
- 2025-09-14: Feat: Add stable sqlHash for lineage statement identity
- 2025-09-14: Feat: Add stable queryId to SQL statements
- 2025-09-14: Feat: Introduce new source token management system
- 2025-09-14: feat(lexer): Implement lazy loading for token text
- 2025-09-13: tmp for lazyloading token
- 2025-09-13: Refactor: Implement lazy loading lexer architecture
- 2025-09-13: Docs: Document lexer architecture and lazy loading design
- 2025-09-13: Optimize memory usage with lazy ArrayList initialization
3.1.0.9 (2025-09-13)¶
- 2025-09-13: Fix column linking for inserted/deleted in triggers
- 2025-09-13: claude helpfile
- 2025-09-13: Add parser pool implementation without performance gains
- 2025-09-13: Add thread-safe parser pool for 10x performance gain
3.1.0.8 (2025-09-13)¶
- 2025-09-13: Refactor and harden parser build scripts
- 2025-09-13: Refactor: Move SQL grammar files to core module
3.1.0.7 (2025-09-11)¶
- 2025-09-11: Test: Verify pseudo-table resolution in triggers
- 2025-09-10: Refactor: Support chained transformations for columns
- 2025-09-08: Docs: Explain issues with varied relationship types
- 2025-09-07: Update lineage design doc
- 2025-09-07: Fix(Snowflake): Correct name of wildcard with EXCLUDE clause
- 2025-09-07: Fix duplicate output for field selection expressions
- 2025-09-07: Fix SQL generation for array access and slices
- 2025-09-07: Add type discrimination to TIndices for array vs qualified name syntax
- 2025-09-07: Fix column resolution for Oracle dblink tables
- 2025-09-06: Restructure dlineage demo
- 2025-09-06: Merge pull request #537 from sqlparser/dev
- 2025-09-06: Doc: Define modeling practices for JOIN conditions
- 2025-09-03: Clarify graphPartition sharding note in v2 doc
- 2025-09-03: Rename WEAK_COPY to MODIFIED_COPY and refine categories
- 2025-08-31: Docs: Extend v2 design with effectType rules and table/column combos
3.1.0.5 (2025-08-30)¶
- 2025-08-30: Add GROUP BY ALL modifier support to TGroupBy class
- 2025-08-30: Fix: Restrict INSERTED/DELETED column logic to SQL Server
- 2025-08-30: Docs: Warn of SQL formatter side effects on parser state
- 2025-08-30: Refactor toString method for better readability
- 2025-08-30: Fix token iteration in visitNodeByToken
- 2025-08-28: Docs: Unify and enhance data lineage specification
- 2025-08-28: Refactor: Restructure demos into Maven multi-module project
- 2025-08-28: Refactor: Move database connection logic to provider
3.1.0.2 (2025-08-15)¶
- 2025-08-15: [Dlineage] Fix a bug the data lineage of parameters in function call is not mapping correctly.
3.1.0.1 (2025-08-01)¶
- 2025-08-01: [GaussDB] Fixed a bug where the COUNT aggregate function was not properly recognized as a built-in function in the parser.
- 2025-08-01: [GaussDB] Fixed a bug where the LIKE operator incorrectly had lower precedence than the AND operator in pattern matching conditions. Updated operator precedence to ensure LIKE has higher precedence.
3.1.0.0 (2025-07-27)¶
- 2025-07-27: [Postgres] Fix a bug not materialized is not supported in WITH clause.
- 2025-07-27: [Oracle] Support default collation clause in create view/create function/create procedure/create trigger.
- 2025-07-27: [SQL Server] Fix a bug ALTER TABLE REBUILD WITH(DATA_COMPRESSION = PAGE) is not parsed correctly.
3.0.9.9 (2025-07-26)¶
- 2025-07-26: [Redshift] Fixed a performance issue with large INSERT statements; efficiently handles thousands of tuples (e.g. $1, $2, ...).
3.0.9.8 (2025-07-20)¶
- 2025-07-20: [SparkSQL] Bugfix, fix a bug position keyword can't be used as column name.
3.0.9.7 (2025-07-19)¶
- 2025-07-19: [scriptWriter] Fixed a bug where field selection syntax with parentheses (e.g. "(d).grantee") was not being generated correctly.
- 2025-07-19: [scriptWriter] Fixed a bug where column lists in DISTINCT ON clauses were not being properly generated.
3.0.9.6 (2025-07-10)¶
- 2025-07-10: [data lineage] Fixed bug in DataflowAnalyzer using SQL environment settings.
3.0.9.5 (2025-07-06)¶
- 2025-07-06: [Vertica] Support USING PARAMETERS clause in LISTAGG function.
- 2025-07-06: [Vertica] Support NULLSEQUAL operator.
- 2025-07-06: [Snowflake] Fixed bug with procedure bodies using only two consecutive tokens before semicolon.
- 2025-07-06: [SQL Server] Fix INSERTED pseudo table in CREATE TRIGGER column resolution.
- 2025-07-06: [SQL Server] Fix column in IF UPDATE() OR UPDATE() of trigger not picked up.
3.0.9.4 (2025-06-15)¶
- 2025-06-15: [PostgreSQL] Support create recursive view.
- 2025-06-15: [SQL Server] Fix can't parse partitions clause in TRUNCATE TABLE.
- 2025-06-15: [BigQuery] Add support for star column expressions in array access.
- 2025-06-15: [BigQuery] Add support for various DROP statements.
- 2025-06-15: [BigQuery] Fix length specification for BYTES datatype.
- 2025-06-15: [BigQuery] Fix IF NOT EXISTS clause in CREATE MATERIALIZED VIEW.
- 2025-06-15: [Athena] Fix NPE in ALTER TABLE RENAME PARTITION.
- 2025-06-15: [General] Fix thread-safety in TNodeFactory.
3.0.9.3 (2025-06-08)¶
- 2025-06-08: [scriptWriter] Fix bug with column.property rewrite in SQL script generation.
3.0.9.3 (2025-06-08)¶
- 2025-06-08: [PostgreSQL] Fix bug with AS datatype clause in CREATE SEQUENCE.
- 2025-06-08: [PostgerSQL] Support ALTER INDEX.
- 2025-06-08: [Teradata] Preserve both NAMED clause and AS alias in SELECT list.
- 2025-06-08: [Teradata] Support EXECUTE ... USING ... in procedures.
- 2025-06-08: [Teradata] Add FOREIGN TABLE syntax in FROM clause.
- 2025-06-08: [Teradata] Add IGNORE NULLS clause before OVER in agg functions.
- 2025-06-08: [Teradata] Fix parsing SELECT substring(..., position(...) + 5 FOR 5)
- 2025-06-08: [PostgerSQL] Support CREATE/ALTER ROLE.
- 2025-06-08: [Snowflake] Fix COMMENT keyword as column alias in SELECT.
3.0.9.3 (2025-06-07)¶
- 2025-06-07: [SparkSQL] Support LEFT/RIGHT JOIN without explicit ON.
- 2025-06-07: [SparkSQL] Support grouping sets after group by items without comma.
- 2025-06-07: [SparkSQL] Fix AS keyword wrongly required in CTAS.
- 2025-06-07: [SparkSQL] Fix parsing FILTER clauses after aggregates.
3.0.9.2 (2025-06-02)¶
- 2025-06-02: [scriptWriter] Fix bug: array types like text[] rewritten as text.
- 2025-06-02: [scriptWriter] Fix bug: IS TRUE / IS FALSE not rewritten correctly.
- 2025-06-02: [scriptWriter] Fix bug: RECURSIVE keyword missing in CTE rewrites.
- 2025-06-02: [scriptWriter] Fix bug: ORDER BY in function call arguments.
- 2025-06-02: [scriptWriter] Fix bug: parens around CTE subqueries.
3.0.9.1 (2025-05-29)¶
- 2025-05-29: [Teradata] Fix can't process .EXPORT FILE BTEQ command.
3.0.9.0 (2025-05-27)¶
- 2025-05-27: [Oracle] Support sequence option in CREATE TABLE with IDENTITY.
3.0.8.8 (2025-05-18)¶
- 2025-05-18: [API] Enhance EDbVendor: getAllVendorAliases(), getDescription(), getStatus()
- 2025-05-18: [PostgreSQL] Support JSON operators (#-, @?, @@)
- 2025-05-18: [Vertica] Fix CREATE OR REPLACE procedure parsing.
- 2025-05-18: [Netezza] Fix/Support interval datatypes (all variations)
3.0.8.8 (2025-05-18)¶
- 2025-05-18: [General] Support sqlimpact.
3.0.8.7 (2025-05-18)¶
- 2025-05-18: [GaussDB] Support LANGUAGE clause in do statement.
3.0.8.6 (2025-05-17)¶
- 2025-05-17: [General] Parser handles missing semicolons robustly (adds virtual semicolon when missing).
- 2025-05-17: [Teradata] Fix NPE for ADD_MONTHS() with subquery param.
- 2025-05-17: [API] Add getOperatorTokens() to TExpression for multi-token ops (e.g. SIMILAR TO, IS DISTINCT FROM).
- 2025-05-17: [scriptWriter] Fix group comparisons in SELECT list SQL generation.
- 2025-05-17: [GaussDB] Support distribute BY in CREATE TABLE.
- 2025-05-17: [GaussDB] Support TRY_CAST function.
- 2025-05-17: [GaussDB] Fix LOCALTIMESTAMP(n) precision param parsed as column.
- 2025-05-17: [SparkSQL] Fix can't retrieve distribute by / sort by clause.
- 2025-05-17: [Snowflake] Fix parsing of LEFT JOIN in single-quote/dollar-proc.
- 2025-05-17: [GaussDB] Fix cast(1, int) not supported.
- 2025-05-17: [scriptWriter] toScript() appends semicolon if original ended with semicolon.
3.0.8.5 (2025-05-12)¶
- 2025-05-12: [SQL Server] Improve distinguishing -- comment vs. minus.
- 2025-05-12: [SQL Server] Fix TRUNCATE TABLE with table aliases.
3.0.8.4 (2025-05-11)¶
- 2025-05-11: [Oracle] Detect package constant/variable used in INSERT for lineage.
3.0.8.3 (2025-05-11)¶
- 2025-05-11: [Snowflake] Support table index constraint.
- 2025-05-11: [scriptWriter] In PostgreSQL, special SQL functions handling parens.
3.0.8.2 (2025-05-11)¶
- 2025-05-11: [General] INSERT processed during the SQL Resolver.
3.0.8.1 (2025-05-08)¶
- 2025-05-08: [General] Fix critical OOM in TStarColumnPushDownResolver (nested UNION ALL).
3.0.8.1 (2025-05-07)¶
- 2025-05-07: [SQL Server] Fix can't parse CREATE OR ALTER FUNCTION.
3.0.8.0 (2025-05-06)¶
- 2025-05-06: [General] Merge some source code.
3.0.7.9 (2025-05-04)¶
- 2025-05-04: [PostgreSQL] Fix parsing of UNION DISTINCT clause.
3.0.7.8 (2025-05-04)¶
- 2025-05-04: [Databricks] Fix normalization of backtick-quoted identifiers.
- 2025-05-04: [SparkSQL] Fix parsing column alias lists in parentheses with EXPLODE.
3.0.7.7 (2025-05-03)¶
- 2025-05-03: [Hive] Fix LATERAL VIEW EXPLODE alias analysis.
- 2025-05-03: [PostgreSQL/toScript] Fix type cast (::) handling in script generation.
3.0.7.6 (2025-05-01)¶
- 2025-05-01: [Performance] Cached/specialized factory methods in TNodeFactory.createNode()
3.0.7.5 (2025-04-29)¶
- 2025-04-29: [Teradata] Support array element access with quoted identifiers.
- 2025-04-29: [Teradata] Fix same-name tables in different DBs treated as the same.
3.0.7.4 (2025-04-28)¶
- 2025-04-28: [SparkSQL] Fix == equality operator handling.
- 2025-04-28: [SparkSQL] Fix & bitwise AND operator handling.
3.0.7.3 (2025-04-27)¶
- 2025-04-27: [General] Performance improved.
3.0.7.2 (2025-04-20)¶
- 2025-04-20: [PostgreSQL] Support array element access on array-returning functions.
- 2025-04-20: [BigQuery] Support CREATE OR REPLACE TEMPORARY TABLE.
- 2025-04-20: [SQL Server] Fix comments with leading whitespace.
- 2025-04-20: [API] Add TRedshiftTableAttributes.
- 2025-04-20: [Redshift] Add DISTSTYLE for materialized views.
- 2025-04-20: [Teradata] Fix DAYNUMBER_OF_MONTH not recognized.
- 2025-04-20: [Teradata] Fix || precedence.
- 2025-04-20: [API] Add implicit_datatype_cast_as_t for '... AS ...' expressions.
- 2025-04-20: [API] PARSE/TRY_PARSE use getArgs() for SQL Server.
3.0.7.2 (2025-04-19)¶
- 2025-04-19: [Snowflake] Properly detect INSERT OVERWRITE clause.
- 2025-04-19: [Vertica] Fix '||' concatenate op.
- 2025-04-19: [MySQL] Support JSON_TABLE.
- 2025-04-19: [MySQL] Support column-level check constraint.
- 2025-04-19: [MySQL] Support ALTER TABLE ADD CONSTRAINT CHECK.
- 2025-04-19: [DB2] Fix TYPE keyword as valid column name in SELECT.
3.0.7.1 (2025-04-17)¶
- 2025-04-17: [General] Fix various test case failures.
3.0.7.0 (2025-04-15)¶
- 2025-04-15: [Snowflake] Fix LEFT/RIGHT join keywords treated as column aliases.
3.0.6.9 (2025-04-13)¶
- 2025-04-13: [gettablecolumn] Match table.column.property to table.* in FROM.
3.0.6.8 (2025-04-12)¶
- 2025-04-12: [BigQuery] Link array element accesses with [offset] to table columns.
- 2025-04-12: [API] Add EExpressionType.teradata_at_t AT time zone support.
- 2025-04-12: [Teradata] Extract time_zone_specification from AT clause.
- 2025-04-12: [Teradata] Add support for many named builtins.
- 2025-04-12: [Snowflake] Support ASOF JOIN.
- 2025-04-12: [SparkSQL] Support grouping set in group by.
3.0.6.7 (2025-04-12)¶
- 2025-04-12: [Hive,SparkSQL] Clarify alias rules for SELECT list.
- 2025-04-12: [Presto] Fix select trailing comma.
3.0.6.6 (2025-04-06)¶
- 2025-04-06: [Teradata] Fix "WITH DATA" clause treats "data" as column name.
- 2025-04-06: [resolver] New column-to-table algorithm takes precedence over old.
- 2025-04-06: [Sybase] Fix alias in SELECT: 'id_col=identity(5)'.
3.0.6.5 (2025-04-05)¶
- 2025-04-05: [Oracle] Fix can't parse EXECUTE PROC_A3; correctly.
- 2025-04-05: [Oracle] Fetch proc name from sqlplus EXEC.
3.0.6.4 (2025-04-05)¶
- 2025-04-05: [Snowflake] REAL keyword can be table alias.
- 2025-04-05: [Oracle] Support parens expr with property access.
- 2025-04-05: [Snowflake] Fix SWAP WITH table direction.
- 2025-04-05: [MySQL] Support EXCEPT clause.
3.0.6.3 (2025-04-04)¶
- 2025-04-04: [Databricks] Fix parens around split() in array access.
- 2025-04-04: [BigQuery] Add TArrayConcatAggFunction.
- 2025-04-04: [GaussDB] Fix 'day' param in TIMESTAMPDIFF.
- 2025-04-04: [General] Remove fake orphan column warning.
- 2025-04-04: [GaussDB] DOUBLE alias for DOUBLE PRECISION.
- 2025-04-04: [GaussDB] Fix can't parse LIMIT 1,1.
3.0.6.2 (2025-04-01)¶
- 2025-04-01: [SparkSQL] Support array access expression.
- 2025-04-01: [SparkSQL] Parsing fix: split negative numbers tokens.
- 2025-04-01: [BigQuery] Show dot after numeric in TObjectName.toString().
3.0.6.0 (2025-03-24)¶
- 2025-03-24: [Teradata] Fix duplicate derived tables in WHERE clause.
3.0.5.9 (2025-03-23)¶
- 2025-03-23: [Databricks/Hive] Support Hash (#) comments.
3.0.5.8 (2025-03-11)¶
- 2025-03-11: [column resolver] Fix bug: column inside UNNEST mislinked.
3.0.5.7 (2025-03-09)¶
- 2025-03-09: [API] ETableEffectType.tetTeradataReference renamed to tetImplicitLateralDerivedTable.
- 2025-03-09: [column resolver] Subquery columns link to subquery FROM by preference.
3.0.5.6 (2025-03-04)¶
- 2025-03-04: [demo] Remove dbConnect from gsp_demo_java.
3.0.5.5 (2025-03-02)¶
- 2025-03-02: [SQL formatter] Fix can't process Teradata Implicit Lateral Derived Table.
3.0.5.4 (2025-03-02)¶
- 2025-03-02: [Vertica] Fix localtime() number param as column.
- 2025-03-02: [Vertica] Support RENAME COLUMN in ALTER TABLE.
3.0.5.3 (2025-03-01)¶
- 2025-03-01: [column resolver] Fix SET in UPDATE to wrong table.
- 2025-03-01: [GaussDB] Support OVERWRITE in INSERT (DWS).
- 2025-03-01: [General] Remove fake orphan column warning.
- 2025-03-01: [Oracle] Resolve package/function/proc name in procedure.
3.0.5.2 (2025-03-01)¶
- 2025-03-01: [DB2] Support ARRAY[1,2,3] (DB2 10.5+).
- 2025-03-01: [DB2] Fix null exception with MERGE/USING/VALUES.
3.0.5.1 (2025-02-27)¶
- 2025-02-27: [getTableColumn] Refactor name resolution logic.
3.0.4.7 (2025-02-08)¶
- 2025-02-08: [General] Fix bugs in resolver, refactor needed.
3.0.4.5 (2025-02-06)¶
- 2025-02-06: [dlineage] Incorrect mapping for SQL Server alias.
3.0.4.5 (2025-02-06)¶
- 2025-02-06: [dlineage] Missing column link for BigQuery.
-
2025-02-06: [semantic] How GSP links unqualified columns to tables.
-
Consider this query:
SELECT append_business_key, f.worklist_field_name AS field_name, f.field_data_type FROM FIN_ICOLLECTION.ico_worklist_append_t a INNER JOIN FIN_ICOLLECTION.ico_worklist_field_info_t f ON a.append_business_key = f.worklist_field_id
- When GSP analyzes this query without extra metadata, it deduces which table an unqualified column belongs to.
- The JOIN condition (a.append_business_key) signals that append_business_key belongs to FIN_ICOLLECTION.ico_worklist_append_t.
- GSP 3.0.4.4 or later links the unqualified append_business_key in SELECT to FIN_ICOLLECTION.ico_worklist_append_t.
-
But if both tables have append_business_key, the reference is ambiguous and needs explicit qualification.
-
Changed behavior:
- Before 3.0.4.4: append_business_key was orphan column.
- Since 3.0.4.4: linked to FIN_ICOLLECTION.ico_worklist_append_t if found in JOIN.
3.0.4.3 (2025-02-02)¶
- 2025-02-02: [Vertica] Support PARTITION BY clause in CREATE TABLE.
- 2025-02-02: [Vertica] Support CREATE TABLE LIKE.
- 2025-02-02: [Vertica] Support ARRAY datatype.
- 2025-02-02: [Vertica] Window support for partitioned result in LIMIT.
- 2025-02-02: [Vertica] Fix on MERGE condition could omit parenthesis.
- 2025-02-02: [Vertica] Support ENABLED/DISABLED in PK col constraint.
- 2025-02-02: [Vertica] TEMP table fix for TableKinds.
3.0.4.2 (2025-01-25)¶
- 2025-01-25: [Vertica] Support DISABLED/ENABLED keyword in constraints.
- 2025-01-25: [Teradata] Fix TRUNC function in IN clause.
- 2025-01-25: [Vertica] Support CALL.
- 2025-01-25: [Vertica] Fix can't parse UNION DISTINCT.
- 2025-01-25: [Vertica] Support ISNULL function.
- 2025-01-25: [Vertica] Support MINUS operator.
- 2025-01-25: [Teradata] Fix CHECKSUM=ALL in CREATE TABLE.
3.0.4.1 (2025-01-20)¶
- 2025-01-20: [Evaluator] Remove outer quotes/handle escaped quotes in string.
3.0.4.0 (2025-01-19)¶
- 2025-01-19: [Evaluator] Support plsql block with loop.
- 2025-01-19: [BigQuery] Fix unable to expand star in SELECT *.
3.0.3.9 (2025-01-12)¶
- 2025-01-12: [Snowflake] Support WITH TAG in view columns.
- 2025-01-12: [SQL Server] Fix can't parse CTAS with CTE used in select.
- 2025-01-12: [Oracle] Recognize CALL after procedure.
3.0.3.8 (2025-01-11)¶
- 2025-01-11: [Snowflake] Fix double dollar delimiter for non-addition binary ops.
- 2025-01-11: [Teradata] Support partition by column in CREATE TABLE.
- 2025-01-11: [Teradata] Support partition by all but.
- 2025-01-11: [Teradata] Parse multiple params in SIGNAL SET.
3.0.3.7 (2025-01-05)¶
- 2025-01-05: [Teradata] Support sequenced/nonsequenced VALIDTIME.
- 2025-01-05: [Teradata] Fix INTERVAL ... HOUR TO MINUTE in CAST.
- 2025-01-05: [Teradata] Insert in WHEN NOT MATCHED should be assignment_t type.
- 2025-01-05: [Teradata] Recognize TTeradataBTEQCmd.bteqCmdType (BTEQ CMD).
3.0.3.7 (2025-01-04)¶
- 2025-01-04: [Snowflake] Support BEGIN; in single-quoted stored procs.
- 2025-01-04: [Snowflake] Support BEGIN; in stored procs.
- 2025-01-04: [dlineage] Add showCandidateTable option for candidate table column links.