You are here: Version history
ContentsIndexHome
PreviousUpNext
Version history
Version history

 

Version 2.2.2 (May 14, 2012, .NET version)

* Support MDX. 

* [pretty print] format privot table in a more readable layout 

* [pretty print] format AnalyticFunction in a more readable layout 

* [pretty print] rewrite algorithm for begin_no_format/end_no_format 

* [pretty print] new format option:gfmtopt.AlignAndOrWithOnInJoinClause, able to align AND/OR keywords with ON in join clause 

* [pretty print] new format option:gfmtopt.expr_concat_string_max_length, format string concat expression into a more readable format. 

* [pretty print] new format options: 

gfmtopt.CaseWhenInSamelineAsCase 

gfmtopt.CaseThenExprInNewline 

gfmtopt.CaseElseExprInNewline 

make case expression in a new layout. 

* [pretty print] new format options: 

gfmtopt.BEStyle_createtable_leftBEIndentSize 

gfmtopt.BEStyle_createtable_rightBEIndentSize 

gfmtopt.Createtable_Fieldlist_Comma_option 

gfmtopt.Createtable_Fieldlist_Style 

these format options apply to declare table as well. 

* [pretty print] new format option: gfmtopt.Insert_Columns_Per_line 

This format option make it much easy to link value to column in insert statement. 

if there is a subquery in insert statement, select list also effected by this option no 

matter what's value of Select_Columnlist_Style was set. 

* [pretty print] new format options: gfmtopt.WhereClauseAlignExpr, align expression in where 

clause 

* [pretty print] new format options: gFmtOpt.AlignAliasInFromClause, align table alias in from 

clause. 

* [DB2] support alter table alter column drop identity|default 

* [db2] support alter table drop column. 

* [db2] case keyword can be used as table name. 

* [MySQL] support is [not] [false|true] predicate 

* [sqlserver] support real number 0xabc in updatetext 

* Rewrite procedure TCustomSqlStatement.ReBuildSql(pFlags: TRebuildFlags); 

in order to fix bug that use lots of memory which cause Very Slow Performance of Rebuild query 

with 100 SQL variables in ASP.NET application 

* [msaccess] support alter table add column. 

* add TGSqlParser.OnMetaDatabaseTableColumn, user can provide meta information of database to 

help SQL parser to determine relationship between column and tables. 

* [oracle/plsql] support keyword ARRAY as type name. 

* [oracle/plsql] fixed a bug can't parse select statement in plsql if there is a ) before order by clause. 

* [oracle/plsql] support object access method in using clause. 

* fix a bug that onFieldToken event fired twice for a column in create table statements 

* [mysql] support multi \ escape character in literal 

 

Version 2.2.0 (Feb 24, 2012, VCL version)

* able to pretty print big script without out of memory exception. 

* fix a bug doesn't support sql server OPENDATASOURCE syntax. 

* fix a bug doesn't support MySQL b'0' literal 

* support sql server create trigger of ddl 

* support with clause in insert statement of sql server 

* support sql server xml data type 

* support WITH(HOLDLOCK) in merge statement 

* introduce TLzTable.withBeforeAlias and TLz_TableRef._withBeforeAlias 

* support GRANT EXECUTE ON OBJECT::G2.GetAssetTagComponentMap TO public 

* supprt OPTIMIZE FOR query hint 

* support exists subquery in if updated() column 

* add support for WITH (TABLOCKX) 

* support alter index of SQL Server 

* support variable in merge into name 

* fix a memory leak bug. 

* able to provide a TSelectSqlStatement for the third parameter of the OPENROWSET 

as well as the full AsXmlText for a TSelectSqlStatement 

* support error as table alias 

* [ms access] support Precision of text data type 

* [sql server] support NOT FOR REPLICATION clause in reference clause 

* [sql server] support string variable while Execute a character string 

 

Version 2.1.9 (Dec 27, 2011, .NET version)

* support - character in DB2 identifier 

* set parenthesis in the left side of set clause of DB2. 

 

 

Version 2.1.9 (Dec 16, 2011, VCL version)

* rename unit dbcmds to lzdbcmds. 

* support sql server deny statement 

* support sql statement that block statement that follow declare statement directly. 

* support FETCH FIRST ROW ONLY 

* fixed a bug which will slow down the parse( and even freeze the parse) when the table name is a big query 

* add %prec OUTER_JOIN to rule joined_table, so all of those table_ref XXX RW_JOIN table_ref have the same priority, this make following sql organized correctly: 

 

SELECT * 

FROM S1 

natural join w3 

LEFT OUTER JOIN S2 

ON S1.S = S2.S 

 

* new format options: 

gfmtopt.declare_list_style, 

gfmtopt.declare_comma_option, 

gfmtopt.LinebreakBeforeParamInExec replaced by 

gfmtopt.exec_first_paramater_in_newline 

gfmtopt.exec_parameters_style 

gfmtopt.exec_parameters_comma_option 

gfmtopt.exec_parameters_align_value 

 

* fix a bug that can't modify case of quoted identifier of table/column/alias 

