Skip to content

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.