├── .gitattributes ├── .gitignore ├── GeneralSQLParser_UserGuide.pdf ├── README.md ├── changes.txt ├── compile_run_demo.txt ├── demos ├── analyzescript │ ├── analyzePLSQLProcedure.java │ ├── analyzeScript.java │ ├── iterateStatement.java │ └── tutorial.java ├── analyzeview │ └── Analyze_View.java ├── antiSQLInjection │ ├── ESQLInjectionType.java │ ├── GContext.java │ ├── GEval.java │ ├── TAntiSQLInjection.java │ ├── TSQLInjection.java │ ├── UnknownValue.java │ ├── antiSQLInjection.java │ ├── lib │ │ └── trail_version.txt │ └── test │ │ └── antiSQLInjectionTest.java ├── benchmark │ └── benchmark.java ├── checksyntax │ ├── checksyntax.class │ ├── checksyntax.java │ └── test1.sql ├── columnImpact │ ├── ColumnImpact.java │ └── test │ │ └── ColumnImpactTest.java ├── columnInClause.java ├── columnInWhereClause │ ├── ColumnInWhereClause.java │ └── WhereCondition.java ├── columnMatrix │ └── ColumnMatrix.java ├── expressionTraverser │ └── expressionTraverser.java ├── formatsql │ ├── formatsql.java │ └── formatsqlInHtml.java ├── getcrud │ └── getcrud.java ├── getsourcetoken │ └── getsourcetoken.java ├── getstatement │ └── getstatement.java ├── gettablecolumns │ ├── columnsInResultColumn.java │ ├── getResultColumn.java │ ├── gettablecolumns.java │ └── whatClause.java ├── joinConvert │ └── oracleJoinConverter.java ├── modifysql │ ├── add2SQL.java │ ├── replaceConstant.java │ └── replaceTablename.java ├── removeCondition │ ├── ExpressionChecker.java │ └── removeCondition.java ├── search │ └── searchClause.java ├── sqltranslator │ ├── DataTypeCheckResult.java │ ├── DataTypeChecker.java │ ├── FunctionCheckResult.java │ ├── FunctionChecker.java │ ├── IdentifierCheckResult.java │ ├── IdentifierChecker.java │ ├── IdentifierRule.java │ ├── IdentifierRuleResult.java │ ├── KeywordCheckResult.java │ ├── KeywordChecker.java │ ├── MssqlDataTypeChecker.java │ ├── MssqlFunctionChecker.java │ ├── MssqlKeywordChecker.java │ ├── MysqlDataTypeChecker.java │ ├── OracleDataTypeChecker.java │ ├── OracleFunctionChecker.java │ ├── OracleKeywordChecker.java │ ├── SqlTranslator.java │ ├── exception │ │ ├── FunctionIdentifierException.java │ │ └── SpecialIdentifierException.java │ └── test │ │ └── SqlTranslatorTest.java ├── tracedatalineage │ ├── Column.java │ ├── ColumnsInExpr.java │ ├── Cursor.java │ ├── Execute.java │ ├── Parameter.java │ ├── Procedure.java │ ├── SqlFileList.java │ ├── Statement.java │ ├── Table.java │ ├── TableRelation.java │ ├── TraceTarget.java │ ├── Variable.java │ ├── View.java │ ├── test │ │ ├── ddl3 │ │ │ └── statements.sql │ │ └── traceDataLineageTest.java │ └── traceDataLineage.java └── visitors │ ├── textVisitor.java │ ├── toXml.java │ ├── tree-view.css │ └── tree-view.xsl ├── gsp.jar ├── javadoc ├── allclasses-frame.html ├── allclasses-noframe.html ├── constant-values.html ├── demos │ └── antiSQLInjection │ │ ├── ESQLInjectionType.html │ │ ├── GContext.html │ │ ├── GEval.html │ │ ├── TAntiSQLInjection.html │ │ ├── TSQLInjection.html │ │ ├── UnknownValue.html │ │ ├── antiSQLInjection.html │ │ ├── class-use │ │ ├── ESQLInjectionType.html │ │ ├── GContext.html │ │ ├── GEval.html │ │ ├── TAntiSQLInjection.html │ │ ├── TSQLInjection.html │ │ ├── UnknownValue.html │ │ └── antiSQLInjection.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ ├── package-use.html │ │ └── test │ │ ├── antiSQLInjectionTest.html │ │ ├── class-use │ │ └── antiSQLInjectionTest.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ └── package-use.html ├── deprecated-list.html ├── gudusoft │ └── gsqlparser │ │ ├── EActionOnParseError.html │ │ ├── EAggregateType.html │ │ ├── EAlterTableOptionType.html │ │ ├── EConstraintType.html │ │ ├── EDataType.html │ │ ├── EDataTypeAttribute.html │ │ ├── EDbObjectType.html │ │ ├── EDbVendor.html │ │ ├── EErrorType.html │ │ ├── EExpressionType.html │ │ ├── EFunctionType.html │ │ ├── EIndexType.html │ │ ├── EJoinType.html │ │ ├── EKeyActionType.html │ │ ├── EKeyReferenceType.html │ │ ├── ESqlClause.html │ │ ├── ESqlStatementType.html │ │ ├── ETableSource.html │ │ ├── ETokenStatus.html │ │ ├── ETokenType.html │ │ ├── IMetaDatabase.html │ │ ├── ITokenHandle.html │ │ ├── TBaseType.html │ │ ├── TCustomLexer.html │ │ ├── TCustomParser.html │ │ ├── TCustomSqlStatement.html │ │ ├── TGSqlParser.html │ │ ├── TSourceToken.html │ │ ├── TSourceTokenList.html │ │ ├── TStatementList.html │ │ ├── TSyntaxError.html │ │ ├── TVisitedAbs.html │ │ ├── TVisitorAbs.html │ │ ├── class-use │ │ ├── EActionOnParseError.html │ │ ├── EAggregateType.html │ │ ├── EAlterTableOptionType.html │ │ ├── EConstraintType.html │ │ ├── EDataType.html │ │ ├── EDataTypeAttribute.html │ │ ├── EDbObjectType.html │ │ ├── EDbVendor.html │ │ ├── EErrorType.html │ │ ├── EExpressionType.html │ │ ├── EFunctionType.html │ │ ├── EIndexType.html │ │ ├── EJoinType.html │ │ ├── EKeyActionType.html │ │ ├── EKeyReferenceType.html │ │ ├── ESqlClause.html │ │ ├── ESqlStatementType.html │ │ ├── ETableSource.html │ │ ├── ETokenStatus.html │ │ ├── ETokenType.html │ │ ├── IMetaDatabase.html │ │ ├── ITokenHandle.html │ │ ├── TBaseType.html │ │ ├── TCustomLexer.html │ │ ├── TCustomParser.html │ │ ├── TCustomSqlStatement.html │ │ ├── TGSqlParser.html │ │ ├── TSourceToken.html │ │ ├── TSourceTokenList.html │ │ ├── TStatementList.html │ │ ├── TSyntaxError.html │ │ ├── TVisitedAbs.html │ │ └── TVisitorAbs.html │ │ ├── nodes │ │ ├── ENodeType.html │ │ ├── IExpressionVisitor.html │ │ ├── TAliasClause.html │ │ ├── TAlterTableOption.html │ │ ├── TAlterTableOptionList.html │ │ ├── TAlterTableSqlNode.html │ │ ├── TAnalyticFunction.html │ │ ├── TArrayAccess.html │ │ ├── TAutomaticProperty.html │ │ ├── TBindArgument.html │ │ ├── TBindArgumentList.html │ │ ├── TBlockSqlNode.html │ │ ├── TBreakSqlNode.html │ │ ├── TCTE.html │ │ ├── TCTEList.html │ │ ├── TCallSpec.html │ │ ├── TCaseExpression.html │ │ ├── TCloseSqlNode.html │ │ ├── TCollectStatisticsSqlNode.html │ │ ├── TColumnDefinition.html │ │ ├── TColumnDefinitionList.html │ │ ├── TColumnReference.html │ │ ├── TColumnReferenceList.html │ │ ├── TCommentSqlNode.html │ │ ├── TCompoundDmlTriggerClause.html │ │ ├── TCompoundSqlNode.html │ │ ├── TComputeClause.html │ │ ├── TComputeClauseItem.html │ │ ├── TComputeClauseItemList.html │ │ ├── TComputeExpr.html │ │ ├── TComputeExprList.html │ │ ├── TConstant.html │ │ ├── TConstantList.html │ │ ├── TConstraint.html │ │ ├── TConstraintList.html │ │ ├── TContainsTable.html │ │ ├── TContinueSqlNode.html │ │ ├── TCreateDatabaseSqlNode.html │ │ ├── TCreateDirectorySqlNode.html │ │ ├── TCreateFunctionSqlNode.html │ │ ├── TCreateIndexSqlNode.html │ │ ├── TCreateMaterializedViewLogSqlNode.html │ │ ├── TCreateMaterializedViewSqlNode.html │ │ ├── TCreatePackageSqlNode.html │ │ ├── TCreateProcedureSqlNode.html │ │ ├── TCreateRowTypeSqlNode.html │ │ ├── TCreateSequenceSqlNode.html │ │ ├── TCreateSynonymSqlNode.html │ │ ├── TCreateTableSqlNode.html │ │ ├── TCreateTriggerSqlNode.html │ │ ├── TCreateViewSqlNode.html │ │ ├── TDataChangeTable.html │ │ ├── TDatatypeAttribute.html │ │ ├── TDatatypeAttributeList.html │ │ ├── TDatetimeExpression.html │ │ ├── TDeclareSqlNode.html │ │ ├── TDeclareVariable.html │ │ ├── TDeclareVariableList.html │ │ ├── TDeleteSqlNode.html │ │ ├── TDescribeSqlNode.html │ │ ├── TDmlEventClause.html │ │ ├── TDmlSelectItem.html │ │ ├── TDmlSelectItemList.html │ │ ├── TDropDbObjectSqlNode.html │ │ ├── TDropIndexItem.html │ │ ├── TDropIndexItemList.html │ │ ├── TDropIndexSqlNode.html │ │ ├── TDropTableSqlNode.html │ │ ├── TDropViewSqlNode.html │ │ ├── TDummy.html │ │ ├── TDummyList.html │ │ ├── TElseIfSqlNode.html │ │ ├── TElseIfSqlNodeList.html │ │ ├── TExecParameter.html │ │ ├── TExecParameterList.html │ │ ├── TExecuteAsSqlNode.html │ │ ├── TExecuteSqlNode.html │ │ ├── TExpression.html │ │ ├── TExpressionList.html │ │ ├── TFetchFirstClause.html │ │ ├── TFetchSqlNode.html │ │ ├── TFlashback.html │ │ ├── TForSqlNode.html │ │ ├── TForUpdate.html │ │ ├── TFrameExclusionClause.html │ │ ├── TFromTable.html │ │ ├── TFromTableList.html │ │ ├── TFunctionCall.html │ │ ├── TGrantSqlNode.html │ │ ├── TGroupBy.html │ │ ├── TGroupByItem.html │ │ ├── TGroupByItemList.html │ │ ├── TGroupingExpressionItem.html │ │ ├── TGroupingExpressionItemList.html │ │ ├── TGroupingSet.html │ │ ├── TGroupingSetItem.html │ │ ├── TGroupingSetItemList.html │ │ ├── THierarchical.html │ │ ├── TIfSqlNode.html │ │ ├── TInExpr.html │ │ ├── TIncludeColumns.html │ │ ├── TIndices.html │ │ ├── TIndirection.html │ │ ├── TInformixOuterClause.html │ │ ├── TInsertCondition.html │ │ ├── TInsertIntoValue.html │ │ ├── TInsertSqlNode.html │ │ ├── TIntervalExpression.html │ │ ├── TIntoClause.html │ │ ├── TIntoTableClause.html │ │ ├── TIsolationClause.html │ │ ├── TJoin.html │ │ ├── TJoinExpr.html │ │ ├── TJoinItem.html │ │ ├── TJoinItemList.html │ │ ├── TJoinList.html │ │ ├── TKeepDenseRankClause.html │ │ ├── TKeyAction.html │ │ ├── TKeyReference.html │ │ ├── TLimitClause.html │ │ ├── TLockingClause.html │ │ ├── TLockingClauseList.html │ │ ├── TLoopSqlNode.html │ │ ├── TMergeDeleteClause.html │ │ ├── TMergeInsertClause.html │ │ ├── TMergeSqlNode.html │ │ ├── TMergeUpdateClause.html │ │ ├── TMergeWhenClause.html │ │ ├── TMultiTarget.html │ │ ├── TMultiTargetList.html │ │ ├── TMySQLCreateTableOption.html │ │ ├── TMySQLIndexStorageType.html │ │ ├── TNewVariantTypeArgument.html │ │ ├── TNewVariantTypeArgumentList.html │ │ ├── TNodeFactory.html │ │ ├── TNodeWithAliasClause.html │ │ ├── TNonDmlTriggerClause.html │ │ ├── TObjectAccess.html │ │ ├── TObjectName.html │ │ ├── TObjectNameList.html │ │ ├── TObjectReference.html │ │ ├── TObjectReferenceList.html │ │ ├── TOffsetClause.html │ │ ├── TOpenDatasource.html │ │ ├── TOpenQuery.html │ │ ├── TOpenRowSet.html │ │ ├── TOpenSqlNode.html │ │ ├── TOpenXML.html │ │ ├── TOptimizeForClause.html │ │ ├── TOrderBy.html │ │ ├── TOrderByItem.html │ │ ├── TOrderByItemList.html │ │ ├── TOutputClause.html │ │ ├── TOutputFormatPhrase.html │ │ ├── TOutputFormatPhraseList.html │ │ ├── TPTNodeList.html │ │ ├── TParameterDeclaration.html │ │ ├── TParameterDeclarationList.html │ │ ├── TParseErrorSqlNode.html │ │ ├── TParseTreeNode.html │ │ ├── TParseTreeNodeList.html │ │ ├── TParseTreeVisitor.html │ │ ├── TPartitionClause.html │ │ ├── TPartitionExtensionClause.html │ │ ├── TPivotClause.html │ │ ├── TPivotInClause.html │ │ ├── TPrecisionScale.html │ │ ├── TPxGranule.html │ │ ├── TQualifyClause.html │ │ ├── TRelationExpr.html │ │ ├── TRelationExprList.html │ │ ├── TRepeatSqlNode.html │ │ ├── TRestrictionClause.html │ │ ├── TResultColumn.html │ │ ├── TResultColumnList.html │ │ ├── TReturnSqlNode.html │ │ ├── TReturningClause.html │ │ ├── TRevokeSqlNode.html │ │ ├── TRollupCube.html │ │ ├── TSampleClause.html │ │ ├── TSelectDistinct.html │ │ ├── TSelectLimit.html │ │ ├── TSelectSqlNode.html │ │ ├── TSetSqlNode.html │ │ ├── TSimpleDmlTriggerClause.html │ │ ├── TStatementListSqlNode.html │ │ ├── TStatementSqlNode.html │ │ ├── TStubStmtSqlNode.html │ │ ├── TSubscripts.html │ │ ├── TSymbolTableItem.html │ │ ├── TTable.html │ │ ├── TTableElement.html │ │ ├── TTableElementList.html │ │ ├── TTableHint.html │ │ ├── TTableList.html │ │ ├── TTableReference.html │ │ ├── TTableReferenceList.html │ │ ├── TTableSample.html │ │ ├── TTableSamplePart.html │ │ ├── TTeradataWithClause.html │ │ ├── TTeradataWithClauseItem.html │ │ ├── TTeradataWithClauseItemList.html │ │ ├── TTopClause.html │ │ ├── TTriggerAction.html │ │ ├── TTrimArgument.html │ │ ├── TTruncateTableSqlNode.html │ │ ├── TTypeAttribute.html │ │ ├── TTypeAttributeList.html │ │ ├── TTypeName.html │ │ ├── TTypeNameList.html │ │ ├── TUnpivotInClause.html │ │ ├── TUnpivotInClauseItem.html │ │ ├── TUpdateSqlNode.html │ │ ├── TValueClause.html │ │ ├── TValueRowItem.html │ │ ├── TValueRowItemList.html │ │ ├── TViewAliasClause.html │ │ ├── TViewAliasItem.html │ │ ├── TViewAliasItemList.html │ │ ├── TWhenClauseItem.html │ │ ├── TWhenClauseItemList.html │ │ ├── TWhereClause.html │ │ ├── TWhileSqlNode.html │ │ ├── TWindowClause.html │ │ ├── TWindowDef.html │ │ ├── TXmlElement.html │ │ ├── TXmlRoot.html │ │ ├── TXmlSerialize.html │ │ ├── TXmlTable.html │ │ ├── Visitable.html │ │ ├── class-use │ │ │ ├── ENodeType.html │ │ │ ├── IExpressionVisitor.html │ │ │ ├── TAliasClause.html │ │ │ ├── TAlterTableOption.html │ │ │ ├── TAlterTableOptionList.html │ │ │ ├── TAlterTableSqlNode.html │ │ │ ├── TAnalyticFunction.html │ │ │ ├── TArrayAccess.html │ │ │ ├── TAutomaticProperty.html │ │ │ ├── TBindArgument.html │ │ │ ├── TBindArgumentList.html │ │ │ ├── TBlockSqlNode.html │ │ │ ├── TBreakSqlNode.html │ │ │ ├── TCTE.html │ │ │ ├── TCTEList.html │ │ │ ├── TCallSpec.html │ │ │ ├── TCaseExpression.html │ │ │ ├── TCloseSqlNode.html │ │ │ ├── TCollectStatisticsSqlNode.html │ │ │ ├── TColumnDefinition.html │ │ │ ├── TColumnDefinitionList.html │ │ │ ├── TColumnReference.html │ │ │ ├── TColumnReferenceList.html │ │ │ ├── TCommentSqlNode.html │ │ │ ├── TCompoundDmlTriggerClause.html │ │ │ ├── TCompoundSqlNode.html │ │ │ ├── TComputeClause.html │ │ │ ├── TComputeClauseItem.html │ │ │ ├── TComputeClauseItemList.html │ │ │ ├── TComputeExpr.html │ │ │ ├── TComputeExprList.html │ │ │ ├── TConstant.html │ │ │ ├── TConstantList.html │ │ │ ├── TConstraint.html │ │ │ ├── TConstraintList.html │ │ │ ├── TContainsTable.html │ │ │ ├── TContinueSqlNode.html │ │ │ ├── TCreateDatabaseSqlNode.html │ │ │ ├── TCreateDirectorySqlNode.html │ │ │ ├── TCreateFunctionSqlNode.html │ │ │ ├── TCreateIndexSqlNode.html │ │ │ ├── TCreateMaterializedViewLogSqlNode.html │ │ │ ├── TCreateMaterializedViewSqlNode.html │ │ │ ├── TCreatePackageSqlNode.html │ │ │ ├── TCreateProcedureSqlNode.html │ │ │ ├── TCreateRowTypeSqlNode.html │ │ │ ├── TCreateSequenceSqlNode.html │ │ │ ├── TCreateSynonymSqlNode.html │ │ │ ├── TCreateTableSqlNode.html │ │ │ ├── TCreateTriggerSqlNode.html │ │ │ ├── TCreateViewSqlNode.html │ │ │ ├── TDataChangeTable.html │ │ │ ├── TDatatypeAttribute.html │ │ │ ├── TDatatypeAttributeList.html │ │ │ ├── TDatetimeExpression.html │ │ │ ├── TDeclareSqlNode.html │ │ │ ├── TDeclareVariable.html │ │ │ ├── TDeclareVariableList.html │ │ │ ├── TDeleteSqlNode.html │ │ │ ├── TDescribeSqlNode.html │ │ │ ├── TDmlEventClause.html │ │ │ ├── TDmlSelectItem.html │ │ │ ├── TDmlSelectItemList.html │ │ │ ├── TDropDbObjectSqlNode.html │ │ │ ├── TDropIndexItem.html │ │ │ ├── TDropIndexItemList.html │ │ │ ├── TDropIndexSqlNode.html │ │ │ ├── TDropTableSqlNode.html │ │ │ ├── TDropViewSqlNode.html │ │ │ ├── TDummy.html │ │ │ ├── TDummyList.html │ │ │ ├── TElseIfSqlNode.html │ │ │ ├── TElseIfSqlNodeList.html │ │ │ ├── TExecParameter.html │ │ │ ├── TExecParameterList.html │ │ │ ├── TExecuteAsSqlNode.html │ │ │ ├── TExecuteSqlNode.html │ │ │ ├── TExpression.html │ │ │ ├── TExpressionList.html │ │ │ ├── TFetchFirstClause.html │ │ │ ├── TFetchSqlNode.html │ │ │ ├── TFlashback.html │ │ │ ├── TForSqlNode.html │ │ │ ├── TForUpdate.html │ │ │ ├── TFrameExclusionClause.html │ │ │ ├── TFromTable.html │ │ │ ├── TFromTableList.html │ │ │ ├── TFunctionCall.html │ │ │ ├── TGrantSqlNode.html │ │ │ ├── TGroupBy.html │ │ │ ├── TGroupByItem.html │ │ │ ├── TGroupByItemList.html │ │ │ ├── TGroupingExpressionItem.html │ │ │ ├── TGroupingExpressionItemList.html │ │ │ ├── TGroupingSet.html │ │ │ ├── TGroupingSetItem.html │ │ │ ├── TGroupingSetItemList.html │ │ │ ├── THierarchical.html │ │ │ ├── TIfSqlNode.html │ │ │ ├── TInExpr.html │ │ │ ├── TIncludeColumns.html │ │ │ ├── TIndices.html │ │ │ ├── TIndirection.html │ │ │ ├── TInformixOuterClause.html │ │ │ ├── TInsertCondition.html │ │ │ ├── TInsertIntoValue.html │ │ │ ├── TInsertSqlNode.html │ │ │ ├── TIntervalExpression.html │ │ │ ├── TIntoClause.html │ │ │ ├── TIntoTableClause.html │ │ │ ├── TIsolationClause.html │ │ │ ├── TJoin.html │ │ │ ├── TJoinExpr.html │ │ │ ├── TJoinItem.html │ │ │ ├── TJoinItemList.html │ │ │ ├── TJoinList.html │ │ │ ├── TKeepDenseRankClause.html │ │ │ ├── TKeyAction.html │ │ │ ├── TKeyReference.html │ │ │ ├── TLimitClause.html │ │ │ ├── TLockingClause.html │ │ │ ├── TLockingClauseList.html │ │ │ ├── TLoopSqlNode.html │ │ │ ├── TMergeDeleteClause.html │ │ │ ├── TMergeInsertClause.html │ │ │ ├── TMergeSqlNode.html │ │ │ ├── TMergeUpdateClause.html │ │ │ ├── TMergeWhenClause.html │ │ │ ├── TMultiTarget.html │ │ │ ├── TMultiTargetList.html │ │ │ ├── TMySQLCreateTableOption.html │ │ │ ├── TMySQLIndexStorageType.html │ │ │ ├── TNewVariantTypeArgument.html │ │ │ ├── TNewVariantTypeArgumentList.html │ │ │ ├── TNodeFactory.html │ │ │ ├── TNodeWithAliasClause.html │ │ │ ├── TNonDmlTriggerClause.html │ │ │ ├── TObjectAccess.html │ │ │ ├── TObjectName.html │ │ │ ├── TObjectNameList.html │ │ │ ├── TObjectReference.html │ │ │ ├── TObjectReferenceList.html │ │ │ ├── TOffsetClause.html │ │ │ ├── TOpenDatasource.html │ │ │ ├── TOpenQuery.html │ │ │ ├── TOpenRowSet.html │ │ │ ├── TOpenSqlNode.html │ │ │ ├── TOpenXML.html │ │ │ ├── TOptimizeForClause.html │ │ │ ├── TOrderBy.html │ │ │ ├── TOrderByItem.html │ │ │ ├── TOrderByItemList.html │ │ │ ├── TOutputClause.html │ │ │ ├── TOutputFormatPhrase.html │ │ │ ├── TOutputFormatPhraseList.html │ │ │ ├── TPTNodeList.html │ │ │ ├── TParameterDeclaration.html │ │ │ ├── TParameterDeclarationList.html │ │ │ ├── TParseErrorSqlNode.html │ │ │ ├── TParseTreeNode.html │ │ │ ├── TParseTreeNodeList.html │ │ │ ├── TParseTreeVisitor.html │ │ │ ├── TPartitionClause.html │ │ │ ├── TPartitionExtensionClause.html │ │ │ ├── TPivotClause.html │ │ │ ├── TPivotInClause.html │ │ │ ├── TPrecisionScale.html │ │ │ ├── TPxGranule.html │ │ │ ├── TQualifyClause.html │ │ │ ├── TRelationExpr.html │ │ │ ├── TRelationExprList.html │ │ │ ├── TRepeatSqlNode.html │ │ │ ├── TRestrictionClause.html │ │ │ ├── TResultColumn.html │ │ │ ├── TResultColumnList.html │ │ │ ├── TReturnSqlNode.html │ │ │ ├── TReturningClause.html │ │ │ ├── TRevokeSqlNode.html │ │ │ ├── TRollupCube.html │ │ │ ├── TSampleClause.html │ │ │ ├── TSelectDistinct.html │ │ │ ├── TSelectLimit.html │ │ │ ├── TSelectSqlNode.html │ │ │ ├── TSetSqlNode.html │ │ │ ├── TSimpleDmlTriggerClause.html │ │ │ ├── TStatementListSqlNode.html │ │ │ ├── TStatementSqlNode.html │ │ │ ├── TStubStmtSqlNode.html │ │ │ ├── TSubscripts.html │ │ │ ├── TSymbolTableItem.html │ │ │ ├── TTable.html │ │ │ ├── TTableElement.html │ │ │ ├── TTableElementList.html │ │ │ ├── TTableHint.html │ │ │ ├── TTableList.html │ │ │ ├── TTableReference.html │ │ │ ├── TTableReferenceList.html │ │ │ ├── TTableSample.html │ │ │ ├── TTableSamplePart.html │ │ │ ├── TTeradataWithClause.html │ │ │ ├── TTeradataWithClauseItem.html │ │ │ ├── TTeradataWithClauseItemList.html │ │ │ ├── TTopClause.html │ │ │ ├── TTriggerAction.html │ │ │ ├── TTrimArgument.html │ │ │ ├── TTruncateTableSqlNode.html │ │ │ ├── TTypeAttribute.html │ │ │ ├── TTypeAttributeList.html │ │ │ ├── TTypeName.html │ │ │ ├── TTypeNameList.html │ │ │ ├── TUnpivotInClause.html │ │ │ ├── TUnpivotInClauseItem.html │ │ │ ├── TUpdateSqlNode.html │ │ │ ├── TValueClause.html │ │ │ ├── TValueRowItem.html │ │ │ ├── TValueRowItemList.html │ │ │ ├── TViewAliasClause.html │ │ │ ├── TViewAliasItem.html │ │ │ ├── TViewAliasItemList.html │ │ │ ├── TWhenClauseItem.html │ │ │ ├── TWhenClauseItemList.html │ │ │ ├── TWhereClause.html │ │ │ ├── TWhileSqlNode.html │ │ │ ├── TWindowClause.html │ │ │ ├── TWindowDef.html │ │ │ ├── TXmlElement.html │ │ │ ├── TXmlRoot.html │ │ │ ├── TXmlSerialize.html │ │ │ ├── TXmlTable.html │ │ │ └── Visitable.html │ │ ├── mdx │ │ │ ├── EMdxConstruct.html │ │ │ ├── EMdxDataType.html │ │ │ ├── EMdxExpSyntax.html │ │ │ ├── EMdxQuoting.html │ │ │ ├── IMdxIdentifierSegment.html │ │ │ ├── TMdxAxisNode.html │ │ │ ├── TMdxBaseFunctionNode.html │ │ │ ├── TMdxBinOpNode.html │ │ │ ├── TMdxCalcPropNode.html │ │ │ ├── TMdxCallNode.html │ │ │ ├── TMdxCaseNode.html │ │ │ ├── TMdxConstNode.html │ │ │ ├── TMdxCreateMemberNode.html │ │ │ ├── TMdxCreateSessionCubeNode.html │ │ │ ├── TMdxCreateSetNode.html │ │ │ ├── TMdxCreateSubCubeNode.html │ │ │ ├── TMdxDimContentNode.html │ │ │ ├── TMdxDimensionNode.html │ │ │ ├── TMdxDrillthroughNode.html │ │ │ ├── TMdxEmptyNode.html │ │ │ ├── TMdxExpNode.html │ │ │ ├── TMdxFloatConstNode.html │ │ │ ├── TMdxFunctionNode.html │ │ │ ├── TMdxGroupNode.html │ │ │ ├── TMdxIdentifierNode.html │ │ │ ├── TMdxIntegerConstNode.html │ │ │ ├── TMdxKeySegment.html │ │ │ ├── TMdxLevelContentNode.html │ │ │ ├── TMdxLevelNode.html │ │ │ ├── TMdxMeasureNode.html │ │ │ ├── TMdxMemberNode.html │ │ │ ├── TMdxNameSegment.html │ │ │ ├── TMdxNonEmptyNode.html │ │ │ ├── TMdxObjectNode.html │ │ │ ├── TMdxPropertyNode.html │ │ │ ├── TMdxScopeNode.html │ │ │ ├── TMdxSelectNode.html │ │ │ ├── TMdxSetNode.html │ │ │ ├── TMdxStringConstNode.html │ │ │ ├── TMdxTupleNode.html │ │ │ ├── TMdxUnaryOpNode.html │ │ │ ├── TMdxWhenNode.html │ │ │ ├── TMdxWhereNode.html │ │ │ ├── TMdxWithMemberNode.html │ │ │ ├── TMdxWithNode.html │ │ │ ├── TMdxWithSetNode.html │ │ │ ├── class-use │ │ │ │ ├── EMdxConstruct.html │ │ │ │ ├── EMdxDataType.html │ │ │ │ ├── EMdxExpSyntax.html │ │ │ │ ├── EMdxQuoting.html │ │ │ │ ├── IMdxIdentifierSegment.html │ │ │ │ ├── TMdxAxisNode.html │ │ │ │ ├── TMdxBaseFunctionNode.html │ │ │ │ ├── TMdxBinOpNode.html │ │ │ │ ├── TMdxCalcPropNode.html │ │ │ │ ├── TMdxCallNode.html │ │ │ │ ├── TMdxCaseNode.html │ │ │ │ ├── TMdxConstNode.html │ │ │ │ ├── TMdxCreateMemberNode.html │ │ │ │ ├── TMdxCreateSessionCubeNode.html │ │ │ │ ├── TMdxCreateSetNode.html │ │ │ │ ├── TMdxCreateSubCubeNode.html │ │ │ │ ├── TMdxDimContentNode.html │ │ │ │ ├── TMdxDimensionNode.html │ │ │ │ ├── TMdxDrillthroughNode.html │ │ │ │ ├── TMdxEmptyNode.html │ │ │ │ ├── TMdxExpNode.html │ │ │ │ ├── TMdxFloatConstNode.html │ │ │ │ ├── TMdxFunctionNode.html │ │ │ │ ├── TMdxGroupNode.html │ │ │ │ ├── TMdxIdentifierNode.html │ │ │ │ ├── TMdxIntegerConstNode.html │ │ │ │ ├── TMdxKeySegment.html │ │ │ │ ├── TMdxLevelContentNode.html │ │ │ │ ├── TMdxLevelNode.html │ │ │ │ ├── TMdxMeasureNode.html │ │ │ │ ├── TMdxMemberNode.html │ │ │ │ ├── TMdxNameSegment.html │ │ │ │ ├── TMdxNonEmptyNode.html │ │ │ │ ├── TMdxObjectNode.html │ │ │ │ ├── TMdxPropertyNode.html │ │ │ │ ├── TMdxScopeNode.html │ │ │ │ ├── TMdxSelectNode.html │ │ │ │ ├── TMdxSetNode.html │ │ │ │ ├── TMdxStringConstNode.html │ │ │ │ ├── TMdxTupleNode.html │ │ │ │ ├── TMdxUnaryOpNode.html │ │ │ │ ├── TMdxWhenNode.html │ │ │ │ ├── TMdxWhereNode.html │ │ │ │ ├── TMdxWithMemberNode.html │ │ │ │ ├── TMdxWithNode.html │ │ │ │ └── TMdxWithSetNode.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ ├── oracle │ │ │ ├── TInvokerRightsClause.html │ │ │ ├── TParallelEnableClause.html │ │ │ ├── TResultCacheClause.html │ │ │ ├── TStreamingClause.html │ │ │ ├── class-use │ │ │ │ ├── TInvokerRightsClause.html │ │ │ │ ├── TParallelEnableClause.html │ │ │ │ ├── TResultCacheClause.html │ │ │ │ └── TStreamingClause.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ └── package-use.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ ├── package-use.html │ │ ├── stmt │ │ ├── TAlterIndexStmt.html │ │ ├── TAlterSessionStatement.html │ │ ├── TAlterTableStatement.html │ │ ├── TBlockSqlStatement.html │ │ ├── TCreateDatabaseSqlStatement.html │ │ ├── TCreateIndexSqlStatement.html │ │ ├── TCreateMaterializedSqlStatement.html │ │ ├── TCreateSequenceStmt.html │ │ ├── TCreateSynonymStmt.html │ │ ├── TCreateTableSqlStatement.html │ │ ├── TCreateViewSqlStatement.html │ │ ├── TDeleteSqlStatement.html │ │ ├── TDescribeStmt.html │ │ ├── TDropIndexSqlStatement.html │ │ ├── TDropSequenceStmt.html │ │ ├── TDropSynonymStmt.html │ │ ├── TDropTableSqlStatement.html │ │ ├── TDropViewSqlStatement.html │ │ ├── TInsertSqlStatement.html │ │ ├── TMergeSqlStatement.html │ │ ├── TParseErrorSqlStatement.html │ │ ├── TRenameStmt.html │ │ ├── TSelectSqlStatement.html │ │ ├── TStoredProcedureSqlStatement.html │ │ ├── TTruncateStatement.html │ │ ├── TUnknownSqlStatement.html │ │ ├── TUpdateSqlStatement.html │ │ ├── class-use │ │ │ ├── TAlterIndexStmt.html │ │ │ ├── TAlterSessionStatement.html │ │ │ ├── TAlterTableStatement.html │ │ │ ├── TBlockSqlStatement.html │ │ │ ├── TCreateDatabaseSqlStatement.html │ │ │ ├── TCreateIndexSqlStatement.html │ │ │ ├── TCreateMaterializedSqlStatement.html │ │ │ ├── TCreateSequenceStmt.html │ │ │ ├── TCreateSynonymStmt.html │ │ │ ├── TCreateTableSqlStatement.html │ │ │ ├── TCreateViewSqlStatement.html │ │ │ ├── TDeleteSqlStatement.html │ │ │ ├── TDescribeStmt.html │ │ │ ├── TDropIndexSqlStatement.html │ │ │ ├── TDropSequenceStmt.html │ │ │ ├── TDropSynonymStmt.html │ │ │ ├── TDropTableSqlStatement.html │ │ │ ├── TDropViewSqlStatement.html │ │ │ ├── TInsertSqlStatement.html │ │ │ ├── TMergeSqlStatement.html │ │ │ ├── TParseErrorSqlStatement.html │ │ │ ├── TRenameStmt.html │ │ │ ├── TSelectSqlStatement.html │ │ │ ├── TStoredProcedureSqlStatement.html │ │ │ ├── TTruncateStatement.html │ │ │ ├── TUnknownSqlStatement.html │ │ │ └── TUpdateSqlStatement.html │ │ ├── db2 │ │ │ ├── TCustomDb2Stmt.html │ │ │ ├── TDb2CallStmt.html │ │ │ ├── TDb2CaseStmt.html │ │ │ ├── TDb2CloseCursorStmt.html │ │ │ ├── TDb2ConditionDeclaration.html │ │ │ ├── TDb2CreateFunction.html │ │ │ ├── TDb2CreateProcedure.html │ │ │ ├── TDb2CreateTrigger.html │ │ │ ├── TDb2DeclareCursorStatement.html │ │ │ ├── TDb2DummyStmt.html │ │ │ ├── TDb2DynamicCompoundStatement.html │ │ │ ├── TDb2FetchCursorStmt.html │ │ │ ├── TDb2ForStmt.html │ │ │ ├── TDb2GotoStmt.html │ │ │ ├── TDb2HandlerDeclaration.html │ │ │ ├── TDb2IfStmt.html │ │ │ ├── TDb2IterateStmt.html │ │ │ ├── TDb2LeaveStmt.html │ │ │ ├── TDb2LoopStmt.html │ │ │ ├── TDb2OpenCursorStmt.html │ │ │ ├── TDb2ProcedureCompoundStatement.html │ │ │ ├── TDb2RepeatStmt.html │ │ │ ├── TDb2ReturnCodesDeclaration.html │ │ │ ├── TDb2ReturnStmt.html │ │ │ ├── TDb2SetStmt.html │ │ │ ├── TDb2SetVariableStmt.html │ │ │ ├── TDb2SignalStmt.html │ │ │ ├── TDb2SqlProcedureStatement.html │ │ │ ├── TDb2SqlVariableDeclaration.html │ │ │ ├── TDb2StatementDeclaration.html │ │ │ ├── TDb2StmtStub.html │ │ │ ├── TDb2ValuesIntoStmt.html │ │ │ ├── TDb2WhileStmt.html │ │ │ ├── class-use │ │ │ │ ├── TCustomDb2Stmt.html │ │ │ │ ├── TDb2CallStmt.html │ │ │ │ ├── TDb2CaseStmt.html │ │ │ │ ├── TDb2CloseCursorStmt.html │ │ │ │ ├── TDb2ConditionDeclaration.html │ │ │ │ ├── TDb2CreateFunction.html │ │ │ │ ├── TDb2CreateProcedure.html │ │ │ │ ├── TDb2CreateTrigger.html │ │ │ │ ├── TDb2DeclareCursorStatement.html │ │ │ │ ├── TDb2DummyStmt.html │ │ │ │ ├── TDb2DynamicCompoundStatement.html │ │ │ │ ├── TDb2FetchCursorStmt.html │ │ │ │ ├── TDb2ForStmt.html │ │ │ │ ├── TDb2GotoStmt.html │ │ │ │ ├── TDb2HandlerDeclaration.html │ │ │ │ ├── TDb2IfStmt.html │ │ │ │ ├── TDb2IterateStmt.html │ │ │ │ ├── TDb2LeaveStmt.html │ │ │ │ ├── TDb2LoopStmt.html │ │ │ │ ├── TDb2OpenCursorStmt.html │ │ │ │ ├── TDb2ProcedureCompoundStatement.html │ │ │ │ ├── TDb2RepeatStmt.html │ │ │ │ ├── TDb2ReturnCodesDeclaration.html │ │ │ │ ├── TDb2ReturnStmt.html │ │ │ │ ├── TDb2SetStmt.html │ │ │ │ ├── TDb2SetVariableStmt.html │ │ │ │ ├── TDb2SignalStmt.html │ │ │ │ ├── TDb2SqlProcedureStatement.html │ │ │ │ ├── TDb2SqlVariableDeclaration.html │ │ │ │ ├── TDb2StatementDeclaration.html │ │ │ │ ├── TDb2StmtStub.html │ │ │ │ ├── TDb2ValuesIntoStmt.html │ │ │ │ └── TDb2WhileStmt.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ ├── informix │ │ │ ├── TInformixAllocateCollectionStmt.html │ │ │ ├── TInformixAllocateDescriptorStmt.html │ │ │ ├── TInformixAllocateRow.html │ │ │ ├── TInformixAlterAccess_MethodStmt.html │ │ │ ├── TInformixAlterFragment.html │ │ │ ├── TInformixCreateFunction.html │ │ │ ├── TInformixCreateProcedure.html │ │ │ ├── TInformixCreateRowTypeStmt.html │ │ │ ├── TInformixCreateTrigger.html │ │ │ ├── TInformixDropRowTypeStmt.html │ │ │ ├── TInformixExecuteFunction.html │ │ │ ├── TInformixExecuteImmediate.html │ │ │ ├── TInformixExecuteProcedure.html │ │ │ ├── TInformixExecuteStmt.html │ │ │ ├── class-use │ │ │ │ ├── TInformixAllocateCollectionStmt.html │ │ │ │ ├── TInformixAllocateDescriptorStmt.html │ │ │ │ ├── TInformixAllocateRow.html │ │ │ │ ├── TInformixAlterAccess_MethodStmt.html │ │ │ │ ├── TInformixAlterFragment.html │ │ │ │ ├── TInformixCreateFunction.html │ │ │ │ ├── TInformixCreateProcedure.html │ │ │ │ ├── TInformixCreateRowTypeStmt.html │ │ │ │ ├── TInformixCreateTrigger.html │ │ │ │ ├── TInformixDropRowTypeStmt.html │ │ │ │ ├── TInformixExecuteFunction.html │ │ │ │ ├── TInformixExecuteImmediate.html │ │ │ │ ├── TInformixExecuteProcedure.html │ │ │ │ └── TInformixExecuteStmt.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ ├── mdx │ │ │ ├── TMdxAlterCube.html │ │ │ ├── TMdxCalculate.html │ │ │ ├── TMdxCall.html │ │ │ ├── TMdxCase.html │ │ │ ├── TMdxClearCalculations.html │ │ │ ├── TMdxCreateAction.html │ │ │ ├── TMdxCreateCellCalculation.html │ │ │ ├── TMdxCreateGlobalCube.html │ │ │ ├── TMdxCreateMember.html │ │ │ ├── TMdxCreateSessionCube.html │ │ │ ├── TMdxCreateSet.html │ │ │ ├── TMdxCreateSubCube.html │ │ │ ├── TMdxDrillthrough.html │ │ │ ├── TMdxDropAction.html │ │ │ ├── TMdxDropCellCalculation.html │ │ │ ├── TMdxDropMember.html │ │ │ ├── TMdxDropSet.html │ │ │ ├── TMdxDropSubcube.html │ │ │ ├── TMdxExpression.html │ │ │ ├── TMdxFreeze.html │ │ │ ├── TMdxIf.html │ │ │ ├── TMdxRefreshCube.html │ │ │ ├── TMdxScope.html │ │ │ ├── TMdxSelect.html │ │ │ ├── TMdxUpdate.html │ │ │ ├── class-use │ │ │ │ ├── TMdxAlterCube.html │ │ │ │ ├── TMdxCalculate.html │ │ │ │ ├── TMdxCall.html │ │ │ │ ├── TMdxCase.html │ │ │ │ ├── TMdxClearCalculations.html │ │ │ │ ├── TMdxCreateAction.html │ │ │ │ ├── TMdxCreateCellCalculation.html │ │ │ │ ├── TMdxCreateGlobalCube.html │ │ │ │ ├── TMdxCreateMember.html │ │ │ │ ├── TMdxCreateSessionCube.html │ │ │ │ ├── TMdxCreateSet.html │ │ │ │ ├── TMdxCreateSubCube.html │ │ │ │ ├── TMdxDrillthrough.html │ │ │ │ ├── TMdxDropAction.html │ │ │ │ ├── TMdxDropCellCalculation.html │ │ │ │ ├── TMdxDropMember.html │ │ │ │ ├── TMdxDropSet.html │ │ │ │ ├── TMdxDropSubcube.html │ │ │ │ ├── TMdxExpression.html │ │ │ │ ├── TMdxFreeze.html │ │ │ │ ├── TMdxIf.html │ │ │ │ ├── TMdxRefreshCube.html │ │ │ │ ├── TMdxScope.html │ │ │ │ ├── TMdxSelect.html │ │ │ │ └── TMdxUpdate.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ ├── mssql │ │ │ ├── TMssqlBeginDialog.html │ │ │ ├── TMssqlBeginDialogSqlNode.html │ │ │ ├── TMssqlBeginTran.html │ │ │ ├── TMssqlBeginTranSqlNode.html │ │ │ ├── TMssqlBlock.html │ │ │ ├── TMssqlBreak.html │ │ │ ├── TMssqlBulkInsert.html │ │ │ ├── TMssqlBulkInsertSqlNode.html │ │ │ ├── TMssqlClose.html │ │ │ ├── TMssqlCommit.html │ │ │ ├── TMssqlContinue.html │ │ │ ├── TMssqlCreateFunction.html │ │ │ ├── TMssqlCreateProcedure.html │ │ │ ├── TMssqlCreateTrigger.html │ │ │ ├── TMssqlCreateTriggerUpdateColumn.html │ │ │ ├── TMssqlCreateTriggerUpdateColumnList.html │ │ │ ├── TMssqlDeallocate.html │ │ │ ├── TMssqlDeallocateSqlNode.html │ │ │ ├── TMssqlDeclare.html │ │ │ ├── TMssqlDropDbObject.html │ │ │ ├── TMssqlDropIndex.html │ │ │ ├── TMssqlDropTable.html │ │ │ ├── TMssqlDropView.html │ │ │ ├── TMssqlDummyStmt.html │ │ │ ├── TMssqlEndConversation.html │ │ │ ├── TMssqlEndConversationSqlNode.html │ │ │ ├── TMssqlErrorStmt.html │ │ │ ├── TMssqlExecute.html │ │ │ ├── TMssqlExecuteAs.html │ │ │ ├── TMssqlFetch.html │ │ │ ├── TMssqlGo.html │ │ │ ├── TMssqlGoTo.html │ │ │ ├── TMssqlGotoSqlNode.html │ │ │ ├── TMssqlGrant.html │ │ │ ├── TMssqlIfElse.html │ │ │ ├── TMssqlLabel.html │ │ │ ├── TMssqlLabelSqlNode.html │ │ │ ├── TMssqlOpen.html │ │ │ ├── TMssqlPrint.html │ │ │ ├── TMssqlRaiserror.html │ │ │ ├── TMssqlRaiserrorSqlNode.html │ │ │ ├── TMssqlReturn.html │ │ │ ├── TMssqlRevert.html │ │ │ ├── TMssqlRevertSqlNode.html │ │ │ ├── TMssqlRollback.html │ │ │ ├── TMssqlSaveTran.html │ │ │ ├── TMssqlSendOnConversation.html │ │ │ ├── TMssqlSendOnConversationSqlNode.html │ │ │ ├── TMssqlSet.html │ │ │ ├── TMssqlSetSqlNode.html │ │ │ ├── TMssqlStmtStub.html │ │ │ ├── TMssqlStmtStubSqlNode.html │ │ │ ├── TMssqlTruncateTable.html │ │ │ ├── TMssqlUpdateStatistics.html │ │ │ ├── TMssqlUpdateText.html │ │ │ ├── TMssqlUpdateTextSqlNode.html │ │ │ ├── TMssqlUse.html │ │ │ ├── TMssqlWaitFor.html │ │ │ ├── TMssqlWithas.html │ │ │ ├── class-use │ │ │ │ ├── TMssqlBeginDialog.html │ │ │ │ ├── TMssqlBeginDialogSqlNode.html │ │ │ │ ├── TMssqlBeginTran.html │ │ │ │ ├── TMssqlBeginTranSqlNode.html │ │ │ │ ├── TMssqlBlock.html │ │ │ │ ├── TMssqlBreak.html │ │ │ │ ├── TMssqlBulkInsert.html │ │ │ │ ├── TMssqlBulkInsertSqlNode.html │ │ │ │ ├── TMssqlClose.html │ │ │ │ ├── TMssqlCommit.html │ │ │ │ ├── TMssqlContinue.html │ │ │ │ ├── TMssqlCreateFunction.html │ │ │ │ ├── TMssqlCreateProcedure.html │ │ │ │ ├── TMssqlCreateTrigger.html │ │ │ │ ├── TMssqlCreateTriggerUpdateColumn.html │ │ │ │ ├── TMssqlCreateTriggerUpdateColumnList.html │ │ │ │ ├── TMssqlDeallocate.html │ │ │ │ ├── TMssqlDeallocateSqlNode.html │ │ │ │ ├── TMssqlDeclare.html │ │ │ │ ├── TMssqlDropDbObject.html │ │ │ │ ├── TMssqlDropIndex.html │ │ │ │ ├── TMssqlDropTable.html │ │ │ │ ├── TMssqlDropView.html │ │ │ │ ├── TMssqlDummyStmt.html │ │ │ │ ├── TMssqlEndConversation.html │ │ │ │ ├── TMssqlEndConversationSqlNode.html │ │ │ │ ├── TMssqlErrorStmt.html │ │ │ │ ├── TMssqlExecute.html │ │ │ │ ├── TMssqlExecuteAs.html │ │ │ │ ├── TMssqlFetch.html │ │ │ │ ├── TMssqlGo.html │ │ │ │ ├── TMssqlGoTo.html │ │ │ │ ├── TMssqlGotoSqlNode.html │ │ │ │ ├── TMssqlGrant.html │ │ │ │ ├── TMssqlIfElse.html │ │ │ │ ├── TMssqlLabel.html │ │ │ │ ├── TMssqlLabelSqlNode.html │ │ │ │ ├── TMssqlOpen.html │ │ │ │ ├── TMssqlPrint.html │ │ │ │ ├── TMssqlRaiserror.html │ │ │ │ ├── TMssqlRaiserrorSqlNode.html │ │ │ │ ├── TMssqlReturn.html │ │ │ │ ├── TMssqlRevert.html │ │ │ │ ├── TMssqlRevertSqlNode.html │ │ │ │ ├── TMssqlRollback.html │ │ │ │ ├── TMssqlSaveTran.html │ │ │ │ ├── TMssqlSendOnConversation.html │ │ │ │ ├── TMssqlSendOnConversationSqlNode.html │ │ │ │ ├── TMssqlSet.html │ │ │ │ ├── TMssqlSetSqlNode.html │ │ │ │ ├── TMssqlStmtStub.html │ │ │ │ ├── TMssqlStmtStubSqlNode.html │ │ │ │ ├── TMssqlTruncateTable.html │ │ │ │ ├── TMssqlUpdateStatistics.html │ │ │ │ ├── TMssqlUpdateText.html │ │ │ │ ├── TMssqlUpdateTextSqlNode.html │ │ │ │ ├── TMssqlUse.html │ │ │ │ ├── TMssqlWaitFor.html │ │ │ │ └── TMssqlWithas.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ ├── mysql │ │ │ ├── TCustomMySQLStmt.html │ │ │ ├── TMySQLBlock.html │ │ │ ├── TMySQLCallStmt.html │ │ │ ├── TMySQLCaseStmt.html │ │ │ ├── TMySQLCreateFunction.html │ │ │ ├── TMySQLCreateProcedure.html │ │ │ ├── TMySQLCreateTrigger.html │ │ │ ├── TMySQLDeclare.html │ │ │ ├── TMySQLFetchCursor.html │ │ │ ├── TMySQLIfStmt.html │ │ │ ├── TMySQLLoopStmt.html │ │ │ ├── TMySQLOpenCursor.html │ │ │ ├── TMySQLPrepareSqlNode.html │ │ │ ├── TMySQLPrepareStmt.html │ │ │ ├── TMySQLRepeatStmt.html │ │ │ ├── TMySQLReturn.html │ │ │ ├── TMySQLSet.html │ │ │ ├── TMySQLStmtStub.html │ │ │ ├── TMySQLWhileStmt.html │ │ │ ├── class-use │ │ │ │ ├── TCustomMySQLStmt.html │ │ │ │ ├── TMySQLBlock.html │ │ │ │ ├── TMySQLCallStmt.html │ │ │ │ ├── TMySQLCaseStmt.html │ │ │ │ ├── TMySQLCreateFunction.html │ │ │ │ ├── TMySQLCreateProcedure.html │ │ │ │ ├── TMySQLCreateTrigger.html │ │ │ │ ├── TMySQLDeclare.html │ │ │ │ ├── TMySQLFetchCursor.html │ │ │ │ ├── TMySQLIfStmt.html │ │ │ │ ├── TMySQLLoopStmt.html │ │ │ │ ├── TMySQLOpenCursor.html │ │ │ │ ├── TMySQLPrepareSqlNode.html │ │ │ │ ├── TMySQLPrepareStmt.html │ │ │ │ ├── TMySQLRepeatStmt.html │ │ │ │ ├── TMySQLReturn.html │ │ │ │ ├── TMySQLSet.html │ │ │ │ ├── TMySQLStmtStub.html │ │ │ │ └── TMySQLWhileStmt.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ ├── oracle │ │ │ ├── TCustomOracleSqlStmt.html │ │ │ ├── TExceptionClause.html │ │ │ ├── TExceptionHandler.html │ │ │ ├── TExceptionHandlerList.html │ │ │ ├── TExecImmeNode.html │ │ │ ├── TExplainPlan.html │ │ │ ├── TOracleCommentOnSqlStmt.html │ │ │ ├── TOracleCreateDirectoryStmt.html │ │ │ ├── TOracleCreateSequenceStmt.html │ │ │ ├── TOracleCreateSynonymStmt.html │ │ │ ├── TOracleExecuteProcedure.html │ │ │ ├── TOracleStoredProcedureSqlStatement.html │ │ │ ├── TPlsqlAssignStmt.html │ │ │ ├── TPlsqlBasicStmt.html │ │ │ ├── TPlsqlBlock.html │ │ │ ├── TPlsqlCaseStmt.html │ │ │ ├── TPlsqlCloseStmt.html │ │ │ ├── TPlsqlCreateFunction.html │ │ │ ├── TPlsqlCreatePackage.html │ │ │ ├── TPlsqlCreateProcedure.html │ │ │ ├── TPlsqlCreateTrigger.html │ │ │ ├── TPlsqlCreateType.html │ │ │ ├── TPlsqlCreateTypeBody.html │ │ │ ├── TPlsqlCreateType_Placeholder.html │ │ │ ├── TPlsqlCursorDeclStmt.html │ │ │ ├── TPlsqlDummyStmt.html │ │ │ ├── TPlsqlElsifStmt.html │ │ │ ├── TPlsqlExecImmeStmt.html │ │ │ ├── TPlsqlExitStmt.html │ │ │ ├── TPlsqlFetchStmt.html │ │ │ ├── TPlsqlForallStmt.html │ │ │ ├── TPlsqlGotoStmt.html │ │ │ ├── TPlsqlIfStmt.html │ │ │ ├── TPlsqlLoopStmt.html │ │ │ ├── TPlsqlNullStmt.html │ │ │ ├── TPlsqlOpenStmt.html │ │ │ ├── TPlsqlOpenforStmt.html │ │ │ ├── TPlsqlPipeRowStmt.html │ │ │ ├── TPlsqlPragmaDeclStmt.html │ │ │ ├── TPlsqlProcedureSpecStmt.html │ │ │ ├── TPlsqlRaiseStmt.html │ │ │ ├── TPlsqlRecordTypeDefStmt.html │ │ │ ├── TPlsqlReturnStmt.html │ │ │ ├── TPlsqlSqlStmt.html │ │ │ ├── TPlsqlStatement.html │ │ │ ├── TPlsqlStmt.html │ │ │ ├── TPlsqlSubProgram.html │ │ │ ├── TPlsqlTableTypeDefStmt.html │ │ │ ├── TPlsqlVarDeclStmt.html │ │ │ ├── TPlsqlVarrayTypeDefStmt.html │ │ │ ├── TSqlplusCmdStatement.html │ │ │ ├── class-use │ │ │ │ ├── TCustomOracleSqlStmt.html │ │ │ │ ├── TExceptionClause.html │ │ │ │ ├── TExceptionHandler.html │ │ │ │ ├── TExceptionHandlerList.html │ │ │ │ ├── TExecImmeNode.html │ │ │ │ ├── TExplainPlan.html │ │ │ │ ├── TOracleCommentOnSqlStmt.html │ │ │ │ ├── TOracleCreateDirectoryStmt.html │ │ │ │ ├── TOracleCreateSequenceStmt.html │ │ │ │ ├── TOracleCreateSynonymStmt.html │ │ │ │ ├── TOracleExecuteProcedure.html │ │ │ │ ├── TOracleStoredProcedureSqlStatement.html │ │ │ │ ├── TPlsqlAssignStmt.html │ │ │ │ ├── TPlsqlBasicStmt.html │ │ │ │ ├── TPlsqlBlock.html │ │ │ │ ├── TPlsqlCaseStmt.html │ │ │ │ ├── TPlsqlCloseStmt.html │ │ │ │ ├── TPlsqlCreateFunction.html │ │ │ │ ├── TPlsqlCreatePackage.html │ │ │ │ ├── TPlsqlCreateProcedure.html │ │ │ │ ├── TPlsqlCreateTrigger.html │ │ │ │ ├── TPlsqlCreateType.html │ │ │ │ ├── TPlsqlCreateTypeBody.html │ │ │ │ ├── TPlsqlCreateType_Placeholder.html │ │ │ │ ├── TPlsqlCursorDeclStmt.html │ │ │ │ ├── TPlsqlDummyStmt.html │ │ │ │ ├── TPlsqlElsifStmt.html │ │ │ │ ├── TPlsqlExecImmeStmt.html │ │ │ │ ├── TPlsqlExitStmt.html │ │ │ │ ├── TPlsqlFetchStmt.html │ │ │ │ ├── TPlsqlForallStmt.html │ │ │ │ ├── TPlsqlGotoStmt.html │ │ │ │ ├── TPlsqlIfStmt.html │ │ │ │ ├── TPlsqlLoopStmt.html │ │ │ │ ├── TPlsqlNullStmt.html │ │ │ │ ├── TPlsqlOpenStmt.html │ │ │ │ ├── TPlsqlOpenforStmt.html │ │ │ │ ├── TPlsqlPipeRowStmt.html │ │ │ │ ├── TPlsqlPragmaDeclStmt.html │ │ │ │ ├── TPlsqlProcedureSpecStmt.html │ │ │ │ ├── TPlsqlRaiseStmt.html │ │ │ │ ├── TPlsqlRecordTypeDefStmt.html │ │ │ │ ├── TPlsqlReturnStmt.html │ │ │ │ ├── TPlsqlSqlStmt.html │ │ │ │ ├── TPlsqlStatement.html │ │ │ │ ├── TPlsqlStmt.html │ │ │ │ ├── TPlsqlSubProgram.html │ │ │ │ ├── TPlsqlTableTypeDefStmt.html │ │ │ │ ├── TPlsqlVarDeclStmt.html │ │ │ │ ├── TPlsqlVarrayTypeDefStmt.html │ │ │ │ └── TSqlplusCmdStatement.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ ├── package-use.html │ │ ├── postgresql │ │ │ ├── TDropRoleSqlStatement.html │ │ │ ├── TDropTriggerSqlStatement.html │ │ │ ├── TExecuteSqlStatement.html │ │ │ ├── TFetchSqlStatement.html │ │ │ ├── TGrantSqlStatement.html │ │ │ ├── TLockSqlStatement.html │ │ │ ├── class-use │ │ │ │ ├── TDropRoleSqlStatement.html │ │ │ │ ├── TDropTriggerSqlStatement.html │ │ │ │ ├── TExecuteSqlStatement.html │ │ │ │ ├── TFetchSqlStatement.html │ │ │ │ ├── TGrantSqlStatement.html │ │ │ │ └── TLockSqlStatement.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ └── teradata │ │ │ ├── TExpandOnClause.html │ │ │ ├── TTeradataAbort.html │ │ │ ├── TTeradataBeginLogging.html │ │ │ ├── TTeradataBeginTransaction.html │ │ │ ├── TTeradataCollectStatistics.html │ │ │ ├── TTeradataCommit.html │ │ │ ├── TTeradataCreateFunction.html │ │ │ ├── TTeradataCreateProcedure.html │ │ │ ├── TTeradataCreateTrigger.html │ │ │ ├── TTeradataDropDbObject.html │ │ │ ├── TTeradataEndLogging.html │ │ │ ├── TTeradataEndTransaction.html │ │ │ ├── TTeradataExecute.html │ │ │ ├── TTeradataGrant.html │ │ │ ├── TTeradataNotImplement.html │ │ │ ├── TTeradataRollback.html │ │ │ ├── TTeradataSetRole.html │ │ │ ├── TTeradataSetSession.html │ │ │ ├── TTeradataSetTimezone.html │ │ │ ├── TTeradataStmtStubSqlNode.html │ │ │ ├── TUsingSqlStatement.html │ │ │ ├── class-use │ │ │ ├── TExpandOnClause.html │ │ │ ├── TTeradataAbort.html │ │ │ ├── TTeradataBeginLogging.html │ │ │ ├── TTeradataBeginTransaction.html │ │ │ ├── TTeradataCollectStatistics.html │ │ │ ├── TTeradataCommit.html │ │ │ ├── TTeradataCreateFunction.html │ │ │ ├── TTeradataCreateProcedure.html │ │ │ ├── TTeradataCreateTrigger.html │ │ │ ├── TTeradataDropDbObject.html │ │ │ ├── TTeradataEndLogging.html │ │ │ ├── TTeradataEndTransaction.html │ │ │ ├── TTeradataExecute.html │ │ │ ├── TTeradataGrant.html │ │ │ ├── TTeradataNotImplement.html │ │ │ ├── TTeradataRollback.html │ │ │ ├── TTeradataSetRole.html │ │ │ ├── TTeradataSetSession.html │ │ │ ├── TTeradataSetTimezone.html │ │ │ ├── TTeradataStmtStubSqlNode.html │ │ │ └── TUsingSqlStatement.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── package-use.html │ │ └── util │ │ ├── TException.html │ │ ├── class-use │ │ ├── TException.html │ │ ├── functionChecker.html │ │ └── keywordChecker.html │ │ ├── functionChecker.html │ │ ├── keywordChecker.html │ │ ├── package-frame.html │ │ ├── package-summary.html │ │ ├── package-tree.html │ │ └── package-use.html ├── help-doc.html ├── index-files │ ├── index-1.html │ ├── index-10.html │ ├── index-11.html │ ├── index-12.html │ ├── index-13.html │ ├── index-14.html │ ├── index-15.html │ ├── index-16.html │ ├── index-17.html │ ├── index-18.html │ ├── index-19.html │ ├── index-2.html │ ├── index-20.html │ ├── index-21.html │ ├── index-22.html │ ├── index-23.html │ ├── index-24.html │ ├── index-3.html │ ├── index-4.html │ ├── index-5.html │ ├── index-6.html │ ├── index-7.html │ ├── index-8.html │ └── index-9.html ├── index.html ├── overview-frame.html ├── overview-summary.html ├── overview-tree.html ├── package-list ├── resources │ └── inherit.gif ├── serialized-form.html └── stylesheet.css └── test1.sql /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | 46 | [Dd]ebug/ 47 | [Rr]elease/ 48 | x64/ 49 | build/ 50 | [Bb]in/ 51 | [Oo]bj/ 52 | 53 | # MSTest test Results 54 | [Tt]est[Rr]esult*/ 55 | [Bb]uild[Ll]og.* 56 | 57 | *_i.c 58 | *_p.c 59 | *.ilk 60 | *.meta 61 | *.obj 62 | *.pch 63 | *.pdb 64 | *.pgc 65 | *.pgd 66 | *.rsp 67 | *.sbr 68 | *.tlb 69 | *.tli 70 | *.tlh 71 | *.tmp 72 | *.tmp_proj 73 | *.log 74 | *.vspscc 75 | *.vssscc 76 | .builds 77 | *.pidb 78 | *.log 79 | *.scc 80 | 81 | # Visual C++ cache files 82 | ipch/ 83 | *.aps 84 | *.ncb 85 | *.opensdf 86 | *.sdf 87 | *.cachefile 88 | 89 | # Visual Studio profiler 90 | *.psess 91 | *.vsp 92 | *.vspx 93 | 94 | # Guidance Automation Toolkit 95 | *.gpState 96 | 97 | # ReSharper is a .NET coding add-in 98 | _ReSharper*/ 99 | *.[Rr]e[Ss]harper 100 | 101 | # TeamCity is a build add-in 102 | _TeamCity* 103 | 104 | # DotCover is a Code Coverage Tool 105 | *.dotCover 106 | 107 | # NCrunch 108 | *.ncrunch* 109 | .*crunch*.local.xml 110 | 111 | # Installshield output folder 112 | [Ee]xpress/ 113 | 114 | # DocProject is a documentation generator add-in 115 | DocProject/buildhelp/ 116 | DocProject/Help/*.HxT 117 | DocProject/Help/*.HxC 118 | DocProject/Help/*.hhc 119 | DocProject/Help/*.hhk 120 | DocProject/Help/*.hhp 121 | DocProject/Help/Html2 122 | DocProject/Help/html 123 | 124 | # Click-Once directory 125 | publish/ 126 | 127 | # Publish Web Output 128 | *.Publish.xml 129 | *.pubxml 130 | 131 | # NuGet Packages Directory 132 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 133 | #packages/ 134 | 135 | # Windows Azure Build Output 136 | csx 137 | *.build.csdef 138 | 139 | # Windows Store app package directory 140 | AppPackages/ 141 | 142 | # Others 143 | sql/ 144 | *.Cache 145 | ClientBin/ 146 | [Ss]tyle[Cc]op.* 147 | ~$* 148 | *~ 149 | *.dbmdl 150 | *.[Pp]ublish.xml 151 | *.pfx 152 | *.publishsettings 153 | 154 | # RIA/Silverlight projects 155 | Generated_Code/ 156 | 157 | # Backup & report files from converting an old project file to a newer 158 | # Visual Studio version. Backup files are not needed, because we have git ;-) 159 | _UpgradeReport_Files/ 160 | Backup*/ 161 | UpgradeLog*.XML 162 | UpgradeLog*.htm 163 | 164 | # SQL Server files 165 | App_Data/*.mdf 166 | App_Data/*.ldf 167 | 168 | ############# 169 | ## Windows detritus 170 | ############# 171 | 172 | # Windows image file caches 173 | Thumbs.db 174 | ehthumbs.db 175 | 176 | # Folder config file 177 | Desktop.ini 178 | 179 | # Recycle Bin used on file shares 180 | $RECYCLE.BIN/ 181 | 182 | # Mac crap 183 | .DS_Store 184 | 185 | 186 | ############# 187 | ## Python 188 | ############# 189 | 190 | *.py[co] 191 | 192 | # Packages 193 | *.egg 194 | *.egg-info 195 | dist/ 196 | build/ 197 | eggs/ 198 | parts/ 199 | var/ 200 | sdist/ 201 | develop-eggs/ 202 | .installed.cfg 203 | 204 | # Installer logs 205 | pip-log.txt 206 | 207 | # Unit test / coverage reports 208 | .coverage 209 | .tox 210 | 211 | #Translations 212 | *.mo 213 | 214 | #Mr Developer 215 | .mr.developer.cfg 216 | -------------------------------------------------------------------------------- /GeneralSQLParser_UserGuide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sushilshah/gsp-sqlparser/85aa89e5fba8544038859df83d7a1b1bbe8ef614/GeneralSQLParser_UserGuide.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | gsp-sqlparser 2 | ============= 3 | 4 | gsp-sqlparser 5 | 6 | 7 | downloaded from this site: 8 | http://www.sqlparser.com/ 9 | 10 | 11 | 12 | 13 | 1. In order to compile and run this Java demo, make sure JDK must be installed (JDK version >= 1.5) 14 | you can always download the latest version of JDK here: 15 | http://www.oracle.com/technetwork/java/javase/downloads/index.html 16 | 17 | after download this JDK, then install it. 18 | 19 | 2. download the latest version of General SQL Parser Java version here: 20 | http://www.sqlparser.com/download.php 21 | 22 | 3. unzip the downloaded general sql parser libary file to c:\tmp, 23 | you will find demos under c:\tmp\gsp_java_trial\dist\demos 24 | 25 | Or you can download more demos here: http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/ 26 | 27 | 28 | 4. set java environment before compile and run demos, replace java home directory with correct value 29 | 30 | ``` 31 | 4.1 open a dos command window, now you at 32 | c:\tmp\gsp_java_trial\dist> 33 | 4.2 set java_home="C:\Program Files\Java\jdk1.5.0_09"; 34 | 4.3 set path=%path%;%java_home%\bin; 35 | 4.4 set classpath=%classpath%;%java_home%\jre\lib\rt.jar;./gsp.jar 36 | ``` 37 | 38 | 5. we compile and run checksyntax demo under demos\checksyntax 39 | ``` 40 | 5.1 javac demos\checksyntax\checksyntax.java 41 | 5.2 create a simple sql file test.sql under c:\tmp\gsp_java_trial\dist with following sample sql: 42 | select count(*) from tab 43 | 5.2 java demos.checksyntax.checksyntax test.sql 44 | 5.3 after select a SQL dialect, you will see a message: Check syntax ok! 45 | ``` 46 | 47 | 6. you can compile other demos under c:\tmp\gsp_java_trial\dist\demos 48 | 49 | -------------------------------------------------------------------------------- /changes.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sushilshah/gsp-sqlparser/85aa89e5fba8544038859df83d7a1b1bbe8ef614/changes.txt -------------------------------------------------------------------------------- /compile_run_demo.txt: -------------------------------------------------------------------------------- 1 | 1. In order to compile and run this Java demo, make sure JDK must be installed (JDK version >= 1.5) 2 | you can always download the latest version of JDK here: 3 | http://www.oracle.com/technetwork/java/javase/downloads/index.html 4 | 5 | after download this JDK, then install it. 6 | 7 | 2. download the latest version of General SQL Parser Java version here: 8 | http://www.sqlparser.com/download.php 9 | 10 | 3. unzip the downloaded general sql parser libary file to c:\tmp, 11 | you will find demos under c:\tmp\gsp_java_trial\dist\demos 12 | 13 | Or you can download more demos here: http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/ 14 | 15 | 16 | 4. set java environment before compile and run demos, replace java home directory with correct value 17 | 4.1 open a dos command window, now you at c:\tmp\gsp_java_trial\dist> 18 | 4.2 set java_home="C:\Program Files\Java\jdk1.5.0_09"; 19 | 4.3 set path=%path%;%java_home%\bin; 20 | 4.4 set classpath=%classpath%;%java_home%\jre\lib\rt.jar;./gsp.jar 21 | 22 | 5. we compile and run checksyntax demo under demos\checksyntax 23 | 5.1 javac demos\checksyntax\checksyntax.java 24 | 5.2 create a simple sql file test.sql under c:\tmp\gsp_java_trial\dist with following sample sql: 25 | select count(*) from tab 26 | 5.2 java demos.checksyntax.checksyntax test.sql 27 | 5.3 after select a SQL dialect, you will see a message: Check syntax ok! 28 | 29 | 6. you can compile other demos under c:\tmp\gsp_java_trial\dist\demos -------------------------------------------------------------------------------- /demos/analyzescript/iterateStatement.java: -------------------------------------------------------------------------------- 1 | package demos.analyzescript; 2 | 3 | import gudusoft.gsqlparser.EDbVendor; 4 | import gudusoft.gsqlparser.TCustomSqlStatement; 5 | import gudusoft.gsqlparser.TGSqlParser; 6 | import gudusoft.gsqlparser.stmt.TSelectSqlStatement; 7 | 8 | import java.io.BufferedReader; 9 | import java.io.File; 10 | import java.io.IOException; 11 | import java.io.InputStreamReader; 12 | 13 | import demos.columnInClause; 14 | 15 | /* 16 | * ref: http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/visit-sql-statement-recursively/ 17 | */ 18 | 19 | public class iterateStatement { 20 | public static void main(String args[]) 21 | { 22 | 23 | if (args.length != 1){ 24 | System.out.println("Usage: java getstatement sqlfile.sql"); 25 | return; 26 | } 27 | File file=new File(args[0]); 28 | if (!file.exists()){ 29 | System.out.println("File not exists:"+args[0]); 30 | return; 31 | } 32 | 33 | //1: dbvmssql,2: dbvoracle, 3: dbvmysql, dbvaccess, dbvgeneric, 4: dbvdb2, 34 | // dbvsybase,dbvinformix, 5: dbvpostgresql,dbvfirebird,dbvmdx, 6: dbvteradata 35 | 36 | EDbVendor dbVendor = EDbVendor.dbvmssql; 37 | String msg = "Please select SQL dialect: 1: SQL Server, 2: Oralce, 3: MySQL, 4: DB2, 5: PostGRESQL, 6: Teradta, default is 1: SQL Server"; 38 | System.out.println(msg); 39 | 40 | BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 41 | try{ 42 | int db = Integer.parseInt(br.readLine()); 43 | if (db == 1){ 44 | dbVendor = EDbVendor.dbvmssql; 45 | }else if(db == 2){ 46 | dbVendor = EDbVendor.dbvoracle; 47 | }else if(db == 3){ 48 | dbVendor = EDbVendor.dbvmysql; 49 | }else if(db == 4){ 50 | dbVendor = EDbVendor.dbvdb2; 51 | }else if(db == 5){ 52 | dbVendor = EDbVendor.dbvpostgresql; 53 | }else if(db == 6){ 54 | dbVendor = EDbVendor.dbvteradata; 55 | } 56 | }catch(IOException i) { 57 | }catch (NumberFormatException numberFormatException){ 58 | } 59 | 60 | System.out.println("Selected SQL dialect: "+dbVendor.toString()); 61 | 62 | 63 | TGSqlParser sqlparser = new TGSqlParser(dbVendor); 64 | sqlparser.sqlfilename = args[0]; 65 | 66 | int ret = sqlparser.parse(); 67 | if (ret == 0){ 68 | for(int i=0;i 0){ 104 | for(int i=0;i 1 ? "/c".equalsIgnoreCase( args[1] ) : false ); 114 | } 115 | else 116 | { 117 | System.out.println( sqlparser.getErrormessage( ) ); 118 | } 119 | } 120 | 121 | public static void writeToFile( File file, InputStream source, boolean close ) 122 | { 123 | BufferedInputStream bis = null; 124 | BufferedOutputStream fouts = null; 125 | try 126 | { 127 | bis = new BufferedInputStream( source ); 128 | if ( !file.exists( ) ) 129 | { 130 | if ( !file.getParentFile( ).exists( ) ) 131 | { 132 | file.getParentFile( ).mkdirs( ); 133 | } 134 | file.createNewFile( ); 135 | } 136 | fouts = new BufferedOutputStream( new FileOutputStream( file ) ); 137 | byte b[] = new byte[1024]; 138 | int i = 0; 139 | while ( ( i = bis.read( b ) ) != -1 ) 140 | { 141 | fouts.write( b, 0, i ); 142 | } 143 | fouts.flush( ); 144 | fouts.close( ); 145 | if ( close ) 146 | bis.close( ); 147 | } 148 | catch ( IOException e ) 149 | { 150 | Logger.getLogger( formatsqlInHtml.class.getName( ) ) 151 | .log( Level.WARNING, "Write file failed.", //$NON-NLS-1$ 152 | e ); 153 | try 154 | { 155 | if ( fouts != null ) 156 | fouts.close( ); 157 | } 158 | catch ( IOException f ) 159 | { 160 | Logger.getLogger( formatsqlInHtml.class.getName( ) ) 161 | .log( Level.WARNING, "Close output stream failed.", f ); //$NON-NLS-1$ 162 | } 163 | if ( close ) 164 | { 165 | try 166 | { 167 | if ( bis != null ) 168 | bis.close( ); 169 | } 170 | catch ( IOException f ) 171 | { 172 | Logger.getLogger( formatsqlInHtml.class.getName( ) ) 173 | .log( Level.WARNING, "Close input stream failed.", //$NON-NLS-1$ 174 | f ); 175 | } 176 | } 177 | } 178 | } 179 | 180 | } 181 | -------------------------------------------------------------------------------- /demos/getsourcetoken/getsourcetoken.java: -------------------------------------------------------------------------------- 1 | package demos.getsourcetoken; 2 | 3 | 4 | import gudusoft.gsqlparser.*; 5 | 6 | import java.io.BufferedReader; 7 | import java.io.File; 8 | import java.io.IOException; 9 | import java.io.InputStreamReader; 10 | 11 | public class getsourcetoken { 12 | public static void main(String args[]) 13 | { 14 | long t = System.currentTimeMillis(); 15 | 16 | if (args.length != 1){ 17 | System.out.println("Usage: java getsourcetoken sqlfile.sql"); 18 | return; 19 | } 20 | File file=new File(args[0]); 21 | if (!file.exists()){ 22 | System.out.println("File not exists:"+args[0]); 23 | return; 24 | } 25 | 26 | EDbVendor dbVendor = EDbVendor.dbvoracle; 27 | String msg = "Please select SQL dialect: 1: SQL Server, 2: Oralce, 3: MySQL, 4: DB2, 5: PostGRESQL, 6: Teradta, default is 2: Oracle"; 28 | System.out.println(msg); 29 | 30 | BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 31 | try{ 32 | int db = Integer.parseInt(br.readLine()); 33 | if (db == 1){ 34 | dbVendor = EDbVendor.dbvmssql; 35 | }else if(db == 2){ 36 | dbVendor = EDbVendor.dbvoracle; 37 | }else if(db == 3){ 38 | dbVendor = EDbVendor.dbvmysql; 39 | }else if(db == 4){ 40 | dbVendor = EDbVendor.dbvdb2; 41 | }else if(db == 5){ 42 | dbVendor = EDbVendor.dbvpostgresql; 43 | }else if(db == 6){ 44 | dbVendor = EDbVendor.dbvteradata; 45 | } 46 | }catch(IOException i) { 47 | }catch (NumberFormatException numberFormatException){ 48 | } 49 | 50 | System.out.println("Selected SQL dialect: "+dbVendor.toString()); 51 | 52 | TGSqlParser sqlparser = new TGSqlParser(dbVendor); 53 | 54 | sqlparser.sqlfilename = args[0]; 55 | 56 | int ret = sqlparser.parse(); 57 | if (ret == 0){ 58 | // get source tokens of whole script 59 | 60 | for(int i=0;i0) { flds.append(","); } 44 | flds.append(sql1.getResultColumnList().getResultColumn(i).toString()); 45 | } 46 | 47 | //get table name 48 | StringBuffer tbls = new StringBuffer(); 49 | for(int i=0;i0) { tbls.append(","); } 51 | tbls.append(sql1.tables.getTable(i).toString()); 52 | } 53 | 54 | String wherestr = ""; 55 | if (sql1.getWhereClause() != null){ 56 | wherestr = sql1.getWhereClause().getCondition().toString(); 57 | } 58 | 59 | //get column, table and where clause from the second sql statement 60 | 61 | Boolean found; 62 | for(int i=0;iSteps to modify a table name: 11 | *

