Java version change list


version history of general sql parser
GSP Java version 2.8.5.7(2024-1-24)
  - [lexer] fix a bug Unicode Character 'LEFT SINGLE QUOTATION MARK' is changed to ' character during parsing.
  - [Snowflake] fix a bug can't parse syntax like: order by (start_time, query_id)
  

GSP Java version 2.8.5.7(2024-1-23)
  - [SQL Server] fix a bug can't get raw statement correctly if create function is followed by create security policy statement without separated by go statement.
  - [SQL Server] support multiple ADD [ FILTER | BLOCK ] } PREDICATE clauses in create security policy statement.
  
GSP Java version 2.8.5.6(2024-1-22)
  - [dlieange] Missing link orphan column to the first table
  https://e.gitee.com/gudusoft/projects/151613/tasks/list?issue=I8XNV8#note_24533192

GSP Java version 2.8.5.5(2024-1-19)
  - [sql formatter] fix a bug can't format built-in function without paranthesis.
  
GSP Java version 2.8.5.4(2024-1-17)
  - [BigQuery] fix a bug multiple - character is used in project name.
  - [PostgreSQL] fix a bug THashPartitions can't accept partition elememt as an expression.

GSP Java version 2.8.5.3(2024-1-16)
  - [Snowflake] fix a bug can't process expression used in connect by clause
  - [Snowflake] fix a bug flatten used as aliasn in CTAS.
  - [Snowflake] support the CONNECT_BY_ROOT operator when used with the CONNECT BY clause.
  
  
GSP Java version 2.8.5.2(2024-1-5)
  - [Oracle] support table alias after flashback clause.
  - [PostgreSQL] support DROP MATERIALIZED VIEW

GSP Java version 2.8.5.2(2024-1-4)
  - [general] support ? character used as alias name.

GSP Java version 2.8.5.1(2024-1-3)
  - [general] fix a thread safe bug introduced in getDynamicStatements() method.

GSP Java version 2.8.5.0(2024-1-2)
  - [general] jdk7 is no longer support. Please use jdk1.8 or higher version.
  - [general] reduce the memory usage by reusing sql parser instance in TExecImmeStmt.getDynamicStatements()	
  
GSP Java version 2.8.4.9(2023-12-25)
  - [Teradata] fix a bug can't parse syntax like: year(date)
  - [BigQuery/toXML] output variable name and value list in set statement.
  - [Snowflake] able to output qualify clause in xml output.
  - [Hive] support syntax like ROW_NUMBER() OVER(DISTRIBUTE BY ZJBH SORT BY ID DESC)
  - [BigQuery] fix a bug can't parse left outer join without a join condition.
  - [Snowflake] fix a bug can't populated correct array access for function.


GSP Java version 2.8.4.8(2023-12-22)
  - [general] error message is more accurate when the syntax error is occurs at the end of the SQL.
  
GSP Java version 2.8.4.7(2023-12-20)
  - [Snowflake] support cast to ARRAY,OBJECT and MAP structured data type.
  - [Snowflake] support Json output like {'type': 'Account'}, and this output is represented by TConstant with getLiteralType() = etJson
  - [Snowflake] fix a bug  CONNECT BY fails when start with not present
  
GSP Java version 2.8.4.5(2023-12-18)
  - [ANSI SQL] start to support ansi sql.
  - [ANSI SQL] fix a bug non-reserved keyword in cod file is not recognized correctly.
  - [API] add a new enum type: EKeywordType {NOT_A_KEYWORD,RESERVED_WORD,NON_RESERVED_KEYWORD}
  - [API] all lexer add a new method: getKeywordType() return the keyword type of an input string.
 
  - [Snowflake] fix a bug FREEZE can't be used as table alias.
  - [Snowflake] Snowflake DF from a table into a view not showing upstream lineage for the former


GSP Java version 2.8.4.3(2023-12-15)
  - [AWS athena] fix a NPE bug while process array datatype.
  - [General] fix an OOM bug in the SQL Env.

GSP Java version 2.8.4.2(2023-12-14)
  - [PostgreSQL] support rename to clause in alter function statement.
  - [Snowflake] fix a NPE bug when processing combined query inside CTE.
  - [Snowflake] fix a bug FLATTEN can't be used as table name.
  - [SQL Server] support INSERT DEFAULT VALUES in WHEN NOT MATCHED clause of merge statement.


GSP Java version 2.8.4.1(2023-12-12)
  - [SQL Server] fix a bug that introduced when add support for module_name [ ;number ] in EXECUTE
  - [General] null treated as a constant with ELiteralType.null_et

GSP Java version 2.8.4.0(2023-12-8)
  - [API] new class TMssqlAlterSecurityPolicy,TMssqlDropSecurityPolicy,TMssqlCreateSecurityPolicy
  - [SQL Servre] support drop security policy statement.
  - [SQL Server] support module_name [ ;number ] in EXECUTE
  
GSP Java version 2.8.3.9(2023-12-8)
  - [Snowflake] fix a bug can't parse WITH MASKING POLICY clause used in create view.
  - [getTableColumn] fix a bug cursor in the where current of clause is treated as a column.
	
  - [toXML] able to retrieve using clause at the begin of a sql query.

GSP Java version 2.8.3.9(2023-12-7)
  - [sql server] fix a bug can't recognize exec statement after insert statement.

GSP Java version 2.8.3.9(2023-12-6)
  - [sql server] fix a bug can't process with on covert clause in EXECUTE AS
  
  
GSP Java version 2.8.3.8(2023-12-5)
  - [API] add new method: public TColumnGeneratedClause getColumnGeneratedClause() of TColumnDefinition, so you can retrieve generated clause for a column.
  - [Teradata] fix a bug can't parse parition clause of table name in update statement.
  - [gettablecolumn] fix a bug non-qualified column name is not picked up as a orphan column if multiple tables in from clause.
  
GSP Java version 2.8.3.7(2023-12-4)
  - [MySQL] support ENCRYPTION option in alter table statement.
  - [MySQL] support WITH/WITHOUT VALIDATION option in alter table statement.
  - [MySQL] support TABLESPACE option in alter table statement.
  - [MySQL] support FORCE option in alter table statement.
  - [MySQL] support CONVERT TO CHARACTER SET in alter table statement.
  - [MySQL] fix a bug can't process ALGORITHM table option in alter table.
  - [Greenplum] fix a bug can't parse explicit datatype conversation expression.
  - [BigQuery] fix a bug can't process project name include - character.
  

GSP Java version 2.8.3.6(2023-12-1)
  - [BigQuery/Lexer] support minus operator in project name ended with number like: marketing01-164321.reference.sfdc_country_mapping
  - [BigQuery] support is distinct from operator.
  - [BigQuery] support JSON constant. JSON '{"class": {"students": [{"id": 5}, {"id": 12}]}}', '$.class'
  - [BigQuery] support => in function argument.
  - [BigQuery] support DAY TO SECOND part in INTERVAL values.

GSP Java version 2.8.3.5(2023-12-1)
  - [BigQuery] SECOND argument in TIMESTAMP_DIFF function is recognized as constatnt.

GSP Java version 2.8.3.4(2023-11-30)
  - [General] change tokentype to ETokenType.ttidentifier if this is a column.
  - [API] add new method£º public TColumnDefinitionList getUsingVariableList() to retrieve the using clause in sql statement if any.
  - [Teradata/API] TTeradataUsing is no longer used, use the SQL statement with the using clause.
  - [columnResolver] resolve column in the insert values clause in the merge statement delayed to column resolve in order to avold false orphan column.
  - [BigQuery] fix a bug columns in the insert values clause in the merge statement is not linked to the source table correctly.


GSP Java version 2.8.3.3(2023-11-28)
  - [Snowflake] able to list parameters in call procedure().
  - [Snowflake] fix a bug can't parse within group...over clause.
  - [columnResolver] fix a NULL exception  bug if the select list items in left select is not the same as the right select.
  - [PostgreSQL] support merge statement.
  - [SparkSQL] support full outer join.
  - [BigQuery] fix a bug date keyword can't be used as a name in struct definition.
  - [general] able to link target column to source column via alias column.


GSP Java version 2.8.3.1(2023-11-27)
  - [Snowflake] fix a bug can't retrieve column information from  Parse_json(META_DATA.value):name 
  - [Teradata] fix a bug can't link columns to subquery alias correctly.
  - [Snowflake] fix a bug can't link columns in values clause of insert overwrite all statement.
  - [Hana] support LATERAL clause.
  
GSP Java version 2.8.3.0(2023-11-24)
  - [Netezza] fix a bug:  for Decimal datatype having precison and scale, parse precision and scale as null.
  - [Snowflake] fix a bug can't parse comment='Test view' before as select statement in create materialized view statement.
  - [gaussDB] fix a bug values clause in insert statement inside procedure treated as a subquery.
 
  
GSP Java version 2.8.2.9(2023-11-20)
  - [Snowflake/API] add new class TFlattenFunction to represents flatten function.
  - [BigQuery] fix the regression, Incorrect transitions when identifiers are surrounded by backticks in DDL
  - [PostgreSQL] Able to retrieve PARTITION clause in create table statement.
  - [API] move TTableProperties from package gudusoft.gsqlparser.nodes.oracle; to package gudusoft.gsqlparser.nodes;
  - [BigQuery] fix a bug multiple variables declared but not all variable bind default value and datatype.

GSP Java version 2.8.2.8(2023-11-16)
  - [Snowflake] fix a bug can't parse 3 parts qualify name with * column at the end.
  - [BigQuery] support array expr in UNNEST() clause.
  - [Oracle] support row type like: sets.internal%type, rules.internal%type,versions.internal%type
  - [Oracle] fix a bug support lv_wfx_refs(i).Query in open for statement.
  - [Oracle] fix a bug support dynamic_string in open for statement.
  - [Oracle] able to recognized decalre block after create procedure statement without using / delimiter;
  - [Snowflake] fix a bug can't process qualified file format.
  - [Snowflake] support drop procedure statement.

GSP Java version 2.8.2.8(2023-11-15)
  - [PostgreSQL/API] support join_using_alias (added in PG14), represented by TJoinExpr.getJoin_using_alias()
  - [Snowflake] fix a bug can't parse col1 COLLATE 'utf8' in select list.
  - [SQL Server] fix a bug can't parse FOR SYSTEM_TIME AS OF used in CTE.
  - [Snowflake] support WITH ROW ACCESS POLICY in create view statement.
  - [GaussDB] support current_date, current_date() syntax.
  - [Oracle] support row type like: sequence.internal%type 
  - [GaussDB] support minus set operator.
  - [Oracle] support character varying(200) datatype.
  - [MySQL] fix a bug can't parse character datatype in convert funtion.
  

GSP Java version 2.8.2.8(2023-11-13)
  - [Snowflake] support multiple columns in alter table drop column clause.
  - [Oracle/column resolver] fix a null exception when process union operator in from clause.
  - [SQL Server] Support USE HINT option.
  - [SQL Server] GO keyword can be appear after ; in the same line.
  - [SQL Server] fix a bug can't process -1 value in throw statement.
  - [SparkSQL] fix a bug not retrieve all columns alias in lateral view.
  - [gettablecolumn] fix a bug that temporary table in the into clause will lead to orphan column mistake.


GSP Java version 2.8.2.6(2023-11-3)
  - [BigQuery] fix a bug INTERVAL '1:2:3' HOUR TO SECOND can't be parsed.
  - [Snowflake] support alias after stage name.
  
GSP Java version 2.8.2.5(2023-11-2)
  - [Oracle] fix a bug that TPlsqlCreateProcedure.toString() output the sql text of  plsql procedure specification inside create package is not working correctly.
  
GSP Java version 2.8.2.4(2023-11-2)
  - [Snowflake/toXML] export copy into statement in create pipe. 
  - [Snowflake] ablel to pickup database and schema name correctly of pipe name in create pipe statement.
  
GSP Java version 2.8.2.4(2023-11-1)
  - [Snowflake] able to retrieve append only and insert only clause from create stream.
  - [Snowflake] support comment in create materalized view.
  - [Snowflake] support DROP materialized VIEW.
  - [Snowflake] support array expression in select list with speicify ARRAY keyword.
  - [Snowflake] Collation name is picked up in column definition level.

GSP Java version 2.8.2.4(2023-10-31)
  - [Snowflake] able to pickup collation name in datatype.
  - [GaussDB] DECLARE keyword in the procedure declaration is optional.

GSP Java version 2.8.2.3(2023-10-27)
  - [GaussDB] fix a bug can't procedure/function declaration inside package.
  - [Oracle] fix a bug can't parse type in syntax like this: name.employee_id%type
  - [Oracle] fix a bug can't parse order by clause in json_arrayagg

GSP Java version 2.8.2.1(2023-10-22)
  - [Snowflake] supprt copy grants option in create table ... clone statement. 
	
GSP Java version 2.8.2.2(2023-10-23)
  - [dlieange] Calculated columns using columns from newly created element not correctly linked
  - [dlieange] Views not working correctly if view name same as base tables name
  - [dlieange] Quoted column names not evaluated correctly

GSP Java version 2.8.2.1(2023-10-22)
  - [BigQurey] support top level If/loop/repeat/while/for/case statement.
  - [Oracle] fix a bug SESSIONTIMEZONE picked up as a column.
  - [GaussDB] support execute statement in stored procedure.
  - [GaussDB] support varchar in type is table definition.
  - [GaussDB] support position parameter in function parameter.
  - [GaussDB] support nested function call in stored procedure.

GSP Java version 2.8.2.1(2023-10-19)
  - [GaussDB] support set statement in create procedure.
  - [GaussDB] support rollback in create procedure.
  - [GaussDB] fix a bug can't process assign statement inside case statement.


GSP Java version 2.8.2.0(2023-10-18)
  - [SparkSQL] support lateral view after subquery.

GSP Java version 2.8.1.9(2023-10-17)
  - [DB2] fix a bug can't process variable name used in offset clause.
  - [Snowflake] fix a bug catalog/schema is not picked up correctly in new table in alter table statement.
  - [BigQuery] support nulls first/last clause.
  - [toXML] improvement of processing default database and schema.
  - [Hive] support partition clause in insert statement.
  - [gaussDB] support forall statement.


GSP Java version 2.8.1.8(2023-10-16)
  - [toScript] fix a bug can't rewrite datetime2 correctly.
  - [gaussDB] support MULTISET operator.
  
GSP Java version 2.8.1.7(2023-10-15)
  - [gaussDB] fix a bug contant like SYSDATE not recoginzed correctly.
 
GSP Java version 2.8.1.6(2023-10-13)
  - [gaussDB] oracel plsql compatible, plsql parser moved to gaussDB parser.
  
GSP Java version 2.8.1.4(2023-10-12)
  - [GaussDB] fix a bug can't tokenize create procedure statement when is keyword is used to start a declare section.
  - [GaussDB] able to retrieve partition name and new table name from alter table exchange partition clause.

GSP Java version 2.8.1.3(2023-10-11)
  - [Oracle] able to retrive partition name and table name in alter table exchange partition clause.
  - [Snowflake] support outer join using (+) operator.
  - [Oracle] support alter session ENABLE PARALLEL QUERY/DML/DDL
  - [Snowflake]fix a bug can't parse stage end with /
  - [BigQuery] fix a bug can't parse date column.
  
GSP Java version 2.8.1.2(2023-10-9)
  - [snowflake] support ALTER MATERIALIZED VIEW.
  - [general] temmporary property is populated for the databases that support Create Temporary queries.
  - [Hana] fix a bug can't parse create role NO GRANT TO CREATOR.
  - [Hana] able to recognize alter procedure/function
  - [Hana] support alter table drop (column) syntax.
  - [snowflake] support start with clause.


GSP Java version 2.8.1.1(2023-10-8)
  - [API] add new method: TTable.getStageName(), it return the stage name if this table represent a stage in snowflake.
  - [API] add new method: TViewAliasItem.getComment() to get comment of view column.
  - [API] TCreateTableOption.getCommentToken() changed to TCreateTableOption.getComment
  - [API] TCreateViewSqlStatement.getComment() return comment of the view in create view statement.
  - [snowflake] support alter table alter column comment.
  - [general] refactor code to detect default schema and database from metadata if a table name is not qualifed with schema and database.

GSP Java version 2.8.1.1(2023-10-7)
  - [Snowflake] fix a bug can't process call statement after create procedure.
  - [BigQuery] fix a bug can't parse bignumeric '0.0666666667' constant.
  
 
GSP Java version 2.8.1.0(2023-10-5)
  - [API] add new class TTableFunction represents table function.
  
GSP Java version 2.8.0.9(2023-10-4)
  - [gaussDB] suppport create global [unique] index/refresh materalized view statement/create function/create procedure/create package.

GSP Java version 2.8.0.8(2023-10-2)
  - [column resolver] support BigQuery except clause.				

GSP Java version 2.8.0.7(2023-9-30)
  - [GaussDB] support DML.

GSP Java version 2.8.0.6(2023-9-29)
  - [GaussDB] select statement inside create function can be terminated with semicolon.
 
GSP Java version 2.8.0.5(2023-9-28)
  - [GaussDB] support safe equal operator.
  
GSP Java version 2.8.0.4(2023-9-28)
  - [Snowflake] fix a bug can't parse alter table add() column syntax.
  - [Snowflake] support array expr in function argument.
  - [column resolver] CTE with specified column name bind to combined subQuery.
  - [column resolver] fix a bug miss match attribute name 

GSP Java version 2.8.0.3(2023-9-27)
  - [API] TObjectName, add new method: setImplictSchemaName(), setImplictDatabaseName(). Set implict database and schema name of a table during the relation resolve.
  - [general] bind schema name in use schema statement to table name in create table statement if not specified in the create table statement.
  - [general/DB2/MSSQL/Oracle] Foreign Key Constraint using Alter Table Statement getting wrong values for referenced objects
  - [SQL Server] able to pickup presion for datetime2(0)
  - [column resolver] able to trace source column from combined subQuery.
	

GSP Java version 2.8.0.2(2023-9-26)
  - [column resolver] return more precisely result when compare to column in matchAttribute() method.
  - [API] TObjectName TAttributeNode getSourceAttributeNode(), return the source column of the column reference.

GSP Java version 2.8.0.1(2023-9-25)
  - [column resolver] fix a bug column in pivot clause is not recognized correctly.		
  - [column resolver] new algorithm introduced to analayze column and table relationship in the version.
  - [general/BigQuery] fix a Null Pointer Exception on parsing ARRAY_AGG(STRUCT(...)) syntax
  

GSP Java version 2.7.6.3(2023-9-23)
  - [column resolver] columns in cross apply clause will search table in the same from clause before it.
  - [column resolver] support Oracle table function.

GSP Java version 2.7.6.2(2023-9-22)
  - [column resolver] bug fix for pivot clause.

GSP Java version 2.7.6.1(2023-9-21)
  - [column resolver] fix a bug PL/SQL variable recognized as column.
  - [column resolver] fix bug that keywords used in some specific built-in function regonized as column.


GSP Java version 2.7.5.9(2023-9-20)
  - [gettablecolumn] able to list columns in CTE.

GSP Java version 2.7.5.8(2023-9-19)
  - [column resolver] fix bug the quoted object name is not compared correctly.
  - [Snowflake] support create or replace temporary view statement.

GSP Java version 2.7.5.6(2023-9-18)
  - [Oracle] LOCALTIMESTAMP , LOCALTIMESTAMP (6) recognized as function correctly.
  - [Oracle] ablel to pickup argument in CURRENT_TIMESTAMP() function.
  - [API] change from TObjectName.setAttributes() to setColumnAttributes()
  
GSP Java version 2.7.5.5(2023-9-18)
  - [column resolver] improvement for CTE process.
  - [column resolver] teradata doesn't specify source table in from clause, just specify the source table in the expression

GSP Java version 2.7.5.3(2023-9-17)
  - [General] fix a null exception when using subquery in insert into subquery 

GSP Java version 2.7.5.2(2023-9-16)
  - [Refactor] TPlsqlCreateType method public TTypeAttributeList getAttributes() rename to public TTypeAttributeList getTypeAttributes()
  - [Refactor] TCustomSqlStatement implements IRelation
  
GSP Java version 2.7.5.2(2023-9-16)
  - [column resolver] fix a bug that pickup built-in function as a column.
  - [column resolver] fix a bug that pickup column alias as a column.

GSP Java version 2.7.5.1(2023-9-15)
  - [column resolver] support CTE, unnest clause.


GSP Java version 2.7.4.7(2023-9-12)
  - [General] add column resolver to improve the semantic checking.

GSP Java version 2.7.4.1(2023-9-6)
  - [Snowflake] support with tag and comment option in create view statement.

GSP Java version 2.7.4.0(2023-8-30)
  - [API] TObjectName.isPrefixed() renamed to isQualified()

GSP Java version 2.7.4.0(2023-8-29)
  - [API] Use TJoinExpr instead of TJoin to represent SQL join clause, which is more easily to use.
  - [API] add ArrayList getRelations() in TCustomSqlStatement to represents relations in the from clause.
  this property is used to replace TJoinList getJoins() and  TTableList getTables() method.
  
  - [toXML] support new structure of table and join in from clause. 
  - [General] join included in the parenthesis will be treated as a table which includes a join inside.
  - [greenplum] fix a bug can't parse if not condition in stored procedure.
  - [API] add new EDbObjectType.TEMP_TABLE that represents temporary table.
  - [Redshift] #tempTable in into clause recognized as temporary correctly.

GSP Java version 2.7.3.8(2023-8-25)
  - [Teradata]  select  year(date) from t, date in this sql is a column name.


GSP Java version 2.7.3.8(2023-8-25)
  - [Snowflake] support table name start with number.
  - [Snowflake] OFFSET keyword is optional in array.
  - [Snowflake] fix a bug project name in truncate statement can't use - character.
	
GSP Java version 2.7.3.7(2023-8-19)
  - [BigQuery] support timezone in current_timestamp(),current_time() function.
  - [Snowflake] support masking policy in create view.
  - [general] fix a bug that Foreign Key Constraint using Alter Table Statement getting wrong values for referenced objects
  - [Snowflake] support create stream on table/external table/stage/view
  - [Snowflake] support alter stage refresh clause.
  - [Snowflake] support alter external table refresh clause.
  - [Snowflake] database name and schema name in the full qualified stream name are populated correctly.
  - [Snowflake/toXML] create task can be exported to XML.
  - [Snowflake] database and schema in task name of create task statement can be recogined correctly.
  

GSP Java version 2.7.3.7(2023-8-18)
  - [Snowflake/API] TCreateStageStmt.getStageName() returns full qualified stage name, getStageNameOnly() returns only the stage name if it's qualified.
  - [Snowflake] support union distinct operator.
  - [Refactor] change TSelectSqlStatement.setOperator_none to SET_OPERATOR_NONE
  - [Refactor] change TSelectSqlStatement.setOperator_uniondistinct to SET_OPERATOR_UNIONDISTINCT
  - [Refactor] change TSelectSqlStatement.setOperator_intersectdistinct to SET_OPERATOR_INTERSECTDISTINCT
  - [Refactor] change TSelectSqlStatement.setOperator_exceptdistinct to SET_OPERATOR_EXCEPTDISTINCT
  - [Refactor] change TSelectSqlStatement.setOperator_minusdistinct to SET_OPERATOR_MINUSDISTINCT
  - [Snowflake] fix a bug can't parse collate clause of string datatype.
  - [Snowflake] fix a bug within group clause is missing of LISTAGG() function.
  - [Snowflake,toXML] able to export alter view statement with rename clause.

GSP Java version 2.7.3.6(2023-8-9)
  - [BigQuery] support timezone in current_date() function.
  - [BigQuery] TCreateTableSqlStatement.isExternal() works correct for CREATE EXTERNAL TABLE.
  