* make the result xml of group by clause is same in GroupbyClause.AsXmlText vs. parser.XmlText 

* Able to access view alias by introduce a new property TCreateViewSqlStatement.AliasClause which is type of _TOracleViewAliasClause 

* TSourceToken.DBObjType of plsql package, procedure and funtion set correctly. 

* support delete clause in merge_update_clause of merge statement: 

* fix a bug that in DB2 insert value clause, all list was treated as a single expression. 

* fix a bug that merge statement inside begin...end block was not handled 

 

 

Version 2.1.6 (Aug 02, 2011, VCL version)

* support interval expression in plsql 

* support BULK COLLECT INTO clause of EXECUTE IMMEDIATE 

 

Version 2.1.5 (Aug 01, 2011)

* Bug the bug that can't format PLSQL correctly. 

* MS access, fully support DROP TABLE statement. 

* star (*) was treated as a column name of t in this SQL: select * from t 

* add new format option: 

gfmtopt.Subquery_Newline_After_IN, 

gfmtopt.Subquery_Newline_After_EXISTS 

gfmtopt.Subquery_Newline_After_ComparisonOperator 

gfmtopt.Subquery_Newline_Before_ComparisonOperator 

* add support for sybase: create join index, drop join index in sql server engine 

* Oracle: support DETERMINISTIC keyword in function specification when create package. 

 

 

Version 2.1.3 (June 07, 2011)

* at least 2x faster than previous version. 

* fix a bug when search table/column relations in subquery with union set operation. 

* arguments in analytic Function processed correctly. 

* if there are syntax errors in some SQL statements in a script, other valid SQL statements will be formatted. 

* SQL server lexer was enhanced to handle string that not ended correctly. 

 

 

Version 2.1.0 (Apr 21, 2011)

* Increase the trial version's query size limitation to 10000 characters which is adequate for you to evaluate this SQL Parser for the most SQL scripts. 

* Add 90 days time limitation. 

 

Version 2.0.10 (Apr 20, 2011)

* support multi fields in delete statement of Microsoft Access 

* identifier can start with digit 0-9 in Microsoft Access 

* fix a bug that can't recognize alter view correctly in getrawsqlstatement, 

 

COM Version 2.0.10 (Apr 20, 2011)

* add 2 demos to illustrates how to beautify sql. 

* format options in COM version now is the same as .NET version. 

 

Version 2.0.9 (Apr 13, 2011)

* TSourceToken.Location can be used to check which clause a column belongs to. 

* datepart argument in DATEADD, DATENAME,DATEDIFF,DATEPART function 

wouldn't be recognized as a column name. 

 

Version 2.0.8 (Apr 02, 2011)

* fix a bug that SQL statement inside Oracle pl/sql will be visited twice. 

* gfmtopt.BEStyle_Function_BodyIndent was replaced by BEStyle_BlockIndentSize. 

* add support for access transform, parameters statement. 

 

Version 2.0.4 (Feb 23, 2011)

* Support BEGIN;...END; syntax of SQL Server. 

* Add 3 new format options: gfmtopt.expr_parenthesis_innewline, gfmtopt.expr_remove_redundant_brackets,gFmtOpt.Insert_Parenthesis_in_separate_line 

* Format comment in parameters declaration of stored procedure was enhanced 

* Having clause before group by clause in select statement was supported. 

* Syntax like this in PL/SQL was supported: Insert into g_price_marginal_rule values marginal 

* Support qualified name like this: dbo.##BondDetail2. 

* Fully support of SQL Server truncate table. 

 

Version 2.0.2 (Feb 08, 2011)

* Tested on .NET framework 4, and fixed a minor bug. 

* Add a new function lzbasetype.AutoDetectCharacterSet to detect sql file encoding. 

* Easy to check what's type of sql statement those class were represented by using 

SqlStatementType of TMssqlIfElse,TMssqlCreateprocedure, TMssqlCreatefunction and TMssqlCreatetrigger. 

* Introduce a new class: TMssqlDropProcedure 

* Sql statement in exec_string can be fetch via execute statement's ChildNodes. 

* Add a new demo: affectedObject to determine affected database objects in sql file. 

 

Version 2.0.1 (Jan 14, 2011)

* refine alter option in alter table statement. and add some new code in analyzscript to illustrate how to use this option. 

* add new property: TLzAlterTableOption._ndColumnName 

* remove TLzAlterTableOption.ColumnConstraintList 

* Introduce a new class: TLz_AttrList, represents a list of qualified name 

* TLzConstraint.ConstraintColumnList was removed, and replaced with ColumnNameList 

* New property: TLz_Attr.sortToken, this property was used when column names in 

primary key/foreign key had sort(asc,desc) information.(this is for sql server only) 

* fix a bug that missing distinct/top clause information in TSelectSqlStatement.GetAsXmlText 

* [sql server] full support of SQL Server Drop Index statement, and add demo code in analyzescript to show how to use TMssqlDropIndex. 

 

Java Version 1.0.0 (Jan 05, 2011)