1. find the table name that need to be replaced. 12 | *

2. use setString method to set a new string representation of that table. 13 | * 14 | *

In this demo, input sql is: 15 | * 16 | *

select table1.col1, table2.col2 17 | *

from table1, table2 18 | *

where table1.foo > table2.foo 19 | * 20 | *

we want to replace table2 with "(tableX join tableY using (id)) as table3" 21 | *

and change table2.col2 to table3.col2, table2.foo to table3.foo accordingly. 22 | * 23 | */ 24 | public class replaceTablename{ 25 | public static void main(String args[]) 26 | { 27 | 28 | TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); 29 | 30 | sqlparser.sqltext = "select table1.col1, table2.col2\n" + 31 | "from table1, table2\n" + 32 | "where table1.foo > table2.foo"; 33 | 34 | System.out.println("input sql:"); 35 | System.out.println(sqlparser.sqltext); 36 | 37 | int ret = sqlparser.parse(); 38 | if (ret == 0){ 39 | 40 | TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); 41 | 42 | TTable t ; 43 | for(int i=0;i results = new ArrayList( ); 14 | 15 | private TSourceToken token; 16 | private EDbVendor targetVendor; 17 | private String originalText; 18 | private long originalColumnNo; 19 | private long originalLineNo; 20 | private String translateResult; 21 | 22 | public String getTranslateResult( ) 23 | { 24 | return translateResult; 25 | } 26 | 27 | public void setTranslateResult( String translateResult ) 28 | { 29 | this.translateResult = translateResult; 30 | } 31 | 32 | public IdentifierCheckResult( TSourceToken token, EDbVendor targetVendor ) 33 | { 34 | this.token = token; 35 | this.targetVendor = targetVendor; 36 | this.originalText = token.toString( ); 37 | this.originalColumnNo = token.columnNo; 38 | this.originalLineNo = token.lineNo; 39 | } 40 | 41 | public void addCheckRuleResult( IdentifierRuleResult result ) 42 | { 43 | if ( result != null ) 44 | results.add( result ); 45 | } 46 | 47 | public boolean canTranslate( ) 48 | { 49 | if ( results.size( ) == 0 ) 50 | return false; 51 | for ( int i = 0; i < results.size( ); i++ ) 52 | { 53 | if ( !results.get( i ).canTranslate( ) ) 54 | return false; 55 | } 56 | return true; 57 | } 58 | 59 | public IdentifierRuleResult[] getCheckRuleResults( ) 60 | { 61 | return results.toArray( new IdentifierRuleResult[0] ); 62 | } 63 | 64 | public long getOriginalColumnNo( ) 65 | { 66 | return originalColumnNo; 67 | } 68 | 69 | public long getOriginalLineNo( ) 70 | { 71 | return originalLineNo; 72 | } 73 | 74 | public String getOriginalText( ) 75 | { 76 | return originalText; 77 | } 78 | 79 | public EDbVendor getTargetVendor( ) 80 | { 81 | return targetVendor; 82 | } 83 | 84 | public TSourceToken getToken( ) 85 | { 86 | return token; 87 | } 88 | 89 | public String getTranslationInfo( ) 90 | { 91 | StringBuffer buffer = new StringBuffer( ); 92 | if ( results.size( ) == 1 ) 93 | { 94 | buffer.append( results.get( 0 ).getRuleMessage( ) ); 95 | } 96 | else if ( results.size( ) > 1 ) 97 | { 98 | buffer.append( "\r\n" ); 99 | for ( int i = 0; i < results.size( ); i++ ) 100 | { 101 | buffer.append( ( i + 1 ) 102 | + "." 103 | + results.get( i ).getRuleMessage( ) ); 104 | if ( i < results.size( ) - 1 ) 105 | buffer.append( "\r\n" ); 106 | } 107 | } 108 | return buffer.toString( ); 109 | } 110 | 111 | public boolean needTranslate( ) 112 | { 113 | if ( results.size( ) == 0 ) 114 | return false; 115 | return true; 116 | } 117 | 118 | public void removeCheckRuleResult( IdentifierRuleResult result ) 119 | { 120 | if ( result != null ) 121 | results.remove( result ); 122 | } 123 | 124 | public void translate( ) 125 | { 126 | if ( translateResult != null ) 127 | { 128 | token.setString( translateResult ); 129 | } 130 | else 131 | { 132 | token.setString( originalText + " /*need to be translated by handy*/" ); 133 | } 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /demos/sqltranslator/IdentifierRule.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.sqltranslator; 3 | 4 | import gudusoft.gsqlparser.EDbVendor; 5 | 6 | public enum IdentifierRule { 7 | Size, SubsequentCharacters, BeginWith, QuotedIdentifier, Keyword, Function, Speical; 8 | 9 | public String getRuleMessage( EDbVendor targetVendor ) 10 | { 11 | switch ( this ) 12 | { 13 | case Size : 14 | return getSizeMessage( targetVendor ); 15 | case SubsequentCharacters : 16 | return getSubsequentCharactersMessage( targetVendor ); 17 | case BeginWith : 18 | return getBeginWithMessage( targetVendor ); 19 | case QuotedIdentifier : 20 | return getQuotedIdentifierMessage( targetVendor ); 21 | case Keyword : 22 | return getKeywordMessage( targetVendor ); 23 | } 24 | return null; 25 | } 26 | 27 | public String getRuleMessage( String identifier, EDbVendor targetVendor ) 28 | { 29 | switch ( this ) 30 | { 31 | case Function : 32 | return getFunctionMessage( identifier, targetVendor ); 33 | } 34 | return null; 35 | } 36 | 37 | private String getKeywordMessage( EDbVendor targetVendor ) 38 | { 39 | return "Keyword can’t be used as nonquoted identifier."; 40 | } 41 | 42 | private String getFunctionMessage( String identifier, EDbVendor targetVendor ) 43 | { 44 | return "Identifier " + identifier + " is a special function."; 45 | } 46 | 47 | private String getQuotedIdentifierMessage( EDbVendor targetVendor ) 48 | { 49 | switch ( targetVendor ) 50 | { 51 | case dbvoracle : 52 | return "The Oracle quoted identifier can only begins and ends with double quotation marks (\")."; 53 | case dbvmssql : 54 | return "The SQL Server quoted identifier can only begins and ends with bracket marks ([]) or double quotation marks (\")."; 55 | case dbvmysql : 56 | return "The MySQL quoted identifier can only begins and ends with backtick marks (`) or double quotation marks (\")."; 57 | case dbvpostgresql : 58 | return "The PostgreSQL quoted identifier can only begins and ends with double quotation marks (\")."; 59 | case dbvansi : 60 | return "The ANSI SQL quoted identifier can only begins and ends with double quotation marks (\")."; 61 | 62 | } 63 | return null; 64 | } 65 | 66 | private String getBeginWithMessage( EDbVendor targetVendor ) 67 | { 68 | switch ( targetVendor ) 69 | { 70 | case dbvoracle : 71 | return "The Oracle nonquoted identifier can only begin with a letter."; 72 | case dbvmssql : 73 | return "The SQL Server nonquoted identifier can only begin with a letter, or underscore (_), at sign (@), pound sign (#) symbol."; 74 | case dbvmysql : 75 | return "The MySQL nonquoted identifier can only begin with a letter or number, cannot be composed entirely of numbers."; 76 | case dbvpostgresql : 77 | return "The PostgreSQL nonquoted identifier can only begin with a letter or underscore (_) symbol."; 78 | case dbvansi : 79 | return "The ANSI SQL nonquoted identifier can only begin with a letter."; 80 | 81 | } 82 | return null; 83 | } 84 | 85 | private String getSubsequentCharactersMessage( EDbVendor targetVendor ) 86 | { 87 | switch ( targetVendor ) 88 | { 89 | case dbvoracle : 90 | return "The Oracle nonquoted identifier can contain only number or character, and the underscore (_), pound sign (#), dollar sign ($) symbols."; 91 | case dbvmssql : 92 | return "The SQL Server nonquoted identifier can contain only number or character, and the underscore (_), at sign (@), pound sign (#), dollar sign ($) symbols."; 93 | case dbvmysql : 94 | return "The MySQL nonquoted identifier can contain only number or character, and the underscore (_), dollar sign ($) symbols."; 95 | case dbvpostgresql : 96 | return "The PostgreSQL nonquoted identifier can contain only number or character, and the underscore (_) symbol."; 97 | case dbvansi : 98 | return "The ANSI SQL nonquoted identifier can contain only number or character, and the underscore (_) symbol."; 99 | 100 | } 101 | return null; 102 | } 103 | 104 | private String getSizeMessage( EDbVendor targetVendor ) 105 | { 106 | switch ( targetVendor ) 107 | { 108 | case dbvoracle : 109 | return "The Oracle identifier's size limits to 30 bytes (number of characters depends on the character set)."; 110 | case dbvmssql : 111 | return "The SQL Server identifier's size limits to 128 characters."; 112 | case dbvmysql : 113 | return "The MySQL identifier's size limits to 64 characters (aliases may be 255 characters)."; 114 | case dbvpostgresql : 115 | return "The PostgreSQL identifier's size limits to 63 characters."; 116 | case dbvansi : 117 | return "The ANSI SQL identifier's size limits to 128 characters."; 118 | 119 | } 120 | return null; 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /demos/sqltranslator/IdentifierRuleResult.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.sqltranslator; 3 | 4 | import gudusoft.gsqlparser.EDbVendor; 5 | import gudusoft.gsqlparser.TSourceToken; 6 | 7 | public class IdentifierRuleResult 8 | { 9 | 10 | private TSourceToken token; 11 | private EDbVendor targetVendor; 12 | private boolean canTranslate; 13 | private IdentifierRule rule; 14 | private String originText; 15 | private String ruleMessage; 16 | 17 | public void setRuleMessage( String ruleMessage ) 18 | { 19 | this.ruleMessage = ruleMessage; 20 | } 21 | 22 | public IdentifierRule getRule( ) 23 | { 24 | return rule; 25 | } 26 | 27 | public void setRule( IdentifierRule rule ) 28 | { 29 | this.rule = rule; 30 | } 31 | 32 | public IdentifierRuleResult( TSourceToken token, EDbVendor targetVendor ) 33 | { 34 | this.token = token; 35 | this.originText = token.toString( ); 36 | this.targetVendor = targetVendor; 37 | } 38 | 39 | public boolean canTranslate( ) 40 | { 41 | return canTranslate; 42 | } 43 | 44 | public void setCanTranslate( boolean canTranslate ) 45 | { 46 | this.canTranslate = canTranslate; 47 | } 48 | 49 | public TSourceToken getToken( ) 50 | { 51 | return token; 52 | } 53 | 54 | public EDbVendor getTargetVendor( ) 55 | { 56 | return targetVendor; 57 | } 58 | 59 | public String getRuleMessage( ) 60 | { 61 | if ( ruleMessage != null ) 62 | return ruleMessage; 63 | if ( rule == null ) 64 | return null; 65 | if ( rule == IdentifierRule.Function ) 66 | return rule.getRuleMessage( originText, targetVendor ); 67 | return rule.getRuleMessage( targetVendor ); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /demos/sqltranslator/KeywordCheckResult.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.sqltranslator; 3 | 4 | import gudusoft.gsqlparser.EDbVendor; 5 | import gudusoft.gsqlparser.TSourceToken; 6 | import gudusoft.gsqlparser.nodes.TParseTreeNode; 7 | 8 | public class KeywordCheckResult 9 | { 10 | 11 | private TSourceToken token; 12 | private EDbVendor targetVendor; 13 | private boolean canTranslate; 14 | private String originalText; 15 | private String originalNodeText; 16 | private long originalColumnNo; 17 | private long originalLineNo; 18 | private String translateResult; 19 | private String translationInfo; 20 | 21 | public void setTranslationInfo( String translationInfo ) 22 | { 23 | this.translationInfo = translationInfo; 24 | } 25 | 26 | public String getTranslateResult( ) 27 | { 28 | return translateResult; 29 | } 30 | 31 | public void setTranslateResult( String translateResult ) 32 | { 33 | this.translateResult = translateResult; 34 | } 35 | 36 | public KeywordCheckResult( TSourceToken token, EDbVendor targetVendor ) 37 | { 38 | this.token = token; 39 | originalText = token.toString( ); 40 | originalColumnNo = token.columnNo; 41 | originalLineNo = token.lineNo; 42 | this.targetVendor = targetVendor; 43 | } 44 | 45 | public boolean canTranslate( ) 46 | { 47 | return canTranslate; 48 | } 49 | 50 | public long getOriginalColumnNo( ) 51 | { 52 | return originalColumnNo; 53 | } 54 | 55 | public long getOriginalLineNo( ) 56 | { 57 | return originalLineNo; 58 | } 59 | 60 | public String getOriginalText( ) 61 | { 62 | return originalText; 63 | } 64 | 65 | public EDbVendor getTargetVendor( ) 66 | { 67 | return targetVendor; 68 | } 69 | 70 | public TSourceToken getToken( ) 71 | { 72 | return token; 73 | } 74 | 75 | public void setCanTranslate( boolean canTranslate ) 76 | { 77 | this.canTranslate = canTranslate; 78 | } 79 | 80 | public void translate( ) 81 | { 82 | if ( translateResult != null ) 83 | { 84 | if ( node != null ) 85 | { 86 | node.setString( translateResult ); 87 | } 88 | else 89 | token.setString( translateResult ); 90 | } 91 | else 92 | { 93 | 94 | if ( node != null ) 95 | { 96 | node.setString( originalNodeText 97 | + " /*need to be translated by handy*/" ); 98 | } 99 | else 100 | token.setString( originalText 101 | + " /*need to be translated by handy*/" ); 102 | } 103 | } 104 | 105 | public String getOriginalTreeNodeText( ) 106 | { 107 | return originalNodeText; 108 | } 109 | 110 | public TParseTreeNode getTreeNode( ) 111 | { 112 | return node; 113 | } 114 | 115 | public String getTranslationInfo( ) 116 | { 117 | if ( translationInfo != null ) 118 | return translationInfo; 119 | return getDatabaseName( token.getDbvendor( ) ) 120 | + "'s keyword " 121 | + ( node != null ? originalNodeText : originalText ) 122 | + " is not supported by " 123 | + getDatabaseName( targetVendor ); 124 | } 125 | 126 | public static String getDatabaseName( EDbVendor dbVendor ) 127 | { 128 | switch ( dbVendor ) 129 | { 130 | case dbvmssql : 131 | return "SQL Server"; 132 | case dbvmysql : 133 | return "MySQL"; 134 | case dbvoracle : 135 | return "Oracle"; 136 | } 137 | return dbVendor.name( ); 138 | } 139 | 140 | private TParseTreeNode node; 141 | 142 | public void setTreeNode( TParseTreeNode node ) 143 | { 144 | this.node = node; 145 | this.originalNodeText = node.toString( ); 146 | } 147 | } 148 | -------------------------------------------------------------------------------- /demos/sqltranslator/KeywordChecker.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.sqltranslator; 3 | 4 | import gudusoft.gsqlparser.EDbVendor; 5 | import gudusoft.gsqlparser.TSourceToken; 6 | import gudusoft.gsqlparser.nodes.TParseTreeNode; 7 | 8 | public class KeywordChecker 9 | { 10 | 11 | public static KeywordCheckResult checkKeyword( TSourceToken token, 12 | EDbVendor targetVendor ) 13 | { 14 | if ( token.getDbvendor( ) == EDbVendor.dbvoracle ) 15 | { 16 | return OracleKeywordChecker.checkKeyword( token, targetVendor ); 17 | } 18 | else if ( token.getDbvendor( ) == EDbVendor.dbvmssql ) 19 | { 20 | return MssqlKeywordChecker.checkKeyword( token, targetVendor ); 21 | } 22 | else if ( token.getDbvendor( ) == EDbVendor.dbvmysql ) 23 | { 24 | 25 | } 26 | 27 | return null; 28 | } 29 | 30 | protected static KeywordCheckResult createKeywordResult( 31 | TSourceToken token, EDbVendor targetVendor, 32 | String translateMessage, boolean canTranslate ) 33 | { 34 | KeywordCheckResult result = new KeywordCheckResult( token, targetVendor ); 35 | result.setCanTranslate( canTranslate ); 36 | result.setTranslationInfo( translateMessage ); 37 | return result; 38 | } 39 | 40 | protected static KeywordCheckResult createKeywordResult( 41 | TSourceToken token, EDbVendor targetVendor, boolean canTranslate, 42 | String translate ) 43 | { 44 | KeywordCheckResult result = new KeywordCheckResult( token, targetVendor ); 45 | result.setCanTranslate( canTranslate ); 46 | result.setTranslateResult( translate ); 47 | return result; 48 | } 49 | 50 | protected static KeywordCheckResult createKeywordResult( 51 | TSourceToken token, EDbVendor targetVendor, boolean canTranslate, 52 | String translate, TParseTreeNode node, String translateMessage ) 53 | { 54 | KeywordCheckResult result = new KeywordCheckResult( token, targetVendor ); 55 | result.setCanTranslate( canTranslate ); 56 | result.setTranslateResult( translate ); 57 | result.setTranslationInfo( translateMessage ); 58 | result.setTreeNode( node ); 59 | return result; 60 | } 61 | 62 | protected static KeywordCheckResult createKeywordResult( 63 | TSourceToken token, EDbVendor targetVendor, boolean canTranslate, 64 | String translate, String translateMessage ) 65 | { 66 | KeywordCheckResult result = new KeywordCheckResult( token, targetVendor ); 67 | result.setCanTranslate( canTranslate ); 68 | result.setTranslateResult( translate ); 69 | result.setTranslationInfo( translateMessage ); 70 | return result; 71 | } 72 | 73 | protected static KeywordCheckResult createKeywordResult( 74 | TSourceToken token, EDbVendor targetVendor, boolean canTranslate ) 75 | { 76 | KeywordCheckResult result = new KeywordCheckResult( token, targetVendor ); 77 | result.setCanTranslate( canTranslate ); 78 | return result; 79 | } 80 | 81 | } 82 | -------------------------------------------------------------------------------- /demos/sqltranslator/MssqlFunctionChecker.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.sqltranslator; 3 | 4 | import gudusoft.gsqlparser.EDbVendor; 5 | import gudusoft.gsqlparser.nodes.TFunctionCall; 6 | 7 | public class MssqlFunctionChecker extends FunctionChecker 8 | { 9 | 10 | public static FunctionCheckResult checkFunction( TFunctionCall function, 11 | EDbVendor targetVendor ) 12 | { 13 | return null; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /demos/sqltranslator/exception/FunctionIdentifierException.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.sqltranslator.exception; 3 | 4 | public class FunctionIdentifierException extends Exception 5 | { 6 | 7 | private static final long serialVersionUID = -7454214725358065966L; 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /demos/sqltranslator/exception/SpecialIdentifierException.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.sqltranslator.exception; 3 | 4 | public class SpecialIdentifierException extends Exception 5 | { 6 | 7 | private static final long serialVersionUID = -3914857710751203476L; 8 | 9 | public SpecialIdentifierException( String message ) 10 | { 11 | super( message ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /demos/sqltranslator/test/SqlTranslatorTest.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.sqltranslator.test; 3 | 4 | import gudusoft.gsqlparser.EDbVendor; 5 | import junit.framework.TestCase; 6 | import demos.sqltranslator.IdentifierCheckResult; 7 | import demos.sqltranslator.IdentifierRule; 8 | import demos.sqltranslator.IdentifierRuleResult; 9 | import demos.sqltranslator.SqlTranslator; 10 | 11 | public class SqlTranslatorTest extends TestCase 12 | { 13 | 14 | public void testIdentifierSizeRule( ) 15 | { 16 | String sql = "select a_very_very_long_and_not_valid_name from abc"; 17 | SqlTranslator translator = new SqlTranslator( sql, 18 | EDbVendor.dbvmssql, 19 | EDbVendor.dbvoracle, 20 | false ); 21 | assertTrue( translator.getIdentifierCheckResults( ).length == 1 ); 22 | IdentifierCheckResult checkResult = translator.getIdentifierCheckResults( )[0]; 23 | assertTrue( checkResult.getCheckRuleResults( ).length == 1 ); 24 | IdentifierRuleResult result = checkResult.getCheckRuleResults( )[0]; 25 | assertTrue( result.getRule( ) == IdentifierRule.Size ); 26 | assertTrue( !result.canTranslate( ) ); 27 | } 28 | 29 | public void testIdentifierBeginWithRule( ) 30 | { 31 | String sql = "create table #testa(f8 float)"; 32 | SqlTranslator translator = new SqlTranslator( sql, 33 | EDbVendor.dbvmssql, 34 | EDbVendor.dbvoracle, 35 | false ); 36 | assertTrue( translator.getIdentifierCheckResults( ).length == 1 ); 37 | IdentifierCheckResult checkResult = translator.getIdentifierCheckResults( )[0]; 38 | assertTrue( checkResult.getCheckRuleResults( ).length == 2 ); 39 | IdentifierRuleResult result = checkResult.getCheckRuleResults( )[0]; 40 | assertTrue( result.getRule( ) == IdentifierRule.BeginWith ); 41 | assertTrue( !result.canTranslate( ) ); 42 | } 43 | 44 | public void testIdentifierSubsequentCharactersRule( ) 45 | { 46 | String sql = "create table #testa(f8 float)"; 47 | SqlTranslator translator = new SqlTranslator( sql, 48 | EDbVendor.dbvmssql, 49 | EDbVendor.dbvoracle, 50 | false ); 51 | assertTrue( translator.getIdentifierCheckResults( ).length == 1 ); 52 | IdentifierCheckResult checkResult = translator.getIdentifierCheckResults( )[0]; 53 | assertTrue( checkResult.getCheckRuleResults( ).length == 2 ); 54 | IdentifierRuleResult result = checkResult.getCheckRuleResults( )[1]; 55 | assertTrue( result.getRule( ) == IdentifierRule.SubsequentCharacters ); 56 | assertTrue( !result.canTranslate( ) ); 57 | } 58 | 59 | public void testIdentifierKeywordRule( ) 60 | { 61 | String sql = "create table WHENEVER(f8 float)"; 62 | SqlTranslator translator = new SqlTranslator( sql, 63 | EDbVendor.dbvmssql, 64 | EDbVendor.dbvoracle, 65 | false ); 66 | assertTrue( translator.getIdentifierCheckResults( ).length == 1 ); 67 | IdentifierCheckResult checkResult = translator.getIdentifierCheckResults( )[0]; 68 | assertTrue( checkResult.getCheckRuleResults( ).length == 1 ); 69 | IdentifierRuleResult result = checkResult.getCheckRuleResults( )[0]; 70 | assertTrue( result.getRule( ) == IdentifierRule.Keyword ); 71 | assertTrue( result.canTranslate( ) ); 72 | checkResult.translate( ); 73 | assertTrue( result.getToken( ).toString( ).equalsIgnoreCase( "\"WHENEVER\"" ) ); 74 | } 75 | 76 | public void testQuotedIdentifierRule( ) 77 | { 78 | String sql = "create table [WHENEVER](f8 float)"; 79 | SqlTranslator translator = new SqlTranslator( sql, 80 | EDbVendor.dbvmssql, 81 | EDbVendor.dbvoracle, 82 | false ); 83 | assertTrue( translator.getIdentifierCheckResults( ).length == 1 ); 84 | IdentifierCheckResult checkResult = translator.getIdentifierCheckResults( )[0]; 85 | assertTrue( checkResult.getCheckRuleResults( ).length == 1 ); 86 | IdentifierRuleResult result = checkResult.getCheckRuleResults( )[0]; 87 | assertTrue( result.getRule( ) == IdentifierRule.QuotedIdentifier ); 88 | assertTrue( result.canTranslate( ) ); 89 | checkResult.translate( ); 90 | assertTrue( result.getToken( ).toString( ).equalsIgnoreCase( "\"WHENEVER\"" ) ); 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /demos/tracedatalineage/Column.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | public class Column 5 | { 6 | 7 | private Table container; 8 | 9 | private String fullName; 10 | 11 | private String name; 12 | 13 | private Table referTable; 14 | 15 | private String type; 16 | 17 | public Table getContainer( ) 18 | { 19 | return container; 20 | } 21 | 22 | public String getFullName( ) 23 | { 24 | return fullName; 25 | } 26 | 27 | public String getName( ) 28 | { 29 | return name; 30 | } 31 | 32 | public Table getReferTable( ) 33 | { 34 | return referTable; 35 | } 36 | 37 | public String getType( ) 38 | { 39 | return type; 40 | } 41 | 42 | public void setContainer( Table container ) 43 | { 44 | this.container = container; 45 | } 46 | 47 | public void setFullName( String fullName ) 48 | { 49 | this.fullName = fullName; 50 | } 51 | 52 | public void setName( String name ) 53 | { 54 | this.name = name; 55 | } 56 | 57 | public void setReferTable( Table referTable ) 58 | { 59 | this.referTable = referTable; 60 | } 61 | 62 | public void setType( String type ) 63 | { 64 | this.type = type; 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /demos/tracedatalineage/ColumnsInExpr.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | import gudusoft.gsqlparser.EExpressionType; 5 | import gudusoft.gsqlparser.TCustomSqlStatement; 6 | import gudusoft.gsqlparser.nodes.IExpressionVisitor; 7 | import gudusoft.gsqlparser.nodes.TCaseExpression; 8 | import gudusoft.gsqlparser.nodes.TExpression; 9 | import gudusoft.gsqlparser.nodes.TFunctionCall; 10 | import gudusoft.gsqlparser.nodes.TGroupByItem; 11 | import gudusoft.gsqlparser.nodes.TParseTreeNode; 12 | import gudusoft.gsqlparser.nodes.TParseTreeNodeList; 13 | import gudusoft.gsqlparser.nodes.TWhenClauseItem; 14 | import gudusoft.gsqlparser.nodes.TWhenClauseItemList; 15 | 16 | import java.util.ArrayList; 17 | import java.util.List; 18 | import java.util.Map; 19 | 20 | public class ColumnsInExpr implements IExpressionVisitor 21 | { 22 | 23 | private TExpression expr; 24 | private List columns; 25 | private TCustomSqlStatement stmt; 26 | private traceDataLineage traceDataLineage; 27 | 28 | public ColumnsInExpr( traceDataLineage traceDataLineage, TExpression expr, 29 | List columns, TCustomSqlStatement stmt ) 30 | { 31 | this.stmt = stmt; 32 | this.expr = expr; 33 | this.columns = columns; 34 | this.traceDataLineage = traceDataLineage; 35 | } 36 | 37 | public boolean exprVisit( TParseTreeNode pNode, boolean isLeafNode ) 38 | { 39 | TExpression lcexpr = (TExpression) pNode; 40 | if ( lcexpr.getExpressionType( ) == EExpressionType.simple_object_name_t ) 41 | { 42 | Table table = traceDataLineage.getTable( lcexpr.toString( ), stmt ); 43 | String columnName = traceDataLineage.getColumnName( lcexpr.toString( ) ); 44 | if ( table != null && columnName != null ) 45 | { 46 | Map columnMap = table.getColumns( ); 47 | if ( columnMap != null ) 48 | { 49 | Column temp = columnMap.get( columnName ); 50 | if ( temp != null ) 51 | { 52 | columns.add( temp ); 53 | } 54 | } 55 | } 56 | 57 | } 58 | else if ( lcexpr.getExpressionType( ) == EExpressionType.function_t ) 59 | { 60 | TFunctionCall func = (TFunctionCall) lcexpr.getFunctionCall( ); 61 | if ( func.getArgs( ) != null ) 62 | { 63 | for ( int k = 0; k < func.getArgs( ).size( ); k++ ) 64 | { 65 | TExpression expr = func.getArgs( ).getExpression( k ); 66 | expr.inOrderTraverse( this ); 67 | } 68 | } 69 | if ( func.getAnalyticFunction( ) != null ) 70 | { 71 | TParseTreeNodeList list = func.getAnalyticFunction( ) 72 | .getPartitionBy_ExprList( ); 73 | addColumnToList( list, stmt ); 74 | 75 | if ( func.getAnalyticFunction( ).getOrderBy( ) != null ) 76 | { 77 | list = func.getAnalyticFunction( ).getOrderBy( ).getItems( ); 78 | addColumnToList( list, stmt ); 79 | } 80 | } 81 | 82 | } 83 | else if ( lcexpr.getExpressionType( ) == EExpressionType.case_t ) 84 | { 85 | TCaseExpression expr = lcexpr.getCaseExpression( ); 86 | TExpression conditionExpr = expr.getInput_expr( ); 87 | if ( conditionExpr != null ) 88 | { 89 | conditionExpr.inOrderTraverse( this ); 90 | } 91 | TExpression defaultExpr = expr.getElse_expr( ); 92 | if ( defaultExpr != null ) 93 | { 94 | defaultExpr.inOrderTraverse( this ); 95 | } 96 | TWhenClauseItemList list = expr.getWhenClauseItemList( ); 97 | addColumnToList( list, stmt ); 98 | } 99 | return true; 100 | } 101 | 102 | private void addColumnToList( TParseTreeNodeList list, 103 | TCustomSqlStatement stmt ) 104 | { 105 | if ( list != null ) 106 | { 107 | for ( int i = 0; i < list.size( ); i++ ) 108 | { 109 | List exprList = new ArrayList( ); 110 | 111 | Object element = list.getElement( i ); 112 | 113 | if ( element instanceof TGroupByItem ) 114 | { 115 | exprList.add( ( (TGroupByItem) element ).getExpr( ) ); 116 | } 117 | else if ( element instanceof TExpression ) 118 | { 119 | exprList.add( (TExpression) element ); 120 | } 121 | else if ( element instanceof TWhenClauseItem ) 122 | { 123 | exprList.add( ( (TWhenClauseItem) element ).getComparison_expr( ) ); 124 | exprList.add( ( (TWhenClauseItem) element ).getReturn_expr( ) ); 125 | } 126 | 127 | for ( TExpression expr : exprList ) 128 | { 129 | expr.inOrderTraverse( this ); 130 | } 131 | } 132 | } 133 | } 134 | 135 | public void searchColumn( ) 136 | { 137 | this.expr.inOrderTraverse( this ); 138 | } 139 | 140 | } 141 | -------------------------------------------------------------------------------- /demos/tracedatalineage/Cursor.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | import java.util.LinkedHashMap; 5 | 6 | public class Cursor 7 | { 8 | 9 | private LinkedHashMap columns; 10 | 11 | private String name; 12 | 13 | private LinkedHashMap params; 14 | 15 | private Procedure procedure; 16 | 17 | public LinkedHashMap getColumns( ) 18 | { 19 | return columns; 20 | } 21 | 22 | public String getName( ) 23 | { 24 | return name; 25 | } 26 | 27 | public LinkedHashMap getParams( ) 28 | { 29 | return params; 30 | } 31 | 32 | public Procedure getProcedure( ) 33 | { 34 | return procedure; 35 | } 36 | 37 | public void setColumns( LinkedHashMap columns ) 38 | { 39 | this.columns = columns; 40 | } 41 | 42 | public void setName( String name ) 43 | { 44 | this.name = name; 45 | } 46 | 47 | public void setParams( LinkedHashMap params ) 48 | { 49 | this.params = params; 50 | } 51 | 52 | public void setProcedure( Procedure procedure ) 53 | { 54 | this.procedure = procedure; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /demos/tracedatalineage/Execute.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | import java.util.LinkedHashMap; 5 | 6 | public class Execute 7 | { 8 | 9 | private Procedure container; 10 | private Procedure target; 11 | private LinkedHashMap variables; 12 | 13 | public Procedure getContainer( ) 14 | { 15 | return container; 16 | } 17 | 18 | public Procedure getTarget( ) 19 | { 20 | return target; 21 | } 22 | 23 | public LinkedHashMap getVariables( ) 24 | { 25 | return variables; 26 | } 27 | 28 | public void setContainer( Procedure container ) 29 | { 30 | this.container = container; 31 | } 32 | 33 | public void setTarget( Procedure target ) 34 | { 35 | this.target = target; 36 | } 37 | 38 | public void setVariables( LinkedHashMap variables ) 39 | { 40 | this.variables = variables; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /demos/tracedatalineage/Parameter.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | public class Parameter extends Variable 5 | { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /demos/tracedatalineage/Procedure.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | import java.util.LinkedHashMap; 5 | import java.util.List; 6 | 7 | public class Procedure 8 | { 9 | 10 | private LinkedHashMap cursors; 11 | 12 | private LinkedHashMap executes; 13 | 14 | private String fullName; 15 | 16 | private String name; 17 | 18 | private LinkedHashMap params; 19 | 20 | private List tableRelations; 21 | 22 | private LinkedHashMap variables; 23 | 24 | public LinkedHashMap getCursors( ) 25 | { 26 | return cursors; 27 | } 28 | 29 | public LinkedHashMap getExecutes( ) 30 | { 31 | return executes; 32 | } 33 | 34 | public String getFullName( ) 35 | { 36 | return fullName; 37 | } 38 | 39 | public String getName( ) 40 | { 41 | return name; 42 | } 43 | 44 | public LinkedHashMap getParams( ) 45 | { 46 | return params; 47 | } 48 | 49 | public List getTableRelations( ) 50 | { 51 | return tableRelations; 52 | } 53 | 54 | public LinkedHashMap getVariables( ) 55 | { 56 | return variables; 57 | } 58 | 59 | public void setCursors( LinkedHashMap cursors ) 60 | { 61 | this.cursors = cursors; 62 | } 63 | 64 | public void setExecutes( LinkedHashMap executes ) 65 | { 66 | this.executes = executes; 67 | } 68 | 69 | public void setFullName( String fullName ) 70 | { 71 | this.fullName = fullName; 72 | } 73 | 74 | public void setName( String name ) 75 | { 76 | this.name = name; 77 | } 78 | 79 | public void setParams( LinkedHashMap params ) 80 | { 81 | this.params = params; 82 | } 83 | 84 | public void setTableRelations( List tableRelations ) 85 | { 86 | this.tableRelations = tableRelations; 87 | } 88 | 89 | public void setVariables( LinkedHashMap variables ) 90 | { 91 | this.variables = variables; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /demos/tracedatalineage/SqlFileList.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | import java.io.File; 5 | import java.io.FileFilter; 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | public class SqlFileList 10 | { 11 | 12 | public final List sqlfiles = new ArrayList( ); 13 | private String subfix = ".sql"; 14 | 15 | public SqlFileList( String dir ) 16 | { 17 | this( dir, false ); 18 | } 19 | 20 | public SqlFileList( String dir, boolean includeSubDir ) 21 | { 22 | File parent = new File( dir ); 23 | if ( parent.exists( ) && parent.isDirectory( ) ) 24 | traverseSqlFiles( parent, includeSubDir ); 25 | } 26 | 27 | public SqlFileList( String dir, String subfix ) 28 | { 29 | this( dir, subfix, false ); 30 | } 31 | 32 | public SqlFileList( String dir, String subfix, boolean includeSubDir ) 33 | { 34 | this.subfix = subfix; 35 | File parent = new File( dir ); 36 | if ( parent.exists( ) && parent.isDirectory( ) ) 37 | traverseSqlFiles( parent, includeSubDir ); 38 | } 39 | 40 | private void traverseSqlFiles( File parent, boolean includeSubDir ) 41 | { 42 | File[] files = parent.listFiles( new FileFilter( ) { 43 | 44 | public boolean accept( File file ) 45 | { 46 | if ( file.getName( ).toLowerCase( ).endsWith( subfix ) ) 47 | { 48 | sqlfiles.add( file.getAbsolutePath( ) ); 49 | } 50 | 51 | if ( file.isDirectory( ) ) 52 | return true; 53 | 54 | return false; 55 | } 56 | } ); 57 | 58 | if ( includeSubDir ) 59 | { 60 | if ( files != null && files.length > 0 ) 61 | { 62 | for ( File file : files ) 63 | { 64 | traverseSqlFiles( file, includeSubDir ); 65 | } 66 | } 67 | } 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /demos/tracedatalineage/Statement.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | import java.util.List; 5 | 6 | public class Statement 7 | { 8 | private List tableRelations; 9 | 10 | public List getTableRelations( ) 11 | { 12 | return tableRelations; 13 | } 14 | 15 | public void setTableRelations( List tableRelations ) 16 | { 17 | this.tableRelations = tableRelations; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /demos/tracedatalineage/Table.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | import java.util.LinkedHashMap; 5 | 6 | public class Table 7 | { 8 | 9 | private LinkedHashMap columns; 10 | 11 | private String database; 12 | 13 | private String fullName; 14 | 15 | private String name; 16 | 17 | public LinkedHashMap getColumns( ) 18 | { 19 | return columns; 20 | } 21 | 22 | public String getDatabase( ) 23 | { 24 | return database; 25 | } 26 | 27 | public String getFullName( ) 28 | { 29 | return fullName; 30 | } 31 | 32 | public String getName( ) 33 | { 34 | return name; 35 | } 36 | 37 | public void setColumns( LinkedHashMap columns ) 38 | { 39 | this.columns = columns; 40 | } 41 | 42 | public void setDatabase( String database ) 43 | { 44 | this.database = database; 45 | } 46 | 47 | public void setFullName( String fullName ) 48 | { 49 | this.fullName = fullName; 50 | } 51 | 52 | public void setName( String name ) 53 | { 54 | this.name = name; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /demos/tracedatalineage/TableRelation.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | import java.util.Map; 5 | 6 | public class TableRelation 7 | { 8 | 9 | private Map relations; 10 | 11 | private Table table; 12 | 13 | public Map getRelations( ) 14 | { 15 | return relations; 16 | } 17 | 18 | public Table getTable( ) 19 | { 20 | return table; 21 | } 22 | 23 | public void setRelations( Map relations ) 24 | { 25 | this.relations = relations; 26 | } 27 | 28 | public void setTable( Table table ) 29 | { 30 | this.table = table; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /demos/tracedatalineage/TraceTarget.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | 7 | public class TraceTarget 8 | { 9 | 10 | private TraceTarget parent; 11 | 12 | private Object source; 13 | 14 | private List target = new ArrayList( ); 15 | 16 | void addTarget( TraceTarget model ) 17 | { 18 | model.setParent( this ); 19 | this.target.add( model ); 20 | } 21 | 22 | boolean containsTarget( Object source ) 23 | { 24 | if ( this.target == null ) 25 | return false; 26 | for ( int i = 0; i < this.target.size( ); i++ ) 27 | { 28 | if ( this.target.get( i ).source.equals( source ) ) 29 | return true; 30 | } 31 | return false; 32 | } 33 | 34 | public TraceTarget getParent( ) 35 | { 36 | return parent; 37 | } 38 | 39 | Object getSource( ) 40 | { 41 | return source; 42 | } 43 | 44 | List getTarget( ) 45 | { 46 | return target; 47 | } 48 | 49 | TraceTarget getTarget( Object source ) 50 | { 51 | if ( this.target == null ) 52 | return null; 53 | for ( int i = 0; i < this.target.size( ); i++ ) 54 | { 55 | if ( this.target.get( i ).source.equals( source ) ) 56 | return this.target.get( i ); 57 | } 58 | return null; 59 | } 60 | 61 | void setParent( TraceTarget parent ) 62 | { 63 | this.parent = parent; 64 | } 65 | 66 | void setSource( Object source ) 67 | { 68 | this.source = source; 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /demos/tracedatalineage/Variable.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | public class Variable 5 | { 6 | 7 | private String name; 8 | 9 | public String getName( ) 10 | { 11 | return name; 12 | } 13 | 14 | public void setName( String name ) 15 | { 16 | this.name = name; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /demos/tracedatalineage/View.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage; 3 | 4 | public class View extends Table 5 | { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /demos/tracedatalineage/test/ddl3/statements.sql: -------------------------------------------------------------------------------- 1 | create table product_tlb( 2 | base_cow_id int NOT NULL, 3 | column2 int NOT NULL, 4 | std_tst_id int NOT NULL 5 | ); 6 | 7 | create table product_loc_tb( 8 | bsecowid int NOT NULL, 9 | column2b int NOT NULL, 10 | tstid int NOT NULL 11 | ); 12 | 13 | UPDATE product_tlb 14 | SET base_cow_id = b.bsecowid, 15 | column2 = b.column2b 16 | FROM product_tlb a, product_loc_tb b 17 | WHERE a.std_tst_id = b.tstid 18 | AND b.bsecowid > 1 -------------------------------------------------------------------------------- /demos/tracedatalineage/test/traceDataLineageTest.java: -------------------------------------------------------------------------------- 1 | 2 | package demos.tracedatalineage.test; 3 | 4 | import java.io.InputStream; 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | import junit.framework.TestCase; 9 | import demos.tracedatalineage.Column; 10 | import demos.tracedatalineage.traceDataLineage; 11 | 12 | public class traceDataLineageTest extends TestCase 13 | { 14 | 15 | public void testDDL1( ) 16 | { 17 | List streams = new ArrayList( ); 18 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl/g_sds_sub_dev0 - asd_asset_identifier.sql" ) ); 19 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl/sds_bcp_dev0 - asd_wk_asset_identifier.sql" ) ); 20 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl/sdsdev0 - asd_asset_identifier.sql" ) ); 21 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl/sdsdev0 - asd_wk_asset_identifier.sql" ) ); 22 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl/sdsdev0 - sds_m_asd_asset_identifier.sql" ) ); 23 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl/sdsdev0 - sds_post_asd_asset_identifier.sql" ) ); 24 | traceDataLineage trace = new traceDataLineage( streams ); 25 | assertEquals( trace.getTracedLineage( ).size( ), 25 ); 26 | for ( int i = 0; i < trace.getTracedLineage( ).size( ); i++ ) 27 | { 28 | List lineage = trace.getTracedLineage( ).get( i ); 29 | if ( trace.getColumnFullName( lineage.get( 0 ) ) 30 | .equals( "sds_bcp_dev0.asd_wk_asset_identifier.cusip_num" ) ) 31 | { 32 | assertEquals( lineage.size( ), 4 ); 33 | assertEquals( trace.getColumnFullName( lineage.get( 0 ) ), 34 | "sds_bcp_dev0.asd_wk_asset_identifier.cusip_num" ); 35 | assertEquals( trace.getColumnFullName( lineage.get( 1 ) ), 36 | "sdsdev0.asd_wk_asset_identifier.cusip_num" ); 37 | assertEquals( trace.getColumnFullName( lineage.get( 2 ) ), 38 | "sdsdev0.asd_asset_identifier.cusip_num" ); 39 | assertEquals( trace.getColumnFullName( lineage.get( 3 ) ), 40 | "g_sds_sub_dev0.asd_asset_identifier.cusip_num" ); 41 | } 42 | } 43 | } 44 | 45 | public void testDDL2( ) 46 | { 47 | List streams = new ArrayList( ); 48 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl2/sdsdev0 - bog_pr_yu_qwe_jil_rltnshp.sql" ) ); 49 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl2/sdsdev0 - bog_pr_prk_jil_rltnshp.sql" ) ); 50 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl2/sdsdev0 - bog_pr_jil_snk.sql" ) ); 51 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl2/sdsdev0 - bog_pr_jil.sql" ) ); 52 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl2/g_sds_sub_dev0 - sds_tst_prdct.sql" ) ); 53 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl2/g_sds_sub_dev0 - sds_tst_pos.sql" ) ); 54 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl2/g_sds_sub_dev0 - sds_bld_tst_prdct.sql" ) ); 55 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl2/g_sds_sub_dev0 - bog_pr_yu_qwe_jil_rltnshp.sql" ) ); 56 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl2/g_sds_sub_dev0 - bog_pr_prk_jil_rltnshp.sql" ) ); 57 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl2/g_sds_sub_dev0 - bog_pr_jil_snk.sql" ) ); 58 | streams.add( traceDataLineageTest.class.getResourceAsStream( "/demos/tracedatalineage/test/ddl2/g_sds_sub_dev0 - bog_pr_jil.sql" ) ); 59 | traceDataLineage trace = new traceDataLineage(streams ); 60 | assertEquals( trace.getTracedLineage( ).size( ), 74 ); 61 | for ( int i = 0; i < trace.getTracedLineage( ).size( ); i++ ) 62 | { 63 | List lineage = trace.getTracedLineage( ).get( i ); 64 | if ( trace.getColumnFullName( lineage.get( 0 ) ) 65 | .equals( "sdsdev0.bog_pr_jil.bsecowid" ) ) 66 | { 67 | assertEquals( lineage.size( ), 3 ); 68 | assertEquals( trace.getColumnFullName( lineage.get( 0 ) ), 69 | "sdsdev0.bog_pr_jil.bsecowid" ); 70 | assertEquals( trace.getColumnFullName( lineage.get( 1 ) ), 71 | "g_sds_sub_dev0.bog_pr_jil.bsecowid" ); 72 | assertEquals( trace.getColumnFullName( lineage.get( 2 ) ), 73 | "g_sds_sub_dev0.sds_tst_prdct.base_cow_id" ); 74 | } 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /demos/visitors/tree-view.css: -------------------------------------------------------------------------------- 1 | body { font-family: sans-serif; font-size: 70%; background-color: #EAEAD9; color: black } 2 | 3 | .connector { font-family: monospace; } 4 | 5 | .name { color: navy; background-color: white; text-decoration: underline; font-weight: bold; 6 | padding-top: 0px; padding-bottom: 1px; padding-left: 3px; padding-right: 3px } 7 | .altname { color: navy; text-decoration: underline } 8 | .uri { color: #444; font-style: italic } 9 | .value { color: #040; background-color: #CCC; font-weight: bold } 10 | .escape { color: #620; font-family: monospace } 11 | 12 | .root { color: yellow; background-color: black } 13 | .element { color: yellow; background-color: navy } 14 | .namespace { color: yellow; background-color: #333 } 15 | .attribute { color: yellow; background-color: #040 } 16 | .text { color: yellow; background-color: #400 } 17 | .pi { color: yellow; background-color: #044 } 18 | .comment { color: yellow; background-color: #303 } 19 | 20 | .root,.element,.attribute,.namespace,.text,.comment,.pi 21 | { font-weight: bold; 22 | padding-top: 0px; padding-bottom: 1px; padding-left: 3px; padding-right: 3px } 23 | -------------------------------------------------------------------------------- /gsp.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sushilshah/gsp-sqlparser/85aa89e5fba8544038859df83d7a1b1bbe8ef614/gsp.jar -------------------------------------------------------------------------------- /javadoc/demos/antiSQLInjection/class-use/GEval.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Class demos.antiSQLInjection.GEval (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 47 | 50 | 51 | 52 | 53 | 56 | 72 | 73 |
48 | 49 |
74 | 75 | 76 | 77 |


78 |
79 |

80 | Uses of Class
demos.antiSQLInjection.GEval

81 |
82 | No usage of demos.antiSQLInjection.GEval 83 |

84 |


85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 107 | 110 | 111 | 112 | 113 | 116 | 132 | 133 |
108 | 109 |
134 | 135 | 136 | 137 |
138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /javadoc/demos/antiSQLInjection/class-use/UnknownValue.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Class demos.antiSQLInjection.UnknownValue (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 47 | 50 | 51 | 52 | 53 | 56 | 72 | 73 |
48 | 49 |
74 | 75 | 76 | 77 |
78 |
79 |

80 | Uses of Class
demos.antiSQLInjection.UnknownValue

81 |
82 | No usage of demos.antiSQLInjection.UnknownValue 83 |

84 |


85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 107 | 110 | 111 | 112 | 113 | 116 | 132 | 133 |
108 | 109 |
134 | 135 | 136 | 137 |
138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /javadoc/demos/antiSQLInjection/class-use/antiSQLInjection.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Class demos.antiSQLInjection.antiSQLInjection (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 47 | 50 | 51 | 52 | 53 | 56 | 72 | 73 |
48 | 49 |
74 | 75 | 76 | 77 |
78 |
79 |

80 | Uses of Class
demos.antiSQLInjection.antiSQLInjection

81 |
82 | No usage of demos.antiSQLInjection.antiSQLInjection 83 |

84 |


85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 107 | 110 | 111 | 112 | 113 | 116 | 132 | 133 |
108 | 109 |
134 | 135 | 136 | 137 |
138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /javadoc/demos/antiSQLInjection/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | demos.antiSQLInjection (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | demos.antiSQLInjection 20 | 21 | 22 | 27 | 28 |
23 | Interfaces  24 | 25 |
26 | GContext
29 | 30 | 31 | 32 | 33 | 46 | 47 |
34 | Classes  35 | 36 |
37 | antiSQLInjection 38 |
39 | GEval 40 |
41 | TAntiSQLInjection 42 |
43 | TSQLInjection 44 |
45 | UnknownValue
48 | 49 | 50 | 51 | 52 | 57 | 58 |
53 | Enums  54 | 55 |
56 | ESQLInjectionType
59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /javadoc/demos/antiSQLInjection/test/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | demos.antiSQLInjection.test (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | demos.antiSQLInjection.test 20 | 21 | 22 | 27 | 28 |
23 | Classes  24 | 25 |
26 | antiSQLInjectionTest
29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /javadoc/demos/antiSQLInjection/test/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Package demos.antiSQLInjection.test (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 47 | 50 | 51 | 52 | 53 | 56 | 72 | 73 |
48 | 49 |
74 | 75 | 76 | 77 |
78 |
79 |

80 | Uses of Package
demos.antiSQLInjection.test

81 |
82 | No usage of demos.antiSQLInjection.test 83 |

84 |


85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 107 | 110 | 111 | 112 | 113 | 116 | 132 | 133 |
108 | 109 |
134 | 135 | 136 | 137 |
138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/class-use/TBaseType.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Class gudusoft.gsqlparser.TBaseType (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 47 | 50 | 51 | 52 | 53 | 56 | 72 | 73 |
48 | 49 |
74 | 75 | 76 | 77 |
78 |
79 |

80 | Uses of Class
gudusoft.gsqlparser.TBaseType

81 |
82 | No usage of gudusoft.gsqlparser.TBaseType 83 |

84 |


85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 107 | 110 | 111 | 112 | 113 | 116 | 132 | 133 |
108 | 109 |
134 | 135 | 136 | 137 |
138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/class-use/TVisitedAbs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Class gudusoft.gsqlparser.TVisitedAbs (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 47 | 50 | 51 | 52 | 53 | 56 | 72 | 73 |
48 | 49 |
74 | 75 | 76 | 77 |
78 |
79 |

80 | Uses of Class
gudusoft.gsqlparser.TVisitedAbs

81 |
82 | No usage of gudusoft.gsqlparser.TVisitedAbs 83 |

84 |


85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 107 | 110 | 111 | 112 | 113 | 116 | 132 | 133 |
108 | 109 |
134 | 135 | 136 | 137 |
138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/class-use/TVisitorAbs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Class gudusoft.gsqlparser.TVisitorAbs (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 47 | 50 | 51 | 52 | 53 | 56 | 72 | 73 |
48 | 49 |
74 | 75 | 76 | 77 |
78 |
79 |

80 | Uses of Class
gudusoft.gsqlparser.TVisitorAbs

81 |
82 | No usage of gudusoft.gsqlparser.TVisitorAbs 83 |

84 |


85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 107 | 110 | 111 | 112 | 113 | 116 | 132 | 133 |
108 | 109 |
134 | 135 | 136 | 137 |
138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/nodes/class-use/TTypeName.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sushilshah/gsp-sqlparser/85aa89e5fba8544038859df83d7a1b1bbe8ef614/javadoc/gudusoft/gsqlparser/nodes/class-use/TTypeName.html -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/nodes/oracle/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | gudusoft.gsqlparser.nodes.oracle (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | gudusoft.gsqlparser.nodes.oracle 20 | 21 | 22 | 33 | 34 |
23 | Classes  24 | 25 |
26 | TInvokerRightsClause 27 |
28 | TParallelEnableClause 29 |
30 | TResultCacheClause 31 |
32 | TStreamingClause
35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | gudusoft.gsqlparser (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | gudusoft.gsqlparser 20 | 21 | 22 | 29 | 30 |
23 | Interfaces  24 | 25 |
26 | IMetaDatabase 27 |
28 | ITokenHandle
31 | 32 | 33 | 34 | 35 | 60 | 61 |
36 | Classes  37 | 38 |
39 | TBaseType 40 |
41 | TCustomLexer 42 |
43 | TCustomParser 44 |
45 | TCustomSqlStatement 46 |
47 | TGSqlParser 48 |
49 | TSourceToken 50 |
51 | TSourceTokenList 52 |
53 | TStatementList 54 |
55 | TSyntaxError 56 |
57 | TVisitedAbs 58 |
59 | TVisitorAbs
62 | 63 | 64 | 65 | 66 | 109 | 110 |
67 | Enums  68 | 69 |
70 | EActionOnParseError 71 |
72 | EAggregateType 73 |
74 | EAlterTableOptionType 75 |
76 | EConstraintType 77 |
78 | EDataType 79 |
80 | EDataTypeAttribute 81 |
82 | EDbObjectType 83 |
84 | EDbVendor 85 |
86 | EErrorType 87 |
88 | EExpressionType 89 |
90 | EFunctionType 91 |
92 | EIndexType 93 |
94 | EJoinType 95 |
96 | EKeyActionType 97 |
98 | EKeyReferenceType 99 |
100 | ESqlClause 101 |
102 | ESqlStatementType 103 |
104 | ETableSource 105 |
106 | ETokenStatus 107 |
108 | ETokenType
111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/stmt/db2/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | gudusoft.gsqlparser.stmt.db2 (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | gudusoft.gsqlparser.stmt.db2 20 | 21 | 22 | 91 | 92 |
23 | Classes  24 | 25 |
26 | TCustomDb2Stmt 27 |
28 | TDb2CallStmt 29 |
30 | TDb2CaseStmt 31 |
32 | TDb2CloseCursorStmt 33 |
34 | TDb2ConditionDeclaration 35 |
36 | TDb2CreateFunction 37 |
38 | TDb2CreateProcedure 39 |
40 | TDb2CreateTrigger 41 |
42 | TDb2DeclareCursorStatement 43 |
44 | TDb2DummyStmt 45 |
46 | TDb2DynamicCompoundStatement 47 |
48 | TDb2FetchCursorStmt 49 |
50 | TDb2ForStmt 51 |
52 | TDb2GotoStmt 53 |
54 | TDb2HandlerDeclaration 55 |
56 | TDb2IfStmt 57 |
58 | TDb2IterateStmt 59 |
60 | TDb2LeaveStmt 61 |
62 | TDb2LoopStmt 63 |
64 | TDb2OpenCursorStmt 65 |
66 | TDb2ProcedureCompoundStatement 67 |
68 | TDb2RepeatStmt 69 |
70 | TDb2ReturnCodesDeclaration 71 |
72 | TDb2ReturnStmt 73 |
74 | TDb2SetStmt 75 |
76 | TDb2SetVariableStmt 77 |
78 | TDb2SignalStmt 79 |
80 | TDb2SqlProcedureStatement 81 |
82 | TDb2SqlVariableDeclaration 83 |
84 | TDb2StatementDeclaration 85 |
86 | TDb2StmtStub 87 |
88 | TDb2ValuesIntoStmt 89 |
90 | TDb2WhileStmt
93 | 94 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/stmt/informix/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | gudusoft.gsqlparser.stmt.informix (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | gudusoft.gsqlparser.stmt.informix 20 | 21 | 22 | 53 | 54 |
23 | Classes  24 | 25 |
26 | TInformixAllocateCollectionStmt 27 |
28 | TInformixAllocateDescriptorStmt 29 |
30 | TInformixAllocateRow 31 |
32 | TInformixAlterAccess_MethodStmt 33 |
34 | TInformixAlterFragment 35 |
36 | TInformixCreateFunction 37 |
38 | TInformixCreateProcedure 39 |
40 | TInformixCreateRowTypeStmt 41 |
42 | TInformixCreateTrigger 43 |
44 | TInformixDropRowTypeStmt 45 |
46 | TInformixExecuteFunction 47 |
48 | TInformixExecuteImmediate 49 |
50 | TInformixExecuteProcedure 51 |
52 | TInformixExecuteStmt
55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/stmt/informix/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Package gudusoft.gsqlparser.stmt.informix (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 47 | 50 | 51 | 52 | 53 | 56 | 72 | 73 |
48 | 49 |
74 | 75 | 76 | 77 |
78 |
79 |

80 | Uses of Package
gudusoft.gsqlparser.stmt.informix

81 |
82 | No usage of gudusoft.gsqlparser.stmt.informix 83 |

84 |


85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 107 | 110 | 111 | 112 | 113 | 116 | 132 | 133 |
108 | 109 |
134 | 135 | 136 | 137 |
138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/stmt/mdx/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | gudusoft.gsqlparser.stmt.mdx (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | gudusoft.gsqlparser.stmt.mdx 20 | 21 | 22 | 75 | 76 |
23 | Classes  24 | 25 |
26 | TMdxAlterCube 27 |
28 | TMdxCalculate 29 |
30 | TMdxCall 31 |
32 | TMdxCase 33 |
34 | TMdxClearCalculations 35 |
36 | TMdxCreateAction 37 |
38 | TMdxCreateCellCalculation 39 |
40 | TMdxCreateGlobalCube 41 |
42 | TMdxCreateMember 43 |
44 | TMdxCreateSessionCube 45 |
46 | TMdxCreateSet 47 |
48 | TMdxCreateSubCube 49 |
50 | TMdxDrillthrough 51 |
52 | TMdxDropAction 53 |
54 | TMdxDropCellCalculation 55 |
56 | TMdxDropMember 57 |
58 | TMdxDropSet 59 |
60 | TMdxDropSubcube 61 |
62 | TMdxExpression 63 |
64 | TMdxFreeze 65 |
66 | TMdxIf 67 |
68 | TMdxRefreshCube 69 |
70 | TMdxScope 71 |
72 | TMdxSelect 73 |
74 | TMdxUpdate
77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/stmt/mysql/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | gudusoft.gsqlparser.stmt.mysql (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | gudusoft.gsqlparser.stmt.mysql 20 | 21 | 22 | 63 | 64 |
23 | Classes  24 | 25 |
26 | TCustomMySQLStmt 27 |
28 | TMySQLBlock 29 |
30 | TMySQLCallStmt 31 |
32 | TMySQLCaseStmt 33 |
34 | TMySQLCreateFunction 35 |
36 | TMySQLCreateProcedure 37 |
38 | TMySQLCreateTrigger 39 |
40 | TMySQLDeclare 41 |
42 | TMySQLFetchCursor 43 |
44 | TMySQLIfStmt 45 |
46 | TMySQLLoopStmt 47 |
48 | TMySQLOpenCursor 49 |
50 | TMySQLPrepareSqlNode 51 |
52 | TMySQLPrepareStmt 53 |
54 | TMySQLRepeatStmt 55 |
56 | TMySQLReturn 57 |
58 | TMySQLSet 59 |
60 | TMySQLStmtStub 61 |
62 | TMySQLWhileStmt
65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/stmt/oracle/TPlsqlTableTypeDefStmt.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sushilshah/gsp-sqlparser/85aa89e5fba8544038859df83d7a1b1bbe8ef614/javadoc/gudusoft/gsqlparser/stmt/oracle/TPlsqlTableTypeDefStmt.html -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/stmt/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | gudusoft.gsqlparser.stmt (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | gudusoft.gsqlparser.stmt 20 | 21 | 22 | 79 | 80 |
23 | Classes  24 | 25 |
26 | TAlterIndexStmt 27 |
28 | TAlterSessionStatement 29 |
30 | TAlterTableStatement 31 |
32 | TBlockSqlStatement 33 |
34 | TCreateDatabaseSqlStatement 35 |
36 | TCreateIndexSqlStatement 37 |
38 | TCreateMaterializedSqlStatement 39 |
40 | TCreateSequenceStmt 41 |
42 | TCreateSynonymStmt 43 |
44 | TCreateTableSqlStatement 45 |
46 | TCreateViewSqlStatement 47 |
48 | TDeleteSqlStatement 49 |
50 | TDescribeStmt 51 |
52 | TDropIndexSqlStatement 53 |
54 | TDropSequenceStmt 55 |
56 | TDropSynonymStmt 57 |
58 | TDropTableSqlStatement 59 |
60 | TDropViewSqlStatement 61 |
62 | TInsertSqlStatement 63 |
64 | TMergeSqlStatement 65 |
66 | TParseErrorSqlStatement 67 |
68 | TRenameStmt 69 |
70 | TSelectSqlStatement 71 |
72 | TStoredProcedureSqlStatement 73 |
74 | TTruncateStatement 75 |
76 | TUnknownSqlStatement 77 |
78 | TUpdateSqlStatement
81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/stmt/postgresql/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | gudusoft.gsqlparser.stmt.postgresql (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | gudusoft.gsqlparser.stmt.postgresql 20 | 21 | 22 | 37 | 38 |
23 | Classes  24 | 25 |
26 | TDropRoleSqlStatement 27 |
28 | TDropTriggerSqlStatement 29 |
30 | TExecuteSqlStatement 31 |
32 | TFetchSqlStatement 33 |
34 | TGrantSqlStatement 35 |
36 | TLockSqlStatement
39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/stmt/postgresql/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Package gudusoft.gsqlparser.stmt.postgresql (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 47 | 50 | 51 | 52 | 53 | 56 | 72 | 73 |
48 | 49 |
74 | 75 | 76 | 77 |
78 |
79 |

80 | Uses of Package
gudusoft.gsqlparser.stmt.postgresql

81 |
82 | No usage of gudusoft.gsqlparser.stmt.postgresql 83 |

84 |


85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 107 | 110 | 111 | 112 | 113 | 116 | 132 | 133 |
108 | 109 |
134 | 135 | 136 | 137 |
138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/stmt/teradata/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | gudusoft.gsqlparser.stmt.teradata (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | gudusoft.gsqlparser.stmt.teradata 20 | 21 | 22 | 67 | 68 |
23 | Classes  24 | 25 |
26 | TExpandOnClause 27 |
28 | TTeradataAbort 29 |
30 | TTeradataBeginLogging 31 |
32 | TTeradataBeginTransaction 33 |
34 | TTeradataCollectStatistics 35 |
36 | TTeradataCommit 37 |
38 | TTeradataCreateFunction 39 |
40 | TTeradataCreateProcedure 41 |
42 | TTeradataCreateTrigger 43 |
44 | TTeradataDropDbObject 45 |
46 | TTeradataEndLogging 47 |
48 | TTeradataEndTransaction 49 |
50 | TTeradataExecute 51 |
52 | TTeradataGrant 53 |
54 | TTeradataNotImplement 55 |
56 | TTeradataRollback 57 |
58 | TTeradataSetRole 59 |
60 | TTeradataSetSession 61 |
62 | TTeradataSetTimezone 63 |
64 | TTeradataStmtStubSqlNode 65 |
66 | TUsingSqlStatement
69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/util/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | gudusoft.gsqlparser.util (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | gudusoft.gsqlparser.util 20 | 21 | 22 | 29 | 30 |
23 | Classes  24 | 25 |
26 | functionChecker 27 |
28 | keywordChecker
31 | 32 | 33 | 34 | 35 | 40 | 41 |
36 | Exceptions  37 | 38 |
39 | TException
42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /javadoc/gudusoft/gsqlparser/util/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Uses of Package gudusoft.gsqlparser.util (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 47 | 50 | 51 | 52 | 53 | 56 | 72 | 73 |
48 | 49 |
74 | 75 | 76 | 77 |
78 |
79 |

80 | Uses of Package
gudusoft.gsqlparser.util

81 |
82 | No usage of gudusoft.gsqlparser.util 83 |

84 |


85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 107 | 110 | 111 | 112 | 113 | 116 | 132 | 133 |
108 | 109 |
134 | 135 | 136 | 137 |
138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /javadoc/index-files/index-7.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sushilshah/gsp-sqlparser/85aa89e5fba8544038859df83d7a1b1bbe8ef614/javadoc/index-files/index-7.html -------------------------------------------------------------------------------- /javadoc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | general sql parser java api 8 | 9 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | <H2> 29 | Frame Alert</H2> 30 | 31 | <P> 32 | This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. 33 | <BR> 34 | Link to<A HREF="overview-summary.html">Non-frame version.</A> 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /javadoc/overview-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Overview (general sql parser java api) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 24 |
22 |
25 | 26 | 27 | 28 | 66 | 67 |
All Classes 29 |

30 | 31 | Packages 32 |
33 | demos.antiSQLInjection 34 |
35 | demos.antiSQLInjection.test 36 |
37 | gudusoft.gsqlparser 38 |
39 | gudusoft.gsqlparser.nodes 40 |
41 | gudusoft.gsqlparser.nodes.mdx 42 |
43 | gudusoft.gsqlparser.nodes.oracle 44 |
45 | gudusoft.gsqlparser.stmt 46 |
47 | gudusoft.gsqlparser.stmt.db2 48 |
49 | gudusoft.gsqlparser.stmt.informix 50 |
51 | gudusoft.gsqlparser.stmt.mdx 52 |
53 | gudusoft.gsqlparser.stmt.mssql 54 |
55 | gudusoft.gsqlparser.stmt.mysql 56 |
57 | gudusoft.gsqlparser.stmt.oracle 58 |
59 | gudusoft.gsqlparser.stmt.postgresql 60 |
61 | gudusoft.gsqlparser.stmt.teradata 62 |
63 | gudusoft.gsqlparser.util 64 |
65 |

68 | 69 |

70 |   71 | 72 | 73 | -------------------------------------------------------------------------------- /javadoc/package-list: -------------------------------------------------------------------------------- 1 | demos.antiSQLInjection 2 | demos.antiSQLInjection.test 3 | gudusoft.gsqlparser 4 | gudusoft.gsqlparser.nodes 5 | gudusoft.gsqlparser.nodes.mdx 6 | gudusoft.gsqlparser.nodes.oracle 7 | gudusoft.gsqlparser.stmt 8 | gudusoft.gsqlparser.stmt.db2 9 | gudusoft.gsqlparser.stmt.informix 10 | gudusoft.gsqlparser.stmt.mdx 11 | gudusoft.gsqlparser.stmt.mssql 12 | gudusoft.gsqlparser.stmt.mysql 13 | gudusoft.gsqlparser.stmt.oracle 14 | gudusoft.gsqlparser.stmt.postgresql 15 | gudusoft.gsqlparser.stmt.teradata 16 | gudusoft.gsqlparser.util 17 | -------------------------------------------------------------------------------- /javadoc/resources/inherit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sushilshah/gsp-sqlparser/85aa89e5fba8544038859df83d7a1b1bbe8ef614/javadoc/resources/inherit.gif -------------------------------------------------------------------------------- /javadoc/stylesheet.css: -------------------------------------------------------------------------------- 1 | /* Javadoc style sheet */ 2 | 3 | /* Define colors, fonts and other style attributes here to override the defaults */ 4 | 5 | /* Page background color */ 6 | body { background-color: #FFFFFF } 7 | 8 | /* Headings */ 9 | h1 { font-size: 145% } 10 | 11 | /* Table colors */ 12 | .TableHeadingColor { background: #CCCCFF } /* Dark mauve */ 13 | .TableSubHeadingColor { background: #EEEEFF } /* Light mauve */ 14 | .TableRowColor { background: #FFFFFF } /* White */ 15 | 16 | /* Font used in left-hand frame lists */ 17 | .FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif } 18 | .FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif } 19 | .FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif } 20 | 21 | /* Navigation bar fonts and colors */ 22 | .NavBarCell1 { background-color:#EEEEFF;} /* Light mauve */ 23 | .NavBarCell1Rev { background-color:#00008B;} /* Dark Blue */ 24 | .NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;} 25 | .NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;} 26 | 27 | .NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;} 28 | .NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;} 29 | 30 | -------------------------------------------------------------------------------- /test1.sql: -------------------------------------------------------------------------------- 1 | select count(*) from tab --------------------------------------------------------------------------------