GSP Java version 2.7.3.5(2023-8-9)
  - [plsql interpreter support block label 
  - [Hive] fix a bug can't parse subquery in insert statement.
  
GSP Java version 2.7.3.4(2023-8-8)
  - [Oracle] Able to execute basic PLSQL code, SQL query inside PLSQL is not supported yet.

GSP Java version 2.7.3.2(2023-8-4)
  - [Oracle] start to support evaluate Oracle builtin function.

GSP Java version 2.7.3.0(2023-7-31)
  - [SQL format] fix 0003028: Index Out of Bound while formatting
  
GSP Java version 2.7.3.0(2023-7-31)
  - [API] add new method: TJoinExpr TTable.getJoinExpr(), when getTableType() of a table is join, use TTable.getJoinExpr() to get the join.
  - [general] refactor code to make it more easy to navigate tables inside join.
  
GSP Java version 2.7.2.8(2023-7-25)
  - [sql format] fix a bug can't process bigquery dash used in project name.
  
GSP Java version 2.7.2.7(2023-7-19)
  - [general] fix a bug can't process chinese character using as column name and alias.
  
GSP Java version 2.7.2.6(2023-7-7)
  - [Oracle] support add constraint in alter view.
  - [SQL Server] fix a bug can't parse index constraint in column defintion.
  - [Snowflake] fix a bug can't parse x1.* in function call.
		

GSP Java version 2.7.2.6(2023-7-6)
  - [DB2] fix a bug that failing to parse parenthesis in group by

GSP Java version 2.7.2.6(2023-7-4)
  - [SQL Server] support value() method against a subquery.


GSP Java version 2.7.2.5(2023-7-3)
  - [Redshift] support array, struct datatype.

GSP Java version 2.7.2.4(2023-6-30)
  - [Databricks] support timestamp used as column name.


GSP Java version 2.7.2.4(2023-6-29)
  - [Sybase] support with compile option in create procedure.
  - [Sybase] fix a bug can't parse plan clause.
  
  
GSP Java version 2.7.2.3(2023-6-26)
  - [toScript/Databricks] fix a bug that missing parenthesis in CTE.
  - [toScript/Databricks] fix a bug can't rewrite nested parenthesis correct in join table.
		
GSP Java version 2.7.2.3(2023-6-25)
  - [Oracle] there is no need to use / to separate CREATE PROCEDURE and CREATE SYNONYM statement.
  - [BigQuery] support nested column in select list.

GSP Java version 2.7.2.3(2023-6-24)
  - [BigQurey] if FROM keyword used as column name, if must be qualified by a table name/alias.
			
  - [Oracle] fix a bug not all arguments in LAG is returned.

GSP Java version 2.7.2.3(2023-6-20)
  - [toScript] fix a bug can't rewrite <=> operator.


GSP Java version 2.7.2.2(2023-6-16)
  - [toScript/MySQL] fix a bug SUBSTRING() can't be rewritted correctly.
  
GSP Java version 2.7.2.1(2023-6-15)
  - [SQL Server] fix a bug can't process WITH CHECK OPTION in create view.

GSP Java version 2.7.2.0(2023-6-14)
  - [Oracle] support oracle virtual column in create table.
  - [Teradata] supprot qualified table name in from clause of COLLECT STATS.
  - [Oracle] support CASCADE CONSTRAINTS AS in DROP TABLE
  - [Greenplum] support grouping sets clause in group by.
	

GSP Java version 2.7.1.9(2023-6-13)
  - [dlineage] support oracle CREATE SYNONYM.
  - [dlineage] fix a bug: Array struct lineage when explicit SELECT is incorrect (0002882)
  - [dlineage] support process information in the json output of DataFlowAnalyzer.getSqlflowJSONModel() method.

GSP Java version 2.7.1.8(2023-6-12)
  - [Oracle] support ALTER TABLE ... TRUNCATE PARTITIONS
  - [Oracle] support ALTER TABLE ... SET PARTITIONING AUTOMATIC/MANUAL clause;  
  - [Oracle] support create table ... with exchange with table 
  - [Oracle] enhance to process alter table after stored procedure.
						

GSP Java version 2.7.1.7(2023-6-9)
  - [Oracle] support nested table clause in create table.
  - [MySQL] use TTypeName.getDisplayLength() to represent the length specified in  CREATE TABLE foo ( bar INT(20) ZEROFILL );
  - [Snowflake] support position function with 3 arguments.
  - [Teradata] able to recognize .EXPORT command followed by a select statement without separated by a semicolon.


GSP Java version 2.7.1.6(2023-6-6, update2)
  - [Oralce] no need to put / in order to separate create or replace procedure statements.
  - [toScript/databricks] fix a bug of TIMESTAMP type rewrite.
  
GSP Java version 2.7.1.5(2023-6-6)
  - [Snowflake] fix a bug can't parse group by (column list) syntax.
  - [Hive] Quoted identifiers enclosed by backtick (`) like `dbName.mytable` will be separated  into 
  `dbName`.`mytable`, so the db name in this example is `dbName`, the table name is `mytable` instead of mytable.
  
GSP Java version 2.7.1.4(2023-6-6)
  - [toScript()/databricks] support interval type and date constant.

GSP Java version 2.7.1.3(2023-6-5)
  - [Databricks] interval constant refactor.
  
GSP Java version 2.7.1.2(2023-6-2)
  - [Oracle] support search clause of CTE.
  
GSP Java version 2.7.1.1(2023-6-2)
  - [BigQuery] dataset id only allow Letters, numbers, and underscores.
  - [Oracle] fix a bug that BULK can't be used as column or table name.
  - [Oracle] add support for ADD SUPPLEMENTAL LOG in alter table.
  

GSP Java version 2.7.1.1(2023-6-1)
  - [Oracle] enhanced to check sqlplus command.
  - [Oracle] support IS JSON condition.
  - [Impala] support update/delete statement.
  - [Oracle] fix a bug can't parse cursor declaration in package specification when there is a case expression in cursor.
  - [Oralce] no need to put / in order to separate create package body statements.
  - [Oracle] support NOCOMPRESS keyword in create table.
  - [MySQL] support from database clause in show index.
  - [MySQL] support Generated column definitions.
  - [Hive] support create materialized vuew.
  - [toXML] able to export range spec in range_n function.
  - [API] remove TFunctionCall.getBetweenExpr(), please use TRangeNFunction.getExpr1() instead. 
  - [API] remove TFunctionCall.getRangeSize(), please use TRangeNFunction.getRangeNFunctionItems() instead.
  - [API] add TRangeNFunction class to reprsents RANGE_N() function in teradata.		
  - [API] move TJsonObjectFunction from package gudusoft.gsqlparser.nodes; to  package gudusoft.gsqlparser.nodes.functions;

GSP Java version 2.7.1.0(2023-5-31)
  - [Oracle] support NONEDITIONABLE in CREATE SYNONYM.

GSP Java version 2.7.0.9(2023-5-31)
  - [BigQuery] '-' character can used in project name only.
  - [BigQuery] fix a bug columName-columName2 treated as a single column, due to - character can be used in project name as unquoted_identifiers
  

GSP Java version 2.7.0.8(2023-5-29)
  - [Netezza] support after and first clause in alter table add column.
  - [Hive] grouping set items is available in parse tree.
  - [Greenplum] timestamp can be used as column name.
  - [postgresql/redshift/greenplum] fix a bug can't process nested comments with more than one asterisk. 
  - [PostgreSQL] support := in raise exception.
  - [PostgreSQL] support drop index inside stored procedure.
  - [PostgreSQL] support into clause in RETURNING.
  - [PostgreSQL] support v_myvar my_var%TYPE;
  - [Impala] fix a bug can't process comment like /*-- comment*/
  - [Impala] fix a bug can't process comment like /**nvl(t3.excr,1)*/

GSP Java version 2.7.0.7(2023-5-26)
  - [Oracle] support SYSTIMESTAMP with argument.
  - [Snowflake] support string literal like '@source.staging/DealSTAR/Deal_Attributes/V4/' in from clause.

GSP Java version 2.7.0.7(2023-5-25)
  - [Redshift] support "not in clause" used in select list.

GSP Java version 2.7.0.6(2023-5-19)
  - [Teradata] support FIRST/NEXT keyword in fetch from statement. 

GSP Java version 2.7.0.6(2023-5-18)
  - [PostgreSQL] support INCLUDING COMMENTS in create table like table statement.
  - [PostgreSQL] support filter clause in percentile_disc function.
  - [PostgreSQL] support WITH TIES clause in FETCH FIRST ¡­ ROWS

GSP Java version 2.7.0.5(2023-5-17)
  - [PostgreSQL/TPostgresqlTableStmt] support TABLE [ ONLY ] table_name [ * ] statement. Using TPostgresqlTableStmt to represent this sql statement.
  - [Teradata] support storage format clause of datatype.
  - [Snowflake/API] support create task statement. TCreateTaskStmt represents create task statement.
  - [Oracle] VERSIONS can be used as table alias.
  - [general] support FULLWIDTH COMMA
  - [general] fix a bug variable is treated as column.
  - [Oracle] enhanced to process sqlplus command.
 
GSP Java version 2.7.0.4(2023-5-16)
  - [Hive] support create permanent functions.
  - [Postgresql] support SELECT * FROM 's3://bucket/data.csv'; in order to support the syntax of DuckDB.

GSP Java version 2.7.0.4(2023-5-15)
  - [Oracle] fix a bug can't parse SELECT json_object('1' value 1)

GSP Java version 2.7.0.3(2023-5-12)
  - [PostgreSQL/API] add new property TDropIndexSqlStatement EKeyReferenceType getDropRestrictType() 
  - [PostgreSQL] ID is not treated as keyword.
  - [lineage/Redshift] able to retrieve daat lineage from alter table append from.
  
GSP Java version 2.7.0.2(2023-5-11)
  - [Snowflake] fix a bug can't parse / at the end of path.
  - [Snowflake] support auto_ingest, integration option in create pipe.
  - [Snowflake] pivot/unpivot can be used as table alias.
  - [Snowflake] WINDOW keyword can be used as table alias.
  - [Oracle] support ALTER SESSION ENABLE PARALLEL DML;
  - [Oracle] support ON COMMIT preserve rows  in CTAS statement.

GSP Java version 2.7.0.2(2023-5-10)
  - [Redshift] support alter table append from clause.
  - [Snowflake] fix a bug failed to parse extra brackets around table name in from clause.
  - [General] except, replace clause in select list is not treated as part of expression in the select list item(star column in select list)
  - [lexer] support bigquery current_date-cast function.
  - [Oracle] support constant like 0e0d
  - [Dlineage] fix a bug INTERVAL + SAFE_CAST source fields incorrectly treated as CONSTANT (#0002843)
  - [PostgreSQL/Greenplum/Redshift] support nested comment inside procedure body.
				   
GSP Java version 2.7.0.2(2023-5-9) 
  - [BigQuery] fix a bug can't process <=-13 correctly.


GSP Java version 2.7.0.1(2023-5-9) 
  - [BigQuery] support create function inside anonymous block.
  - [Oracle] support group by () syntax.
  - [Impala] support insert statement with columns specified.
  - [Hive] support insert statement with columns specified.
   

GSP Java version 2.7.0.1(2023-5-8) 
  - [BigQuery] able to retrieve interval literal in GENERATE_DATE_ARRAY funtion.
  - [BigQuery/API] able to retrieve int64_expression in inteval literal. TConstant, public TExpression getInt64_expression()
  
GSP Java version 2.6.9.8(2023-5-8) 
  - [API] Rename TPlsqlExecImmeStmt to TExecImmeStmt
  - [API] move TPlsqlExecImmeStmt from package gudusoft.gsqlparser.stmt.oracle; to package gudusoft.gsqlparser.stmt;

GSP Java version 2.6.9.7(2023-5-6) 
  - [BigQuery] support set statement with select statement.
  - [BigQuery] support begin/end anonymous block.
  - [Greenplum] support call statement.
  - [Oracle] support the suffixes d (D) of  floating-point number literals

GSP Java version 2.6.9.7(2023-5-5) 
  - [Redshift] fix a bug can't parse copy from statement when authorization_parameters is omitted.
  - [Oracle] fix a bug can't parse USING TABLE(...) in merge statement.
  - [general] toScript() method fix a bug can't output for column in alter table statement.
  
  
GSP Java version 2.6.9.6(2023-4-28)
  - [Netezza] support PERCENTILE_CONT function.
  - [PostgreSQL] support comma-separated list of scalar variables in for target in query loop.
  - [Snowflake] support exclude and rename clause in select * list.
  - [API] move TExceptReplaceClause from gudusoft.gsqlparser.nodes.bigquery to gudusoft.gsqlparser.nodes
  - [API] move TReplaceExprAsIdentifier from gudusoft.gsqlparser.nodes.bigquery to gudusoft.gsqlparser.nodes


GSP Java version 2.6.9.5(2023-4-27)
  - [Teradata] SQL statement after procedure can be recognized correctly without specify a specific delimiter.
  - [toXML/Teradata] support teradata using statement.
  - [Teradata] fix a bug TYPE keyword can't be used in using clause.			   
  - [Snowflake] able to retrieve asc/desc information.
  - [Snowflake] able to retrieve column comment in create table statement.


GSP Java version 2.6.9.4(2023-4-26)
  - [BigQuery] fix a lineage regression while process unnest clause.
  
GSP Java version 2.6.9.3(2023-4-26)
  - [Hive] fix a regression introduced in 2.6.8.4, can't process update statement.
  - [Greenplum] fix a bug can't pickup create function not ended with semicolon.
  - [BigQuery] support on condition in cross join.
  
GSP Java version 2.6.9.1(2023-4-25)
  - [PostgreSQL/Greenplum] rewritten the logic to process function body.
  - [Greenplum] support label inside function body.
  - [Greenplum] support drop view/alter table statement in function body.
  - [Greenplum] support create view statement in function body.
  - [Greenplum] support drop external table.
  - [Greenplum] support with ordinality clause of function table.
  - [Greenplum] support nested create function in function body.
  - [Greenplum] into clause can be put at the end of select statement.
  - [Greenplum] support distributed by clause in create temporary table statement.
  - [Greenplum] support analyze table statement.
  - [API] rename THiveAnalyze to TAnalyzeStmt. rename sstHiveAnalyzeTable to  sstanalyzeTable

GSP Java version 2.6.9.1(2023-4-24)
  - [greenplum] support select into variable in function body.

GSP Java version 2.6.9.0(2023-4-23)
  - [PostgreSQL/Greenplum] support declare...begin...end  anonymous block.
  - [PostgreSQL/Greenplum] support create extension statement.

GSP Java version 2.6.8.9(2023-4-20)
  - [PostgerSQL] $$delimiter$$ is processed differently in create function/procedure and in other SQL statement.
  - [PostgerSQL] function/procedure body written in other language than sql/plsql will be ignored.

GSP Java version 2.6.8.8(2023-4-19)
  - [PostgreSQL] support create index in create function.
  - [BigQuery] enhanced to include all Array Value When Unnest Array.
  
GSP Java version 2.6.8.7(2023-4-18)
  - [BigQuery] fix a bug: Parse error when calling TEMP FUNCTION inside UNNEST
  - [BigQuery] Quoted identifiers enclosed by backtick (`) like `myproject.mydataset.mytable` will be separated into 
  `myproject`.`mydataset`.`mytable`, so the project name in this example is `myproject` instead of myproject,
  the dataset name is `mydataset` instead of mydataset, the table name is `mytable` instead of mytable.

			

GSP Java version 2.6.8.7(2023-4-18)
  - [Redshift] Redshift LAST_VALUE() OVER() column lineage not generating correctly
  - [BigQuery] fix a bug: subquery attribute value is NULL for the expression type as subquery_t in ARRAY_AGG function
  - [Postgresql/toXML] function in call statement is represented in an expression object.


GSP Java version 2.6.8.7(2023-4-18)
  - [BigQuery] Incorrect source-target mapping when parsing complex structures (#2807)


GSP Java version 2.6.8.6(2023-4-14)
  - [Snowflake] datetime can be used as column name.
  - [Oracle] support ON OVERFLOW TRUNCATE WITHOUT COUNT in LISTAGG.
	
GSP Java version 2.6.8.6(2023-4-13)
  - [Oralce] support IGNORE NULLS clause in LAG function.
  
GSP Java version 2.6.8.5(2023-4-13)
  - [dlineage] unnest table result set will not be included in the output in simple mode.
  
GSP Java version 2.6.8.5(2023-4-12)
  - [Databricks] support interval constant.
  - [Databricks] support in/not in condition in select list.
  - [Databricks] support exists(expr, func).

GSP Java version 2.6.8.5(2023-4-11)
  - [Databricks] support current_timestamp() without specify an argument.
  - [Databricks] support decimal literal like 0.2d 
  - [Databricks] supprot logical NOT operator: !
  - [Databricks] support long literal like 2L 
  - [SQL Server] able to fetch for column information from alter table ... add default.
  - [SQL Server] support syntax that primary key clause put at the first element of create table statement.
  - [BigQuery] CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP treated as a function.
  - [Hive] schema name in create view statement is recogined correclty.

GSP Java version 2.6.8.5(2023-4-10)
  - [Teradata] s2 in s2.t2.id2 is recogined as database name correctly.
  - [Teradata] database name in the qualified macro name in create macro is recogined correctly.
  - [Oracle] able to set schema and object name correctly in CREATE SYNONYM statement.
  - [Impala] support limited clause in subquery of union operator.
 
 
GSP Java version 2.6.8.4(2023-4-7)
  - [PostgreSQL/Greenplum] fix out of memory bug when processing large file including create function statement.
  - [Hive] support multiple value in update set clause.
  - [Hive] support table alias in update statement.
  
  
GSP Java version 2.6.8.3(2023-3-31)
  - [Dlineage] fix a bug that build wrong Source from Union All (improved, #0002800)
  
GSP Java version 2.6.8.2(2023-3-31)
  - [API] Implement clone() method in TSourceToken,TObjectName,TColumnDefinition,TTypeName
  
GSP Java version 2.6.8.1(2023-3-31)
  - [API] TLexerMssql.canBeColumnName() changed to static method.
  - [API] TLexerMssql changed to public class TLexerMssql 
  - [General] don't bind a TTypeName object to sqlparser instance in order to avoid memory leak.
  - [API] remove public void setGsqlparser(TGSqlParser gsqlparser), public TGSqlParser getGsqlparser() method of TSourceToken.
  - [Dlineage] fix a bug that build wrong Source from Union All (#0002800)
  - [Dlineage] fix a bug that: CASE with static and dynamic values contain no lineage with a COALESCE (#0002750)
  
  
GSP Java version 2.6.8.0(2023-3-30)
  - [BigQuery] schema name in drop procedure/function is recognized correctly.
  - [Postgres/Greenplum/Redshift] fix a bug that wrong tokens selected for current_timestamp(n), current_time(n), localtime(n), localtimestamp(n)
  - [Sybase] fix a bug can't parse alter table enable/disable trigger without specify the trigger name.
  - [general] support FULLWIDTH LEFT/RIGHT PARENTHESIS with Unicode code point:0xFF08/0xFF09  
  
GSP Java version 2.6.7.9(2023-3-29)
  - [Oracle] support TABLE FUNCTION used in join clause with parenthesis.
  - [Oracle] EXCEPTION clause in create procedure can be visited in visitor mode.
  - [Hive] support qualified column name in set clause of update statement.
		
		
GSP Java version 2.6.7.8(2023-3-27)
  - [Snowflake] # no longer can be used to comment text to the end of line.
  - [Snowflake] able to parse with tag clause in create view statement.
  - [BigQuery] schema name in like table name in create table statement is recognized correctly.
  - [Hive] fix a bug when tokenize text like  _numberLong:, the : should be separated from _numberLong 


GSP Java version 2.6.7.8(2023-3-27)
  - [SQL Server] fix a null exception when subquery is used in funciton call in set clause of update statement.
  - [SQL Server] fix a null exception when disable trigger is used in stored procedure.
  
GSP Java version 2.6.7.7(2023-3-23)
  - [Snowflake] support comment clause in create view statement.
  
add opt_comment_clause in rule:  
CreateViewStmt: 
	RW_CREATE opt_or_replace opt_secure RW_VIEW opt_if_not_exits qualified_name viewname_list RW_AS AllSelectStmt  opt_comment_clause
	
  - [Snowflake] comment can be used in the select list of subquery in create table statement.
  
GSP Java version 2.6.7.6(2023-3-21)
  - [Oracle/toXML] ablt to get detailed information from composite_range_partitions.
  - [Oracle/toXML] ablt to get interval expression in interval partition.
  
GSP Java version 2.6.7.5(2023-3-20)
  - [BigQuery] support options at the end of create function statement.
  - [BigQuery] fix a bug CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP treated as column.
 
 
GSP Java version 2.6.7.3(2023-3-17)
  - [Teradata] support .BT, .ET command.
  - [Teradata] set session (SS) inside procedure can be listed correctly.
  
GSP Java version 2.6.7.2(2023-3-17)
  - [dlineage] column used in UNNEST linked back to source table in uplevel.

GSP Java version 2.6.7.1(2023-3-16)
  - [Teradata] .Logon BTEQ Cmd can be in multpile lines.
  - [Snowflake] support alter task resume/suspend
  - [SQL Server] support disable/enable trigger statement.


GSP Java version 2.6.7.0(2023-3-15)
  - [API] add TObjectName.getParentObjectName().

take this sql for example:

  create table absolute-runner-302907.gudu_sqlflow.ADDRESS_NESTED (
	Emp_id INT64,Name STRING
	,Address ARRAY> );
	
INSERT INTO `absolute-runner-302907.gudu_sqlflow.INFO` (emp_id,name,state,city,zipcode)
select emp_id,name,state,city,zipcode from `absolute-runner-302907.gudu_sqlflow.ADDRESS_NESTED`, UNNEST(address)	

In the above insert into statement,
Columns in TUnnestClause.derivedColumnList such as State attribute has the TObjectName.getParentObjectName() link back to address column.

  
GSP Java version 2.6.6.9(2023-3-14)
  - [BigQuery] unnest clause enhanced in data lineage analysis.
  - [API] add TUnnestClause.derivedColumnList which represents the columns derived from the unnest() clause.
  
  create table absolute-runner-302907.gudu_sqlflow.ADDRESS_NESTED (
	Emp_id INT64,Name STRING
	,Address ARRAY> );
	
INSERT INTO `absolute-runner-302907.gudu_sqlflow.INFO` (emp_id,name,state,city,zipcode)
select emp_id,name,state,city,zipcode from `absolute-runner-302907.gudu_sqlflow.ADDRESS_NESTED`, UNNEST(address)

for the above sql which indluces UNNEST(address)£¬ gsp will create the following linked information 
 UNNEST(address).state,
 UNNEST(address).city,
 UNNEST(address).zipcode
		   
based on the address column definition in the create table statement, which is useful when creating the data lineage.
		   


GSP Java version 2.6.6.8(2023-3-10)
  - [snowflake] support CHANGE_TRACKING = TRUE option in create table.
  

GSP Java version 2.6.6.7(2023-3-9)
  - [Oracle] able to recoginze INT 64 Datatype, represented by EDataType.int64_t
  - [BigQuery] support expression used  at time zone clause in extract function
  - [BigQuery] support export data statement.
  
GSP Java version 2.6.6.6(2023-3-8)
  - [BigQuery/dlineage] #0002738, BigQuery - Missing Relationship for CONCAT function 


GSP Java version 2.6.6.6(2023-3-7)
  - [SQL Server] fix a bug can't process ¡¯ character inside string have multiple lines.
  - [BigQuery/toXML] able to output table kind of create table.
  
GSP Java version 2.6.6.5(2023-3-6)
  - [Oracle] fix bug introduced in 2.6.6.4 for oracle builtin function.
  
GSP Java version 2.6.6.4(2023-3-4)
  - [Oracle] SYSTIMESTAMP/USER/SYSDATE/CURRENT_DATE/CURRENT_TIMESTAMP recognized as builtin function.
  - [Hive] fix a bug when tokenize text like  _numberLong:, the : should be separated from _numberLong 
  
GSP Java version 2.6.6.3(2023-3-4)
  - [Dlineage] improvement of processing star column.
  
GSP Java version 2.6.6.2(2023-3-4)
  - [test] remove bracket.sql test sql file and add new testcase: testLegacySQL
  - [BigQuery/API] bracket table name is only valid in legacySQL, if you need to support this old syntax, 
	please set public static final boolean bigquery_legacysql_compatible = true; This option may leads to some parse error
	when parse array construct in the new bigquery dialect.
	
GSP Java version 2.6.6.1(2023-2-25)
  - [Snowflake] fix a bug can't parse / at the end of stage name.
  
GSP Java version 2.6.6.0(2023-2-24)
  - [Dlineage] 0002740: Analyze Error on SELECT STAR CREATE VIEW statements
  
GSP Java version 2.6.5.9(2023-2-24)
  - [Dlineage] fix a bug can't link column in subqurey in the select to target table correctly if table table had metadata provided.
  - [General] fix a bug link column in subquery to the uplevel create table statement.

GSP Java version 2.6.5.9(2023-2-22)
  - [MySQL] use json_get_object expression to represent MySQL -> and ->> JSON Functions.
  - [PostgreSQL] support the syntax that the lower and upper subscript of index can be empty.
  - [PostgreSQL] fix a bug, no space is allowed in a bind variable between : and name

GSP Java version 2.6.5.8(2023-2-21)
  - [Dlineage/Hive] able to build relation between table and s3 location in alter table. 


GSP Java version 2.6.5.8(2023-2-20)
  - [PostgreSQL] fix a bug ordinality keyword can't be used as common table name in CTE.
  - [PostgreSQL] support values clause in CTE.
  - [Teradata] fix a bug can't recoginze database name in rename table statement.
  - [API/SQL Server] TMssqlExecute.getLinkServerName(), return the linked server name used in execute statement.
  - [Oracle] support value in JSON_OBJECT function.


GSP Java version 2.6.5.7(2023-2-16)
  - [API] add new class TJsonObjectKeyValue represents key/value in JSON_OBJECT funciton.
  - [API] add new class TJsonObjectFunction represents JSON_OBJECT funciton.
  - [Oracle] support JSON_OBJECT funciton, able to get columns inside this function.
  - [dlieange] bug fix for 0002679: SELECT * EXCEPT, AS CASE parse error
  - [dlieange] bug fix for 0002677: Select star except select star script not parsed correctly
  - [dlieange] bug fix for 0002678: bigquery select * replace()
  - [toXML] star column in select list may link to multiple tables.


GSP Java version 2.6.5.6(2023-2-15)
  - [Teradata] fix a bug string type in cast function can be recognized correctly.
  - [Hive] fix a ClassCastException error when parse CTE before from ... insert
 
 
GSP Java version 2.6.5.5(2023-2-7)
  - [BigQuery] support AS STRUCT/AS VALUE clause in select list.
  - [MySQL] fix a bug can't parse DEC(9,3) datatype.
  
GSP Java version 2.6.5.5(2023-2-6)
  - [BigQuery] support unnest() function used in left/right join without speicify a join condition.

GSP Java version 2.6.5.4(2023-2-3)
  - [BigQuery] able to fetch select * except(expr as identfier) in parse tree.
  - [API] new class TReplaceExprAsIdentifier represent (expr as identfier) in select * except clause.
  
GSP Java version 2.6.5.3(2023-2-2)
  - [Teradata] able to parse set role administration
  - [Teradata] able to parse generated always clause.
  - [Teradata/toXML] able to list length of VARGRAPHIC datatype.
  - [SQL Server/toXML] able to list data type in alter table alter column clause.
  
GSP Java version 2.6.5.2(2023-2-1)
  - [Redshift] fix a bug can't parse select statement inside unload statement due to single char escape.
  
GSP Java version 2.6.5.1(2023-2-1)
  - [general] fix an ArrayOutboundIndex bug.

GSP Java version 2.6.5.0(2023-1-31)
  - [DataFlowAnalyzer/BigQuery] fix a bug BigQuery - WITH AS + star has missing relationships and incorrect transforms (#0002639)
  - [DataFlowAnalyzer] fix a bug unable to find lineage relation between functions/procedures and tables/views (#0002626)
  - [BigQuery]  Transforms contain all derivations in union set operator.(#0002588)
  - [API]  TCustomSqlStatement.asCanonical() is improved to replace keys in user defined functions with *** strings if the function argument is represented by column name.
  
  
GSP Java version 2.6.4.9(2023-1-20)
  - [DataFlowAnalyzer/Oracle] support Oracle sequence in data lineage.
  - [DataFlowAnalyzer/Hive] able to discover data lineage from Hive from clause and map/reduce
  
GSP Java version 2.6.4.8(2023-1-19)
  - [API/PostgreSQL] expose where condition in create index statement by introduce new method: TCreateIndexSqlStatement.getWhereCondition() 
  - [API/PostgreSQL] TAlterTableOption.getPartitionBoundSpec() return postgresql partition_bound_spec in alter table attach partition clause.
  - [API/PostgreSQL] TCreateTableSqlStatement.getPartitionBoundSpec() return postgresql partition_bound_spec in create table partition of clause.
  - [API/PostgreSQL] add TPartitionBoundSpecSqlNode class to represent partition_bound_spec in create table partition of clause.
  - [PostgreSQL] support materialized CTE.
  - [PostgreSQL] fix a parser error for tuple expressions in WHERE clause: where (a1_0.firstName,a1_0.lastName)=($1,$2)
  - [PostgerSQL] support NO KEY UPDATE in locking clause.
  - [PostgerSQL] fix a bug can't parse bind value like $1 in FETCH FIRST clause.
  - [MySQL] able to parse ->, ->> json functions.
  
GSP Java version 2.6.4.7(2023-1-18)
  - [PostgreSQL] support datatype cast syntax like this: float8(q1)
  - [Databricks/API] when an expression is type of typecast_datatype_t (syntax like: bigint(expr1)), 
	typename can be accessed by calling TExpression.getTypeName() and expr1 can be accessed by calling TExpression.getLeftOperand() method.
  - [Tearadata] fix a bug can't parse syntax like CDR.EVENT_DTTM AT 'America Central' in cast function.
  - [DataFlowAnalyzer] fix a bug that in /s simple mode, in-direct relationship is not filter out.
 

GSP Java version 2.6.4.6(2023-1-17)
  - [general] fix a bug can't link column to table correct when multiple subquery in from clause with same column name.
  - [Hive] where condition includes WHERE keyword.
  - [general] Unable to parse a query that contains character '¡¯'

			   

GSP Java version 2.6.4.6(2023-1-16)
  - [toXML] support event clause in create trigger.
  - [PostgreSQL] support create or replace trigger.
  
GSP Java version 2.6.4.5(2023-1-15)
  - [databricks] support merge statement.
  
GSP Java version 2.6.4.4(2023-1-13)
  - [DB2/General] table name can be the same as function name in the same schema. 
  
GSP Java version 2.6.4.3(2023-1-13)
  - [API/PostgreSQL] TOrderByItem.getSortKey() return TExpression, the sortKey.getExpressionType() change from  EExpressionType.simple_source_token_t to EExpressionType.simple_object_name_t
  
GSP Java version 2.6.4.2(2023-1-12)
  - [REDSHIFT] fix a bug can't parse comparison condition like :  (value1,value2)<>(0,0)
  
GSP Java version 2.6.4.1(2023-1-12)
  - [DB2/API] TDb2CreateFunction is deprecated, use TCreateFunctionStmt instead. TDb2ReturnStmt TDb2CreateFunction.getReturnStmt() is replaced by TMssqlReturn TCreateFunctionStmt.getReturnStmt()
  - [DB2] function parameter in TDb2CreateFunction will be treated as column name, this bug is fixed when TDb2CreateFunction is replaced by TCreateFunctionStmt

GSP Java version 2.6.4.0(2023-1-10)
  - [PostgreSQL] support comment on procedure.
  - [PostgreSQL] fix a bug doesn't support the schema qualified name on drop view, index, sequence.
  - [PostgerSQL] fixed ClassCastException when parsing owned by clause in create sequence.
  - [PostgreSQL] support lower and upper bound in for loop with double dot operator.
  - [PostgreSQL] support syntax like operator(pg_catalog.||)


GSP Java version 2.6.3.9(2023-1-9)
  - [Netezza] support while command in stored procedure.
  
GSP Java version 2.6.3.8(2023-1-7)
  - [BigQuery] fix the bug to parse the ARRAY function with nested subquery.
  - [Oracle] fix a bug that trigger Table is coming as Variable

GSP Java version 2.6.3.7(2023-1-6)
  - [MySQL] able to recognize nowait value in for update clause.  
  
GSP Java version 2.6.3.7(2023-1-6)
  - [Hive] fix a bug can't parse subquery join.
  - [General] add TBaseType.DEBUG_PARSE_TABLE option to trace parse table. Suppport in Hive only.
  - [Snowflake] fix a bug IDENTIFIER keyword can't be used in view column list.

GSP Java version 2.6.3.7(2023-1-5)
  - [Oracle] fix a bug null can't be used in variable declaration.

GSP Java version 2.6.3.6(2022-12-24)
  - [Hive] fix a bug from keyword can't be used as column in struct property.
  
GSP Java version 2.6.3.5(2022-12-22)
  - [DB2] fix a nullexception while iterate commit statement.
  - [DB2] fix a nullexception while iterate set statement.
  - [DB2/API] use TCommonBlock to represents DB2 compound sql node
  - [DB2] fix nullexception when parsing procedure body in DECLARE CONTINUE HANDLER FOR SQLEXCEPTION

GSP Java version 2.6.3.4(2022-12-18)
  - [API] TInsertSqlStatement public ArrayList getMultiInsertStatements(), represents multiple insert statement in hive from query...insert [insert...]
  - [Hive] from query .. insert is treated as an insert statement instead of select statement.
  
GSP Java version 2.6.3.3(2022-12-15)
  - [MySQL] support fixed datatype.
  - [BigQuery] fix a bug that select query having "Row" as Table column throwing error
  - [Snowflake] support integer keyword used in partiion by list.
  - [Teradata] able to get length of varbyte, blob, clob.
  - [Teradata] fix a bug treat hire_date (time(6)) as function which should be a column with data conversion.
  - [General] DB2 function quoted function name compared with unquoted function name is a case insenstive way.
  
GSP Java version 2.6.3.2(2022-12-14)
  - [API]  TCustomSqlStatement.asCanonical() is improved to replace keys in user defined functions with *** strings.
  
  
GSP Java version 2.6.3.1(2022-12-09)
  - [Snowflake] able to parse select into query which has ¡°schema.table¡° in target table
  - [Snowflake] support Double-Dot notation to omit schema in Snowflake
  - [Teradata] able to get datatype of Column Data Type of Create Macro script
  - [Teradata] fix a null exception when process named column alias.
  - [Teradata] support SET LATIN NOT CASESPECIFIC; in procedure.
  - [Teradata] fix a bug can't parse SET LATIN NOT CASESPECIFIC in character declaration. 
  - [BigQuery] support format clause in cast function.
  - [BigQuery] support precision or/and scale of decimal, bigdecimal.
  - [BigQuery] support explict datatype cast like: NUMERIC?'0'
  - [BigQuery] fix a bug can't parse array_agg function with array_subscript_specifier
  
  
GSP Java version 2.6.3.0(2022-12-08)
  - [Databricks] fully support databricks SQL dialect.
  - [API] TRedshiftDropGroup renamed to TDropGroup
  - [API] TRedshiftDropGroup moved from gudusoft.gsqlparser.stmt.redshift to  gudusoft.gsqlparser.stmt
  - [API] TDenyStmt moved from gudusoft.gsqlparser.stmt.mssql to  gudusoft.gsqlparser.stmt
  - [API] TRedshiftAlterGroup renamed to TAlterGroup
  - [API] TRedshiftAlterGroup from gudusoft.gsqlparser.stmt.redshift to  gudusoft.gsqlparser.stmt


GSP Java version 2.6.2.9(2022-12-07)
  - [API] TRedshiftCreateGroup renamed to TCreateGroup
  - [API] TRedshiftCreateGroup move from gudusoft.gsqlparser.stmt.redshift to  gudusoft.gsqlparser.stmt
  - [API] THiveAnalyzeSqlNode rename to TAnalyzeSqlNode
  - [API] THiveAnalyzeSqlNode move from gudusoft.gsqlparser.nodes.hive to gudusoft.gsqlparser.nodes
  - [API] THiveAnalyzeTable rename to TAnalyzeTable
  - [API] THiveAnalyzeTable move from gudusoft.gsqlparser.stmt.hive to gudusoft.gsqlparser.stmt


GSP Java version 2.6.2.8(2022-12-01)
  - [API] TAlterCredentialStmt moved from gudusoft.gsqlparser.stmt.hana to gudusoft.gsqlparser.stmt
  - [API] TListStmt move from gudusoft.gsqlparser.stmt.snowflake to  gudusoft.gsqlparser.stmt

GSP Java version 2.6.2.8(2022-11-29)
  - [MySQL] fix a bug position keyword can't be used as column.
  - [azuresql, sql srever] able to process create external table with options as select.
  - [Oracle] support with no data clause in create table as select statement.
  - [Netezza] support loop statement.
  - [Netezza/toXML] able to get detailed information about execute statement inside procedure.

GSP Java version 2.6.2.8(2022-11-29)
  - [Netezza/toXML] able to export raise level, format string and values.
  - [Netezza] able to get arguments from call procedure.
  
  
GSP Java version 2.6.2.7(2022-11-29)
  - [Hive] use database command can be used to set dafault catalog.
  
GSP Java version 2.6.2.6(2022-11-28)
  - [API] THiveSwitchDatabase is deprecated, use TUseDatabase instead.
  - [bigquery] fix a bug can't parse subquery inside unnest clause.
  
GSP Java version 2.6.2.5(2022-11-23)
  - [databricks] support lateral View/pivot clause.

GSP Java version 2.6.2.4(2022-11-22)
  - [Tearadata] support where clause in set statement.
  - [Tearadata] fix a bug can't CASESPECIFIC in parameter declaration.
  
GSP Java version 2.6.2.3(2022-11-22)
  - [Netezza] fix a bug that toString() return null if only select list is available in a select statement.
  - [API] ArrayList TSelectSqlStatement.getFlattenedSelects(), flatten the select statement in set operators.
  - [Snowflake] fix a null exception in TSnowflakeCopyIntoStmt.acceptChildren() method.
  - [API] fix typo: TSnowlflakeCopyIntoStmt, change to TSnowflakeCopyIntoStmt
  
GSP Java version 2.6.2.2(2022-11-20)
  - [BigQuery] fix a null exception when use GENERATE_DATE_ARRAY in UNNEST clause.
  - [general] fix a TJoinList.getEndToken() null exception bug.
  - [SQL Server] support with hints after subquery in from clause.
  - [API] values clause in greenplum was treated as a select statement, access values clause using TSelectSqlStatement.getValueClause()
  - [Greenplum] fix a bug can't parse multiple values clause. 
  - [PostgreSQL] PUBLIC keyword can be used in qualified identifiers for user-defined types
  - [PostgreSQL] support create type name as statement.
  - [API] move TCreateTypeStmt from package gudusoft.gsqlparser.stmt.hana; to  package gudusoft.gsqlparser.stmt;
  - [Hive] support drop macro.
  - [API] TDropMacro move from package gudusoft.gsqlparser.stmt.teradata to package gudusoft.gsqlparser.stmt
  - [Hive] support create macro statement.
  - [API] rename TTeradataCreateMacroSqlNode to  TCreateMacroSqlNode
  - [API] rename TTeradataCreateMacro to  TCreateMacro
  - [API] TTeradataCreateMacro move from package gudusoft.gsqlparser.stmt.teradata to package gudusoft.gsqlparser.stmt
  - [SQL Server] support WITH ( DELAYED_DURABILITY = { OFF | ON } ) in commit statement.
  - [SQL Server] support null keyword in create procedure parameter declaration.
  - [BigQuery] support recursive keyword in CTE.
  
  
GSP Java version 2.6.2.1(2022-11-19)
  - [BigQuery] support string(length)
  - [BigQuery] support create table copy clause.
  - [PostgreSQL] support drop trigger/drop procedure/drop index/drop sequence/create sequence.

GSP Java version 2.6.2.1(2022-11-18)
  - [API] add TFunctionHeader to represent fuction name with arguments.
  - [PostgreSQL] support drop function.
  - [Oracle] support drop trigger statement.
  - [bigquery] fix a bug single line comment start at the end of line without a space after the sql clause.
  
GSP Java version 2.6.2.0(2022-11-18)
  - [API] add TPathSqlNode TObjectName.getPath() method, return path used in the snowflake stage location.
  - [API] return type of TStageLocation.getPath() change from TObjectNameList to TPathSqlNode
  - [API] add new class TPathSqlNode represents snowflake path.
  - [greenplum] fix a bug can't parse into temporary/temp/unlogged table clause.
  - [toXML] support sql expression in bigquery create function.
  - [Teradata] fix a bug can't parser user (named edw_create_user )
  
GSP Java version 2.6.1.9(2022-11-17)
  - [general] column name in Semi-structured Data is regonized correctly.

GSP Java version 2.6.1.9(2022-11-15)
  - [Teradata] able to get length of byte datatype.
  - [Tearadata] fix bug can't parse expression: LAST,END function like END(PERIOD((CURRENT_TIMESTAMP-INTERVAL '10' MINUTE),CURRENT_TIMESTAMP))
  - [Teradata] fix a bug can't parse time(6) function.
  
GSP Java version 2.6.1.8(2022-11-11)
  - [dlineage] oracle db link bug fix.
  
GSP Java version 2.6.1.7(2022-11-10)
  - [Oracle] database link name is compared using the uppercase no matter it is included in double quote or not.

GSP Java version 2.6.1.6(2022-11-09)
  - [Oracle] support outer join of xmltable.
  - [Oracle] fix a bug COLUMNS keyword can't be used as column alias.
  - [Oracle] fix a bug can't parse start with clause start with a blank line.


GSP Java version 2.6.1.5(2022-11-06)
  - [databricks] able to recoginze all databricks commands.
  
GSP Java version 2.6.1.4(2022-11-05)
  - [databricks] json path expression.

GSP Java version 2.6.1.3(2022-11-04)
  - [greenplum] fix a nullexception while parsing SET TIME ZONE 'PST8PDT';
  
GSP Java version 2.6.1.2(2022-11-04)
  - [Greenplum,PostgreSQL] fix a bug can't process NO SQL clause in create function.
  - [API] TSetSearchPathStmt is deprecated, use TSetStmt with the variable name to search_path
  - [Greenplum] first schema in set search_path statement is set to default schema.
  - [Greenplum,PostgreSQL] able to recognize set variable statement
  
GSP Java version 2.6.1.1(2022-10-31)
  - [databricks] support datatypes, functions

GSP Java version 2.6.1.0(2022-10-30)
  - [databricks] start to support databricks SQL dialect.

GSP Java version 2.6.0.7(2022-10-30)
  - [BigQuery] fix a bug can't parse * EXCEPT () REPLACE () syntax.
  
GSP Java version 2.6.0.6(2022-10-28)
  - [Hive] fix a bug values clause in insert statement is not processed correctly.
	
GSP Java version 2.6.0.6(2022-10-27)
  - [Oracle] fix a bug while parse virtual column.
  - [Oracle] support add index clause in alter table.

GSP Java version 2.6.0.6(2022-10-22)
  - [Teradata] fix a bug can't process XC, XCV, XCF that used to defining the character as "Hexadecimal digits".

GSP Java version 2.6.0.5(2022-10-21)
  - [general] fix a bug in TGroupBy.acceptChildren(TParseTreeVisitor v)
  - [SQL Server] fix a bug in TMssqlIfElse.acceptChildren(TParseTreeVisitor v) 
  - [Teradata] fix a bug can't parse expression list in case_n function.
  

GSP Java version 2.6.0.5(2022-10-20)
  - [API] TIndexDefinition.getPartitionExprList() is deprecated, please use getPartitioningLevels() instead.
  - [API] add new class TPartitioningLevel to represent teradata Partitioning Level used in create table index option.
  - [Teradata/toXML] able to fully export partition by clause in create table statement.
  - [Oracle/toXML] support oracle hash partition, hash partitions by quantity clause in create table statement.
  
GSP Java version 2.6.0.4(2022-10-20)
  - [Oracle/toXML] support oracle table properties, range partition in create table statement.
  
GSP Java version 2.6.0.3(2022-10-18)
  - [toXML] fully output for syntax like: UNNEST(ARRAY>[(1, 'foo'), (3, 'bar')])
  - [BigQuery] able to detect column used in unnest with offset clause.
  - [BigQuery] fix a bug can't recognize column from unnest() function.
  - [gettablecolumn] add showCTE option to control the output of CTE table and columns, default is false.
  - [BigQuery] support array (subquery).


GSP Java version 2.6.0.2(2022-10-17)
  - [BigQuery] able to parse STRUCT (subquery).*
  - [BigQuery/dlineage] able to discover data lineage in merge statement while using INSERT ROW clause.
  - [BigQuery/dlineage] fix a bug while using star column and nested array and struct in the select list.
  - [BigQuery/dlineage] able to get data lineage from nested array and struct.
  - [BigQuery/dlineage] support table function.
  
GSP Java version 2.6.0.1(2022-10-17)
  - [API] use TObjectName.createObjectName() method to create a new TObjectName object, instead of using new constructor.

GSP Java version 2.5.9.9(2022-10-16)
  - [API] If you create a TObjectName, dbvendor and db object type must be specified, public TObjectName(EDbVendor dbVendor,EDbObjectType dbObjectType){
  - [API] add public static TObjectName createObjectName(EDbVendor dbVendor, EDbObjectType dbObjectType,TSourceToken token1) to create new TObjectName.

GSP Java version 2.5.9.8(2022-10-15)
  - [BigQuery] support array after SPLIT function.
  - [API] add TObjectName.getAnsiSchemaName(), getAnsiCatalogName(). 

GSP Java version 2.5.9.7(2022-10-11)
  - [Oracle] table type variable in update statmenty is not processed correctly
  - [Snowflake] fix a bug when parsing CTAS query.
  
GSP Java version 2.5.9.6(2022-10-07)
  - [Snowflake] LAST_VALUE, FIRST_VALUE function,  { IGNORE | RESPECT } NULLS can also be specified in the arguments for the function
  - [Oracle] sql in EXECUTE IMMEDIATE linked to the procedure where EXECUTE IMMEDIATE is executed.

GSP Java version 2.5.9.6(2022-10-06)
  - [PostgreSQL] able to process unicode +200B	?	e2 80 8b	ZERO WIDTH SPACE
  - [snowflake] support select statement used in function call.
  - [snowflake] fix a bug can't process using table included with parenthesis.

GSP Java version 2.5.9.6(2022-10-05)
  - [General] table alias used in update statement will not be picked up as table name.
  - [SQL Server] fix a bug can't process float constant in top clause.
  
  
GSP Java version 2.5.9.5(2022-10-01)
  - [BigQuery] Support for Bigquery struct based lineage.
  
GSP Java version 2.5.9.4(2022-10-01)
  - [Teradata] support multiple lock clause in lock statement.
  - [Oralce] support drop all storage in truncate table.
  - [Teradata] support syntax in create function put function_attribute before LANGUAGE SQL keyword.
  - [Teradata] support create function table form.
  - [Teradata] support alter procedure (sql form/external form).
  - [Teradata] support alter function.
  
GSP Java version 2.5.9.3(2022-09-29)
  - [BigQuery] struct column used in SQL query is separated into part and property token in TObjectName.
  - [Teradata] support with data primary index clause in create table.
  - [Teradata] support column definition without data type in CREATE MULTISET TABLE TEMP_TABLE
  - [Netezza] support limit offset, rowcount

GSP Java version 2.5.9.3(2022-09-27)
  - [Redshift/dlineage] support unload command in data lineage analysis.
  
GSP Java version 2.5.9.2(2022-09-26)
  - [Dlineage] support new metadata.json which includes server section.

GSP Java version 2.5.9.1(2022-09-25)
  - [Netezza] fully support create procedure.
  - [BigQuery] support call procedure in top level script.
  - [Teradata] support fetch last staetment inside procedure.
  - [BigQuery] support function table in table reference.
  - [BigQuery] support create table function.
  - [BigQuery] support create snapshot table command.
  - [REDSHIFT/API] TUnloadStmt represents unload statement.
  - [API] TRedshiftUnload is replaced by TUnloadStmt.

GSP Java version 2.5.9.0(2022-09-23)
  - [Teradata] support XML INLINE SPECIFICATION.
  - [REDSHIFT] support exists condition in select list.
  - [PostgreSQL] support csv header option in copy command.
  - [Redshift] bug a bug can't process time data type.
  - [BigQuery/dlineage] support except clause in select list.
  
GSP Java version 2.5.8.9(2022-09-18)
  - [BigQuery] support create table ... clone/create table ... like
  - [BigQuery] support drop procedure/function/drop materialized view/drop external table statement.
  - [BigQuery] support alter column SET OPTIONS/DROP NOT NULL/SET DATA TYPE/SET DEFAULT EXPRESSION/DROP DEFAULT
  - [BigQuery] support reneme to clause/rename column/drop column/SET DEFAULT COLLATE in alter table.
  - [BigQuery] support COLLATE 'und:ci' of STRING datatype.
  - [BigQuery] support add column clause in alter table.
  - [Teradata/toXML] able to output data definitoin attribute of data type such as WITH DEFAULT not null.
  - [Teradata] support ; put before statement in create macro command.
  - [Teradata] able to skip \u008D character used in SQL query.
  - [Teradata] support EXEC MLOAD SALES_FEES_S_UN;
  - [Netezza] able to seperate multiple create procedure statement in a single script.
  - [Teradata] support explain collect statistics command.
 
 
GSP Java version 2.5.8.8(2022-09-15)
  - [API] TResultColumn.getExceptColumnList() returns BigQuery except columns in select list.
  - [Bigquery] able to retrieve except columns in select list.

GSP Java version 2.5.8.7(2022-09-14)
  - [dlineage] support snowflake copy command.
  
  
GSP Java version 2.5.8.6(2022-09-13)
  - [Redshift] copy command is fully exported in toXML demo.
  - [API] TRedshiftUnload.getCredentias renamed to getAuthorizationClause(). TRedshiftCopy.getCredentias renamed to getAuthorizationClause()
  - [SQL Server / toXML] able to output for xml clause in the toXML.java demo.

GSP Java version 2.5.8.5(2022-09-12)
  - [API] TTeradataFastExportCmd, TTeradataFastLoadCmd, TTeradataMultiLoadCmd to represents  fast export, fast load and multiload command separately.
  - [API] public EBTEQCmdType TTeradataBTEQCmd.getBteqCmdType() returns Teradta BTEQ command type. 
  - [API] public enum  EBTEQCmdType, represents type of Teradta BTEQ command.
  - [Teradata/BTEQ] fully support BTEQ.


GSP Java version 2.5.8.4(2022-09-11)
  - [Netezza] NOTNULL is set in TExpression's NotToken
  - [Teradata] able to recognized data attribute.
  - [Netezza] fix a bug database and schema name in function of call statement is not recognized correctly.
  - [API] add new class: TSetCatalogStmt represent netezza set catalog. new class: TSetSchemaStmt represents netezza create schema statement.
  - [netezaa] support set catalog/schema statement.
  - [teradata] support ADD NORMALIZE ON duration in ALTER TABLE statement.
  - [hive] support transactional keyword in create table statement.
  - [teradata] support WITH ISOLATED LOADING in delete statement.
  - [teradata] support create function external form.
  - [teradata] support alter/dron constriant statement.
  - [teradata] support create/alter zone statement.


GSP Java version 2.5.8.3(2022-09-09)
  - [dlineage] oracle procedures with same name in different package.
  - [dlineage] fix bug while processing teradata metadata json file.
  
GSP Java version 2.5.8.2(2022-09-09)
  - [Oracle] able to parse model clause includes partition by clause.
  
GSP Java version 2.5.8.1(2022-09-07)
  - [Teradata] support drop range clause in modify column.
  - [Oracle] fix a bug treat HO. as sqlplus command.
  - [Tearadata] fix a bug INS can't be used as column name.
  
GSP Java version 2.5.8.0(2022-09-07)
  - [Teradata, PostgreSQL, MySQL] support Gudu SQLFlow customized statement delimiter: -- sqlflow-delimiter
  
GSP Java version 2.5.7.9(2022-09-06)
  - [general] fix a null exception bug in TParseTreeNode.getCommentBeforeNode()
  
GSP Java version 2.5.7.8(2022-09-04)
  - [Teradata] support drop cast/ordering/TRANSFORM statement.
  - [Teradata] time/timestamp with default is supported in create table.
  - [Netezza] support time with time zone.
  - [Netezza/toXML] able to get distribute on clause/organize on clause in create table statement.
  - [Netezza] support binary varying datatype.
  - [Teradata] support ROW(o_comment VARCHAR(79)) in column definition.
  - [Teradata] support no auto compression clause in column definition.
  - [Teradata] support create hash index.
  - [Teradata] support queue keyword in create table option.
  - [Teradata] support / character in variable: :"Pool / Deal"
  - [Teradata] support variable in into clause.
  - [Teradata] support for cursor clause in select statement.
  - [Teradata] table not in from clause picked up correctly.

GSP Java version 2.5.7.8(2022-09-03)
  - [Teradata] able to parse multiple create procedure in a single file without additional separator.
  - [Teradata] support SELECT c1 AT 'America Eastern'
  - [Netezza] support condition expression in select list.
  - [Netezza] support from external 'path_to_file' SAMEAS table_name USING (...)


GSP Java version 2.5.7.7(2022-09-02)
  - [dlineage] Regression in latest version causing reduction in number of relationships in View from dataflow
  
GSP Java version 2.5.7.6(2022-09-01)
  - [MySQL] fix a bug can't process interval clause when using select if () inside it.
  - [BigQuery] support dash used in Unquoted identifiers
  
GSP Java version 2.5.7.5(2022-08-30)
  - [general] support cte used in insert statement/create table/create view/ cursor statement of all database types.
  
GSP Java version 2.5.7.4(2022-08-29)
  - [azuresql] fix a bug when set vendor to azuresql, block inside procedure not parsed correctly.
  
GSP Java version 2.5.7.3(2022-08-28)
  - [redshift] second arg in user defined function  f_decrypt("string1", 'password')
  - [Teradata/toXML] range_n function output test expression, start expression and end expression.
  - [API] TRangeNFunctionItem represents argument in range_n function.

GSP Java version 2.5.7.3(2022-08-27)
  - [Teradata] support range list in range_n function.
  - [Teradata] support sample clause with table alias after it.
  - [Teradata] support partition by clause in create table statement.
  - [Teradata] support NO PRIMARY AMP in create table statement.
  - [Hive] like/rlike/regexp and not like are correctly recoginzed as pattern_matching_t type.
  - [Hive] support expr list in max() function.
  - [Hive] support ALL keyword in count() function.
  - [general] fix a bug column alias is set to table alias in select list.
  - [Netezza] support if exists clause in drop table statement inside procedure.
  - [Netezza] able to get asc/desc from getSortOrder( ) method.
  - [Hive] support inner/left/right/full join without join condition. (Cartesian products)
  - [Hive] not token and in token is recognized correctly in not in and in expression.
  - [Teradata] fix a bug can't process / operator used in create proceudre when it is the first character of a line.
  - [Hive] CURRENT_TIMESTAMP() , CURRENT_TIMESTAMP,CURRENT_DATE,CURRENT_DATE() all recognized as function correctly.

GSP Java version 2.5.7.2(2022-08-26)
  - [DB2] fix a bug can't parse group by (colum list)

GSP Java version 2.5.7.1(2022-08-25)
  - [toXML] able to output create trigger statement.
  - [DB2] support FOR SBCS DATA clause.
  - [general] TGSqlParser.parseFunctionCall(), TGSqlParser.parseExpression(), TGSqlParser.parseConstant(),TGSqlParser.parseObjectName(),


GSP Java version 2.5.6.9(2022-08-24)
  - [dlineage] fix a bug relationship in function call is not recoginzed correctly.
  
GSP Java version 2.5.6.8(2022-08-23)
  - [PostgreSQL] support qualifeid name in into clause.
  - [SQL Server] able to get parameter from SP_EXECUTESQL N'SET FMTONLY ON SELECT * FROM [dbo].[insertbulk] '
  - [SQL Server] support NULL after FOR ALL_SPARSE_COLUMNS clause in create table.
  - [MySQL] support SERIAL DEFAULT VALUE clause.
  - [MySQL] ZEROFILL and UNSIGNED can be used without any specific order.
  - [MySQL] support char set character name.
  - [MySQL] support char byte data type.
  - [MySQL/MariaDB] support RESTRICT and CASCADE in ALTER TABLE DROP column clause.
  - [MySQL/MariaDB] support CHANGE IF EXISTS clause in ALTER TABLE statement.
  - [REDSHIFT] support timestamp/time with/without time zone.
  - [MySQL/MariaDB] support ADD IF NOT EXISTS column in alter table. (This is specifically a MariaDB feature.)
  - [MySQL/MariaDB] support CREATE OR REPLACE TABLE syntax. (This is a MariaDB-specific feature)
  - [MySQL] support CREATE DATABASE with CHAR SET
  - [PostgreSQL] fix a bug can't process values clause in subquery that used in insert statement.
  - [PostgreSQL] fix a nullexception while processing execute statement.
  - [MySQL] support int data type in cast function.
  - [PostgreSQL] support SHOW TRANSACTION ISOLATION LEVEL
  - [PostgreSQL] support show statement.


GSP Java version 2.5.6.7(2022-08-21)
  - [PostgreSQL] Support <% operator.
  - [toXML] able to output csum arguments.
  - [Netezza] support AND,OR expression in select list.
  - [Netezza] support explain statement.
  - [Netezza] support qualified view name in drop view statement.
  - [Netezza] support ( CTE ) syntax.
  - [API] add new class TAllocateStmt represent Teradata Allocate statement.
  - [Teradata] support allocate statement in procedure.
  - [Teradata] albe to recognize remove statement used standalone and used inside a Procedure.
  - [API] add new class THelpProcedure represents Teradata help procedure statement, TShowProcedure represents Teradata show procedure statement.
  - [Teradata] support help/show procedure statement in procedure.
  - [Teradata] support rewind statement inside procedure.
  - [Teradata] support compile and at time zone clause in alter procedure.
  - [Teradata] support first/next keyword in fetch cursor statement.
  
GSP Java version 2.5.6.6(2022-08-17)
  - [Hive] fix a bug SORT keyword can't be used as column alias.
  
GSP Java version 2.5.6.5(2022-08-16)
  - [snowflake] able to get sql statement inside create procedure body enclosed by '' or $$.
  - [demo/toXML] support oracle database link.
  - [API] new EDbObjectType.dblink, oracle database link.
  
GSP Java version 2.5.6.4(2022-08-09)
  - [Netezza] fully support copy statement.
  
GSP Java version 2.5.6.3(2022-08-08)
  - [API] BigQuery struct(filed values) is treated as a function and represented by EFunctionType.struct_t
  - [API] add TFunctionCall.getFieldValues() and TFunctionCall.getFieldDefs() to represent struct(filed values).
  - [BigQuery] able to get detailed information for struct construction used in select list.
  - [general] able to get module name and parameters from execute statement.
  - [Netezza] support exec function with empty parameter.
  - [Teradata] fix a bug can't recognize INTERVAL DAY(1) TO SECOND(6) as datatype: interval_day_to_second_t
  - [Netezza] support create external table without using clause.
  - [Netezza] support create view in create procedure statement.


GSP Java version 2.5.6.2(2022-08-07)
  - [Netezza] supprot substring with 2 arguments.
  - [Netezza] able to get column definition of external table.
  - [Oracle] support set privileges to clause of alter table.
  - [Oracle] fix a bug can't parse alter table modify COLUMN clause.
  - [Teradata] support column (columnName (datatype)) in COLLECT STATISTICS.
	
GSP Java version 2.5.6.1(2022-08-06)
  - [Netezza] able to fetch precison and scale value for a numeric data type.
  - [Teradata] DATABASE database_name; will be treated as set session DATABASE database_name;
  - [Teradata] set session will be treated as a Teradata query statement instead of BTE Command.
  - [API] TSourceToken.firstTokenOfLine() renamed to isFirstTokenOfLine(), TSourceToken.lastTokenOfLine() renamed to isLastTokenOfLine();

GSP Java version 2.5.6.0(2022-08-05)
  - [general] fix a bug asCanonical() has a sideeffect to toString() method.
  
GSP Java version 2.5.5.9(2022-08-04)
  - [PostgreSQL] fully support comment on statement.
  - [API] rename EDbObjectType.operator_t to EDbObjectType.operator

GSP Java version 2.5.5.9(2022-08-03)
  - [dlineage] fix a bug can't process data lineage correctly in for columns in the select list in a CTAS query.
  - [Hive] fix a bug treat DATE keyword as function. It should be a column name.

GSP Java version 2.5.5.9(2022-08-02)
  - [Oracle] fix a bug can't process bind variable in fetch clause.

GSP Java version 2.5.5.8(2022-07-31)
  - [Tearadata] able to parse drop zone statement.
  - [Tearadata] able to parse drop profile statement.
  - [Tearadata] support if not exists clause in create table.
  - [Tearadata] support create error table.
  - [Teradata] support local order by clause.
  - [Teradata] support LEFT SINGLE QUOTATION MARK U+2018.
  - [Teradata] fix a bug can't parse at source time zone clause of DATE/TIME/TIMESTAMP constant.
  - [Teradata] fix a bug can't parse at time zone clause of DATE/TIME/TIMESTAMP constant.


GSP Java version 2.5.5.7(2022-07-29)
  - [PostgerSQL] support select into without specify any columns.
  - [PostgreSQL] fix a bug can't parse ESCAPE clause.
  - [PostgreSQL] support >>>, <<<, -|- OPERATOR.
  - [PostgreSQL] support ~>=~, ~<=~, ~>~ and ~<~ are text pattern
  

GSP Java version 2.5.5.6(2022-07-25)
  - [Netezza] support alter table in create procedure statement.
  - [BigQuery] fix a bug can't parse create function and other SQL statement in a same query file.

GSP Java version 2.5.5.5(2022-07-24)
  - [Teradata] Able to parse SS Database database_name ;
  - [Netezza] support update mode in lock table statement.
  - [toXml] enhanced to process teradata data type conversion.
  - [Teradata] support add_months function used in IN condition.


GSP Java version 2.5.5.4(2022-07-22)
  - [API] add new method: TCustomSqlStatement public String asCanonical(), 
	this method return a canonical form of a SQL statement in plan text.
	1. remove all comment inside SQL query.
	2. remove redundant parenthesis at the begin/end of a select statement.
	3. replace all number in where clause with 999 constant
	4. replace all string constant in where clause with 'placeholder_str'
	5. all number elements in a list such as (1,2,3,4) will be change to a single element (999)
	6. all string elements in a list such as ('a','b','c','d') will be change to a single element ('placeholder_str')


GSP Java version 2.5.5.3(2022-07-19)
  - [SQL Server] support merge output clause in data lineage analyssis.
  - [Dlineage] fix an OutOfMemoryError while process nested CTE queries.

GSP Java version 2.5.5.2(2022-07-18)
  - [DB2] check constraint null exception error.
  
GSP Java version 2.5.5.1(2022-07-16)
  - [Netezza/PostgreSQL] support qualified table like this: STAGING..STG_MORSTATS in netezza stored procedure.
  - [Netezza] support ANY keyword in varying().
  - [Hive] able to get not null constraint.
  - [Netezza] support GROUPING SETS clause.
  - [Teradata] support between condition used in check constraint without the CHECK keyword.
  - [Teradata] support NORMALIZE ON columnName in create table statement.
  - [Hive] support qualified table in truncate statement.
  - [Teradata] fix a bug can't parse NO RANGE OR UNKNOWN in range_n function.
  - [demo/toXML] support teradata index definition in create table statement.
  - [API] TCreateTableSqlStatement, public TPTNodeList getIndexDefinitions() change to 
  - [MySQL] support CTE query in declare statement.


GSP Java version 2.5.5.0(2022-07-12)
  - [MySQL] support algorithim and lock clause in alter table.
  - [Teradata] bug fix for grant statement.
  - [demo/xmlVisitor] output the with_return_only information in declare cursor statement.
  - [API] add new methond TMssqlDeclare.isWithReturnOnly() to check with return only clause.


GSP Java version 2.5.4.9(2022-07-10)
  - [Teradata] support case statement.
  - [Teradata] support execute immediate statement.
  - [Teradata] support iterate statement in stored procedure.
  - [Teradata] fully support signal statement.
  - [API] public enum EHandlerForType {sqlstate, conditionName, SQLEXCEPTION, SQLWARNING,NOTFOUND}; inside public class THandlerForCondition 
  - [API] new THandlerForCondition class represent for exception, completion, or user-defined conditions of teradata DECLARE { CONTINUE | EXIT } HANDLER FOR.
  - [Teradata] fetch all information from declare type "handlers", including type of handler, exception, completion, or user-defined conditions, and handler action statement.
  

GSP Java version 2.5.4.9(2022-07-09)
  - [teradata] fully support loop, leave statement in create procedure.
  - [sql server] $action used in output clause of merge statement is treated as a constant: EDbObjectType.constant
  - [demo/xmlVisitor] support output clause in merge statement.

GSP Java version 2.5.4.8(2022-07-08)
  - [data lineage] fix a bug can't process cursor binding in Oracle pl/sql.
  - [Teradata] support unicode delimited character literals.
  - [Teradata] fix a bug can't parse the SUBSTRING/SUBST function has a third argument that is optional
  - [general] fix a bug can't recogine unary_minus_t, unary_plus_t expression type.


GSP Java version 2.5.4.7(2022-06-30)
  - [postgresql] fix a bug function table alias clause not set the end token correctly.

GSP Java version 2.5.4.6(2022-06-28)
  - [postgresql] values clause in from clause change from ETableSource.rowList to ETableSource.subquery
  ETableSource.rowList still used in other database y file such as sql server.

GSP Java version 2.5.4.5(2022-06-09)
  - [dlineage] fix a bug column in join condition treated as direct dataflow.


GSP Java version 2.5.4.2(2022-06-04)
  - [postgresql, greenplum] support filter function in aggregate function.

+ GSP Java version 2.5.4.1(2022-05-31)
  - [bigquery] fix a bug can't process string like "\""

+ GSP Java version 2.5.4.0(2022-05-30)
  - [sql server] fix a bug in TMssqlSQLDataSource

+ GSP Java version 2.5.3.9(2022-05-29)
  - [redshift] bug fix for listagg function.

+ GSP Java version 2.5.3.8(2022-05-25)
  - [dlineage] process id of an insert statement in stored procedure is created and link to the relationship.
  - [dlineage] call relationship appears when /s option is used.
  
+ GSP Java version 2.5.3.7(2022-05-25)
  - [API] add new class: TSingletonParser.

+ GSP Java version 2.5.3.6(2022-05-22)
  - [API] new constructor for TObjectName: TObjectName(EDbVendor dbVendor), TObjectName(EDbVendor dbVendor,EDbObjectType dbObjectType){
  - [general] add a singleton method in TGsqlParser to get a static parser.
  - [general] TParseTreeNode.setText(), setString2() use the singleton parser to reduce the memory used by parser.
  
+ GSP Java version 2.5.3.5(2022-05-19)
  - [Oracle] able to recognize cursor variable used in the insert statement.


+ GSP Java version 2.5.3.5(2022-05-18)
  - [DB2] support UNNEST clause.
  - [DB2] fix a bug EXISTS keyword can't be used as column name.
  - [DB2] support current member.
  

+ GSP Java version 2.5.3.4(2022-05-17)
  - [bigquery] fix a bug backtick multiple identifier name such as `schema1.table1` can't be resolved correctly.
  
+ GSP Java version 2.5.3.3(2022-05-16)
  - [general] fix a bug: TParseErrorSqlNode.getCommentBeforeNode() can't return multiple comment before a SQL statement.

+ GSP Java version 2.5.3.2(2022-05-12)
  - [dlieange] support analysis of the procedure call dependency.
  
+ GSP Java version 2.5.3.1(2022-05-09)
  - [teradata] support data definition and data conversion phrase.
  
+ GSP Java version 2.5.3.0(2022-05-04)
  - [greenplum] support create external table statement.
  
+ GSP Java version 2.5.2.9(2022-05-01)
  - [demo/searchCallInSP] demostrate how to find function call in stored procedure.

+ GSP Java version 2.5.2.9(2022-04-28)
  - [DB2] support L, R specifier in trim function.
  - [BigQuery] support APPROX_QUANTILES,APPROX_TOP_COUNT,APPROX_TOP_SUM function.

+ GSP Java version 2.5.2.9(2022-04-27)
  - [PostgreSQL] support UESCAPE clause.
  - [redshift] support fetch in statement like fetch 1000 in "SQL_CUR3"; 
  - [redshift] fix a bug can't recognize create local temp table statement.


+ GSP Java version 2.5.2.8(2022-04-20)
  - [PostgreSQL] fix a bug when [characters] is ommited in the trim function.
  
+ GSP Java version 2.5.2.7(2022-04-15)
  - [SQL Server] fix a bug can't parse alter table drop column with keyword COLUMN appears after drop.
  - [azure] support create materialized view statement.
  - [azure] support copy into statement.
  - [API] TCopyIntoStmt renamed to TSnowflakeCopyIntoStmt
  - [sql server] fix a bug can't parse opendatasource followed by database and schema name.
  

+ GSP Java version 2.5.2.7(2022-04-14)
  - [dlineage] fix a bug can't process star column in multiple nested CTE.
  - [dlineage] fix a bug that create non-deterministic lineage result.

+ GSP Java version 2.5.2.6(2022-04-14)
  - [azure/sql server] support create credential, create database scoped credential statement.
  - [API] move TCreateCredentialStmt from package gudusoft.gsqlparser.stmt.hana to package gudusoft.gsqlparser.stmt;
  - [azure/sql server] able to get options from create external datasource statement.
  - [azure/sql server] support create master key statement.

+ GSP Java version 2.5.2.6(2022-04-13)
  - [azure/sql server] support create external file format.
  - [API] rename EHiveStoredFileFormat to EFileFormat
  - [API] move EHiveStoredFileFormat from package gudusoft.gsqlparser.nodes.hive; to package gudusoft.gsqlparser;

+ GSP Java version 2.5.2.6(2022-04-11)
  - [dlieange] columns used in window definition clause treated as in-direct relation in generated data lineage.

+ GSP Java version 2.5.2.5(2022-04-10)
  - [redshift] support create external schema.
  - [API] TRedshiftCreateSchema replaced by TCreateSchemaSqlStatement

+ GSP Java version 2.5.2.5(2022-04-09)
  - [redshift] support create external table, alter table add partition clause.
  - [API] change from  private TPTNodeList  partitionSpecList; to 

+ GSP Java version 2.5.2.4(2022-04-08)
  - [Teradata] support PERIOD FOR derived period column.
  
  - [MySQL] fix a nullexception bug while process rollback/commit statement inside procedure.

+ GSP Java version 2.5.2.4(2022-04-07)
  - [dlineage] able to link value column to unnest() clause without alias.

+ GSP Java version 2.5.2.3(2022-04-07)
  - [bigquery] fix a bug can't link value pseudo column to unnest() clause.
					
+ GSP Java version 2.5.2.2(2022-04-06)
  - [snowflake] support snowflake scripting and stored procedure in language sql.

+ GSP Java version 2.5.2.2(2022-04-04)
  - [API] ESqlStatementType.sstMssqlbreak rename to ESqlStatementType.sstbreak
  - [API] TMssqlBreak move from package gudusoft.gsqlparser.stmt.mssql to package gudusoft.gsqlparser.stmt, and rename to TBreakStmt
  - {API} rename ESqlStatementType.sst_block_with_label to ESqlStatementType.sst_plsql_block
  - [snowflake] able to recognize anonymous block declare/begin/end, begin/end.
  

+ GSP Java version 2.5.2.1(2022-04-03)
  - [snowflake/API] add TCreateStageStmt.getNameSpace() 


+ GSP Java version 2.5.2.0(2022-04-02)
  - [Hive] DATE function is recognized correctly instead of treat it as a constant.

+ GSP Java version 2.5.2.0(2022-04-01)
  - [Hive] fix a bug can't parse multiple cube() used in group by clause.
  - [Teradata] fix bug can't parse period(time) datatype.
  - [Hive] supprot at time zone clause.
  - [dlineage] fix a bug column doesn't matched correctly with the subquery that without alias in insert as select statement

+ GSP Java version 2.5.1.9(2022-03-31)
  - [snowflake] able to get detailed information of internal/external stage and location by using TStageLocation class.
  - [dlineage] fix a bug can't detect lineage in set clause of update statement when variable is used.
  - [dlineage] fix a bug can't process sql server column aliased using equal = sign

+ GSP Java version 2.5.1.8(2022-03-29)
  - [dlineage] add procedureId in the process object which make it easy to link a process to a parent procedure.

+ GSP Java version 2.5.1.7(2022-03-29)
  - [PostgreSQL] support start transaction.

+ GSP Java version 2.5.1.7(2022-03-28)
  - [MySQL] fix a bug can't parse nested begin/end block.
  - [MySQL] support resignal statement.
  - [MySQL] fix a bug can't parse GET DIAGNOSTICS inside create procedure statement.
  - [API] TGetDiagnosticsStmt is replaced by TGetDiagStmt
  - [API] move TGetDiagStmt from gudusoft.gsqlparser.stmt.postgresql to gudusoft.gsqlparser.stmt
  - [MySQL] fix a bug can't parse empty block with a label.
  - [MySQL/toXML] support while statement.
  - [MySQL/toXML] able to get label name of block/loop/while statement.
  - [MySQL/API] TMySQLLoopStmt is replaced by TLoopStmt
  - [MySQL] able to get all elements of declare condition statement.
  - [API/DB2] TDb2CreateProcedure is replaced by TCreateProcedureStmt.
  - [MySQL/DB2] Able to fetch all elements of signal statement.

+ GSP Java version 2.5.1.6(2022-03-26)
  - [SQL Server] support nested AT TIME ZONE clause in select list.

+ GSP Java version 2.5.1.5(2022-03-24)
  - [BigQuery] fix a bug can't parse CTE used in create view statement.
  - [snowflake] support force keyword used in create or replace view.
  - [vertica] support create procedure.

+ GSP Java version 2.5.1.5(2022-03-23)
  - [Oracle] support PERCENTILE_CONT/PERCENTILE_DISC function.
  - [Oracle] fix a bug can't process ON COMMIT DELETE ROWS in create table statement.
  - [Oracle] support create role statement.
  - [Teradata] support create role statement.
  - [Teradata] support drop external role
  - [Teradata] support update of name clause in create trigger.
  - [Teradata] support with no check option in referene clause.
		
+ GSP Java version 2.5.1.5(2022-03-22)
  - [snowflake/toScript] fix a bug can't output nulls first/last correctly.


+ GSP Java version 2.5.1.4(2022-03-21)
  - [toXML] fix a bug add the implicit schema name to object name.
  - [SQL Server] support ENABLE CHANGE_TRACKING in alter table.
  - [SQL Server] support ENCRYPTED WITH clause.
  - [SQL Server] support filestream in create table statement.
  - [SQL Server] support add sparse in alter column clause of alter table statement.
  - [SQL Server] fix a bug can't parse range keyword in window function.
  - [SQL Server] support GENERATED ALWAYS AS ROW clause in create table statement.
  - [SQL Server] support PERIOD FOR SYSTEM_TIME clause in create table statement.
  - [redshift] support backup yes/no clause in create table statement.
  - [redshift] support create local table statement.


+ GSP Java version 2.5.1.3(2022-03-20)
  - [snowflake] fix a StackOverflowError bug when duplicated cte name is used.
  - [BigQuery] fix a bug can't parse create view statement when column is specified.
  - [BigQuery] support qualify clause.
  - [BigQuery] support TABLESAMPLE operator
		

+ GSP Java version 2.5.1.3(2022-03-19)
  - [Redshift] fix a bug can't parse if not exists clause in create table statement.
  - [BigQuery] support CREATE OR REPLACE TEMP TABLE statement.
  - [SQL Server] support create external table.
  - [SQL Server] support set clause in alter table statement.
  - [toXML] support like clause in create table statement.
  - [Oracle] support cascade option in truncate table.
  - [MySQL] support nested begin/end block in create procedure.
  - [MySQL/API] support leave statement, using TLeaveStmt.
  - [MySQL] fix a bug can't parse nested multi-line comments.
  - [toXML] get if exists, temporary clause in drop table.
  - [toXML] support Prepare stmt,DEALLOCATE PREPARE
  - [API] TMySQLDeclare is replaced by TMssqlDeclare, TMySQLOpenCursor is replaced by TOpenStmt, TMySQLFetchCursor is replaced by TFetchStmt


+ GSP Java version 2.5.1.2(2022-03-18)
  - [MySQL] able to get detailed elements form DECLARE HANDLER statement inside create function.
  - [API] TMySQLBlock is changed to TCommonBlock
  - [API] TMySQLSet is changed to TSetStmt
  - [API] TMySQLCreateFunction is changed to TCreateFunctionStmt
  - [API] TMySQLReturn is changed to TReturnStmt
  - [API] TMySQLCallStmt is changed to TCallStatement
  - [MySQL]  able to get statement inside create function.
  - [MySQL] able to get detailed information of CALL statement inside procedure.
  - [BigQuery] support CREATE MATERIALIZED VIEW statement. 

+ GSP Java version 2.5.1.1(2022-03-17)
  - [BigQuery] support pivot/unpivot clause.
  - [Snowflake] support not expression in select list.
  
+ GSP Java version 2.5.1.0(2022-03-13)
  - [PostgreSQL] able to get own name from alter function.

+ GSP Java version 2.5.0.9(2022-03-12)
  - [PostgreSQL] support set search path statement.
  - [API] and new enum type: TCursorDeclStmt.CursorKind { declaration, specification, body, typeDefinition};
  - [toXML] support cursor specification.

+ GSP Java version 2.5.0.9(2022-03-05)
  - [PostgreSQL] support cube/rollup/empty group setting in group by clause.
  - [BigQuery] support tablesample clause.
  - [BigQuery] support OFFSET, array_subscript_specifier 
  - [PostgreSQL] support ROWS FROM clause of function table.
  - [PostgreSQL] support WITH ORDINALITY after function table.
  - [PostgreSQL] support xmltable.
  - [PostgreSQL] support xml_root_version and xml_root_standalone clause in XMLROOT.
  - [PostgreSQL] support xmlattributes function, fix bug can't parse xmlparse() function.


+ GSP Java version 2.5.0.8(2022-03-04)
  - [Redshift] support CALL statement.
  - [PostgreSQL] CALL statement is supported by PostgreSQL since version11. It supported by GSP now.
  - [snowflake] fix a bug can't parse three parts location name.

+ GSP Java version 2.5.0.8(2022-03-03)
  - [REDSHIFT] support iam_role clause.
  - [REDSHIFT] support FORMAT AS PARQUET.


+ GSP Java version 2.5.0.7(2022-03-03)
  - [xmlVisitor] able to get cursor informaiton from MySQL declare statement.
  - [API] use TMssqlDeclare to represents MySQL/BigQuery declare statement.

+ GSP Java version 2.5.0.7(2022-03-02)
  - [snowflake] fix a bug can't parse POSITION used as column name.
  

+ GSP Java version 2.5.0.7(2022-03-01)
  - [PostgreSQL] fix a bug can't parse value clause used in IN condition.
  - [PostgreSQL] support local keyword in set statement.
  - [PostgreSQL] fix a bug can't parse execute statement not ended by a semicolon.


+ GSP Java version 2.5.0.6(2022-02-28)
  - [general] fix a bug can't detect column in alias like (subquery  AS x (numbers, animals)

+ GSP Java version 2.5.0.6(2022-02-25)
  - [presto] able to detect column used in unnest clause.
  
+ GSP Java version 2.5.0.5(2022-02-25)
  - [lineage] improve to support star column related to subquery.

+ GSP Java version 2.5.0.3(2022-02-22)
  - [snowflake] fix a bug can't parse constant '$dummy$'.
  - [snowflake] fix a bug can't parse multiple value comparison like where (1,2) = (3,4)


+ GSP Java version 2.5.0.3(2022-02-21)
  - [scriptWriter] fix a bug can't output OPTION (MERGE UNION) in select statement.

+ GSP Java version 2.5.0.2(2022-02-20)
  - [xml visitor] export select in TMssqlReturn statement.

+ GSP Java version 2.5.0.2(2022-02-16)
  - [PostgreSQL] fix a nullexception bug when process create table as TABLE newTable statement.
  - [MySQL] support default charset in create database.
  - [MySQL] support rename column clause in alter table.

+ GSP Java version 2.5.0.1(2022-02-10)
  - [dataflowanalyzer] /s option ignore all cursor and variable inside the Oracle PLSQL.

+ GSP Java version 2.3.9.9(2022-02-10)
  - [Hive/API] table alias in lateral view will be added to the TCustomSqlStatement.tables properties after parsing, and column alias  will be linked to the table alias.
  - [Hive] fix a bug can't recognize columns from lateral view.
			
		
+ GSP Java version 2.3.9.8(2022-02-08)
  - [MySQL] able to process delimiter character after a normal SQL statement.
  - [MySQL] support begin/end block in DECLARE EXIT HANDLER FOR NOT FOUND,SQLEXCEPTION
  - [oracle] fix a nullexception bug while processing cursor in package.

+ GSP Java version 2.3.9.7(2022-02-03)
  - [PostgreSQL] fix a bug can't parse qualified collation name.
  - [Postgresql, BigQuery] fix a bug can't parse nested CTE.
  - [Bigquery] support function call used in UNSET clause.
  - [Teradata] able to parse create view statement inside create macro.


+ GSP Java version 2.3.9.6(2022-02-02)
  - [DB2] support offset clause in limit clause.
  - [API] able to get comment before a SQL statement/node using : TParseTreeNode.getCommentBeforeNode()
  - [lineage] support Oracle rowtype

+ GSP Java version 2.3.9.5(2022-01-19)
  - [Hive] fix a bug can't parse DATE function.
  - [Hive] fix a bug can't parse LATERAL VIEW after join 
  
+ GSP Java version 2.3.9.4(2022-01-14)
  - [general] performance improvement by remove ArrayList.indexOf(). 

+ GSP Java version 2.3.9.3(2022-01-11)
  - [BigQuery] fix a bug can't parse week() function used in extract.
  - [general] delay the creation of TResultColumnList.sortedResultColumns.
  - [API] TMySQLCreateProcedure is replaced by TCreateProcedureStmt 
			

+ GSP Java version 2.3.9.2(2022-01-04)
  - [general] improve performance when parsing select list with hundreds of columns in select list.

+ GSP Java version 2.3.9.1(2021-12-31)
  - [PostgreSQL] fix a bug can't process escape char in quote_literal(E'O\'Reilly'); and 'OMqYV0rt"f\''x9v6>'
  - [Redshift] support create table like clause.
  - [Redshift] support recursive keyword in common table expression.
  - [Informix] support rollback statement.
  - [Informix] fix a bug can't parse select statement when INFO is used as table name in from clause.
  - [DB2] support for update with rs clause.

+ GSP Java version 2.3.9.1(2021-12-30)
  - [general] fix a bug treat table alias as a table in delete statement: DELETE AA FROM Table1 ACP INNER JOIN Table2 AA ON AA.EventKey = ACP.EventKey WHERE ACP.MarketDate = @MarketDate

+ GSP Java version 2.3.9.0(2021-12-30)
  - [gettablecolumn] fix a bug can't link qualified column in where clause to table in the up level correctly.
  

+ GSP Java version 2.3.9.0(2021-12-29)
  - [Teradata] support on commit preserve rows cache noparallel in create table as select.
  - [Teradata] support use parenthesis with sample clause.
  - [Snowflake] fix a bug that include ; in the path name.
  - [PostgreSQL] fix a bug can't parse CSV option in copy from statement.
  - [PostgerSQL] fix a bug can't process '\' string character.


+ GSP Java version 2.3.8.9(2021-12-27)
  - [dlieange] fix a bug star column not processed correctly related to union operator.

+ GSP Java version 2.3.8.8(2021-12-24)
  - [snowflake] support partition by clause in copy into from table 
  - [snowflake] fix a bug can't parse copy into table with specify a table in from clause.


+ GSP Java version 2.3.8.7(2021-12-23)
  - [Snowflake] able to get table and location from copy into (location) statement.

+ GSP Java version 2.3.8.6(2021-12-17)
  - [Impala] fix a bug can't parse select statement with set operator in insert statement.
  - [Impala] support expression used in partitoin clause.


+ GSP Java version 2.3.8.5(2021-12-16)
  - [Bigquery] fix a bug can't parse insert row clause in merge statement.
  - [PostgreSQL] fix a bug can't process column alias without AS keyword. SCHEMA_OWNER 'Schema owner',


+ GSP Java version 2.3.8.3(2021-12-15)
  - [general] able to link star column to the underlying columns, using TObjectName.getColumnsLinkedToStarColumn() 

+ GSP Java version 2.3.8.1(2021-12-13)
  - [API] enable TResultColumnList.acceptChildren() method 
  - [Hive] fix a bug can't parse `` character inside `identifier`.
  - [DB2] fix a bug cna't parse for update with clause in select statement.
  - [Informix] able to recognize database name used in syntax like: sysadmin:a.b
  - [Informix] support create database.
  - [Informix] support drop database statement.
  - [general] TObjectName.getDatabaseString() and getSchemaString() only return database or schema in qualified part.


+ GSP Java version 2.3.8.0(2021-12-09)
  - [redshift] fix a nullexception bug when only select list is available in select statement.
  - [vertica] support rollup clause.
  - [redshift] support convert function.
  - [redshift] support including defaults in create table.
  - [redshift] support ISNULL, NOTNULL
  - [redshift] support external keyword in create table. 
  - [redshift] support and/or condition in select list.


+ GSP Java version 2.3.7.9(2021-12-08)
  - [redshift] support with hold clause in declare cursor.
  - [redshift] support MAX constant in nvarchar,varchar datatype.
  
+ GSP Java version 2.3.7.8(2021-12-07)
  - [redshift] support create materialized view.
  - [Athena] fix a bug TIEMSTAMP can't be used as column name.
  - [Athena] fix a bug can't handle contant like DATE '2019-10-01'
  - [Hive] support expression used in partitoin clause.
  - [API/Lineage] fdd change to direct, fdr change to indirect in the xml/json output of the lineage generated by dataflowanalyzer tool.
  - [API/Lineage] tag: relation changed to dataflow in the xml/json output of the lineage generated by dataflowanalyzer tool.
  - [API/Lineage] PseudoRows change to RelationRows in the xml/json output of the lineage generated by dataflowanalyzer tool.


+ GSP Java version 2.3.7.7(2021-12-06)
  - [SQL Server] fix a bug can't parse assignment like this: ch=-@fun

+ GSP Java version 2.3.7.6(2021-12-03)
  - [redshift] fix a bug can't parse trim function use comma as separator in arguments.

+ GSP Java version 2.3.7.5(2021-12-01)
  - [Hive] TABLE keyword can be ommitted in the insert overwrite statement.
  - [Hive] fix a bug can't parse nested CTE.

+ GSP Java version 2.3.7.3(2021-11-26)
  - [PostgreSQL] fix a bug can't parse When RECURSIVE keyword used in the CTE of delete/insert/update statement.
  - [general]  TCTEList add support for acceptChildren();
  - [SQL Server] fix a bug can't parse variable used in BEGIN CONVERSATION statement.
  - [SQL Server] fix a bug can't parse WITH RESULT SETS in exec statement.


+ GSP Java version 2.3.7.3(2021-11-25)
  - [SQL Server] fix a bug can't parse $-6.6606
  - [DB2] fix a bug can't parse varchar used in cast function.
  - [Oracle] supprot no inmemory clause in CREATE MATERIALIZED VIEW.
  

+ GSP Java version 2.3.7.3(2021-11-24)
  - [Presto] fix a nullexception bug when parse values clause.
  - [Presto] fix a bug can't parse date(expr).

+ GSP Java version 2.3.7.2(2021-11-23)
  - [MySQL] In a two part qualified name objectname, the first part is database name instead of treat it as schema name.

+ GSP Java version 2.3.7.2(2021-11-23)
  - [dlieange] support to the left-most table lineage.
  
+ GSP Java version 2.3.7.1(2021-11-16)
  - [Athena] support USING EXTERNAL FUNCTION clause.
  - [Athena] support function used in unnest clause.
  - [Athena] support try_cast function.
  
+ GSP Java version 2.3.7.0(2021-11-12)
  - [general] fix a bug introduced by  TGSqlParser.charSet when processing multi-sql files that including utf encoding.
  - [Athena] fix a bug can't parse CTE in create table.

+ GSP Java version 2.3.6.9(2021-11-11)
  - [API] When TTable.getTableType() = ETableSource.rowList , please use TTable.getValueClause() to get the row constructor.
  - [API] TTabe.getRowList() replaced by TTabe.getValueClause() which represents the values clause.
  - [API] When a TTable object represents values(1,2,3), then TTable.getTableType() = ETableSource.rowList 

+ GSP Java version 2.3.6.8(2021-11-09)
  - [Hive] support optional keyword: PURGE in drop table statement.
  - [Hive] fix a bug can't parse comma listed expression in set statement.


+ GSP Java version 2.3.6.7(2021-11-08)
  - [Teradata] default expression is moved from constraint to column definition.
  - [Oracle] able to recognize MODEL DIMENSION BY.
  - [Oracle] support partition clause after subquery in from clause.
  - [dlieange] fix a bug can't detect column in subquery includes set operator.
  - [Teradata] fix a bug can't parse period column in insert statement.
  - [Teradata] able to get variable and value from set statement.


+ GSP Java version 2.3.6.6(2021-11-05)
  - [Hana] fix a nullexception in assignment.
  - [Hive] support date keyword used in select list.
  - [general] fix a bug can't handle UTF-8 NO-BREAK SPACE(C2 A0) used in SQL file.
  - [API] add new method: TGSqlParser.setSqlCharset(),  able to set the charset of input SQL file before parsing.

+ GSP Java version 2.3.6.5(2021-11-03)
  - [general] bug fix for default database, schema processing.

+ GSP Java version 2.3.6.3(2021-11-03)
  - [dataflowanalyzer] if a table/view name is not qualifed with database/schema, then, get the database/schema from the context.
  - [DataflowAnalyzer] add /showImplicitSchema option to show the default database and schema of table/view name without explicit specify the database/schema name.
  - [Oracle] mark effect type of table used in insert all statement as ETableEffectType.tetInsert

+ GSP Java version 2.3.6.2(2021-11-02)
  - [snowflake] fix a bug can't recognize database name in syntax like: use schema db1.schema2;
  - [general] fix a bug can't return default database of TObjectName.getImplictDatabaseString().
  - [snowflake] fix a bug can't recognize concatenation operator || 
  
+ GSP Java version 2.3.6.1(2021-11-01)
  - [sql server] sql server doesn't support lateral column.
  - [API] TObjectName.getImplictSchemaString() returns schema name of table/view from database metadata if this table/view name is not qualifed. 

+ GSP Java version 2.3.5.9(2021-10-26)
  - [API] add new method: TObjectName.isImplicitSchema(), TObjectName.isImplicitDatabase(), able to fetch implict schema or database of a schema object
  which is not available in a qualifed schema object name like db.schema.tablename.


+ GSP Java version 2.3.5.8(2021-10-21)
  - [Teradata] fix a bug can't recognize NORMALIZE clause.
  - [SQL Srever] support rebuild clause in alter table.
  - [Teradata] support multiple with/by clause.
  - [Teradata] support AS VALIDTIME, AS TRANSACTIONTIME clause in column definition.
  - [Bigquery] fix a bug can't parse [schema.table].
  - [SQL Server] support with xmlnamespaces clause before insert/delete/update statement.


+ GSP Java version 2.3.5.7(2021-10-20)
  - [SQL Server] support # character as table alias.
  - [SQL Server] support DECLARE @filterXml XML(xsd_FilterSet)
  - [SQL Server] support with execute as owner in create trigger.
  - [SQL Server] fix a bug can't parse multiple condition in create trigger if update clause.
  - [Teradata] fix a bug can't handle DECLARE EXIT HANDLER FOR.
  - [Teradata] able to pickup signal statement in create procedure.
  - [API] TDb2SignalStmt rename to T2SignalStmt
  - [API] TDb2SignalStmt move from package gudusoft.gsqlparser.stmt.db2 to package gudusoft.gsqlparser.stmt


+ GSP Java version 2.3.5.6(2021-10-15)
  - [API] add new method which return statement separator for different databases. TSQLEnv public static String getStmtSeparatorChar(EDbVendor dbVendor)
  - [bigquery] support [] as quoted identifier delimitedChar.
  - [snowflake,dlineage] fix null exception of insert statement.
  
+ GSP Java version 2.3.5.5(2021-10-12)
  - [Bigquery] able to recognize set statement.
  - [Bigquery] fix a bug can't parse for system_time clause.
  - [Bigquery] able to detect and parse truncate table.
  
+ GSP Java version 2.3.5.3(2021-10-09)
  - [snowflake] able to get clone object from create database/schema/table clone.
  
+ GSP Java version 2.3.5.2(2021-10-08)
  - [API] add TCreateSchemaSqlStatement.getCloneSourceSchema() return clone schema in snowflake create schema statement.
  - [snowflake] fix a bug can't link column to pivot table correctly.
  - [snowflake] fix a bug can't parse name like: @demo.PRESENCE.PRESENCE_S3_STAGE
  - [snowflake] fix a bug can't recoginze CREATE LOCAL TEMPORARY TABLE. 

+ GSP Java version 2.3.5.1(2021-09-30)
  - [Sybase] support plan clause in select statement.
  - [Impala] support qualifed function call.
  - [API] add new static method: public static String TSQLEnv.delimitedChar(EDbVendor dbVendor), return delimited char of different database vendors.


+ GSP Java version 2.3.5.0(2021-09-29)
  - [AWS Athena] fully support AWS Athena.
  - [API] EDataType.structType_t replaced by struct_t


+ GSP Java version 2.3.4.6(2021-09-28)
  - [API] rename THiveMetastoreCheckSqlNode to TMSCKSqlNode
  - [API] move THiveMetastoreCheckSqlNode from gudusoft.gsqlparser.nodes.hive to gudusoft.gsqlparser.nodes
  - [API] rename THiveMetaStoreCheck to TMSCKStmt
  - [API] move THiveMetaStoreCheck from gudusoft.gsqlparser.stmt.hive to gudusoft.gsqlparser.stmt
  - [API] move TUnloadStmt from  gudusoft.gsqlparser.stmt.hana to gudusoft.gsqlparser.stmt
  
+ GSP Java version 2.3.4.5(2021-09-27)
  - [presto] fully support of presto sql.

+ GSP Java version 2.3.4.3(2021-09-26)
  - [API] TUnnestClause move from pacakge gudusoft.gsqlparser.nodes.bigquery to package gudusoft.gsqlparser.nodes

+ GSP Java version 2.3.4.2(2021-09-22)
  - [Data lineage] able to analzye data lineage in xmlagg function.
  - [Data lineage] treat oracle sequence as constant in data lineage output.
  - [API] replace sstpostgresqlValues with ESqlStatementType.sstValues
  - [API] add ESqlStatementType.sstValues
  - [API] sstredshiftStartTransaction replaced by sstStartTransaction
  - [API] Rename TRedshiftStartTransaction to TStartTransactionStmt
  - [API] TRedshiftStartTransaction move from gudusoft.gsqlparser.stmt.redshift to  gudusoft.gsqlparser.stmt
  - [API] ESqlStatementType.sstPrepare replaced by ESqlStatementType.sstprepare

+ GSP Java version 2.3.4.1(2021-09-21)
  - [general] fix testcase failure due to introduce of new db vendor.

+ GSP Java version 2.3.4.0(2021-09-16)
  - [gettablecolumn] able to get columns inside xmlAgg function.
  - [Hive] multiple column alias in lateral view not processed correctly.
  - [Teradata] fix a bug can't process create view statement when number keyword is used in the column list.
  - [PostgreSQL] fix a bug can't parse single select statement in function when it ended with the END keyword of the select statement.
  - [data lineage] support postgres select into multiple variable.
  - [sql formatter] fix a bug can't handle single line comment.
 
 
+ GSP Java version 2.3.3.9(2021-09-15)
  - [Teradata] remove variable like &{name} before parsing.
  - [data lineage] into clause support multiple variables.
  - [data lineage] support plsql variable assignments.
  - [data lineage] Alias column is not going to target column.
  
+ GSP Java version 2.3.3.8(2021-09-10)
  - [Teradata] fix a bug can't parse BLOCKCOMPRESSION in create set table.
  - [Oracle] able to parse exchange partition/subpartition in alter table.
  - [Oracle, PL/SQL] support create procedure without body.
  - [Oracle] fix a bug can't pase as NULL in UNPIVOT
  - [API] rename TDb2ForStmt to TForStmt
  - [API] move TDb2ForStmt from package gudusoft.gsqlparser.stmt.db2; to package gudusoft.gsqlparser.stmt;


+ GSP Java version 2.3.3.7(2021-09-08)
  - [DB2] support jdbc escape syntax for fn
  - [PostgreSQL] able to detect lineage inside execute statement with a format function.
  - [API] TExecutePreparedStatement replaced by TExecuteSqlStatement
  - [API] sstpostgresqlExecute replaced with  sstExecute
  - [API] move TExecuteSqlStatement from package gudusoft.gsqlparser.stmt.postgresql; to package gudusoft.gsqlparser.stmt;


+ GSP Java version 2.3.3.7(2021-09-07)
  - [Oracle] fix a bug can't recognize create table statement while CTE is used.

+ GSP Java version 2.3.3.6(2021-09-05)
  - [Hive] support (string constant) in case/when/then expression.
  - [snowflake/lineage] fix 'not found in subquery' bug of lateral column.
  
+ GSP Java version 2.3.3.5(2021-09-02)
  - [BigQuery] fix a bug can't parse date constant.

+ GSP Java version 2.3.3.3(2021-08-31)
  - [DB2] able to recognize drop table/index statement.
  - [MySQL,DB2] able to recognize drop view statement.


+ GSP Java version 2.3.3.2(2021-08-24)
  - [BigQuery] fix a bug time can't be used as a function name.
  - [BigQuery] support commit/rollback statement.
  - [BigQuery] support execute immediate.
  - [BigQuery] support nested block inside create procedure.
  - [PostgerSQL] support percentile_disc, percentile_disc, percentile_cont function.
  - [Oracle] support RESULT CACHE clause in create table.


+ GSP Java version 2.3.3.1(2021-08-24)
  - [Hive] able to get not token in not in expression.
  - [Hive] support (1) in case/when/then expression.
  
+ GSP Java version 2.3.3.0(2021-08-23)
  - [Impala] support sort by clause in create table.
  - [Impala] support stored as clause in create table.
  
+ GSP Java version 2.3.2.9(2021-08-13)
  - [Bigquery] support truncate table.
  
+ GSP Java version 2.3.2.9(2021-08-12)
  - [Bigquery] fix a bug can't get text of insert statement inside create procedure.
  - [Bigquery] support if statement inside create procedure.
  - [Bigquery] fix a bug case expression used in create procedure lead to getRawStatement error.
  - [Bigquery] support || operator.
  - [Bigquery] fix a null exception when calls another procedure is used in a create proecure statement.


+ GSP Java version 2.3.2.8(2021-08-09)
  - [Impala] fully support tpc-ds 99 queries.
  - [Impala] support interval constant.
  - [Impala] support exists subquery syntax.
  - [Impala] support subquery in the right side of the comparision operator.
  
+ GSP Java version 2.3.2.7(2021-08-09)
  - [dlieange] support JDBC url.

+ GSP Java version 2.3.2.6(2021-08-05)
  - [SQL Server/dlieange] support unpivot clause.
  
+ GSP Java version 2.3.2.5(2021-08-03)
  - [Hive] fix a type cast error for SET SERDEPROPERTIES ('field.delim' = ',') clause in ALTER TABLE
  - [Hive] support column name start with _.
  
+ GSP Java version 2.3.2.3(2021-08-02)
  - [sparksql] fix a bug can't parse char(1) datatype.
  - [sparksql] support column defined as map datatype.
  
+ GSP Java version 2.3.2.2(2021-08-02)
  - [dlieange] union and star column cause missing column.
  
+ GSP Java version 2.3.2.1(2021-07-23)
  - [API/SQL Server] TMssqlExecute.getSqlText() able to get query text of dynamic SQL.
  - [API/Oracle] TPlsqlExecImmeStmt.getDynamicStatements() able to get query text of dynamic SQL.
  - [API] TVarDeclStmt move from package gudusoft.gsqlparser.node to package gudusoft.gsqlparser.stmt
  - [general] replace '' with ' in getStringInsideLiteral() method.

+ GSP Java version 2.3.2.0(2021-07-21)
  - [API]  public class TMssqlCreateProcedure extends TCreateProcedureStmt
  - [API]  public class TMssqlCreateFunction extends TCreateFunctionStmt

+ GSP Java version 2.3.1.9(2021-07-19)
  - [Oracle/PLSQL] able to handle concatenate operator in EXECUTE IMMEDIATE statement.

+ GSP Java version 2.3.1.8(2021-07-17)
  - [SparkSQL] fix a bug can't parse decimal(16,3) in create table statement.
  - [SparkSQL] fix a bug can't parse int datatype used in cast function.
  
+ GSP Java version 2.3.1.7(2021-07-14)
  - [API] add TParseTreeNode public String getCompactString(), return string of this node by removing spaces, return and comments.
  
+ GSP Java version 2.3.1.6(2021-07-09)
  - [API] add TParseTreeNode public String getMd5(), get md5 hash code that uniquely identify a SQL node or statement.
  - [API] add TSourceToken ESqlClause location that indicate the source token belong to which SQL clause.
  
+ GSP Java version 2.3.1.5(2021-07-05)
  - [dlieange] fix bug Postgres: XML output from Trigger definition doesn't have type attribute on the procedure tag.
  - [dlineage] fix duplicate relations data (upper case /lower case).
  - [PostgerSQL/dlieange] name procedure argument name to $1, $2 if only datatype is specified in the arugment.
  - [MySQL] fix a bug can't handle syntax like this: =.5
  
+ GSP Java version 2.3.1.4(2021-06-30) 
  - [general] fix a StringIndexOutOfBoundsException bug.
  
+ GSP Java version 2.3.1.3(2021-06-29) 
  - [DB2] support varying keyword in declare statement.
  - [DB2] support ASSOCIATE LOCATOR, ALLOCATE statement in stored procedure.
  - [Teradata] DATE function is recognized correctly.
  - [Teradata] able to detecte percent, with ties clause in top clause.
  - [Teradata] support create temporary table syntax.
  - [Oracle/PLSQL] fix a bug can't parse cursor use MINUS set opertor.
  

+ GSP Java version 2.3.1.2(2021-06-26) 
  - [BigQuery] support SELECT * EXCEPT, SELECT * REPLACE syntax.
  - [BigQuery] support CTE in create table subquery.
  - [Oracle/gettablecolumn] fix a bug can't pickup column in LISTAGG function.

+ GSP Java version 2.3.1.2(2021-06-25) 
  - [BigQuery] fix a bug can't process interval constant in DATE_SUB function.
  - [BigQuery] support declare statement in the top level.


+ GSP Java version 2.3.1.1(2021-06-21) 
  - [Greenplum] able to separate multiple anonymous block in a single script.
  - [Greenplum] support drop table inside stored procedure.

+ GSP Java version 2.3.1.0(2021-06-18) 
  - [Teradata] support date at local clause.
  - [Hive] fix a bug unable to parse lateral view explode when columns aliases are not mentioned for Hive Dialect

+ GSP Java version 2.3.0.9(2021-06-11) 
  - [Hive] support disable/enable novalidate clause, rely/norely in table constraint.
  - [Hive] support identifier with backtick 
  - [Hive] fix a bug can't parse current_date() function.
  - [Hive] columns name in analzye table can be omitted.
  - [Hive] CTE in insert statement clause raise cast exception.
  - [Hive] support NULL DEFINED AS '' clause in INSERT OVERWRITE DIRECTORY
  
+ GSP Java version 2.3.0.9(2021-06-10) 
  - [Oracle] fix a NPE when parsing create trigger statement that is syntax invalid.


+ GSP Java version 2.3.0.8(2021-06-04) 
  - [Snowflake] comment clause can put before column list in create view statement.
  - [gettablecolumn] fix a bug unqualified column in subquery in where clause not linked to table.

			
+ GSP Java version 2.3.0.8(2021-06-03) 
  - [SQLServer,Azure Synapse] support label clause in query hint.
  
+ GSP Java version 2.3.0.7(2021-06-02) 
  - [SQLServer,Azure Synapse] support Azure Synapse Analytics CTAS syntax.
  
+ GSP Java version 2.3.0.6(2021-06-01) 
  - [SparkSQL] able to detect directory path set in options clause of INSERT OVERWRITE DIRECTORY statement.

+ GSP Java version 2.3.0.5(2021-05-27) 
  - [Hive] support dayofweek in extract function.
  
+ GSP Java version 2.3.0.3(2021-05-25) 
  - [MySQL] fix a bug can't handle string type in cast function.
  
+ GSP Java version 2.3.0.2(2021-05-24) 
  - [Hive] support path without enclosed by quote in load statement 
  - [Hive] support colon in column definition in create table statement.
  
+ GSP Java version 2.3.0.1(2021-05-21)
  - [SparkSQL] Fully support SparkSQL.

+ GSP Java version 2.2.3.6(2021-05-19)
  - [API] rename THiveDistributeBy to TDistributeBy,  THiveSortBy to TSortBy, THiveClusterBy  to TClusterBy and move to gudusoft.gsqlparser.nodes
  
+ GSP Java version 2.2.3.6(2021-05-18)
  - [API] rename THiveLateralView to TLateralView and move to gudusoft.gsqlparser.nodes

+ GSP Java version 2.2.3.4(2021-05-14)
  - [Teradata] fix a bug can't parse multiple variables in declare statement.
  
+ GSP Java version 2.2.3.4(2021-05-12)
  - [Oracle] support PARALLEL_ENABLE in PROCEDURE
  
+ GSP Java version 2.2.3.3(2021-05-11)
  - [greenplum, redshift] fix a bug that regular identifier should be convert to lowercase before comparision.
  - [Oracle] support character function in LISTAGG
  - [API] Return type of TListaggOverflow.getTruncation_indicator() change from TConstant to TExpression


+ GSP Java version 2.2.3.2(2021-05-10)
  - [API] TSQLObject.compareTo() replaced by TSQLEnv.compareIdentifier()
  - [Teradata] support with clause in pivot clause.
  
+ GSP Java version 2.2.3.1(2021-04-30)
  - [Teradata] fix a bug can't parse pivot clause.
  - [API] add new method TPivotClause.getPivotTable() return table derived from this clause.


+ GSP Java version 2.2.3.0(2021-04-25)
  - [Oracle] long qualifed name in object access expression.
  - [Oracle] support qualified type name with 4 parts.
  - [Teradata] able to detect consume property in select statement.
  - [gettablecolumn/Oracle] RowId treated as column name.
  - [Teradata] able to get normal sql statement after Teradata multiload statement.
  - [netezaa] able to get all external table option, TExternalTableOption
  - [general] star column in select list linked to columns of CTE.

+ GSP Java version 2.2.3.0(2021-04-24)
  - [SQL Server] fix a bug can't handle N 'yes' literal correctly.


+ GSP Java version 2.2.2.9(2021-04-24)
  - [Hive] fix a bug table alias in lateral view is optional.
  - [Hive] support not null/primary key/unique key/foreign key 

+ GSP Java version 2.2.2.9(2021-04-22)
  - [Hive] timestamp used in function.
  
+ GSP Java version 2.2.2.8(2021-04-22)
  - [data lineage] discover data lineage of foreign key in create table 
  - [snowflake] support role during connect to snowflake database.

+ GSP Java version 2.2.2.8(2021-04-21)
  - [Teradata] support unpivot clause.
  - [Teradata] fix a bug can't parse COLLECT STATS when VARIABLE is used.
  - [sql server] fix a bug can't recoginze CREATE OR ALTER PROCEDURE if OR ALTER is added.
  - [general] add schema to a table if the table can be found in SQLEnv.

+ GSP Java version 2.2.2.8(2021-04-19)
  - [Teradata] fix a bug can't recogine table alias in nested subquery.


+ GSP Java version 2.2.2.7(2021-04-19)
  - [API/netezaa] add new class TExternalTableOption that represent netezza external table option.
  
+ GSP Java version 2.2.2.6(2021-04-15)
  - [general] data lineage bug in insert into clause.
  
+ GSP Java version 2.2.2.6(2021-04-14)
  - [API/greenplum] Add new class TGreenplumSQLDataSource, connect to greenplum to fetch metadata.

+ GSP Java version 2.2.2.5(2021-04-14)
  - [API] add new method of TObjectName: public ArrayList getColumnsLinkedToStarColumn()
  - [general] Attached detailed columns to a star column if metadata is provided.
  
+ GSP Java version 2.2.2.4(2021-04-06)
  - [Teradata] support drop unique index statement.
  - [Hive] fix a bug can't parse numeric data type with scale.

+ GSP Java version 2.2.2.4(2021-04-02)
  - [API] TBlockSqlStatement.outerLabelName replaced by getLabelName()
  - [API] TPostgresqlCreateFunction is removed, please use TCreateFunctionStmt instead. 
  - [API] TSnowflakeCreateFunctionStmt is removed, please use TCreateFunctionStmt instead.
  - [general] PL/pgSQL compiler working in progress
  
+ GSP Java version 2.2.2.2(2021-04-01)
  - [general] get statement error doesn't effect the parse process of other SQL statements in the same script.
  - [snowflake] support use role, use warehouse, use schema, show procedures.
  
+ GSP Java version 2.2.2.1(2021-03-29)
  - [Oracle] support Arbitrary_0.sName IN BUILTIN.DF(entity_AB.sName)
  - [Oracle] support distinct keyword in listagg function.
  - [Oracle] support ENABLE ROW MOVEMENT in ALTER TABLE, CREATE TABLE
  - [general] add new enum value: dbvendor.dbvazuresql, dbvexasol, dbvsparksql

+ GSP Java version 2.2.2.0(2021-03-26)
  - [snowflake] support execute as clause in create procedure.
  - [snowflake] support not null option in return type of create procedure.
  - [general] fix a column match bug: "COL1" should be the same as COL1
  - [Oracle] partition by clause can be put after table alias.


+ GSP Java version 2.2.1.9(2021-03-25)
  - [Hive] support condition of cross join.

+ GSP Java version 2.2.1.8(2021-03-19)
  - [Hive] support interval literal

+ GSP Java version 2.2.1.8(2021-03-19)
  - [Hive] support multi-line comment.
  
+ GSP Java version 2.2.1.7(2021-03-17)
  - [SQL Server] fix a bug can't like x.[age] to table alias: [x]
  - [SQL Server] setDbObjectType of first argument in dateadd/datediff/datename/datepart function to EDbObjectType.date_time_part
  - [DB2] support TRUNCATE table statement inside procedure.
  - [SQL Server] fix a bug can't hanlde IDENTITY(1,1) after primary key clause.
  - [DB2] fix a bug can't parse VARBINARY datatype with length.
  - [Hana] fix a bug can't parse ALPHANUM datatype.
  


+ GSP Java version 2.2.1.6(2021-03-12)
  - [API] DataFlowAnalyzer, use public List getErrorMessages() instead of generateDataFlow(String errorBuffer) 
  - [data lineage] fix a bug can't handle values clause in from clause.
  - [DB2] support FOR SBCS/DBCS/MBCS DATA code page layouts
  - [DB2] support without time zone in TIMESTAMP data type.
	

+ GSP Java version 2.2.1.6(2021-03-11)
  - [Sybase] fix a bug can't handle || when @varname is followed.


+ GSP Java version 2.2.1.5(2021-03-05)
  - [snowflake] fix a bug can't parse sql inside create function if LANGUAGE SQL is specified.
  
+ GSP Java version 2.2.1.3(2021-03-04)
  - [Teradata] fix a bug can't pivot keyword used as table alias.
  - [snowflake] support create stream statement.
  - [snowflake] support varchar collate clause in data type.
  
+ GSP Java version 2.2.1.2(2021-03-03)
  - [greenplum] support array opertor @>, <@
  
+ GSP Java version 2.2.1.1(2021-03-01)
  - [greenplum] support declare/begin/end block.
  
+ GSP Java version 2.2.1.0(2021-02-28)
  - [bigQuery] support create external table, able get external_table_option.
  - [gettablecolumn] fix a bug un-qualified column in select list of subquery in the join clause was linked to wrong table.

+ GSP Java version 2.2.0.9(2021-02-26)
  - [DB2] support nchar, nvarchar variable length.
  - [snowflake] support copy grants clause in create view statement.
  - [snowflake] support time function.
  - [snowflake] support date keyword used as table alias.


+ GSP Java version 2.2.0.8(2021-02-22)
  - [sqlflow] add option to ignore coordinate in the output json.

+ GSP Java version 2.2.0.7(2021-02-19)
  - [Hana] support variable declare before AS keyword in create function/procedure.
  - [Hana] fix a bug can't parse SQL system schemas start with  underscore _  
  - [Hana] fix a bug can't parse float datatype without specify precision.
  - [Hana] fix a bug can't parse RETURNS TABLE () in CREATE FUNCTION.
	

+ GSP Java version 2.2.0.7(2021-02-18)
  - [bigquery] support TEMP/TEMPORARY keyword in create table statement.

+ GSP Java version 2.2.0.6(2021-02-09)
  - [Netezza] support ignore nulls in last_value/first_value function.
  - [Netezza] support identifier in syntax like #pTableName#
  - [SQL Server] fix a bug can't parse current row in over clause.
  - [PostgreSQL] support LATERAL Subqueries.
  - [API] add new class: public class TListaggOverflow,  TFunctionCall: new property: public TListaggOverflow getListaggOverflow()
  - [Oracle] able to get all properties from listagg_overflow_clause.

+ GSP Java version 2.2.0.5(2021-02-08)
  - [general] able to detect syntax error when a column selected from a subquery is not listed in the subquery select list.


+ GSP Java version 2.2.0.5(2021-02-07)
  - [general] fix a null exception parsing create schema statement inside stored procedure.

+ GSP Java version 2.2.0.4(2021-02-07)
  - [snowflake] fix a bug recognize date time part as column.
  - [redshift] fix a bug return wrong coordinates in create function.

+ GSP Java version 2.2.0.4(2021-02-05)
  - [redshift] coordinate inside create function is not correct.
  - [general] able to detect syntax error of tokenize in sqlparser.getSyntaxErrors()


+ GSP Java version 2.2.0.3(2021-02-03)
  - [Snowflake] toString() return null when multi-join clause is used in select statement in insert statement.
  - [Hana] support declare, if statement inside stored procedure.
  - [Hana] support truncate/drop table inside stored procedure.
  - [Hana] fix a bug can't parse CURSOR Declaration with the optional DECLARE Keyword
  - [Hana] fix a bug can't handle # in Create Temporary table statements
  - [Hana] support minus set operator.
  - [Hana] fix a bug can't parse subquery in insert statement.
  - [Hana] fix a bug can't parse generated by default as IDENTITY
  - [Hana] support upsert statement inside stored procedure.


+ GSP Java version 2.2.0.2(2021-02-01)
  - [API] add SQL statement and position in token list to the TSyntaxError
  - [Hive,Impala] fix a bug can't parse join clause without specify a join condition.
  - [PostgreSQL] fix a bug not set end token of select statement inside stored procedure.
  
+ GSP Java version 2.2.0.1(2021-01-29)
  - [SOQL] support salesforce SOQL.
  
+ GSP Java version 2.1.3.7(2021-01-27)
  - [general/API] add TCustomSqlStatement.getSyntaxHints(), TCustomOracleSqlStmt.getSyntaxErrors().
  - [snowflake] fix a bug: coordinates returned are incorrect.

+ GSP Java version 2.1.3.6(2021-01-22)
  - [general] The database used in the use database statement will affect the table used in select statement. 
  - [general] The database used in the use database statement will affect the view used in create view statement. 


+ GSP Java version 2.1.3.5(2021-01-21)
  - [SQL Server] fix a bug the database name is not located correctly in create database statement. 
  - [Oracle] support drop index clause in alter table.


+ GSP Java version 2.1.3.4(2021-01-20)
  - [general] The database used in the use database statement will affect the table used in create table statement. 
		
+ GSP Java version 2.1.3.3(2021-01-19)
  - [DB2] fix a bug can't handle for loop inside stored procedure.
  - [Oracle] on commit clause in create table will cause parse error.
  - [Oracle] grant execute statement after create proceudre can be recogined correctly.
  - [dlineage] fix a bug sql generates xml that references a target which does not exist.


+ GSP Java version 2.1.3.2(2021-01-18)
  - [Oracle] Concatenating an inquiy directive (eg. $$PLSQL_UNIT) inside a procedure call throws the error
  - [Oracle] create trigger acceptChildren() method NPE
  - [PostgreSQL] support FOR EACH STATEMENT  clause in CREATE TRIGGER.
  - [Redshift] fix a bug can't parse create function due to the STABLE put after ANGUAGE sql
  - [Postgresql] improved support for create function with embedded plpgsql.
  - [Hive]  parser can't handle forward slash in a qualified column name
  - [getTableColumn] fix a bug that column alias miss handling.
  - [Hive] Parser doesn't handle carriage returns properly in table definitions
  

+ GSP Java version 2.1.3.1(2021-01-14)
  - [DB2] support Anonymous block statements.
  - [Impala] fix a bug can't handle order by clause in window clause.


+ GSP Java version 2.1.3.0(2021-01-11)
  - [SQL Server] fix a bug can't parse for system_time all clause.
  - [SQL Server] fully support openjson.
  
+ GSP Java version 2.1.2.9(2021-01-02)
  - [snowflake] able to get schema information.
  
+ GSP Java version 2.1.2.8(2020-12-26)
  - [snowflake] fully support copy into, put statement.
  
+ GSP Java version 2.1.2.7(2020-12-24)
  - [getTableColumn] fix a bug can't recognize column correct in syntax like table.column.property.
  - [Snowflake] fully support create external table, create stage.
  
+ GSP Java version 2.1.2.6(2020-12-21)
  - [Oracle] Able to get all parameter from LISTAGG function.
  - [gettablecolumn] fix a bug column alias recognized as column in lateral column alias reference 
  - [snowflake] fix a bug can't parse date function.


+ GSP Java version 2.1.2.6(2020-12-18)
  - [Postgresql, Greenplum] fix a bug can't parse syntax like: grouy by (colum1, column2)
  - [Postgresql, Greenplum] support comma separator in trim fuction. 
  - [Postgresql, Greenplum] support set statement inside procedure.
  - [Postgresql, Greenplum] POSITION can be used as table alias.

+ GSP Java version 2.1.2.6(2020-12-15)
  - [SQL Server] support create or alter view syntax.
  
+ GSP Java version 2.1.2.5(2020-12-11)
  - [general] support utf-8 NO-BREAK SPACE inside SQL query.

+ GSP Java version 2.1.2.5(2020-12-09)
  - [MySQL] fix a nullexception bug for insert statement inside create trigger.

+ GSP Java version 2.1.2.5(2020-12-08)
  - [Snowflake] TEXT can be used as column name.
  - [Netezza] support DISTRIBUTE ON HASH.
  - [SQL Server] fix a bug can't parse 0E number.
  
+ GSP Java version 2.1.2.4(2020-12-04)
  - [data lineage] sql server table functions not showing up
  - [Hive] fix a bug can't detect column used in is not null.
  
+ GSP Java version 2.1.2.3(2020-12-01)
  - [Hana] support CREATE OR REPLACE FORCE EDITIONABLE VIEW
  
+ GSP Java version 2.1.2.2(2020-11-19)
  - [Oracle] support long name in stored procedure.
  - [SQL Server/data lineage] fix a NullPointerException of start and end token when process table function.
  
+ GSP Java version 2.1.2.1(2020-11-03)
  - [general] fix a bug PseudoRows column in create table.
  
+ GSP Java version 2.1.2.0(2020-11-02)
  - [General] fix a bug that raise NullPointerException in TFunctionCall.loadTableFunctions().
  - [MySQL] Able to fetch after column clause in add column clause.
  - [dlineage] data lineage feature merged into core.

  
+ GSP Java version 2.1.1.0(2020-10-28)
  - [bigquery] fully support create function.
  - [bigquery] fully support create procedure.

+ GSP Java version 2.1.1.0(2020-10-26)
  - [Biqquery] support string_agg function.
  - [Biqquery] fix a bug can't parse time keyword when it used as a column name.
  - [general] support Oracle built-in table fucntion.

  
+ GSP Java version 2.1.0.9(2020-10-23)
  - [redshift] support with no schema binding clause in create view.
  - [getTableColumn] fix a bug can't link column in set clause to the table in the from clause of update statement.
  - [dlieange] fix bug: Lineage is incorrect when view definition has unqualified tables

+ GSP Java version 2.1.0.8(2020-10-22)
  - [Teradata] support xmltable function.
  - [SQL Server] support virtual column: %%PHYSLOC%%
  - [SQL Server] fix a bug fails for trigger if IF UPDATE keyword used with another logical operator
	
+ GSP Java version 2.1.0.8(2020-10-21)
  - [SQL Server] fix a bug when parse clause using with (index)
  - [Teradata] fix a bug can't recognize double !! marks as a string Concatenation Operator
  - [SQL Server] support empty body inside begin catch ... end catch.
  - [Oracle] support AS EXTERNAL in CREATE PROCEDURE, the AS EXTERNAL clause was an alternative way of declaring a C method. This clause has been deprecated and is supported for backward compatibility only.
  - [Oracle] support default on null clause on column definition.
  - [SQL Server] support sorted column in index clause.

  
+ GSP Java version 2.1.0.7(2020-10-16)
  - [gettablecolumn/SQL Server] support to checking column of SQL Server table function while build relationship between table and column.
  
+ GSP Java version 2.1.0.6(2020-10-15)
  - [Snowflake] support create file format statement without specify type clause.
  - [general] fix a bug miss processing qualified name in the quoted identifier.
  - [gettablecolumn] fix a bug column in subquery can't find table in uplevel table due to union set.

  
+ GSP Java version 2.1.0.5(2020-10-14)
  - [gettablecolumn] fix a bug cause by the comparision of [columnName] and columnName
	
+ GSP Java version 2.1.0.3(2020-10-10)
  - [Oracle] fix a bug can't parse XMLELEMENT function with a name parameter.
  - [Oracle] support table function.
  - [Oracle] support passing clause in xmlquery function.
  - [Hive] support qualifed table name in alter table.
  
+ GSP Java version 2.1.0.2(2020-10-09)
  - [SQL Server] all keywords can be used as column name is marked correctly.
  - [Snowflake] Able to get like table name in create table.
  - [Snowflake] support join without on condition.
  - [Snowflake] support between condition in select list.
  - [Snowflake] number, identifer can be used as column name.
  - [Teradata] support cast() at location syntax.
	

+ GSP Java version 2.1.0.2(2020-10-07)
  - [Oracle] identifier can be used as the second parameter of the LISTAGG function.
  - [Oracle/plsql] fix a bug cannot parse the TYPE statement when a variable is passed inside the Varchar2() datatype.
  - [Oralce/plsql] fix a bug BULK COLLECT INTO with LIMIT keyword cannot be parsed if limit is wrapped brackets

  
+ GSP Java version 2.1.0.1(2020-10-05)
  - [Sybase] support quoted table name like schemaName.'quoted_test_table'
  - [Hana] support window clause of function.
  - [Oracle] able to separate block and commit statement after it without a / command.
  - [Hana] fix a bug parse table name in quoted string.

+ GSP Java version 2.1.0.1(2020-10-04)
  - [SQL Server] keyword 'content' can't be recognized as column name.
  - [Snowflake] fix a bug can't recognize column in qualified name like this: DB.SCHEMA.TABLE_NAME.COLUMN_NAME

  
+ GSP Java version 2.1.0.0(2020-10-02)
  - [general] refactor the TParseTreeNode.toString() to support quick modify parse tree and build the query text.
  - [Hive] support hive 2.1
  - [Teradata] support backtick literal.
  - [Teradata] fix a bug the group by clause will be return null if only having clause is used.
  - [API] change TPTNodeList to ArrayList
  
+ GSP Java version 2.0.9.6(2020-09-17)
  - [snowflake] support quaify clause.
  - [general] if a node is already removed, then setString() will be just ignored.
  
+ GSP Java version 2.0.9.5(2020-09-16)
  - [general] fix a bug can't remove having keyword while remove having clause.
  - [general] support between expr in removeMe() method.

  
+ GSP Java version 2.0.9.4(2020-09-15)
  - [API] TParseTreeNode.setText() change from public to private, please use setString() instead.
  - [API] rename TParseTreeNodeList.removeElementAt() to removeElementWithoutSyncTokens().
 
+ GSP Java version 2.0.9.3(2020-09-14)
  - [general] toString() bug fix for expression.
  
+ GSP Java version 2.0.9.2(2020-09-10)
  - [general] support setLeftOperand(null),setRightOperand(null) to remove sub-node from expression.

 
+ GSP Java version 2.0.9.1(2020-09-09)
  - [general] TExpression.remove2() is supported in double chain token list operation.
  
+ GSP Java version 2.0.9.0(2020-09-09)
  - [general] rewrite the TParseTreeNode to support quick access, modify and rebuild SQL.
  - [general] end token of TJoin doesn't link correctly.

+ GSP Java version 2.0.9.0(2020-09-01)
  - [API] TParseTreeNode, public TParseTreeNodeList getNodesStartFromThisToken() to public Stack getNodesStartFromThisToken()

  
+ GSP Java version 2.0.8.3(2020-08-26)
  - [SQL Server] fix a bug statement inside begin catch block is not picked up.
  - [SQL Server] role, format keyword will be picked up as column correctly.

+ GSP Java version 2.0.8.3(2020-08-25)
  - [PostgreSQL] able to get table/column from copy statement.

+ GSP Java version 2.0.8.3(2020-08-24)
  - [API] TCreateSequenceStmt.options change from TPTNodeList to ArrayList
  - [Teradata] support map option in create table.
  - [Teradata] support cast function in IN expression.
  - [MySQL] support position function.
  
+ GSP Java version 2.0.8.2(2020-08-20)
  - [API] Iterator interface implmented in TParseTreeNode and Iterable interface implmented in TParseTreeNodeList
		use forEach instead of forEachRemaining if you need to iterate nodes in the TParseTreeNodeList.
		http://support.sqlparser.com/gsp-api/gsp-sql-parse-tree-node-iterator/


  - [Snowflake] support top clause which is not documented in the official site.
  https://docs.snowflake.com/en/sql-reference/sql/select.html

  - [Redshift] support generated by default as identity column attribute.
  - [MySQL] fix a bug column with decimal datatype is being returned as dec instead of decimal
  
+ GSP Java version 2.0.8.1(2020-08-07)
  - [Hana/getTableColumn] fix a bug can't get table/column in a creat function statement without parameter.
  - [Hana/getTableColumn] fix a bug can't parse the return statement inside procedure.
  - [Hana] able to parse function derived column.
  - [Hana] able to parse WITH STATIC CACHE AT LOCATION 'myhost2:00002' in create view.
  - [Hana] support with expression macros clause in create view statement.
  - [Hana] support with mask clause in create view statement.
  - [Hana] support parameterized_view_clause.

  
+ GSP Java version 2.0.8.0(2020-08-06)
  - [snowflake/API] TCreateFileFormatStmt.getFormatOptions() returns the text of the file format options.
  - [getTableColumn/General] fix a bug link column in the insert table which shoulb be belonged to subquery.
  
+ GSP Java version 2.0.7.9(2020-08-04)
  - [Snowflake] support create materalized view.
  - [Snowflake/API] TCreateTableOption.getCopyOptions() reprsents for STAGE_COPY_OPTIONS.
  - [Snowflake/API] add TCreateTableOption to represents for the create table option. 
  
+ GSP Java version 2.0.7.7(2020-07-31)
  - [Teradata] support prepare statement inside stored procedure.
  - [API] TMySQLPrepareStmt rename to TPrepareStmt move from package gudusoft.gsqlparser.stmt.mysql to package gudusoft.gsqlparser.stmt
  - [API] TMySQLPrepareSqlNode rename to TPrepareSqlNode move from package gudusoft.gsqlparser.nodes.mysql to package gudusoft.gsqlparser.nodes
  - [Teradata] able to get fetch statement inside procedure.
  - [Teradata] able to detect set statement(TMssqlSet), but only text information is available.
  - [API] replace TTeradataCreateProcedure with TCreateProcedureStmt
  - [scriptWriter] support WITH (IGNORE_DUP_KEY = OFF), ON [PRIMARY] in create table statement.
  
  
+ GSP Java version 2.0.7.6(2020-07-30)
  - [scriptWriter] fix a bug add additional bracket in alter table add column clause.
  - [general] fix a null exception when access  TSelectSqlStatement.getResultColumnList() in a select statement with SET operator.
	

+ GSP Java version 2.0.7.6(2020-07-29)
  - [gettablecolumn] fix a bug can't link xml type column to table.

  
+ GSP Java version 2.0.7.5(2020-07-25)
  - [general/API] support with group in function. TWithinGroup TFunctionCall.getWithinGroup()
  - [snowflake] support WITH LOCAL TIME ZONE
  - [snowflake] support datetime with length specified.
  - [snowflake] fully support AUTOINCREMENT

+ GSP Java version 2.0.7.5(2020-07-23)
  - [general/bigquery] able to pick table and schema name in a quoted identifier like `schemaName.tableName` 


+ GSP Java version 2.0.7.5(2020-07-20)
  - [API] add new method for TParseTreeNode: public ENodeStatus getNodeStatus()
  - [API] TParseTreeNode implements Iterable, public Iterator iterator().

  
+ GSP Java version 2.0.7.4(2020-07-17)
  - [dlineage] fix a StackOverflowError bug handling union all operator.
  
+ GSP Java version 2.0.7.4(2020-07-15) 
  - [Oracle] support JSON_QUERY function.
  
+ GSP Java version 2.0.7.3(2020-07-14) 
  - [Teradata] support xmlcast, xmlserialize, xmlelement, xmlroot, xmlforest function.

+ GSP Java version 2.0.7.3(2020-07-09) 
  - [Oracle] support SEGMENT CREATION IMMEDIATE clause.
  
+ GSP Java version 2.0.7.2(2020-07-06) 
  - [Hive] support subquery in create table statement.
  - [general] type of database name in create database, drop database statement was set correctly.
  - [general/visitor] able to visit database name in create database, drop database statement.
  - [Hive] support exists condition.
  - [general] TColumnDefinition.acceptChildren() improved to support datatype and column name.
  
+ GSP Java version 2.0.7.1(2020-07-04) 
  - [SQL Server] support xml method in from clause.

+ GSP Java version 2.0.7.1(2020-07-02) 
  - [SQL Server] xml method improvement.

+ GSP Java version 2.0.7.0(2020-06-27) 
  - [SQL Server] fix a bug can't support if exists clause in drop constraint clause of alter table.

  
+ GSP Java version 2.0.6.9(2020-06-24) 
  - [snowflake] support full subquery in copy into statement.
  - [snowflake] fix a bug can't parse the path name includes both number and character.
  - [snowflake] support character datatype without specify the length.


+ GSP Java version 2.0.6.9(2020-06-18) 
  - [General] fix bug can't get datatype name when it is not recognized correctly.
  - [API] add TSelectSqlStatement.isValueClause() to determine whether a TSelectSqlStatement class represents a values-clause or not.


+ GSP Java version 2.0.6.9(2020-06-17) 
  - [Snowflake] support if not exists used after table name in create table statement.

  
+ GSP Java version 2.0.6.8(2020-06-12) 
  - [SQL Server] support order_clause of STRING_AGG.
  - [PostgreSQL] support call statement inside procedure.
  - [Hive] fix a bug can't parse identifier if space inside ` `.
  - [DB2] support cursor statement in declare cursor.
  - [DB2] support COMMIT ON RETURN in CREATE PROCEDURE statement.
	

+ GSP Java version 2.0.6.8(2020-06-11) 
  - [Oracle] support concatenate operator in unpivot_in_clause_item.
  - [Oracle] support respect|ignore nulls option of last_value|first_value function.
  - [Oracle] fix a bug treat a. as a sqlplus command.

  
+ GSP Java version 2.0.6.7(2020-06-10) 
  - [General] Add TBaseType.c_createTableStrictParsing, if it's false, the parser will try recover from the parsign error
  and only parse the part inside create table ().  Default is false.
  - [Oracle] support listagg function.
  
+ GSP Java version 2.0.6.6(2020-06-08) 
  - [general] Able to detect duplicate column in create table statement.
  
+ GSP Java version 2.0.6.5(2020-05-29) 
  - [scriptWriter/MySQL] fix a bug INTERVAL 1 DAY not handled correclty.
  - [Teradata] support temporalqualifier in create view statement.
  
+ GSP Java version 2.0.6.4(2020-05-28) 
  - [snowflake] support $ symbol in identifier.
  - [Oracle] Able to detect syntax error of create table with invalid create table option.
				
+ GSP Java version 2.0.6.4(2020-05-27)
  - [API] add new method:¡¡public void TParseTreeNode.addToTokenChain(TSourceToken anchorToken, boolean beforeAnchorToken)
 
+ GSP Java version 2.0.6.4(2020-05-26)
  - [API] add public void TParseTreeNode.removeFromTokenChain(), remove the tokens of node from the token list.

+ GSP Java version 2.0.6.4(2020-05-25)
  - [API] add TParseTreeNode.setText() method.

  
+ GSP Java version 2.0.6.3(2020-05-21)
  - [general/API] move public EDbVendor dbvendor; from TCustomSqlStatement to TParseTreeNode

+ GSP Java version 2.0.6.2(2020-05-20)
  - [sqlenv] Able to pickup columns of temporary table in the select into clause.
  
+ GSP Java version 2.0.6.1(2020-05-15)
  - [SQL Server] fix a bug can't recognize COST as column name.
  - [SQL Server] fix a bug can't get the end token of if statement. 

+ GSP Java version 2.0.6.1(2020-05-13)
  - [PostgreSQL] support performance statement inside procedure.
  - [PostgreSQL] fix a StringIndexOutOfBoundsException parsing some CREATE FUNCTION statements with small function body.
  - [SQL Server] fix a bug can't parse writetext inside stored procedure.

  
+ GSP Java version 2.0.6.1(2020-05-13)
  - [toXML] able to get columns of the alias clause if any.
  - [toXML/DB2] support values clause in xml output.


+ GSP Java version 2.0.6.1(2020-05-12)
  - [redshift] able to get arguments from listagg function.
  - [API] introduce new public enum ENullOrder
  - [API] introduce public ENullOrder getNullOrder() in TOrderByItem
  - [scriptWriter] support nulls first/nulls last in order by clause.
  - [redshift] support nulls first/nulls last in order by clause.
  - [Sybase] support statement list inside create function body without specify begin/end.

+ GSP Java version 2.0.6.1(2020-05-11)
  - [Hana] support qualified name in assignment statement.
  - [SQL Server] support using xml index in create xml index statement.

+ GSP Java version 2.0.6.1(2020-05-09)GSP Java version 2.0.6.1(2020-05-09)
  - [Oracle] able to return function type correctly for contains function.

+ GSP Java version 2.0.6.0(2020-05-08)
  - [Oracle] support GENERATED AS IDENTITY in column definition.

+ GSP Java version 2.0.6.0(2020-05-07)
  - [PostgreSQL] fix a bug can't parse for statement.
  - [PostgreSQL] support into name list of select statement inside create procedure.
  - [MySQL] support CTE used in create view.
  - [redshift] support nulls first|last clause in order by .
  - [redshift] within group clause in listagg function is optional.
	  
+ GSP Java version 2.0.6.0(2020-05-07)
  - [Sybase] support number_of_partitions of partition by hash clause.
  - [snowflake] support current_user with/without parentheses.

+ GSP Java version 2.0.6.0(2020-05-06)
  - [Sybase] support create function without specify the argument and parenthesis.
  - [Teradata] able to detect label even if there are space between naname and : 
  - [PostgerSQL] support create materialized view statement.
  - [Oracle] fix a bug can't parse varying after character type.
  - [demo/toXML] fix a bug CTE appears twice in the select statement.
  - [DB2] fix a bug can't use 'NUMBER' as function parameter name

+ GSP Java version 2.0.5.9(2020-04-28)
  - [SQL Server] fix a bug that ++@ breaks parsing.
  - [Netezza] able to get length of nvarchar data type.
  - [Teradata] support no fallback and checksum = default is present in create join index query.
  - [PostgreSQL] fix a bug report wrong coordinates in function definition.
  - [Hive] support union operator in create view statement.
  - [DB2] support db2 trigger syntax with mode db2sql secured
  - [DB2] support no optons between return clause and function body in create function
  - [DB2] support substring CODEUNITS16/CODEUNITS32/OCTETS arguments.
  - [Hana] support variable initialized inline.
  - [Hana] support empty parameter in create procedure.
  - [sybase] support create or replace proc statement.
  - [redshift] # character can be used in identifier.
  - [MySQL] support NVARCHAR datatype in procedure parameter.

+ GSP Java version 2.0.5.9(2020-04-27)
  - [PostgerSQL] fix a bug can't parse values clause when question mark ? is used.
  - [DB2] support fetch next clause.
  - [Hana] fix a bug can't recognize rank() over clause.
  - [Hana] support nvarchar without specify a length.
  - [SQL Server] support create external language.

+ GSP Java version 2.0.5.9(2020-04-26)
  - [API/SQL Server] use TDropFunctionStmt to represent drop function statement.
  - [SQL Server] support if exists clause in drop function.

+ GSP Java version 2.0.5.8(2020-04-23)
  - [SQL Server] support if not exists clause in create table statement.
  - [Netezza] support exec statement.
  - [Netezza] fix a bug can't parse qualified table name in drop table statement.
  - [PostgreSQL] support positional parameter like \$1
  - [PostgreSQL] add support for exec immediate inside stored procedure.
  - [Netezza] fully support create procedure.

+ GSP Java version 2.0.5.7(2020-04-21)
  - [Oracle] support relational table function.

  
+ GSP Java version 2.0.5.6(2020-04-20)
  - [general] fix a null exception in TExpression.searchColumn() method.

+ GSP Java version 2.0.5.5(2020-04-17)
  - [MySQL] parser error with qualified identifiers that begin with a number
  - [SQL Server] fix a bug `match` can't be used as table alias.

+ GSP Java version 2.0.5.4(2020-04-13)
  - [Hive] support subQuery in where clause.

+ GSP Java version 2.0.5.3(2020-04-10)
  - [Teradata] current_timestamp,current_time,current_date recognized as function name correctly.
  - [Teradata] support comment on [table], but table keyword is omitted.
  - [Teradata] able to pickup while statement inside procedure.
  - [API] use TWhileStmt instead of TMySQLWhileStmt
  - [API] rename public class TDb2WhileStmt to TWhileStmt, and move to package gudusoft.gsqlparser.stmt;
  - [netezza] add support for OWNER TO clause of alter table.

+ GSP Java version 2.0.5.3(2020-04-09)
  - [PostgreSQL] fix null exception when parsing create function with empty body.

 
+ GSP Java version 2.0.5.3(2020-04-08)
  - [PostgreSQL] fix a null exception when parsing TABLE ONLY ( DATA ) clause.
  - [PostgreSQL] fix a null exception when processing deferrable constraint attr in alter table statement.
  - [MySQL] fix a null exception when the body of create trigger statement is empty.
  - [SQL Server] able to pickup create database statement in if statement.
  - [SQL Server] ERROR keyword can be used as column name.

+ GSP Java version 2.0.5.3(2020-04-07)
  - [SQL Server] support BEGIN TRY/BEGIN CATCH used in if statement.
  - [SQL Server] support FAST_FORWARD LOCAL option in CURSOR ... FOR.
  - [Sybase] support partition by hash clause in into clause.
  
+ GSP Java version 2.0.5.2(2020-04-03)
 - [all databases] lexer performance improvement.

+ GSP Java version 2.0.5.2(2020-04-02)
  - [PostgerSQL] fix a bug can't process time without time zone in create table statement.
  - [Teradata] able to pickup column in CSUM function.
 
+ GSP Java version 2.0.5.2(2020-04-01)
  - [DB2] support rename column in alter table statement.
  - [SQL Server] support openjson table function.
		
+ GSP Java version 2.0.5.2(2020-03-31)
  - [SQL Server] support  SET NOCOUNT, ANSI_PADDING ON;
  - [SQL Server] support for json auto/path clause.
  - [SQL Server] support match function.
 
+ GSP Java version 2.0.5.1(2020-03-25)
  - [SQLEnv] able to pickup metadata from create table/view/proceudre/function statement during parsing and save to SQLEnv. 

+ GSP Java version 2.0.5.0(2020-03-20)
  - [general] keywordLoader.java: race condition during startup can trigger subsequent parser error
  - [MySQL] able to parse timestamp when it use as a column name.
  - [PostgerSQL] support show search_path.  
  - [MySQL] fix a bug can't parse set password when user name is quoted. 
  - [MySQL/API] support show create schema.
  - [MySQL/API] add new class TMySQLShowStmt to represents the show statement. 
  - [MySQL] able to recognize load data statement.
  - [SQL Server] support on all server clause of create trigger.
  - [SQL Server] support references to member methods via :: 
  
+ GSP Java version 2.0.4.9(2020-03-19)
  - [SQL Server] support COLUMN_SET FOR ALL_SPARSE_COLUMNS clause in column definition.
  - [SQL SERVER] support writetext inside stored procedure.
  - [SQL SERVER] support create event session statement.
  - [SQL Server] Able to recoginze drop event session statement.
  - [PostgreSQL] support default expression after null clause in column definition.

	
+ GSP Java version 2.0.4.8(2020-03-18)
  - [PostgreSQL] fix a bug can't process select statement when into clause is put after where clause.
  - [DB2] fix a bug can't handle statement after proceudure if while/do clause inside procedure.
  - [DB2] support TRUSTED and NOT TRUSTED CHECK constraints.
  - [DB2] support as-row-change-timestamp-clause.
  - [DB2] support collect detailed statistics clause in create index statement.
  - [Oracle] able to parse json_table clause.
  - [DB2] fix a bug can't handle CURRENT keyword used as table alias.
  

+ GSP Java version 2.0.4.8(2020-03-17)
  - [SQLEnv/API] TSQLEnv.getCurrentSchemaName() renamed to getDefaultSchemaName(), TSQLEnv.getCurrentCatalogName() renamed to getDefaultCatalogName(), 
  - [SQLEnv/API] able to add and search function in TSQLEnv.
  - [gettablecolumn] Doesn't list table-valued function in the output of the getTableColumn demo.
  
+ GSP Java version 2.0.4.8(2020-03-16)
  - [API/SQLServer] add new enum EFunctionReturnsType { frtScalar,frtInlineTableValue,frtMultiStatementTableValue} to represent the return type of function.

  
+ GSP Java version 2.0.4.7(2020-03-13)
  - [Teradata] fix a bug treat column in the implict date cast as table name.
  - [Hive/general] TGSqlParser.parseObjectName() method will return a new TObjectName object even parse a string constnat.
 
+ GSP Java version 2.0.4.6(2020-03-11)
  - [SQL Server] able to get the first dropped column name in TAlterTableOption.getColumnName() which can be only fetched from TAlterTableOption.getColumnNameList() in the previous version.
  - [Oracle] fix a nullexception when parse day to second clause in expression.
  - [Hive] fix a bug can't handle table qualified with the database name.
  
+ GSP Java version 2.0.4.6(2020-03-10)
  - [redshift] fix a bug ASC and DESC (in the order by clause) are dropped for toScript().
  - [Hive/scriptWriter] fix a nullexception when process limit clause of hive.
  - [Hive] support subquery used in create view statement.
  - [Teradata] support repeat, close and commit statement inside create procedure.
  - [API] TMySQLRepeatStmt and TDb2RepeatStmt replaced by TRepeatStmt
  - [PostgreSQL] fix a bug can't process create function with the body is start with comment.

  
+ GSP Java version 2.0.4.5(2020-03-09)
  - [general] process of * column in select list is more accurate.
	
+ GSP Java version 2.0.4.5(2020-03-05)
  - [DB2] support truncate table statement.

+ GSP Java version 2.0.4.5(2020-03-03)
  - [MySQL] fix a bug can't handle current row in over clause.
  - [MySQL] support natural inner join syntax.
  - [API] add new method TSelectSqlStatement.getHint() to replace  TSelectSqlStatement.getOracleHint()
  - [MySQL] support hint in select statement.

+ GSP Java version 2.0.4.5(2020-02-29)
  - [sql server] support create index statement without specify a column list of the target table.
  - [sql server] fix a bug can't parse if exists in drop index statement.
  - [sql server] support odbc escape syntax in like condition.
  
+ GSP Java version 2.0.4.5(2020-02-27)
  - [sql server] able fully parse query inside openquery clause.
  - [general] TTable.getName() returns value from getTableName() if original tableName is null
  - [demo] use TGSqlParser.getDBVendorByName() method in demos to get dbvendor value.

  
+ GSP Java version 2.0.4.4(2020-02-25)
  - [vertica] function properties file update.

+ GSP Java version 2.0.4.3(2020-02-19)
  - [general] support bigquery/couchbase/hana/vertica built-in function and keyword checking.

+ GSP Java version 2.0.4.3(2020-02-18)
  - [MySQL] fix a bug can't process builtin function used as column.
  - [demo/dataflow] support table rename and swap relation in the dataflow.
  
+ GSP Java version 2.0.4.2(2020-02-15)
  - [general] thread safe improvement for loading function and keyword list.
  - [general/performance] performance improvement when there are lots of CTE used in statement.

+ GSP Java version 2.0.4.1(2020-02-12)
  - [API] introduce new static method:  public static EDbVendor TGSqlParser.getDBVendorByName(String dbVendorName)
  - [bigquery] support saft_cast function.

+ GSP Java version 2.0.4.1(2020-02-10)
  - [demo/dataflowanalyzer] fix a null exception when into clause put before select list.

+ GSP Java version 2.0.4.1(2020-02-09)
  - [redshift] fix a bug can't parse create procedure/function when LANGUAGE clause is put before the function body.

+ GSP Java version 2.0.4.0(2020-02-08)
  - [DB2] support Empty RESIGNAL.
  - [DB2] support empty body in IF statement.

+ GSP Java version 2.0.4.0(2020-02-06)
  - [MySQL] support optional foreign key name in add clause of alter table statement.
  - [snowflake] fix a bug inner join having ON clause is not getting parsed.
  - [DB2] support runstats statement.
  - [DB2] support create tablespace statement.
  - [DB2] support set maxvalue in alter column clause of alter table.
  - [DB2] support isolation clase in merge statement.
  - [DB2] support comment on procedure with parameter.
  
+ GSP Java version 2.0.4.0(2020-02-05)
  - [MySQL] support CTE in update statement.
  - [SQL SERVER] fix a bug can't get database name from "CREATE DATABASE xml"
  - [PostgreSQL] fix Parser error for SELECT EXISTS
  - [MySQL] fix parser error for 'double precision' data type
  - [SQL Server] fix parse error when using bind value for number of rows in 'SELECT TOP'.  
  - [MySQL] fix parser error for null encoded as \N
  - [PostgreSQL] support drop schema statement.
  - [PostgreSQL] support create schema statement.

  
+ GSP Java version 2.0.3.9(2020-02-03)
  - [redshift] support syntax that put into clause before select list.
  - [PostgreSQL] coordinates of tokens in postgresql create procedure set correctly.
  - [PostgreSQL] fix a bug treat positional parameter as column.
  - [demo/getTableColumn] able to get table from statment inside creatFunction.
  - [Teradata] create function ignore language clause after return datatype clause.

  
+ GSP Java version 2.0.3.8(2020-02-03)
  - [Teradata] qualify clause can be parsed correctly when placed after select list.

+ GSP Java version 2.0.3.8(2020-02-02)
  - [Teradata] support case_n expression in PARTITION BY clause of create table.
  
+ GSP Java version 2.0.3.8(2020-01-27)
  - [snowflake] support inner join without join condition.
  - [greenplum] able to parse all statements inside create function body.

+ GSP Java version 2.0.3.7(2020-01-23)
  - [SQL Server] support create external data source statement.
  - [DB2] support create procedure without parameters.
  - [Oracle] support / operator in using clause of execute statement.
  - [general] coordinates of tokens in postgresql function set correctly.
  - [netezaa] fix a bug can't handle identifier like: $$DB_KM_SUPPORT..NZ_TABLE2

  
+ GSP Java version 2.0.3.6(2020-01-22)
  - [gettablecolumns/postgresql] able to recognize function parameter used in the body.

+ GSP Java version 2.0.3.6(2020-01-19)
  - [general] fix null exception when table type is not a regular table.
  - [DB2] support column with empty default.
  - [DB2] support comment on multiple columns.
  - [DB2] support comment on procedure
  - [DB2] support create role.
	
+ GSP Java version 2.0.3.6(2020-01-17)
  - [Teradata] ignore all function options after return type.
  - [Teradata] support when condition in for each row/statement clause of create trigger.
  - [Teradata] fix a bug can't handle column list in update clause of create trigger.
  - [snowflake] support multi-column in add column clause of alter table statement.\

+ GSP Java version 2.0.3.5(2020-01-10)
  - [redshift] support create procedure statement.
  - [redshift] support create function statement.

  
+ GSP Java version 2.0.3.4(2020-01-09)
  - [snowflake] support create procedure statement.
  - [snowflake] able to pickup statement in the body of create function statement.

+ GSP Java version 2.0.3.4(2020-01-08)
  - [API] Add new class TRoutine which is the base class of TCreateProcedureStmt and TCreateFunctionStmt
  - [API] move ECreateFunctionOptionType from gudusoft.gsqlparser.nodes.postgresql to gudusoft.gsqlparser.nodes
  - [API] move TCreateFunctionOption from gudusoft.gsqlparser.nodes.postgresql to gudusoft.gsqlparser.nodes

+ GSP Java version 2.0.3.3(2020-01-08)
  - [scriptWriter] fix a bug when rewrite sql server proprietary column alias 
  - [SQL Server] fix nullexception in getTableName() while processing opendatasource clause.

+ GSP Java version 2.0.3.3(2020-01-07)
  - [PostgreSQL] support syntax like:  AS 'obj_file', 'link_symbol' in create procedure statement.
  - [SQL Server] able to get column alias of SQL Server proprietary column alias syntax like this: aliasName = column


+ GSP Java version 2.0.3.3(2020-01-06)
  - [Oracle] support containers clause.
  - [redshift] support character varying in type cast.
  - [Hive] fix a bug can't parse insert values clause in merge statement.

+ GSP Java version 2.0.3.3(2020-01-03)
  - [Teradata] FROM, WHERE, GROUP BY, HAVING, and ORDER BY. Teradata Database does not enforce this ordering, GSP support the Teradata ordering now.

+ GSP Java version 2.0.3.3(2020-01-02)
  - [Hive] support subquery in join.
  - [snowflake] support comment on table constraint.

+ GSP Java version 2.0.3.3(2019-12-31)
  - [Hive] support delete statement.

  
+ GSP Java version 2.0.3.2(2019-12-30)
  - [Hive] support merge, update statement.
  
+ GSP Java version 2.0.3.1(2019-12-23)
  - [SQLEnv] Use TSQLEnv instead of IMetaDatabase to provide the metadata to sqlparser.
    use setSqlEnv(TSQLEnv sqlEnv) instead of setMetaDatabase(IMetaDatabase metaDatabase)

+ GSP Java version 2.0.3.1(2019-12-18)
  - [SQLEnv] Introduce a new clas TSQLEnv which can be used as a framework to load metadata from database instance, 
  json file, any other resource by override the initSQLEnv() method.


+ GSP Java version 2.0.3.0(2019-12-10)
  - [sqlflow] fix a bug can't match variable name due to case sensitive.
  - [DB2] support empty body of create procedure.
  - [SQL Server] fix a bug raise type cast error when parsing DDL Trigger(on database)
  - [SQL Server] support column in drop constriant clause.
  
+ GSP Java version 2.0.2.9(2019-12-06)
  - [sqlflow] fix bug that treat variable name as table.
  - [sqlflow] add function name in the relationship which means the relationship is linked with a function.
  - [redshift] support IAM_ROLE, ACCESS_KEY_ID and SECRET_ACCESS_KEY parameters in Authorization Parameters.

+ GSP Java version 2.0.2.9(2019-12-02)
  - [Teradata] fix a bug can't parse negative number in compress clause in column definition.
  - [Teradata] fix cast error of gudusoft.gsqlparser.nodes.teradata.TTeradataStmtStubSqlNode

+ GSP Java version 2.0.2.8(2019-11-28)
  - [SQL Server] Keyword(ABSOLUTE ,FIRST ,DATE ,GLOBAL ,INPUT ,INTERVAL) used as column can be picked up correctly.

+ GSP Java version 2.0.2.8(2019-11-25)
  - [general] A variable in the INTO clause is represented by TObjectName, dbObjectType is set to EDbObjectType.variable.
  - [snowflake] support rename column in alter table.
  - [snowflake] support grant .. to all tables in schema to public
  - [snowflake] support comment in column definition.
  - [snowflake] support where clause after recluster in alter table statement.

+ GSP Java version 2.0.2.7(2019-11-22)
  - [MySQL] support double quote string in GROUP_CONCAT after SEPARATOR.
  - [PostgreSQL] support drop table statement in create function.

+ GSP Java version 2.0.2.7(2019-11-18)
  - [snowflake] support comment in column list of create view statement.
  

+ GSP Java version 2.0.2.7(2019-11-12)
  - [redshift] fully support trim function.
  
+ GSP Java version 2.0.2.7(2019-11-11)
  - [general/all databases] performance improvement by change data structure of keywordValueList, keywordTypeList in lexer.

+ GSP Java version 2.0.2.7(2019-11-08)
  - [teradata] support get diagnostics statement.

+ GSP Java version 2.0.2.7(2019-11-07)
  - [Teradata] able to pickup qualify clause after group by caluse.

+ GSP Java version 2.0.2.6(2019-11-05)
  - [MySQL] support window function.

+ GSP Java version 2.0.2.6(2019-11-04)
  - [snowflake] support linear in cluster by clause.
  - [snowflake] support create temp table syntax.
  - [snowflake] The join conditions are optional in JOIN, also known as a CROSS JOIN.
  - [PostgreSQL/GetTableColumn] able to get table/column from SQL inside create function.
  
+ GSP Java version 2.0.2.6(2019-11-02)
  - [PostgreSQL] fully support create procedure statement, represented by TCreateProcedureStmt.
  - [MySQL/SQL Server/Oracle/PostgreSQL] able to pick up VALUE keyword when used as a column.

+ GSP Java version 2.0.2.6(2019-10-31)
  - [Oracle] able to separate create table and other statements even if no semicolon is used after create table.
  
+ GSP Java version 2.0.2.5(2019-10-29)
  - [MySQL] bug fix in sql lock of select statement.
  - [MySQL] support CTE introduced in MySQL8.0

  
+ GSP Java version 2.0.2.5(2019-10-28)
  - [MySQL] support join specification in cross join.
  - [MySQL] support delete modifiers LOW_PRIORITY QUICK IGNORE
  - [MySQL] support partition clause of from table in select/delete/insert/update.
  
+ GSP Java version 2.0.2.5(2019-10-24)
  - [DB2] support limit clause.
  - [snowflake] support line comment start with //
  - [snowflake] support cluster by clause used before column definition in create table statement.
  - [snowflake] support AUTOINCREMENT clause in column definition.
  - [snowflake] DECIMAL , NUMERIC, Synonymous with NUMBER, except that precision and scale cannot be specified (i.e. always defaults to NUMBER(38, 0)).
  - [snowflake] support grant ... to role public

+ GSP Java version 2.0.2.4(2019-10-22)
  - [snowflake] extract function using comma instead of FROM keyword in argument list.
  - [snowflake] support pivot/unpivot clause.
  
+ GSP Java version 2.0.2.4(2019-10-21)
  - [snowflake] support nested CTEs
  - [snowflake] support create transient table
  - [snowflake] support MAX_SIZE in recluster clause of alter table.
  - [snowflake] support call statement.
  - [snowflake] support flatten table function.
  - [snowflake] support minus operator.
  - [snowflake] fix a bug can't parse trim function when use comma instead of FROM keyword.
  - [snowflake] support try_cast function.
  - [snowflake] support in condition in select list.
  - [snowflake] support grant on table .. to public
  - [snowflake] AT keyword can be used as table alias.
  - [snowflake] support position('foo',a)

  
+ GSP Java version 2.0.2.4(2019-10-18)
  - [DB2] DAYS interval keyword after subQuery expression is supported.
  - [DB2] support TRIM(BOTH from OBJECT_TYPE)
  - [DB2] support FOR FETCH ONLY WITH UR clause.

  
+ GSP Java version 2.0.2.4(2019-10-17)
  - [general] Character encoding zero causes lexer to abort prematurely
  - [PostgreSQL] escaped quotes in string literals in function bodies are not handled properly
  - [general] fastSetString performance optimization

+ GSP Java version 2.0.2.4(2019-10-16)	 
  - [general] fix bug Character encoding zero causes lexer to abort prematurely.
  - [MySQL] support length of CURRENT_TIMESTAMP.
  - [MySQL] support index type after KEY/PRIMARY KEY/UNIQUE KEY clause.
  - [PostgreSQL] support time with/without time zone datatype.
  - [MySQL] fix a bug can't parse identifier name used in  SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci

+ GSP Java version 2.0.2.4(2019-10-15)
  - [MySQL] fix a bug can't parse CHAR CHARSET utf8.
  - [MySQL] fix a bug lexer can't tokenize DEFINER=root@`%` correctly.
  - [MySQL] support set delimiter //
  - [MySQL] support empty block in create procedure.

  
+ GSP Java version 2.0.2.4(2019-10-14)
  - [general] table.EffectType set to tetAlter in alter table statement.
  - [SQL Server/GetTableColumn] year/month/day/hour/minute/second keyword used as a column name can be picked up correctly.
  - [sql server] fix a bug can't recoginze if statement after drop table statement.
  
+ GSP Java version 2.0.2.3(2019-10-10)
  - [lexer] fix a bug can't handle ?-- character of DB2/SQLServer/MySQL/PostgreSQL

+ GSP Java version 2.0.2.3(2019-10-08)
  - [getTableColumn] able to recoginze * as column in bigquery/couchbase/informix/mysql/odbc/openedge/sybase/SQL Server script.

+ GSP Java version 2.0.2.2(2019-10-06)
  - [PostgreSQL] support table alias of insert statement.
  - [PostgreSQL] support on conflict clause in insert statement.
  - [Hana] support upsert/replace statement.
  - [API] move TUpsertStmt from gudusoft.gsqlparser.stmt.couchbase to gudusoft.gsqlparser.stmt
  - [PostgreSQL] support reindex statement.
  - [PostgreSQL] support vacuum statement.
  
+ GSP Java version 2.0.2.1(2019-10-01)
  - [Hive] fix a bug can't parse order by clause after union all operator.
  - [Hive] support union all set operator

+ GSP Java version 2.0.2.1(2019-09-30)
  - [sqlserver] support add ADD PERSISTED in alter column.
  - [redshift] able to handle square bracket used in identifier.
  - [API] move TXMLPassingClause from gudusoft.gsqlparser.nodes.oracle to gudusoft.gsqlparser.nodes
  - [API] move TXMLAttributesClause from gudusoft.gsqlparser.nodes.oracle to gudusoft.gsqlparser.nodes
  - [DB2] support xmlelement/xmlcast/xmlquery/xmlserialize function and able to get column name used in the function.

+ GSP Java version 2.0.2.1(2019-09-29)
  - [snowflake] support numeric datatype without specify precision and scale
  - [snowflake] support create temporary table.
  - [snowflake] support VARIANT using : syntax after using get() command.
	
+ GSP Java version 2.0.2.1(2019-09-27)
  - [postgresql] function body in LANGUAGE plpython3u will be ignore instead of report a syntax error.

+ GSP Java version 2.0.2.1(2019-09-24)
  - [posgresql] support parallel safe keyword in create function.
  - [posgresql] support create table statement inside create function.
  - [mdx] support ampersand symbol in MDX query
	

+ GSP Java version 2.0.2.1(2019-09-23)
  - [mdx] support use HAVING to Filter an Axis
  - [mdx] support not keyword.
  - [redshift] support listagg function.

+ GSP Java version 2.0.2.0(2019-09-18)
  - [scriptWriter/MySQL] support json datatype in cast function.
  - [scriptWriter/MySQL] support select modifier SQL_CALC_FOUND_ROWS.
  - [snowflake] support RIGHT/LEFT/CURRENT_TIMESTAMP() function.
		

+ GSP Java version 2.0.2.0(2019-09-17)
  - [general] all keywords and function name properties file relocated to src\main\resources\gudusoft\gsqlparser\util
  - [general] all lexer/parser table file relocate to src\main\resources\gudusoft\gsqlparser\parser\, no need to recreate table file for a release.

+ GSP Java version 2.0.1.0(2019-08-06)
  - [API] TDb2CreateTrigger is replaced by TCreateTriggerStmt 

+ GSP Java version 2.0.1.0(2019-08-01)
  - [API] Replace TMssqlCreateTrigger with TCreateTriggerStmt to represent create trigger statement of SQL Server and Sybase.
  
+ GSP Java version 2.0.1.0(2019-08-01)
  - [Teradata] able to get open statement inside procedure.
  - [Teradata] able to get declare statement inside procedure.
  - [Teradata] support pivot operator in from clause.
  - [TPLY] fix precedence table overflow error.

+ GSP Java version 2.0.1.0(2019-07-29)
  - [API] new class TDmlEventItem represents: Create trigger dml event: delete, insert, update [of columns]
  - [API] add new enum ETriggerActionTime
  - [API] add new class TTriggerEventItemw hich is super class of : TDmlEventItem, TDdlEventItem and TDatabaseEventItem
  - [API] add new class TTriggerEventClause which is super class of : TDmlEventClause,TDdlEventClause and TDatabaseEventClause
  - [API] add new class TTriggeringClause which is super class of TSimpleDmlTriggerClause,TCompoundDmlTriggerClause and TNonDmlTriggerClause
  

+ GSP Java version 2.0.1.0(2019-07-25)
  - [PostgreSQL] fix no root node error when parse create table of typename statement.
  - [PostgreSQL] fix a nullexception when parse collate clause.
  - [PostgreSQL] support GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ]
  
  
+ GSP Java version 2.0.1.0(2019-07-25)
  - [general/snowflake] fix a nullexception when parse rename table clause in alter table.
				
+ GSP Java version 2.0.0.9(2019-07-15)
  - [MySQL/ODBC] ecognizes date and time ODBC syntax like { d 'str' }

+ GSP Java version 2.0.0.9(2019-07-11)
  - [snowflake] able to recognize the VARIANT column name syntax like: :.
  
+ GSP Java version 2.0.0.9(2019-07-09)
  - [scriptWriter] support interval unit in MySQL TIMESTAMPDIFF and TIMESTAMPADD function.
  - [Snowflake] Return null function expression in the resultColumn of select list.
  - [API/MySQL/BigQuery] add TFunctionCall.getIntervalUnit() method,able to fetch interval unit of TIMESTAMPDIFF and TIMESTAMPADD function.

+ GSP Java version 2.0.0.8(2019-07-03)
  - [MySQL] fix a bug can't detect true/false keyword used in where condition.

+ GSP Java version 2.0.0.7(2019-06-28)
  - [MySQL] Able to detect syntax error while using reserved keywords as column name.
  - [scriptWriter] fix bug of toScript() doesn't work correctly for adddate() function and := operator in select list.

+ GSP Java version 2.0.0.6(2019-06-16)
  - [PostgreSQL] fix a bug can't detect asc/desc keyword in orer by clause.
  - [DB2] FROM keyword is optional in delete statement.
  - [DB2] support SUBSTRING(SLCP_MVE_TLGR_CTNT, 1, 80)

+ GSP Java version 2.0.0.6(2019-06-03)
  - [general] fix a bug input sql file locked after parsing.

+ GSP Java version 2.0.0.6(2019-06-02)
  - [DB2] support Lateral derived tables

+ GSP Java version 2.0.0.5(2019-05-31)
  - [scriptWriter] support MySQL on duplicate key update clause
  - [scriptWriter] support MySQL joins used in update statement.
  - [API,MySQL] pickup FROM keyword in delete statement correctly.
  
+ GSP Java version 2.0.0.5(2019-05-30)
  - [couchbase,getTableColumn] able to get table column relation from couchbase merge statement.

+ GSP Java version 2.0.0.5(2019-05-28)
  - [snowflake] keyword time can be used as column name.
  - [snowflake] fix a bug can't recognize CREATE OR REPLACE TRANSIENT TABLE statement.
  - [snowflake] support ignore/respect nulls clause in window function.
  - [snowflake] support LATERAL FLATTEN clause in from clause.
  - [API] TGsqlParser.isvalidsqlpluscmd(String astr) replaced by TSqlplusCmdStatement.searchCmd(String cmdStr)
  - [Oracle] fix a bug treat c as sqlplus command at the start of a newline.
  - [Oracle] add new static method: TSqlplusCmdStatement.searchCmd(String cmdStr),ESqlPlusCmd searchCmd(String cmdStr, TSourceToken nextToken)
  - [teradata] able to recognize check workload statement.

  
+ GSP Java version 2.0.0.4(2019-05-27)
  - [snowflake] support variant column like this: :

+ GSP Java version 2.0.0.4(2019-05-23)
  - [getTableColumn] Able to link columns in value clause of merge statement to the using table.
  - [BigQuery] Able to treat TRUE/FALSE as constant correctly.

+ GSP Java version 2.0.0.4(2019-05-17)
  - [redshift] support CTE in create view statement.

	
+ GSP Java version 2.0.0.3(2019-05-15)
  - [snowflake] support varchar datatype without specify a length.
  - [snowflake] support cluster by clause in alter table.
  - [snowflake] support CTE query in create table.
  - [snowflake] support create sequence ... start 

+ GSP Java version 2.0.0.3(2019-05-15)
  - [snowflake] support swap with clause in alter table.

  
+ GSP Java version 2.0.0.3(2019-05-14)
  - [Oracle] support timestamp constant in plsql.
  - [Teradata] support GROUP BY () syntax.
  - [Teradata] fix a bug can't parse create join index.
  
+ GSP Java version 2.0.0.2(2019-05-13)
  - [PostgreSQL] Support attach/detach partition clause in alter table.
  - [PostgreSQL] Support set schema name in alter table.
  - [PostgreSQL] Support no inherit clause in check constraint.
  - [PostgreSQL] Support alter table rename constraint clause.
  - [PostgreSQL] Support alter table rename column clause.
  - [PostgreSQL] fix a bug can't parse set data type clause in alter table alter column clause.

  
+ GSP Java version 2.0.0.2(2019-05-10)
  - [snowflake] All elements of Unconditional multi-table insert and Conditional multi-table insert are available in the parse tree nodes.

+ GSP Java version 2.0.0.1(2019-05-06)
  - [Google BigQuery] Fully support Google BigQuery¡¯s standard SQL. Create function is not supported.

+ GSP Java version 1.9.8.8(2019-05-04)
  - [lexer] extend max_states from 600 to 900 to handle more rules in .l file.

+ GSP Java version 1.9.8.7(2019-04-29)
  - [formatsql] fix a bug only having clause used in select statement.

+ GSP Java version 1.9.8.7(2019-04-26)
  - [snowflake] support syntax like this: grant select on [TABLE] schema_name.table to [ROLE] public; 
  
+ GSP Java version 1.9.8.7(2019-04-24)
  - [openedge] support syntax: (column list) = (subquery) in set clause of update statement.
  
  
+ GSP Java version 1.9.8.7(2019-04-23)
  - [MySQL] support LATERAL derived view.
  - [snowflake] support RLIKE operator.
  - [Hana] support WHEN [NOT] MATCHED AND condition THEN syntax.
  - [Hana] support CTE query in insert statement.
  - [snowflake] support rename to clause in alter table.
  - [snowflake] support recluster option in alter table.

  
+ GSP Java version 1.9.8.6(2019-04-08)
  - [greenplum] support CTE in insert value clause.
  - [greenplum] support CTE in common table expression
  - [greenplum] support asc/desc in partition clause 
  - [greenplum] support time without time zone syntax.
  - [greenplum] support date function.
  - [greenplum] support value clause in common table expressions.

+ GSP Java version 1.9.8.5(2019-03-21)
  - [Teradata] fix a bug can't parse syntax like this: INTERVAL '421' MINUTE(DATE)

  
+ GSP Java version 1.9.8.5(2019-03-21)
  - [getTableColumn] fix a bug can't link columns in values clause of Oracle insert all statement.

+ GSP Java version 1.9.8.4(2019-03-11)
  - [PostgreSQL] support bind variable.

+ GSP Java version 1.9.8.3(2019-03-07)
  - [impala] keyword and built-in function checker support. 
  - [snowflake] keyword and built-in function checker support.
  
+ GSP Java version 1.9.8.2(2019-03-01)
  - [Teradata] fix a bug can't parse simple expression used in OVERLAPS operator.
		
+ GSP Java version 1.9.8.2(2019-02-28)
  - [PostgreSQL] Able to handle symbol '?' in where condition.

+ GSP Java version 1.9.8.1(2019-02-19)
  - [Teradata] support order by and with load clause in create index statement.
  - [Teradata] support alter table to current.
  - [Teradata] support drop temporary table.
  - [Teradata] support drop table with ALL keyword.
  - [Teradata] support drop error table syntax.
  - [API] TCommentOnSqlStmt becomes the descendant class of TCustomSqlStatement instead of TCustomOracleSqlStmt

  
+ GSP Java version 1.9.8.1(2019-02-13)
  - [SQL Sever] support create cluster columnstore index statement.
  
+ GSP Java version 1.9.8.0(2019-02-13)
  - [MDX/XML schema] improvement xml schema to support mdx select statement and other elements such identifer/function and etc.

+ GSP Java version 1.9.8.0(2019-02-06)
  - [MDX] support variable in function call.
  - [MDX] support VBA!round function.	
  
+ GSP Java version 1.9.8.0(2019-02-03)
  - [API] TMdxAxisNode.getName_OR_Number() replaced by TMdxAxisNode.getAxis()

+ GSP Java version 1.9.7.8(2019-02-01)
  - [Hive] support temporary keyword in create table statement.
  
+ GSP Java version 1.9.7.8(2019-01-31)
  - [SQL Server] support table index in create table statement.
			
+ GSP Java version 1.9.7.8(2019-01-30)
  - [Oracle] support UNRECOVERABLE in create table statement.
  - [Oracle] fix a bug can't get quoted SQL from execute immediate statement.

  
+ GSP Java version 1.9.7.7(2019-01-29)
  - [MySQL] support table prefix in alter table add primary key clause.
  -[Oracle] able to recognize CREATE OR REPLACE CONTEXT statement.

+ GSP Java version 1.9.7.7(2019-01-28)
  - [Oracle] support case expression in using clause of execute immediate statement.
  - [Oracle] support multiset union all in plsql expression.
  - [Oracle] support IS A SET operator in plsql code.
  - [general] fix a "Object reference not set to an instance of an object" bug when parsing set Content.write( substring(@Content, 1, @Length), @DataIndex, @Length ) clause in update statement.
  - [API] add new static methods: TGSqlParser.parseExpression,parseFunctionCall,parseObjectName,parseSubquery


+ GSP Java version 1.9.7.7(2019-01-25)
  - [general] fix a null exception bug when get table name from FREETEXTTABLE/CONTAINSTABLE clause.

  
+ GSP Java version 1.9.7.6(2019-01-24)
  - [Oracle] support column_properties in materialized_view_props clause of CREATE MATERIALIZED VIEW statement.
  - [DB2] fully support XMLTABLE function in from clause and able to get columns in XMLTABLE funciton.
  
+ GSP Java version 1.9.7.6(2019-01-23)
  - [Hana] fix a bug can't handle operator <= followed by ? directly.

+ GSP Java version 1.9.7.5(2019-01-11)
  - [Teradata] fix a bug can't parse explict datatype conversion to DATE in using clause.
  - [Teradata] support as deferred/locator clause in using clause.
  - [Teradata] fix a bug can't support explict datatype conversion in exec parameters.


+ GSP Java version 1.9.7.4(2019-01-10)
  - [Teradata] fix a bug lexer can't work for LastInvoiceDate >= date -? correctly if there is no space between - and ?
  
+ GSP Java version 1.9.7.4(2019-01-09)
  - [API] add new method: TAlterIndexStmt.getTableName()

+ GSP Java version 1.9.7.3(2019-01-07)
  - [Javadoc] enhanced document for TAlterTableOption

+ GSP Java version 1.9.7.3(2019-01-04)
  - [API] change enum AlterColumnSetDefault,AlterColumnDropDefault,AlterColumnDropNotNull,
    AlterColumnSetNotNull, AlterColumnSetStatistics,AlterColumnSetOptions,AlterColumnResetOptions, AlterColumnSetStorage,AlterColumnSetDataType,
   to  AlterColumn, with AlterColumnSubType set to  SetDefault,DropDefault,DropNotNull,SetNotNull,SetStatistics,SetOptions,ResetOptions,SetStorage,SetDataType,
  - [API] add new enum EAlterColumnSubType, subtype of alter column in alter table statement.
  - [general] use  TAlterTableOption.init to set column name in alter column clause of alter table statement instead of setColumnName()
  - [general] if TAlterTableOption.getOptionType() = EAlterTableOptionType.AddColumn, getColumnDefinitionList() will return all new added columns.
  - [Javadoc] enhanced document for delete, insert, merge, udpate, create table, alter table, alter database.

  
+ GSP Java version 1.9.7.2(2019-01-02)
  - [API] new class TXmlTableParameter, TXMLPassingClause, 
  - [Oracle] fully support XMLTABLE function in from clause and able to get columns in XMLTABLE funciton.
  

+ GSP Java version 1.9.7.2(2018-12-26)
  - [API] TUpdateSqlStatement.getReferenceJoins() replaced by TUpdateSqlStatement.joins
  - [API] TDeleteSqlStatement.getReferenceJoins set to from clause in delete statement correctly.
  
+ GSP Java version 1.9.7.1(2018-12-19)
  - [API] add new method: TCommonBlock.getEndlabelName(), TCreateProcedureStmt.getEndlabelName(), TCreateFunctionStmt.getEndlabelName(), TPlsqlCreatePackage.getEndlabelName()
  - [Oracle] labelName and endLabelName set correctly.
			
+ GSP Java version 1.9.7.1(2018-12-18)
  - [MDX] fix a cast exception in TMdxPropertyNode.init method.
  - [DB2] support listagg function.

  
+ GSP Java version 1.9.7.1(2018-12-13)
  - [SQL Server] support Addition Assignment in set clause of udpate statement.
  - [PostgreSQL] support grouping sets clause in group by clause.
  - [general] add a new static variable: TBaseType.LEXER_INIT_MAX_MATCHES which will be used when TCustomLexer.max_matches is initialized.
     user can set a small value of TBaseType.LEXER_INIT_MAX_MATCHES such as 10240 if they need a small memory usage of the parser instance
	 before creating an object of the parser.
  - [Oracle] fix a bug can't parse condition in for loop when this condition with parenthesis.
  - [general] fix a null exception when call TTable.getTableName().getTableString() ,TTable.getTableName().getTableToken() of alter table rename to new tablename.

  
+ GSP Java version 1.9.7.0(2018-12-10)
  - [general] move source code demo and test to a new project.

+ GSP Java version 1.9.6.3(2018-12-05)
  - [SQL formatter] keep comment at the begin of SQL.
  - [API] enable visitor interface of TMySQLCreateTableOption

+ GSP Java version 1.9.6.2(2018-11-29)
  - [SQL Server] support offset fetch in order by clause.

+ GSP Java version 1.9.6.2(2018-11-22)
  - [Teradata] enhanced support for parameters in create macro.
  - [Oracle] support of type under clause in create view statement.
  - [DB2] support expression in the in condition without parenthesis.
  - [DB2] able to fetch defualt value in column definition.

+ GSP Java version 1.9.6.2(2018-11-21)
  - [Oracle] fix a bug can't get view alias in CREATE MATERIALIZED VIEW (this bug was introduced in v1.9.5.9)
  - [SQL Server] support begin conversation timer in create procedure.
  - [SQL Server] fix a bug can't handle VARIABLE in description of END CONVERSATION.
  - [SQL Server] fix a bug can't handle the NEXT keyword used in the qualified name.
  - [Oralce] support ? in the third parameter of translate function.
  - [demo\toXML] able to output else clause in if statement.
  - [Teradata] support into clause after where clause.

+ GSP Java version 1.9.6.1(2018-11-20)
  - [Teradata] support NULL keyword in macro parameter declaration
  - [Teradata] support syntax put WHERE clause before FROM in select statement.
  - [demos\toXML] fix a bug can't generate XML output for parenthesesed join clause 
		
+ GSP Java version 1.9.6.1(2018-11-19)
  - [demo\dlineage] improve the performance of DataFlowAnalyzer while process stored procedure of SQL Server database.
  
+ GSP Java version 1.9.6.0(2018-11-16)
  - [Oracle] fix nullexception when parse statements inside create trigger timing point section.
		
+ GSP Java version 1.9.5.9(2018-11-13)
  - [API] add Oracle related enum: EMvRefreshType, EOracleBuildType, EOracleLoggingType, EOracleParallelType, 
  - [API] add Oracle related new class: TMaterializedViewProps, TOracleBuildClause, TOracleCacheClause, TOracleCreateMvRefresh, TOracleCreateMvRefreshOption,
			TOracleLoggingClause, TOracleParallelClause, TOracleUsingIndex, 
			
+ GSP Java version 1.9.5.8(2018-11-12)
  - [Sybase] support default values clause in insert statement.
  
+ GSP Java version 1.9.5.8(2018-11-11)
  - [Oracle] support parentheses expr in using clause of execute immediate statement.
  - [Oracle] fix a bug can't parse Parameters keyword used in a qualified data type.
  - [Oracle] fix a bug can't handle := operator is $$ follows it directly.
  - [SQL Server] fix a NullPointerException when parse update statement including join clause in from clause.

+ GSP Java version 1.9.5.7(2018-11-09)
  - [MySQL] support COLLATE clause after not null in create table statement.
  
+ GSP Java version 1.9.5.7(2018-11-08)
  - [Impala] support CTE.

+ GSP Java version 1.9.5.6(2018-10-24)
  - [Teradata] fix a bug can't handle select statement start with ( at the begin of the SQL query.
  - [Teradata] support create join index statement.
  - [Teradata] support syntax that put a comma at the begin of a in expr.
  
+ GSP Java version 1.9.5.5(2018-10-21)
  - [Oracle] able to recognize and parser noneditionable trigger
  - [Teradata] support at time zone clause of DATE datatype.
  - [Teradata] support with return only clause in declare cursor statement.
  - [SQL Server] support OBJECT:: in grant statement.
  - [SQL Server] support xmlnamespaces clause used together with CTE.

+ GSP Java version 1.9.5.5(2018-10-19)
  - [Teradata] fix a bug can't handle resignal statement with only RESIGNAL keyword.
  - [Snowflake] fix a bug can't handle IDENTITY clause in create table statement.
  - [Snowflake] fully support create view statement.
  - [Netezza] support modify column in alter table statement.
  - [Oracle] fix a bug can't handle with object IDENTIFIER in create view of object type.

+ GSP Java version 1.9.5.5(2018-10-18)
  - [Netezza] support set privileges in alter table statement.
  - [Netezza] support if exists clause in drop table statement.
  
+ GSP Java version 1.9.5.4(2018-10-17)
  - [SQL Server] Doesn't treat [DATE] as a regular column name.
  - [demo/TTraceColumn] fix a out out memory bug when handling nested function call.
  - [Teradata] IS keyword can be used as AS keyword in COMMENT ON TABLE.
  - [SQL SERVER] support QUERYTRACEON query hint.
  - [API] add new enum: EQueryHint.E_QUERY_HINT_QUERYTRACEON

+ GSP Java version 1.9.5.4(2018-10-16)
  - [Teradata] support collect statistics with a single index column name.
  - [Teradata] support qualify clause after group by clause.
  - [Teradata] support script clause in from clause.
  - [Teradata] able to recognize label statement.

+ GSP Java version 1.9.5.4(2018-10-15)
  - [Teradata] support function call in index column of COLLECT STATS statement
  - [Teradata] able to handle qualify clause between having and group by clause.
  - [Teradata] fix a bug can't handle index column name in COLLECT STATS statement.
  - [Teradata] support qualify clause after sample clause in select statement.
  - [Teradata] support  percentile_cont and percentile_disc function.
  - [Teradata] support hash by random clause in insert statement.
  - [Hive] support over clause in case expression.
  - [Hive] fix a bug can't handle ? in limit clause.

+ GSP Java version 1.9.5.4(2018-10-12)
  - [Teradata] fix a bug can't handle $var used after DATE keyword.
  - [Teradata] fix a bug can't parse range_n clause in create table definition clause.
  - [Teradata] Able to recognize EXIT statement.
  

+ GSP Java version 1.9.5.3(2018-10-08)
  - [Hive] support NOT LIKE predicate.
  - [Hive] fix a bug can't handle DIV operator.

  
+ GSP Java version 1.9.5.2(2018-10-03)
  - [Teradata] support where clause between group by and having clause in select statement.
  - [Teradata] collectStatistics statement bug fix.
  - [Teradata] support unique primary key clause in collectStatistics statement.
  - [Teradata] support multiple sample clause in collectStatistics statement.
  - [Teradata] support primary key clause before on in collectStatistics statement.
  - [Teradata] fix a bug can't parse replace function.
		

+ GSP Java version 1.9.5.2(2018-09-30)
  - [API/Oracle] add new class TPhysicalAttributesClause, TPhysicalAttributesItem, TPhysicalProperties, TSegmentAttributesClause, TSegmentAttributesItem
  - [API/Oracle] add new class TStorageClause to represent storage clause.

+ GSP Java version 1.9.5.2(2018-09-29)
  - [API/Oracle] add new enum EFlashCacheType to flash cache.
  - [API/Oracle] add new enum EBufferPoolType to buffer pool.
  - [API/Oracle] add new class TSizeClause to represent size clause.
  - [API/Oracle] add new enum EStorageType to represent storage item type.
  - [API/Oracle] add new class TStorageItem to represent storage clause item.
  - [API/Oracle] add new class TCreateMaterializedViewLogSqlStatement represents Oracle create materalized view log statement.
  - [MySQL] able to pickup renamed table name in alter table rename to.
  - [MySQL] link new add column to table in alte table change column.
  - [demo/getTableColumn] Able to pickup table and column in create index statement.

+ GSP Java version 1.9.5.1(2018-09-27)
  - [Netezza] support create database statement.
  - [Netezza] support comment on statement.
  - [Netezza] support lock table statement.

+ GSP Java version 1.9.5.1(2018-09-26)
  - [API] rename EHiveLockMode to ELockMode
  - [API] move EHiveLockMode from gudusoft.gsqlparser.nodes.hive to gudusoft.gsqlparser.nodes


+ GSP Java version 1.9.5.0(2018-09-18)
  - [API] Able to get characterSet and collationName from TCreateDatabaseSqlStatement.
  - [demo/toXML] support TIntoClause in xmlVisitor
  
+ GSP Java version 1.9.4.9(2018-09-14)
  - [Teradata] support TD_UNPIVOT Table Operators function.
  
+ GSP Java version 1.9.4.8(2018-09-13)
  - [Oracle] fix a bug can't detect public keyword in create synonmy statement.
  - [Oracle] fix a bug can't parse alter index inside stored procedure and not ended with a semicolon


+ GSP Java version 1.9.4.7(2018-09-10)
  - [demo/getTableColumn] Able to get column name in primary/unique key constraint clause of create table statement.
  - [API] New method: TAlterTableOption.getReferencedTable() returns the referenced table in foreign key.
  - [demo/getTableColumn] Able to get column name in add foreign key constraint clause of alter table statement.
  - [demo/analyzescript, MySQL] fix a bug can't detect add primary key constraint clause of alter table statement 
  - [demo/getTableColumn] Able to get column name in add primary key constraint clause of alter table statement.
  - [demo/getTableColumn] Able to get column name in change column clause of alter table statement.
  - [demo/getTableColumn] Able to get column name in drop column clause of alter table statement.
  
+ GSP Java version 1.9.4.7(2018-09-10)
  - [SQL Server] fix a null exception bug when process drop schema inside if statement.
  - [SQL Server] fix a null exception bug when process drop database inside if statement.
  
+ GSP Java version 1.9.4.6(2018-09-06)
  - [SQL Server] support with option in drop constraint clause in alter table statement.
  - [SQL Server] fully support alter index statement.
  
+ GSP Java version 1.9.4.5(2018-08-31)
  - [API] TFunctionCall.setExpr3 was replaced by setLengthExpression (substring function)
  - [API] TFunctionCall.setExpr2 was replaced by setStartExpression (substring function)
  - [API] TFunctionCall.setExpr1 was replaced by setDateExpression (extract function),setCastOperand (cast function)
          setTypeExpression (DB2 subtype-treatment: treat), setSourceExpression (substring function),
		  setColumnNameOrListExpression (SQL Server contains predicate)
		  
+ GSP Java version 1.9.4.4(2018-08-30)
  - [Javadoc] Finished doc comments for TGSqlParser

+ GSP Java version 1.9.4.4(2018-08-24)
  - [Javadoc] Finished doc comments for TSourceToken, TParseTreeNode class.
  
+ GSP Java version 1.9.4.4(2018-08-24)
  - [Javadoc] Finished doc comments for TObjectName class.
  
+ GSP Java version 1.9.4.4(2018-08-22)
  - [API] Add new method TSourceToken TSourceToken.nextSolidToken(boolean treatCommentAsSolidToken)
  - [API] Add new method TSourceToken TSourceToken.prevSolidToken(boolean treatCommentAsSolidToken)

+ GSP Java version 1.9.4.4(2018-08-20)
  - [MySQL] support compressed keyword in alter table row_format clause.
  - [MySQL] support show index statement
  - [API] add new class TShowIndexStmt
  
+ GSP Java version 1.9.4.3(2018-08-15)
  - [Teradata] support COMPILE WITH NO SPL clause in alter procedure statement.
  - [PostgreSQL] support rename table clause in alter table statement.
  
+ GSP Java version 1.9.4.3(2018-08-13)
  - [getTableColumn] fix a bug can't recognize the column derived from CTE.
  
+ GSP Java version 1.9.4.2(2018-07-31)
  - [Oracle] fix a bug can't parse plsql block not ended by a semicolon.
  - [getTableColumn] link column in add/modify clause to table in alter table statement.
 
+ GSP Java version 1.9.4.2(2018-07-27)
 - [API] add new method: TSourceToken.toScript()

+ GSP Java version 1.9.4.2(2018-07-26)
 - [Teradata] Teradata Geometry datatype support 3 parts function.
 - [Teradata] support syntax that using "," between no values in function parameters.
 
+ GSP Java version 1.9.4.1(2018-07-25)
 - [Dlineage/demo] fix a bug source column is not shown correct when table name in from clause is with bracket

+ GSP Java version 1.9.4.1(2018-07-19)
 - [Teradata] fix a bug can't parse || operator followed by a variable directly.

+ GSP Java version 1.9.4.1(2018-07-18)
 - [API] TMssqlGrant replaced by TGrantStmt.
 - [SQL Server] fully support create schema statement.
 - [MySQL] fix a bug can't handle if not exists clause in create database statement.

+ GSP Java version 1.9.4.1(2018-07-17)
 - [MySQL] Support a list of tables of rename table statement.

+ GSP Java version 1.9.4.1(2018-07-16)
 - [scriptWriter] fix a bug can't handle group_concat() function correctly.

+ GSP Java version 1.9.4.0(2018-07-12)
 - [scriptWriter] fix a bug can't toScript() not working for regexp operator.
 
+ GSP Java version 1.9.4.0(2018-07-09)
 - [Teradata] support DYNAMIC RESULT SETS in create procedure statement.
 - [Teradata] fix a bug that parser can't parse a where clause before the from clauses
 - [Teradata] Able to parse sample clause before where clause.
 - [Teradata] Locking Access parse error.
 - [Teradata] Able to parse create trigger statement.
 - [Teradata] support "order by" clause within the scope of an xmlagg function call.
 - [Teradata] support unique keyword after select.

+ GSP Java version 1.9.4.0(2018-07-07)
 - [Teradata] Two sets of brackets is causing the parser to fail.
 - [API] add new classes related to execute_option: TExecuteOption, TResultSetsExecuteOption, TResultSetDefinition,TInlineResultSetDefinition,TSchemaObjectResultSetDefinition
 - [SQL Server] support execute_option in execute statement.
 - [DB2] support period clause in update statement.

 
+ GSP Java version 1.9.3.8(2018-07-03)
 - [Teradata] fix null exception bug in WindowFrame clause. 
 - [MySQL] Able to get default expression in alter table alter column clause.
 - [MySQL] use TRenameStmt to represent rename table statment.
 - [MySQL] fully support drop procedure statement.
 - [SQL Server] use TDropProcedureStmt instead of TMssqlDropDbObject to represent drop procedure statement.
			
+ GSP Java version 1.9.3.7(2018-06-15)
 - [Teradata] support return...hash...local sequence in table clause.
 - [Teradata] support upper function in the right side of IN condition.
 - [Teradata] support AT clause in TIMESTAMP constant.
 - [Oralce] fix a bug can't parse CREATE MATERIALIZED VIEW statement when STORE AS BASICFILE clause is used.
 - [Oracle] support alter materalized view refresh clause.
 - [Hana] support placeholder syntax in from table clause.

 
+ GSP Java version 1.9.3.6(2018-06-13)
 - [Redshift] fix a bug that include limit clause in order by clause.
 	 
+ GSP Java version 1.9.3.6(2018-06-12)
 - [API] add new method: TInformixOuterClause.getTableList()
 - [PostgreSQL] fix a null exception bug when parse create table like statement.
 - [DB2] support copy options in create table statement.
 - [Informix] using TLimitClause to fetch skip clause, first max, limit max value in select list.
 
+ GSP Java version 1.9.3.5(2018-06-01)
 - [XML\xsd] shipped sqlschema.xsd together with this libraty.
 - [XML\xsd] add NOT keyword in generated xml for like, between predicate.
 - [XML\xsd] support cte_list type in query_expression_type
 - [general] fix a bug caused by set tableExpr in setTableonly() method.
 
+ GSP Java version 1.9.3.5(2018-05-31)
 - [demo\toXML] improve sqlschema.xsd to support all tags generated by toXML demo.

+ GSP Java version 1.9.3.5(2018-05-30)
 - [general] fix a bug not treat FCT as table collection expression in SQL like this: select a from TABLE(FCT);

+ GSP Java version 1.9.3.4(2018-05-29)
 - [demos\columnImpact\] fix a bug introduced when support subquery in TTable.getTableName() 

+ GSP Java version 1.9.3.4(2018-05-28)
 - [netezza] supprt overlaps operator in where condition.
 
+ GSP Java version 1.9.3.4(2018-05-28)
 - [general] fix a null exception error which will raised when call TTable.getTableName() when tableType is subquery.
 
+ GSP Java version 1.9.3.3(2018-05-22)
 - [greenplum] support like other_table clause in create table.
 - [API] add new enum: ETableElementType

+ GSP Java version 1.9.3.2(2018-05-18)
 - [DB2] support DEACTIVATE ROW ACCESS CONTROL clause in ALTER TABLE
 - [DB2] support UNIQUE keyword in select statement.
 - [demo\toXML] support create variable statement.
 
+ GSP Java version 1.9.3.1(2018-05-17)
 - [DB2] Support Oracle pl/sql code used in DB2 database by calling oracle parser internally.
 - [DB2] fix a bug can't get create trigger staetment correctly if there is a for cursor in loop .. end loop statement inside.
 - [demo\toXML] supprot create alias statement.
 - [DB2] support create variable statement.
	

+ GSP Java version 1.9.3.1(2018-05-16)
 - [DB2] lexer error while processing literal '/\_op\_sox/Project/Default/BusinessEntity/%'
 - [DB2] support PRIOR operator.
 - [DB2] support Hierarchical Query Clause.
 - [DB2] can't detect declare statement in create trigger statement.
 - [DB2] support varchar2 datatype.
 
	

+ GSP Java version 1.9.3.1(2018-05-15)
 - [DB2] support decfloat/CODEUNITS16, CODEUNITS32 datatype.
 - [DB2] support OCTETS in varchar/char datatype.

 
+ GSP Java version 1.9.3.0(2018-05-14)
 - [demo\toXML] support TSetDatabaseObjectStmt in toXML demo.
 
+ GSP Java version 1.9.3.0(2018-05-13)
 - [DB2] Able to get full information from set [current] schema statement.
 - [DB2] support with no row movement clause in create view statement.
 - [DB2] support comment statement.
 - [DB2] support create audit policy statement.
 - [API] move TCreateAuditPolicyStmt, TAlterAuditPolicyStmt from gudusoft.gsqlparser.stmt.hana to gudusoft.gsqlparser.stmt
 - [SQL Server] support order by clause before union set operator.
 - [MySQL] support using clause in execute statement.
 - [MySQL] support timestamp argument in get_format function.
 - [MySQL] support time/datatime/double/signed int datatype in cast function.
 - [MySQL] support between condition in select list.
 - [MySQL] fully support create database statement.
 - [MySQL] fix a bug TObjectName.getTableString() and TObjectName.getSchemaString() not return schema and table name correctly in describe statement.

 
+ GSP Java version 1.9.2.9(2018-05-09)
 - [SQL Server] Fully support drop schema statement, represented by TDropSchemaSqlStatement
 - [API] add TDropDatabaseStmt.getDatabaseNameList()
 - [SQL Server] Fully support drop database statement, represented by TDropDatabaseStmt
 
+ GSP Java version 1.9.2.9(2018-05-08)
 - [DB2] IS keyword can be used as table alias.
 
+ GSP Java version 1.9.2.9(2018-05-07)
 - [Oracle] Support drop partition clause in alter table statement.
 
+ GSP Java version 1.9.2.8(2018-04-28)
 - [DB2] Support create alias statement.

+ GSP Java version 1.9.2.7(2018-04-25)
 - [Oralce] support keep/nokeep/session/global option in create sequence statement.
 - [Teradata] fix a bug that dividing variables causing parsing issue.
 - [Teradata] support create macro only having ; within it.
 - [Teradata] single line comment in stored procedure cause parsing error.
 - [Teradata] support with/without return clause in declare statement.
 - [Teradata] support signal and resignal statement in procedure.
	 
+ GSP Java version 1.9.2.7(2018-04-25)
 - [Sybase] Able to recogine load table statement.
 - [General] fix a java.lang.ClassCastException: gudusoft.gsqlparser.nodes.TColumnWithSortOrder cannot be cast to gudusoft.gsqlparser.nodes.TIndexColName

+ GSP Java version 1.9.2.6(2018-04-20)
 - [DB2] fix a bug can't parse if statement if there is a label before it.
 - [DB2] support NOT SECURED clause in create trigger statement.
 - [DB2] support diagnostic-string-expression in signal-information clause of signal statement.
 - [DB2] fix a bug can't fetch create trigger statement correctly if it comes after create procedure statement.
 - [DB2] support release savepoint statement.
 
+ GSP Java version 1.9.2.6(2018-04-20)
 - [getTableColumn] fix a bug can't detect select list column derived from a subquery which is consists of several select statement by using union/intersect/except operator.

+ Java version 1.9.2.5(2018-04-18)
 - [Netezza] support execute statement.
 
+ Java version 1.9.2.4(2018-04-09)
 - [Oracle/plsql] fix a bug can't detect pacakge name in assignment statement in plsql.
 - [API] add TObjectName.getPackageToken() returns the source token of Oracle package name.
 - [API] add TObjectName.getNumberOfPart() which returns the total part number of an objectname. For example: scott.emp which return 2.
 - [Netezza] Able to get new synonmy name in alter synonmy statement.
 - [Netezza] Able to pickup SAMEAS tablename in create external table statement using TCreateTableSqlStatement.getAsTable().
 
+ Java version 1.9.2.4(2018-04-08)
 - [demo/formatsql] support RTF output in this release.
 - [Sybase] support execute command without exec keyword if there is no multiple statements in the batch
 
+ Java version 1.9.2.3(2018-04-07)
 - [SQL Server] support CLOSE { SYMMETRIC KEY key_name | ALL SYMMETRIC KEYS } 
 - [Teradata] support default clause in parameter declaration.
 - [Netezza] support substring syntax like substring (arg1,arg2,arg3)

+ Java version 1.9.2.3(2018-04-03)
 - [MySQL] Able to recogine show count(*) errors/warnings
 
+ Java version 1.9.2.2(2018-04-03)
 - [Teradata] support select list item with parenthesis around.
 - [Teradata] support DEFAULT DATE attribute in parameter declaration of create/replace macro statement.
 
+ Java version 1.9.2.1(2018-03-29)
 - [Teradata] support XC, XCF, XCF after character type.
 - [Teradata] fix a bug can't parse END IF keyword after elseif clause directly.
 - [Teradata] support while statement.
 - [Teradata] fix a bug can't recognize ( symbol before datatype in create table statement.
 - [Teradata] support DECLARE EXIT HANDLER/DECLARE CONTINUE HANDLER;
 

+ Java version 1.9.2.1(2018-03-27)
 - [Teradata] fix a bug can't parse quaify clause after column alias.

+ Java version 1.9.2.0(2018-03-26)
 - [SQL Server] support IF EXISTS clause in drop table statement.
 - [MySQL] support qualified name in describe statement.
 
 
+ Java version 1.9.2.0(2018-03-26)
 - [Hana] support all statements of Hana including create procedure/function/trigger stored procedure.

+ Java version 1.9.1.2(2018-03-19)
 - [Hana] support validate user/ldap provider statement.
 - [Hana] support update statement.
 - [API] move TUnsetStmt from package gudusoft.gsqlparser.stmt.snowflake; to package gudusoft.gsqlparser.stmt
 - [Hana] support unload/unset statement.
 - [Hana] support truncate collection/table statement.

+ Java version 1.9.1.2(2018-03-18)
 - [Hana] support set history session/pse/schema/system license/transaction statement.
 - [Hana] support rollback statement.
 - [Hana] support rename collection/column/database/index/table statement.
 - [Hana] support recover data/database statement.
 - [Hana] support merge delta/merge statement.
 - [Hana] support lock table/merge delta statement.
 - [API] rename THiveLockSqlNode to TLockSqlNode, mover from package gudusoft.gsqlparser.nodes.hive; to package gudusoft.gsqlparser.nodes;
 - [API] rename THiveLockTable to THiveLockTable and move from package gudusoft.gsqlparser.stmt.hive; to package gudusoft.gsqlparser.stmt
 - [Hana] support load statement.
 - [Hana] support insert statement.
 - [Hana] support export/import statement.
 - [Hana] support explain plan statement.

+ Java version 1.9.1.2(2018-03-15)
 - [API] move TDropTriggerSqlStatement from package gudusoft.gsqlparser.stmt.postgresql; to package gudusoft.gsqlparser.stmt
 - [Hana] support drop audit policy, drop certificate/collection/credential statement.
 - [Hana] support delete statement.
 - [Hana] support create workload class/mapping statement.
 - [Hana] support create type/user/usergroup/virtual function/virtual table statement.
 - [API] TMssqlCreateType move from package gudusoft.gsqlparser.stmt.mssql to package gudusoft.gsqlparser.stmt
 - [Hana] support create table statement.
 
+ Java version 1.9.1.2(2018-03-14)
 - [Hana] support create synonmy statement.
 - [Hana] support create role/saml provider resource/schema/sequence/statistics/structured privilege statement.
 - [API] move TCreateRoleStmt from gudusoft.gsqlparser.stmt.snowflake to gudusoft.gsqlparser.stmt
 - [Hana] support create JWT provider/LDAP provider/pse/remote resource statement.
 - [Hana] support create index statement.
 - [Hana] support create certificate/collection/credential/database/fulltext index/graph workplace statement.
 
+ Java version 1.9.1.1(2018-03-12)
  - [getTableColumn] fix a bug can't link  a un-qualified column to table using IMetaDatabase interface.
  - [Oracle] support SUBMULTISET condition in plsql if statement.
  - [Oracle] fix a null exception when processing object_access_expression in toXML demo 
  - [SQL Server] support masked with clause in create/alter table statement.
  
+ Java version 1.9.1.0(2018-03-08)
 - [Oracle] support the combination of GENERATED and NOT NULL keywords in create table statement.
 - [Oralce] support SUBMULTISET condition.
 - [Oracle] support for the EXTEND procedure in pl/sql.
 - [demo/toXML] support CTE in select statement which is not at the top level.
 
+ Java version 1.9.0.9(2018-03-07)
 - [Netezza] support if not exists clause in create table statement.
 - [Netezza] fully support create synonmy, sequence statement.
 - [Netezza] fully support drop sequence, grant statement.
 
+ Java version 1.9.0.8(2018-03-02)
 - [MySQL] fails on encountering string literals with a certain form, making it impossible to route stetements containing them
 
+ Java version 1.9.0.7(2018-02-26)
 - [Hana] support create audit policy statement.
 - [Hana] support call, comment on, commit, connect statement.
 - [Hana] support backup check, backup data, backup list data statement.
 - [Netezza] support synonym, drop database, call statement.
 - [Netezza] parse alter table query which adds multiple columns at a time
 - [Netezza] support drop procedure statement.
 - [Hana] support backup cancel, backup catalog delete statement.
 - [Hana] support alter usergroup, alter view, alter view cache, alter virtual table, alter workload class, alter workload mapping statement.

+ Java version 1.9.0.7(2018-02-24)
  - [API] TAlterUserStmt more from gudusoft.gsqlparser.stmt.snowflake to gudusoft.gsqlparser.stmt
  - [Hana] support alter table, alter user statement.
  - [API] TAlterRoleStmt move from gudusoft.gsqlparser.stmt.vertica to gudusoft.gsqlparser.stmt
  - [Hana] support alter PSE, alter remote source, alter role, alter saml provider, alter sequence, alter statistics, alter system statement.

+ Java version 1.9.0.6(2018-02-23)
  - [Netezza] fix a bug can't handle using clause in create external table statement.
  - [Hana] support alter audit policy, alter credential, alter database, alter fulltext index, alter index, alter LDAP provider, alter JWT provider statement.
  
+ Java version 1.9.0.5(2018-02-14)
  - [demo/dlieange] dlineage improvement.
  
+ Java version 1.9.0.4(2018-02-06)
  - [general] fix a null exception error when iterate the convert function call.
				
+ Java version 1.9.0.3(2018-02-02)
 - [netezaa] Able to pickup etkTemp info when create table using TEMP clause
 - [general] fix OutOfMemory error when process nested case statement.


+ Java version 1.9.0.3(2018-02-01)
 - [DB2] "-" can't be used as character in identifier.
 - [DB2] support for cursor name in declare statement.
 - [DB2] support drop table statement inside create procedure statement.
 - [Sybase] support order by clause in update statement. 
 - [Oracle] fix a bug CASE keyword can't be used as table alias.

	
+ Java version 1.9.0.2(2018-01-25)
  - [netezaa] support merge statement.
  - [Oracle] fully parse drop procedure statement
  - [Oracle] fix a bug  TObjectName.schemaString is blank after processing view name in drop MATERIALIZED VIEW statement.	
  - [netezaa] fully parse drop view statement.
  - [netezaa] fully parse alter synonmy statement.
  - [netezaa] fully parse alter schema statement.
  
+ Java version 1.9.0.1(2018-01-24)
  - [netezaa] fully parse drop table statement.
  - [netezaa] fully parse alter database statement.
  - [netezaa] fully parse alter view statement.
  - [netezaa] fully parse create user statement.
  - [netezaa] support create external table .. sameas syntax.
  - [netezaa] support rename column in alter table statement.
  - [netezaa] fix a bug can't parse CREATE OR REPLACE materialized VIEW.
  
+ Java version 1.9.0.1(2018-01-18)
  - [snowflake] support all snowflake statements.
  - [snowflake] support truncate table statement, undrop database, schema, table statment, unset, use statement.
  - [snowflake] support line comment start in #

+ Java version 1.9.0.0(2018-01-17)
  - [snowflake] support show file formats, functions and all show statements.
  
+ Java version 1.9.0.0(2018-01-16)
  - [API, general] move gudusoft.gsqlparser.stmt.TRedshiftShow to gudusoft.gsqlparser.stmt.TShowStmt
  - [API, general] move gudusoft.gsqlparser.stmt.TRedshiftSet to gudusoft.gsqlparser.stmt.TSetStmt
  - [snowflake] support put, remove, revoke, set, show columns, show databases statement
  
+ Java version 1.9.0.0(2018-01-15)
  - [snowflake] support list, merge statement
  
+ Java version 1.9.0.0(2018-01-12)
  - [snowflake] support insert statement.
  - [snowflake] support get statement,grant ownership, grant statement
  
+ Java version 1.9.0.0(2018-01-11)
  - [snowflake] support all drop statements.
  - [snowflake] support drop database, drop file format, drop pipe, drop role, drop network policy, drop monitor rresour
  - [API,redshift] move gudusoft.gsqlparser.stmt.redshift.TRedshiftDropDatabase to gudusoft.gsqlparser.stmt.TDropDatabaseStmt
  - [snowflake] support desc statement, drop function,

+ Java version 1.9.0.0(2018-01-10)
  - [snowflake] support delete,
  - [snowflake] support create user, create warehouse

+ Java version 1.9.0.0(2018-01-09)
  - [snowflake] support create stage, create table,
  
+ Java version 1.9.0.0(2018-01-08)
  - [snowflake] support create schema, create sequence, create share,
  
+ Java version 1.9.0.0(2018-01-03)
  - [snowflake] support create pipe, create resource monitor, create role,
  - [snowflake] support copy into statement, create database, create file format,create function, create network policy

+ Java version 1.9.0.0(2018-01-03)
  - [snowflake] support bind variable
  - [snowflake] support comment, commit statement