This is the first official released Java version as stable as .NET version, support Oracle, SQL Server, DB2, MySQL, Access, and Teradata. All features in .NET version were available except sql formatter. 

 

 

Version 2.0.0 (Jan 05, 2011)

* Change license mode to enterprise edition license(support all following database: oracle, sql server, db2, mysql, and enable all developers in a physical site to use this library) and professional edition license(support one of following database: oracle, sql server, db2, mysql, and enable one developer in a physical site to use this library). 

 

* If you need to distribute this library together with your application to end users, please contact sales@sqlparser.com for a distribution license. 

 

* [Oracle] support comment on statement. 

* [Oracle] support create synonym statement. 

* [Oracle] support compress/uncompress clause in physical_properties. 

* [Oracle] able to get sequence name and options. 

* [internal] adjust max_matches value to reduce usage of memory, improve performance. 

 

 

 

Version 1.12.17 (Dec 02, 2010)

* introduce a new property: TLzField.DisplayName, this property returns alias name of 

a column if any, otherwise, return column name. 

* fix bug that TLzField.Name returns a dot before fieldname. 

* support "not for replication" clause in IDENTITY property of sql server. 

* intorduce 9 format options 

gFmtOpt.IntoClauseInNewline 

gFmtOpt.WhereClauseInNewline 

gFmtOpt.GroupByClauseInNewline 

gFmtOpt.OrderByClauseInNewline 

gFmtOpt.HavingClauseInNewline 

gFmtOpt.Update_Columnlist_Style 

gFmtOpt.LinefeedsAndOr_option 

control and/or keyword in condition before newline or after newline or no linebreak. 

gFmtOpt.Select_Groupby_Style 

gFmtOpt.Select_Orderby_Style 

 

* Handle "TOP X" the same as "DISTINCT" 

* [sql server] support Sparse Columns of sql server 2008. 

* [sql server] support SQL Server 2008 new introduced several extensions to the GROUP BY clause: 

GROUPING SETS, CUBE, and ROLLUP subclauses of the GROUP BY clause and the GROUPING_ID function. 

* [sql server] support delete in merge not matched clause. 

* [sql server] support sql server 2008 HIERARCHYID Data Type 

* [sql server] support Compound Assignment Operators 

* [sql server] support new sql server 2008 spatial function like: ([geom].Reduce(10)).STAsText() 

* [sql server] support the geometry and geography feature of SQL Server 2008. 

* [oracle] support oracle XMLQUERY sytnax. 

* able to control format of expression in case expression. 

* better support to format case expression. 

* < character in html output not show correctly. 

 

 

Version 1.12.15 (Oct 22, 2010)
  • fix bug: can't process empty block in SQL Server like this:
  • support SQL Server kill statement.
  • new tokentype: ttUserCustomized.
  • new element of TLzHighlightingElement: sfkUserCustomized.
  • new event handle: TGSqlParser.BeforeGenerateFormattedSQL.please check customizedColor demo shipped together with this library, customize color of certain tokens in RTF and HTML output.
  • rtf output support multibytes character set language like chinese, korean.
  • fix a bug in TLzCaseExpression.GetAsXmlText.
  • new demos added: customizedColor, tableColumnRename.

 

Version 1.12.14 (Sep 30, 2010)
  • Support for Delphi XE.
  • Fix bug when generate xml output of case expression.
  • Sql formatter ugly mode, when convert to single line, remove extra spaces in output sql.
  • support ; before with in CTE.
  • More demos can be found here: http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser

 

Version 1.12.13 (Jul 23, 2010)
  • Support for SQL Server merge statement.
  • New format option: gfmtopt.AlignJoinWithFromKeyword.
  • Support literal '0X8000'.
  • SQL to VB, fix error escape char of ".
  • Make html output was checked as XHTML 1.0 Strict.
  • SQL Server support variable of LANGUAGE @language in CONTAINSTABLE clause.
  • SQL Server support qualified data type.
  • Bugs of unpivot clause in from clause was fixed.
  • Support qualified_name of pivot column.
  • Support mod operator in PLSQL.
  • Support connect_by_root unary operator of Oralce.
  • Able to detect select syntax error in cursor declare of PLSQL.
  • Default, null keyword can't be a datatype name.
  • Column datatype can't be empty in create table statement.
  • Subtype keyword can be qualified name in plsql.
  • Fix bug that remove space around default keyword when WSPadding_OperatorArithmetic is false.
  • \ is not a escape char of oracle string literal;
  • Can't handle IF statement correctly if there is a case...end(with else) statement in this if statement.
  • Can't discover hint in Oracle select statement after comment.
  • Support string like this in ms access: #4/1/2008 3:09:29 PM#
  • Support readonly in variable declare of SQL Server.
  • Recognize table alias in delete, update statement correctly.
  • Bug fixed when IF statement in create trigger statement of SQL Server.

 

Version 1.12.10 (Mar 10, 2010)
  • COM version is available.
  • Improved to get statements of MySQL scripts.

 

Version 1.12.9 (Mar 04, 2010)
  • New layout options to control empty lines between consecutive set/declare statements.
  • New layout options for function call parameters.
  • Better support for multi line comments, all lines in the comment block to be left-aligned with the indented code below the comments.
  • Unify the way to access statements in plsql statement (TPlsqlStatement) by visiting childnodes.
  • Oracle SQL dialect syntax support enhanced
    1. Create table tablename tablespace tn nologging parallel as select f from t
    2. Pipedlined in return type of function in create package/function.
    3. Pipe row statement is supported in create function.
    4. NUMBER(*,0) was supported in create table statement.
    5. Lob_storage_clause in column_properties of table_properties in create table.
    6. Comment keyword can be used in typename.
    7. FOR R1 IN C1() LOOP, no parameters in C1().
    8. Merge statement, table alias is optional.
    9. ALTER TABLE _name_of_table MODIFY _name_of_field NUMBER(5,0).
    10. Execute statement can be top level sql of plsql.
    11. Last_value, first_value function
    12. dbms_lobs.open()
    13. RIGHT keyword can be column name in insert into (column names).
    14. Support exception name like this: UTL_SMTP.transient_error OR UTL_SMTP.permanent_error
    15. Right keyword can be arguments of function.
    16. Year keyword can be field name of TYPE rec_pmas_set IS RECORD.
    17. Year keyword can be plsql column name like tablename.year%type
    18. Handle ¡®%\_INF¡¯ correctly.
  • SQL Server SQL dialect syntax support enhanced
    1. IDENTITY can¡¯t be treated as typename.
  • DB2 SQL dialect syntax support enhanced
    1. Support concat operator in select list.

 

Version 1.12.6 (Dec 22, 2009)

[general] improved: .NET version performance was improved while parsing first statement in vista 64 bit from 10 seconds to 2-3 seconds. 

[oracle] fixed: support this syntax: ALTER TABLE _name_of_table MODIFY _name_of_field NUMBER(5,0) 

[mysql] fixed: decial datatype was supported in cast function. 

[oracle] fixed: Merge update clause, merge insert clause can be optional. 

[oracle] improved: Able to recovery from a keyword error from plsql by using OnParserTokenError event. 

 

[oracle] fixed: Merge statement table alias is optional. 

[oracle] supported: FOR R1 IN C1() LOOP, no parameters in C1(). 

[oracle] supported: type keyword can be in function parameters, variable name in for clause 

[oracle] supported: WHEN NOT MATCHED THEN is preceded by WHEN MATCHED THEN in merge statement. 

[oracle] supported: comment can be used in typename 

[oracle] supported: Lob_storage_clause in column_properties of create_table_properties (table_properties in create table) 

[oracle] supported: * in NUMBER(*,0) was supported in create table statement. 

[oracle] supported: pipe row statement is supported in create function. 

[oracle] supported: pipedlined is supported in create function. 

[general] improved: all error messages log into top level tcustomsqlstatement. 

[oracle] added: partially support log clause of create table. 

[oracle] supported: pipedlined in return type of function in create package 

 

[general] fixed: select statement in create table not indent correctly. 

[mssql] fixed: TMssqlIfElse.ProcessFuncExpr, infinite loop halt program 

[mssql] added: support for "if not update(colid)" in create trigger 

[mssql] added: method_specifier in create procedure was supported. 

[general] enhanced: Able to beautify query inside openrowset function. 

[general] fixed: --begin_no_format align with previous sql statement. 

[general] fixed: rtf output can not handle multiline string correctly. 

[general] fixed: emptylines between multiline comments and sql statement not handle correctly . 

[general] added: Able to show line number of formatted sql. 

[general] improved: better support AndOrUnderWhere format option. 

[mssql] fixed: support recompile hint in option. 

fixed: from keyword in from clause update statement not in newline. 

fixed: mssql xml method query(),value(),exist(),modify(),nodes() keep lowercase no matter what case option was choose for function case options. 

[general] fixed: into clause in newline. 

[general] fixed: better support for --begin_no_format, --end_no_format 

[general] fixed: when emptyline=mergeintoone, insertblanklineinbatchsqls is false, emplty lines after 

select in creat function is removed, not mergeinto one. 

[db2] fixed: drop table statement not recognized. 

[oracle] improved: ppv3, better support of constraint layout in create table. 

[oracle] improved: support using index clause while index_properties is null. 

[oracle] improved: supported table_properties clause of create table, only CACHE/NOCACHE is supported in table_properties. 

[mssql] fixed: supported cte query in create view. 

[format option] added: TreatDistinctAsVirtualColumn,Indent_Case_Then 

[oracle]fixed: CREATE GLOBAL TEMPORARY TABLE 

[mssql] fixed: Can't handle IF UPDATE(password) in create trigger. 

[mssql] fixed: sign was not a mssql statement, it's just a function. fixed bug can't handle " select sign(10) as value " 

[oracle]: fixed: (+) in multiline can't be handled. 

[mysql]: improved: support drop column/primary,foreign key/index in alter table statement. 

 

Version 1.10.8 (May 14, 2009)

[format options] added: quoted_identifiercs was added to format quoted identifier, [identifier] in sql server, and "identifier" in oracle. 

[sqlserver] improved: support multiple compute by clause. 

[oracle] added: support for create materialized view, create materialized view log on. 

[format options] added: CaseWhenThenInSameLine for case statement. 

[sqlserver] added: In table definition, add support for PERSISTED on a computed column. 

[oracle] fixed: iterate of syntax like this was error: Pc_per_diem_info(i).rental_id 

[oracle] added: supported of PRAGMA AUTONOMOUS_TRANSACTION 

[format options] enhanced: Insert_Columnlist_Style,Insert_Valuelist_Style can be set separately. 

[oracle] enhanced: nocycle is supported in hierarchical_query_clause. 

[oracle] added: is of type conditions was supported. 

[oracle] added: interval expression was supported. 

[oracle] added: plsql create type was supported. 

[oracle] added: forward function/procedure declaration in package body was supported. 

[sql server] fixed: Can't reserved before variable declaration in create/alter procedure. 

[plsql] added: New class TLzPlSql_TableTypeDef_IndexBy, support index by pls_integer, index by varchar2(size) clause. 

 

 

Version 1.10.6 (Apr 14, 2009)

[general] Added: Export to RTF. 

[general] Added: Customizable Syntax highlighting. 

[sql server] fixed: style parameter in convert function support expression. 

[general] added: add sortOrder, groupBy property to TLzField as requested by user. 

[COM] Added: support rtf output in tgsqlparser, and the implementation in COM version is a little bit different than .NET and VCL version. 

[document] Added: add article for syntax highlighting, introduce how to generate output in html and rtf format,and customize font size, color and style. 

[general] changed: A new class TLzLangConverter was created to generate all kinds of output after parsing input sql script. All To* functions in tgsqlparser was moved to TLzLangConverter. 

check demos for detail. 

[general] Added: Able to remove item from TLzJoinItemList and TLzJoinList

[sql server] fixed: support || and && in lexer . 

[sql server] fixed: Able to handle nested begin try, begin catch statement. 

[general] enhanced: YPosition of TSourceToken points to the begin position of this token, in previous version, it's the end position of source token. 

 

Version 1.10.0 (Feb 11, 2009)

[General] Improved: Parser at least 30 times faster to parse sql statement, and at least 7 times faster to beautify sql. 

[General] Changed: All parse tree nodes was inherited from tobject other than tcomponent. 

[sql server] Fixed: Memory leak when parsing statements inside procedure. 

[oracle] Fixed: Able to handle AT TIME ZONE in select list. 

 

Version 1.9.11 (Feb 03, 2009)

[oracle] Improved: Bind variable is support in "IN expression", such as: col in :bindvar 

[sql server] Fixed: store removed by keyword. 

[General] Fixed: - in html was changed from &#150; to &#45; 

[General] Added: Compact mode is supported in html output. 

[sql server] Fixed: Access violation:, for xml auto, elements, root('tables') 

[sql server] Added: Begin dialog, send statement is supported. 

[sql server] Fixed: Can't process if go keyword use as table alias. 

[sql server] Added: Sqlserver 2008 multirow insert. 

[sql server] Changed: Build insert sql changed due to support of multirow insert, check demos. 

[oracle] Fixed: Minvalue in sequence statement can also be a negative integer. 

[mysql] Added: Support use index(indexname) hint. 

 

Version 1.9.10 (Jan 23, 2009)

Delphi 2009 supported. 

SQL Server: END CONVERSATION statement is supported, ROWGUIDCOL is supported. EXCEPT operation is supported. 

BULK INSERT is supported. 

Oracle: Create sequence is supported. Better support for create index, create view, alter table statement. 

MySQL: select STRAIGHT_JOIN is supported. Improved support for group_concat,cast function. 

Many minor bugs fixed. 

 

 

Version 1.9.9 (Nov 02, 2008)

Fixed some unicode related bugs. 

Better support for SQL Server and Oracle dialect. 

 

Version 1.9.8 (Mar 22, 2008)

Function of fetching database object was rewrited, 

much more accurate to identify various database objects in complex sql statement. 

 

TLz_Attr class was improved, easy to modify server, database, schema, table and column information in this object, and rebuild identifier. 

 

Add a demo to illustrate how to use the most important properties and methods in this component, this demo generate a xml output which shows the query structure of input sql. 

 

Lots of minor bugs fixed. 

 

Version 1.9.6 (Nov 01, 2007)

Added: TLz_Node.RawNode, corresponding raw parse tree node of parsed node if any. Please check here for more detail description. 

 

Fixed: System.NullReferenceException when build sql using TSelectSqlStatement(This is the bug only TDbVendor.DbVOracle is used). 

 

Fixed: Correctly handle alias name like [[name]],[surname]]] 

 

 

Version 1.9.5 (Sep 21, 2007)

Improved: It's 3-5 times faster to start parser of .NET version. 

 

Changed: gudusoft.gsqlparser.yyrec.dll is no longer needed, only one file: gudusoft.gsqlparser.dll, size of this file was reduced to 7M to support sql dialect of 5 databases: msaccess, mysql, mssql, db2 and oracle. 

 

 

Version 1.9.4 (Sep 13, 2007)

Fixed: Index options of constraint of ms sql server was parsed correctly. 

 

Version 1.9.3 (Aug 28, 2007)

Improved: .NET version support foreach to iterate collections. 

 

Changed: T_A_Expr was replaced by T_Expr, T_A_Const was replaced by T_Const. TLz_Node.NodeTag has been changed to TLz_Node.NodeDummyTag

 

Changed: Class TLz_A_Const was replaced by TLz_Const

Improved: Support of create index, create view of ms sql server is improved. 

 

Fixed: Original layout of comment was keep correctly during pretty print. 

Type TToLang was replaced by TOutputFmt. 

AsText property works for all sqls. So rebuild sql after modification works correctly now. 

Able to convert sql to html code without change layout of original sql. Font family and size of output html code is configurable. 

Able to change keywords case only without change layout of original sql. 

 

Version 1.9.1 (Jun 25, 2007)

Oracle hint is preservered while rebuild sql. 

Some minor bugs fixed. 

 

 

Version 1.9.0 (Jun 01, 2007)

Improved: TLzCustomExpression is a pure binary tree, can be visited in Pre-Order,In-Order and Post-Order. You can visit/modify expression(such as where clause, having clause) as easy as visit/modify a binary tree. 

Improved: Better support to handle reserved keywords used in objectname with On_ParserTokenErrorKeywordToIdent event handle. 

Improved: Better support for top clause in update,delete and insert statement of SQL Server. 

Added: Support for CTE in update,delete and insert statement of SQL Server. 

Improved: Can handle oracle substitution vairable with period ended. 

Fixed: Bug #115,#116,#122,#131,#136,#139. 

Improved: Better support for Oracle Data Warehousing related functions. 

 

 

Version 1.8.8 (Apr 13, 2007)

Fixed: Conversion of comment to VB error(#135). 

Fxied: DAYS keyword not allowed in function parameters or alias in DB2(#134). in sql. 

Fixed: update #t set X=1 where 2=#t.Y is not formatted correctly near =#t.Y 

 

Version 1.8.3 (Mar 07, 2007)

Added: New properties DBObjectList,TableList, FieldList, FunctionList, ProcedureList ,TriggerList of TGSqlParser were added for quick access of database objects in sql. 

Added: New class TLzDBObject, TLzDBObjectList were added for quick access of database object in sql. 

Added: Cross/Outer apply is supported. 

Added: Ranking Window functions is supported. 

Added: Xml data type methods of SQL Server 2005 is supported. 

Added: Empty lines and comment and handle more better in pretty printer function. 

 

Version 1.8.0 (Feb 01, 2007)

Added: OpenXML statement of SQL Server 2005 is supported. 

Added: Output Clause of SQL Server 2005 is supported. 

Improved: better support of table hint syntax in MSSQL. 

Improved: Old join syntax of MSSQL supported, *=, =*. 

Improved: New syntax of top clause is supported. 

 

 

Version 1.7.2 (Jan 10, 2007)

Improved: For xml clause supported in MSSQL. 

Added: varchar(max),nvarchar(max) and varbinary(max) are supported. 

Added: OpenRowSet and Opendatasource of MSSQL are supported. 

Improved: Lots of minor bugs. 

 

Version 1.6.5 (Oct 25, 2006)

Improved: XML ouput is supported for all sql dialects. 

Added: New format options: AlignAliasInSelectList. 

Improved: Literal such as N'e00\'' is supported in MSSQL. 

Improved: syntax such as .E.LastName and .dbo.fap_GetCurrentUserId () in MSSQL is supported. 

Improved: SET @tempIdentity =@@IDENTITY is formatted correctly; 

 

 

Version 1.6.0 (Sep 13, 2006)

Added: DB2 sql dialect is supported now. 

 

Improved: XML output is well organized, select sql statement is supported in current version, other sql type such as delete, insert,update will be added in later version. 

 

Improved: Support of Contain/ContainTable/Freetext/FreetextTable and Common Table Expression for MSSQL. 

 

Improved: Methods ToCSharp,ToCSharpStringBuilder,ToHtml,ToHtml2,ToJava,ToJavaStringBuffer, ToPascal,ToPhp,ToVb,ToVc are introduced in TGSqlParser

 

 

Version 1.5.1 (July 5, 2006)

Fixed: Generate C# code error if there is double quote or back slash in the SQL 

 

Improved: Some new SQL syntax supported of Oracle and MSSQL dialect. 

 

Added: New format options LinebreakAfterDeclare. 

 

 

Version 1.5.0 (Jun 19, 2006)

Improved: Support create function/procedure of MySQL database. 

 

Improved: Support new SQL syntax in Oracle 10g. 

 

Added: Better support to handle expression such flat expression and modify expression. 

 

Added: More demo added to illustrate how to use this parser. 

 

Fixed: Lots of minor bugs fixed. 

 

 

Version 1.4.7 (Apr 24, 2006)

Added: Html output is supported. 

 

Added: MSSQL timestamp lieteral is supported. 

 

Added: New format option coInitCapEachWord is added which is used to capitalize first letter of each word in the identifier, there is also a dictionary you can modify to meet your own requirement. 

 

Changed: TlzJoinList was changed to TLzJoinList in .NET version. 

 

Fixed: Table alias not found after TCustomSqlStatement.InspectDBObject in InspectedDbObjs . 

 

Fixed: Update the demo modifyvars, so it can remove the field with table alias such as scott.emp from the expression. 

 

 

Version 1.4.3 (Apr 09, 2006)

Fixed: Syntax error while output to java,csharp,php is fixed. 

 

Added: Support of alter trigger, collate, system function in MSSQL. 

 

Fixed: Oracle substitution variable is not handled correctly. 

 

Fixed: Table alias is not handled correctly when there is a table hint of MSSQL . 

 

Version 1.4.0 (Mar 24, 2006)

Added: Create trigger of MSSQL is supported now. 

 

Added: Rename command of Oracle is supported now. 

 

Added: ON commit delete/preserve rows clause in create table command of Oracle is supported now. 

 

Added: New property KeepSqlWhenPp is added in TGSqlParser, if this property is set to false, sql objects will be freed after pretty print the SQL immediately, in other words, SQL object will not be available in SqlStatements. Performance will be improved when pretty print the large SQL if KeepSqlWhenPp is set to false. The default value is set to true. This property doesn't effect when you call the parse function, SQL objects will always be saved to the SqlStatements property for further processing. 

 

Improved: Pretty print is more faster in .NET version. 

 

Version 1.3.5 (Mar 03, 2006)

Added: Unicode support is available. 

 

Improved: Build SQL function is more stable, demos are added to show how to build SQL. 

 

Improved: Top level SQL with parenthesis (select empno from emp) is supported. 

 

Improved: Support of VS2005, VB.NET demo is added. 

 

 

Version 1.2.5 (Feb 05, 2006)

Fixed: OnTableToken and OnFieldToken not fired correctly in Update and Delete statements. 

 

Improved: table, view and join hint support of MSSQL, support of returns table in create function. 

 

Version 1.2.3 (Jan 15, 2006)

New formatter option: Use Tab to ident, and tab size is configurable. 

 

Improve of TOnFieldTokenEvent and TOnTableTokenEvent. 

 

Performance improved in all versions. 

 

Support of Alter view sql of MSSQL. 

 

Update of help doc. 

 

 

Version 1.2.0 (Dec 31, 2005)

Property MsVars renamed to SqlVars in TCustomSqlStatement and all sub classes. Event TOnMsVarEvent changed to TOnSqlVarEvent. and Token type ttMsVar was changed to ttSqlVar. 

 

New Oracle SQL dialects supported: Merge, Alter table, Create/alter trigger,rollup and grouping keywords of group clause. Physical property of Create table . 

 

New MSSQL dialects supported: Alter table,Set,Execute command. 

 

Memory leak when parsing MSSQL dialects is fixed. 

 

Memory leak in COM version is fixed,more stable now. Samples of VB script were added. 

 

New property RemoveLinebreakBeforeParse of TFmtOpt was added, to deal with some sqls generated by other tools that insert linebreak into a word. 

 

New property TrimQuotedCharOfEachLine,QuotedCharOfEachLine of TFmtOpt were added, to remove the specified char at the begin/end of each line of input sql. 

 

.NET Version 1.1.0 (Dec 18, 2005)

Rewrite the core classes of .NET version,the performance is great improved. Users who are using .NET component are encouraged to upgrade to this version. It takes about 1 sec to startup the parser, and 0.5 sec to parse the first sql, after that it works pretty well. Check the demo file: performancetest.cs to find out how it works. 

 

 

Version 1.0.3 (Nov 10, 2005)

Introduce MsVars property of TCustomSqlStatement to keep the variables in sql statement, which was saved in params in previous version.and OnMsVar Event is introduced to TCustomSqlStatement and TGSqlParser

 

Bug fixed: OnTableToken, OnFieldToken is not fired in MSSQL procedure and Oracle PL/SQL 

 

New method GetInvolvedDbObjects introduced in TLzExpression, used to get involved db objects in the expression, currently, supported db objects is TableTokens,FieldTokens which are type of TSourceTokenList

 

Rewrite the "how to" section of help document, add "available parse tree nodes" section. 

 

Some minor bugs fixed reported by users . 

 

Version 1.0.0 (Oct 20, 2005)

Rewrite all .NET related code,the performance of .NET version is great improved(at least 3 times faster) and the size of this package is reduced to 6.5M 

 

.NET version only includes two namespaces for quick reference:gudusoft.gsqlparser, gudusoft.gsqlparser.Units 

 

Enhanced of OnParserTokenError event,user can insert new source token during syntax error recover. 

 

Some minor bugs fixed reported by users . 

 

Version 0.9.8 (Oct 3, 2005)

New event OnFieldToken and OnTableToken introduced,OnStatementField and OnStatementTable event are obsolete. 

 

Params property of TCustomSqlStatement pickups MSSQL variable during parsing sql. 

 

Improvement of COM version,VC++ demo added . 

 

Some minor bugs fixed reported by users . 

 

 

Version 0.9.3 (Sep 4, 2005)

Rewrite TOnParserTokenEvent,TOnParserTokenErrorEvent,and demo related to these events. 

 

Add analytic function support of Oracle SQL dialects. 

 

Hint message reported by parser is more accurate if their are syntax errors. 

 

Some minor bugs fixed reported by users . 

 

Version 0.9.1 (Aug 26, 2005)

Parser is 50% faster after rebuilding some core classes. 

 

XML output of parse tree for further processing. 

 

User can iterate parse tree, and get all nodes info for your own usage. 

 

Inspect all database objects in sql statements. Currently only support table, field,and function in select,insert,delete,update,create table and drop table statement. Will be support more database object and sql statement soon. 

 

Compiles all demos into one. 

 

Version 0.8.1 (Jul 08, 2005)

Fix some bugs when checking SQL syntax. 

 

.Net version and delphi2005 win32 version are available. 

 

Version 0.8.0 (Jun 29, 2005)

Pretty print function is great improved,lots of format options added. 

 

Paramters( :paramname ) support in MSSSQL. 

 

Some bug fixed. 

 

Enhanced in checking syntax of PL/SQL and procedure of MSSQL 

 

 

Version 0.7.0 (May 29, 2005)

 

Performance is great improved, now the parser is 5 times faster than before. 

 

Chanages: TSourceToken is derived from TObject, not from TLz_node for performance issue. 

 

Comments in sql are reserved in pretty printed sql. 

 

Start to support PLSQL and MSSQL procedure in pretty print function, although it is not good enough, but will be improved soon in coming versions. 

 

 

Bug fixed: literal like this '-- not a comment' can be handled. 

 

 

Changes: Function ParseStatements of TCustomSqlStatement is changed to ParseStatement 

 

Version 0.6.8 (Feb 24, 2005)

Enhanced to TLzJoin

 

Change TLzJoins to TLzJoinList

 

 

Add two new classes: TLzJoinItem and TLzJoinItemList for better support of join table structure 

 

 

Add a new demo application in examples\jointable, demostrate how to use the new introduced classes: TLzJoin,TLzJoinList,TLzJoinItem and TLzJoinItemList 

 

Version 0.6.5 (Feb 8, 2005)

General SQL Parser is thread safe now 

 

Introduce two new class TLzJoin and TLzJoins as suggested by user Paul to support join table in from clause of select statement. 

 

Tables property of TCustomSqlStatement now includes all tables in from clause in order , regardless whether it's a join table or not. make it fast and easy to access all involved tables 

 

 

General SQL Parser for FreePascal ver1.9.6 is in beta test. 

 

 

Nulls First,Nulls Last option of MSSQL supported. 

 

Version 0.6.0 (Feb 1, 2005)

.NET version of GSQLParser is available 

Support for MSAccess SQL dialect. 

Minor bugs reported by users are fixed. 

 

Version 0.5.0 (Jan 9, 2005)

Support of MySQL sql dialect is improved,alter table is supported now. 

 

Better support of function in sql statement. 

 

TLz_node is descend from TComponent, and TSourcetoken is descend from Tlz_node. 

 

 

Fix memory leak reported by users. 

 

Version 0.4.5 (Dec 15, 2004)

Better support of MSSQL sql dialect. 

Pretty print of select,insert,update,delete and create table statement are supported. 

Fix some minor bugs reported by users. 

 

Version 0.4.1 (Dec 5, 2004)

Add some examples. 

Publish some internal use classes 

Support top clause in MSSQL parser 

Rebuild the infrasturcture of parser from the group up.make new parser more flexiable. 

Introduces lots of events to make user have full control of the parser 

All parts of sql statement have a correspoding class. Granularity is fine. 

Building sql text using sql statement objects without parsing. 

 

Version 0.3.0 (Aug 23, 2004)

Improvement: able to create different parser type such as geneirc or oracle to support different sql dialect better. 

 

Improvement: bind and substitution variable support for oracle sql dialect. 

 

Improvement: expression like 'where empno in 9 ' can be dealed now. 

 

Improvement: Top and limit clause supported. 

 

Improvement: into clause supported 

 

Version 0.2.1 (Jul 22, 2004)

 

Improvement: add selectclause,fromcluase property in TSelectSqlStatement

 

Improvement: add GetFieldIndexByName,GetFieldIndexByAlias method in TLzFieldList

 

Improvement: add GetTableIndexByName,GetTableIndexByAlias method in TLzTableList

 

Bug fiexed: Internal parser error 040722_01; 

 

Version 0.2.0 (Jun 24, 2004)

Bug fixed: Can't read a empty input SQL file. 

Bug fix: AV errors when input some invalid SQL statements. 

Improvement: Introduce some new classes, make GSqlParser more flexiable to deal with SQL statement. 

 

Version 0.1.0 (Jun 12,2004)
Gudu software http://www.sqlparser.com
Send comments about this topic.