From 8aa9b4d7e2684ae6219298e3b992eed000178130 Mon Sep 17 00:00:00 2001 From: Tako Lee Date: Tue, 17 Sep 2024 22:42:56 +0800 Subject: [PATCH 1/4] refactor directory and package name for test units --- README.md | 18 +- .../java/demos/dlineage/DataFlowAnalyzer.java | 2 - .../dlineage/testColumnLevelLineageFile.java | 239 -- .../TestAcceptChildren.java | 5 +- .../gsqlparser/acceptChildrenTest}/readme.md | 0 .../antiSQLInjectionBatchTest.java | 2 +- .../antiSQLInjectionTest.java | 2 +- .../athenaTest}/testCreateExternal.java | 2 +- .../gsqlparser/athenaTest}/testExplain.java | 2 +- .../athenaTest}/testUnloadStmt.java | 6 +- .../bigqueryTest}/testBacktick.java | 2 +- .../bigqueryTest}/testCheckSourceColumn.java | 2 +- .../testCreateExternalTable.java | 2 +- .../bigqueryTest}/testCreateFunction.java | 68 +- .../bigqueryTest}/testCreateProcedure.java | 179 +- .../bigqueryTest}/testCreateTable.java | 4 +- .../testCreateTableFunction.java | 2 +- .../gsqlparser/bigqueryTest}/testDeclare.java | 70 +- .../bigqueryTest}/testIdentifier.java | 2 +- .../bigqueryTest}/testLegacySQL.java | 2 +- .../commonTest}/ColumnImpactTest.java | 3 +- .../gsqlparser/commonTest}/FileUtil.java | 2 +- .../gsqlparser/commonTest}/SqlFileList.java | 2 +- .../gsqlparser/commonTest}/gspCommon.java | 4 +- .../gsqlparser/commonTest}/helloTest.java | 3 +- .../gsqlparser/commonTest}/metaDB.java | 2 +- .../commonTest}/testAcceptChildren.java | 232 +- .../commonTest}/testAggregateFunction.java | 2 +- .../gsqlparser/commonTest}/testAlias.java | 2 +- .../commonTest}/testAlterTable.java | 592 +-- .../gsqlparser/commonTest}/testAlterView.java | 2 +- .../commonTest}/testAsCanonical.java | 2 +- .../gsqlparser/commonTest}/testBigline.java | 4 +- .../gsqlparser/commonTest}/testCTE.java | 2 +- .../gsqlparser/commonTest}/testCall.java | 6 +- .../commonTest}/testCharacters.java | 2 +- .../commonTest}/testColumnDefinition.java | 2 +- .../gsqlparser/commonTest}/testComment.java | 2 +- .../gsqlparser/commonTest}/testCommentOn.java | 2 +- .../gsqlparser/commonTest}/testConnect.java | 4 +- .../commonTest}/testConstraint.java | 2 +- .../commonTest}/testCoordinates.java | 383 +- .../commonTest}/testCreateDatabase.java | 2 +- .../commonTest}/testCreateFunction.java | 120 +- .../commonTest}/testCreateIndex.java | 2 +- .../commonTest}/testCreateSchema.java | 2 +- .../commonTest}/testCreateSequenceStmt.java | 77 +- .../commonTest}/testCreateSynonym.java | 2 +- .../commonTest}/testCreateTable.java | 264 +- .../commonTest}/testCreateTableOption.java | 242 +- .../gsqlparser/commonTest}/testDBVendor.java | 44 +- .../gsqlparser/commonTest}/testDatatype.java | 286 +- .../commonTest}/testDeleteStmt.java | 2 +- .../commonTest}/testDistributeBy.java | 2 +- .../commonTest}/testDropDatabase.java | 2 +- .../gsqlparser/commonTest}/testDropIndex.java | 66 +- .../commonTest}/testDropSchema.java | 2 +- .../gsqlparser/commonTest}/testDropTable.java | 2 +- .../commonTest}/testEmptyInput.java | 2 +- .../commonTest}/testExceptionClause.java | 2 +- .../commonTest}/testExecImmeStmt.java | 2 +- .../gsqlparser/commonTest}/testExplain.java | 4 +- .../commonTest}/testExprTraverse.java | 2 +- .../commonTest}/testExpression.java | 382 +- .../commonTest}/testFakeConstraint.java | 2 +- .../gsqlparser/commonTest}/testFunction.java | 140 +- .../commonTest}/testFunctionCall.java | 42 +- .../commonTest}/testGetCommentBeforeStmt.java | 4 +- .../gsqlparser/commonTest}/testGetTables.java | 2 +- .../gsqlparser/commonTest}/testGroupBy.java | 2 +- .../gsqlparser/commonTest}/testHint.java | 104 +- .../commonTest}/testIdentifierCase.java | 2 +- .../commonTest}/testInsertStatement.java | 2 +- .../gsqlparser/commonTest}/testJoins.java | 2 +- .../testJoins_using_tjoinexpr.java | 2 +- .../commonTest}/testLargeColumnList.java | 6 +- .../commonTest}/testLargeUnion.java | 4 +- .../commonTest}/testLateralView.java | 8 +- .../gsqlparser/commonTest}/testLicense.java | 2 +- .../commonTest}/testLimitClause.java | 2 +- .../gsqlparser/commonTest}/testLockTable.java | 2 +- .../commonTest}/testLongStatement.java | 2 +- .../gsqlparser/commonTest}/testMd5.java | 216 +- .../gsqlparser/commonTest}/testMerge.java | 455 ++- .../gsqlparser/commonTest}/testMetaDB.java | 2 +- .../commonTest}/testModifyExpr.java | 1046 ++--- .../gsqlparser/commonTest}/testModifySql.java | 1926 ++++----- .../commonTest}/testMssqlExecute.java | 2 +- .../commonTest}/testMssqlFunction.java | 2 +- .../gsqlparser/commonTest}/testMssqlIf.java | 2 +- .../commonTest}/testMssqlProcedure.java | 2 +- .../commonTest}/testMssqlRaiserror.java | 2 +- .../commonTest}/testMssqlTrigger.java | 2 +- .../commonTest}/testNotModifier.java | 2 +- .../gsqlparser/commonTest}/testODBC.java | 4 +- .../commonTest}/testObjectName.java | 280 +- .../commonTest}/testObjectNameAnsi.java | 2 +- .../commonTest}/testObjectNameLocation.java | 2 +- .../gsqlparser/commonTest}/testOffset.java | 2 +- .../gsqlparser/commonTest}/testOperator.java | 3 +- .../commonTest}/testPLSQLCallSpec.java | 2 +- .../commonTest}/testPartitonedBy.java | 2 +- .../commonTest}/testPivotClause.java | 182 +- .../commonTest}/testQualifiedVariable.java | 124 +- .../commonTest}/testRenameTable.java | 2 +- .../commonTest}/testResultColumn.java | 2 +- .../gsqlparser/commonTest}/testSequence.java | 86 +- .../gsqlparser/commonTest}/testSetSchema.java | 2 +- .../commonTest}/testSpecialCharacter.java | 2 +- .../testSqlserverProprietaryColumn.java | 2 +- .../commonTest}/testStatementList.java | 54 +- .../commonTest}/testStmtDelimiter.java | 2 +- .../gsqlparser/commonTest}/testSubquery.java | 2 +- .../commonTest}/testSyntaxError.java | 166 +- .../commonTest}/testTCreateSynonymStmt.java | 2 +- .../testTCreateTableSqlStatement.java | 182 +- .../testTCreateViewSqlStatement.java | 2 +- .../commonTest}/testTDeclareVariable.java | 2 +- .../commonTest}/testTDeleteSqlStatement.java | 3 +- .../testTDropIndexSqlStatement.java | 2 +- .../commonTest}/testTFunctionCall.java | 2 +- .../commonTest}/testTInsertSqlStatement.java | 2 +- .../commonTest}/testTMssqlCreateFunction.java | 2 +- .../commonTest}/testTMssqlExecute.java | 3 +- .../gsqlparser/commonTest}/testTMssqlSet.java | 2 +- .../commonTest}/testTMssqlTruncateTable.java | 2 +- .../commonTest}/testTObjectName.java | 2 +- .../testTOracleCommentOnSqlStmt.java | 2 +- .../testTOracleCreateDirectoryStmt.java | 2 +- .../commonTest}/testTOrderByItem.java | 2 +- .../commonTest}/testTPlsqlLoopStmt.java | 2 +- .../commonTest}/testTSampleClause.java | 2 +- .../commonTest}/testTSelectSqlStatement.java | 2 +- .../commonTest}/testTSourceToken.java | 2 +- .../commonTest}/testTUpdateSqlStatement.java | 2 +- .../gsqlparser/commonTest}/testTableNull.java | 2 +- .../gsqlparser/commonTest}/testTmp.java | 2 +- .../gsqlparser/commonTest}/testToString.java | 391 +- .../gsqlparser/commonTest}/testToken.java | 2 +- .../commonTest}/testTruncateTable.java | 2 +- .../gsqlparser/commonTest}/testUTF8.java | 2 +- .../gsqlparser/commonTest}/testUse.java | 40 +- .../commonTest}/testVariableDeclare.java | 2 +- .../testVendorBuiltInFunctionAndKeywords.java | 2 +- .../commonTest}/testWarningMessage.java | 54 +- .../commonTest}/testWhereClause.java | 2 +- .../gsqlparser/commonTest}/testXML.java | 2 +- .../gsqlparser/commonTest}/testXmlXSD.java | 2 +- .../couchbaseTest}/testCreateIndex.java | 2 +- .../couchbaseTest}/testExplain.java | 2 +- .../gsqlparser/couchbaseTest}/testInfer.java | 2 +- .../gsqlparser/couchbaseTest}/testInsert.java | 2 +- .../gsqlparser/couchbaseTest}/testUpsert.java | 82 +- .../dag/testBuiltInFucntion.java | 2 +- .../customerTest}/dag/testKeepKeyword.java | 2 +- .../dag/testMultiSetOperator.java | 2 +- .../customerTest}/noetix/testViewAlias.java | 2 +- .../testGroupByItemWithParenthesis.java | 2 +- .../panayainc/testLabelName.java | 2 +- .../panayainc/testOracleCustomPackage.java | 5 +- .../panayainc/testProcedureInnerStmt.java | 2 +- .../panayainc/testUnionWithParenthesis.java | 2 +- .../cversionTest}/testFileNumbers.java | 4 +- .../databricksTest}/testDatatypeCast.java | 2 +- .../testJsonPathExpression.java | 2 +- .../databricksTest}/testStruct.java | 2 +- .../gsqlparser/databricksTest}/testUse.java | 2 +- .../gsqlparser/dataflowTest}/test3360.java | 6 +- .../dataflowTest}/testDataflow.java | 4 +- .../gsqlparser/dataflowTest}/testIAOX42.java | 4 +- .../gsqlparser/dataflowTest}/testIAQE4Y.java | 4 +- .../dataflowTest}/testRelationProcess.java | 6 +- .../gsqlparser/daxTest}/testEvaluate.java | 2 +- .../gsqlparser/db2Tesst}/testBlock.java | 48 +- .../gsqlparser/db2Tesst}/testCall.java | 2 +- .../db2Tesst}/testCreateDatabase.java | 48 +- .../db2Tesst}/testCreateProcedure.java | 2 +- .../db2Tesst}/testCreateTablespace.java | 40 +- .../db2Tesst}/testCreateVariable.java | 2 +- .../gsqlparser/db2Tesst}/testIdentifier.java | 3 +- .../db2Tesst}/testLabeledDuration.java | 2 +- .../gsqlparser/db2Tesst}/testParameter.java | 2 +- .../db2Tesst}/testWithCheckOption.java | 2 +- .../demosTest}/SqlTranslatorTest.java | 2 +- .../gsqlparser/demosTest}/analyzespTest.java | 232 +- .../removeCondition/testRemoveCondition.java | 429 +- .../demosTest}/traceDataLineageTest.java | 8 +- .../dlineageTest}/bigquery/testBigQuery.java | 10 +- .../bigquery/testConcatFunction.java | 3 +- .../bigquery/testCreateView.java | 2 +- .../dlineageTest}/bigquery/testExcept.java | 5 +- .../dlineageTest}/bigquery/testReplace.java | 3 +- .../dlineageTest}/bigquery/testStruct.java | 3 +- .../bigquery/testStructConstant.java | 4 +- .../dlineageTest}/bigquery/testUnnest.java | 6 +- .../dlineageTest}/oracle/testDBLink.java | 7 +- .../dlineageTest}/oracle/testSchema.java | 5 +- .../dlineageTest}/oracle/testTransitions.java | 12 +- .../postgresql/testProcedure.java | 6 +- .../gsqlparser/dlineageTest}/readme.md | 4 +- .../snowflake/testStructConstant.java | 3 +- .../dlineageTest}/solidatus/testDBLink.java | 2 +- .../solidatus/testStarColumn.java | 2 +- .../dlineageTest}/teradata/testTeradata.java | 7 +- .../testColumnLevelLineageFile.java | 239 ++ .../dlineageTest}/testMultpleSqlFiles.java | 6 +- .../dlineageTest}/testSimpleSql.java | 2 +- .../gsqlparser/dlineageTest}/test_IALOHN.java | 4 +- .../testPLSQLExecImmediateByVisitor.java | 2 +- .../testSQLServerCreateProcedureExec.java | 2 +- .../dynamicsqlTest}/testSQLServerExec.java | 2 +- .../gsqlparser/erdiagramTest}/testMsSQL.java | 5 +- .../gsqlparser/erdiagramTest}/testMySQL.java | 5 +- .../gsqlparser/erdiagramTest}/testOracle.java | 5 +- .../erdiagramTest}/testPostgres.java | 9 +- .../errorsqlTest}/testCreateIndex.java | 2 +- .../formatsqlTest}/formatsqlTest.java | 5 +- .../formatsqlTest}/formatsqlVerifyTest.java | 6 +- .../testAlignAliasInSelectList.java | 2 +- .../formatsqlTest}/testAlignment.java | 2 +- .../formatsqlTest}/testBlankLines.java | 2 +- .../gsqlparser/formatsqlTest}/testCTE.java | 88 +- .../formatsqlTest}/testCapitalisation.java | 2 +- .../formatsqlTest}/testCaseExpression.java | 2 +- .../formatsqlTest}/testComment.java | 2 +- .../formatsqlTest}/testCompactMode.java | 2 +- .../testCreateFunctionProcedure.java | 2 +- .../formatsqlTest}/testCreateTable.java | 2 +- .../formatsqlTest}/testDeclare.java | 2 +- .../formatsqlTest}/testExecute.java | 2 +- .../formatsqlTest}/testFromClause.java | 2 +- .../formatsqlTest}/testFunctionCall.java | 2 +- .../formatsqlTest}/testGroupByClause.java | 2 +- .../formatsqlTest}/testIndentation.java | 2 +- .../formatsqlTest}/testInsertList.java | 2 +- .../formatsqlTest}/testIntoClause.java | 2 +- .../gsqlparser/formatsqlTest}/testIssues.java | 2 +- .../formatsqlTest}/testLineNumber.java | 2 +- .../formatsqlTest}/testOracleCreateView.java | 2 +- .../formatsqlTest}/testOrderByClause.java | 2 +- .../gsqlparser/formatsqlTest}/testPlsql1.java | 2 +- .../formatsqlTest}/testSelectList.java | 2 +- .../formatsqlTest}/testWhereClause.java | 2 +- .../formatsqlTest}/testWhitespace.java | 2 +- .../testDeclareCursorSingleStmt.java | 2 +- .../gsqlparser/gaussdbTest}/testGetStmts.java | 12 +- .../gettablecolumnTest}/getObject.java | 550 +-- .../gettablecolumnTest}/testBigQuery.java | 6 +- .../testColumnResolver.java | 2 +- .../gettablecolumnTest}/testDB2.java | 2 +- .../testDBObjectOfSourceToken.java | 2 +- .../gettablecolumnTest}/testDaxFunction.java | 2 +- .../gettablecolumnTest}/testDbObject.java | 70 +- .../gettablecolumnTest}/testHive.java | 410 +- .../gettablecolumnTest}/testMySQL.java | 268 +- .../gettablecolumnTest}/testNetezza.java | 76 +- .../testNewTableColumn.java | 1328 +++--- .../gettablecolumnTest}/testOracle.java | 366 +- .../gettablecolumnTest}/testPostgresql.java | 102 +- .../gettablecolumnTest}/testPresto.java | 2 +- .../gettablecolumnTest}/testRedshift.java | 2 +- .../gettablecolumnTest}/testSQLEnv.java | 674 ++-- .../gettablecolumnTest}/testSQLServer.java | 704 ++-- .../gettablecolumnTest}/testSnowflake.java | 212 +- .../gettablecolumnTest}/testSparkSQL.java | 2 +- .../gettablecolumnTest}/testStarColumn.java | 333 +- .../testStarColumnInfile.java | 5 +- .../gettablecolumnTest}/testTC1.java | 222 +- .../testTeradataGetTableColumns.java | 2 +- .../gettablecolumnTest}/testTraceColumn.java | 170 +- .../gettablecolumnTest}/testUpdate.java | 2 +- .../greenplumTest}/testAlterTable.java | 2 +- .../testCreateExternalTable.java | 2 +- .../greenplumTest}/testCreateFunction.java | 1064 ++--- .../greenplumTest}/testCreateTable.java | 2 +- .../greenplumTest}/testDeclareBlock.java | 59 +- .../greenplumTest}/testSetVariable.java | 2 +- .../gsqlparser/greenplumTest}/testValues.java | 2 +- .../testAlterProcedureAndFunction.java | 2 +- .../hanaTest}/testCreateProcedure.java | 73 +- .../gsqlparser/hanaTest}/testLateral.java | 2 +- .../gsqlparser/hanaTest}/testUpsert.java | 164 +- .../gsqlparser/hiveTest}/testAlias.java | 2 +- .../gsqlparser/hiveTest}/testAlterTable.java | 2 +- .../gsqlparser/hiveTest}/testAnalyze.java | 2 +- .../gsqlparser/hiveTest}/testCTE.java | 97 +- .../hiveTest}/testCastFunction.java | 82 +- .../hiveTest}/testCreateFunction.java | 2 +- .../gsqlparser/hiveTest}/testCreateIndex.java | 2 +- .../gsqlparser/hiveTest}/testCreateTable.java | 352 +- .../gsqlparser/hiveTest}/testCreateView.java | 2 +- .../gsqlparser/hiveTest}/testDescribe.java | 2 +- .../gsqlparser/hiveTest}/testDropIndex.java | 2 +- .../gsqlparser/hiveTest}/testExplain.java | 102 +- .../gsqlparser/hiveTest}/testExportTable.java | 2 +- .../hiveTest}/testFieldExpression.java | 2 +- .../gsqlparser/hiveTest}/testFromSelect.java | 562 +-- .../gsqlparser/hiveTest}/testFunction.java | 2 +- .../hiveTest}/testGetFullTableName.java | 2 +- .../gsqlparser/hiveTest}/testHint.java | 2 +- .../hiveTest}/testIdentifierBacktick.java | 2 +- .../gsqlparser/hiveTest}/testImportTable.java | 2 +- .../gsqlparser/hiveTest}/testInsert.java | 2 +- .../gsqlparser/hiveTest}/testJoin.java | 2 +- .../gsqlparser/hiveTest}/testLateralView.java | 126 +- .../gsqlparser/hiveTest}/testLoad.java | 2 +- .../gsqlparser/hiveTest}/testParse.java | 2 +- .../hiveTest}/testSampleClause.java | 2 +- .../gsqlparser/hiveTest}/testSelect.java | 2 +- .../gsqlparser/hiveTest}/testSet.java | 2 +- .../gsqlparser/hiveTest}/testShow.java | 2 +- .../gsqlparser/hiveTest}/testTimestamp.java | 6 +- .../gsqlparser/hiveTest}/testToString.java | 72 +- .../gsqlparser/hiveTest}/testUnion.java | 389 +- .../hiveTest}/testWindowClause.java | 2 +- .../gsqlparser/hiveTest}/testlexer.java | 2 +- .../gsqlparser/impalaTest}/testSubquery.java | 54 +- .../informixTest}/testAlterObject.java | 2 +- .../informixTest}/testCreateProcedure.java | 2 +- .../informixTest}/testDropObject.java | 2 +- .../informixTest}/testOuterJoin.java | 2 +- .../informixTest}/testRenameObject.java | 3 +- .../gsqlparser/informixTest}/testSkip.java | 2 +- .../interfaceDemoTest}/testITokenHandle.java | 2 +- .../interfaceDemoTest}/testIgnorePrompt.java | 2 +- .../joinConvertTest}/JoinConverterTest.java | 2 +- .../gsqlparser/mdxTest}/testAlterCube.java | 2 +- .../mdxTest}/testCreateMeasure.java | 2 +- .../gsqlparser/mdxTest}/testCreateMember.java | 2 +- .../gsqlparser/mdxTest}/testIIF.java | 2 +- .../gsqlparser/mdxTest}/testMembers.java | 2 +- .../mdxTest}/testRawStatements.java | 5 +- .../gsqlparser/mdxTest}/testTokenlizer.java | 2 +- .../mdxTest}/testWithMeasureInSelect.java | 2 +- .../mssqlTest}/testAlterDatabase.java | 50 +- .../gsqlparser/mssqlTest}/testAlterTable.java | 334 +- .../gsqlparser/mssqlTest}/testAssignment.java | 106 +- .../gsqlparser/mssqlTest}/testCallTarget.java | 128 +- .../mssqlTest}/testContainsFunction.java | 2 +- .../mssqlTest}/testCopyIntoStmt.java | 2 +- .../mssqlTest}/testCreateCredential.java | 2 +- .../mssqlTest}/testCreateDatabase.java | 70 +- .../mssqlTest}/testCreateEventSession.java | 58 +- .../testCreateExternalDataSource.java | 100 +- .../testCreateExternalLanguage.java | 42 +- .../mssqlTest}/testCreateIndex.java | 2 +- .../mssqlTest}/testCreateMasterKey.java | 2 +- .../mssqlTest}/testCreateProcedureOption.java | 790 ++-- .../mssqlTest}/testCreateTrigger.java | 2 +- .../gsqlparser/mssqlTest}/testDatatype.java | 2 +- .../mssqlTest}/testDeclareBlock.java | 2 +- .../mssqlTest}/testDeclareCursor.java | 2 +- .../gsqlparser/mssqlTest}/testDistinct.java | 2 +- .../mssqlTest}/testDropDBObject.java | 63 +- .../mssqlTest}/testExecuteOption.java | 2 +- .../mssqlTest}/testExternalTable.java | 3 +- .../gsqlparser/mssqlTest}/testFileFormat.java | 2 +- .../gsqlparser/mssqlTest}/testOpenjson.java | 242 +- .../mssqlTest}/testOutputClause.java | 2 +- .../gsqlparser/mssqlTest}/testPivot.java | 2 +- .../mssqlTest}/testQualifiedName.java | 2 +- .../gsqlparser/mssqlTest}/testSyntaxHint.java | 6 +- .../gsqlparser/mssqlTest}/testTableHint.java | 3 +- .../gsqlparser/mssqlTest}/testThrow.java | 2 +- .../gsqlparser/mssqlTest}/testUse.java | 2 +- .../mssqlTest}/testXMLfunction.java | 104 +- .../gsqlparser/mysqlTest}/testCall.java | 2 +- .../gsqlparser/mysqlTest}/testComment.java | 3 +- .../mysqlTest}/testCreateFucntion.java | 2 +- .../mysqlTest}/testCreateTable.java | 2 +- .../gsqlparser/mysqlTest}/testDatatype.java | 2 +- .../gsqlparser/mysqlTest}/testDate.java | 2 +- .../gsqlparser/mysqlTest}/testDecimalDot.java | 120 +- .../gsqlparser/mysqlTest}/testDelete.java | 64 +- .../gsqlparser/mysqlTest}/testDescribe.java | 2 +- .../gsqlparser/mysqlTest}/testDropTable.java | 48 +- .../gsqlparser/mysqlTest}/testExecute.java | 2 +- .../mysqlTest}/testFromTableList.java | 2 +- .../gsqlparser/mysqlTest}/testGetTable.java | 2 +- .../gsqlparser/mysqlTest}/testIdentifier.java | 40 +- .../mysqlTest}/testIndexStorageType.java | 2 +- .../gsqlparser/mysqlTest}/testIndexType.java | 2 +- .../mysqlTest}/testInsertIgnore.java | 3 +- .../mysqlTest}/testIntDisplayLength.java | 2 +- .../mysqlTest}/testLeftRightShift.java | 2 +- .../mysqlTest}/testLimitClause.java | 2 +- .../mysqlTest}/testNullEncoded.java | 48 +- .../mysqlTest}/testOnDuplicateUpdate.java | 2 +- .../mysqlTest}/testPrepareStmt.java | 64 +- .../mysqlTest}/testQuoteInLiteral.java | 2 +- .../mysqlTest}/testRollupModifier.java | 2 +- .../mysqlTest}/testSPParameter.java | 2 +- .../mysqlTest}/testSelectModifier.java | 44 +- .../gsqlparser/mysqlTest}/testSet.java | 2 +- .../gsqlparser/mysqlTest}/testShowIndex.java | 2 +- .../mysqlTest}/testTimestampOnUpdate.java | 2 +- .../mysqlTest}/testTruncateTable.java | 2 +- .../mysqlTest}/testUpdateTargetTable.java | 84 +- .../mysqlTest}/testUseDatabase.java | 2 +- .../netezzaTest}/testAlterTable.java | 2 +- .../netezzaTest}/testCTEInCreateView.java | 2 +- .../netezzaTest}/testCTEInInsert.java | 3 +- .../netezzaTest}/testCreateExternalTable.java | 48 +- .../netezzaTest}/testCreateProcedure.java | 130 +- .../netezzaTest}/testDropSchema.java | 2 +- .../netezzaTest}/testExternalTableOption.java | 2 +- .../netezzaTest}/testGenerateStatistics.java | 2 +- .../netezzaTest}/testGroomTable.java | 2 +- .../netezzaTest}/testMinusSetToString.java | 2 +- .../testSelectFromExternalTable.java | 2 +- .../netezzaTest}/testSetCatalogStmt.java | 2 +- .../netezzaTest}/testSetSchemaStmt.java | 2 +- .../testAlterMaterializedView.java | 2 +- .../oracleTest}/testAlterTable.java | 2 +- .../oracleTest}/testAlterTrigger.java | 2 +- .../gsqlparser/oracleTest}/testCall.java | 2 +- .../gsqlparser/oracleTest}/testCallSpec.java | 2 +- .../gsqlparser/oracleTest}/testCommentOn.java | 2 +- .../oracleTest}/testCompoundTrigger.java | 258 +- .../oracleTest}/testCreateFunction.java | 2 +- .../oracleTest}/testCreateLibrary.java | 2 +- .../testCreateMaterializedView.java | 2 +- .../oracleTest}/testCreatePackage.java | 4 +- .../testCreateTableResultCache.java | 2 +- .../oracleTest}/testCreateView.java | 2 +- .../oracleTest}/testDatabaseLink.java | 3 +- .../gsqlparser/oracleTest}/testDatatype.java | 2 +- .../oracleTest}/testErrorLoggingClause.java | 2 +- .../oracleTest}/testExecImmediate.java | 2 +- .../oracleTest}/testExecuteProcedure.java | 2 +- .../oracleTest}/testExplainPlan.java | 3 +- .../oracleTest}/testGetRawstatements.java | 58 +- .../gsqlparser/oracleTest}/testInExpr.java | 2 +- .../oracleTest}/testInsertMultiTable.java | 2 +- .../oracleTest}/testInvokerRights.java | 2 +- .../oracleTest}/testListAggOverflow.java | 82 +- .../oracleTest}/testMaterializedView.java | 2 +- .../oracleTest}/testMergeInPlsql.java | 2 +- .../oracleTest}/testMethodCall.java | 3 +- .../oracleTest}/testNamedParameter.java | 2 +- .../oracleTest}/testNaturalJoin.java | 2 +- .../oracleTest}/testNewConstructor.java | 2 +- .../oracleTest}/testObjectAccess.java | 2 +- .../oracleTest}/testOffsetClause.java | 2 +- .../gsqlparser/oracleTest}/testPivot.java | 2 +- .../oracleTest}/testRDBMSPackageCall.java | 2 +- .../oracleTest}/testRestrictionClause.java | 2 +- .../gsqlparser/oracleTest}/testSequence.java | 58 +- .../gsqlparser/oracleTest}/testSynonym.java | 2 +- .../oracleTest}/testVariableInProc.java | 2 +- .../oracleTest}/testXMLFunction.java | 168 +- .../gsqlparser/oracleTest}/testXMLTable.java | 82 +- .../oracleTest}/testplsqldatatype.java | 2 +- .../GeneralSqlParserTeradataTest.jav_ | 0 .../testPartialParseCreateTable.java | 2 +- .../testBuiltinFunctions.java | 9 +- .../testInterpreterBase.java | 2 +- .../plsqlInterpreterTest}/testPostgres.java | 9 +- .../plsqlInterpreterTest}/testRedshift.java | 2 +- .../testTestPutline.java | 9 +- .../testAggregateExpressions.java | 2 +- .../postgresqlTest}/testAlterFunction.java | 2 +- .../postgresqlTest}/testAlterTable.java | 3 +- .../postgresqlTest}/testArrayConstructor.java | 2 +- .../gsqlparser/postgresqlTest}/testCTE.java | 2 +- .../testCollationExpression.java | 2 +- .../postgresqlTest}/testConstant.java | 2 +- .../postgresqlTest}/testCreateExtension.java | 2 +- .../postgresqlTest}/testCreateFunction.java | 479 +-- .../postgresqlTest}/testCreateFunction2.java | 59 +- .../postgresqlTest}/testCreateIndex.java | 2 +- .../postgresqlTest}/testCreateProcedure.java | 135 +- .../postgresqlTest}/testCreateTrigger.java | 2 +- .../postgresqlTest}/testCreateView.java | 2 +- .../postgresqlTest}/testDatatype.java | 302 +- .../postgresqlTest}/testDeleteStmt.java | 2 +- .../gsqlparser/postgresqlTest}/testDrop.java | 2 +- .../postgresqlTest}/testDropTable.java | 2 +- .../postgresqlTest}/testFieldSelection.java | 2 +- .../postgresqlTest}/testFunctionCall.java | 2 +- .../gsqlparser/postgresqlTest}/testJSON.java | 2 +- .../postgresqlTest}/testLimitOffset.java | 2 +- .../postgresqlTest}/testLockingClause.java | 2 +- .../testMathematicalOperator.java | 2 +- .../postgresqlTest}/testPlpgsql_assign.java | 2 +- .../postgresqlTest}/testPlpgsql_block.java | 2 +- .../postgresqlTest}/testPlpgsql_case.java | 2 +- .../postgresqlTest}/testPlpgsql_close.java | 2 +- .../testPlpgsql_declarestmt.java | 2 +- .../postgresqlTest}/testPlpgsql_delete.java | 2 +- .../testPlpgsql_exception.java | 2 +- .../postgresqlTest}/testPlpgsql_execute.java | 2 +- .../postgresqlTest}/testPlpgsql_exit.java | 2 +- .../postgresqlTest}/testPlpgsql_fetch.java | 2 +- .../postgresqlTest}/testPlpgsql_forLoop.java | 194 +- .../postgresqlTest}/testPlpgsql_foreach.java | 2 +- .../postgresqlTest}/testPlpgsql_getdiag.java | 2 +- .../postgresqlTest}/testPlpgsql_if.java | 2 +- .../postgresqlTest}/testPlpgsql_insert.java | 3 +- .../postgresqlTest}/testPlpgsql_label.java | 90 +- .../postgresqlTest}/testPlpgsql_loop.java | 2 +- .../postgresqlTest}/testPlpgsql_move.java | 2 +- .../postgresqlTest}/testPlpgsql_null.java | 2 +- .../postgresqlTest}/testPlpgsql_open.java | 2 +- .../postgresqlTest}/testPlpgsql_openfor.java | 2 +- .../postgresqlTest}/testPlpgsql_raise.java | 2 +- .../postgresqlTest}/testPlpgsql_return.java | 2 +- .../postgresqlTest}/testPlpgsql_update.java | 2 +- .../postgresqlTest}/testPlpgsql_while.java | 2 +- .../postgresqlTest}/testReindex.java | 56 +- .../postgresqlTest}/testRowConstructor.java | 2 +- .../postgresqlTest}/testSYMMETRIC.java | 2 +- .../postgresqlTest}/testSchema.java | 2 +- .../postgresqlTest}/testSetSearchPath.java | 2 +- .../postgresqlTest}/testSetVariable.java | 2 +- .../postgresqlTest}/testStringConcate.java | 2 +- .../postgresqlTest}/testSubscript.java | 2 +- .../postgresqlTest}/testTableStmt.java | 2 +- .../postgresqlTest}/testTruncate.java | 2 +- .../postgresqlTest}/testUpdateStmt.java | 2 +- .../postgresqlTest}/testVacuum.java | 75 +- .../testValueListInFromClause.java | 2 +- .../postgresqlTest}/testWindowClause.java | 2 +- .../postgresqlTest}/testWindowFunctions.java | 2 +- .../prestoTest}/testCreateTableLike.java | 2 +- .../gsqlparser/prestoTest}/testExplain.java | 2 +- .../gsqlparser/prestoTest}/testPrepare.java | 3 +- .../gsqlparser/prestoTest}/testUnnest.java | 2 +- .../redshiftTest}/TestCreateFunction.java | 188 +- .../redshiftTest}/TestCreateProcedure.java | 262 +- .../redshiftTest}/testAlterDatabase.java | 2 +- .../redshiftTest}/testAlterGroup.java | 2 +- .../redshiftTest}/testAlterSchema.java | 2 +- .../redshiftTest}/testAlterTable.java | 2 +- .../redshiftTest}/testAlterUser.java | 2 +- .../gsqlparser/redshiftTest}/testAnalyze.java | 2 +- .../redshiftTest}/testAnalyzeCompression.java | 2 +- .../gsqlparser/redshiftTest}/testCancel.java | 2 +- .../gsqlparser/redshiftTest}/testClose.java | 3 +- .../gsqlparser/redshiftTest}/testComment.java | 2 +- .../gsqlparser/redshiftTest}/testCopy.java | 2 +- .../redshiftTest}/testCreateDatabase.java | 2 +- .../redshiftTest}/testCreateGroup.java | 2 +- .../redshiftTest}/testCreateSchema.java | 3 +- .../redshiftTest}/testCreateTable.java | 2 +- .../redshiftTest}/testCreateUser.java | 2 +- .../redshiftTest}/testCreateView.java | 2 +- .../redshiftTest}/testDeallocate.java | 2 +- .../gsqlparser/redshiftTest}/testDeclare.java | 2 +- .../gsqlparser/redshiftTest}/testDelete.java | 2 +- .../redshiftTest}/testDropDatabase.java | 2 +- .../redshiftTest}/testDropGroup.java | 2 +- .../redshiftTest}/testDropSchema.java | 2 +- .../redshiftTest}/testDropTable.java | 2 +- .../redshiftTest}/testDropUser.java | 2 +- .../redshiftTest}/testDropView.java | 2 +- .../gsqlparser/redshiftTest}/testExecute.java | 2 +- .../gsqlparser/redshiftTest}/testExplain.java | 2 +- .../redshiftTest}/testExpression.java | 2 +- .../redshiftTest}/testFetchFrom.java | 2 +- .../gsqlparser/redshiftTest}/testLock.java | 3 +- .../gsqlparser/redshiftTest}/testPrepare.java | 2 +- .../gsqlparser/redshiftTest}/testUnload.java | 2 +- .../gsqlparser/redshiftTest}/testVaccum.java | 2 +- .../testRemoveCondition.java | 392 +- .../testRemoveSpecialConditions.java | 6 +- .../scriptWriterTest}/testColumnAlias.java | 2 +- .../scriptWriterTest}/testCreateNode.java | 3580 ++++++++--------- .../scriptWriterTest}/testDatabricks.java | 2 +- .../scriptWriterTest}/testGenerator.java | 4 +- .../scriptWriterTest}/testModifyExpr.java | 584 +-- .../scriptWriterTest}/testModifyPGSP.java | 2 +- .../scriptWriterTest}/testModifySql.java | 2238 +++++------ .../scriptWriterTest}/testMySQL.java | 252 +- .../scriptWriterTest}/testOracle.java | 2 +- .../scriptWriterTest}/testOracleDataType.java | 2 +- .../scriptWriterTest}/testSQLServer.java | 2 +- .../testSQLServerDataType.java | 2 +- .../testScriptGenerator.java | 2718 ++++++------- .../scriptWriterTest}/testSnowflake.java | 2 +- .../scriptWriterTest}/testTimeStampExpr.java | 2 +- .../testSingletonThread.java | 2 +- .../snowflakeTest}/TestAlterTable.java | 98 +- .../snowflakeTest}/TestCreateProcedure.java | 366 +- .../snowflakeTest}/testAlterSchema.java | 2 +- .../snowflakeTest}/testAlterTask.java | 2 +- .../gsqlparser/snowflakeTest}/testCall.java | 42 +- .../snowflakeTest}/testClusterBy.java | 3 +- .../snowflakeTest}/testCopyInto.java | 296 +- .../testCreateExternalTable.java | 256 +- .../snowflakeTest}/testCreateFileFormat.java | 74 +- .../snowflakeTest}/testCreateFunction.java | 306 +- .../testCreateMaterializeView.java | 44 +- .../snowflakeTest}/testCreateStage.java | 200 +- .../snowflakeTest}/testCreateStream.java | 60 +- .../snowflakeTest}/testCreateTask.java | 2 +- .../snowflakeTest}/testCreateView.java | 459 ++- .../snowflakeTest}/testCreateWarehouse.java | 44 +- .../gsqlparser/snowflakeTest}/testDesc.java | 40 +- .../gsqlparser/snowflakeTest}/testInsert.java | 2 +- .../snowflakeTest}/testLateralColumn.java | 5 +- .../gsqlparser/snowflakeTest}/testPut.java | 42 +- ...testQueryWithoutIntermediateRecordSet.java | 5 +- .../snowflakeTest}/testSetStmt.java | 2 +- .../gsqlparser/snowflakeTest}/testStage.java | 2 +- .../snowflakeTest}/testSubqueryFunction.java | 2 +- .../snowflakeTest}/testUseWarehouse.java | 36 +- .../snowflakeTest}/testVaraible.java | 2 +- .../sparksqlTest}/testInsertOverwrite.java | 56 +- .../sparksqlTest}/testLateralView.java | 2 +- .../gsqlparser/sqlFilesTest}/parseTest.java | 149 +- .../sqlFilesTest/testAthenaFiles.java | 15 + .../sqlFilesTest/testBigQueryFiles.java | 16 + .../sqlFilesTest/testCouchbaeFiles.java | 16 + .../gsqlparser/sqlFilesTest/testDB2Files.java | 15 + .../sqlFilesTest/testDatabricksFiles.java | 12 + .../sqlFilesTest/testGaussDBFiles.java | 14 + .../sqlFilesTest/testGreenplumFiles.java | 14 + .../sqlFilesTest/testHanaFiles.java | 14 + .../sqlFilesTest/testHiveFiles.java | 16 + .../sqlFilesTest/testImpalaFiles.java | 13 + .../sqlFilesTest/testInformixFiles.java | 12 + .../gsqlparser/sqlFilesTest/testMDXFiles.java | 15 + .../sqlFilesTest}/testMySQLFiles.java | 46 +- .../sqlFilesTest/testNetezzaFiles.java | 17 + .../sqlFilesTest/testODBCFiles.java | 12 + .../sqlFilesTest/testOpenedgeFiles.java | 13 + .../sqlFilesTest}/testOracleFiles.java | 30 +- .../sqlFilesTest}/testPostgreSQLFiles.java | 30 +- .../sqlFilesTest/testPrestoFiles.java | 11 + .../sqlFilesTest/testRedshiftFiles.java | 14 + .../sqlFilesTest/testSOQLFiles.java | 11 + .../sqlFilesTest}/testSQLServerFiles.java | 33 +- .../sqlFilesTest/testSnowflakeFiles.java | 14 + .../sqlFilesTest/testSparksqlFiles.java | 13 + .../sqlFilesTest/testSybaseFiles.java | 14 + .../sqlFilesTest/testTeradataFiles.java | 16 + .../sqlFilesTest/testVerticaFiles.java | 14 + .../gsqlparser/sqlenvTest}/TJSONSQLEnv.java | 589 +-- .../sqlenvTest}/testHelpFunctions.java | 2 +- .../sqlenvTest}/testHiveSQLEnv.java | 6 +- .../gsqlparser/sqlenvTest}/testJSONEnv.java | 211 +- .../sybaseTest}/testColumnName.java | 2 +- .../sybaseTest}/testCreateProcedure.java | 2 +- .../sybaseTest}/testCreateTable.java | 2 +- .../sybaseTest}/testDeleteStatistics.java | 2 +- .../gsqlparser/sybaseTest}/testDumpTran.java | 2 +- .../sybaseTest}/testExecWithNoKeyword.java | 2 +- .../sybaseTest}/testFunctionTable.java | 2 +- .../gsqlparser/sybaseTest}/testHint.java | 2 +- .../sybaseTest}/testInsertBulk.java | 2 +- .../gsqlparser/sybaseTest}/testIsolation.java | 2 +- .../sybaseTest}/testPartialParsing.java | 2 +- .../gsqlparser/sybaseTest}/testWritetext.java | 2 +- .../teradataTest}/testAlterConstraint.java | 2 +- .../teradataTest}/testAlterProcedure.java | 2 +- .../testAlterTableAddColumns.java | 56 +- .../teradataTest}/testAlterZone.java | 2 +- .../teradataTest}/testAnalyticFunction.java | 64 +- .../gsqlparser/teradataTest}/testBTEQ.java | 2 +- .../teradataTest}/testBeginTrans.java | 36 +- .../teradataTest}/testCastDate.java | 188 +- .../teradataTest}/testCheckSourceColumn.java | 3 +- .../teradataTest}/testCollectStatistics.java | 118 +- .../teradataTest}/testCreateProcedure.java | 930 ++--- .../teradataTest}/testCreateTable.java | 340 +- .../testCreateTableWithDataIndex.java | 3 +- .../teradataTest}/testCreateTrigger.java | 350 +- .../teradataTest}/testDataConversion.java | 2 +- .../teradataTest}/testDateFunction.java | 66 +- .../teradataTest}/testDropConstraint.java | 2 +- .../teradataTest}/testExecuteMacro.java | 86 +- .../teradataTest}/testExpandOn.java | 50 +- .../teradataTest}/testExprType.java | 104 +- .../teradataTest}/testExprWithAlias.java | 112 +- .../teradataTest}/testFastExportCmd.java | 2 +- .../testFunctionINResultColumn.java | 114 +- .../teradataTest}/testGetDiagnostics.java | 79 +- .../teradataTest}/testGetRawStatement.java | 62 +- .../teradataTest}/testGetTableName.java | 46 +- .../gsqlparser/teradataTest}/testGive.java | 44 +- .../gsqlparser/teradataTest}/testGroupBy.java | 181 +- .../testIntervalPeriodFunction.java | 68 +- .../gsqlparser/teradataTest}/testJoins.java | 128 +- .../gsqlparser/teradataTest}/testLiteral.java | 36 +- .../gsqlparser/teradataTest}/testLock.java | 160 +- .../gsqlparser/teradataTest}/testMacro.java | 78 +- .../gsqlparser/teradataTest}/testMerge.java | 76 +- .../teradataTest}/testNamedColumn.java | 274 +- .../teradataTest}/testNormalize.java | 2 +- .../teradataTest}/testQualifyClause.java | 74 +- .../teradataTest}/testRenameTable.java | 48 +- .../teradataTest}/testResultColumn.java | 122 +- .../teradataTest}/testSelectConsume.java | 36 +- .../teradataTest}/testSetSession.java | 2 +- .../testSubqueryInOnCondition.java | 200 +- .../testTableAliasOfSubquery.java | 2 +- .../testTeradataCaseExpression.java | 39 +- .../testTeradataGetRawStatements.java | 648 +-- .../teradataTest}/testTeradataLiteral.java | 234 +- .../testTeradataOutputFormatPhrase.java | 238 +- .../teradataTest}/testTeradataTokenize.java | 112 +- .../teradataTest}/testTeradataWithClause.java | 74 +- .../gsqlparser/teradataTest}/testTitle.java | 58 +- .../teradataTest}/testUntilChanged.java | 62 +- .../gsqlparser/teradataTest}/testUpsert.java | 48 +- .../gsqlparser/teradataTest}/testUsing.java | 119 +- .../teradataTest}/testWithCheckOption.java | 68 +- .../gsqlparser/usersTest}/testBuindQuery.java | 2 +- .../gsqlparser/verticaTest}/testProfile.java | 2 +- .../java/testSQLFiles/testAthenaFiles.java | 17 - .../java/testSQLFiles/testBigQueryFiles.java | 18 - .../java/testSQLFiles/testCouchbaeFiles.java | 15 - src/test/java/testSQLFiles/testDB2Files.java | 17 - .../testSQLFiles/testDatabricksFiles.java | 14 - .../java/testSQLFiles/testGaussDBFiles.java | 16 - .../java/testSQLFiles/testGreenplumFiles.java | 16 - src/test/java/testSQLFiles/testHanaFiles.java | 16 - src/test/java/testSQLFiles/testHiveFiles.java | 18 - .../java/testSQLFiles/testImpalaFiles.java | 15 - .../java/testSQLFiles/testInformixFiles.java | 14 - src/test/java/testSQLFiles/testMDXFiles.java | 16 - .../java/testSQLFiles/testNetezzaFiles.java | 19 - src/test/java/testSQLFiles/testODBCFiles.java | 13 - .../java/testSQLFiles/testOpenedgeFiles.java | 14 - .../java/testSQLFiles/testPrestoFiles.java | 12 - .../java/testSQLFiles/testRedshiftFiles.java | 16 - src/test/java/testSQLFiles/testSOQLFiles.java | 13 - .../java/testSQLFiles/testSnowflakeFiles.java | 16 - .../java/testSQLFiles/testSparksqlFiles.java | 15 - .../java/testSQLFiles/testSybaseFiles.java | 15 - .../java/testSQLFiles/testTeradataFiles.java | 17 - .../java/testSQLFiles/testVerticaFiles.java | 15 - 733 files changed, 22528 insertions(+), 22655 deletions(-) delete mode 100644 src/test/java/dlineage/testColumnLevelLineageFile.java rename src/test/java/{visitor/acceptChildren => gudusoft/gsqlparser/acceptChildrenTest}/TestAcceptChildren.java (98%) rename src/test/java/{visitor/acceptChildren => gudusoft/gsqlparser/acceptChildrenTest}/readme.md (100%) rename src/test/java/{antiSQLInjection => gudusoft/gsqlparser/antiSQLInjectionTest}/antiSQLInjectionBatchTest.java (98%) rename src/test/java/{antiSQLInjection => gudusoft/gsqlparser/antiSQLInjectionTest}/antiSQLInjectionTest.java (99%) rename src/test/java/{athena => gudusoft/gsqlparser/athenaTest}/testCreateExternal.java (99%) rename src/test/java/{athena => gudusoft/gsqlparser/athenaTest}/testExplain.java (97%) rename src/test/java/{athena => gudusoft/gsqlparser/athenaTest}/testUnloadStmt.java (81%) rename src/test/java/{bigquery => gudusoft/gsqlparser/bigqueryTest}/testBacktick.java (99%) rename src/test/java/{bigquery => gudusoft/gsqlparser/bigqueryTest}/testCheckSourceColumn.java (98%) rename src/test/java/{bigquery => gudusoft/gsqlparser/bigqueryTest}/testCreateExternalTable.java (99%) rename src/test/java/{bigquery => gudusoft/gsqlparser/bigqueryTest}/testCreateFunction.java (96%) rename src/test/java/{bigquery => gudusoft/gsqlparser/bigqueryTest}/testCreateProcedure.java (97%) rename src/test/java/{bigquery => gudusoft/gsqlparser/bigqueryTest}/testCreateTable.java (95%) rename src/test/java/{bigquery => gudusoft/gsqlparser/bigqueryTest}/testCreateTableFunction.java (98%) rename src/test/java/{bigquery => gudusoft/gsqlparser/bigqueryTest}/testDeclare.java (96%) rename src/test/java/{bigquery => gudusoft/gsqlparser/bigqueryTest}/testIdentifier.java (99%) rename src/test/java/{bigquery => gudusoft/gsqlparser/bigqueryTest}/testLegacySQL.java (99%) rename src/test/java/{test => gudusoft/gsqlparser/commonTest}/ColumnImpactTest.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/FileUtil.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/SqlFileList.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/gspCommon.java (80%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/helloTest.java (94%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/metaDB.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testAcceptChildren.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testAggregateFunction.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testAlias.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testAlterTable.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testAlterView.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testAsCanonical.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testBigline.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCTE.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCall.java (90%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCharacters.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testColumnDefinition.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testComment.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCommentOn.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testConnect.java (90%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testConstraint.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCoordinates.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCreateDatabase.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCreateFunction.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCreateIndex.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCreateSchema.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCreateSequenceStmt.java (94%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCreateSynonym.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCreateTable.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testCreateTableOption.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testDBVendor.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testDatatype.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testDeleteStmt.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testDistributeBy.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testDropDatabase.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testDropIndex.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testDropSchema.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testDropTable.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testEmptyInput.java (90%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testExceptionClause.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testExecImmeStmt.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testExplain.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testExprTraverse.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testExpression.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testFakeConstraint.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testFunction.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testFunctionCall.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testGetCommentBeforeStmt.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testGetTables.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testGroupBy.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testHint.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testIdentifierCase.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testInsertStatement.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testJoins.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testJoins_using_tjoinexpr.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testLargeColumnList.java (85%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testLargeUnion.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testLateralView.java (93%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testLicense.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testLimitClause.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testLockTable.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testLongStatement.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testMd5.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testMerge.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testMetaDB.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testModifyExpr.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testModifySql.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testMssqlExecute.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testMssqlFunction.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testMssqlIf.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testMssqlProcedure.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testMssqlRaiserror.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testMssqlTrigger.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testNotModifier.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testODBC.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testObjectName.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testObjectNameAnsi.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testObjectNameLocation.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testOffset.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testOperator.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testPLSQLCallSpec.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testPartitonedBy.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testPivotClause.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testQualifiedVariable.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testRenameTable.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testResultColumn.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testSequence.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testSetSchema.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testSpecialCharacter.java (93%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testSqlserverProprietaryColumn.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testStatementList.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testStmtDelimiter.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testSubquery.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testSyntaxError.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTCreateSynonymStmt.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTCreateTableSqlStatement.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTCreateViewSqlStatement.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTDeclareVariable.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTDeleteSqlStatement.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTDropIndexSqlStatement.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTFunctionCall.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTInsertSqlStatement.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTMssqlCreateFunction.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTMssqlExecute.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTMssqlSet.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTMssqlTruncateTable.java (93%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTObjectName.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTOracleCommentOnSqlStmt.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTOracleCreateDirectoryStmt.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTOrderByItem.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTPlsqlLoopStmt.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTSampleClause.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTSelectSqlStatement.java (99%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTSourceToken.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTUpdateSqlStatement.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTableNull.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTmp.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testToString.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testToken.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testTruncateTable.java (95%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testUTF8.java (92%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testUse.java (93%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testVariableDeclare.java (98%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testVendorBuiltInFunctionAndKeywords.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testWarningMessage.java (96%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testWhereClause.java (94%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testXML.java (97%) rename src/test/java/{common => gudusoft/gsqlparser/commonTest}/testXmlXSD.java (99%) rename src/test/java/{couchbase => gudusoft/gsqlparser/couchbaseTest}/testCreateIndex.java (96%) rename src/test/java/{couchbase => gudusoft/gsqlparser/couchbaseTest}/testExplain.java (98%) rename src/test/java/{couchbase => gudusoft/gsqlparser/couchbaseTest}/testInfer.java (97%) rename src/test/java/{couchbase => gudusoft/gsqlparser/couchbaseTest}/testInsert.java (98%) rename src/test/java/{couchbase => gudusoft/gsqlparser/couchbaseTest}/testUpsert.java (97%) rename src/test/java/{ => gudusoft/gsqlparser/customerTest}/dag/testBuiltInFucntion.java (98%) rename src/test/java/{ => gudusoft/gsqlparser/customerTest}/dag/testKeepKeyword.java (92%) rename src/test/java/{ => gudusoft/gsqlparser/customerTest}/dag/testMultiSetOperator.java (91%) rename src/test/java/{ => gudusoft/gsqlparser/customerTest}/noetix/testViewAlias.java (99%) rename src/test/java/{ => gudusoft/gsqlparser/customerTest}/panayainc/testGroupByItemWithParenthesis.java (97%) rename src/test/java/{ => gudusoft/gsqlparser/customerTest}/panayainc/testLabelName.java (97%) rename src/test/java/{ => gudusoft/gsqlparser/customerTest}/panayainc/testOracleCustomPackage.java (65%) rename src/test/java/{ => gudusoft/gsqlparser/customerTest}/panayainc/testProcedureInnerStmt.java (96%) rename src/test/java/{ => gudusoft/gsqlparser/customerTest}/panayainc/testUnionWithParenthesis.java (98%) rename src/test/java/{cversion => gudusoft/gsqlparser/cversionTest}/testFileNumbers.java (83%) rename src/test/java/{databricks => gudusoft/gsqlparser/databricksTest}/testDatatypeCast.java (95%) rename src/test/java/{databricks => gudusoft/gsqlparser/databricksTest}/testJsonPathExpression.java (99%) rename src/test/java/{databricks => gudusoft/gsqlparser/databricksTest}/testStruct.java (97%) rename src/test/java/{databricks => gudusoft/gsqlparser/databricksTest}/testUse.java (98%) rename src/test/java/{dataflow => gudusoft/gsqlparser/dataflowTest}/test3360.java (94%) rename src/test/java/{dataflow => gudusoft/gsqlparser/dataflowTest}/testDataflow.java (96%) rename src/test/java/{dataflow => gudusoft/gsqlparser/dataflowTest}/testIAOX42.java (97%) rename src/test/java/{dataflow => gudusoft/gsqlparser/dataflowTest}/testIAQE4Y.java (96%) rename src/test/java/{dataflow => gudusoft/gsqlparser/dataflowTest}/testRelationProcess.java (97%) rename src/test/java/{dax => gudusoft/gsqlparser/daxTest}/testEvaluate.java (98%) rename src/test/java/{db2 => gudusoft/gsqlparser/db2Tesst}/testBlock.java (95%) rename src/test/java/{db2 => gudusoft/gsqlparser/db2Tesst}/testCall.java (91%) rename src/test/java/{db2 => gudusoft/gsqlparser/db2Tesst}/testCreateDatabase.java (95%) rename src/test/java/{db2 => gudusoft/gsqlparser/db2Tesst}/testCreateProcedure.java (98%) rename src/test/java/{db2 => gudusoft/gsqlparser/db2Tesst}/testCreateTablespace.java (94%) rename src/test/java/{db2 => gudusoft/gsqlparser/db2Tesst}/testCreateVariable.java (95%) rename src/test/java/{db2 => gudusoft/gsqlparser/db2Tesst}/testIdentifier.java (88%) rename src/test/java/{db2 => gudusoft/gsqlparser/db2Tesst}/testLabeledDuration.java (96%) rename src/test/java/{db2 => gudusoft/gsqlparser/db2Tesst}/testParameter.java (93%) rename src/test/java/{db2 => gudusoft/gsqlparser/db2Tesst}/testWithCheckOption.java (96%) rename src/test/java/{demos => gudusoft/gsqlparser/demosTest}/SqlTranslatorTest.java (98%) rename src/test/java/{demos => gudusoft/gsqlparser/demosTest}/analyzespTest.java (96%) rename src/test/java/{demos => gudusoft/gsqlparser/demosTest}/removeCondition/testRemoveCondition.java (96%) rename src/test/java/{demos => gudusoft/gsqlparser/demosTest}/traceDataLineageTest.java (96%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/bigquery/testBigQuery.java (92%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/bigquery/testConcatFunction.java (97%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/bigquery/testCreateView.java (98%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/bigquery/testExcept.java (88%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/bigquery/testReplace.java (98%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/bigquery/testStruct.java (97%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/bigquery/testStructConstant.java (95%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/bigquery/testUnnest.java (97%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/oracle/testDBLink.java (92%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/oracle/testSchema.java (94%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/oracle/testTransitions.java (71%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/postgresql/testProcedure.java (93%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/readme.md (98%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/snowflake/testStructConstant.java (98%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/solidatus/testDBLink.java (98%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/solidatus/testStarColumn.java (99%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/teradata/testTeradata.java (90%) create mode 100644 src/test/java/gudusoft/gsqlparser/dlineageTest/testColumnLevelLineageFile.java rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/testMultpleSqlFiles.java (94%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/testSimpleSql.java (98%) rename src/test/java/{dlineage => gudusoft/gsqlparser/dlineageTest}/test_IALOHN.java (95%) rename src/test/java/{dynamicsql => gudusoft/gsqlparser/dynamicsqlTest}/testPLSQLExecImmediateByVisitor.java (99%) rename src/test/java/{dynamicsql => gudusoft/gsqlparser/dynamicsqlTest}/testSQLServerCreateProcedureExec.java (99%) rename src/test/java/{dynamicsql => gudusoft/gsqlparser/dynamicsqlTest}/testSQLServerExec.java (99%) rename src/test/java/{erdiagram => gudusoft/gsqlparser/erdiagramTest}/testMsSQL.java (81%) rename src/test/java/{erdiagram => gudusoft/gsqlparser/erdiagramTest}/testMySQL.java (82%) rename src/test/java/{erdiagram => gudusoft/gsqlparser/erdiagramTest}/testOracle.java (84%) rename src/test/java/{erdiagram => gudusoft/gsqlparser/erdiagramTest}/testPostgres.java (85%) rename src/test/java/{errorsql => gudusoft/gsqlparser/errorsqlTest}/testCreateIndex.java (96%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/formatsqlTest.java (96%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/formatsqlVerifyTest.java (94%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testAlignAliasInSelectList.java (98%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testAlignment.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testBlankLines.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testCTE.java (97%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testCapitalisation.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testCaseExpression.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testComment.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testCompactMode.java (97%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testCreateFunctionProcedure.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testCreateTable.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testDeclare.java (96%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testExecute.java (96%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testFromClause.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testFunctionCall.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testGroupByClause.java (98%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testIndentation.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testInsertList.java (98%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testIntoClause.java (96%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testIssues.java (98%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testLineNumber.java (96%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testOracleCreateView.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testOrderByClause.java (98%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testPlsql1.java (98%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testSelectList.java (99%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testWhereClause.java (97%) rename src/test/java/{formatsql => gudusoft/gsqlparser/formatsqlTest}/testWhitespace.java (99%) rename src/test/java/{gaussdb => gudusoft/gsqlparser/gaussdbTest}/testDeclareCursorSingleStmt.java (96%) rename src/test/java/{gaussdb => gudusoft/gsqlparser/gaussdbTest}/testGetStmts.java (92%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/getObject.java (96%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testBigQuery.java (99%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testColumnResolver.java (99%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testDB2.java (98%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testDBObjectOfSourceToken.java (97%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testDaxFunction.java (99%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testDbObject.java (77%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testHive.java (98%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testMySQL.java (97%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testNetezza.java (96%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testNewTableColumn.java (97%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testOracle.java (97%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testPostgresql.java (96%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testPresto.java (98%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testRedshift.java (96%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testSQLEnv.java (97%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testSQLServer.java (97%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testSnowflake.java (97%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testSparkSQL.java (98%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testStarColumn.java (96%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testStarColumnInfile.java (97%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testTC1.java (95%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testTeradataGetTableColumns.java (99%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testTraceColumn.java (96%) rename src/test/java/{gettablecolumn => gudusoft/gsqlparser/gettablecolumnTest}/testUpdate.java (98%) rename src/test/java/{greenplum => gudusoft/gsqlparser/greenplumTest}/testAlterTable.java (97%) rename src/test/java/{greenplum => gudusoft/gsqlparser/greenplumTest}/testCreateExternalTable.java (99%) rename src/test/java/{greenplum => gudusoft/gsqlparser/greenplumTest}/testCreateFunction.java (97%) rename src/test/java/{greenplum => gudusoft/gsqlparser/greenplumTest}/testCreateTable.java (97%) rename src/test/java/{greenplum => gudusoft/gsqlparser/greenplumTest}/testDeclareBlock.java (80%) rename src/test/java/{greenplum => gudusoft/gsqlparser/greenplumTest}/testSetVariable.java (97%) rename src/test/java/{greenplum => gudusoft/gsqlparser/greenplumTest}/testValues.java (98%) rename src/test/java/{hana => gudusoft/gsqlparser/hanaTest}/testAlterProcedureAndFunction.java (97%) rename src/test/java/{hana => gudusoft/gsqlparser/hanaTest}/testCreateProcedure.java (89%) rename src/test/java/{hana => gudusoft/gsqlparser/hanaTest}/testLateral.java (95%) rename src/test/java/{hana => gudusoft/gsqlparser/hanaTest}/testUpsert.java (97%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testAlias.java (97%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testAlterTable.java (98%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testAnalyze.java (97%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testCTE.java (94%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testCastFunction.java (88%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testCreateFunction.java (95%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testCreateIndex.java (98%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testCreateTable.java (97%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testCreateView.java (96%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testDescribe.java (98%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testDropIndex.java (95%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testExplain.java (97%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testExportTable.java (98%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testFieldExpression.java (97%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testFromSelect.java (98%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testFunction.java (98%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testGetFullTableName.java (95%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testHint.java (96%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testIdentifierBacktick.java (97%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testImportTable.java (97%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testInsert.java (99%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testJoin.java (99%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testLateralView.java (97%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testLoad.java (98%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testParse.java (96%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testSampleClause.java (99%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testSelect.java (99%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testSet.java (98%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testShow.java (95%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testTimestamp.java (87%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testToString.java (96%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testUnion.java (97%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testWindowClause.java (99%) rename src/test/java/{hive => gudusoft/gsqlparser/hiveTest}/testlexer.java (99%) rename src/test/java/{impala => gudusoft/gsqlparser/impalaTest}/testSubquery.java (95%) rename src/test/java/{informix => gudusoft/gsqlparser/informixTest}/testAlterObject.java (93%) rename src/test/java/{informix => gudusoft/gsqlparser/informixTest}/testCreateProcedure.java (97%) rename src/test/java/{informix => gudusoft/gsqlparser/informixTest}/testDropObject.java (98%) rename src/test/java/{informix => gudusoft/gsqlparser/informixTest}/testOuterJoin.java (98%) rename src/test/java/{informix => gudusoft/gsqlparser/informixTest}/testRenameObject.java (96%) rename src/test/java/{informix => gudusoft/gsqlparser/informixTest}/testSkip.java (96%) rename src/test/java/{interfaceDemo => gudusoft/gsqlparser/interfaceDemoTest}/testITokenHandle.java (93%) rename src/test/java/{interfaceDemo => gudusoft/gsqlparser/interfaceDemoTest}/testIgnorePrompt.java (97%) rename src/test/java/{joinConvert => gudusoft/gsqlparser/joinConvertTest}/JoinConverterTest.java (99%) rename src/test/java/{mdx => gudusoft/gsqlparser/mdxTest}/testAlterCube.java (94%) rename src/test/java/{mdx => gudusoft/gsqlparser/mdxTest}/testCreateMeasure.java (97%) rename src/test/java/{mdx => gudusoft/gsqlparser/mdxTest}/testCreateMember.java (98%) rename src/test/java/{mdx => gudusoft/gsqlparser/mdxTest}/testIIF.java (96%) rename src/test/java/{mdx => gudusoft/gsqlparser/mdxTest}/testMembers.java (99%) rename src/test/java/{mdx => gudusoft/gsqlparser/mdxTest}/testRawStatements.java (93%) rename src/test/java/{mdx => gudusoft/gsqlparser/mdxTest}/testTokenlizer.java (99%) rename src/test/java/{mdx => gudusoft/gsqlparser/mdxTest}/testWithMeasureInSelect.java (97%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testAlterDatabase.java (95%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testAlterTable.java (98%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testAssignment.java (97%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testCallTarget.java (97%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testContainsFunction.java (96%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testCopyIntoStmt.java (98%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testCreateCredential.java (97%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testCreateDatabase.java (97%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testCreateEventSession.java (96%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testCreateExternalDataSource.java (97%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testCreateExternalLanguage.java (95%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testCreateIndex.java (97%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testCreateMasterKey.java (94%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testCreateProcedureOption.java (98%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testCreateTrigger.java (98%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testDatatype.java (97%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testDeclareBlock.java (97%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testDeclareCursor.java (96%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testDistinct.java (94%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testDropDBObject.java (91%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testExecuteOption.java (99%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testExternalTable.java (98%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testFileFormat.java (96%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testOpenjson.java (97%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testOutputClause.java (98%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testPivot.java (99%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testQualifiedName.java (97%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testSyntaxHint.java (86%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testTableHint.java (99%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testThrow.java (96%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testUse.java (93%) rename src/test/java/{mssql => gudusoft/gsqlparser/mssqlTest}/testXMLfunction.java (98%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testCall.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testComment.java (94%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testCreateFucntion.java (98%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testCreateTable.java (97%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testDatatype.java (98%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testDate.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testDecimalDot.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testDelete.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testDescribe.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testDropTable.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testExecute.java (93%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testFromTableList.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testGetTable.java (99%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testIdentifier.java (91%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testIndexStorageType.java (97%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testIndexType.java (98%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testInsertIgnore.java (90%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testIntDisplayLength.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testLeftRightShift.java (97%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testLimitClause.java (97%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testNullEncoded.java (97%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testOnDuplicateUpdate.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testPrepareStmt.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testQuoteInLiteral.java (98%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testRollupModifier.java (95%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testSPParameter.java (98%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testSelectModifier.java (95%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testSet.java (99%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testShowIndex.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testTimestampOnUpdate.java (97%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testTruncateTable.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testUpdateTargetTable.java (96%) rename src/test/java/{mysql => gudusoft/gsqlparser/mysqlTest}/testUseDatabase.java (93%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testAlterTable.java (97%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testCTEInCreateView.java (99%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testCTEInInsert.java (94%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testCreateExternalTable.java (96%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testCreateProcedure.java (97%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testDropSchema.java (95%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testExternalTableOption.java (99%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testGenerateStatistics.java (97%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testGroomTable.java (97%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testMinusSetToString.java (95%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testSelectFromExternalTable.java (97%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testSetCatalogStmt.java (93%) rename src/test/java/{netezza => gudusoft/gsqlparser/netezzaTest}/testSetSchemaStmt.java (93%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testAlterMaterializedView.java (94%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testAlterTable.java (98%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testAlterTrigger.java (95%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testCall.java (94%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testCallSpec.java (98%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testCommentOn.java (95%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testCompoundTrigger.java (96%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testCreateFunction.java (97%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testCreateLibrary.java (97%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testCreateMaterializedView.java (98%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testCreatePackage.java (94%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testCreateTableResultCache.java (97%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testCreateView.java (96%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testDatabaseLink.java (98%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testDatatype.java (97%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testErrorLoggingClause.java (96%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testExecImmediate.java (98%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testExecuteProcedure.java (96%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testExplainPlan.java (97%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testGetRawstatements.java (94%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testInExpr.java (98%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testInsertMultiTable.java (99%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testInvokerRights.java (95%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testListAggOverflow.java (86%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testMaterializedView.java (94%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testMergeInPlsql.java (97%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testMethodCall.java (96%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testNamedParameter.java (95%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testNaturalJoin.java (95%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testNewConstructor.java (97%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testObjectAccess.java (97%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testOffsetClause.java (96%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testPivot.java (98%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testRDBMSPackageCall.java (95%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testRestrictionClause.java (96%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testSequence.java (95%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testSynonym.java (93%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testVariableInProc.java (99%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testXMLFunction.java (97%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testXMLTable.java (97%) rename src/test/java/{oracle => gudusoft/gsqlparser/oracleTest}/testplsqldatatype.java (99%) rename src/test/java/{mtag/teradata/sqlchecker/parser => gudusoft/gsqlparser/parserTest}/GeneralSqlParserTeradataTest.jav_ (100%) rename src/test/java/{partialParse => gudusoft/gsqlparser/partialParseTest}/testPartialParseCreateTable.java (98%) rename src/test/java/{plsqlInterpreter => gudusoft/gsqlparser/plsqlInterpreterTest}/testBuiltinFunctions.java (96%) rename src/test/java/{plsqlInterpreter => gudusoft/gsqlparser/plsqlInterpreterTest}/testInterpreterBase.java (96%) rename src/test/java/{plsqlInterpreter => gudusoft/gsqlparser/plsqlInterpreterTest}/testPostgres.java (90%) rename src/test/java/{plsqlInterpreter => gudusoft/gsqlparser/plsqlInterpreterTest}/testRedshift.java (96%) rename src/test/java/{plsqlInterpreter => gudusoft/gsqlparser/plsqlInterpreterTest}/testTestPutline.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testAggregateExpressions.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testAlterFunction.java (94%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testAlterTable.java (96%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testArrayConstructor.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testCTE.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testCollationExpression.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testConstant.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testCreateExtension.java (96%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testCreateFunction.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testCreateFunction2.java (84%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testCreateIndex.java (94%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testCreateProcedure.java (96%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testCreateTrigger.java (96%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testCreateView.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testDatatype.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testDeleteStmt.java (95%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testDrop.java (94%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testDropTable.java (94%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testFieldSelection.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testFunctionCall.java (95%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testJSON.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testLimitOffset.java (94%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testLockingClause.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testMathematicalOperator.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_assign.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_block.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_case.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_close.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_declarestmt.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_delete.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_exception.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_execute.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_exit.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_fetch.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_forLoop.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_foreach.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_getdiag.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_if.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_insert.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_label.java (96%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_loop.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_move.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_null.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_open.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_openfor.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_raise.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_return.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_update.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testPlpgsql_while.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testReindex.java (96%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testRowConstructor.java (98%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testSYMMETRIC.java (94%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testSchema.java (96%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testSetSearchPath.java (95%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testSetVariable.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testStringConcate.java (94%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testSubscript.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testTableStmt.java (95%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testTruncate.java (96%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testUpdateStmt.java (99%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testVacuum.java (93%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testValueListInFromClause.java (97%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testWindowClause.java (93%) rename src/test/java/{postgresql => gudusoft/gsqlparser/postgresqlTest}/testWindowFunctions.java (99%) rename src/test/java/{presto => gudusoft/gsqlparser/prestoTest}/testCreateTableLike.java (97%) rename src/test/java/{presto => gudusoft/gsqlparser/prestoTest}/testExplain.java (97%) rename src/test/java/{presto => gudusoft/gsqlparser/prestoTest}/testPrepare.java (96%) rename src/test/java/{presto => gudusoft/gsqlparser/prestoTest}/testUnnest.java (98%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/TestCreateFunction.java (97%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/TestCreateProcedure.java (96%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testAlterDatabase.java (97%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testAlterGroup.java (97%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testAlterSchema.java (97%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testAlterTable.java (99%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testAlterUser.java (93%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testAnalyze.java (97%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testAnalyzeCompression.java (97%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testCancel.java (96%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testClose.java (90%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testComment.java (97%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testCopy.java (97%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testCreateDatabase.java (95%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testCreateGroup.java (95%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testCreateSchema.java (94%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testCreateTable.java (99%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testCreateUser.java (94%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testCreateView.java (96%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testDeallocate.java (94%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testDeclare.java (97%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testDelete.java (95%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testDropDatabase.java (94%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testDropGroup.java (94%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testDropSchema.java (94%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testDropTable.java (95%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testDropUser.java (95%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testDropView.java (95%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testExecute.java (95%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testExplain.java (98%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testExpression.java (99%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testFetchFrom.java (94%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testLock.java (92%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testPrepare.java (96%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testUnload.java (97%) rename src/test/java/{redshift => gudusoft/gsqlparser/redshiftTest}/testVaccum.java (94%) rename src/test/java/{removeCondition => gudusoft/gsqlparser/removeConditionTest}/testRemoveCondition.java (96%) rename src/test/java/{removeSpecialConditions => gudusoft/gsqlparser/removeSpecialConditionsTest}/testRemoveSpecialConditions.java (99%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testColumnAlias.java (96%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testCreateNode.java (97%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testDatabricks.java (99%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testGenerator.java (96%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testModifyExpr.java (97%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testModifyPGSP.java (97%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testModifySql.java (97%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testMySQL.java (97%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testOracle.java (94%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testOracleDataType.java (99%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testSQLServer.java (93%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testSQLServerDataType.java (99%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testScriptGenerator.java (97%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testSnowflake.java (94%) rename src/test/java/{scriptWriter => gudusoft/gsqlparser/scriptWriterTest}/testTimeStampExpr.java (98%) rename src/test/java/{singletonThread => gudusoft/gsqlparser/singletonThreadTest}/testSingletonThread.java (98%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/TestAlterTable.java (97%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/TestCreateProcedure.java (97%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testAlterSchema.java (95%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testAlterTask.java (93%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testCall.java (94%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testClusterBy.java (97%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testCopyInto.java (98%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testCreateExternalTable.java (98%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testCreateFileFormat.java (96%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testCreateFunction.java (97%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testCreateMaterializeView.java (95%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testCreateStage.java (97%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testCreateStream.java (96%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testCreateTask.java (99%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testCreateView.java (97%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testCreateWarehouse.java (95%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testDesc.java (94%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testInsert.java (99%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testLateralColumn.java (70%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testPut.java (94%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testQueryWithoutIntermediateRecordSet.java (75%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testSetStmt.java (93%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testStage.java (98%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testSubqueryFunction.java (97%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testUseWarehouse.java (93%) rename src/test/java/{snowflake => gudusoft/gsqlparser/snowflakeTest}/testVaraible.java (97%) rename src/test/java/{sparksql => gudusoft/gsqlparser/sparksqlTest}/testInsertOverwrite.java (96%) rename src/test/java/{sparksql => gudusoft/gsqlparser/sparksqlTest}/testLateralView.java (98%) rename src/test/java/{testSQLFiles => gudusoft/gsqlparser/sqlFilesTest}/parseTest.java (90%) create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testAthenaFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testBigQueryFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testCouchbaeFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testDB2Files.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testDatabricksFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testGaussDBFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testGreenplumFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testHanaFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testHiveFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testImpalaFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testInformixFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testMDXFiles.java rename src/test/java/{testSQLFiles => gudusoft/gsqlparser/sqlFilesTest}/testMySQLFiles.java (74%) create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testNetezzaFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testODBCFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testOpenedgeFiles.java rename src/test/java/{testSQLFiles => gudusoft/gsqlparser/sqlFilesTest}/testOracleFiles.java (70%) rename src/test/java/{testSQLFiles => gudusoft/gsqlparser/sqlFilesTest}/testPostgreSQLFiles.java (50%) create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testPrestoFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testRedshiftFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSOQLFiles.java rename src/test/java/{testSQLFiles => gudusoft/gsqlparser/sqlFilesTest}/testSQLServerFiles.java (51%) create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSnowflakeFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSparksqlFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSybaseFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testTeradataFiles.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlFilesTest/testVerticaFiles.java rename src/test/java/{sqlenv => gudusoft/gsqlparser/sqlenvTest}/TJSONSQLEnv.java (97%) rename src/test/java/{sqlenv => gudusoft/gsqlparser/sqlenvTest}/testHelpFunctions.java (97%) rename src/test/java/{sqlenv => gudusoft/gsqlparser/sqlenvTest}/testHiveSQLEnv.java (90%) rename src/test/java/{sqlenv => gudusoft/gsqlparser/sqlenvTest}/testJSONEnv.java (93%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testColumnName.java (96%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testCreateProcedure.java (97%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testCreateTable.java (96%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testDeleteStatistics.java (95%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testDumpTran.java (97%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testExecWithNoKeyword.java (96%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testFunctionTable.java (97%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testHint.java (98%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testInsertBulk.java (94%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testIsolation.java (95%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testPartialParsing.java (98%) rename src/test/java/{sybase => gudusoft/gsqlparser/sybaseTest}/testWritetext.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testAlterConstraint.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testAlterProcedure.java (93%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testAlterTableAddColumns.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testAlterZone.java (96%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testAnalyticFunction.java (96%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testBTEQ.java (98%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testBeginTrans.java (91%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testCastDate.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testCheckSourceColumn.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testCollectStatistics.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testCreateProcedure.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testCreateTable.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testCreateTableWithDataIndex.java (98%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testCreateTrigger.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testDataConversion.java (99%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testDateFunction.java (96%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testDropConstraint.java (94%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testExecuteMacro.java (96%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testExpandOn.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testExprType.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testExprWithAlias.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testFastExportCmd.java (91%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testFunctionINResultColumn.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testGetDiagnostics.java (92%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testGetRawStatement.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testGetTableName.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testGive.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testGroupBy.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testIntervalPeriodFunction.java (96%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testJoins.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testLiteral.java (91%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testLock.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testMacro.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testMerge.java (96%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testNamedColumn.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testNormalize.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testQualifyClause.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testRenameTable.java (94%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testResultColumn.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testSelectConsume.java (93%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testSetSession.java (98%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testSubqueryInOnCondition.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testTableAliasOfSubquery.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testTeradataCaseExpression.java (63%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testTeradataGetRawStatements.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testTeradataLiteral.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testTeradataOutputFormatPhrase.java (97%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testTeradataTokenize.java (96%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testTeradataWithClause.java (96%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testTitle.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testUntilChanged.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testUpsert.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testUsing.java (95%) rename src/test/java/{teradata => gudusoft/gsqlparser/teradataTest}/testWithCheckOption.java (95%) rename src/test/java/{users => gudusoft/gsqlparser/usersTest}/testBuindQuery.java (98%) rename src/test/java/{vertica => gudusoft/gsqlparser/verticaTest}/testProfile.java (96%) delete mode 100644 src/test/java/testSQLFiles/testAthenaFiles.java delete mode 100644 src/test/java/testSQLFiles/testBigQueryFiles.java delete mode 100644 src/test/java/testSQLFiles/testCouchbaeFiles.java delete mode 100644 src/test/java/testSQLFiles/testDB2Files.java delete mode 100644 src/test/java/testSQLFiles/testDatabricksFiles.java delete mode 100644 src/test/java/testSQLFiles/testGaussDBFiles.java delete mode 100644 src/test/java/testSQLFiles/testGreenplumFiles.java delete mode 100644 src/test/java/testSQLFiles/testHanaFiles.java delete mode 100644 src/test/java/testSQLFiles/testHiveFiles.java delete mode 100644 src/test/java/testSQLFiles/testImpalaFiles.java delete mode 100644 src/test/java/testSQLFiles/testInformixFiles.java delete mode 100644 src/test/java/testSQLFiles/testMDXFiles.java delete mode 100644 src/test/java/testSQLFiles/testNetezzaFiles.java delete mode 100644 src/test/java/testSQLFiles/testODBCFiles.java delete mode 100644 src/test/java/testSQLFiles/testOpenedgeFiles.java delete mode 100644 src/test/java/testSQLFiles/testPrestoFiles.java delete mode 100644 src/test/java/testSQLFiles/testRedshiftFiles.java delete mode 100644 src/test/java/testSQLFiles/testSOQLFiles.java delete mode 100644 src/test/java/testSQLFiles/testSnowflakeFiles.java delete mode 100644 src/test/java/testSQLFiles/testSparksqlFiles.java delete mode 100644 src/test/java/testSQLFiles/testSybaseFiles.java delete mode 100644 src/test/java/testSQLFiles/testTeradataFiles.java delete mode 100644 src/test/java/testSQLFiles/testVerticaFiles.java diff --git a/README.md b/README.md index da7e8532..38a6ac2a 100644 --- a/README.md +++ b/README.md @@ -22,4 +22,20 @@ the master branch is updated only a new version of GSP is released on official w https://sqlparser.com/download.php while the dev branch is updated more frequently and may not compile using the gsp.jar -from the official site or the jar under /lib directory. \ No newline at end of file +from the official site or the jar under /lib directory. + + +# Changes +- [2024/9/17] Changes directory structure and package name, + all test unit under package name like: package gudusoft.gsqlparser.xxxTest; + +Move all test units from + c:\prg\gsp_demo_java\src\test\java\ +to + c:\prg\gsp_demo_java\src\test\java\gudusoft\gsqlparser\ + + +Move all demos from + c:\prg\gsp_demo_java\src\main\java\demos +to + c:\prg\gsp_demo_java\src\main\java\gudusoft\gsqlparser\demos \ No newline at end of file diff --git a/src/main/java/demos/dlineage/DataFlowAnalyzer.java b/src/main/java/demos/dlineage/DataFlowAnalyzer.java index 298a77bc..2c5815b2 100644 --- a/src/main/java/demos/dlineage/DataFlowAnalyzer.java +++ b/src/main/java/demos/dlineage/DataFlowAnalyzer.java @@ -7,10 +7,8 @@ import gudusoft.gsqlparser.TSourceToken; import gudusoft.gsqlparser.dlineage.dataflow.listener.DataFlowHandleAdapter; import gudusoft.gsqlparser.dlineage.dataflow.model.ErrorInfo; -import gudusoft.gsqlparser.dlineage.dataflow.model.ResultSetType; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; -import gudusoft.gsqlparser.dlineage.dataflow.sqlenv.SQLEnvParser; import gudusoft.gsqlparser.dlineage.util.ProcessUtility; import gudusoft.gsqlparser.dlineage.util.RemoveDataflowFunction; import gudusoft.gsqlparser.dlineage.util.XML2Model; diff --git a/src/test/java/dlineage/testColumnLevelLineageFile.java b/src/test/java/dlineage/testColumnLevelLineageFile.java deleted file mode 100644 index 8b827a66..00000000 --- a/src/test/java/dlineage/testColumnLevelLineageFile.java +++ /dev/null @@ -1,239 +0,0 @@ -package dlineage; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TBaseType; -import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; -import gudusoft.gsqlparser.dlineage.util.ProcessUtility; -import gudusoft.gsqlparser.util.SQLUtil; -import junit.framework.TestCase; - -import java.io.*; -import java.nio.charset.StandardCharsets; -import java.util.*; - -public class testColumnLevelLineageFile extends TestCase { - - public void test1() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/group-by.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/group-by.csv", EDbVendor.dbvoracle)); - } - - public void test2() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/from.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/from.csv", EDbVendor.dbvoracle)); - } - - public void test3() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/left-join.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/left-join.csv", EDbVendor.dbvoracle)); - } - - public void test4() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count.csv", EDbVendor.dbvoracle)); - } - - public void test5() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/alter-table.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/alter-table.csv", EDbVendor.dbvoracle)); - } - - public void test6() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-view.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-view.csv", EDbVendor.dbvoracle)); - } - - public void test7() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/from-where.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/from-where.csv", EDbVendor.dbvoracle)); - } - - public void test8() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/ROUND.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/ROUND.csv", EDbVendor.dbvoracle)); - } - - public void test9() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-sum.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-sum.csv", EDbVendor.dbvoracle)); - } - - public void test10() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-view-alter.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-view-alter.csv", EDbVendor.dbvoracle)); - } - - public void test11() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-where.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-where.csv", EDbVendor.dbvoracle)); - } - - public void test12() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-where-group.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-where-group.csv", EDbVendor.dbvoracle)); - } - - public void test13() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-where-group.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-where-group.csv", EDbVendor.dbvoracle)); - } - - public void test14() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-where.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-where.csv", EDbVendor.dbvoracle)); - } - - public void test15() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-column.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-column.csv", EDbVendor.dbvoracle)); - } - - public void test16() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-group.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-group.csv", EDbVendor.dbvoracle)); - } - - public void test17() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/with.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/with.csv", EDbVendor.dbvoracle)); - } - - public void test18() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/select.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/select.csv", EDbVendor.dbvoracle)); - } - - public void test19() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-create.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-create.csv", EDbVendor.dbvoracle)); - } - - public void test20() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-select.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-select.csv", EDbVendor.dbvoracle)); - } - - public void test21() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-procedure.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-procedure.csv", EDbVendor.dbvmssql)); - } - - public void test22() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-all.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-all.csv", EDbVendor.dbvpostgresql)); - } - - public void test23() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/with-select.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/with-select.csv", EDbVendor.dbvmssql)); - } - - public void test24() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-function.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-function.csv", EDbVendor.dbvmssql)); - } - - public void test25() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/plsql-array.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/plsql-array.csv", EDbVendor.dbvoracle)); - } - - public void test26() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-1.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-1.csv", EDbVendor.dbvpresto)); - } - - public void test27() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-2.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-2.csv", EDbVendor.dbvpresto)); - } - - public void test28() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-3.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-3.csv", EDbVendor.dbvpresto)); - } - - public void test29() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-4.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-4.csv", EDbVendor.dbvpresto)); - } - - public void test30() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/star-column.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/star-column.csv", EDbVendor.dbvoracle)); - } - - public void test31() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/course.sql", common.gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/course.csv", EDbVendor.dbvoracle)); - } - - public void test32() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/update-set-clause.sql", common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/update-set-clause.csv", EDbVendor.dbvmssql)); - } - - public void test33() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/column-alias.sql", common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/column-alias.csv", EDbVendor.dbvmssql)); - } - -// public void test34() { -// assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/subquery-alais.sql", common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/subquery-alais.csv", EDbVendor.dbvmssql)); -// } - - public void test35() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external1.sql", common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external1.csv", EDbVendor.dbvbigquery)); - } - - public void test36() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external2.sql", common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external2.csv", EDbVendor.dbvbigquery)); - } - - public void test37() { - assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external3.sql", common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external3.csv", EDbVendor.dbvredshift)); - } - - - private boolean compare(String sourceFile, String resultFile, EDbVendor vendor) { - if ((null == sourceFile || "".equals(sourceFile)) || - null == resultFile || "".equals(resultFile)) { - return false; - } - File file = new File(sourceFile); - if (!file.exists()) { - return false; - } - - File rf = new File(resultFile); - if (!rf.exists()) { - return false; - } - - StringBuilder v1 = new StringBuilder(); - try { - BufferedReader reader = new BufferedReader(new FileReader(rf)); - String tempStr; - while ((tempStr = reader.readLine()) != null) { - v1.append(new String(tempStr.getBytes(), StandardCharsets.UTF_8)).append("\n"); - } - reader.close(); - } catch (Exception e) { - e.printStackTrace(); - return false; - } - - gudusoft.gsqlparser.dlineage.DataFlowAnalyzer dlineage = new gudusoft.gsqlparser.dlineage.DataFlowAnalyzer( - file, vendor, false); - dlineage.generateDataFlow(); - dataflow originDataflow = dlineage.getDataFlow(); - String result = ProcessUtility.generateColumnLevelLineageCsv(dlineage, originDataflow); - // compare - List c1 = resolver(v1.toString()); - List c2 = resolver(result); - - if (c1.isEmpty() || c2.isEmpty() || c1.size() != c2.size()) { -// try { -// SQLUtil.writeToFile(rf, result); -// } catch (IOException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// return true; - return false; - } - boolean r = true; - for (int i = 0; i < c1.size(); i++) { - if (!TBaseType.comparyStringArray(c1.get(i), c2.get(i))) { - r = false; - System.out.println("The line number that failed to compare is : " + (i + 1)); - System.out.println(); - } - } - - return r; - } - - private List resolver(String str) { - List r = new ArrayList<>(); - String[] vars = str.replaceAll("\\d+", "").replace(";", ",").split("\n"); - List lines = new ArrayList(Arrays.asList(vars)); - Collections.sort(lines); - for (int i = 0; i < lines.size(); i++) { - if (i == 0) { - r.add(lines.get(i).split(",")); - continue; - } - r.add(lines.get(i).split(",")); - } - return r; - } - -} diff --git a/src/test/java/visitor/acceptChildren/TestAcceptChildren.java b/src/test/java/gudusoft/gsqlparser/acceptChildrenTest/TestAcceptChildren.java similarity index 98% rename from src/test/java/visitor/acceptChildren/TestAcceptChildren.java rename to src/test/java/gudusoft/gsqlparser/acceptChildrenTest/TestAcceptChildren.java index b4af012b..5a9f0a4c 100644 --- a/src/test/java/visitor/acceptChildren/TestAcceptChildren.java +++ b/src/test/java/gudusoft/gsqlparser/acceptChildrenTest/TestAcceptChildren.java @@ -1,12 +1,9 @@ -package visitor.acceptChildren; +package gudusoft.gsqlparser.acceptChildrenTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.hana.TTimeTravel; import gudusoft.gsqlparser.nodes.hive.THiveHintClause; -import gudusoft.gsqlparser.nodes.hive.THiveTransformClause; -import gudusoft.gsqlparser.nodes.mssql.TOptionClause; import gudusoft.gsqlparser.stmt.TSelectSqlStatement; import junit.framework.TestCase; import org.junit.Assert; diff --git a/src/test/java/visitor/acceptChildren/readme.md b/src/test/java/gudusoft/gsqlparser/acceptChildrenTest/readme.md similarity index 100% rename from src/test/java/visitor/acceptChildren/readme.md rename to src/test/java/gudusoft/gsqlparser/acceptChildrenTest/readme.md diff --git a/src/test/java/antiSQLInjection/antiSQLInjectionBatchTest.java b/src/test/java/gudusoft/gsqlparser/antiSQLInjectionTest/antiSQLInjectionBatchTest.java similarity index 98% rename from src/test/java/antiSQLInjection/antiSQLInjectionBatchTest.java rename to src/test/java/gudusoft/gsqlparser/antiSQLInjectionTest/antiSQLInjectionBatchTest.java index 853838a9..db55e2ae 100644 --- a/src/test/java/antiSQLInjection/antiSQLInjectionBatchTest.java +++ b/src/test/java/gudusoft/gsqlparser/antiSQLInjectionTest/antiSQLInjectionBatchTest.java @@ -1,5 +1,5 @@ -package antiSQLInjection; +package gudusoft.gsqlparser.antiSQLInjectionTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/antiSQLInjection/antiSQLInjectionTest.java b/src/test/java/gudusoft/gsqlparser/antiSQLInjectionTest/antiSQLInjectionTest.java similarity index 99% rename from src/test/java/antiSQLInjection/antiSQLInjectionTest.java rename to src/test/java/gudusoft/gsqlparser/antiSQLInjectionTest/antiSQLInjectionTest.java index ca45dc58..2ecc95e8 100644 --- a/src/test/java/antiSQLInjection/antiSQLInjectionTest.java +++ b/src/test/java/gudusoft/gsqlparser/antiSQLInjectionTest/antiSQLInjectionTest.java @@ -1,4 +1,4 @@ -package antiSQLInjection; +package gudusoft.gsqlparser.antiSQLInjectionTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/athena/testCreateExternal.java b/src/test/java/gudusoft/gsqlparser/athenaTest/testCreateExternal.java similarity index 99% rename from src/test/java/athena/testCreateExternal.java rename to src/test/java/gudusoft/gsqlparser/athenaTest/testCreateExternal.java index c0444dab..1a3ca8ad 100644 --- a/src/test/java/athena/testCreateExternal.java +++ b/src/test/java/gudusoft/gsqlparser/athenaTest/testCreateExternal.java @@ -1,4 +1,4 @@ -package athena; +package gudusoft.gsqlparser.athenaTest; import gudusoft.gsqlparser.EDataType; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/athena/testExplain.java b/src/test/java/gudusoft/gsqlparser/athenaTest/testExplain.java similarity index 97% rename from src/test/java/athena/testExplain.java rename to src/test/java/gudusoft/gsqlparser/athenaTest/testExplain.java index 72954413..c86d010a 100644 --- a/src/test/java/athena/testExplain.java +++ b/src/test/java/gudusoft/gsqlparser/athenaTest/testExplain.java @@ -1,4 +1,4 @@ -package athena; +package gudusoft.gsqlparser.athenaTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/athena/testUnloadStmt.java b/src/test/java/gudusoft/gsqlparser/athenaTest/testUnloadStmt.java similarity index 81% rename from src/test/java/athena/testUnloadStmt.java rename to src/test/java/gudusoft/gsqlparser/athenaTest/testUnloadStmt.java index fb8309cf..eb00694f 100644 --- a/src/test/java/athena/testUnloadStmt.java +++ b/src/test/java/gudusoft/gsqlparser/athenaTest/testUnloadStmt.java @@ -1,15 +1,11 @@ -package athena; +package gudusoft.gsqlparser.athenaTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TCreateTableOption; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; import gudusoft.gsqlparser.stmt.TUnloadStmt; import junit.framework.TestCase; -import static gudusoft.gsqlparser.ECreateTableOption.etoBigQueryExternal; - public class testUnloadStmt extends TestCase { public void test1(){ diff --git a/src/test/java/bigquery/testBacktick.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testBacktick.java similarity index 99% rename from src/test/java/bigquery/testBacktick.java rename to src/test/java/gudusoft/gsqlparser/bigqueryTest/testBacktick.java index 10c07d66..9be4539b 100644 --- a/src/test/java/bigquery/testBacktick.java +++ b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testBacktick.java @@ -1,4 +1,4 @@ -package bigquery; +package gudusoft.gsqlparser.bigqueryTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/bigquery/testCheckSourceColumn.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCheckSourceColumn.java similarity index 98% rename from src/test/java/bigquery/testCheckSourceColumn.java rename to src/test/java/gudusoft/gsqlparser/bigqueryTest/testCheckSourceColumn.java index 13b39868..6d1dea2f 100644 --- a/src/test/java/bigquery/testCheckSourceColumn.java +++ b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCheckSourceColumn.java @@ -1,4 +1,4 @@ -package bigquery; +package gudusoft.gsqlparser.bigqueryTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/bigquery/testCreateExternalTable.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateExternalTable.java similarity index 99% rename from src/test/java/bigquery/testCreateExternalTable.java rename to src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateExternalTable.java index 5cc472fe..c6cd0adb 100644 --- a/src/test/java/bigquery/testCreateExternalTable.java +++ b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateExternalTable.java @@ -1,4 +1,4 @@ -package bigquery; +package gudusoft.gsqlparser.bigqueryTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/bigquery/testCreateFunction.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateFunction.java similarity index 96% rename from src/test/java/bigquery/testCreateFunction.java rename to src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateFunction.java index 44ad2e55..8969af32 100644 --- a/src/test/java/bigquery/testCreateFunction.java +++ b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateFunction.java @@ -1,34 +1,34 @@ -package bigquery; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; -import junit.framework.TestCase; - -public class testCreateFunction extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE TEMP FUNCTION mydataset.multiplyInputs(x FLOAT64, y FLOAT64)\n" + - "RETURNS FLOAT64\n" + - "LANGUAGE js\n" + - "AS \"\"\"\n" + - " return x*y;\n" + - "\"\"\";"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt functionStmt = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(functionStmt.getFunctionDefinition().toString().equalsIgnoreCase("\"\"\"\n" + - " return x*y;\n" + - "\"\"\"")); - assertTrue(functionStmt.getFunctionName().toString().equalsIgnoreCase("mydataset.multiplyInputs")); - assertTrue(functionStmt.getParameterDeclarations().getParameterDeclarationItem(0).getParameterName().toString().equalsIgnoreCase("x")); - assertTrue(functionStmt.getParameterDeclarations().getParameterDeclarationItem(0).getDataType().getDataType() == EDataType.float64_t); - - } -} +package gudusoft.gsqlparser.bigqueryTest; + +import gudusoft.gsqlparser.EDataType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; +import junit.framework.TestCase; + +public class testCreateFunction extends TestCase { + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); + + sqlparser.sqltext = "CREATE TEMP FUNCTION mydataset.multiplyInputs(x FLOAT64, y FLOAT64)\n" + + "RETURNS FLOAT64\n" + + "LANGUAGE js\n" + + "AS \"\"\"\n" + + " return x*y;\n" + + "\"\"\";"; + + assertTrue(sqlparser.parse() == 0); + + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatefunction); + TCreateFunctionStmt functionStmt = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(functionStmt.getFunctionDefinition().toString().equalsIgnoreCase("\"\"\"\n" + + " return x*y;\n" + + "\"\"\"")); + assertTrue(functionStmt.getFunctionName().toString().equalsIgnoreCase("mydataset.multiplyInputs")); + assertTrue(functionStmt.getParameterDeclarations().getParameterDeclarationItem(0).getParameterName().toString().equalsIgnoreCase("x")); + assertTrue(functionStmt.getParameterDeclarations().getParameterDeclarationItem(0).getDataType().getDataType() == EDataType.float64_t); + + } +} diff --git a/src/test/java/bigquery/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateProcedure.java similarity index 97% rename from src/test/java/bigquery/testCreateProcedure.java rename to src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateProcedure.java index 607da1a9..1ed2b211 100644 --- a/src/test/java/bigquery/testCreateProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateProcedure.java @@ -1,90 +1,89 @@ -package bigquery; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.stmt.TCallStatement; -import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import junit.framework.TestCase; - -public class testCreateProcedure extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE PROCEDURE `#batch_project_id.subscriber_dtl.prc_subscriber_history`(\n" + - " target_date DATE, OUT rows_added INT64)\n" + - "BEGIN\n" + - " CREATE TEMP TABLE DataForTargetDate AS\n" + - " SELECT t1.id, t1.x, t2.y\n" + - " FROM dataset.partitioned_table1 AS t1\n" + - " JOIN dataset.partitioned_table2 AS t2\n" + - " ON t1.id = t2.id\n" + - " WHERE t1.date = target_date\n" + - " AND t2.date = target_date;\n" + - "\n" + - " SET rows_added = (SELECT COUNT(*) FROM DataForTargetDate);\n" + - "\n" + - " SELECT id, x, y, target_date -- note that target_date is a parameter\n" + - " FROM DataForTargetDate;\n" + - "\n" + - " DROP TABLE DataForTargetDate;\n" + - "END;"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createprocedure = (TCreateProcedureStmt) sqlparser.sqlstatements.get(0); - - TObjectName procedureName = createprocedure.getProcedureName(); - assertTrue(procedureName.toString().equalsIgnoreCase("`#batch_project_id`.`subscriber_dtl`.`prc_subscriber_history`")); - assertTrue(procedureName.getDatabaseString().equalsIgnoreCase("`#batch_project_id`")); - assertTrue(procedureName.getSchemaString().equalsIgnoreCase("`subscriber_dtl`")); - assertTrue(procedureName.getObjectString().equalsIgnoreCase("`prc_subscriber_history`")); - assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getParameterName().toString().equalsIgnoreCase("rows_added")); - assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getDataType().getDataType() == EDataType.int64_t); - assertTrue(createprocedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - assertTrue(createprocedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstset); - assertTrue(createprocedure.getBodyStatements().get(2).sqlstatementtype == ESqlStatementType.sstselect); - assertTrue(createprocedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstdroptable); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "create procedure `sqlflow-connector`.`underscore_dataset`.`testProc3`( id INT64,OUT newId INT64) BEGIN\n" + - " DECLARE oldId INT64 DEFAULT id;\n" + - " set newId = null;\n" + - " WHILE newId IS NOT NULL DO\n" + - " SET newId = oldId + 1;\n" + - " END WHILE;\n" + - " SET newId = (SELECT id FROM underscore_dataset.table1);\n" + - " call underscore_dataset.testProc1(1,newId);\n" + - "END"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createprocedure = (TCreateProcedureStmt) sqlparser.sqlstatements.get(0); - - TObjectName procedureName = createprocedure.getProcedureName(); - assertTrue(procedureName.toString().equalsIgnoreCase("`sqlflow-connector`.`underscore_dataset`.`testProc3`")); - assertTrue(procedureName.getDatabaseString().equalsIgnoreCase("`sqlflow-connector`")); - assertTrue(procedureName.getSchemaString().equalsIgnoreCase("`underscore_dataset`")); - assertTrue(procedureName.getObjectString().equalsIgnoreCase("`testProc3`")); - assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getParameterName().toString().equalsIgnoreCase("newId")); - assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getDataType().getDataType() == EDataType.int64_t); - assertTrue(createprocedure.getBodyStatements().get(4).sqlstatementtype == ESqlStatementType.sstcall); - TCallStatement callStatement = (TCallStatement)createprocedure.getBodyStatements().get(4); - assertTrue(callStatement.getRoutineName().toString().equalsIgnoreCase("underscore_dataset.testProc1")); -// assertTrue(createprocedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstset); -// assertTrue(createprocedure.getBodyStatements().get(2).sqlstatementtype == ESqlStatementType.sstselect); -// assertTrue(createprocedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstdroptable); - - } -} +package gudusoft.gsqlparser.bigqueryTest; + +import gudusoft.gsqlparser.EDataType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TObjectName; +import gudusoft.gsqlparser.stmt.TCallStatement; +import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; +import junit.framework.TestCase; + +public class testCreateProcedure extends TestCase { + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); + + sqlparser.sqltext = "CREATE PROCEDURE `#batch_project_id.subscriber_dtl.prc_subscriber_history`(\n" + + " target_date DATE, OUT rows_added INT64)\n" + + "BEGIN\n" + + " CREATE TEMP TABLE DataForTargetDate AS\n" + + " SELECT t1.id, t1.x, t2.y\n" + + " FROM dataset.partitioned_table1 AS t1\n" + + " JOIN dataset.partitioned_table2 AS t2\n" + + " ON t1.id = t2.id\n" + + " WHERE t1.date = target_date\n" + + " AND t2.date = target_date;\n" + + "\n" + + " SET rows_added = (SELECT COUNT(*) FROM DataForTargetDate);\n" + + "\n" + + " SELECT id, x, y, target_date -- note that target_date is a parameter\n" + + " FROM DataForTargetDate;\n" + + "\n" + + " DROP TABLE DataForTargetDate;\n" + + "END;"; + + assertTrue(sqlparser.parse() == 0); + + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateprocedure); + TCreateProcedureStmt createprocedure = (TCreateProcedureStmt) sqlparser.sqlstatements.get(0); + + TObjectName procedureName = createprocedure.getProcedureName(); + assertTrue(procedureName.toString().equalsIgnoreCase("`#batch_project_id`.`subscriber_dtl`.`prc_subscriber_history`")); + assertTrue(procedureName.getDatabaseString().equalsIgnoreCase("`#batch_project_id`")); + assertTrue(procedureName.getSchemaString().equalsIgnoreCase("`subscriber_dtl`")); + assertTrue(procedureName.getObjectString().equalsIgnoreCase("`prc_subscriber_history`")); + assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getParameterName().toString().equalsIgnoreCase("rows_added")); + assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getDataType().getDataType() == EDataType.int64_t); + assertTrue(createprocedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); + assertTrue(createprocedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstset); + assertTrue(createprocedure.getBodyStatements().get(2).sqlstatementtype == ESqlStatementType.sstselect); + assertTrue(createprocedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstdroptable); + + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); + + sqlparser.sqltext = "create procedure `sqlflow-connector`.`underscore_dataset`.`testProc3`( id INT64,OUT newId INT64) BEGIN\n" + + " DECLARE oldId INT64 DEFAULT id;\n" + + " set newId = null;\n" + + " WHILE newId IS NOT NULL DO\n" + + " SET newId = oldId + 1;\n" + + " END WHILE;\n" + + " SET newId = (SELECT id FROM underscore_dataset.table1);\n" + + " call underscore_dataset.testProc1(1,newId);\n" + + "END"; + + assertTrue(sqlparser.parse() == 0); + + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateprocedure); + TCreateProcedureStmt createprocedure = (TCreateProcedureStmt) sqlparser.sqlstatements.get(0); + + TObjectName procedureName = createprocedure.getProcedureName(); + assertTrue(procedureName.toString().equalsIgnoreCase("`sqlflow-connector`.`underscore_dataset`.`testProc3`")); + assertTrue(procedureName.getDatabaseString().equalsIgnoreCase("`sqlflow-connector`")); + assertTrue(procedureName.getSchemaString().equalsIgnoreCase("`underscore_dataset`")); + assertTrue(procedureName.getObjectString().equalsIgnoreCase("`testProc3`")); + assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getParameterName().toString().equalsIgnoreCase("newId")); + assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getDataType().getDataType() == EDataType.int64_t); + assertTrue(createprocedure.getBodyStatements().get(4).sqlstatementtype == ESqlStatementType.sstcall); + TCallStatement callStatement = (TCallStatement)createprocedure.getBodyStatements().get(4); + assertTrue(callStatement.getRoutineName().toString().equalsIgnoreCase("underscore_dataset.testProc1")); +// assertTrue(createprocedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstset); +// assertTrue(createprocedure.getBodyStatements().get(2).sqlstatementtype == ESqlStatementType.sstselect); +// assertTrue(createprocedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstdroptable); + + } +} diff --git a/src/test/java/bigquery/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTable.java similarity index 95% rename from src/test/java/bigquery/testCreateTable.java rename to src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTable.java index 6b9cf639..9a9a11c9 100644 --- a/src/test/java/bigquery/testCreateTable.java +++ b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTable.java @@ -1,12 +1,10 @@ -package bigquery; +package gudusoft.gsqlparser.bigqueryTest; import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EDeclareType; import gudusoft.gsqlparser.ESqlStatementType; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare; import junit.framework.TestCase; public class testCreateTable extends TestCase { diff --git a/src/test/java/bigquery/testCreateTableFunction.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTableFunction.java similarity index 98% rename from src/test/java/bigquery/testCreateTableFunction.java rename to src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTableFunction.java index 2e938438..470f01ec 100644 --- a/src/test/java/bigquery/testCreateTableFunction.java +++ b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTableFunction.java @@ -1,4 +1,4 @@ -package bigquery; +package gudusoft.gsqlparser.bigqueryTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.TTypeName; diff --git a/src/test/java/bigquery/testDeclare.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testDeclare.java similarity index 96% rename from src/test/java/bigquery/testDeclare.java rename to src/test/java/gudusoft/gsqlparser/bigqueryTest/testDeclare.java index 91e9c51c..99731834 100644 --- a/src/test/java/bigquery/testDeclare.java +++ b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testDeclare.java @@ -1,35 +1,35 @@ -package bigquery; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EDeclareType; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare; -import junit.framework.TestCase; - -public class testDeclare extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "DECLARE prev_execution_date DATE DEFAULT DATE_SUB(CURRENT_DATE(),\n" + - "INTERVAL 1 DAY);\n" + - "\n" + - "DECLARE prev_execution_time TIMESTAMP DEFAULT CAST(CONCAT(\n" + - "DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY),' 23:59:59.999 UTC') as\n" + - "TIMESTAMP);"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqldeclare); - TMssqlDeclare declare = (TMssqlDeclare)sqlparser.sqlstatements.get(0); - - assertTrue(declare.getVariables().getDeclareVariable(0).toString().equalsIgnoreCase("prev_execution_date")); - assertTrue(declare.getDeclareType() == EDeclareType.variable); - assertTrue(declare.getVariables().getDeclareVariable(0).getDefaultValue().toString().equalsIgnoreCase("DATE_SUB(CURRENT_DATE(),\n" + - "INTERVAL 1 DAY)")); - - } -} - +package gudusoft.gsqlparser.bigqueryTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EDeclareType; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare; +import junit.framework.TestCase; + +public class testDeclare extends TestCase { + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); + + sqlparser.sqltext = "DECLARE prev_execution_date DATE DEFAULT DATE_SUB(CURRENT_DATE(),\n" + + "INTERVAL 1 DAY);\n" + + "\n" + + "DECLARE prev_execution_time TIMESTAMP DEFAULT CAST(CONCAT(\n" + + "DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY),' 23:59:59.999 UTC') as\n" + + "TIMESTAMP);"; + + assertTrue(sqlparser.parse() == 0); + + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqldeclare); + TMssqlDeclare declare = (TMssqlDeclare)sqlparser.sqlstatements.get(0); + + assertTrue(declare.getVariables().getDeclareVariable(0).toString().equalsIgnoreCase("prev_execution_date")); + assertTrue(declare.getDeclareType() == EDeclareType.variable); + assertTrue(declare.getVariables().getDeclareVariable(0).getDefaultValue().toString().equalsIgnoreCase("DATE_SUB(CURRENT_DATE(),\n" + + "INTERVAL 1 DAY)")); + + } +} + diff --git a/src/test/java/bigquery/testIdentifier.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testIdentifier.java similarity index 99% rename from src/test/java/bigquery/testIdentifier.java rename to src/test/java/gudusoft/gsqlparser/bigqueryTest/testIdentifier.java index 85cbd793..61cb694e 100644 --- a/src/test/java/bigquery/testIdentifier.java +++ b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testIdentifier.java @@ -1,4 +1,4 @@ -package bigquery; +package gudusoft.gsqlparser.bigqueryTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.TExpression; diff --git a/src/test/java/bigquery/testLegacySQL.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testLegacySQL.java similarity index 99% rename from src/test/java/bigquery/testLegacySQL.java rename to src/test/java/gudusoft/gsqlparser/bigqueryTest/testLegacySQL.java index 848324f1..ad6ec49e 100644 --- a/src/test/java/bigquery/testLegacySQL.java +++ b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testLegacySQL.java @@ -1,4 +1,4 @@ -package bigquery; +package gudusoft.gsqlparser.bigqueryTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TBaseType; diff --git a/src/test/java/test/ColumnImpactTest.java b/src/test/java/gudusoft/gsqlparser/commonTest/ColumnImpactTest.java similarity index 99% rename from src/test/java/test/ColumnImpactTest.java rename to src/test/java/gudusoft/gsqlparser/commonTest/ColumnImpactTest.java index 8efbca86..bfe3358b 100644 --- a/src/test/java/test/ColumnImpactTest.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/ColumnImpactTest.java @@ -1,5 +1,5 @@ -package test; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.IMetaDatabase; @@ -15,7 +15,6 @@ import junit.framework.Assert; import junit.framework.TestCase; -import common.SqlFileList; import demos.antiSQLInjection.columnImpact.ColumnImpact; public class ColumnImpactTest extends TestCase diff --git a/src/test/java/common/FileUtil.java b/src/test/java/gudusoft/gsqlparser/commonTest/FileUtil.java similarity index 97% rename from src/test/java/common/FileUtil.java rename to src/test/java/gudusoft/gsqlparser/commonTest/FileUtil.java index 29670cc5..06c30de8 100644 --- a/src/test/java/common/FileUtil.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/FileUtil.java @@ -1,5 +1,5 @@ -package common; +package gudusoft.gsqlparser.commonTest; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; diff --git a/src/test/java/common/SqlFileList.java b/src/test/java/gudusoft/gsqlparser/commonTest/SqlFileList.java similarity index 96% rename from src/test/java/common/SqlFileList.java rename to src/test/java/gudusoft/gsqlparser/commonTest/SqlFileList.java index cd526ee6..6e6345c5 100644 --- a/src/test/java/common/SqlFileList.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/SqlFileList.java @@ -1,5 +1,5 @@ -package common; +package gudusoft.gsqlparser.commonTest; import java.io.File; import java.io.FileFilter; diff --git a/src/test/java/common/gspCommon.java b/src/test/java/gudusoft/gsqlparser/commonTest/gspCommon.java similarity index 80% rename from src/test/java/common/gspCommon.java rename to src/test/java/gudusoft/gsqlparser/commonTest/gspCommon.java index ce16f88f..db18fc1a 100644 --- a/src/test/java/common/gspCommon.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/gspCommon.java @@ -1,7 +1,7 @@ -package common; +package gudusoft.gsqlparser.commonTest; public class gspCommon { - public static String BASE_SQL_DIR = "c:/prg/gsp_sqlfiles/TestCases/"; + public static String BASE_SQL_DIR = "c:/prg/gsp_java_core/gsp_sqlfiles/TestCases/"; public static String BASE_SQL_DIR_PUBLIC = BASE_SQL_DIR+"public/"; public static String BASE_SQL_DIR_PRIVATE = BASE_SQL_DIR+"private/"; public static String BASE_SQL_DIR_PUBLIC_ALLVERSIONS = BASE_SQL_DIR_PUBLIC+"allversions/"; diff --git a/src/test/java/common/helloTest.java b/src/test/java/gudusoft/gsqlparser/commonTest/helloTest.java similarity index 94% rename from src/test/java/common/helloTest.java rename to src/test/java/gudusoft/gsqlparser/commonTest/helloTest.java index c0d4d28c..4ee17d9e 100644 --- a/src/test/java/common/helloTest.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/helloTest.java @@ -1,6 +1,5 @@ -package common; +package gudusoft.gsqlparser.commonTest; -import org.junit.Test; import junit.framework.TestCase; /* diff --git a/src/test/java/common/metaDB.java b/src/test/java/gudusoft/gsqlparser/commonTest/metaDB.java similarity index 97% rename from src/test/java/common/metaDB.java rename to src/test/java/gudusoft/gsqlparser/commonTest/metaDB.java index 66887d1d..a643e5fd 100644 --- a/src/test/java/common/metaDB.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/metaDB.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; /* * Date: 12-3-31 */ diff --git a/src/test/java/common/testAcceptChildren.java b/src/test/java/gudusoft/gsqlparser/commonTest/testAcceptChildren.java similarity index 97% rename from src/test/java/common/testAcceptChildren.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testAcceptChildren.java index 437fe53c..f40dedb7 100644 --- a/src/test/java/common/testAcceptChildren.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testAcceptChildren.java @@ -1,116 +1,116 @@ -package common; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TParseTreeNode; -import gudusoft.gsqlparser.nodes.TParseTreeVisitor; -import gudusoft.gsqlparser.nodes.TWhereClause; -import junit.framework.TestCase; - -class TreeVisitor extends TParseTreeVisitor { - public static final int NODE_VISITED = 999; - public void preVisit(TExpression node) { - -// if (node.getDummyTag() == NODE_VISITED) { -// System.out.println("revisited: "+node.toString()); -// return; -// } -// System.out.println(node.toString()); - -// switch (node.getExpressionType()) { -// case simple_object_name_t: -// acceptChildrenIfNotNull(node.getObjectOperand()); -// break; -// case simple_constant_t: -// acceptChildrenIfNotNull(node.getConstantOperand()); -// break; -// case function_t: -// acceptChildrenIfNotNull(node.getFunctionCall()); -// break; -// case cursor_t: -// case subquery_t: -// case exists_t: -// acceptChildrenIfNotNull(node.getSubQuery()); -// break; -// case case_t: -// acceptChildrenIfNotNull(node.getCaseExpression()); -// break; -// case simple_comparison_t: -// String op = node.getComparisonOperator().toString(); -// break; -// case group_comparison_t: -// case in_t: -// if (!acceptChildrenIfNotNull(node.getExprList())) { -// acceptChildrenIfNotNull(node.getLeftOperand()); -// } -// acceptChildrenIfNotNull(node.getRightOperand()); -// break; -// case list_t: -// acceptChildrenIfNotNull(node.getExprList()); -// break; -// case pattern_matching_t: -// acceptChildrenIfNotNull(node.getLeftOperand()); -// acceptChildrenIfNotNull(node.getRightOperand()); -// acceptChildrenIfNotNull(node.getLikeEscapeOperand()); -// break; -// case between_t: -// acceptChildrenIfNotNull(node.getBetweenOperand()); -// // fall through -// case logical_and_t: -// case logical_or_t: -// -// node.setDummyTag(NODE_VISITED); -// acceptChildrenIfNotNull(node.getLeftOperand()); -// node.getLeftOperand().setDummyTag(NODE_VISITED); -// acceptChildrenIfNotNull(node.getRightOperand()); -// node.getRightOperand().setDummyTag(NODE_VISITED); -// -// break; -// case null_t: -// break; -// default: -// acceptChildrenIfNotNull(node.getLeftOperand()); -// acceptChildrenIfNotNull(node.getRightOperand()); -// break; -// } - } - - - private boolean acceptChildrenIfNotNull(TParseTreeNode node) { - if (node != null ) { - node.acceptChildren(this); - return true; - } - return false; - } -} -public class testAcceptChildren extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT * from b where T1.tx_typ_cd IN ( 0, 1, 13 ) \n" + - " AND T1.str_no = T2.str_no(+) \n" + - " AND T1.trml_no = T2.trml_no(+) \n" + - " AND T1.tx_no = T2.tx_no(+) \n" + - " AND T1.tx_dte_tme = T2.tx_dte_tme(+) \n" + - " AND T1.rec_seq_no + 1 = T2.rec_seq_no(+) \n" + - " AND T1.str_no = RFND.str_no(+) \n" + - " AND T1.trml_no = RFND.trml_no(+) \n" + - " AND T1.tx_no = RFND.tx_no(+) \n" + - " AND T1.tx_dte_tme = RFND.tx_dte_tme(+) \n" + - " AND T1.rec_seq_no = RFND.t1_rec_seq_no(+) \n" + - " AND T1.str_no = T11BD.str_no(+) \n" + - " AND T1.trml_no = T11BD.trml_no(+) \n" + - " AND T1.tx_no = T11BD.tx_no(+) \n" + - " AND T1.tx_dte_tme = T11BD.tx_dte_tme(+) \n" + - " AND To_number (T1.item_cd) = T11BD.lnk_upc(+) \n" + - " AND T1.extd_prc = T11BD.dsc_amt(+) \n" + - " AND T1.dpt_no = T11BD.dept_no(+) \n" + - " AND T1.rec_seq_no - 2 <= T11BD.rec_seq_no(+) \n" + - " AND T1.rec_seq_no >= T11BD.rec_seq_no(+) "; - assertTrue(sqlparser.parse() == 0); - TWhereClause whereClause = sqlparser.sqlstatements.get(0).getWhereClause(); - whereClause.getCondition().acceptChildren(new TreeVisitor()); - } -} +package gudusoft.gsqlparser.commonTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TParseTreeNode; +import gudusoft.gsqlparser.nodes.TParseTreeVisitor; +import gudusoft.gsqlparser.nodes.TWhereClause; +import junit.framework.TestCase; + +class TreeVisitor extends TParseTreeVisitor { + public static final int NODE_VISITED = 999; + public void preVisit(TExpression node) { + +// if (node.getDummyTag() == NODE_VISITED) { +// System.out.println("revisited: "+node.toString()); +// return; +// } +// System.out.println(node.toString()); + +// switch (node.getExpressionType()) { +// case simple_object_name_t: +// acceptChildrenIfNotNull(node.getObjectOperand()); +// break; +// case simple_constant_t: +// acceptChildrenIfNotNull(node.getConstantOperand()); +// break; +// case function_t: +// acceptChildrenIfNotNull(node.getFunctionCall()); +// break; +// case cursor_t: +// case subquery_t: +// case exists_t: +// acceptChildrenIfNotNull(node.getSubQuery()); +// break; +// case case_t: +// acceptChildrenIfNotNull(node.getCaseExpression()); +// break; +// case simple_comparison_t: +// String op = node.getComparisonOperator().toString(); +// break; +// case group_comparison_t: +// case in_t: +// if (!acceptChildrenIfNotNull(node.getExprList())) { +// acceptChildrenIfNotNull(node.getLeftOperand()); +// } +// acceptChildrenIfNotNull(node.getRightOperand()); +// break; +// case list_t: +// acceptChildrenIfNotNull(node.getExprList()); +// break; +// case pattern_matching_t: +// acceptChildrenIfNotNull(node.getLeftOperand()); +// acceptChildrenIfNotNull(node.getRightOperand()); +// acceptChildrenIfNotNull(node.getLikeEscapeOperand()); +// break; +// case between_t: +// acceptChildrenIfNotNull(node.getBetweenOperand()); +// // fall through +// case logical_and_t: +// case logical_or_t: +// +// node.setDummyTag(NODE_VISITED); +// acceptChildrenIfNotNull(node.getLeftOperand()); +// node.getLeftOperand().setDummyTag(NODE_VISITED); +// acceptChildrenIfNotNull(node.getRightOperand()); +// node.getRightOperand().setDummyTag(NODE_VISITED); +// +// break; +// case null_t: +// break; +// default: +// acceptChildrenIfNotNull(node.getLeftOperand()); +// acceptChildrenIfNotNull(node.getRightOperand()); +// break; +// } + } + + + private boolean acceptChildrenIfNotNull(TParseTreeNode node) { + if (node != null ) { + node.acceptChildren(this); + return true; + } + return false; + } +} +public class testAcceptChildren extends TestCase { + + public void test1() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "SELECT * from b where T1.tx_typ_cd IN ( 0, 1, 13 ) \n" + + " AND T1.str_no = T2.str_no(+) \n" + + " AND T1.trml_no = T2.trml_no(+) \n" + + " AND T1.tx_no = T2.tx_no(+) \n" + + " AND T1.tx_dte_tme = T2.tx_dte_tme(+) \n" + + " AND T1.rec_seq_no + 1 = T2.rec_seq_no(+) \n" + + " AND T1.str_no = RFND.str_no(+) \n" + + " AND T1.trml_no = RFND.trml_no(+) \n" + + " AND T1.tx_no = RFND.tx_no(+) \n" + + " AND T1.tx_dte_tme = RFND.tx_dte_tme(+) \n" + + " AND T1.rec_seq_no = RFND.t1_rec_seq_no(+) \n" + + " AND T1.str_no = T11BD.str_no(+) \n" + + " AND T1.trml_no = T11BD.trml_no(+) \n" + + " AND T1.tx_no = T11BD.tx_no(+) \n" + + " AND T1.tx_dte_tme = T11BD.tx_dte_tme(+) \n" + + " AND To_number (T1.item_cd) = T11BD.lnk_upc(+) \n" + + " AND T1.extd_prc = T11BD.dsc_amt(+) \n" + + " AND T1.dpt_no = T11BD.dept_no(+) \n" + + " AND T1.rec_seq_no - 2 <= T11BD.rec_seq_no(+) \n" + + " AND T1.rec_seq_no >= T11BD.rec_seq_no(+) "; + assertTrue(sqlparser.parse() == 0); + TWhereClause whereClause = sqlparser.sqlstatements.get(0).getWhereClause(); + whereClause.getCondition().acceptChildren(new TreeVisitor()); + } +} diff --git a/src/test/java/common/testAggregateFunction.java b/src/test/java/gudusoft/gsqlparser/commonTest/testAggregateFunction.java similarity index 96% rename from src/test/java/common/testAggregateFunction.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testAggregateFunction.java index 5ccae09b..388c8456 100644 --- a/src/test/java/common/testAggregateFunction.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testAggregateFunction.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; /* * Date: 13-2-5 */ diff --git a/src/test/java/common/testAlias.java b/src/test/java/gudusoft/gsqlparser/commonTest/testAlias.java similarity index 99% rename from src/test/java/common/testAlias.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testAlias.java index 64e7f52c..ef01b5e6 100644 --- a/src/test/java/common/testAlias.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testAlias.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; /* * Date: 11-9-26 */ diff --git a/src/test/java/common/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/commonTest/testAlterTable.java similarity index 98% rename from src/test/java/common/testAlterTable.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testAlterTable.java index 9a42ef30..f162b054 100644 --- a/src/test/java/common/testAlterTable.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testAlterTable.java @@ -1,296 +1,296 @@ -package common; -/* - * Date: 11-4-14 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TAlterTableOption; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.nodes.TConstraint; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import junit.framework.TestCase; - -public class testAlterTable extends TestCase { - - public void testMSSQLDropColumn(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "ALTER TABLE test DROP COLUMN IF EXISTS column1"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("test")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.DropColumn); - assertTrue(ato.getColumnName().toString().equalsIgnoreCase("column1")); - } - - public void testMySQLAfterColumn(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "alter table qatest.movies ADD COLUMN viewCount SMALLINT AFTER description;"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("qatest.movies")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.AddColumn); - assertTrue(ato.getColumnPosition() == TAlterTableOption.COLUMN_POSITION_AFTER); - assertTrue(ato.getAfterColumnName().toString().equalsIgnoreCase("description")); - } - - public void testNetezzaSetPrivileges(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "ALTER TABLE distributors SET PRIVILEGES TO suppliers"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("distributors")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.setPrivileges); - assertTrue(ato.getNewTableName().toString().equalsIgnoreCase("suppliers")); - } - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "ALTER TABLE \"ACLIPPROTOCOLMAPTEMPLATE\" ADD PRIMARY KEY (\"ID\") ENABLE;"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("\"ACLIPPROTOCOLMAPTEMPLATE\"")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.AddConstraint); - TConstraint c = (TConstraint) ato.getConstraintList().getConstraint(0); - assertTrue(c.getConstraint_type() == EConstraintType.primary_key); - - assertTrue(c.getColumnList().getElement(0).getColumnName().toString().equalsIgnoreCase("\"ID\"")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "ALTER TABLE \"ACLIPPROTOCOLMAPTEMPLATE\" MODIFY (\"RULEACTION\" NOT NULL ENABLE);"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("\"ACLIPPROTOCOLMAPTEMPLATE\"")); - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - - assertTrue(ato.getOptionType() == EAlterTableOptionType.ModifyColumn); - - TColumnDefinition cd = ato.getColumnDefinitionList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("\"RULEACTION\"")); - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "ALTER TABLE \"ACLIPPROTOCOLMAPTEMPLATE\" ADD CONSTRAINT \"ACLIPPROTOCOLMAPTEMPLATE_K\" UNIQUE (\"ACLTEMPLATENAME\", \"SOURCEIPGROUPTEMPLATENAME\", \"DESTINATIONIPGROUPTEMPLATENAME\", \"PROTOCOLGROUPTEMPLATENAME\", \"DIRECTION\", \"RULEACTION\") ENABLE;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("\"ACLIPPROTOCOLMAPTEMPLATE\"")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.AddConstraint); - TConstraint c = (TConstraint) ato.getConstraintList().getConstraint(0); - assertTrue(c.getConstraint_type() == EConstraintType.unique); - assertTrue(c.getConstraintName().toString().equalsIgnoreCase("\"ACLIPPROTOCOLMAPTEMPLATE_K\"")); - assertTrue(c.getColumnList().getElement(0).getColumnName().toString().equalsIgnoreCase("\"ACLTEMPLATENAME\"")); - assertTrue(c.getColumnList().getElement(1).getColumnName().toString().equalsIgnoreCase("\"SOURCEIPGROUPTEMPLATENAME\"")); - assertTrue(c.getColumnList().getElement(2).getColumnName().toString().equalsIgnoreCase("\"DESTINATIONIPGROUPTEMPLATENAME\"")); - assertTrue(c.getColumnList().getElement(3).getColumnName().toString().equalsIgnoreCase("\"PROTOCOLGROUPTEMPLATENAME\"")); - assertTrue(c.getColumnList().getElement(4).getColumnName().toString().equalsIgnoreCase("\"DIRECTION\"")); - assertTrue(c.getColumnList().getElement(5).getColumnName().toString().equalsIgnoreCase("\"RULEACTION\"")); - } - - public void testMySQLDropIndex(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "ALTER TABLE jr_story DROP INDEX INK02_jr_story;"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("jr_story")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.DropConstraintIndex); - assertTrue(ato.getConstraintName().toString().equalsIgnoreCase("INK02_jr_story")); - } - - public void testTeradataAddPrimaryKey(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "ALTER TABLE tbl_employee ADD PRIMARY KEY (employee_id)"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("tbl_employee")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.AddConstraint); - TConstraint c = (TConstraint) ato.getConstraintList().getConstraint(0); - assertTrue(c.getConstraint_type() == EConstraintType.primary_key); - - assertTrue(c.getColumnList().getElement(0).getColumnName().toString().equalsIgnoreCase("employee_id")); - } - - public void testTeradataAddForeignKey(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "ALTER TABLE tbl_emp ADD FOREIGN KEY (DeptNo) REFERENCES tbl_dept(department_number)"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("tbl_emp")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.AddConstraint); - TConstraint c = (TConstraint) ato.getConstraintList().getConstraint(0); - assertTrue(c.getConstraint_type() == EConstraintType.foreign_key); - - assertTrue(c.getColumnList().getElement(0).getColumnName().toString().equalsIgnoreCase("DeptNo")); - - assertTrue(c.getReferencedObject().toString().equalsIgnoreCase("tbl_dept")); - assertTrue(c.getReferencedColumnList().getObjectName(0).toString().equalsIgnoreCase("department_number")); - } - - public void testMySQLAlterTableRename(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "alter table foo rename to bar;"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("foo")); - assertTrue(alterTable.getTableName().getTableString().equalsIgnoreCase("foo")); - assertTrue(alterTable.getTableName().getTableToken().toString().equalsIgnoreCase("foo")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.RenameTable); - assertTrue(ato.getNewTableName().toString().equalsIgnoreCase("bar")); - assertTrue(ato.getNewTableName().getTableString().equalsIgnoreCase("bar")); - assertTrue(ato.getNewTableName().getTableToken().toString().equalsIgnoreCase("bar")); - - assertTrue(alterTable.tables.size() == 2); - } - - public void testMySQLAlterTableAddColumn(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "ALTER TABLE employee ADD street VARCHAR(30);"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("employee")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.AddColumn); - assertTrue(ato.getColumnDefinitionList().size() == 1); - TColumnDefinition cd = ato.getColumnDefinitionList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("street")); - assertTrue(cd.getDatatype().getDataType() == EDataType.varchar_t); - assertTrue(cd.getDatatype().getLength().toString().equalsIgnoreCase("30")); - } - - public void testMySQLAlterTableAddColumnComment(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "ALTER TABLE x\n" + - "ADD COLUMN a VARCHAR(30) COMMENT \"abc\" FIRST"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("x")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.AddColumn); - assertTrue(ato.getColumnDefinitionList().size() == 1); - TColumnDefinition cd = ato.getColumnDefinitionList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("a")); - assertTrue(cd.getDatatype().getDataType() == EDataType.varchar_t); - assertTrue(cd.getDatatype().getLength().toString().equalsIgnoreCase("30")); - assertTrue(cd.getComment().toString().equalsIgnoreCase("\"abc\"")); - } - - public void testMySQLAlterTableAlterColumnSetDefault(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "alter table pet alter xyz set default 2"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("pet")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - //System.out.println(ato.getOptionType()); - assertTrue(ato.getOptionType() == EAlterTableOptionType.AlterColumn); - assertTrue(ato.getDefaultExpr().toString().equalsIgnoreCase("2")); - } - - - public void testMySQLAlterTableForeignKey(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "alter table test_3 add constraint fk foreign key(id) references city(id);"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("test_3")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - //System.out.println(ato.getOptionType()); - assertTrue(ato.getOptionType() == EAlterTableOptionType.AddConstraintFK); - assertTrue(ato.getReferencedTable().getTableName().toString().equalsIgnoreCase("city")); - } - - public void testMySQLAlterTableDropIndex(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "ALTER TABLE table_name DROP INDEX constraint_name;"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("table_name")); - assertTrue(alterTable.getTableName().getTableString().equalsIgnoreCase("table_name")); - - } - - public void testMySQLAlterTableAddConstraint(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "ALTER TABLE contacts ADD CONSTRAINT contacts_unique UNIQUE (reference_number);"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("contacts")); - assertTrue(alterTable.getAlterTableOptionList().size() == 1); - TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getConstraintName().toString().equalsIgnoreCase("contacts_unique")); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.AddConstraintUnique); - assertTrue(alterTableOption.getIndexCols().getElement(0).getColumnName().toString().equalsIgnoreCase("reference_number")); - } - - public void testMySQLAlterTableAddConstraint2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "Alter table table_name add Constraint constraint_name unique(column_name)"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("table_name")); - assertTrue(alterTable.getAlterTableOptionList().size() == 1); - for(int i=0;i $2 then $1\n" + - " else $2\n" + - " end\n" + - " $$ language sql;"; - assertTrue(sqlparser.parse() == 0); - - functionVisitor fv = new functionVisitor(); - sqlparser.sqlstatements.get(0).acceptChildren(fv); - assertTrue(fv.LineNo == 5); - assertTrue(fv.ColumnNo == 12); - - } - - public void testPostgresql5(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION testschema.functionreturnstrigger()\n" + - " RETURNS trigger\n" + - " LANGUAGE plpgsql\n" + - "AS $function$\n" + - "BEGIN\n" + - " IF NEW.last_name <> OLD.last_name THEN\n" + - " INSERT INTO TestSchema.\"TestTable\"(ColumnText1)\n" + - " SELECT ColumnText2 FROM testschema.\"TestTable\";\n" + - " END IF;\n" + - " RETURN NEW;\n" + - "END;\n" + - "$function$"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - functionVisitor fv = new functionVisitor(); - sqlparser.sqlstatements.get(0).acceptChildren(fv); - assertTrue(fv.LineNo == 7); - assertTrue(fv.ColumnNo == 42); - - } - - class functionVisitor extends TParseTreeVisitor { - - public long LineNo, ColumnNo; - public void preVisit(TFunctionCall functionCall){ - if (functionCall.getFunctionName().toString().equalsIgnoreCase("cast")){ - LineNo = functionCall.getFunctionName().getLineNo(); - ColumnNo = functionCall.getFunctionName().getColumnNo(); -// System.out.println(functionCall.getFunctionName().getLineNo()); -// System.out.println(functionCall.getFunctionName().getColumnNo()); - } - } - public void preVisit(TCaseExpression caseExpression){ - LineNo = caseExpression.getLineNo(); - ColumnNo = caseExpression.getColumnNo(); -// System.out.println(caseExpression.getStartToken().toString()+ caseExpression.getLineNo()); -// System.out.println(caseExpression.getColumnNo()); - } - - public void preVisit(TObjectName objectName){ - if (objectName.toString().equalsIgnoreCase("ColumnText1")){ - LineNo = objectName.getLineNo(); - ColumnNo = objectName.getColumnNo(); - } - } - - } - -} +package gudusoft.gsqlparser.commonTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.*; + +import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + + +public class testCoordinates extends TestCase { + + public void testCoordinates1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE OR REPLACE FUNCTION totalRecords (emp_id int)\n" + + "RETURNS integer AS $total$\n" + + "declare\n" + + "total integer;\n" + + "BEGIN\n" + + " SELECT TOTAL_SAL into total FROM employee emp where emp.employee_id = emp_id;\n" + + " RETURN total;\n" + + "END; $total$ LANGUAGE plpgsql;"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("totalrecords")); + assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); + + assertTrue(createFunction.getBodyStatements().size() == 2); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); + TTable table = selectSqlStatement.tables.getTable(0); +// System.out.println(table.getTableName().getLineNo()); +// System.out.println(table.getTableName().getColumnNo()); + assertTrue(table.getTableName().getLineNo() == 6); + assertTrue(table.getTableName().getColumnNo() == 36); + } + + public void testCoordinates11(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE OR REPLACE FUNCTION totalRecords (emp_id int)\n" + + "RETURNS integer AS $total$ " + + "declare\n" + + "total integer;\n" + + "BEGIN\n" + + " SELECT TOTAL_SAL into total FROM employee emp where emp.employee_id = emp_id;\n" + + " RETURN total;\n" + + "END; $total$ LANGUAGE plpgsql;"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("totalrecords")); + assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); + + assertTrue(createFunction.getBodyStatements().size() == 2); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); + TTable table = selectSqlStatement.tables.getTable(0); + assertTrue(table.getTableName().getLineNo() == 5); + assertTrue(table.getTableName().getColumnNo() == 36); + } + + public void testCoordinates2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE OR REPLACE FUNCTION\n" + + "foo.func1(integer, OUT f1 integer, OUT f2 text)\n" + + "RETURNS record\n" + + "LANGUAGE sql\n" + + "AS $function$ SELECT $1, CAST($1 AS text) || ' is text' $function$"; + assertTrue(sqlparser.parse() == 0); + + functionVisitor fv = new functionVisitor(); + sqlparser.sqlstatements.get(0).acceptChildren(fv); + assertTrue(fv.LineNo == 5); + assertTrue(fv.ColumnNo == 26); + + } + + public void testCoordinates3(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE OR REPLACE FUNCTION\n" + + "foo.func1(integer, OUT f1 integer, OUT f2 text)\n" + + "RETURNS record\n" + + "LANGUAGE sql\n" + + "AS $function$\n" + + "SELECT $1, CAST($1 AS text) || ' is text' $function$"; + assertTrue(sqlparser.parse() == 0); + + functionVisitor fv = new functionVisitor(); + sqlparser.sqlstatements.get(0).acceptChildren(fv); + assertTrue(fv.LineNo == 6); + assertTrue(fv.ColumnNo == 12); + + } + + public void testCoordinates4(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace function get_countries_for_user ( id number )\n" + + " returns table (country_code char, country_name varchar)\n" + + " as 'select distinct c.country_code, c.country_name\n" + + " from user_addresses a, countries c\n" + + " where a.user_id = id\n" + + " and c.country_code = a.country_code';"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("get_countries_for_user")); + + assertTrue(createFunction.getBodyStatements().size() == 1); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); + TTable table = selectSqlStatement.tables.getTable(0); + assertTrue(table.getTableName().toString().equalsIgnoreCase("user_addresses")); + assertTrue(table.getTableName().getLineNo() == 4); + assertTrue (table.getTableName().getColumnNo() == 12); + table = selectSqlStatement.tables.getTable(1); + assertTrue(table.getTableName().toString().equalsIgnoreCase("countries")); + assertTrue(table.getTableName().getLineNo() == 4); + assertTrue (table.getTableName().getColumnNo() == 30); + } + + public void testCoordinates5(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); + sqlparser.sqltext = "create function f_sql_greater (float, float)\n" + + " returns float\n" + + " stable\n" + + " as $$\n" + + " select case when $1 > $2 then $1\n" + + " else $2\n" + + " end\n" + + " $$ language sql;"; + assertTrue(sqlparser.parse() == 0); + + functionVisitor fv = new functionVisitor(); + sqlparser.sqlstatements.get(0).acceptChildren(fv); + assertTrue(fv.LineNo == 5); + assertTrue(fv.ColumnNo == 12); + + } + + public void testPostgresql5(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE OR REPLACE FUNCTION testschema.functionreturnstrigger()\n" + + " RETURNS trigger\n" + + " LANGUAGE plpgsql\n" + + "AS $function$\n" + + "BEGIN\n" + + " IF NEW.last_name <> OLD.last_name THEN\n" + + " INSERT INTO TestSchema.\"TestTable\"(ColumnText1)\n" + + " SELECT ColumnText2 FROM testschema.\"TestTable\";\n" + + " END IF;\n" + + " RETURN NEW;\n" + + "END;\n" + + "$function$"; + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + functionVisitor fv = new functionVisitor(); + sqlparser.sqlstatements.get(0).acceptChildren(fv); + assertTrue(fv.LineNo == 7); + assertTrue(fv.ColumnNo == 42); + + } + + class functionVisitor extends TParseTreeVisitor { + + public long LineNo, ColumnNo; + public void preVisit(TFunctionCall functionCall){ + if (functionCall.getFunctionName().toString().equalsIgnoreCase("cast")){ + LineNo = functionCall.getFunctionName().getLineNo(); + ColumnNo = functionCall.getFunctionName().getColumnNo(); +// System.out.println(functionCall.getFunctionName().getLineNo()); +// System.out.println(functionCall.getFunctionName().getColumnNo()); + } + } + public void preVisit(TCaseExpression caseExpression){ + LineNo = caseExpression.getLineNo(); + ColumnNo = caseExpression.getColumnNo(); +// System.out.println(caseExpression.getStartToken().toString()+ caseExpression.getLineNo()); +// System.out.println(caseExpression.getColumnNo()); + } + + public void preVisit(TObjectName objectName){ + if (objectName.toString().equalsIgnoreCase("ColumnText1")){ + LineNo = objectName.getLineNo(); + ColumnNo = objectName.getColumnNo(); + } + } + + } + +} diff --git a/src/test/java/common/testCreateDatabase.java b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateDatabase.java similarity index 99% rename from src/test/java/common/testCreateDatabase.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testCreateDatabase.java index f1634455..1402f94c 100644 --- a/src/test/java/common/testCreateDatabase.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateDatabase.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbObjectType; diff --git a/src/test/java/common/testCreateFunction.java b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateFunction.java similarity index 95% rename from src/test/java/common/testCreateFunction.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testCreateFunction.java index 8c758a00..4adf5121 100644 --- a/src/test/java/common/testCreateFunction.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateFunction.java @@ -1,60 +1,60 @@ -package common; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.mssql.TMssqlReturn; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.EFunctionReturnsType.frtInlineTableValue; - -public class testCreateFunction extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsparksql); - sqlparser.sqltext = "CREATE FUNCTION simple_udf AS 'SimpleUdf'\n" + - " USING JAR '/tmp/SimpleUdf.jar';"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt stmt = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getFunctionName().toString().equalsIgnoreCase("simple_udf")); - assertTrue(stmt.getClassName().equalsIgnoreCase("'SimpleUdf'")); - assertTrue(stmt.getResourceType().equalsIgnoreCase("JAR")); - assertTrue(stmt.getResourceURI().equalsIgnoreCase("'/tmp/SimpleUdf.jar'")); - } - - public void testReturnTable(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION udfProductInYear (\n" + - "@model_year INT\n" + - ")\n" + - "RETURNS TABLE\n" + - "AS\n" + - "RETURN\n" + - "SELECT \n" + - "product_name,\n" + - "model_year,\n" + - "list_price\n" + - "FROM\n" + - "production.products\n" + - "WHERE\n" + - "model_year = @model_year;"; - System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt stmt = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getFunctionName().toString().equalsIgnoreCase("udfProductInYear")); - assertTrue(stmt.getReturnsType() == frtInlineTableValue); - if (stmt.getReturnsType() == frtInlineTableValue){ - TMssqlReturn mssqlReturn = stmt.getReturnStmt(); - TSelectSqlStatement subquery = mssqlReturn.getSubquery(); - if (subquery != null){ - assertTrue(subquery.getTables().getTable(0).toString().equalsIgnoreCase("production.products")); - } - } - } - -} +package gudusoft.gsqlparser.commonTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import gudusoft.gsqlparser.stmt.mssql.TMssqlReturn; +import junit.framework.TestCase; + +import static gudusoft.gsqlparser.EFunctionReturnsType.frtInlineTableValue; + +public class testCreateFunction extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsparksql); + sqlparser.sqltext = "CREATE FUNCTION simple_udf AS 'SimpleUdf'\n" + + " USING JAR '/tmp/SimpleUdf.jar';"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt stmt = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(stmt.getFunctionName().toString().equalsIgnoreCase("simple_udf")); + assertTrue(stmt.getClassName().equalsIgnoreCase("'SimpleUdf'")); + assertTrue(stmt.getResourceType().equalsIgnoreCase("JAR")); + assertTrue(stmt.getResourceURI().equalsIgnoreCase("'/tmp/SimpleUdf.jar'")); + } + + public void testReturnTable(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE FUNCTION udfProductInYear (\n" + + "@model_year INT\n" + + ")\n" + + "RETURNS TABLE\n" + + "AS\n" + + "RETURN\n" + + "SELECT \n" + + "product_name,\n" + + "model_year,\n" + + "list_price\n" + + "FROM\n" + + "production.products\n" + + "WHERE\n" + + "model_year = @model_year;"; + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt stmt = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(stmt.getFunctionName().toString().equalsIgnoreCase("udfProductInYear")); + assertTrue(stmt.getReturnsType() == frtInlineTableValue); + if (stmt.getReturnsType() == frtInlineTableValue){ + TMssqlReturn mssqlReturn = stmt.getReturnStmt(); + TSelectSqlStatement subquery = mssqlReturn.getSubquery(); + if (subquery != null){ + assertTrue(subquery.getTables().getTable(0).toString().equalsIgnoreCase("production.products")); + } + } + } + +} diff --git a/src/test/java/common/testCreateIndex.java b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateIndex.java similarity index 98% rename from src/test/java/common/testCreateIndex.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testCreateIndex.java index d533ce77..1c6debc8 100644 --- a/src/test/java/common/testCreateIndex.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateIndex.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; /* * Date: 12-1-19 */ diff --git a/src/test/java/common/testCreateSchema.java b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateSchema.java similarity index 99% rename from src/test/java/common/testCreateSchema.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testCreateSchema.java index d7747859..546d5e25 100644 --- a/src/test/java/common/testCreateSchema.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateSchema.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/common/testCreateSequenceStmt.java b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateSequenceStmt.java similarity index 94% rename from src/test/java/common/testCreateSequenceStmt.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testCreateSequenceStmt.java index df5768d4..b487b4b9 100644 --- a/src/test/java/common/testCreateSequenceStmt.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateSequenceStmt.java @@ -1,39 +1,38 @@ -package common; -/* - * Date: 2010-12-31 - * Time: 14:22:44 - */ - -import gudusoft.gsqlparser.ESequenceOptionType; -import gudusoft.gsqlparser.nodes.TPTNodeList; -import gudusoft.gsqlparser.nodes.TSequenceOption; -import gudusoft.gsqlparser.stmt.TCreateSequenceStmt; -import junit.framework.TestCase; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.EDbVendor; - -import java.util.ArrayList; - -public class testCreateSequenceStmt extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE SEQUENCE \"ABCUSA_CUST\".\"DAYPART_CODE_SEQ\" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 150 CACHE 20 NOORDER NOCYCLE ;"; - assertTrue(sqlparser.parse() == 0); - - TCreateSequenceStmt sequence = (TCreateSequenceStmt)sqlparser.sqlstatements.get(0); - assertTrue(sequence.getSequenceName().toString().equalsIgnoreCase("\"ABCUSA_CUST\".\"DAYPART_CODE_SEQ\"")); - - ArrayList options = sequence.getOptions(); - assertTrue(options.size() == 7); - assertTrue(options.get(0).toString().equalsIgnoreCase("MINVALUE 1")); - assertTrue(options.get(0).getSequenceOptionType() == ESequenceOptionType.minValue); - assertTrue(options.get(1).toString().equalsIgnoreCase("MAXVALUE 999999999999999999999999999")); - assertTrue(options.get(2).toString().equalsIgnoreCase("INCREMENT BY 1")); - assertTrue(options.get(3).toString().equalsIgnoreCase("START WITH 150")); - assertTrue(options.get(4).toString().equalsIgnoreCase("CACHE 20")); - assertTrue(options.get(5).toString().equalsIgnoreCase("NOORDER")); - assertTrue(options.get(6).toString().equalsIgnoreCase("NOCYCLE")); - } - -} +package gudusoft.gsqlparser.commonTest; +/* + * Date: 2010-12-31 + * Time: 14:22:44 + */ + +import gudusoft.gsqlparser.ESequenceOptionType; +import gudusoft.gsqlparser.nodes.TSequenceOption; +import gudusoft.gsqlparser.stmt.TCreateSequenceStmt; +import junit.framework.TestCase; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.EDbVendor; + +import java.util.ArrayList; + +public class testCreateSequenceStmt extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "CREATE SEQUENCE \"ABCUSA_CUST\".\"DAYPART_CODE_SEQ\" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 150 CACHE 20 NOORDER NOCYCLE ;"; + assertTrue(sqlparser.parse() == 0); + + TCreateSequenceStmt sequence = (TCreateSequenceStmt)sqlparser.sqlstatements.get(0); + assertTrue(sequence.getSequenceName().toString().equalsIgnoreCase("\"ABCUSA_CUST\".\"DAYPART_CODE_SEQ\"")); + + ArrayList options = sequence.getOptions(); + assertTrue(options.size() == 7); + assertTrue(options.get(0).toString().equalsIgnoreCase("MINVALUE 1")); + assertTrue(options.get(0).getSequenceOptionType() == ESequenceOptionType.minValue); + assertTrue(options.get(1).toString().equalsIgnoreCase("MAXVALUE 999999999999999999999999999")); + assertTrue(options.get(2).toString().equalsIgnoreCase("INCREMENT BY 1")); + assertTrue(options.get(3).toString().equalsIgnoreCase("START WITH 150")); + assertTrue(options.get(4).toString().equalsIgnoreCase("CACHE 20")); + assertTrue(options.get(5).toString().equalsIgnoreCase("NOORDER")); + assertTrue(options.get(6).toString().equalsIgnoreCase("NOCYCLE")); + } + +} diff --git a/src/test/java/common/testCreateSynonym.java b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateSynonym.java similarity index 97% rename from src/test/java/common/testCreateSynonym.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testCreateSynonym.java index 379358aa..0300eb55 100644 --- a/src/test/java/common/testCreateSynonym.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateSynonym.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/common/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateTable.java similarity index 97% rename from src/test/java/common/testCreateTable.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testCreateTable.java index 85117b9f..b71ee825 100644 --- a/src/test/java/common/testCreateTable.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateTable.java @@ -1,132 +1,132 @@ -package common; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableKind; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCreateTable extends TestCase { - - public void testCreateTableAsTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE a AS TABLE b"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("a")); - assertTrue(createTable.getAsTable().toString().equalsIgnoreCase("b")); - } - - public void testCreateTableClone(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create table orders_clone_restore clone orders at (timestamp => to_timestamp_tz('04/05/2013 01:02:03', 'mm/dd/yyyy hh24:mi:ss'));"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("orders_clone_restore")); - assertTrue(createTable.getCloneSourceTable().toString().equalsIgnoreCase("orders")); - } - - public void testCreateTableLike(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE TABLE new_table LIKE old_table;"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("new_table")); - assertTrue(createTable.getLikeTableName().toString().equalsIgnoreCase("old_table")); - } - - public void testTableTransient(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE TRANSIENT TABLE \"TestTable4\" CLUSTER BY LINEAR(CR_RETURNED_DATE_SK, CR_ITEM_SK)\n" + - "(\n" + - "\"Col1\" int NOT NULL\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableKinds().contains(ETableKind.etkTransient)); - } - - public void testDuplicateColumn(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create table all_data_types ( \n" + - " col1 GOOGLE,\n" + - " col1 CRICBUZZ,\n" + - " col1 GOIBIBO,\n" + - " col1 AIRINDIA\n" + - ");"; - assertTrue(sqlparser.parse() != 0); - } - - public void testTemporaryTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "create temporary table vt (id int, name varchar(1)) distribute on(id)"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTargetTable().toString().equalsIgnoreCase("vt")); - assertTrue(createTable.getTableKinds().contains(ETableKind.etkTemporary)); - - sqlparser.sqltext = "CREATE TEMP TABLE cows2 AS SELECT cname, cbreed FROM cows DISTRIBUTE ON RANDOM;"; - assertTrue(sqlparser.parse() == 0); - - createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTargetTable().toString().equalsIgnoreCase("cows2")); - // System.out.println(createTable.getTableKinds()); - assertTrue(createTable.getTableKinds().contains(ETableKind.etkTemp)); - - } - - public void testSAMEAS() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE demo_ext SAMEAS t1 USING (dataobject ('/tmp/demo.out' ) DELIMITER '|');"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getAsTable().toString().equalsIgnoreCase("t1")); - } - - public void testAsSubquery() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE TEMP TABLE PROD_ETL.PHDM.TEMP_FEP_CONTRACT_ENROLLMENT_COVERAGE AS\n" + - "SELECT DISTINCT \n" + - " CAST('CONTRACTENROLLMENT' AS VARCHAR(25)) AS SUBSCR_CVRG_DATA_SRC_CD,\n" + - " CES.CONTRACT_R_NUMBER, \n" + - " CES.PRODUCT_CODE,\n" + - " CES.FAMILY_STATUS_CODE,\n" + - " GREATEST(CES.CONTRACT_ENROLLMENT_EFFECTIVE_DATE,CE.BLUE_CROSS_PLAN_CODE_EFFECTIVE_DATE) AS BEGIN_DATE, \n" + - " LEAST(CES.CONTRACT_ENROLLMENT_TERMINATION_DATE,CE.BLUE_CROSS_PLAN_CODE_TERMINATION_DATE) AS END_DATE\n" + - "FROM PROD_STG.FEP_IDEA.CONTRACTENROLLMENTEXTRACT_STG01 CES\n" + - "INNER JOIN PROD_STG.FEP_IDEA.CONTRACTPLANEXTRACT_STG01 CE\n" + - "ON CES.CONTRACT_R_NUMBER = CE.CONTRACT_ID_R_NUMBER\n" + - "WHERE (CES.CONTRACT_ENROLLMENT_EFFECTIVE_DATE, CES.CONTRACT_ENROLLMENT_TERMINATION_DATE)\n" + - " OVERLAPS\n" + - " (CE.BLUE_CROSS_PLAN_CODE_EFFECTIVE_DATE, CE.BLUE_CROSS_PLAN_CODE_TERMINATION_DATE)\n" + - "AND CES.CONTRACT_ACTIVE_FLAG = 'Y'\n" + - "AND CES.CONTRACT_DELETE_FLAG = 'N'\n" + - "DISTRIBUTE ON (CONTRACT_R_NUMBER);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("PROD_ETL.PHDM.TEMP_FEP_CONTRACT_ENROLLMENT_COVERAGE")); - TSelectSqlStatement subquery = createTable.getSubQuery(); - assertTrue(subquery.getTables().getTable(0).toString().equalsIgnoreCase("PROD_STG.FEP_IDEA.CONTRACTENROLLMENTEXTRACT_STG01")); - - } - - public void testOnCommit() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE GLOBAL TEMPORARY TABLE \"TTABLE\" (\n" + - " \"id\" NUMBER(11 , 0)\n" + - " )\n" + - " ON COMMIT PRESERVE ROWS;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.toString().equalsIgnoreCase("CREATE GLOBAL TEMPORARY TABLE \"TTABLE\" (\n" + - " \"id\" NUMBER(11 , 0)\n" + - " )\n" + - " ON COMMIT PRESERVE ROWS;")); - } -} +package gudusoft.gsqlparser.commonTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ETableKind; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testCreateTable extends TestCase { + + public void testCreateTableAsTable(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE TABLE a AS TABLE b"; + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("a")); + assertTrue(createTable.getAsTable().toString().equalsIgnoreCase("b")); + } + + public void testCreateTableClone(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create table orders_clone_restore clone orders at (timestamp => to_timestamp_tz('04/05/2013 01:02:03', 'mm/dd/yyyy hh24:mi:ss'));"; + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("orders_clone_restore")); + assertTrue(createTable.getCloneSourceTable().toString().equalsIgnoreCase("orders")); + } + + public void testCreateTableLike(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE TABLE new_table LIKE old_table;"; + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("new_table")); + assertTrue(createTable.getLikeTableName().toString().equalsIgnoreCase("old_table")); + } + + public void testTableTransient(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE OR REPLACE TRANSIENT TABLE \"TestTable4\" CLUSTER BY LINEAR(CR_RETURNED_DATE_SK, CR_ITEM_SK)\n" + + "(\n" + + "\"Col1\" int NOT NULL\n" + + ");"; + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableKinds().contains(ETableKind.etkTransient)); + } + + public void testDuplicateColumn(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "create table all_data_types ( \n" + + " col1 GOOGLE,\n" + + " col1 CRICBUZZ,\n" + + " col1 GOIBIBO,\n" + + " col1 AIRINDIA\n" + + ");"; + assertTrue(sqlparser.parse() != 0); + } + + public void testTemporaryTable(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); + sqlparser.sqltext = "create temporary table vt (id int, name varchar(1)) distribute on(id)"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTargetTable().toString().equalsIgnoreCase("vt")); + assertTrue(createTable.getTableKinds().contains(ETableKind.etkTemporary)); + + sqlparser.sqltext = "CREATE TEMP TABLE cows2 AS SELECT cname, cbreed FROM cows DISTRIBUTE ON RANDOM;"; + assertTrue(sqlparser.parse() == 0); + + createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTargetTable().toString().equalsIgnoreCase("cows2")); + // System.out.println(createTable.getTableKinds()); + assertTrue(createTable.getTableKinds().contains(ETableKind.etkTemp)); + + } + + public void testSAMEAS() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); + sqlparser.sqltext = "CREATE EXTERNAL TABLE demo_ext SAMEAS t1 USING (dataobject ('/tmp/demo.out' ) DELIMITER '|');"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); + assertTrue(createTable.getAsTable().toString().equalsIgnoreCase("t1")); + } + + public void testAsSubquery() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); + sqlparser.sqltext = "CREATE TEMP TABLE PROD_ETL.PHDM.TEMP_FEP_CONTRACT_ENROLLMENT_COVERAGE AS\n" + + "SELECT DISTINCT \n" + + " CAST('CONTRACTENROLLMENT' AS VARCHAR(25)) AS SUBSCR_CVRG_DATA_SRC_CD,\n" + + " CES.CONTRACT_R_NUMBER, \n" + + " CES.PRODUCT_CODE,\n" + + " CES.FAMILY_STATUS_CODE,\n" + + " GREATEST(CES.CONTRACT_ENROLLMENT_EFFECTIVE_DATE,CE.BLUE_CROSS_PLAN_CODE_EFFECTIVE_DATE) AS BEGIN_DATE, \n" + + " LEAST(CES.CONTRACT_ENROLLMENT_TERMINATION_DATE,CE.BLUE_CROSS_PLAN_CODE_TERMINATION_DATE) AS END_DATE\n" + + "FROM PROD_STG.FEP_IDEA.CONTRACTENROLLMENTEXTRACT_STG01 CES\n" + + "INNER JOIN PROD_STG.FEP_IDEA.CONTRACTPLANEXTRACT_STG01 CE\n" + + "ON CES.CONTRACT_R_NUMBER = CE.CONTRACT_ID_R_NUMBER\n" + + "WHERE (CES.CONTRACT_ENROLLMENT_EFFECTIVE_DATE, CES.CONTRACT_ENROLLMENT_TERMINATION_DATE)\n" + + " OVERLAPS\n" + + " (CE.BLUE_CROSS_PLAN_CODE_EFFECTIVE_DATE, CE.BLUE_CROSS_PLAN_CODE_TERMINATION_DATE)\n" + + "AND CES.CONTRACT_ACTIVE_FLAG = 'Y'\n" + + "AND CES.CONTRACT_DELETE_FLAG = 'N'\n" + + "DISTRIBUTE ON (CONTRACT_R_NUMBER);"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("PROD_ETL.PHDM.TEMP_FEP_CONTRACT_ENROLLMENT_COVERAGE")); + TSelectSqlStatement subquery = createTable.getSubQuery(); + assertTrue(subquery.getTables().getTable(0).toString().equalsIgnoreCase("PROD_STG.FEP_IDEA.CONTRACTENROLLMENTEXTRACT_STG01")); + + } + + public void testOnCommit() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "CREATE GLOBAL TEMPORARY TABLE \"TTABLE\" (\n" + + " \"id\" NUMBER(11 , 0)\n" + + " )\n" + + " ON COMMIT PRESERVE ROWS;"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); + assertTrue(createTable.toString().equalsIgnoreCase("CREATE GLOBAL TEMPORARY TABLE \"TTABLE\" (\n" + + " \"id\" NUMBER(11 , 0)\n" + + " )\n" + + " ON COMMIT PRESERVE ROWS;")); + } +} diff --git a/src/test/java/common/testCreateTableOption.java b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateTableOption.java similarity index 97% rename from src/test/java/common/testCreateTableOption.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testCreateTableOption.java index 744b5407..b893060d 100644 --- a/src/test/java/common/testCreateTableOption.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testCreateTableOption.java @@ -1,121 +1,121 @@ -package common; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.nodes.TCreateTableOption; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -import java.util.ArrayList; - -import static gudusoft.gsqlparser.ECreateTableOption.*; - -public class testCreateTableOption extends TestCase { - - public void testDateRetentionTime(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE TABLE \"TestTable\"\n" + - "(\n" + - "\"Col1\" int NOT NULL\n" + - ")\n" + - "DATA_RETENTION_TIME_IN_DAYS = 12;"; - - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - ArrayList createTableOptions = createTableSqlStatement.getTableOptions(); - TCreateTableOption createTableOption = createTableOptions.get(0); - assertTrue(createTableOption.getCreateTableOptionType() == etoDateRetentionTimeInDays); - assertTrue(createTableOptions.get(0).getDateRetentionInDays().toString().equalsIgnoreCase("12")); - } - - - public void testTableComment(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE TABLE \"TestTable\"\n" + - "(\n" + - "\"Col1\" int NOT NULL COMMENT 'Test comment.',\n" + - "\"Col2\" int NOT NULL COMMENT 'Test comment 2.'\n" + - ")\n" + - "COMMENT = 'Table comment';"; - - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - ArrayList createTableOptions = createTableSqlStatement.getTableOptions(); - TCreateTableOption createTableOption = createTableOptions.get(0); - assertTrue(createTableOption.getCreateTableOptionType() == etoComment); - assertTrue(createTableOption.getComment().toString().equalsIgnoreCase("'Table comment'")); - assertTrue(createTableSqlStatement.getTableComment().toString().equalsIgnoreCase("'Table comment'")); - TColumnDefinition cd = createTableSqlStatement.getColumnList().getColumn(0); - assertTrue(cd.getComment().toString().equalsIgnoreCase("'Test comment.'")); - } - - public void testCluster(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create table \"TestSchema\".\"TestTable\" (\n" + - "col1 int,\n" + - "\"col2\" int\n" + - ")\n" + - "cluster by\n" + - "(\n" + - "\"col2\"\n" + - ",\n" + - "col1\n" + - ");"; - - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - ArrayList createTableOptions = createTableSqlStatement.getTableOptions(); - TCreateTableOption createTableOption = createTableOptions.get(0); - assertTrue(createTableOption.getCreateTableOptionType() == etoClusterBy); - assertTrue(createTableOptions.get(0).getExpressionList().size() == 2); - } - - public void testStageCopyOptions(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE TABLE \"TestTable\"\n" + - "(\n" + - "\"Col1\" int NOT NULL\n" + - ")\n" + - "STAGE_COPY_OPTIONS =\n" + - "(\n" + - "ON_ERROR = CONTINUE\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - ArrayList createTableOptions = createTableSqlStatement.getTableOptions(); - TCreateTableOption createTableOption = createTableOptions.get(0); - assertTrue(createTableOption.getCreateTableOptionType() == etoStageCopyOptions); - assertTrue(createTableOptions.get(0).getCopyOptions().toString().trim().equalsIgnoreCase("ON_ERROR = CONTINUE")); - } - - public void testStageFileFormat(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE TABLE \"TestTable1\"\n" + - "(\n" + - "\"Col1\" int NOT NULL\n" + - ")\n" + - "STAGE_FILE_FORMAT =\n" + - "(\n" + - "RECORD_DELIMITER = ''''\n" + - "ESCAPE_UNENCLOSED_FIELD = ''''\n" + - "ESCAPE = ''\n" + - "NULL_IF = ( 'a''a', '''bb' )\n" + - "FIELD_DELIMITER = ')'\n" + - "FIELD_OPTIONALLY_ENCLOSED_BY = '\\''\n" + - ")\n" + - "COMMENT='Test';"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - ArrayList createTableOptions = createTableSqlStatement.getTableOptions(); - TCreateTableOption createTableOption = createTableOptions.get(0); - assertTrue(createTableOption.getCreateTableOptionType() == etoStageFileFormat); - //System.out.println(createTableOptions.get(0).getStageFileFormat().toString()); - assertTrue(createTableOptions.get(0).getStageFileFormat().toString().trim().equalsIgnoreCase("RECORD_DELIMITER = ''''\n" + - "ESCAPE_UNENCLOSED_FIELD = ''''\n" + - "ESCAPE = ''\n" + - "NULL_IF = ( 'a''a', '''bb' )\n" + - "FIELD_DELIMITER = ')'\n" + - "FIELD_OPTIONALLY_ENCLOSED_BY = '\\''")); - } -} +package gudusoft.gsqlparser.commonTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TColumnDefinition; +import gudusoft.gsqlparser.nodes.TCreateTableOption; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; +import junit.framework.TestCase; + +import java.util.ArrayList; + +import static gudusoft.gsqlparser.ECreateTableOption.*; + +public class testCreateTableOption extends TestCase { + + public void testDateRetentionTime(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE TABLE \"TestTable\"\n" + + "(\n" + + "\"Col1\" int NOT NULL\n" + + ")\n" + + "DATA_RETENTION_TIME_IN_DAYS = 12;"; + + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + ArrayList createTableOptions = createTableSqlStatement.getTableOptions(); + TCreateTableOption createTableOption = createTableOptions.get(0); + assertTrue(createTableOption.getCreateTableOptionType() == etoDateRetentionTimeInDays); + assertTrue(createTableOptions.get(0).getDateRetentionInDays().toString().equalsIgnoreCase("12")); + } + + + public void testTableComment(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE TABLE \"TestTable\"\n" + + "(\n" + + "\"Col1\" int NOT NULL COMMENT 'Test comment.',\n" + + "\"Col2\" int NOT NULL COMMENT 'Test comment 2.'\n" + + ")\n" + + "COMMENT = 'Table comment';"; + + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + ArrayList createTableOptions = createTableSqlStatement.getTableOptions(); + TCreateTableOption createTableOption = createTableOptions.get(0); + assertTrue(createTableOption.getCreateTableOptionType() == etoComment); + assertTrue(createTableOption.getComment().toString().equalsIgnoreCase("'Table comment'")); + assertTrue(createTableSqlStatement.getTableComment().toString().equalsIgnoreCase("'Table comment'")); + TColumnDefinition cd = createTableSqlStatement.getColumnList().getColumn(0); + assertTrue(cd.getComment().toString().equalsIgnoreCase("'Test comment.'")); + } + + public void testCluster(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create table \"TestSchema\".\"TestTable\" (\n" + + "col1 int,\n" + + "\"col2\" int\n" + + ")\n" + + "cluster by\n" + + "(\n" + + "\"col2\"\n" + + ",\n" + + "col1\n" + + ");"; + + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + ArrayList createTableOptions = createTableSqlStatement.getTableOptions(); + TCreateTableOption createTableOption = createTableOptions.get(0); + assertTrue(createTableOption.getCreateTableOptionType() == etoClusterBy); + assertTrue(createTableOptions.get(0).getExpressionList().size() == 2); + } + + public void testStageCopyOptions(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE TABLE \"TestTable\"\n" + + "(\n" + + "\"Col1\" int NOT NULL\n" + + ")\n" + + "STAGE_COPY_OPTIONS =\n" + + "(\n" + + "ON_ERROR = CONTINUE\n" + + ");"; + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + ArrayList createTableOptions = createTableSqlStatement.getTableOptions(); + TCreateTableOption createTableOption = createTableOptions.get(0); + assertTrue(createTableOption.getCreateTableOptionType() == etoStageCopyOptions); + assertTrue(createTableOptions.get(0).getCopyOptions().toString().trim().equalsIgnoreCase("ON_ERROR = CONTINUE")); + } + + public void testStageFileFormat(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE TABLE \"TestTable1\"\n" + + "(\n" + + "\"Col1\" int NOT NULL\n" + + ")\n" + + "STAGE_FILE_FORMAT =\n" + + "(\n" + + "RECORD_DELIMITER = ''''\n" + + "ESCAPE_UNENCLOSED_FIELD = ''''\n" + + "ESCAPE = ''\n" + + "NULL_IF = ( 'a''a', '''bb' )\n" + + "FIELD_DELIMITER = ')'\n" + + "FIELD_OPTIONALLY_ENCLOSED_BY = '\\''\n" + + ")\n" + + "COMMENT='Test';"; + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + ArrayList createTableOptions = createTableSqlStatement.getTableOptions(); + TCreateTableOption createTableOption = createTableOptions.get(0); + assertTrue(createTableOption.getCreateTableOptionType() == etoStageFileFormat); + //System.out.println(createTableOptions.get(0).getStageFileFormat().toString()); + assertTrue(createTableOptions.get(0).getStageFileFormat().toString().trim().equalsIgnoreCase("RECORD_DELIMITER = ''''\n" + + "ESCAPE_UNENCLOSED_FIELD = ''''\n" + + "ESCAPE = ''\n" + + "NULL_IF = ( 'a''a', '''bb' )\n" + + "FIELD_DELIMITER = ')'\n" + + "FIELD_OPTIONALLY_ENCLOSED_BY = '\\''")); + } +} diff --git a/src/test/java/common/testDBVendor.java b/src/test/java/gudusoft/gsqlparser/commonTest/testDBVendor.java similarity index 95% rename from src/test/java/common/testDBVendor.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testDBVendor.java index f9b94800..e4369f08 100644 --- a/src/test/java/common/testDBVendor.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testDBVendor.java @@ -1,23 +1,23 @@ -package common; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.sqlenv.TSQLEnv; -import junit.framework.TestCase; - -public class testDBVendor extends TestCase { - - public void test1(){ - for (EDbVendor dbVendor : EDbVendor.values()) { - assertTrue(dbVendor == TGSqlParser.getDBVendorByName(dbVendor.toString().substring(3))); - // System.out.println(dbVendor.toString().substring(3)); - } - } - - public void test2(){ - assertTrue(EDbVendor.values().length == TSQLEnv.columnCollationCaseSensitive.length); - assertTrue(EDbVendor.values().length == TSQLEnv.tableCollationCaseSensitive.length); - assertTrue(EDbVendor.values().length == TSQLEnv.defaultCollationCaseSensitive.length); - } - +package gudusoft.gsqlparser.commonTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.sqlenv.TSQLEnv; +import junit.framework.TestCase; + +public class testDBVendor extends TestCase { + + public void test1(){ + for (EDbVendor dbVendor : EDbVendor.values()) { + assertTrue(dbVendor == TGSqlParser.getDBVendorByName(dbVendor.toString().substring(3))); + // System.out.println(dbVendor.toString().substring(3)); + } + } + + public void test2(){ + assertTrue(EDbVendor.values().length == TSQLEnv.columnCollationCaseSensitive.length); + assertTrue(EDbVendor.values().length == TSQLEnv.tableCollationCaseSensitive.length); + assertTrue(EDbVendor.values().length == TSQLEnv.defaultCollationCaseSensitive.length); + } + } \ No newline at end of file diff --git a/src/test/java/common/testDatatype.java b/src/test/java/gudusoft/gsqlparser/commonTest/testDatatype.java similarity index 97% rename from src/test/java/common/testDatatype.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testDatatype.java index b335e4e4..054efcb6 100644 --- a/src/test/java/common/testDatatype.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testDatatype.java @@ -1,143 +1,143 @@ -package common; -/* - * Date: 12-8-10 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; -import gudusoft.gsqlparser.stmt.TCommonBlock; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TVarDeclStmt; -import junit.framework.TestCase; - -public class testDatatype extends TestCase { - - public void testNvarchar(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "Select 1::nvarchar(20)"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = selectSqlStatement.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.typecast_t); - assertTrue(resultColumn.getExpr().getTypeName().getDataType() == EDataType.nvarchar_t); - assertTrue(resultColumn.getExpr().getTypeName().getLength().toString().equalsIgnoreCase("20")); - } - - public void testDateAttribute(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select CAST('20120802' AS DATE FORMAT 'yyyymmdd') from b;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = selectSqlStatement.getResultColumnList().getResultColumn(0); - TFunctionCall functionCall = resultColumn.getExpr().getFunctionCall(); - TTypeName datatype = functionCall.getTypename(); - assertTrue(functionCall.getDataConversionItems().size() == 2); - TDataConversionItem item0 = functionCall.getDataConversionItems().get(0); - assertTrue(item0.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); - assertTrue(item0.getDataType().getDataType() == EDataType.date_t); - - TDataConversionItem item1 = functionCall.getDataConversionItems().get(1); - assertTrue(item1.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - assertTrue(item1.getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.format_t); - -// assertTrue(datatype.toString().equalsIgnoreCase("DATE FORMAT 'yyyymmdd'")); -// TDatatypeAttribute attribute = datatype.getDatatypeAttributeList().getElement(0); -// assertTrue(attribute.getValue_literal().toString().equalsIgnoreCase("'yyyymmdd'")); - } - - public void testrowtype0(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "DECLARE\n" + - " SUBTYPE v_empid_subtype IS employees_temp.empid%TYPE;\n" + - " SUBTYPE v_emprec_subtype IS employees_temp%ROWTYPE; \n" + - " v_empid v_empid_subtype;\n" + - "BEGIN\n" + - " v_empid := NULL; -- this works, null constraint is not inherited\n" + - " DBMS_OUTPUT.PUT_LINE('v_emprec.deptname: ' || v_emprec.deptname); \n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - - TCommonBlock statement = (TCommonBlock)sqlparser.sqlstatements.get(0); - TVarDeclStmt declStmt0 = (TVarDeclStmt)statement.getDeclareStatements().get(0); - TTypeName datatype0 = declStmt0.getDataType(); - assertTrue(datatype0.getDatatypeAttributeList().getElement(0).getAttributeType() == EDataTypeAttribute.plsql_type_t); - - TVarDeclStmt declStmt1 = (TVarDeclStmt)statement.getDeclareStatements().get(1); - TTypeName datatype1 = declStmt1.getDataType(); - assertTrue(datatype1.getDatatypeAttributeList().getElement(0).getAttributeType() == EDataTypeAttribute.plsql_rowtype_t); - } - - public void testVarchar(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE TABLE [dbo].[DimAccount](\n" + - " [AccountKey] [int] IDENTITY(1,1) NOT NULL,\n" + - " [ParentAccountKey] [int] NULL,\n" + - " [AccountCodeAlternateKey] [int] NULL,\n" + - " [ParentAccountCodeAlternateKey] [int] NULL,\n" + - " [AccountDescription] [nvarchar](50) NULL,\n" + - " [AccountType] [nvarchar](50) NULL,\n" + - " [Operator] [nvarchar](50) NULL,\n" + - " [CustomMembers] [nvarchar](300) NULL,\n" + - " [ValueType] [nvarchar](50) NULL,\n" + - " [CustomMemberOptions] [nvarchar](200) NULL \n" + - ") ON [PRIMARY];"; - - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTableSqlStatement.getColumnList().getColumn(4); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("[AccountDescription]")); - assertTrue(cd.getDatatype().getDataType() == EDataType.nvarchar_t); - assertTrue(cd.getDatatype().getLength().toString().equalsIgnoreCase("50")); - - //System.out.print(cd.getDatatype().getDataType()); - } - - - public void testVerticalDatatypeExplictCast(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvvertica); - sqlparser.sqltext = "SELECT(FLOAT '123.5')::INT;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = selectSqlStatement.getResultColumnList().getResultColumn(0); - TExpression expr = resultColumn.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.typecast_t); - assertTrue(expr.getTypeName().getDataType() == EDataType.int_t); - TExpression expr1 = expr.getLeftOperand(); - assertTrue(expr1.getExpressionType() == EExpressionType.parenthesis_t); - TExpression expr2 = expr1.getLeftOperand(); - assertTrue(expr2.getExpressionType() == EExpressionType.simple_constant_t); - assertTrue(expr2.getConstantOperand().getValue().equalsIgnoreCase("123.5")); - assertTrue(expr2.getConstantOperand().getCastType().getDataType() == EDataType.float_t); - } - - public void testVerticalDateExplictCast(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvvertica); - sqlparser.sqltext = "SELECT DATE 'now'"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = selectSqlStatement.getResultColumnList().getResultColumn(0); - TExpression expr = resultColumn.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.simple_constant_t); - assertTrue(expr.getConstantOperand().getCastType().getDataType() == EDataType.date_t); - assertTrue(expr.getConstantOperand().getValue().equalsIgnoreCase("now")); - - - sqlparser.sqltext = "SELECT DATE('now')"; - assertTrue(sqlparser.parse() == 0); - - selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - resultColumn = selectSqlStatement.getResultColumnList().getResultColumn(0); - expr = resultColumn.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.function_t); - TFunctionCall fn = expr.getFunctionCall(); - assertTrue(fn.getFunctionName().toString().equalsIgnoreCase("DATE")); - } - -} +package gudusoft.gsqlparser.commonTest; +/* + * Date: 12-8-10 + */ + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; +import gudusoft.gsqlparser.stmt.TCommonBlock; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import gudusoft.gsqlparser.stmt.TVarDeclStmt; +import junit.framework.TestCase; + +public class testDatatype extends TestCase { + + public void testNvarchar(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); + sqlparser.sqltext = "Select 1::nvarchar(20)"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = selectSqlStatement.getResultColumnList().getResultColumn(0); + assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.typecast_t); + assertTrue(resultColumn.getExpr().getTypeName().getDataType() == EDataType.nvarchar_t); + assertTrue(resultColumn.getExpr().getTypeName().getLength().toString().equalsIgnoreCase("20")); + } + + public void testDateAttribute(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select CAST('20120802' AS DATE FORMAT 'yyyymmdd') from b;"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = selectSqlStatement.getResultColumnList().getResultColumn(0); + TFunctionCall functionCall = resultColumn.getExpr().getFunctionCall(); + TTypeName datatype = functionCall.getTypename(); + assertTrue(functionCall.getDataConversionItems().size() == 2); + TDataConversionItem item0 = functionCall.getDataConversionItems().get(0); + assertTrue(item0.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); + assertTrue(item0.getDataType().getDataType() == EDataType.date_t); + + TDataConversionItem item1 = functionCall.getDataConversionItems().get(1); + assertTrue(item1.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); + assertTrue(item1.getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.format_t); + +// assertTrue(datatype.toString().equalsIgnoreCase("DATE FORMAT 'yyyymmdd'")); +// TDatatypeAttribute attribute = datatype.getDatatypeAttributeList().getElement(0); +// assertTrue(attribute.getValue_literal().toString().equalsIgnoreCase("'yyyymmdd'")); + } + + public void testrowtype0(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "DECLARE\n" + + " SUBTYPE v_empid_subtype IS employees_temp.empid%TYPE;\n" + + " SUBTYPE v_emprec_subtype IS employees_temp%ROWTYPE; \n" + + " v_empid v_empid_subtype;\n" + + "BEGIN\n" + + " v_empid := NULL; -- this works, null constraint is not inherited\n" + + " DBMS_OUTPUT.PUT_LINE('v_emprec.deptname: ' || v_emprec.deptname); \n" + + "END;"; + assertTrue(sqlparser.parse() == 0); + + TCommonBlock statement = (TCommonBlock)sqlparser.sqlstatements.get(0); + TVarDeclStmt declStmt0 = (TVarDeclStmt)statement.getDeclareStatements().get(0); + TTypeName datatype0 = declStmt0.getDataType(); + assertTrue(datatype0.getDatatypeAttributeList().getElement(0).getAttributeType() == EDataTypeAttribute.plsql_type_t); + + TVarDeclStmt declStmt1 = (TVarDeclStmt)statement.getDeclareStatements().get(1); + TTypeName datatype1 = declStmt1.getDataType(); + assertTrue(datatype1.getDatatypeAttributeList().getElement(0).getAttributeType() == EDataTypeAttribute.plsql_rowtype_t); + } + + public void testVarchar(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE TABLE [dbo].[DimAccount](\n" + + " [AccountKey] [int] IDENTITY(1,1) NOT NULL,\n" + + " [ParentAccountKey] [int] NULL,\n" + + " [AccountCodeAlternateKey] [int] NULL,\n" + + " [ParentAccountCodeAlternateKey] [int] NULL,\n" + + " [AccountDescription] [nvarchar](50) NULL,\n" + + " [AccountType] [nvarchar](50) NULL,\n" + + " [Operator] [nvarchar](50) NULL,\n" + + " [CustomMembers] [nvarchar](300) NULL,\n" + + " [ValueType] [nvarchar](50) NULL,\n" + + " [CustomMemberOptions] [nvarchar](200) NULL \n" + + ") ON [PRIMARY];"; + + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TColumnDefinition cd = createTableSqlStatement.getColumnList().getColumn(4); + assertTrue(cd.getColumnName().toString().equalsIgnoreCase("[AccountDescription]")); + assertTrue(cd.getDatatype().getDataType() == EDataType.nvarchar_t); + assertTrue(cd.getDatatype().getLength().toString().equalsIgnoreCase("50")); + + //System.out.print(cd.getDatatype().getDataType()); + } + + + public void testVerticalDatatypeExplictCast(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvvertica); + sqlparser.sqltext = "SELECT(FLOAT '123.5')::INT;"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = selectSqlStatement.getResultColumnList().getResultColumn(0); + TExpression expr = resultColumn.getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.typecast_t); + assertTrue(expr.getTypeName().getDataType() == EDataType.int_t); + TExpression expr1 = expr.getLeftOperand(); + assertTrue(expr1.getExpressionType() == EExpressionType.parenthesis_t); + TExpression expr2 = expr1.getLeftOperand(); + assertTrue(expr2.getExpressionType() == EExpressionType.simple_constant_t); + assertTrue(expr2.getConstantOperand().getValue().equalsIgnoreCase("123.5")); + assertTrue(expr2.getConstantOperand().getCastType().getDataType() == EDataType.float_t); + } + + public void testVerticalDateExplictCast(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvvertica); + sqlparser.sqltext = "SELECT DATE 'now'"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = selectSqlStatement.getResultColumnList().getResultColumn(0); + TExpression expr = resultColumn.getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.simple_constant_t); + assertTrue(expr.getConstantOperand().getCastType().getDataType() == EDataType.date_t); + assertTrue(expr.getConstantOperand().getValue().equalsIgnoreCase("now")); + + + sqlparser.sqltext = "SELECT DATE('now')"; + assertTrue(sqlparser.parse() == 0); + + selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + resultColumn = selectSqlStatement.getResultColumnList().getResultColumn(0); + expr = resultColumn.getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.function_t); + TFunctionCall fn = expr.getFunctionCall(); + assertTrue(fn.getFunctionName().toString().equalsIgnoreCase("DATE")); + } + +} diff --git a/src/test/java/common/testDeleteStmt.java b/src/test/java/gudusoft/gsqlparser/commonTest/testDeleteStmt.java similarity index 96% rename from src/test/java/common/testDeleteStmt.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testDeleteStmt.java index 1b49113c..35d58f2f 100644 --- a/src/test/java/common/testDeleteStmt.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testDeleteStmt.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/common/testDistributeBy.java b/src/test/java/gudusoft/gsqlparser/commonTest/testDistributeBy.java similarity index 97% rename from src/test/java/common/testDistributeBy.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testDistributeBy.java index 4af25a41..86e753c1 100644 --- a/src/test/java/common/testDistributeBy.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testDistributeBy.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/common/testDropDatabase.java b/src/test/java/gudusoft/gsqlparser/commonTest/testDropDatabase.java similarity index 95% rename from src/test/java/common/testDropDatabase.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testDropDatabase.java index 6801a342..8159c567 100644 --- a/src/test/java/common/testDropDatabase.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testDropDatabase.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/common/testDropIndex.java b/src/test/java/gudusoft/gsqlparser/commonTest/testDropIndex.java similarity index 97% rename from src/test/java/common/testDropIndex.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testDropIndex.java index 2a97dac6..7ec3ebf7 100644 --- a/src/test/java/common/testDropIndex.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testDropIndex.java @@ -1,33 +1,33 @@ -package common; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EKeyReferenceType; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropIndexSqlStatement; -import junit.framework.TestCase; - -public class testDropIndex extends TestCase { - - public void testDropRestrictType(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "DROP INDEX IF EXISTS \"public\".\"batch_id_idx\" CASCADE;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstdropindex); - TDropIndexSqlStatement dropIndex = (TDropIndexSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(dropIndex.getIndexName().toString().equalsIgnoreCase("\"public\".\"batch_id_idx\"")); - assertTrue(dropIndex.getDropRestrictType() == EKeyReferenceType.cascade); - } - - - public void testDropSchema(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "DROP UNIQUE INDEX XPKTOA_ACCT_DETL_AGE_T ON idw_rpt_data.TOA_ACCT_DETL_AGE_T;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstdropindex); - TDropIndexSqlStatement dropIndex = (TDropIndexSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(dropIndex.getIndexName().toString().equalsIgnoreCase("XPKTOA_ACCT_DETL_AGE_T")); - assertTrue(dropIndex.getTableName().toString().equalsIgnoreCase("idw_rpt_data.TOA_ACCT_DETL_AGE_T")); - } - -} +package gudusoft.gsqlparser.commonTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EKeyReferenceType; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TDropIndexSqlStatement; +import junit.framework.TestCase; + +public class testDropIndex extends TestCase { + + public void testDropRestrictType(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "DROP INDEX IF EXISTS \"public\".\"batch_id_idx\" CASCADE;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstdropindex); + TDropIndexSqlStatement dropIndex = (TDropIndexSqlStatement) sqlparser.sqlstatements.get(0); + assertTrue(dropIndex.getIndexName().toString().equalsIgnoreCase("\"public\".\"batch_id_idx\"")); + assertTrue(dropIndex.getDropRestrictType() == EKeyReferenceType.cascade); + } + + + public void testDropSchema(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "DROP UNIQUE INDEX XPKTOA_ACCT_DETL_AGE_T ON idw_rpt_data.TOA_ACCT_DETL_AGE_T;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstdropindex); + TDropIndexSqlStatement dropIndex = (TDropIndexSqlStatement) sqlparser.sqlstatements.get(0); + assertTrue(dropIndex.getIndexName().toString().equalsIgnoreCase("XPKTOA_ACCT_DETL_AGE_T")); + assertTrue(dropIndex.getTableName().toString().equalsIgnoreCase("idw_rpt_data.TOA_ACCT_DETL_AGE_T")); + } + +} diff --git a/src/test/java/common/testDropSchema.java b/src/test/java/gudusoft/gsqlparser/commonTest/testDropSchema.java similarity index 95% rename from src/test/java/common/testDropSchema.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testDropSchema.java index dee0e845..4a4042c0 100644 --- a/src/test/java/common/testDropSchema.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testDropSchema.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/common/testDropTable.java b/src/test/java/gudusoft/gsqlparser/commonTest/testDropTable.java similarity index 95% rename from src/test/java/common/testDropTable.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testDropTable.java index 3fde2a72..07791424 100644 --- a/src/test/java/common/testDropTable.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testDropTable.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/common/testEmptyInput.java b/src/test/java/gudusoft/gsqlparser/commonTest/testEmptyInput.java similarity index 90% rename from src/test/java/common/testEmptyInput.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testEmptyInput.java index 223fcf9d..405663f9 100644 --- a/src/test/java/common/testEmptyInput.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testEmptyInput.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/common/testExceptionClause.java b/src/test/java/gudusoft/gsqlparser/commonTest/testExceptionClause.java similarity index 98% rename from src/test/java/common/testExceptionClause.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testExceptionClause.java index 541bd0d3..87c39944 100644 --- a/src/test/java/common/testExceptionClause.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testExceptionClause.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.nodes.TExceptionHandler; import gudusoft.gsqlparser.stmt.TCommonBlock; diff --git a/src/test/java/common/testExecImmeStmt.java b/src/test/java/gudusoft/gsqlparser/commonTest/testExecImmeStmt.java similarity index 98% rename from src/test/java/common/testExecImmeStmt.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testExecImmeStmt.java index f2df0590..bb049c37 100644 --- a/src/test/java/common/testExecImmeStmt.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testExecImmeStmt.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import junit.framework.TestCase; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/common/testExplain.java b/src/test/java/gudusoft/gsqlparser/commonTest/testExplain.java similarity index 97% rename from src/test/java/common/testExplain.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testExplain.java index b9bfe1da..c77b295b 100644 --- a/src/test/java/common/testExplain.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testExplain.java @@ -1,11 +1,9 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TMultiTarget; -import gudusoft.gsqlparser.nodes.TMultiTargetList; import gudusoft.gsqlparser.nodes.TResultColumnList; import gudusoft.gsqlparser.nodes.TValueClause; import gudusoft.gsqlparser.stmt.TExplainPlan; diff --git a/src/test/java/common/testExprTraverse.java b/src/test/java/gudusoft/gsqlparser/commonTest/testExprTraverse.java similarity index 98% rename from src/test/java/common/testExprTraverse.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testExprTraverse.java index 50acbb3c..beed2b6e 100644 --- a/src/test/java/common/testExprTraverse.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testExprTraverse.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; /* * Date: 2010-9-24 * Time: 17:17:51 diff --git a/src/test/java/common/testExpression.java b/src/test/java/gudusoft/gsqlparser/commonTest/testExpression.java similarity index 97% rename from src/test/java/common/testExpression.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testExpression.java index e6a75ead..3696e12b 100644 --- a/src/test/java/common/testExpression.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testExpression.java @@ -1,191 +1,191 @@ -package common; - - -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.nodes.*; -import junit.framework.TestCase; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; - -public class testExpression extends TestCase { - - public void testFlattenExpr(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT * from t where a>1 and b=1 or c=2"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getWhereClause().getCondition(); - assertTrue(((TExpression)expr.getFlattedAndOrExprs().get(1)).getAndOrTokenBeforeExpr().toString().equalsIgnoreCase("and")); - assertTrue(((TExpression)expr.getFlattedAndOrExprs().get(2)).getAndOrTokenBeforeExpr().toString().equalsIgnoreCase("or")); ; - - } - - public void testCollate(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT latincol COLLATE greek_ci_as"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column = select.getResultColumnList().getResultColumn(0); - TExpression expr2 = column.getExpr(); - assertTrue(expr2.getRightOperand().toString().equalsIgnoreCase("greek_ci_as")); - } - - public void testFunctionName(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT COUNT(*)"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column = select.getResultColumnList().getResultColumn(0); - TExpression expr2 = column.getExpr(); - TFunctionCall func = expr2.getFunctionCall(); - } - - public void testNotEqual(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT COUNT(*)\n" + - "FROM orders\n" + - "WHERE A NOT = B;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TWhereClause where = select.getWhereClause(); - TExpression expr = where.getCondition(); - //System.out.println(expr.getComparisonOperator().toString()); - assertTrue(expr.getComparisonOperator().toString().equalsIgnoreCase("NOT =")); - - } - - public void testIntervalExpr(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT (end_time - start_time) DAY(4,1) TO SECOND (2)\n" + - "FROM BillDateTime;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column = select.getResultColumnList().getResultColumn(0); - TExpression expr = column.getExpr(); - //System.out.println(expr.getExpressionType()); - assertTrue(expr.getExpressionType() == EExpressionType.interval_t); - - sqlparser.sqltext = "SELECT (end_time - start_time) DAY\n" + - "FROM BillDateTime;"; - assertTrue(sqlparser.parse() == 0); - select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - column = select.getResultColumnList().getResultColumn(0); - expr = column.getExpr(); - //System.out.println(expr.getExpressionType()); - assertTrue(expr.getExpressionType() == EExpressionType.interval_t ); - - sqlparser.sqltext = "SELECT (end_time - start_time) DAY1\n" + - "FROM BillDateTime;"; - assertTrue(sqlparser.parse() == 0); - select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - column = select.getResultColumnList().getResultColumn(0); - expr = column.getExpr(); - //System.out.println(expr.getExpressionType()); - assertTrue(expr.getExpressionType() == EExpressionType.parenthesis_t); - } - - public void testInList(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT COUNT(*)\n" + - "FROM orders\n" + - "WHERE A in (1,2,3+4);"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TWhereClause where = select.getWhereClause(); - TExpression expr = where.getCondition(); - assertTrue(expr.getExpressionType() == EExpressionType.in_t); - assertTrue(expr.getRightOperand().getExpressionType() == EExpressionType.list_t); - TExpressionList expressionList = expr.getRightOperand().getExprList(); - assertTrue(expressionList.getExpression(0).toString().equalsIgnoreCase("1")); - assertTrue(expressionList.getExpression(1).toString().equalsIgnoreCase("2")); - assertTrue(expressionList.getExpression(2).toString().equalsIgnoreCase("3+4")); - - } - - - public void testExprSearchColumn(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT name FROM tb1 Where length(trim(name)) = 13 and rownum = 1;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TWhereClause where = select.getWhereClause(); - TExpression expr = where.getCondition(); - TExpressionList expressionList = expr.searchColumn("name"); - // System.out.println(expressionList.size()); - } - - public void testRemove1(){ - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - TExpression expression = parser.parseExpression("columnA+(columnB*2)+columnC"); - TExpressionList resultList = expression.searchColumn("columnB"); - - TExpression columnBExpr = resultList.getExpression(0); - columnBExpr.removeMe(); - - assertTrue(expression.toString().equalsIgnoreCase("columnA+(2)+columnC")); - - expression = parser.parseExpression("columnA+(columnB*2)>columnC and columnD=columnE-9"); - resultList = expression.searchColumn("columnA"); - assertTrue(resultList.size() == 1); - TExpression columnAExpr = resultList.getExpression(0); - assertTrue(columnAExpr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(columnAExpr.toString().equalsIgnoreCase("columnA")); - - - columnAExpr.removeMe(); - - // System.out.println(expression.toString()); - assertTrue(expression.toString().equalsIgnoreCase("(columnB*2)>columnC and columnD=columnE-9")); - - - parser.sqltext = "select *\n" + - "from table1 pal, table2 pualr, table3 pu\n" + - "WHERE (pal.application_location_id = pualr.application_location_id \n" + - " AND pu.jbp_uid = pualr.jbp_uid \n" + - " AND pu.username = 'USERID')"; - int ret = parser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - - expression = selectSqlStatement.getWhereClause().getCondition(); - - resultList = expression.searchColumn("application_location_id"); - assertTrue(resultList.size() == 2); - TExpression expression1 = resultList.getExpression(0); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expression1.toString().equalsIgnoreCase("pal.application_location_id")); - expression1.removeMe(); - - // System.out.println(expression.toString()); - assertTrue(expression.toString().equalsIgnoreCase("(pu.jbp_uid = pualr.jbp_uid \n" + - " AND pu.username = 'USERID')")); - } - - public void testRemoveExprList(){ - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - parser.sqltext = "select *\n" + - "from table1 pal, table2 pualr, table3 pu\n" + - "WHERE pal.application_location_id in (1,2,3,4)"; - int ret = parser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression = selectSqlStatement.getWhereClause().getCondition(); - assertTrue(expression.getRightOperand().getExpressionType() == EExpressionType.list_t); - TExpressionList expressionList = expression.getRightOperand().getExprList(); - expressionList.removeItem(0); - //System.out.println(selectSqlStatement.toString()); - assertTrue(selectSqlStatement.toString().equalsIgnoreCase("select *\n" + - "from table1 pal, table2 pualr, table3 pu\n" + - "WHERE pal.application_location_id in (2,3,4)")); - expression.getRightOperand().removeMe(); - if (expression.getNodeStatus() == ENodeStatus.nsRemoved){ - selectSqlStatement.setWhereClause(null); - } - //System.out.println(selectSqlStatement.toString()); - assertTrue(selectSqlStatement.toString().trim().equalsIgnoreCase("select *\n" + - "from table1 pal, table2 pualr, table3 pu")); - } - -} +package gudusoft.gsqlparser.commonTest; + + +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.nodes.*; +import junit.framework.TestCase; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; + +public class testExpression extends TestCase { + + public void testFlattenExpr(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "SELECT * from t where a>1 and b=1 or c=2"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TExpression expr = select.getWhereClause().getCondition(); + assertTrue(((TExpression)expr.getFlattedAndOrExprs().get(1)).getAndOrTokenBeforeExpr().toString().equalsIgnoreCase("and")); + assertTrue(((TExpression)expr.getFlattedAndOrExprs().get(2)).getAndOrTokenBeforeExpr().toString().equalsIgnoreCase("or")); ; + + } + + public void testCollate(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "SELECT latincol COLLATE greek_ci_as"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn column = select.getResultColumnList().getResultColumn(0); + TExpression expr2 = column.getExpr(); + assertTrue(expr2.getRightOperand().toString().equalsIgnoreCase("greek_ci_as")); + } + + public void testFunctionName(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT COUNT(*)"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn column = select.getResultColumnList().getResultColumn(0); + TExpression expr2 = column.getExpr(); + TFunctionCall func = expr2.getFunctionCall(); + } + + public void testNotEqual(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT COUNT(*)\n" + + "FROM orders\n" + + "WHERE A NOT = B;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TWhereClause where = select.getWhereClause(); + TExpression expr = where.getCondition(); + //System.out.println(expr.getComparisonOperator().toString()); + assertTrue(expr.getComparisonOperator().toString().equalsIgnoreCase("NOT =")); + + } + + public void testIntervalExpr(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT (end_time - start_time) DAY(4,1) TO SECOND (2)\n" + + "FROM BillDateTime;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn column = select.getResultColumnList().getResultColumn(0); + TExpression expr = column.getExpr(); + //System.out.println(expr.getExpressionType()); + assertTrue(expr.getExpressionType() == EExpressionType.interval_t); + + sqlparser.sqltext = "SELECT (end_time - start_time) DAY\n" + + "FROM BillDateTime;"; + assertTrue(sqlparser.parse() == 0); + select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + column = select.getResultColumnList().getResultColumn(0); + expr = column.getExpr(); + //System.out.println(expr.getExpressionType()); + assertTrue(expr.getExpressionType() == EExpressionType.interval_t ); + + sqlparser.sqltext = "SELECT (end_time - start_time) DAY1\n" + + "FROM BillDateTime;"; + assertTrue(sqlparser.parse() == 0); + select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + column = select.getResultColumnList().getResultColumn(0); + expr = column.getExpr(); + //System.out.println(expr.getExpressionType()); + assertTrue(expr.getExpressionType() == EExpressionType.parenthesis_t); + } + + public void testInList(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT COUNT(*)\n" + + "FROM orders\n" + + "WHERE A in (1,2,3+4);"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TWhereClause where = select.getWhereClause(); + TExpression expr = where.getCondition(); + assertTrue(expr.getExpressionType() == EExpressionType.in_t); + assertTrue(expr.getRightOperand().getExpressionType() == EExpressionType.list_t); + TExpressionList expressionList = expr.getRightOperand().getExprList(); + assertTrue(expressionList.getExpression(0).toString().equalsIgnoreCase("1")); + assertTrue(expressionList.getExpression(1).toString().equalsIgnoreCase("2")); + assertTrue(expressionList.getExpression(2).toString().equalsIgnoreCase("3+4")); + + } + + + public void testExprSearchColumn(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "SELECT name FROM tb1 Where length(trim(name)) = 13 and rownum = 1;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TWhereClause where = select.getWhereClause(); + TExpression expr = where.getCondition(); + TExpressionList expressionList = expr.searchColumn("name"); + // System.out.println(expressionList.size()); + } + + public void testRemove1(){ + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + TExpression expression = parser.parseExpression("columnA+(columnB*2)+columnC"); + TExpressionList resultList = expression.searchColumn("columnB"); + + TExpression columnBExpr = resultList.getExpression(0); + columnBExpr.removeMe(); + + assertTrue(expression.toString().equalsIgnoreCase("columnA+(2)+columnC")); + + expression = parser.parseExpression("columnA+(columnB*2)>columnC and columnD=columnE-9"); + resultList = expression.searchColumn("columnA"); + assertTrue(resultList.size() == 1); + TExpression columnAExpr = resultList.getExpression(0); + assertTrue(columnAExpr.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(columnAExpr.toString().equalsIgnoreCase("columnA")); + + + columnAExpr.removeMe(); + + // System.out.println(expression.toString()); + assertTrue(expression.toString().equalsIgnoreCase("(columnB*2)>columnC and columnD=columnE-9")); + + + parser.sqltext = "select *\n" + + "from table1 pal, table2 pualr, table3 pu\n" + + "WHERE (pal.application_location_id = pualr.application_location_id \n" + + " AND pu.jbp_uid = pualr.jbp_uid \n" + + " AND pu.username = 'USERID')"; + int ret = parser.parse(); + assertTrue(ret == 0); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); + + expression = selectSqlStatement.getWhereClause().getCondition(); + + resultList = expression.searchColumn("application_location_id"); + assertTrue(resultList.size() == 2); + TExpression expression1 = resultList.getExpression(0); + assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(expression1.toString().equalsIgnoreCase("pal.application_location_id")); + expression1.removeMe(); + + // System.out.println(expression.toString()); + assertTrue(expression.toString().equalsIgnoreCase("(pu.jbp_uid = pualr.jbp_uid \n" + + " AND pu.username = 'USERID')")); + } + + public void testRemoveExprList(){ + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + parser.sqltext = "select *\n" + + "from table1 pal, table2 pualr, table3 pu\n" + + "WHERE pal.application_location_id in (1,2,3,4)"; + int ret = parser.parse(); + assertTrue(ret == 0); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TExpression expression = selectSqlStatement.getWhereClause().getCondition(); + assertTrue(expression.getRightOperand().getExpressionType() == EExpressionType.list_t); + TExpressionList expressionList = expression.getRightOperand().getExprList(); + expressionList.removeItem(0); + //System.out.println(selectSqlStatement.toString()); + assertTrue(selectSqlStatement.toString().equalsIgnoreCase("select *\n" + + "from table1 pal, table2 pualr, table3 pu\n" + + "WHERE pal.application_location_id in (2,3,4)")); + expression.getRightOperand().removeMe(); + if (expression.getNodeStatus() == ENodeStatus.nsRemoved){ + selectSqlStatement.setWhereClause(null); + } + //System.out.println(selectSqlStatement.toString()); + assertTrue(selectSqlStatement.toString().trim().equalsIgnoreCase("select *\n" + + "from table1 pal, table2 pualr, table3 pu")); + } + +} diff --git a/src/test/java/common/testFakeConstraint.java b/src/test/java/gudusoft/gsqlparser/commonTest/testFakeConstraint.java similarity index 97% rename from src/test/java/common/testFakeConstraint.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testFakeConstraint.java index 84926143..c1401c0e 100644 --- a/src/test/java/common/testFakeConstraint.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testFakeConstraint.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; /* * Date: 2010-8-25 * Time: 16:26:32 diff --git a/src/test/java/common/testFunction.java b/src/test/java/gudusoft/gsqlparser/commonTest/testFunction.java similarity index 98% rename from src/test/java/common/testFunction.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testFunction.java index ce05a75f..f89e824d 100644 --- a/src/test/java/common/testFunction.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testFunction.java @@ -1,70 +1,70 @@ -package common; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EFunctionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.stmt.TAssignStmt; -import gudusoft.gsqlparser.stmt.TCommonBlock; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testFunction extends TestCase { - - public void testOracleListagg(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT LISTAGG(columnName1, ',') WITHIN GROUP (ORDER BY columnName2 ASC NULLS LAST) AS col1withCol2 FROM tableName"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); - TFunctionCall functionCall = expr.getFunctionCall(); - assertTrue(functionCall.getFunctionType() == EFunctionType.listagg_t); - assertTrue(functionCall.getArgs().size() == 2); - assertTrue(functionCall.getArgs().getExpression(0).toString().equalsIgnoreCase("columnName1")); - assertTrue(functionCall.getArgs().getExpression(1).toString().equalsIgnoreCase("','")); - } - - public void test0(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = " SELECT DISTINCT CONVERT(VARCHAR(16), sd.COBDate, 103) AS SubmissionTypeName FROM [bc].[SystemDate] sd"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); - TFunctionCall functionCall = expr.getFunctionCall(); - assertTrue(functionCall.getFunctionType() == EFunctionType.convert_t); - assertTrue(functionCall.getTypename().toString().equalsIgnoreCase("VARCHAR(16)")); - assertTrue(functionCall.getParameter().toString().equalsIgnoreCase("sd.COBDate")); - assertTrue(functionCall.getStyle().toString().equalsIgnoreCase("103")); - } - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "DECLARE cname VARCHAR; BEGIN cname := schema1.pkg1.GETCUSTOMERNAME(2); END;"; - assertTrue(sqlparser.parse() == 0); - TCommonBlock commonBlock = (TCommonBlock)sqlparser.sqlstatements.get(0); - //System.out.println(commonBlock.getBodyStatements().get(0).sqlstatementtype); - TAssignStmt assignStmt = (TAssignStmt)commonBlock.getBodyStatements().get(0); - TFunctionCall functionCall = assignStmt.getExpression().getFunctionCall(); - assertTrue(functionCall.getFunctionName().getSchemaString().equalsIgnoreCase("schema1")); - assertTrue(functionCall.getFunctionName().getPackageString().equalsIgnoreCase("pkg1")); - assertTrue(functionCall.getFunctionName().getObjectString().equalsIgnoreCase("GETCUSTOMERNAME")); - } - - public void testRemoveArg(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = " SELECT reporting.get_formal_salutation(m.id,'Y','$dns$') AS \"Formal Salutation\" FROM [bc].[SystemDate] sd"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); - TFunctionCall functionCall = expr.getFunctionCall(); - assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("reporting.get_formal_salutation")); - functionCall.getArgs().removeItem(2); - assertTrue(functionCall.toString().equalsIgnoreCase("reporting.get_formal_salutation(m.id,'Y')")); - functionCall.getArgs().removeItem(1); - assertTrue(functionCall.toString().equalsIgnoreCase("reporting.get_formal_salutation(m.id)")); - functionCall.getArgs().removeItem(0); - assertTrue(functionCall.toString().equalsIgnoreCase("reporting.get_formal_salutation()")); - } -} +package gudusoft.gsqlparser.commonTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EFunctionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TFunctionCall; +import gudusoft.gsqlparser.stmt.TAssignStmt; +import gudusoft.gsqlparser.stmt.TCommonBlock; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testFunction extends TestCase { + + public void testOracleListagg(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "SELECT LISTAGG(columnName1, ',') WITHIN GROUP (ORDER BY columnName2 ASC NULLS LAST) AS col1withCol2 FROM tableName"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TExpression expr = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); + TFunctionCall functionCall = expr.getFunctionCall(); + assertTrue(functionCall.getFunctionType() == EFunctionType.listagg_t); + assertTrue(functionCall.getArgs().size() == 2); + assertTrue(functionCall.getArgs().getExpression(0).toString().equalsIgnoreCase("columnName1")); + assertTrue(functionCall.getArgs().getExpression(1).toString().equalsIgnoreCase("','")); + } + + public void test0(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = " SELECT DISTINCT CONVERT(VARCHAR(16), sd.COBDate, 103) AS SubmissionTypeName FROM [bc].[SystemDate] sd"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TExpression expr = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); + TFunctionCall functionCall = expr.getFunctionCall(); + assertTrue(functionCall.getFunctionType() == EFunctionType.convert_t); + assertTrue(functionCall.getTypename().toString().equalsIgnoreCase("VARCHAR(16)")); + assertTrue(functionCall.getParameter().toString().equalsIgnoreCase("sd.COBDate")); + assertTrue(functionCall.getStyle().toString().equalsIgnoreCase("103")); + } + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "DECLARE cname VARCHAR; BEGIN cname := schema1.pkg1.GETCUSTOMERNAME(2); END;"; + assertTrue(sqlparser.parse() == 0); + TCommonBlock commonBlock = (TCommonBlock)sqlparser.sqlstatements.get(0); + //System.out.println(commonBlock.getBodyStatements().get(0).sqlstatementtype); + TAssignStmt assignStmt = (TAssignStmt)commonBlock.getBodyStatements().get(0); + TFunctionCall functionCall = assignStmt.getExpression().getFunctionCall(); + assertTrue(functionCall.getFunctionName().getSchemaString().equalsIgnoreCase("schema1")); + assertTrue(functionCall.getFunctionName().getPackageString().equalsIgnoreCase("pkg1")); + assertTrue(functionCall.getFunctionName().getObjectString().equalsIgnoreCase("GETCUSTOMERNAME")); + } + + public void testRemoveArg(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = " SELECT reporting.get_formal_salutation(m.id,'Y','$dns$') AS \"Formal Salutation\" FROM [bc].[SystemDate] sd"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TExpression expr = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); + TFunctionCall functionCall = expr.getFunctionCall(); + assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("reporting.get_formal_salutation")); + functionCall.getArgs().removeItem(2); + assertTrue(functionCall.toString().equalsIgnoreCase("reporting.get_formal_salutation(m.id,'Y')")); + functionCall.getArgs().removeItem(1); + assertTrue(functionCall.toString().equalsIgnoreCase("reporting.get_formal_salutation(m.id)")); + functionCall.getArgs().removeItem(0); + assertTrue(functionCall.toString().equalsIgnoreCase("reporting.get_formal_salutation()")); + } +} diff --git a/src/test/java/common/testFunctionCall.java b/src/test/java/gudusoft/gsqlparser/commonTest/testFunctionCall.java similarity index 95% rename from src/test/java/common/testFunctionCall.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testFunctionCall.java index a8a54e60..03890fe2 100644 --- a/src/test/java/common/testFunctionCall.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testFunctionCall.java @@ -1,21 +1,21 @@ -package common; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testFunctionCall extends TestCase { - - public void test0(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT name FROM employee()"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = selectSqlStatement.tables.getTable(0); - assertTrue(table.getTableType() == ETableSource.function); - assertTrue(table.getFuncCall().toString().equalsIgnoreCase("employee()")); - } -} +package gudusoft.gsqlparser.commonTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ETableSource; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TTable; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testFunctionCall extends TestCase { + + public void test0(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "SELECT name FROM employee()"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TTable table = selectSqlStatement.tables.getTable(0); + assertTrue(table.getTableType() == ETableSource.function); + assertTrue(table.getFuncCall().toString().equalsIgnoreCase("employee()")); + } +} diff --git a/src/test/java/common/testGetCommentBeforeStmt.java b/src/test/java/gudusoft/gsqlparser/commonTest/testGetCommentBeforeStmt.java similarity index 95% rename from src/test/java/common/testGetCommentBeforeStmt.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testGetCommentBeforeStmt.java index 3d828717..140c4835 100644 --- a/src/test/java/common/testGetCommentBeforeStmt.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testGetCommentBeforeStmt.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.*; import junit.framework.TestCase; @@ -15,7 +15,7 @@ public void test0(){ "FROM scott.emp "; assertTrue(sqlparser.parse() == 0); TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - System.out.println(sqlStatement.getCommentBeforeNode()); + //System.out.println(sqlStatement.getCommentBeforeNode()); String desiredOut = "-- comment \n" + "/* fafaf */"; assertTrue(sqlStatement.getCommentBeforeNode().equalsIgnoreCase(desiredOut)); diff --git a/src/test/java/common/testGetTables.java b/src/test/java/gudusoft/gsqlparser/commonTest/testGetTables.java similarity index 97% rename from src/test/java/common/testGetTables.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testGetTables.java index 0fd070c6..e81a9df6 100644 --- a/src/test/java/common/testGetTables.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testGetTables.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; /* * Date: 12-5-9 */ diff --git a/src/test/java/common/testGroupBy.java b/src/test/java/gudusoft/gsqlparser/commonTest/testGroupBy.java similarity index 97% rename from src/test/java/common/testGroupBy.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testGroupBy.java index 58102640..8dfc2572 100644 --- a/src/test/java/common/testGroupBy.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testGroupBy.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/common/testHint.java b/src/test/java/gudusoft/gsqlparser/commonTest/testHint.java similarity index 96% rename from src/test/java/common/testHint.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testHint.java index 3617bd9e..6dff6ca9 100644 --- a/src/test/java/common/testHint.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testHint.java @@ -1,52 +1,52 @@ -package common; - -/* - * Date: 11-8-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testHint extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create or replace view test22 as select /*+ RULE */ t.account_name, t.account_number from AP13_BANK_ACCOUNTS t;"; - assertTrue(sqlparser.parse() == 0); - - TCreateViewSqlStatement viewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(viewSqlStatement.getViewName().toString().equalsIgnoreCase("test22")); - - TSelectSqlStatement select = viewSqlStatement.getSubquery(); - assertTrue(select.getOracleHint().equalsIgnoreCase("/*+ RULE */")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT /*+ A(B) */ e.last_name FROM scott.employees"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - // System.out.println(select.getOracleHint()); - assertTrue(select.getOracleHint().equalsIgnoreCase("/*+ A(B) */")); - } - - public void testMySQLHint(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "SELECT /*+ A(B) */ e.last_name FROM scott.employees"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - // System.out.println(select.getOracleHint()); - assertTrue(select.getHint().equalsIgnoreCase("/*+ A(B) */")); - } - - - -} +package gudusoft.gsqlparser.commonTest; + +/* + * Date: 11-8-4 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testHint extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "create or replace view test22 as select /*+ RULE */ t.account_name, t.account_number from AP13_BANK_ACCOUNTS t;"; + assertTrue(sqlparser.parse() == 0); + + TCreateViewSqlStatement viewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(viewSqlStatement.getViewName().toString().equalsIgnoreCase("test22")); + + TSelectSqlStatement select = viewSqlStatement.getSubquery(); + assertTrue(select.getOracleHint().equalsIgnoreCase("/*+ RULE */")); + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "SELECT /*+ A(B) */ e.last_name FROM scott.employees"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + // System.out.println(select.getOracleHint()); + assertTrue(select.getOracleHint().equalsIgnoreCase("/*+ A(B) */")); + } + + public void testMySQLHint(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "SELECT /*+ A(B) */ e.last_name FROM scott.employees"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + // System.out.println(select.getOracleHint()); + assertTrue(select.getHint().equalsIgnoreCase("/*+ A(B) */")); + } + + + +} diff --git a/src/test/java/common/testIdentifierCase.java b/src/test/java/gudusoft/gsqlparser/commonTest/testIdentifierCase.java similarity index 98% rename from src/test/java/common/testIdentifierCase.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testIdentifierCase.java index d0a69f0f..a404c615 100644 --- a/src/test/java/common/testIdentifierCase.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testIdentifierCase.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/common/testInsertStatement.java b/src/test/java/gudusoft/gsqlparser/commonTest/testInsertStatement.java similarity index 98% rename from src/test/java/common/testInsertStatement.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testInsertStatement.java index 631cc3e5..395877a8 100644 --- a/src/test/java/common/testInsertStatement.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testInsertStatement.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/common/testJoins.java b/src/test/java/gudusoft/gsqlparser/commonTest/testJoins.java similarity index 99% rename from src/test/java/common/testJoins.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testJoins.java index fa554d72..684846b4 100644 --- a/src/test/java/common/testJoins.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testJoins.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.stmt.TSelectSqlStatement; import junit.framework.TestCase; diff --git a/src/test/java/common/testJoins_using_tjoinexpr.java b/src/test/java/gudusoft/gsqlparser/commonTest/testJoins_using_tjoinexpr.java similarity index 99% rename from src/test/java/common/testJoins_using_tjoinexpr.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testJoins_using_tjoinexpr.java index 8860689b..2e0ca98b 100644 --- a/src/test/java/common/testJoins_using_tjoinexpr.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testJoins_using_tjoinexpr.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.*; diff --git a/src/test/java/common/testLargeColumnList.java b/src/test/java/gudusoft/gsqlparser/commonTest/testLargeColumnList.java similarity index 85% rename from src/test/java/common/testLargeColumnList.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testLargeColumnList.java index 713af7c0..00e81030 100644 --- a/src/test/java/common/testLargeColumnList.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testLargeColumnList.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TBaseType; @@ -12,7 +12,7 @@ public class testLargeColumnList extends TestCase { public static void test1(){ TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvredshift); - sqlParser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA+"redshift/syngenta/large-column-list.sql"; + sqlParser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA+ "redshift/syngenta/large-column-list.sql"; sqlParser.parse(); TSelectSqlStatement select = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); StringBuilder b = new StringBuilder(); @@ -21,7 +21,7 @@ public static void test1(){ b.append(rc.getDisplayName()+"\t->\t"+rc.getExpr().getObjectOperand().getSourceColumn().getDisplayName()+TBaseType.windowsLinebreak); } - assertTrue(TBaseType.compareStringBuilderToFile(b,gspCommon.BASE_SQL_DIR_PRIVATE_JAVA+"redshift/syngenta/large-column-list.txt")); + assertTrue(TBaseType.compareStringBuilderToFile(b,gspCommon.BASE_SQL_DIR_PRIVATE_JAVA+ "redshift/syngenta/large-column-list.txt")); } } diff --git a/src/test/java/common/testLargeUnion.java b/src/test/java/gudusoft/gsqlparser/commonTest/testLargeUnion.java similarity index 95% rename from src/test/java/common/testLargeUnion.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testLargeUnion.java index b2d5cc95..875a7b35 100644 --- a/src/test/java/common/testLargeUnion.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testLargeUnion.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.TCTE; @@ -16,7 +16,7 @@ public static void test1(){ // //增加JVM参数 -Xss2M 就可以解决这个问题 TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlParser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA+"snowflake/atlan/large_union.sql"; + sqlParser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA+ "snowflake/atlan/large_union.sql"; sqlParser.parse(); TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlParser.sqlstatements.get(0); TSelectSqlStatement select = createTable.getSubQuery(); diff --git a/src/test/java/common/testLateralView.java b/src/test/java/gudusoft/gsqlparser/commonTest/testLateralView.java similarity index 93% rename from src/test/java/common/testLateralView.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testLateralView.java index 7784abbb..9bfb8048 100644 --- a/src/test/java/common/testLateralView.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testLateralView.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; @@ -36,7 +36,7 @@ public void testLateralViewClause() { public void testLateralViewOrphanColumn1() { TGSqlParser tgSqlParser = new TGSqlParser(EDbVendor.dbvhive); - tgSqlParser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA +"hive/prosiebensat1/join-lateral-view1.sql"; + tgSqlParser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "hive/prosiebensat1/join-lateral-view1.sql"; assertTrue(tgSqlParser.parse() == 0); TSelectSqlStatement sqlstatements = (TSelectSqlStatement) tgSqlParser.getSqlstatements().get(0); @@ -46,7 +46,7 @@ public void testLateralViewOrphanColumn1() { public void testLateralViewOrphanColumn2() { TGSqlParser tgSqlParser = new TGSqlParser(EDbVendor.dbvhive); - tgSqlParser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA +"hive/prosiebensat1/join-lateral-view2.sql"; + tgSqlParser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "hive/prosiebensat1/join-lateral-view2.sql"; assertTrue(tgSqlParser.parse() == 0); TSelectSqlStatement sqlstatements = (TSelectSqlStatement) tgSqlParser.getSqlstatements().get(0); @@ -56,7 +56,7 @@ public void testLateralViewOrphanColumn2() { public void testLateralViewOrphanColumn3() { TGSqlParser tgSqlParser = new TGSqlParser(EDbVendor.dbvhive); - tgSqlParser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA +"hive/prosiebensat1/join-lateral-view3.sql"; + tgSqlParser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "hive/prosiebensat1/join-lateral-view3.sql"; assertTrue(tgSqlParser.parse() == 0); TSelectSqlStatement sqlstatements = (TSelectSqlStatement) tgSqlParser.getSqlstatements().get(0); diff --git a/src/test/java/common/testLicense.java b/src/test/java/gudusoft/gsqlparser/commonTest/testLicense.java similarity index 98% rename from src/test/java/common/testLicense.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testLicense.java index d285bc12..80fe7a6a 100644 --- a/src/test/java/common/testLicense.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testLicense.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; /* * Date: 11-8-11 */ diff --git a/src/test/java/common/testLimitClause.java b/src/test/java/gudusoft/gsqlparser/commonTest/testLimitClause.java similarity index 96% rename from src/test/java/common/testLimitClause.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testLimitClause.java index 2b066baa..5da95b4a 100644 --- a/src/test/java/common/testLimitClause.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testLimitClause.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/common/testLockTable.java b/src/test/java/gudusoft/gsqlparser/commonTest/testLockTable.java similarity index 95% rename from src/test/java/common/testLockTable.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testLockTable.java index f2967dc9..25280e92 100644 --- a/src/test/java/common/testLockTable.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testLockTable.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/common/testLongStatement.java b/src/test/java/gudusoft/gsqlparser/commonTest/testLongStatement.java similarity index 95% rename from src/test/java/common/testLongStatement.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testLongStatement.java index 21a446d3..92f4bfdf 100644 --- a/src/test/java/common/testLongStatement.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testLongStatement.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; /* * Date: 13-8-14 */ diff --git a/src/test/java/common/testMd5.java b/src/test/java/gudusoft/gsqlparser/commonTest/testMd5.java similarity index 97% rename from src/test/java/common/testMd5.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testMd5.java index 63c752b4..0e2561f3 100644 --- a/src/test/java/common/testMd5.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testMd5.java @@ -1,108 +1,108 @@ -package common; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testMd5 extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create or replace view test22 as select /*+ RULE */ t.account_name, t.account_number from AP13_BANK_ACCOUNTS t;"; - assertTrue(sqlparser.parse() == 0); - String md51 = sqlparser.sqlstatements.get(0).getMd5(); - - sqlparser.sqltext = "create or replace view test22 " + - "as select /*+ RULE */ t.account_name, t.account_number -- comment\n" + - "from AP13_BANK_ACCOUNTS t;"; - assertTrue(sqlparser.parse() == 0); - String md52 = sqlparser.sqlstatements.get(0).getMd5(); - - assertTrue(md51.equalsIgnoreCase(md52)); - -// System.out.println(md51); -// System.out.println(md52); - } - - public void testDelimitedIdentifier(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "select t.account_name, t.account_number from [AP13_BANK_ACCOUNTS] t;"; - assertTrue(sqlparser.parse() == 0); - String md51 = sqlparser.sqlstatements.get(0).getMd5(); - - sqlparser.sqltext = "select t.account_name, t.account_number from [AP13_bank_ACCOUNTS] t;"; - - assertTrue(sqlparser.parse() == 0); - String md52 = sqlparser.sqlstatements.get(0).getMd5(); - - assertTrue(!md51.equalsIgnoreCase(md52)); - } - - public void testDelimitedIdentifier2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "select t.account_name, t.account_number from \"AP13_BANK_ACCOUNTS\" t;"; - assertTrue(sqlparser.parse() == 0); - String md51 = sqlparser.sqlstatements.get(0).getMd5(); - - sqlparser.sqltext = "select t.account_name, t.account_number from \"AP13_bank_ACCOUNTS\" t;"; - - assertTrue(sqlparser.parse() == 0); - String md52 = sqlparser.sqlstatements.get(0).getMd5(); - - assertTrue(!md51.equalsIgnoreCase(md52)); - } - - public void testConstantInWhere(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "select 1, 'dummy', t.account_name, t.account_number from \"AP13_BANK_ACCOUNTS\" t where id=19 and ename='scott';"; - assertTrue(sqlparser.parse() == 0); - String md51 = sqlparser.sqlstatements.get(0).getMd5(); - - sqlparser.sqltext = "select 1, 'dummy', t.account_name, t.account_number from \"AP13_BANK_ACCOUNTS\" t where id=123 and ename='tiger';"; - - assertTrue(sqlparser.parse() == 0); - String md52 = sqlparser.sqlstatements.get(0).getMd5(); - - assertTrue(md51.equalsIgnoreCase(md52)); - } - - public void testConstantInWhere2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "select 1, 'dummy', t.account_name, t.account_number from AP13_BANK_ACCOUNTS t where id=19 and ename='scott';"; - assertTrue(sqlparser.parse() == 0); - String md51 = sqlparser.sqlstatements.get(0).getMd5(); - - sqlparser.sqltext = "select 2, 'dummy2', t.account_name, t.account_number from AP13_BANK_ACCOUNTS t where id=123 and ename='tiger';"; - - assertTrue(sqlparser.parse() == 0); - String md52 = sqlparser.sqlstatements.get(0).getMd5(); - - assertTrue(!md51.equalsIgnoreCase(md52)); - } - - public void testGetCompactString(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create or replace view test22 as select /*+ RULE */ t.account_name, t.account_number from AP13_BANK_ACCOUNTS t;"; - assertTrue(sqlparser.parse() == 0); - String md51 = sqlparser.sqlstatements.get(0).getCompactString(); - - sqlparser.sqltext = "create or replace view test22 " + - "as select /*+ RULE */ t.account_name, t.account_number -- comment\n" + - "from AP13_BANK_ACCOUNTS t;"; - assertTrue(sqlparser.parse() == 0); - String md52 = sqlparser.sqlstatements.get(0).getCompactString(); - - assertTrue(md51.equalsIgnoreCase(md52)); - -// System.out.println(md51); -// System.out.println(md52); - } - - -} +package gudusoft.gsqlparser.commonTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import junit.framework.TestCase; + +public class testMd5 extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "create or replace view test22 as select /*+ RULE */ t.account_name, t.account_number from AP13_BANK_ACCOUNTS t;"; + assertTrue(sqlparser.parse() == 0); + String md51 = sqlparser.sqlstatements.get(0).getMd5(); + + sqlparser.sqltext = "create or replace view test22 " + + "as select /*+ RULE */ t.account_name, t.account_number -- comment\n" + + "from AP13_BANK_ACCOUNTS t;"; + assertTrue(sqlparser.parse() == 0); + String md52 = sqlparser.sqlstatements.get(0).getMd5(); + + assertTrue(md51.equalsIgnoreCase(md52)); + +// System.out.println(md51); +// System.out.println(md52); + } + + public void testDelimitedIdentifier(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "select t.account_name, t.account_number from [AP13_BANK_ACCOUNTS] t;"; + assertTrue(sqlparser.parse() == 0); + String md51 = sqlparser.sqlstatements.get(0).getMd5(); + + sqlparser.sqltext = "select t.account_name, t.account_number from [AP13_bank_ACCOUNTS] t;"; + + assertTrue(sqlparser.parse() == 0); + String md52 = sqlparser.sqlstatements.get(0).getMd5(); + + assertTrue(!md51.equalsIgnoreCase(md52)); + } + + public void testDelimitedIdentifier2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "select t.account_name, t.account_number from \"AP13_BANK_ACCOUNTS\" t;"; + assertTrue(sqlparser.parse() == 0); + String md51 = sqlparser.sqlstatements.get(0).getMd5(); + + sqlparser.sqltext = "select t.account_name, t.account_number from \"AP13_bank_ACCOUNTS\" t;"; + + assertTrue(sqlparser.parse() == 0); + String md52 = sqlparser.sqlstatements.get(0).getMd5(); + + assertTrue(!md51.equalsIgnoreCase(md52)); + } + + public void testConstantInWhere(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "select 1, 'dummy', t.account_name, t.account_number from \"AP13_BANK_ACCOUNTS\" t where id=19 and ename='scott';"; + assertTrue(sqlparser.parse() == 0); + String md51 = sqlparser.sqlstatements.get(0).getMd5(); + + sqlparser.sqltext = "select 1, 'dummy', t.account_name, t.account_number from \"AP13_BANK_ACCOUNTS\" t where id=123 and ename='tiger';"; + + assertTrue(sqlparser.parse() == 0); + String md52 = sqlparser.sqlstatements.get(0).getMd5(); + + assertTrue(md51.equalsIgnoreCase(md52)); + } + + public void testConstantInWhere2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "select 1, 'dummy', t.account_name, t.account_number from AP13_BANK_ACCOUNTS t where id=19 and ename='scott';"; + assertTrue(sqlparser.parse() == 0); + String md51 = sqlparser.sqlstatements.get(0).getMd5(); + + sqlparser.sqltext = "select 2, 'dummy2', t.account_name, t.account_number from AP13_BANK_ACCOUNTS t where id=123 and ename='tiger';"; + + assertTrue(sqlparser.parse() == 0); + String md52 = sqlparser.sqlstatements.get(0).getMd5(); + + assertTrue(!md51.equalsIgnoreCase(md52)); + } + + public void testGetCompactString(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "create or replace view test22 as select /*+ RULE */ t.account_name, t.account_number from AP13_BANK_ACCOUNTS t;"; + assertTrue(sqlparser.parse() == 0); + String md51 = sqlparser.sqlstatements.get(0).getCompactString(); + + sqlparser.sqltext = "create or replace view test22 " + + "as select /*+ RULE */ t.account_name, t.account_number -- comment\n" + + "from AP13_BANK_ACCOUNTS t;"; + assertTrue(sqlparser.parse() == 0); + String md52 = sqlparser.sqlstatements.get(0).getCompactString(); + + assertTrue(md51.equalsIgnoreCase(md52)); + +// System.out.println(md51); +// System.out.println(md52); + } + + +} diff --git a/src/test/java/common/testMerge.java b/src/test/java/gudusoft/gsqlparser/commonTest/testMerge.java similarity index 97% rename from src/test/java/common/testMerge.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testMerge.java index f6c65ff8..73a9b9ef 100644 --- a/src/test/java/common/testMerge.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testMerge.java @@ -1,229 +1,228 @@ -package common; -/* - * Date: 11-7-28 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TMergeSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testMerge extends TestCase { - - public void testDB2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - sqlparser.sqltext = "MERGE INTO archive ar\n" + - "USING (SELECT activity,description FROM activities)ac\n" + - "ON (ar.activity =ac.activity)\n" + - "WHEN MATCHED THEN\n" + - "UPDATE SET\n" + - "description =ac.description\n" + - "WHEN NOT MATCHED THEN\n" + - "INSERT\n" + - "(activity,description)\n" + - "VALUES (ac.activity,ac.description);"; - - - assertTrue(sqlparser.parse() == 0); - - TMergeSqlStatement mergeSqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(mergeSqlStatement.getTargetTable().toString().equalsIgnoreCase("archive")); - assertTrue(mergeSqlStatement.getTargetTable().getAliasClause().toString().equalsIgnoreCase("ar")); - TTable usingTable = mergeSqlStatement.getUsingTable(); - assertTrue(usingTable.getTableType() == ETableSource.subquery); - assertTrue(usingTable.getAliasClause().toString().equalsIgnoreCase("ac")); - - assertTrue(mergeSqlStatement.getCondition().toString().equalsIgnoreCase("(ar.activity =ac.activity)")); - - assertTrue(mergeSqlStatement.getWhenClauses().size() == 2); - TMergeWhenClause whenClause0 = mergeSqlStatement.getWhenClauses().getElement(0); - TMergeWhenClause whenClause1 = mergeSqlStatement.getWhenClauses().getElement(1); - assertTrue(whenClause0.getType() == TMergeWhenClause.matched); - assertTrue(whenClause1.getType() == TMergeWhenClause.not_matched); - - TMergeUpdateClause mergeUpdateClause = whenClause0.getUpdateClause(); - assertTrue(mergeUpdateClause.getUpdateColumnList().getResultColumn(0).toString().equalsIgnoreCase("description =ac.description")); - - TMergeInsertClause mergeInsertClause = whenClause1.getInsertClause(); - - assertTrue(mergeInsertClause.getColumnList().getObjectName(0).toString().equalsIgnoreCase("activity")); - assertTrue(mergeInsertClause.getColumnList().getObjectName(1).toString().equalsIgnoreCase("description")); - - assertTrue(mergeInsertClause.getValuelist().getResultColumn(0).toString().equalsIgnoreCase("ac.activity")); - assertTrue(mergeInsertClause.getValuelist().getResultColumn(1).toString().equalsIgnoreCase("ac.description")); - - } - - public void testSQLServer(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "MERGE INTO Sales.SalesReason AS Target\n" + - "USING (VALUES ('Recommendation','Other'), ('Review', 'Marketing'), ('Internet', 'Promotion'))\n" + - " AS Source (NewName, NewReasonType)\n" + - "ON Target.Name = Source.NewName\n" + - "WHEN MATCHED THEN\n" + - "\tUPDATE SET ReasonType = Source.NewReasonType\n" + - "WHEN NOT MATCHED BY TARGET THEN\n" + - "\tINSERT (Name, ReasonType) VALUES (NewName, NewReasonType)\n" + - "OUTPUT $action INTO @SummaryOfChanges;"; - - assertTrue(sqlparser.parse() == 0); - - TMergeSqlStatement mergeSqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(mergeSqlStatement.getTargetTable().toString().equalsIgnoreCase("Sales.SalesReason")); - assertTrue(mergeSqlStatement.getTargetTable().getAliasClause().toString().equalsIgnoreCase("Target")); - TTable usingTable = mergeSqlStatement.getUsingTable(); - assertTrue(usingTable.getTableType() == ETableSource.rowList); - assertTrue(usingTable.getValueClause().getRows().size() == 3); - assertTrue(usingTable.getValueClause().getRows().get(0).getResultColumn(0).toString().equalsIgnoreCase("'Recommendation'")); - assertTrue(usingTable.getValueClause().getRows().get(0).getResultColumn(1).toString().equalsIgnoreCase("'Other'")); - assertTrue(usingTable.getValueClause().getRows().get(1).getResultColumn(0).toString().equalsIgnoreCase("'Review'")); - assertTrue(usingTable.getValueClause().getRows().get(1).getResultColumn(1).toString().equalsIgnoreCase("'Marketing'")); - assertTrue(usingTable.getValueClause().getRows().get(2).getResultColumn(0).toString().equalsIgnoreCase("'Internet'")); - assertTrue(usingTable.getValueClause().getRows().get(2).getResultColumn(1).toString().equalsIgnoreCase("'Promotion'")); - - assertTrue(usingTable.getAliasClause().toString().equalsIgnoreCase("Source (NewName, NewReasonType)")); - assertTrue(usingTable.getAliasClause().getAliasName().toString().equalsIgnoreCase("Source")); - assertTrue(usingTable.getAliasClause().getColumns().getObjectName(0).toString().equalsIgnoreCase("NewName")); - assertTrue(usingTable.getAliasClause().getColumns().getObjectName(1).toString().equalsIgnoreCase("NewReasonType")); - - assertTrue(mergeSqlStatement.getCondition().toString().equalsIgnoreCase("Target.Name = Source.NewName")); - - assertTrue(mergeSqlStatement.getWhenClauses().size() == 2); - TMergeWhenClause whenClause0 = mergeSqlStatement.getWhenClauses().getElement(0); - TMergeWhenClause whenClause1 = mergeSqlStatement.getWhenClauses().getElement(1); - assertTrue(whenClause0.getType() == TMergeWhenClause.matched); - assertTrue(whenClause1.getType() == TMergeWhenClause.not_matched_by_target); - - TMergeUpdateClause mergeUpdateClause = whenClause0.getUpdateClause(); - assertTrue(mergeUpdateClause.getUpdateColumnList().getResultColumn(0).toString().equalsIgnoreCase("ReasonType = Source.NewReasonType")); - - TMergeInsertClause mergeInsertClause = whenClause1.getInsertClause(); - - assertTrue(mergeInsertClause.getColumnList().getObjectName(0).toString().equalsIgnoreCase("Name")); - assertTrue(mergeInsertClause.getColumnList().getObjectName(1).toString().equalsIgnoreCase("ReasonType")); - - assertTrue(mergeInsertClause.getValuelist().getResultColumn(0).toString().equalsIgnoreCase("NewName")); - assertTrue(mergeInsertClause.getValuelist().getResultColumn(1).toString().equalsIgnoreCase("NewReasonType")); - - } - - public void testOracle(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "MERGE INTO test1 a\n" + - "USING all_objects b\n" + - "ON (a.object_id = b.object_id)\n" + - "WHEN MATCHED THEN\n" + - "UPDATE SET a.status = b.status\n" + - "WHEN NOT MATCHED THEN\n" + - "INSERT (object_id, status)\n" + - "VALUES (b.object_id, b.status);"; - assertTrue(sqlparser.parse() == 0); - - TMergeSqlStatement mergeSqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); - //System.out.println(mergeSqlStatement.tables.getTable(0).toString()); - assertTrue(mergeSqlStatement.getTargetTable().toString().equalsIgnoreCase("test1")); - assertTrue(mergeSqlStatement.getTargetTable().getAliasClause().toString().equalsIgnoreCase("a")); - assertTrue(mergeSqlStatement.getUsingTable().toString().equalsIgnoreCase("all_objects")); - assertTrue(mergeSqlStatement.getUsingTable().getAliasClause().toString().equalsIgnoreCase("b")); - assertTrue(mergeSqlStatement.getCondition().toString().equalsIgnoreCase("a.object_id = b.object_id")); - - assertTrue(mergeSqlStatement.getWhenClauses().size() == 2); - TMergeWhenClause whenClause0 = mergeSqlStatement.getWhenClauses().getElement(0); - TMergeWhenClause whenClause1 = mergeSqlStatement.getWhenClauses().getElement(1); - assertTrue(whenClause0.getType() == TMergeWhenClause.matched); - assertTrue(whenClause1.getType() == TMergeWhenClause.not_matched); - - TMergeUpdateClause mergeUpdateClause = whenClause0.getUpdateClause(); - assertTrue(mergeUpdateClause.getUpdateColumnList().getResultColumn(0).toString().equalsIgnoreCase("a.status = b.status")); - - TMergeInsertClause mergeInsertClause = whenClause1.getInsertClause(); - - assertTrue(mergeInsertClause.getColumnList().getObjectName(0).toString().equalsIgnoreCase("object_id")); - assertTrue(mergeInsertClause.getColumnList().getObjectName(1).toString().equalsIgnoreCase("status")); - - assertTrue(mergeInsertClause.getValuelist().getResultColumn(0).toString().equalsIgnoreCase("b.object_id")); - assertTrue(mergeInsertClause.getValuelist().getResultColumn(1).toString().equalsIgnoreCase("b.status")); - - } - - public void testOracle2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "MERGE INTO bonuses D\n" + - " USING (SELECT employee_id, salary, department_id FROM employees\n" + - " WHERE department_id = 80) S\n" + - " ON (D.employee_id = S.employee_id)\n" + - " WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01\n" + - " DELETE WHERE (S.salary > 8000)\n" + - " WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus)\n" + - " VALUES (S.employee_id, S.salary*0.1)\n" + - " WHERE (S.salary <= 8000);"; - assertTrue(sqlparser.parse() == 0); - - TMergeSqlStatement mergeSqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); - - assertTrue(mergeSqlStatement.getTargetTable().toString().equalsIgnoreCase("bonuses")); - assertTrue(mergeSqlStatement.getTargetTable().getAliasClause().toString().equalsIgnoreCase("D")); - - assertTrue(mergeSqlStatement.getWhenClauses().size() == 2); - TMergeWhenClause whenClause0 = mergeSqlStatement.getWhenClauses().getElement(0); - TMergeWhenClause whenClause1 = mergeSqlStatement.getWhenClauses().getElement(1); - assertTrue(whenClause0.getType() == TMergeWhenClause.matched); - assertTrue(whenClause1.getType() == TMergeWhenClause.not_matched); - - TMergeUpdateClause mergeUpdateClause = whenClause0.getUpdateClause(); - assertTrue(mergeUpdateClause.getUpdateColumnList().getResultColumn(0).toString().equalsIgnoreCase("D.bonus = D.bonus + S.salary*.01")); - assertTrue(mergeUpdateClause.getDeleteWhereClause().toString().equalsIgnoreCase("(S.salary > 8000)")); -// -// TMergeInsertClause mergeInsertClause = whenClause1.getInsertClause(); -// -// assertTrue(mergeInsertClause.getColumnList().getObjectName(0).toString().equalsIgnoreCase("object_id")); -// assertTrue(mergeInsertClause.getColumnList().getObjectName(1).toString().equalsIgnoreCase("status")); -// -// assertTrue(mergeInsertClause.getValuelist().getResultColumn(0).toString().equalsIgnoreCase("b.object_id")); -// assertTrue(mergeInsertClause.getValuelist().getResultColumn(1).toString().equalsIgnoreCase("b.status")); - - } - - public void testMergeVisitor(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "MERGE INTO t1 USING t2 ON a1=c2 AND b1=b2 WHEN NOT MATCHED THEN INSERT (c2, b2, a2);"; - assertTrue(sqlparser.parse() == 0); - - TMergeSqlStatement mergeSqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); - mergeSqlStatement.acceptChildren(new mergeVisitor()); - - sqlparser.sqltext = "MERGE INTO t1 USING t2 ON a1=b2 AND c1=10 AND b1 8000)\n" + + " WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus)\n" + + " VALUES (S.employee_id, S.salary*0.1)\n" + + " WHERE (S.salary <= 8000);"; + assertTrue(sqlparser.parse() == 0); + + TMergeSqlStatement mergeSqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); + + assertTrue(mergeSqlStatement.getTargetTable().toString().equalsIgnoreCase("bonuses")); + assertTrue(mergeSqlStatement.getTargetTable().getAliasClause().toString().equalsIgnoreCase("D")); + + assertTrue(mergeSqlStatement.getWhenClauses().size() == 2); + TMergeWhenClause whenClause0 = mergeSqlStatement.getWhenClauses().getElement(0); + TMergeWhenClause whenClause1 = mergeSqlStatement.getWhenClauses().getElement(1); + assertTrue(whenClause0.getType() == TMergeWhenClause.matched); + assertTrue(whenClause1.getType() == TMergeWhenClause.not_matched); + + TMergeUpdateClause mergeUpdateClause = whenClause0.getUpdateClause(); + assertTrue(mergeUpdateClause.getUpdateColumnList().getResultColumn(0).toString().equalsIgnoreCase("D.bonus = D.bonus + S.salary*.01")); + assertTrue(mergeUpdateClause.getDeleteWhereClause().toString().equalsIgnoreCase("(S.salary > 8000)")); +// +// TMergeInsertClause mergeInsertClause = whenClause1.getInsertClause(); +// +// assertTrue(mergeInsertClause.getColumnList().getObjectName(0).toString().equalsIgnoreCase("object_id")); +// assertTrue(mergeInsertClause.getColumnList().getObjectName(1).toString().equalsIgnoreCase("status")); +// +// assertTrue(mergeInsertClause.getValuelist().getResultColumn(0).toString().equalsIgnoreCase("b.object_id")); +// assertTrue(mergeInsertClause.getValuelist().getResultColumn(1).toString().equalsIgnoreCase("b.status")); + + } + + public void testMergeVisitor(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "MERGE INTO t1 USING t2 ON a1=c2 AND b1=b2 WHEN NOT MATCHED THEN INSERT (c2, b2, a2);"; + assertTrue(sqlparser.parse() == 0); + + TMergeSqlStatement mergeSqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); + mergeSqlStatement.acceptChildren(new mergeVisitor()); + + sqlparser.sqltext = "MERGE INTO t1 USING t2 ON a1=b2 AND c1=10 AND b1= '$From_Date$'\n" + - "AND d.cntrb_date <= '$Thru_Date$'))"; - - TWhereClause whereClause = new TWhereClause(condition); - select.setWhereClause(whereClause); - - assertTrue(select.toString().trim().equalsIgnoreCase("select datediff(month,trunc(datecola),trunc(datecolb))\n" + - "from testtable\n" + - "where ((d.fund_coll_attrb IN ( '$Institute$' )\n" + - "AND d.fund_acct IN ( '$Fund$' )\n" + - "AND d.cntrb_date >= '$From_Date$'\n" + - "AND d.cntrb_date <= '$Thru_Date$'))")); - - // remove condition with $Institute$ and $Fund$, replace $From_Date$, $Thru_Date$ with the date value - whereClause.getCondition().postOrderTraverse(new IExpressionVisitor() { - public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { - TExpression expression = (TExpression) pnode; - if (expression.getNodeStatus() != ENodeStatus.nsRemoved) { - if ((expression.toString().indexOf("$Institute$") != -1)||(expression.toString().indexOf("$Fund$") != -1)){ - expression.removeMe(); - }else if (expression.toString().indexOf("$From_Date$") != -1){ - expression.setString("09/01/2020"); - }else if (expression.toString().indexOf("$Thru_Date$") != -1){ - expression.setString("09/30/2020"); - } - - } - return true; - } - }); - - //System.out.println("\nAssertFailed:\n"+select.toString()); - assertTrue(select.toString().trim().equalsIgnoreCase("select datediff(month,trunc(datecola),trunc(datecolb))\n" + - "from testtable\n" + - "where ((d.cntrb_date >= 09/01/2020\n" + - "AND d.cntrb_date <= 09/30/2020))")); - } - - public void testRemvoe1() { - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - TExpression expression = parser.parseExpression("d.cntrb_date1 >= '$From_Date$'"); - expression.getLeftOperand().removeMe(); - assertTrue(expression.getExpressionType() == EExpressionType.removed_t); - assertTrue(expression.getNodeStatus() == ENodeStatus.nsRemoved); - assertTrue(expression.toString() == null); - - expression = parser.parseExpression("d.cntrb_date1 >= '$From_Date$'"); - expression.getRightOperand().removeMe(); - assertTrue(expression.getExpressionType() == EExpressionType.removed_t); - assertTrue(expression.getNodeStatus() == ENodeStatus.nsRemoved); - assertTrue(expression.toString() == null); - - expression = parser.parseExpression("d.cntrb_date1 + '$From_Date$'"); - expression.getLeftOperand().removeMe(); - assertTrue(expression.toString().equalsIgnoreCase("'$From_Date$'")); - expression.getRightOperand().removeMe(); - assertTrue(expression.getExpressionType() == EExpressionType.removed_t); - assertTrue(expression.getNodeStatus() == ENodeStatus.nsRemoved); - assertTrue(expression.toString() == null); - - expression = parser.parseExpression("d.cntrb_date1 + '$From_Date$'"); - expression.getRightOperand().removeMe(); - assertTrue(expression.toString().equalsIgnoreCase("d.cntrb_date1")); - expression.getLeftOperand().removeMe(); - assertTrue(expression.getExpressionType() == EExpressionType.removed_t); - assertTrue(expression.getNodeStatus() == ENodeStatus.nsRemoved); - assertTrue(expression.toString() == null); - } - - public void testModify1() { - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - TExpression expression = parser.parseExpression("d.cntrb_date1 >= '$From_Date$'"); - expression.getRightOperand().setString("1"); - assertTrue(expression.toString().equalsIgnoreCase("d.cntrb_date1 >= 1")); - } - - public void testModify2() { - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - TExpression expression = parser.parseExpression("d.cntrb_date1 >= '$From_Date$'"); - expression.getRightOperand().setString(expression.getRightOperand().toString()+" + 1"); - assertTrue(expression.toString().equalsIgnoreCase("d.cntrb_date1 >= '$From_Date$' + 1")); - } - - public void testDonotRemoveEmptyLine() { - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - parser.sqltext = "SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - "WHERE d.cntrb_date1 >= '$From_Date$' \n\n" + - "AND d.cntrb_date2 <= '$Thru_Date$' \n" + - "GROUP BY d.id;"; - parser.parse(); - - TSelectSqlStatement select = (TSelectSqlStatement) parser.sqlstatements.get(0); - assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - "WHERE d.cntrb_date1 >= '$From_Date$' \n" + - "\n" + - "AND d.cntrb_date2 <= '$Thru_Date$' \n" + - "GROUP BY d.id;")); - } - - public void test10(){ - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - parser.sqltext = "SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - "WHERE d.cntrb_date1 >= '$From_Date$' \n" + - "AND d.cntrb_date2 <= '$Thru_Date$' \n" + - "GROUP BY d.id;"; - parser.parse(); - - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TExpression expression = select.getWhereClause().getCondition(); - - TExpression expr_From_Date = expression.getLeftOperand().getRightOperand(); - TExpression expr_cntrb_date1 = expression.getLeftOperand().getLeftOperand(); - TExpression expr_Thru_Date = expression.getRightOperand().getRightOperand(); - TExpression expr_cntrb_date2 = expression.getRightOperand().getLeftOperand(); - - // printNodeEndWithThisToken(expression.getLeftOperand().getEndToken()); - expr_cntrb_date1.removeMe(); - expr_From_Date.removeMe(); - expr_cntrb_date2.removeMe(); - expr_Thru_Date.removeMe(); - - //System.out.println(select.getWhereClause().getCondition().toString()); - if (select.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved){ - select.setWhereClause(null); - } - // System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - " GROUP BY d.id;")); - } - - public void test11(){ - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - parser.sqltext = "SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - "WHERE d.cntrb_date1 >= '$From_Date$' \n" + - "AND d.cntrb_date2 <= '$Thru_Date$' \n" + - "GROUP BY d.id;"; - parser.parse(); - - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TExpression expression = select.getWhereClause().getCondition(); - - TExpression expr_From_Date = expression.getLeftOperand().getRightOperand(); - TExpression expr_cntrb_date1 = expression.getLeftOperand().getLeftOperand(); - TExpression expr_Thru_Date = expression.getRightOperand().getRightOperand(); - TExpression expr_cntrb_date2 = expression.getRightOperand().getLeftOperand(); - - expr_Thru_Date.removeMe(); - expr_cntrb_date2.removeMe(); - expr_From_Date.removeMe(); - expr_cntrb_date1.removeMe(); - - if (select.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved){ - select.setWhereClause(null); - } - - // System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - " GROUP BY d.id;")); - } - - public void test12(){ - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - parser.sqltext = "SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - "WHERE d.cntrb_date1 >= '$From_Date$' \n" + - "AND d.cntrb_date2 <= '$Thru_Date$' \n" + - "GROUP BY d.id;"; - parser.parse(); - - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TExpression expression = select.getWhereClause().getCondition(); - - TExpression expr_From_Date = expression.getLeftOperand().getRightOperand(); - TExpression expr_cntrb_date1 = expression.getLeftOperand().getLeftOperand(); - TExpression expr_Thru_Date = expression.getRightOperand().getRightOperand(); - TExpression expr_cntrb_date2 = expression.getRightOperand().getLeftOperand(); - - expr_Thru_Date.removeMe(); - expr_From_Date.removeMe(); - - if (select.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved){ - select.setWhereClause(null); - } - - // System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - " GROUP BY d.id;")); - } - - public void test13(){ - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - parser.sqltext = "SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - "WHERE d.cntrb_date1 >= '$From_Date$' \n" + - "AND d.cntrb_date2 <= '$Thru_Date$' \n" + - "GROUP BY d.id;"; - parser.parse(); - - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TExpression expression = select.getWhereClause().getCondition(); - - TExpression expr_From_Date = expression.getLeftOperand().getRightOperand(); - TExpression expr_cntrb_date1 = expression.getLeftOperand().getLeftOperand(); - TExpression expr_Thru_Date = expression.getRightOperand().getRightOperand(); - TExpression expr_cntrb_date2 = expression.getRightOperand().getLeftOperand(); - - expr_From_Date.removeMe(); - - if (select.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved){ - select.setWhereClause(null); - } - - //System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - "WHERE d.cntrb_date2 <= '$Thru_Date$' \n" + - "GROUP BY d.id;")); - } - - - public void test14(){ - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - parser.sqltext = "SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - "WHERE d.cntrb_date1 >= '$From_Date$' \n" + - "AND d.cntrb_date2 <= '$Thru_Date$' \n" + - "GROUP BY d.id;"; - parser.parse(); - - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TExpression expression = select.getWhereClause().getCondition(); - - TExpression expr_From_Date = expression.getLeftOperand().getRightOperand(); - TExpression expr_cntrb_date1 = expression.getLeftOperand().getLeftOperand(); - TExpression expr_Thru_Date = expression.getRightOperand().getRightOperand(); - TExpression expr_cntrb_date2 = expression.getRightOperand().getLeftOperand(); - - expr_cntrb_date2.removeMe(); - expr_From_Date.removeMe(); - expr_cntrb_date1.removeMe(); - expr_Thru_Date.removeMe(); - - if (select.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved){ - select.setWhereClause(null); - } - - // System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + - "FROM summit.cntrb_detail d \n" + - " GROUP BY d.id;")); - } - - public void test20(){ - String sql = "SELECT SUM (d.amt)\r\n" + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.fund_coll_attrb IN ( '$Institute$' )\r\n" + "AND d.fund_acct IN ( '$Fund$' )\r\n" - + "AND d.cntrb_date >= '$From_Date$'\r\n" + "AND d.cntrb_date <= '$Thru_Date$'\r\n" + "GROUP BY d.id;"; - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.setSqltext(sql); - sqlparser.parse(); - TSelectSqlStatement stmt = (TSelectSqlStatement) sqlparser.getSqlstatements().get(0); - TExpression whereExpression = stmt.getWhereClause().getCondition(); - - whereExpression.postOrderTraverse(new IExpressionVisitor() { - public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { - TExpression expression = (TExpression) pnode; - if (expression.getNodeStatus() != ENodeStatus.nsRemoved && expression != null - && expression.getLeftOperand() == null && expression.getRightOperand() == null - && expression.toString().indexOf("$") != -1) { - //System.out.println(expression.toString()); - expression.removeMe(); - } else { - if (expression.getExpressionType() == EExpressionType.simple_comparison_t - || expression.getExpressionType() == EExpressionType.in_t) { - if (expression.getRightOperand() == null && expression.getLeftOperand() != null) { - expression.getLeftOperand().removeMe(); - } - if (expression.getRightOperand() != null && expression.getLeftOperand() == null) { - expression.getRightOperand().removeMe(); - } - if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { - expression.removeMe(); - } - } else if (expression.getExpressionType() == EExpressionType.logical_and_t - || expression.getExpressionType() == EExpressionType.logical_or_t) { - if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { - expression.removeMe(); - } - } - } - return true; - } - }); - - if (stmt.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved) { - stmt.setWhereClause(null); - } - -// System.out.println("AssertFailed:\n"+stmt.toString()); - assertTrue(stmt.toString().trim().equalsIgnoreCase("SELECT SUM (d.amt)\r\n" + - "FROM summit.cntrb_detail d\r\n" + - "GROUP BY d.id;")); - - } - - public void testExpr239() { - - String sql = "SELECT SUM (d.amt) \r\n " - + "FROM summit.cntrb_detail d \r\n " - + "WHERE d.id = summit.mstr.id \r\n " - + " AND (d.cntrb_date || d.cntrb_time) >= ('$From_Date$' || '$From_Time$')\r\n " - + " AND (d.cntrb_date || d.cntrb_time) <= ('$Thru_Date$' || '$Thru_Date$')\r\n " - + "GROUP BY d.id "; - - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - parser.sqltext = sql; - parser.parse(); - TSelectSqlStatement select = (TSelectSqlStatement) parser.sqlstatements.get(0); - - - select.getWhereClause().getCondition().postOrderTraverse(new IExpressionVisitor() { - public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { - TExpression expression = (TExpression) pnode; - if (expression.getNodeStatus() != ENodeStatus.nsRemoved) { - if (expression.toString().indexOf("$From_Date$") != -1){ - expression.setString("09/01/2020"); - }else if (expression.toString().indexOf("$") != -1){ - expression.removeMe(); - } - } - return true; - } - }); - - // System.out.println("\nAssertFailed:\n"+select.toString()); - assertTrue(select.toString().trim().equalsIgnoreCase("SELECT SUM (d.amt) \r\n" + - " FROM summit.cntrb_detail d \r\n" + - " WHERE d.id = summit.mstr.id \r\n" + - " AND (d.cntrb_date || d.cntrb_time) >= (09/01/2020)\r\n" + - " GROUP BY d.id")); - } - - public void testExprRemoveBetween() { - - String sql = "SELECT SUM (d.amt)\r\n" + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.cntrb_date BETWEEN '$start_date$' AND '$end_date$'\r\n" + "GROUP BY d.id;"; - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.setSqltext(sql); - sqlparser.parse(); - TSelectSqlStatement stmt = (TSelectSqlStatement) sqlparser.getSqlstatements().get(0); - TExpression whereExpression = stmt.getWhereClause().getCondition(); - whereExpression.postOrderTraverse(new IExpressionVisitor() { - public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { - TExpression expression = (TExpression) pnode; - if (expression.getLeftOperand() == null && expression.getRightOperand() == null - && expression.toString() != null && expression.toString().indexOf("$") != -1) { - expression.removeMe(); - } else { - if (expression.getExpressionType() == EExpressionType.simple_comparison_t - || expression.getExpressionType() == EExpressionType.in_t) { - if (expression.getRightOperand() == null && expression.getLeftOperand() != null) { - expression.getLeftOperand().removeMe(); - } - if (expression.getRightOperand() != null && expression.getLeftOperand() == null) { - expression.getRightOperand().removeMe(); - } - if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { - expression.removeMe(); - } - } else if (expression.getExpressionType() == EExpressionType.logical_and_t - || expression.getExpressionType() == EExpressionType.logical_or_t) { - if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { - expression.removeMe(); - } - } - } - return true; - } - }); - - if (stmt.getWhereClause().getCondition() == null - || stmt.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved) { - stmt.setWhereClause(null); - } - - //System.out.println(stmt.toString()); - assertTrue(stmt.toString().equalsIgnoreCase("SELECT SUM (d.amt)\r\n" + - "FROM summit.cntrb_detail d\r\n" + - "GROUP BY d.id;")); - - } - - public void testExprRemoveHaving() { - String sql = "select c.id as sms.id from summit.cntrb_detail c where c.cntrb_date >='2011-01-01' and c.cntrb_date<='2013-01-01' group by c.id having sum(c.amt) >= '$GivingFromAmount$' and sum(c.amt) <= '$GivingThruAmount$'"; - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.setSqltext(sql); - sqlparser.parse(); - TSelectSqlStatement stmt = (TSelectSqlStatement) sqlparser.getSqlstatements().get(0); - TExpression havingExpression = stmt.getGroupByClause().getHavingClause(); - havingExpression.postOrderTraverse(new IExpressionVisitor() { - public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { - TExpression expression = (TExpression) pnode; - if (expression.getLeftOperand() == null && expression.getRightOperand() == null - && expression.toString() != null && expression.toString().indexOf("$") != -1) { - expression.removeMe(); - } else { - if (expression.getExpressionType() == EExpressionType.simple_comparison_t - || expression.getExpressionType() == EExpressionType.in_t) { - if (expression.getRightOperand() == null && expression.getLeftOperand() != null) { - expression.getLeftOperand().removeMe(); - } - if (expression.getRightOperand() != null && expression.getLeftOperand() == null) { - expression.getRightOperand().removeMe(); - } - if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { - expression.removeMe(); - } - } else if (expression.getExpressionType() == EExpressionType.logical_and_t - || expression.getExpressionType() == EExpressionType.logical_or_t) { - if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { - expression.removeMe(); - } - } - } - return true; - } - }); - - if (havingExpression == null - || havingExpression.getNodeStatus() == ENodeStatus.nsRemoved) { - stmt.getGroupByClause().setHavingClause(null); - } - - assertTrue(stmt.toString().trim().equalsIgnoreCase("select c.id as sms.id from summit.cntrb_detail c where c.cntrb_date >='2011-01-01' and c.cntrb_date<='2013-01-01' group by c.id")); - } - - public void testExprRemoveAndSetInBetween() { - String sql = "SELECT * FROM lookup.recognition_master_table crg WHERE crg.datedb BETWEEN '$start_date$' AND '$end_date$' GROUP BY crg.id"; - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.setSqltext(sql); - sqlparser.parse(); - TSelectSqlStatement stmt = (TSelectSqlStatement) sqlparser.getSqlstatements().get(0); - TExpression whereExpression = stmt.getWhereClause().getCondition(); - whereExpression.postOrderTraverse(new IExpressionVisitor() { - public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { - TExpression expression = (TExpression) pnode; - if (expression.getLeftOperand() == null && expression.getRightOperand() == null - && expression.toString() != null && expression.toString().indexOf("$") != -1) { - if (expression.toString().indexOf("'$start_date$'") != -1) { - expression.removeMe(); - } else { - expression.setString("2010-01-01"); - } - } - return true; - } - }); - - if (stmt.getWhereClause().getCondition() == null - || stmt.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved) - { - stmt.setWhereClause(null); - } - - //stmt.setWhereClause(null); - assertTrue(stmt.toString().equalsIgnoreCase("SELECT * FROM lookup.recognition_master_table crg GROUP BY crg.id")); - } - - public void testExprRemoveComaInList() { - String sql = "SELECT name, $start_date$ as startDate, $end_date$ as endDate, sex FROM lookup.recognition_master_table"; - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.setSqltext(sql); - sqlparser.parse(); - TSelectSqlStatement stmt = (TSelectSqlStatement) sqlparser.getSqlstatements().get(0); - for (int i = 0; i < stmt.getResultColumnList().size(); i++) { - TExpression expression = stmt.getResultColumnList().getResultColumn(i).getExpr(); - expression.postOrderTraverse(new IExpressionVisitor() { - public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { - TExpression expression = (TExpression) pnode; - if (expression.getLeftOperand() == null && expression.getRightOperand() == null - && expression.toString() != null && expression.toString().indexOf("$") != -1) { - expression.removeMe(); - } - return true; - } - }); - - if(expression.getNodeStatus() == ENodeStatus.nsRemoved){ - stmt.getResultColumnList().removeElementAt(i); - i--; - } - } - - assertTrue(stmt.toString().equalsIgnoreCase("SELECT name, sex FROM lookup.recognition_master_table")); - } - -} +package gudusoft.gsqlparser.commonTest; + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testModifyExpr extends TestCase { + + public void testAddAndRemove() { + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + parser.sqltext = "select datediff(month,trunc(datecola),trunc(datecolb))\n" + + "from testtable"; + parser.parse(); + TSelectSqlStatement select = (TSelectSqlStatement) parser.sqlstatements.get(0); + assertTrue(select.toString().equalsIgnoreCase("select datediff(month,trunc(datecola),trunc(datecolb))\n" + + "from testtable")); + + String condition = "((d.fund_coll_attrb IN ( '$Institute$' )\n" + + "AND d.fund_acct IN ( '$Fund$' )\n" + + "AND d.cntrb_date >= '$From_Date$'\n" + + "AND d.cntrb_date <= '$Thru_Date$'))"; + + TWhereClause whereClause = new TWhereClause(condition); + select.setWhereClause(whereClause); + + assertTrue(select.toString().trim().equalsIgnoreCase("select datediff(month,trunc(datecola),trunc(datecolb))\n" + + "from testtable\n" + + "where ((d.fund_coll_attrb IN ( '$Institute$' )\n" + + "AND d.fund_acct IN ( '$Fund$' )\n" + + "AND d.cntrb_date >= '$From_Date$'\n" + + "AND d.cntrb_date <= '$Thru_Date$'))")); + + // remove condition with $Institute$ and $Fund$, replace $From_Date$, $Thru_Date$ with the date value + whereClause.getCondition().postOrderTraverse(new IExpressionVisitor() { + public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { + TExpression expression = (TExpression) pnode; + if (expression.getNodeStatus() != ENodeStatus.nsRemoved) { + if ((expression.toString().indexOf("$Institute$") != -1)||(expression.toString().indexOf("$Fund$") != -1)){ + expression.removeMe(); + }else if (expression.toString().indexOf("$From_Date$") != -1){ + expression.setString("09/01/2020"); + }else if (expression.toString().indexOf("$Thru_Date$") != -1){ + expression.setString("09/30/2020"); + } + + } + return true; + } + }); + + //System.out.println("\nAssertFailed:\n"+select.toString()); + assertTrue(select.toString().trim().equalsIgnoreCase("select datediff(month,trunc(datecola),trunc(datecolb))\n" + + "from testtable\n" + + "where ((d.cntrb_date >= 09/01/2020\n" + + "AND d.cntrb_date <= 09/30/2020))")); + } + + public void testRemvoe1() { + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + TExpression expression = parser.parseExpression("d.cntrb_date1 >= '$From_Date$'"); + expression.getLeftOperand().removeMe(); + assertTrue(expression.getExpressionType() == EExpressionType.removed_t); + assertTrue(expression.getNodeStatus() == ENodeStatus.nsRemoved); + assertTrue(expression.toString() == null); + + expression = parser.parseExpression("d.cntrb_date1 >= '$From_Date$'"); + expression.getRightOperand().removeMe(); + assertTrue(expression.getExpressionType() == EExpressionType.removed_t); + assertTrue(expression.getNodeStatus() == ENodeStatus.nsRemoved); + assertTrue(expression.toString() == null); + + expression = parser.parseExpression("d.cntrb_date1 + '$From_Date$'"); + expression.getLeftOperand().removeMe(); + assertTrue(expression.toString().equalsIgnoreCase("'$From_Date$'")); + expression.getRightOperand().removeMe(); + assertTrue(expression.getExpressionType() == EExpressionType.removed_t); + assertTrue(expression.getNodeStatus() == ENodeStatus.nsRemoved); + assertTrue(expression.toString() == null); + + expression = parser.parseExpression("d.cntrb_date1 + '$From_Date$'"); + expression.getRightOperand().removeMe(); + assertTrue(expression.toString().equalsIgnoreCase("d.cntrb_date1")); + expression.getLeftOperand().removeMe(); + assertTrue(expression.getExpressionType() == EExpressionType.removed_t); + assertTrue(expression.getNodeStatus() == ENodeStatus.nsRemoved); + assertTrue(expression.toString() == null); + } + + public void testModify1() { + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + TExpression expression = parser.parseExpression("d.cntrb_date1 >= '$From_Date$'"); + expression.getRightOperand().setString("1"); + assertTrue(expression.toString().equalsIgnoreCase("d.cntrb_date1 >= 1")); + } + + public void testModify2() { + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + TExpression expression = parser.parseExpression("d.cntrb_date1 >= '$From_Date$'"); + expression.getRightOperand().setString(expression.getRightOperand().toString()+" + 1"); + assertTrue(expression.toString().equalsIgnoreCase("d.cntrb_date1 >= '$From_Date$' + 1")); + } + + public void testDonotRemoveEmptyLine() { + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + parser.sqltext = "SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + "WHERE d.cntrb_date1 >= '$From_Date$' \n\n" + + "AND d.cntrb_date2 <= '$Thru_Date$' \n" + + "GROUP BY d.id;"; + parser.parse(); + + TSelectSqlStatement select = (TSelectSqlStatement) parser.sqlstatements.get(0); + assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + "WHERE d.cntrb_date1 >= '$From_Date$' \n" + + "\n" + + "AND d.cntrb_date2 <= '$Thru_Date$' \n" + + "GROUP BY d.id;")); + } + + public void test10(){ + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + parser.sqltext = "SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + "WHERE d.cntrb_date1 >= '$From_Date$' \n" + + "AND d.cntrb_date2 <= '$Thru_Date$' \n" + + "GROUP BY d.id;"; + parser.parse(); + + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TExpression expression = select.getWhereClause().getCondition(); + + TExpression expr_From_Date = expression.getLeftOperand().getRightOperand(); + TExpression expr_cntrb_date1 = expression.getLeftOperand().getLeftOperand(); + TExpression expr_Thru_Date = expression.getRightOperand().getRightOperand(); + TExpression expr_cntrb_date2 = expression.getRightOperand().getLeftOperand(); + + // printNodeEndWithThisToken(expression.getLeftOperand().getEndToken()); + expr_cntrb_date1.removeMe(); + expr_From_Date.removeMe(); + expr_cntrb_date2.removeMe(); + expr_Thru_Date.removeMe(); + + //System.out.println(select.getWhereClause().getCondition().toString()); + if (select.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved){ + select.setWhereClause(null); + } + // System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + " GROUP BY d.id;")); + } + + public void test11(){ + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + parser.sqltext = "SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + "WHERE d.cntrb_date1 >= '$From_Date$' \n" + + "AND d.cntrb_date2 <= '$Thru_Date$' \n" + + "GROUP BY d.id;"; + parser.parse(); + + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TExpression expression = select.getWhereClause().getCondition(); + + TExpression expr_From_Date = expression.getLeftOperand().getRightOperand(); + TExpression expr_cntrb_date1 = expression.getLeftOperand().getLeftOperand(); + TExpression expr_Thru_Date = expression.getRightOperand().getRightOperand(); + TExpression expr_cntrb_date2 = expression.getRightOperand().getLeftOperand(); + + expr_Thru_Date.removeMe(); + expr_cntrb_date2.removeMe(); + expr_From_Date.removeMe(); + expr_cntrb_date1.removeMe(); + + if (select.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved){ + select.setWhereClause(null); + } + + // System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + " GROUP BY d.id;")); + } + + public void test12(){ + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + parser.sqltext = "SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + "WHERE d.cntrb_date1 >= '$From_Date$' \n" + + "AND d.cntrb_date2 <= '$Thru_Date$' \n" + + "GROUP BY d.id;"; + parser.parse(); + + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TExpression expression = select.getWhereClause().getCondition(); + + TExpression expr_From_Date = expression.getLeftOperand().getRightOperand(); + TExpression expr_cntrb_date1 = expression.getLeftOperand().getLeftOperand(); + TExpression expr_Thru_Date = expression.getRightOperand().getRightOperand(); + TExpression expr_cntrb_date2 = expression.getRightOperand().getLeftOperand(); + + expr_Thru_Date.removeMe(); + expr_From_Date.removeMe(); + + if (select.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved){ + select.setWhereClause(null); + } + + // System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + " GROUP BY d.id;")); + } + + public void test13(){ + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + parser.sqltext = "SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + "WHERE d.cntrb_date1 >= '$From_Date$' \n" + + "AND d.cntrb_date2 <= '$Thru_Date$' \n" + + "GROUP BY d.id;"; + parser.parse(); + + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TExpression expression = select.getWhereClause().getCondition(); + + TExpression expr_From_Date = expression.getLeftOperand().getRightOperand(); + TExpression expr_cntrb_date1 = expression.getLeftOperand().getLeftOperand(); + TExpression expr_Thru_Date = expression.getRightOperand().getRightOperand(); + TExpression expr_cntrb_date2 = expression.getRightOperand().getLeftOperand(); + + expr_From_Date.removeMe(); + + if (select.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved){ + select.setWhereClause(null); + } + + //System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + "WHERE d.cntrb_date2 <= '$Thru_Date$' \n" + + "GROUP BY d.id;")); + } + + + public void test14(){ + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + parser.sqltext = "SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + "WHERE d.cntrb_date1 >= '$From_Date$' \n" + + "AND d.cntrb_date2 <= '$Thru_Date$' \n" + + "GROUP BY d.id;"; + parser.parse(); + + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TExpression expression = select.getWhereClause().getCondition(); + + TExpression expr_From_Date = expression.getLeftOperand().getRightOperand(); + TExpression expr_cntrb_date1 = expression.getLeftOperand().getLeftOperand(); + TExpression expr_Thru_Date = expression.getRightOperand().getRightOperand(); + TExpression expr_cntrb_date2 = expression.getRightOperand().getLeftOperand(); + + expr_cntrb_date2.removeMe(); + expr_From_Date.removeMe(); + expr_cntrb_date1.removeMe(); + expr_Thru_Date.removeMe(); + + if (select.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved){ + select.setWhereClause(null); + } + + // System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt) \n" + + "FROM summit.cntrb_detail d \n" + + " GROUP BY d.id;")); + } + + public void test20(){ + String sql = "SELECT SUM (d.amt)\r\n" + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.fund_coll_attrb IN ( '$Institute$' )\r\n" + "AND d.fund_acct IN ( '$Fund$' )\r\n" + + "AND d.cntrb_date >= '$From_Date$'\r\n" + "AND d.cntrb_date <= '$Thru_Date$'\r\n" + "GROUP BY d.id;"; + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.setSqltext(sql); + sqlparser.parse(); + TSelectSqlStatement stmt = (TSelectSqlStatement) sqlparser.getSqlstatements().get(0); + TExpression whereExpression = stmt.getWhereClause().getCondition(); + + whereExpression.postOrderTraverse(new IExpressionVisitor() { + public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { + TExpression expression = (TExpression) pnode; + if (expression.getNodeStatus() != ENodeStatus.nsRemoved && expression != null + && expression.getLeftOperand() == null && expression.getRightOperand() == null + && expression.toString().indexOf("$") != -1) { + //System.out.println(expression.toString()); + expression.removeMe(); + } else { + if (expression.getExpressionType() == EExpressionType.simple_comparison_t + || expression.getExpressionType() == EExpressionType.in_t) { + if (expression.getRightOperand() == null && expression.getLeftOperand() != null) { + expression.getLeftOperand().removeMe(); + } + if (expression.getRightOperand() != null && expression.getLeftOperand() == null) { + expression.getRightOperand().removeMe(); + } + if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { + expression.removeMe(); + } + } else if (expression.getExpressionType() == EExpressionType.logical_and_t + || expression.getExpressionType() == EExpressionType.logical_or_t) { + if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { + expression.removeMe(); + } + } + } + return true; + } + }); + + if (stmt.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved) { + stmt.setWhereClause(null); + } + +// System.out.println("AssertFailed:\n"+stmt.toString()); + assertTrue(stmt.toString().trim().equalsIgnoreCase("SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "GROUP BY d.id;")); + + } + + public void testExpr239() { + + String sql = "SELECT SUM (d.amt) \r\n " + + "FROM summit.cntrb_detail d \r\n " + + "WHERE d.id = summit.mstr.id \r\n " + + " AND (d.cntrb_date || d.cntrb_time) >= ('$From_Date$' || '$From_Time$')\r\n " + + " AND (d.cntrb_date || d.cntrb_time) <= ('$Thru_Date$' || '$Thru_Date$')\r\n " + + "GROUP BY d.id "; + + TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + parser.sqltext = sql; + parser.parse(); + TSelectSqlStatement select = (TSelectSqlStatement) parser.sqlstatements.get(0); + + + select.getWhereClause().getCondition().postOrderTraverse(new IExpressionVisitor() { + public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { + TExpression expression = (TExpression) pnode; + if (expression.getNodeStatus() != ENodeStatus.nsRemoved) { + if (expression.toString().indexOf("$From_Date$") != -1){ + expression.setString("09/01/2020"); + }else if (expression.toString().indexOf("$") != -1){ + expression.removeMe(); + } + } + return true; + } + }); + + // System.out.println("\nAssertFailed:\n"+select.toString()); + assertTrue(select.toString().trim().equalsIgnoreCase("SELECT SUM (d.amt) \r\n" + + " FROM summit.cntrb_detail d \r\n" + + " WHERE d.id = summit.mstr.id \r\n" + + " AND (d.cntrb_date || d.cntrb_time) >= (09/01/2020)\r\n" + + " GROUP BY d.id")); + } + + public void testExprRemoveBetween() { + + String sql = "SELECT SUM (d.amt)\r\n" + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.cntrb_date BETWEEN '$start_date$' AND '$end_date$'\r\n" + "GROUP BY d.id;"; + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.setSqltext(sql); + sqlparser.parse(); + TSelectSqlStatement stmt = (TSelectSqlStatement) sqlparser.getSqlstatements().get(0); + TExpression whereExpression = stmt.getWhereClause().getCondition(); + whereExpression.postOrderTraverse(new IExpressionVisitor() { + public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { + TExpression expression = (TExpression) pnode; + if (expression.getLeftOperand() == null && expression.getRightOperand() == null + && expression.toString() != null && expression.toString().indexOf("$") != -1) { + expression.removeMe(); + } else { + if (expression.getExpressionType() == EExpressionType.simple_comparison_t + || expression.getExpressionType() == EExpressionType.in_t) { + if (expression.getRightOperand() == null && expression.getLeftOperand() != null) { + expression.getLeftOperand().removeMe(); + } + if (expression.getRightOperand() != null && expression.getLeftOperand() == null) { + expression.getRightOperand().removeMe(); + } + if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { + expression.removeMe(); + } + } else if (expression.getExpressionType() == EExpressionType.logical_and_t + || expression.getExpressionType() == EExpressionType.logical_or_t) { + if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { + expression.removeMe(); + } + } + } + return true; + } + }); + + if (stmt.getWhereClause().getCondition() == null + || stmt.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved) { + stmt.setWhereClause(null); + } + + //System.out.println(stmt.toString()); + assertTrue(stmt.toString().equalsIgnoreCase("SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "GROUP BY d.id;")); + + } + + public void testExprRemoveHaving() { + String sql = "select c.id as sms.id from summit.cntrb_detail c where c.cntrb_date >='2011-01-01' and c.cntrb_date<='2013-01-01' group by c.id having sum(c.amt) >= '$GivingFromAmount$' and sum(c.amt) <= '$GivingThruAmount$'"; + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.setSqltext(sql); + sqlparser.parse(); + TSelectSqlStatement stmt = (TSelectSqlStatement) sqlparser.getSqlstatements().get(0); + TExpression havingExpression = stmt.getGroupByClause().getHavingClause(); + havingExpression.postOrderTraverse(new IExpressionVisitor() { + public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { + TExpression expression = (TExpression) pnode; + if (expression.getLeftOperand() == null && expression.getRightOperand() == null + && expression.toString() != null && expression.toString().indexOf("$") != -1) { + expression.removeMe(); + } else { + if (expression.getExpressionType() == EExpressionType.simple_comparison_t + || expression.getExpressionType() == EExpressionType.in_t) { + if (expression.getRightOperand() == null && expression.getLeftOperand() != null) { + expression.getLeftOperand().removeMe(); + } + if (expression.getRightOperand() != null && expression.getLeftOperand() == null) { + expression.getRightOperand().removeMe(); + } + if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { + expression.removeMe(); + } + } else if (expression.getExpressionType() == EExpressionType.logical_and_t + || expression.getExpressionType() == EExpressionType.logical_or_t) { + if (expression.getLeftOperand() == null && expression.getRightOperand() == null) { + expression.removeMe(); + } + } + } + return true; + } + }); + + if (havingExpression == null + || havingExpression.getNodeStatus() == ENodeStatus.nsRemoved) { + stmt.getGroupByClause().setHavingClause(null); + } + + assertTrue(stmt.toString().trim().equalsIgnoreCase("select c.id as sms.id from summit.cntrb_detail c where c.cntrb_date >='2011-01-01' and c.cntrb_date<='2013-01-01' group by c.id")); + } + + public void testExprRemoveAndSetInBetween() { + String sql = "SELECT * FROM lookup.recognition_master_table crg WHERE crg.datedb BETWEEN '$start_date$' AND '$end_date$' GROUP BY crg.id"; + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.setSqltext(sql); + sqlparser.parse(); + TSelectSqlStatement stmt = (TSelectSqlStatement) sqlparser.getSqlstatements().get(0); + TExpression whereExpression = stmt.getWhereClause().getCondition(); + whereExpression.postOrderTraverse(new IExpressionVisitor() { + public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { + TExpression expression = (TExpression) pnode; + if (expression.getLeftOperand() == null && expression.getRightOperand() == null + && expression.toString() != null && expression.toString().indexOf("$") != -1) { + if (expression.toString().indexOf("'$start_date$'") != -1) { + expression.removeMe(); + } else { + expression.setString("2010-01-01"); + } + } + return true; + } + }); + + if (stmt.getWhereClause().getCondition() == null + || stmt.getWhereClause().getCondition().getNodeStatus() == ENodeStatus.nsRemoved) + { + stmt.setWhereClause(null); + } + + //stmt.setWhereClause(null); + assertTrue(stmt.toString().equalsIgnoreCase("SELECT * FROM lookup.recognition_master_table crg GROUP BY crg.id")); + } + + public void testExprRemoveComaInList() { + String sql = "SELECT name, $start_date$ as startDate, $end_date$ as endDate, sex FROM lookup.recognition_master_table"; + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.setSqltext(sql); + sqlparser.parse(); + TSelectSqlStatement stmt = (TSelectSqlStatement) sqlparser.getSqlstatements().get(0); + for (int i = 0; i < stmt.getResultColumnList().size(); i++) { + TExpression expression = stmt.getResultColumnList().getResultColumn(i).getExpr(); + expression.postOrderTraverse(new IExpressionVisitor() { + public boolean exprVisit(TParseTreeNode pnode, boolean pIsLeafNode) { + TExpression expression = (TExpression) pnode; + if (expression.getLeftOperand() == null && expression.getRightOperand() == null + && expression.toString() != null && expression.toString().indexOf("$") != -1) { + expression.removeMe(); + } + return true; + } + }); + + if(expression.getNodeStatus() == ENodeStatus.nsRemoved){ + stmt.getResultColumnList().removeElementAt(i); + i--; + } + } + + assertTrue(stmt.toString().equalsIgnoreCase("SELECT name, sex FROM lookup.recognition_master_table")); + } + +} diff --git a/src/test/java/common/testModifySql.java b/src/test/java/gudusoft/gsqlparser/commonTest/testModifySql.java similarity index 97% rename from src/test/java/common/testModifySql.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testModifySql.java index ff8939e0..fdec353d 100644 --- a/src/test/java/common/testModifySql.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testModifySql.java @@ -1,963 +1,963 @@ -package common; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; - -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import junit.framework.TestCase; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; - -public class testModifySql extends TestCase { - - private TGSqlParser parser = null; - - protected void setUp() throws Exception { - super.setUp(); - parser = new TGSqlParser(EDbVendor.dbvoracle); - } - - protected void tearDown() throws Exception { - parser = null; - super.tearDown(); - } - - /** - *

column: t1.f1 -> t1.f3 as f1, - *

column: t2.f2 as f2 -> t2.f3 - */ - public void test2(){ - parser.sqltext = "select t1.f1, t2.f2 as f2 from table1 t1 left join table2 t2 on t1.f1 = t2.f2 "; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.getResultColumnList().getResultColumn(0).setString("t1.f3 as f1"); - select.getResultColumnList().getResultColumn(1).setString("t2.f3"); - assertTrue(select.toString().equalsIgnoreCase("select t1.f3 as f1, t2.f3 from table1 t1 left join table2 t2 on t1.f1 = t2.f2 ")); - //System.out.println(select.joins.getJoin(0).toString()); - } - - - - /** - * change expression in where condition: - * t1.f2 = 2 -> t1.f2 > 2 - */ - public void test3(){ - parser.sqltext = "select t1.f1 from table1 t1 where t1.f2 = 2 "; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.getWhereClause().getCondition().setString("t1.f2 > 2"); - assertTrue(select.toString().equalsIgnoreCase("select t1.f1 from table1 t1 where t1.f2 > 2 ")); - // System.out.println(select.toString()); - } - - - - /** - * table2 -> "(tableX join tableY using (id)) as table2" - */ - - public void test5(){ - parser.sqltext = "select table1.col1, table2.col2\n" + - "from table1, table2\n" + - "where table1.foo > table2.foo"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TTable t ; - for(int i=0;i table2.foo")); - } - - - - - - /** - *

table2 -> "(tableX join tableY using (id)) as table3" - *

table2.col2 -> table3.col2 - *

table2.foo -> table3.foo - */ - public void test6(){ - parser.sqltext = "select table1.col1, table2.col2\n" + - "from table1, table2\n" + - "where table1.foo > table2.foo"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TTable t ; - for(int i=0;i table3.foo")); - - } - - public void testRemoveExpression1() { - // TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - - String sql = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.fund_coll_attrb IN ( '$Institute$' )\r\n" - + "AND d.fund_acct IN ( '$Fund$' )\r\n" - + "AND d.cntrb_date >= '$From_Date$'\r\n" - + "AND d.cntrb_date <= '$Thru_Date$'\r\n" - + "GROUP BY d.id;"; - - parser.sqltext = sql; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement) parser.sqlstatements.get(0); - TExpression expression = select.getWhereClause().getCondition(); - expression.getLeftOperand().remove2(); -// System.out.println(select.toString().trim()); - -// assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt)\n" + -// "FROM summit.cntrb_detail d\n" + -// "WHERE \n" + -// " d.cntrb_date <= '$Thru_Date$'\n" + -// "GROUP BY d.id;")); - } - - public void testRemoveExpression2() { - // TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); - - String sql = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.fund_coll_attrb IN ( '$Institute$' )\r\n" - + "AND d.fund_acct IN ( '$Fund$' )\r\n" - + "AND d.cntrb_date >= '$From_Date$'\r\n" - + "AND d.cntrb_date <= '$Thru_Date$'\r\n" - + "GROUP BY d.id;"; - - parser.sqltext = sql; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement) parser.sqlstatements.get(0); - TExpression expression = select.getWhereClause().getCondition(); - expression.getRightOperand().remove2(); - // System.out.println(select.toString().trim()); - -// assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt)\n" + -// "FROM summit.cntrb_detail d\n" + -// "WHERE d.fund_coll_attrb IN ( '$Institute$' )\n" + -// "AND d.fund_acct IN ( '$Fund$' )\n" + -// "AND d.cntrb_date >= '$From_Date$'\n" + -// " \n" + -// "GROUP BY d.id;")); - } - - public void testRemoveResultColumn(){ - parser.sqltext = "SELECT A as A_Alias, B AS B_Alias FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TResultColumnList columns = select.getResultColumnList(); - - if (TParseTreeNode.doubleLinkedTokenListToString){ - columns.removeResultColumn(1); - //System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT A as A_Alias FROM TABLE_X")); - TResultColumn resultColumn = new TResultColumn(); - resultColumn.setString("x"); - columns.addResultColumn(resultColumn); - assertTrue(select.toString().equalsIgnoreCase("SELECT A as A_Alias,x FROM TABLE_X")); - - }else{ - columns.removeResultColumn(1); - //System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT A as A_Alias FROM TABLE_X")); - - columns.addResultColumn("x"); - assertTrue(select.toString().equalsIgnoreCase("SELECT A as A_Alias,x FROM TABLE_X")); - } - - } - - - - public void testAddResultColumn(){ - parser.sqltext = "SELECT A as A_Alias, B AS B_Alias FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TResultColumnList columns = select.getResultColumnList(); - if (TParseTreeNode.doubleLinkedTokenListToString){ - TResultColumn resultColumn = new TResultColumn(); - resultColumn.setString("d as d_alias"); - columns.addResultColumn(resultColumn); - }else{ - columns.addResultColumn("d as d_alias"); - } - assertTrue(select.toString().equalsIgnoreCase("SELECT A as A_Alias, B AS B_Alias,d as d_alias FROM TABLE_X")); - } - - - - public void testRemoveAndAddResultColumn(){ - parser.sqltext = "SELECT A.COLUMN1, B.COLUMN2 from TABLE1 A, TABLE2 B where A.COLUMN1=B.COLUMN1"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TResultColumnList columns = select.getResultColumnList(); - columns.removeResultColumn(1); - columns.getResultColumn(0).setString("B.COLUMN3"); - if (TParseTreeNode.doubleLinkedTokenListToString){ - assertTrue(select.toString().equalsIgnoreCase("SELECT B.COLUMN3 from TABLE1 A, TABLE2 B where A.COLUMN1=B.COLUMN1")); - - }else{ - assertTrue(select.toString().equalsIgnoreCase("SELECT B.COLUMN3 from TABLE1 A, TABLE2 B where A.COLUMN1=B.COLUMN1")); - } - // System.out.print(select.toString()); - } - - public void testReplaceColumn(){ - parser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TResultColumnList columns = select.getResultColumnList(); - if (columns.getResultColumn(0).toString().equalsIgnoreCase("*")){ - columns.getResultColumn(0).setString("TABLE_X.*"); - } - //System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT TABLE_X.* FROM TABLE_X")); - } - - public void testRemoveTable1(){ - parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TJoinList joinList = select.joins; - // let's remove t1 and where clause - - joinList.removeJoin(0); - if(TParseTreeNode.doubleLinkedTokenListToString){ - select.setWhereClause(null); - }else{ - select.getWhereClause().setString(" "); - } - - - assertTrue(select.toString().trim().equalsIgnoreCase("SELECT * FROM t2")); - } - - - - public void testRemoveTable2(){ - parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TJoinList joinList = select.joins; - // let's remove t2 and where clause - - joinList.removeJoin(1); - if (TParseTreeNode.doubleLinkedTokenListToString){ - select.setWhereClause(null); - }else{ - select.getWhereClause().setString(" "); - } - - - assertTrue(select.toString().trim().equalsIgnoreCase("SELECT * FROM t1")); - } - - // SELECT * FROM t1,t2 where t1.f1=t2.f2 - // covert to - // SELECT * FROM t1 left join t2 on t1.f1=t2.f2 - // this includes following steps - // 1. remove t2 - // 2. replace t1 with t1 left join t2 on t1.f1=t2.f2 - // 3. remove where clause - - // for a detailed demo about how to Rewrite Oracle propriety joins to ANSI SQL compliant joins. - // http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/rewrite-oracle-propriety-joins-to-ansi-sql-compliant-joins/ - - // Rewrite SQL Server proprietary joins to ANSI SQL compliant joins. - // http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/rewrite-sql-server-propriety-joins-to-ansi-sql-compliant-joins/ - - public void testRemoveTable3(){ - parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TJoinList joinList = select.joins; - // let's remove t2 and where clause - joinList.removeJoin(1); - - //replace t1 with t1 left join,t2 on t1.f1=t2.f2 - - joinList.getJoin(0).setString("t1 left join t2 on t1.f1=t2.f2"); - // remove where clause - if (TParseTreeNode.doubleLinkedTokenListToString){ - select.setWhereClause(null); - }else{ - select.getWhereClause().setString(" "); - } - - - // System.out.println(select.toString()); - assertTrue(select.toString().trim().equalsIgnoreCase("SELECT * FROM t1 left join t2 on t1.f1=t2.f2")); - } - - - - - - public void testRemoveCTE(){ - parser.sqltext = "with test as (select id from emp)\n" + - "select * from test"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.getStartToken().setString(""); // remove WITH token - TSourceToken startToken = select.getCteList().getStartToken(); - TSourceToken endToken = select.getCteList().getEndToken(); - for(int i=startToken.posinlist;i<=endToken.posinlist ;i++){ - startToken.container.get(i).setString(""); // remove all token of cte - } - // System.out.println(select.toString()); - assertTrue(select.toString().trim().equalsIgnoreCase("select * from test")); - } - - - - public void testAddWhereClause(){ - parser.sqltext = "SELECT * FROM TABLE_X where f > 0"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.addWhereClause("c>1"); - - // System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X where (f > 0) and c>1")); - } - - - - public void testAddWhereClauseOR(){ - parser.sqltext = "SELECT * FROM TABLE_X where f > 0"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.addWhereClauseOR("c>1"); - - // System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X where (f > 0) or c>1")); - } - - - - public void testAddWhereClause1(){ - parser.sqltext = "select count(*) from TableName where NOT a OR NOT b"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.addCondition("c=1"); - assertTrue(select.toString().equalsIgnoreCase("select count(*) from TableName where (NOT a OR NOT b) and c=1")); - } - - - - public void testAddWhereClause2(){ - parser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - if (TParseTreeNode.doubleLinkedTokenListToString){ - TWhereClause whereClause = new TWhereClause("c>1"); - //whereClause.setText("where c>1"); - select.setAnchorNode(select.joins); - select.setWhereClause(whereClause); - }else{ - select.addWhereClause("c>1"); - } - - - //System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X\nwhere c>1")); - } - - - - public void testAddWhereClause3(){ - parser.sqltext = "SELECT * FROM TABLE_X group by a"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - if (TParseTreeNode.doubleLinkedTokenListToString){ - TWhereClause whereClause = new TWhereClause("where c>1"); - select.setAnchorNode(select.joins); - select.setWhereClause(whereClause); - }else{ - select.addWhereClause("c>1"); - } - - //System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X\nwhere c>1 group by a")); - } - - - - -// - public void testAddConditionAfterJoin(){ - parser.sqltext = "SELECT tableA.itemA1, tableB.itemB1\n" - + " FROM tableA\n" - + " INNER JOIN tableB\n" - + " ON tableB.itemB2 = tableA.itemA2\n" - + " INNER JOIN (\n" - + " SELECT tableC.itemC1\n" - + " FROM tableC\n" - + " WHERE tableC.itemC3='ABC'\n" - + " GROUP BY tableC.itemC1\n" - + ") unNamedJoin\n" - + " ON unNamedJoin.itemC1 = tableB.itemB2\n"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TJoinList joinList = select.joins; - TJoinItem item0 = joinList.getJoin( 0 ).getJoinItems( ).getJoinItem( 0 ); - if (TParseTreeNode.doubleLinkedTokenListToString){ - item0.getOnCondition().setString("("+item0.getOnCondition()+")"+" and 1=1"); - TWhereClause whereClause = new TWhereClause("c>1"); - //whereClause.setText("where c>1"); - select.setAnchorNode(select.joins); - select.setWhereClause(whereClause); - //select.setWhereClause(whereClause); - - }else{ - item0.getOnCondition( ).addANDCondition( "1=1" ); - select.addWhereClause("c>1"); - } - - // System.out.println(select.toString().trim()); - assertTrue(select.toString().trim().equalsIgnoreCase("SELECT tableA.itemA1, tableB.itemB1\n" + - " FROM tableA\n" + - " INNER JOIN tableB\n" + - " ON (tableB.itemB2 = tableA.itemA2) and 1=1\n" + - " INNER JOIN (\n" + - " SELECT tableC.itemC1\n" + - " FROM tableC\n" + - " WHERE tableC.itemC3='ABC'\n" + - " GROUP BY tableC.itemC1\n" + - ") unNamedJoin\n" + - " ON unNamedJoin.itemC1 = tableB.itemB2\nwhere c>1")); - - } - - - - - public void testRemoveWhereClause(){ - parser.sqltext = "SELECT * FROM TABLE_X where a>1 order by a"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - if (TParseTreeNode.doubleLinkedTokenListToString){ - select.setWhereClause(null); - }else { - select.getWhereClause().setString(" "); - } - - // System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by a")); - } - - - - public void testAddNewOrderBy(){ - parser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - if (TParseTreeNode.doubleLinkedTokenListToString){ - TOrderBy orderBy = new TOrderBy("order by a desc"); - //orderBy.setText("order by a desc"); - select.setOrderbyClause(orderBy); - }else{ - select.addOrderBy("a desc"); - } - - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by a desc")); - - parser.sqltext = "SELECT * FROM TABLE_X where a>1"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - if (TParseTreeNode.doubleLinkedTokenListToString){ - TOrderBy orderBy = new TOrderBy("order by a desc"); - //orderBy.setText("order by a desc"); - select.setOrderbyClause(orderBy); - }else{ - select.addOrderBy("a desc"); - } - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X where a>1 order by a desc")); - - parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - if (TParseTreeNode.doubleLinkedTokenListToString){ - TOrderBy orderBy = new TOrderBy("order by a asc"); - //orderBy.setText("order by a asc"); - select.setOrderbyClause(orderBy); - }else{ - select.addOrderBy("a asc"); - } - - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1 order by a asc")); - - parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1 order by c desc"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - if (TParseTreeNode.doubleLinkedTokenListToString){ - TOrderByItem orderByItem = new TOrderByItem(); - orderByItem.setString("a asc"); - select.getOrderbyClause().getItems().addOrderByItem(orderByItem); - }else{ - select.addOrderBy("a asc"); - } - - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1 order by c desc,a asc")); - - parser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - if (TParseTreeNode.doubleLinkedTokenListToString){ - TWhereClause whereClause = new TWhereClause("a>1 and b>2"); - //whereClause.setText("where a>1 and b>2"); - select.setWhereClause(whereClause); - TOrderBy orderBy = new TOrderBy("order by a desc"); - //orderBy.setText("order by a desc"); - select.setOrderbyClause(orderBy); - - }else{ - select.addWhereClause("a>1 and b>2") ; - select.addOrderBy("a desc"); - } - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X\nwhere a>1 and b>2 order by a desc")); - - // System.out.println(select.toString()); - } - - - - public void testAddOrderBy(){ - parser.sqltext = "SELECT * FROM TABLE_X order by a"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - if(TParseTreeNode.doubleLinkedTokenListToString){ - TOrderByItem orderByItem = new TOrderByItem(); - orderByItem.setString("b"); - select.getOrderbyClause().getItems().addOrderByItem(orderByItem); - }else{ - select.getOrderbyClause().addOrderByItem("b"); - } - - - //System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by a,b")); - } - - public void testRemoveOrderBy(){ - parser.sqltext = "SELECT * FROM TABLE_X order by a,b"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - if (TParseTreeNode.doubleLinkedTokenListToString){ - select.getOrderbyClause().getItems().removeItem(1); - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by a")); - - select.getOrderbyClause().getItems().removeItem(0); - select.setOrderbyClause(null); - assertTrue(select.toString().trim().equalsIgnoreCase("SELECT * FROM TABLE_X")); - - } - } - - - public void testReplaceOrderBy1(){ - parser.sqltext = "SELECT * FROM TABLE_X order by a"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.getOrderbyClause().getItems().getOrderByItem(0).setString("b asc,c desc"); - //select.getOrderbyClause().addOrderByItem("c"); - - //System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by b asc,c desc")); - } - - - public void testReplaceOrderBy2(){ - parser.sqltext = "SELECT * FROM TABLE_X order by a"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.getOrderbyClause().getItems().getOrderByItem(0).setString("b asc"); - if(TParseTreeNode.doubleLinkedTokenListToString){ - TOrderByItem orderByItem1 = new TOrderByItem(); - orderByItem1.setString("c desc"); - select.getOrderbyClause().getItems().addOrderByItem(orderByItem1); - - TOrderByItem orderByItem2 = new TOrderByItem(); - orderByItem2.setString("d desc"); - select.getOrderbyClause().getItems().addOrderByItem(orderByItem2); - }else{ - select.getOrderbyClause().addOrderByItem("c desc"); - select.getOrderbyClause().addOrderByItem("d desc"); - } - - // System.out.println(select.toString()); - assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by b asc,c desc,d desc")); - } - - public void testRemoveSetClauseInUpdate(){ - parser.sqltext = "UPDATE BLA SET A=2, B=3 WHERE X=5"; - assertTrue(parser.parse() == 0); - - TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)parser.sqlstatements.get(0); - TResultColumnList setClauses = updateSqlStatement.getResultColumnList(); - setClauses.removeResultColumn(1); // the second set expression - if (TParseTreeNode.doubleLinkedTokenListToString){ - assertTrue(updateSqlStatement.toString().equalsIgnoreCase("UPDATE BLA SET A=2 WHERE X=5")); - - }else{ - assertTrue(updateSqlStatement.toString().equalsIgnoreCase("UPDATE BLA SET A=2 WHERE X=5")); - } - } - - - - public void testModifyJoin(){ - parser.sqltext = "select * from t1 inner join t2 on t1.col1 = t2.col2"; - assertTrue(parser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - selectSqlStatement.joins.getJoin(0).setString("t2 left join t1 on t1.col3 = t2.col5"); - assertTrue(selectSqlStatement.toString().equalsIgnoreCase("select * from t2 left join t1 on t1.col3 = t2.col5")); - } - - - public void testModifyTable(){ - parser.sqltext = "select * from t1"; - assertTrue(parser.parse() == 0); - - TTable table = parser.sqlstatements.get(0).tables.getTable(0); - table.setString("newt"); - assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("select * from newt")); - } - - public void testModifyTable2(){ - parser.sqltext = "SELECT * from employee e"; - assertTrue(parser.parse() == 0); - - TTable table = parser.sqlstatements.get(0).tables.getTable(0); - table.getTableName().setString("new_employee"); - assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("SELECT * from new_employee e")); - table.getAliasClause().setString("new_alias"); - assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("SELECT * from new_employee new_alias")); - } - - public void testAddTableAlias(){ - parser.sqltext = "select * from t1"; - assertTrue(parser.parse() == 0); - - TTable table = parser.sqlstatements.get(0).tables.getTable(0); - table.setString(table.toString()+ " AS foo "); - assertTrue(parser.sqlstatements.get(0).toString().trim().equalsIgnoreCase("select * from t1 AS foo")); - //System.out.print(parser.sqlstatements.get(0).toString()); - } - - - - public void testModifyTableInCreate(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvimpala); - sqlparser.sqltext = "create table if not exists campaign_1 ( id int, name string )"; - int ret = sqlparser.parse(); - TCustomSqlStatement stmt = sqlparser.sqlstatements.get(0); - TTable table = stmt.tables.getTable(0); - table.setString("prefix_." + table.toString() + " " + table.getAliasName());; - assertTrue(table.toString().trim().equalsIgnoreCase("prefix_.campaign_1")); - } - - - - public void testRemoveHavingClause(){ - parser.sqltext = "SELECT\n" + - "c.ID AS \"SMS.ID\"\n" + - "FROM\n" + - "SUMMIT.cntrb_detail c\n" + - "where\n" + - "c.cntrb_date >='$GivingFromDate$'\n" + - "and c.cntrb_date<='$GivingThruDate$'\n" + - "group by c.id\n" + - "having sum(c.amt) >= '$GivingFromAmount$' and sum(c.amt) <= '$GivingThruAmount$'"; - assertTrue(parser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - TGroupBy groupBy = selectSqlStatement.getGroupByClause(); - TExpression having = groupBy.getHavingClause(); - having.setString(" "); - groupBy.getHAVING().setString(" "); - assertTrue(selectSqlStatement.toString().trim().equalsIgnoreCase("SELECT\n" + - "c.ID AS \"SMS.ID\"\n" + - "FROM\n" + - "SUMMIT.cntrb_detail c\n" + - "where\n" + - "c.cntrb_date >='$GivingFromDate$'\n" + - "and c.cntrb_date<='$GivingThruDate$'\n" + - "group by c.id")); - //System.out.println(selectSqlStatement.toString()); - } - - - - - public void testAlterTable(){ - TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); - lcparser.sqltext = "ALTER TABLE P_CAP \n" + - "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + - "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD);"; - assertTrue(lcparser.parse() == 0); - TAlterTableStatement at = (TAlterTableStatement) lcparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = at.getAlterTableOptionList().getAlterTableOption(0); - TConstraint constraint = alterTableOption.getConstraintList().getConstraint(0); - assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); - TObjectName refColumn = constraint.getReferencedColumnList().getObjectName(0); - refColumn.setString(refColumn.toString()+",CEL_NEWID"); - //System.out.println(at.toString()); - assertTrue(at.toString().equalsIgnoreCase("ALTER TABLE P_CAP \n" + - "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + - "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD,CEL_NEWID);")); - } - - - - - public void testAlterTable2(){ - TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); - lcparser.sqltext = "ALTER TABLE P_CAP \n" + - "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + - "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD);"; - assertTrue(lcparser.parse() == 0); - TAlterTableStatement at = (TAlterTableStatement) lcparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = at.getAlterTableOptionList().getAlterTableOption(0); - TConstraint constraint = alterTableOption.getConstraintList().getConstraint(0); - assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); - TObjectName refColumn = constraint.getReferencedColumnList().getObjectName(0); - - if(TParseTreeNode.doubleLinkedTokenListToString){ - TObjectName columnName0 = new TObjectName(); - columnName0.setString("CEL_NEWID"); - constraint.getReferencedColumnList().insertElementAt(columnName0,0); - }else{ - TDummy dummy = new TDummy(); - dummy.setGsqlparser(lcparser); - dummy.setString("CEL_NEWID,"); - dummy.addAllMyTokensToTokenList(refColumn.getStartToken().container,refColumn.getStartToken().posinlist ); - } - - // System.out.println(at.toString()); - assertTrue(at.toString().equalsIgnoreCase("ALTER TABLE P_CAP \n" + - "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + - "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_NEWID,CEL_COD);")); - } - - - - public void testAddWhere(){ - TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); - lcparser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(lcparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)lcparser.sqlstatements.get(0); - - if (TParseTreeNode.doubleLinkedTokenListToString){ - TWhereClause whereClause = new TWhereClause("f > 0"); - // whereClause.setText("where f > 0"); - select.setAnchorNode(select.joins); - select.setWhereClause(whereClause); - // System.out.println(select.toString()); - - }else{ - TSourceToken prevToken = select.joins.getEndToken(); - - TDummy dummy = new TDummy(); - dummy.setGsqlparser(lcparser); - dummy.setString(" where f > 0"); - dummy.addAllMyTokensToTokenList(prevToken.container,prevToken.posinlist + 1 ); - - for(int i=0;i 0")); - - - } - - - public void testRemoveParenthesis(){ - parser.sqltext = "select * from ((select * from some_table where some_column < ?)) some_view where a_column = something"; - assertTrue(parser.parse() == 0); - removeDuplicatedParenthesis(parser.sourcetokenlist); - assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("select * from ( select * from some_table where some_column < ? ) some_view where a_column = something")); - - parser.sqltext = "select * from ((select a from b) union (select a from d))"; - assertTrue(parser.parse() == 0); - removeDuplicatedParenthesis(parser.sourcetokenlist); - assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("select * from ((select a from b) union (select a from d))")); - - parser.sqltext = "((select a from b) order by a)"; - assertTrue(parser.parse() == 0); - removeDuplicatedParenthesis(parser.sourcetokenlist); - assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("((select a from b) order by a)")); - - parser.sqltext = "(((select a from b)) order by a)"; - assertTrue(parser.parse() == 0); - removeDuplicatedParenthesis(parser.sourcetokenlist); - assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("(( select a from b ) order by a)")); - - parser.sqltext = "((((select a from b)) order by a))"; - assertTrue(parser.parse() == 0); - removeDuplicatedParenthesis(parser.sourcetokenlist); - assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("( ( select a from b ) order by a )")); - - parser.sqltext = "select * from user_table where ((username like '%admin%'));"; - assertTrue(parser.parse() == 0); - removeDuplicatedParenthesis(parser.sourcetokenlist); - assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("select * from user_table where ( username like '%admin%' );")); - - } - - - - private int removeDuplicatedParenthesis(TSourceTokenList sourceTokenList){ - int cnt = 0; - TSourceToken st = null, prevEndToken = null; - boolean inParenthesis = false; - for(int i=0;i 1){ - TSourceToken beginSt = stmt.getStartToken(); - TSourceToken endSt = stmt.getEndToken(); - int i = parenthesisNum - 1; - while ((i>0)&&(beginSt!=null)&&(endSt != null)){ - beginSt.setString(" "); - beginSt = beginSt.nextSolidToken(); - endSt.setString(" "); - endSt = endSt.prevSolidToken(); - i--; - } - } - - } - for (int i=0;i column: t1.f1 -> t1.f3 as f1, + *

column: t2.f2 as f2 -> t2.f3 + */ + public void test2(){ + parser.sqltext = "select t1.f1, t2.f2 as f2 from table1 t1 left join table2 t2 on t1.f1 = t2.f2 "; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.getResultColumnList().getResultColumn(0).setString("t1.f3 as f1"); + select.getResultColumnList().getResultColumn(1).setString("t2.f3"); + assertTrue(select.toString().equalsIgnoreCase("select t1.f3 as f1, t2.f3 from table1 t1 left join table2 t2 on t1.f1 = t2.f2 ")); + //System.out.println(select.joins.getJoin(0).toString()); + } + + + + /** + * change expression in where condition: + * t1.f2 = 2 -> t1.f2 > 2 + */ + public void test3(){ + parser.sqltext = "select t1.f1 from table1 t1 where t1.f2 = 2 "; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.getWhereClause().getCondition().setString("t1.f2 > 2"); + assertTrue(select.toString().equalsIgnoreCase("select t1.f1 from table1 t1 where t1.f2 > 2 ")); + // System.out.println(select.toString()); + } + + + + /** + * table2 -> "(tableX join tableY using (id)) as table2" + */ + + public void test5(){ + parser.sqltext = "select table1.col1, table2.col2\n" + + "from table1, table2\n" + + "where table1.foo > table2.foo"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TTable t ; + for(int i=0;i table2.foo")); + } + + + + + + /** + *

table2 -> "(tableX join tableY using (id)) as table3" + *

table2.col2 -> table3.col2 + *

table2.foo -> table3.foo + */ + public void test6(){ + parser.sqltext = "select table1.col1, table2.col2\n" + + "from table1, table2\n" + + "where table1.foo > table2.foo"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TTable t ; + for(int i=0;i table3.foo")); + + } + + public void testRemoveExpression1() { + // TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + + String sql = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.fund_coll_attrb IN ( '$Institute$' )\r\n" + + "AND d.fund_acct IN ( '$Fund$' )\r\n" + + "AND d.cntrb_date >= '$From_Date$'\r\n" + + "AND d.cntrb_date <= '$Thru_Date$'\r\n" + + "GROUP BY d.id;"; + + parser.sqltext = sql; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement) parser.sqlstatements.get(0); + TExpression expression = select.getWhereClause().getCondition(); + expression.getLeftOperand().remove2(); +// System.out.println(select.toString().trim()); + +// assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt)\n" + +// "FROM summit.cntrb_detail d\n" + +// "WHERE \n" + +// " d.cntrb_date <= '$Thru_Date$'\n" + +// "GROUP BY d.id;")); + } + + public void testRemoveExpression2() { + // TGSqlParser parser = new TGSqlParser(EDbVendor.dbvoracle); + + String sql = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.fund_coll_attrb IN ( '$Institute$' )\r\n" + + "AND d.fund_acct IN ( '$Fund$' )\r\n" + + "AND d.cntrb_date >= '$From_Date$'\r\n" + + "AND d.cntrb_date <= '$Thru_Date$'\r\n" + + "GROUP BY d.id;"; + + parser.sqltext = sql; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement) parser.sqlstatements.get(0); + TExpression expression = select.getWhereClause().getCondition(); + expression.getRightOperand().remove2(); + // System.out.println(select.toString().trim()); + +// assertTrue(select.toString().equalsIgnoreCase("SELECT SUM (d.amt)\n" + +// "FROM summit.cntrb_detail d\n" + +// "WHERE d.fund_coll_attrb IN ( '$Institute$' )\n" + +// "AND d.fund_acct IN ( '$Fund$' )\n" + +// "AND d.cntrb_date >= '$From_Date$'\n" + +// " \n" + +// "GROUP BY d.id;")); + } + + public void testRemoveResultColumn(){ + parser.sqltext = "SELECT A as A_Alias, B AS B_Alias FROM TABLE_X"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TResultColumnList columns = select.getResultColumnList(); + + if (TParseTreeNode.doubleLinkedTokenListToString){ + columns.removeResultColumn(1); + //System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT A as A_Alias FROM TABLE_X")); + TResultColumn resultColumn = new TResultColumn(); + resultColumn.setString("x"); + columns.addResultColumn(resultColumn); + assertTrue(select.toString().equalsIgnoreCase("SELECT A as A_Alias,x FROM TABLE_X")); + + }else{ + columns.removeResultColumn(1); + //System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT A as A_Alias FROM TABLE_X")); + + columns.addResultColumn("x"); + assertTrue(select.toString().equalsIgnoreCase("SELECT A as A_Alias,x FROM TABLE_X")); + } + + } + + + + public void testAddResultColumn(){ + parser.sqltext = "SELECT A as A_Alias, B AS B_Alias FROM TABLE_X"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TResultColumnList columns = select.getResultColumnList(); + if (TParseTreeNode.doubleLinkedTokenListToString){ + TResultColumn resultColumn = new TResultColumn(); + resultColumn.setString("d as d_alias"); + columns.addResultColumn(resultColumn); + }else{ + columns.addResultColumn("d as d_alias"); + } + assertTrue(select.toString().equalsIgnoreCase("SELECT A as A_Alias, B AS B_Alias,d as d_alias FROM TABLE_X")); + } + + + + public void testRemoveAndAddResultColumn(){ + parser.sqltext = "SELECT A.COLUMN1, B.COLUMN2 from TABLE1 A, TABLE2 B where A.COLUMN1=B.COLUMN1"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TResultColumnList columns = select.getResultColumnList(); + columns.removeResultColumn(1); + columns.getResultColumn(0).setString("B.COLUMN3"); + if (TParseTreeNode.doubleLinkedTokenListToString){ + assertTrue(select.toString().equalsIgnoreCase("SELECT B.COLUMN3 from TABLE1 A, TABLE2 B where A.COLUMN1=B.COLUMN1")); + + }else{ + assertTrue(select.toString().equalsIgnoreCase("SELECT B.COLUMN3 from TABLE1 A, TABLE2 B where A.COLUMN1=B.COLUMN1")); + } + // System.out.print(select.toString()); + } + + public void testReplaceColumn(){ + parser.sqltext = "SELECT * FROM TABLE_X"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TResultColumnList columns = select.getResultColumnList(); + if (columns.getResultColumn(0).toString().equalsIgnoreCase("*")){ + columns.getResultColumn(0).setString("TABLE_X.*"); + } + //System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT TABLE_X.* FROM TABLE_X")); + } + + public void testRemoveTable1(){ + parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TJoinList joinList = select.joins; + // let's remove t1 and where clause + + joinList.removeJoin(0); + if(TParseTreeNode.doubleLinkedTokenListToString){ + select.setWhereClause(null); + }else{ + select.getWhereClause().setString(" "); + } + + + assertTrue(select.toString().trim().equalsIgnoreCase("SELECT * FROM t2")); + } + + + + public void testRemoveTable2(){ + parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TJoinList joinList = select.joins; + // let's remove t2 and where clause + + joinList.removeJoin(1); + if (TParseTreeNode.doubleLinkedTokenListToString){ + select.setWhereClause(null); + }else{ + select.getWhereClause().setString(" "); + } + + + assertTrue(select.toString().trim().equalsIgnoreCase("SELECT * FROM t1")); + } + + // SELECT * FROM t1,t2 where t1.f1=t2.f2 + // covert to + // SELECT * FROM t1 left join t2 on t1.f1=t2.f2 + // this includes following steps + // 1. remove t2 + // 2. replace t1 with t1 left join t2 on t1.f1=t2.f2 + // 3. remove where clause + + // for a detailed demo about how to Rewrite Oracle propriety joins to ANSI SQL compliant joins. + // http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/rewrite-oracle-propriety-joins-to-ansi-sql-compliant-joins/ + + // Rewrite SQL Server proprietary joins to ANSI SQL compliant joins. + // http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/rewrite-sql-server-propriety-joins-to-ansi-sql-compliant-joins/ + + public void testRemoveTable3(){ + parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TJoinList joinList = select.joins; + // let's remove t2 and where clause + joinList.removeJoin(1); + + //replace t1 with t1 left join,t2 on t1.f1=t2.f2 + + joinList.getJoin(0).setString("t1 left join t2 on t1.f1=t2.f2"); + // remove where clause + if (TParseTreeNode.doubleLinkedTokenListToString){ + select.setWhereClause(null); + }else{ + select.getWhereClause().setString(" "); + } + + + // System.out.println(select.toString()); + assertTrue(select.toString().trim().equalsIgnoreCase("SELECT * FROM t1 left join t2 on t1.f1=t2.f2")); + } + + + + + + public void testRemoveCTE(){ + parser.sqltext = "with test as (select id from emp)\n" + + "select * from test"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.getStartToken().setString(""); // remove WITH token + TSourceToken startToken = select.getCteList().getStartToken(); + TSourceToken endToken = select.getCteList().getEndToken(); + for(int i=startToken.posinlist;i<=endToken.posinlist ;i++){ + startToken.container.get(i).setString(""); // remove all token of cte + } + // System.out.println(select.toString()); + assertTrue(select.toString().trim().equalsIgnoreCase("select * from test")); + } + + + + public void testAddWhereClause(){ + parser.sqltext = "SELECT * FROM TABLE_X where f > 0"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.addWhereClause("c>1"); + + // System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X where (f > 0) and c>1")); + } + + + + public void testAddWhereClauseOR(){ + parser.sqltext = "SELECT * FROM TABLE_X where f > 0"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.addWhereClauseOR("c>1"); + + // System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X where (f > 0) or c>1")); + } + + + + public void testAddWhereClause1(){ + parser.sqltext = "select count(*) from TableName where NOT a OR NOT b"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.addCondition("c=1"); + assertTrue(select.toString().equalsIgnoreCase("select count(*) from TableName where (NOT a OR NOT b) and c=1")); + } + + + + public void testAddWhereClause2(){ + parser.sqltext = "SELECT * FROM TABLE_X"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + if (TParseTreeNode.doubleLinkedTokenListToString){ + TWhereClause whereClause = new TWhereClause("c>1"); + //whereClause.setText("where c>1"); + select.setAnchorNode(select.joins); + select.setWhereClause(whereClause); + }else{ + select.addWhereClause("c>1"); + } + + + //System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X\nwhere c>1")); + } + + + + public void testAddWhereClause3(){ + parser.sqltext = "SELECT * FROM TABLE_X group by a"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + if (TParseTreeNode.doubleLinkedTokenListToString){ + TWhereClause whereClause = new TWhereClause("where c>1"); + select.setAnchorNode(select.joins); + select.setWhereClause(whereClause); + }else{ + select.addWhereClause("c>1"); + } + + //System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X\nwhere c>1 group by a")); + } + + + + +// + public void testAddConditionAfterJoin(){ + parser.sqltext = "SELECT tableA.itemA1, tableB.itemB1\n" + + " FROM tableA\n" + + " INNER JOIN tableB\n" + + " ON tableB.itemB2 = tableA.itemA2\n" + + " INNER JOIN (\n" + + " SELECT tableC.itemC1\n" + + " FROM tableC\n" + + " WHERE tableC.itemC3='ABC'\n" + + " GROUP BY tableC.itemC1\n" + + ") unNamedJoin\n" + + " ON unNamedJoin.itemC1 = tableB.itemB2\n"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TJoinList joinList = select.joins; + TJoinItem item0 = joinList.getJoin( 0 ).getJoinItems( ).getJoinItem( 0 ); + if (TParseTreeNode.doubleLinkedTokenListToString){ + item0.getOnCondition().setString("("+item0.getOnCondition()+")"+" and 1=1"); + TWhereClause whereClause = new TWhereClause("c>1"); + //whereClause.setText("where c>1"); + select.setAnchorNode(select.joins); + select.setWhereClause(whereClause); + //select.setWhereClause(whereClause); + + }else{ + item0.getOnCondition( ).addANDCondition( "1=1" ); + select.addWhereClause("c>1"); + } + + // System.out.println(select.toString().trim()); + assertTrue(select.toString().trim().equalsIgnoreCase("SELECT tableA.itemA1, tableB.itemB1\n" + + " FROM tableA\n" + + " INNER JOIN tableB\n" + + " ON (tableB.itemB2 = tableA.itemA2) and 1=1\n" + + " INNER JOIN (\n" + + " SELECT tableC.itemC1\n" + + " FROM tableC\n" + + " WHERE tableC.itemC3='ABC'\n" + + " GROUP BY tableC.itemC1\n" + + ") unNamedJoin\n" + + " ON unNamedJoin.itemC1 = tableB.itemB2\nwhere c>1")); + + } + + + + + public void testRemoveWhereClause(){ + parser.sqltext = "SELECT * FROM TABLE_X where a>1 order by a"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + if (TParseTreeNode.doubleLinkedTokenListToString){ + select.setWhereClause(null); + }else { + select.getWhereClause().setString(" "); + } + + // System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by a")); + } + + + + public void testAddNewOrderBy(){ + parser.sqltext = "SELECT * FROM TABLE_X"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + if (TParseTreeNode.doubleLinkedTokenListToString){ + TOrderBy orderBy = new TOrderBy("order by a desc"); + //orderBy.setText("order by a desc"); + select.setOrderbyClause(orderBy); + }else{ + select.addOrderBy("a desc"); + } + + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by a desc")); + + parser.sqltext = "SELECT * FROM TABLE_X where a>1"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + if (TParseTreeNode.doubleLinkedTokenListToString){ + TOrderBy orderBy = new TOrderBy("order by a desc"); + //orderBy.setText("order by a desc"); + select.setOrderbyClause(orderBy); + }else{ + select.addOrderBy("a desc"); + } + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X where a>1 order by a desc")); + + parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + if (TParseTreeNode.doubleLinkedTokenListToString){ + TOrderBy orderBy = new TOrderBy("order by a asc"); + //orderBy.setText("order by a asc"); + select.setOrderbyClause(orderBy); + }else{ + select.addOrderBy("a asc"); + } + + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1 order by a asc")); + + parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1 order by c desc"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + if (TParseTreeNode.doubleLinkedTokenListToString){ + TOrderByItem orderByItem = new TOrderByItem(); + orderByItem.setString("a asc"); + select.getOrderbyClause().getItems().addOrderByItem(orderByItem); + }else{ + select.addOrderBy("a asc"); + } + + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1 order by c desc,a asc")); + + parser.sqltext = "SELECT * FROM TABLE_X"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + if (TParseTreeNode.doubleLinkedTokenListToString){ + TWhereClause whereClause = new TWhereClause("a>1 and b>2"); + //whereClause.setText("where a>1 and b>2"); + select.setWhereClause(whereClause); + TOrderBy orderBy = new TOrderBy("order by a desc"); + //orderBy.setText("order by a desc"); + select.setOrderbyClause(orderBy); + + }else{ + select.addWhereClause("a>1 and b>2") ; + select.addOrderBy("a desc"); + } + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X\nwhere a>1 and b>2 order by a desc")); + + // System.out.println(select.toString()); + } + + + + public void testAddOrderBy(){ + parser.sqltext = "SELECT * FROM TABLE_X order by a"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + if(TParseTreeNode.doubleLinkedTokenListToString){ + TOrderByItem orderByItem = new TOrderByItem(); + orderByItem.setString("b"); + select.getOrderbyClause().getItems().addOrderByItem(orderByItem); + }else{ + select.getOrderbyClause().addOrderByItem("b"); + } + + + //System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by a,b")); + } + + public void testRemoveOrderBy(){ + parser.sqltext = "SELECT * FROM TABLE_X order by a,b"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + if (TParseTreeNode.doubleLinkedTokenListToString){ + select.getOrderbyClause().getItems().removeItem(1); + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by a")); + + select.getOrderbyClause().getItems().removeItem(0); + select.setOrderbyClause(null); + assertTrue(select.toString().trim().equalsIgnoreCase("SELECT * FROM TABLE_X")); + + } + } + + + public void testReplaceOrderBy1(){ + parser.sqltext = "SELECT * FROM TABLE_X order by a"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.getOrderbyClause().getItems().getOrderByItem(0).setString("b asc,c desc"); + //select.getOrderbyClause().addOrderByItem("c"); + + //System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by b asc,c desc")); + } + + + public void testReplaceOrderBy2(){ + parser.sqltext = "SELECT * FROM TABLE_X order by a"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.getOrderbyClause().getItems().getOrderByItem(0).setString("b asc"); + if(TParseTreeNode.doubleLinkedTokenListToString){ + TOrderByItem orderByItem1 = new TOrderByItem(); + orderByItem1.setString("c desc"); + select.getOrderbyClause().getItems().addOrderByItem(orderByItem1); + + TOrderByItem orderByItem2 = new TOrderByItem(); + orderByItem2.setString("d desc"); + select.getOrderbyClause().getItems().addOrderByItem(orderByItem2); + }else{ + select.getOrderbyClause().addOrderByItem("c desc"); + select.getOrderbyClause().addOrderByItem("d desc"); + } + + // System.out.println(select.toString()); + assertTrue(select.toString().equalsIgnoreCase("SELECT * FROM TABLE_X order by b asc,c desc,d desc")); + } + + public void testRemoveSetClauseInUpdate(){ + parser.sqltext = "UPDATE BLA SET A=2, B=3 WHERE X=5"; + assertTrue(parser.parse() == 0); + + TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)parser.sqlstatements.get(0); + TResultColumnList setClauses = updateSqlStatement.getResultColumnList(); + setClauses.removeResultColumn(1); // the second set expression + if (TParseTreeNode.doubleLinkedTokenListToString){ + assertTrue(updateSqlStatement.toString().equalsIgnoreCase("UPDATE BLA SET A=2 WHERE X=5")); + + }else{ + assertTrue(updateSqlStatement.toString().equalsIgnoreCase("UPDATE BLA SET A=2 WHERE X=5")); + } + } + + + + public void testModifyJoin(){ + parser.sqltext = "select * from t1 inner join t2 on t1.col1 = t2.col2"; + assertTrue(parser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); + selectSqlStatement.joins.getJoin(0).setString("t2 left join t1 on t1.col3 = t2.col5"); + assertTrue(selectSqlStatement.toString().equalsIgnoreCase("select * from t2 left join t1 on t1.col3 = t2.col5")); + } + + + public void testModifyTable(){ + parser.sqltext = "select * from t1"; + assertTrue(parser.parse() == 0); + + TTable table = parser.sqlstatements.get(0).tables.getTable(0); + table.setString("newt"); + assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("select * from newt")); + } + + public void testModifyTable2(){ + parser.sqltext = "SELECT * from employee e"; + assertTrue(parser.parse() == 0); + + TTable table = parser.sqlstatements.get(0).tables.getTable(0); + table.getTableName().setString("new_employee"); + assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("SELECT * from new_employee e")); + table.getAliasClause().setString("new_alias"); + assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("SELECT * from new_employee new_alias")); + } + + public void testAddTableAlias(){ + parser.sqltext = "select * from t1"; + assertTrue(parser.parse() == 0); + + TTable table = parser.sqlstatements.get(0).tables.getTable(0); + table.setString(table.toString()+ " AS foo "); + assertTrue(parser.sqlstatements.get(0).toString().trim().equalsIgnoreCase("select * from t1 AS foo")); + //System.out.print(parser.sqlstatements.get(0).toString()); + } + + + + public void testModifyTableInCreate(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvimpala); + sqlparser.sqltext = "create table if not exists campaign_1 ( id int, name string )"; + int ret = sqlparser.parse(); + TCustomSqlStatement stmt = sqlparser.sqlstatements.get(0); + TTable table = stmt.tables.getTable(0); + table.setString("prefix_." + table.toString() + " " + table.getAliasName());; + assertTrue(table.toString().trim().equalsIgnoreCase("prefix_.campaign_1")); + } + + + + public void testRemoveHavingClause(){ + parser.sqltext = "SELECT\n" + + "c.ID AS \"SMS.ID\"\n" + + "FROM\n" + + "SUMMIT.cntrb_detail c\n" + + "where\n" + + "c.cntrb_date >='$GivingFromDate$'\n" + + "and c.cntrb_date<='$GivingThruDate$'\n" + + "group by c.id\n" + + "having sum(c.amt) >= '$GivingFromAmount$' and sum(c.amt) <= '$GivingThruAmount$'"; + assertTrue(parser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); + TGroupBy groupBy = selectSqlStatement.getGroupByClause(); + TExpression having = groupBy.getHavingClause(); + having.setString(" "); + groupBy.getHAVING().setString(" "); + assertTrue(selectSqlStatement.toString().trim().equalsIgnoreCase("SELECT\n" + + "c.ID AS \"SMS.ID\"\n" + + "FROM\n" + + "SUMMIT.cntrb_detail c\n" + + "where\n" + + "c.cntrb_date >='$GivingFromDate$'\n" + + "and c.cntrb_date<='$GivingThruDate$'\n" + + "group by c.id")); + //System.out.println(selectSqlStatement.toString()); + } + + + + + public void testAlterTable(){ + TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); + lcparser.sqltext = "ALTER TABLE P_CAP \n" + + "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + + "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD);"; + assertTrue(lcparser.parse() == 0); + TAlterTableStatement at = (TAlterTableStatement) lcparser.sqlstatements.get(0); + TAlterTableOption alterTableOption = at.getAlterTableOptionList().getAlterTableOption(0); + TConstraint constraint = alterTableOption.getConstraintList().getConstraint(0); + assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); + TObjectName refColumn = constraint.getReferencedColumnList().getObjectName(0); + refColumn.setString(refColumn.toString()+",CEL_NEWID"); + //System.out.println(at.toString()); + assertTrue(at.toString().equalsIgnoreCase("ALTER TABLE P_CAP \n" + + "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + + "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD,CEL_NEWID);")); + } + + + + + public void testAlterTable2(){ + TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); + lcparser.sqltext = "ALTER TABLE P_CAP \n" + + "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + + "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD);"; + assertTrue(lcparser.parse() == 0); + TAlterTableStatement at = (TAlterTableStatement) lcparser.sqlstatements.get(0); + TAlterTableOption alterTableOption = at.getAlterTableOptionList().getAlterTableOption(0); + TConstraint constraint = alterTableOption.getConstraintList().getConstraint(0); + assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); + TObjectName refColumn = constraint.getReferencedColumnList().getObjectName(0); + + if(TParseTreeNode.doubleLinkedTokenListToString){ + TObjectName columnName0 = new TObjectName(); + columnName0.setString("CEL_NEWID"); + constraint.getReferencedColumnList().insertElementAt(columnName0,0); + }else{ + TDummy dummy = new TDummy(); + dummy.setGsqlparser(lcparser); + dummy.setString("CEL_NEWID,"); + dummy.addAllMyTokensToTokenList(refColumn.getStartToken().container,refColumn.getStartToken().posinlist ); + } + + // System.out.println(at.toString()); + assertTrue(at.toString().equalsIgnoreCase("ALTER TABLE P_CAP \n" + + "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + + "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_NEWID,CEL_COD);")); + } + + + + public void testAddWhere(){ + TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); + lcparser.sqltext = "SELECT * FROM TABLE_X"; + assertTrue(lcparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)lcparser.sqlstatements.get(0); + + if (TParseTreeNode.doubleLinkedTokenListToString){ + TWhereClause whereClause = new TWhereClause("f > 0"); + // whereClause.setText("where f > 0"); + select.setAnchorNode(select.joins); + select.setWhereClause(whereClause); + // System.out.println(select.toString()); + + }else{ + TSourceToken prevToken = select.joins.getEndToken(); + + TDummy dummy = new TDummy(); + dummy.setGsqlparser(lcparser); + dummy.setString(" where f > 0"); + dummy.addAllMyTokensToTokenList(prevToken.container,prevToken.posinlist + 1 ); + + for(int i=0;i 0")); + + + } + + + public void testRemoveParenthesis(){ + parser.sqltext = "select * from ((select * from some_table where some_column < ?)) some_view where a_column = something"; + assertTrue(parser.parse() == 0); + removeDuplicatedParenthesis(parser.sourcetokenlist); + assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("select * from ( select * from some_table where some_column < ? ) some_view where a_column = something")); + + parser.sqltext = "select * from ((select a from b) union (select a from d))"; + assertTrue(parser.parse() == 0); + removeDuplicatedParenthesis(parser.sourcetokenlist); + assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("select * from ((select a from b) union (select a from d))")); + + parser.sqltext = "((select a from b) order by a)"; + assertTrue(parser.parse() == 0); + removeDuplicatedParenthesis(parser.sourcetokenlist); + assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("((select a from b) order by a)")); + + parser.sqltext = "(((select a from b)) order by a)"; + assertTrue(parser.parse() == 0); + removeDuplicatedParenthesis(parser.sourcetokenlist); + assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("(( select a from b ) order by a)")); + + parser.sqltext = "((((select a from b)) order by a))"; + assertTrue(parser.parse() == 0); + removeDuplicatedParenthesis(parser.sourcetokenlist); + assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("( ( select a from b ) order by a )")); + + parser.sqltext = "select * from user_table where ((username like '%admin%'));"; + assertTrue(parser.parse() == 0); + removeDuplicatedParenthesis(parser.sourcetokenlist); + assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("select * from user_table where ( username like '%admin%' );")); + + } + + + + private int removeDuplicatedParenthesis(TSourceTokenList sourceTokenList){ + int cnt = 0; + TSourceToken st = null, prevEndToken = null; + boolean inParenthesis = false; + for(int i=0;i 1){ + TSourceToken beginSt = stmt.getStartToken(); + TSourceToken endSt = stmt.getEndToken(); + int i = parenthesisNum - 1; + while ((i>0)&&(beginSt!=null)&&(endSt != null)){ + beginSt.setString(" "); + beginSt = beginSt.nextSolidToken(); + endSt.setString(" "); + endSt = endSt.prevSolidToken(); + i--; + } + } + + } + for (int i=0;i 4\n" + - "\t) AS b\n" + - "\tGROUP BY b.dim_patient_bk\n" + - "\t\t\t,b.FALNR\n" + - "\t\t\t,b.stat_typ\n" + - ") AS src\n" + - "PIVOT\n" + - "(\n" + - "MAX(sum_days)\n" + - "FOR stat_typ IN ([IMC], [IPS], [Isolierstation], [Bettenstation])\n" + - ") AS bPivot"; - assertTrue(sqlparser.parse() == 0); - sqlparser.getSqlstatements().get(0).acceptChildren(new nodeVisitor()); - } -} - -class nodeVisitor extends TParseTreeVisitor { - - public void preVisit(TPivotClause node) { - System.out.print( - "name:" + node.getPivotTable().getTableName().toString() - + ", \tsource table:" + node.getPivotTable().getSourceTableOfPivot().getTableName().toString() - ); - - if (node.getType() == TPivotClause.pivot){ - System.out.println("\n\nColumns in pivot table:"); - }else{ - System.out.println("\n\nColumns in unpivot table:"); - } - - for(TObjectName objectName:node.getPivotTable().getLinkedColumns()){ - System.out.println(objectName.toString()); - if (objectName.getSourceColumn() != null){ - System.out.println("\tSource column:"+objectName.getSourceColumn().toString()); - } - } - - System.out.println("\nColumns in pivot source table:"); - for(TObjectName objectName:node.getPivotTable().getSourceTableOfPivot().getLinkedColumns()){ - System.out.println(objectName.toString()); - } - - if (node.getAliasClause() != null){ - if (node.getAliasClause().getAliasName() != null){ - System.out.println("pivot alias:\t"+node.getAliasClause().getAliasName().toString()); - } - if (node.getAliasClause().getColumns() != null){ - System.out.println("\tcolumns:\t"); - for(TObjectName objectName:node.getAliasClause().getColumns()){ - System.out.println("\t\t"+objectName.toString()); - } - } - } - - } -} +package gudusoft.gsqlparser.commonTest; + + +import gudusoft.gsqlparser.nodes.TObjectName; +import gudusoft.gsqlparser.nodes.TParseTreeVisitor; +import gudusoft.gsqlparser.nodes.TPivotClause; +import junit.framework.TestCase; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; + +public class testPivotClause extends TestCase { + + public void test1(){ + //String sqlfile = "c:/prg/tmp/demo.sql"; + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + //sqlparser.sqlfilename = sqlfile; + sqlparser.sqltext = "SELECT dim_patient_bk\n" + + "\t\t,FALNR\n" + + "\t\t,tage_imc\t\t\t\t= [IMC]\n" + + "\t\t,tage_ips\t\t\t\t= [IPS]\n" + + "\t\t,tage_isolierstation\t= [Isolierstation]\n" + + "\t\t,tage_bettenstation\t\t= [Bettenstation]\n" + + "FROM (\n" + + "\tSELECT dim_patient_bk\n" + + "\t\t\t,FALNR\n" + + "\t\t\t,stat_typ\n" + + "\t\t\t,sum_days = SUM(day_diff)\n" + + "\tFROM (\n" + + "\t\tSELECT\tdim_patient_bk\n" + + "\t\t\t\t,FALNR\n" + + "\t\t\t\t,day_diff = DATEDIFF(DAY, BWIDT\n" + + "\t\t\t\t\t, CASE BEWTY WHEN 2 THEN BWIDT ELSE ISNULL(LEAD(BWIDT)\n" + + "\t\t\t\t\t\t\tOVER (PARTITION BY dim_patient_bk, FALNR ORDER BY BWIDT),CAST(GETDATE() AS DATE)) END)\n" + + "\t\t\t\t,stat_typ = stellplatz_typ\n" + + "\t\tFROM\tatl.covid_patient_bewegung\n" + + "\t\tWHERE BEWTY <> 4\n" + + "\t) AS b\n" + + "\tGROUP BY b.dim_patient_bk\n" + + "\t\t\t,b.FALNR\n" + + "\t\t\t,b.stat_typ\n" + + ") AS src\n" + + "PIVOT\n" + + "(\n" + + "MAX(sum_days)\n" + + "FOR stat_typ IN ([IMC], [IPS], [Isolierstation], [Bettenstation])\n" + + ") AS bPivot"; + assertTrue(sqlparser.parse() == 0); + sqlparser.getSqlstatements().get(0).acceptChildren(new nodeVisitor()); + } +} + +class nodeVisitor extends TParseTreeVisitor { + + public void preVisit(TPivotClause node) { + System.out.print( + "name:" + node.getPivotTable().getTableName().toString() + + ", \tsource table:" + node.getPivotTable().getSourceTableOfPivot().getTableName().toString() + ); + + if (node.getType() == TPivotClause.pivot){ + System.out.println("\n\nColumns in pivot table:"); + }else{ + System.out.println("\n\nColumns in unpivot table:"); + } + + for(TObjectName objectName:node.getPivotTable().getLinkedColumns()){ + System.out.println(objectName.toString()); + if (objectName.getSourceColumn() != null){ + System.out.println("\tSource column:"+objectName.getSourceColumn().toString()); + } + } + + System.out.println("\nColumns in pivot source table:"); + for(TObjectName objectName:node.getPivotTable().getSourceTableOfPivot().getLinkedColumns()){ + System.out.println(objectName.toString()); + } + + if (node.getAliasClause() != null){ + if (node.getAliasClause().getAliasName() != null){ + System.out.println("pivot alias:\t"+node.getAliasClause().getAliasName().toString()); + } + if (node.getAliasClause().getColumns() != null){ + System.out.println("\tcolumns:\t"); + for(TObjectName objectName:node.getAliasClause().getColumns()){ + System.out.println("\t\t"+objectName.toString()); + } + } + } + + } +} diff --git a/src/test/java/common/testQualifiedVariable.java b/src/test/java/gudusoft/gsqlparser/commonTest/testQualifiedVariable.java similarity index 96% rename from src/test/java/common/testQualifiedVariable.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testQualifiedVariable.java index a5a11819..9643cb14 100644 --- a/src/test/java/common/testQualifiedVariable.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testQualifiedVariable.java @@ -1,62 +1,62 @@ -package common; - -import gudusoft.gsqlparser.stmt.TVarDeclStmt; -import gudusoft.gsqlparser.stmt.TCommonBlock; -import junit.framework.TestCase; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.nodes.TObjectName; - -/* -* Date: 2010-5-27 -* Time: 17:30:20 -*/ -public class testQualifiedVariable extends TestCase { - private String sqlfile = null; - private TGSqlParser parser = null; - - protected void setUp() throws Exception { - super.setUp(); - parser = new TGSqlParser(EDbVendor.dbvoracle); - } - - protected void tearDown() throws Exception { - parser = null; - super.tearDown(); - } - - String variablesInBlock(TCommonBlock pblock){ - String ret=""; - TVarDeclStmt stmt = null; - TObjectName var = null; - for(int i=0;i stmtList = sqlparser.sqlstatements.iterator(); - - while (stmtList.hasNext()) { - TCustomSqlStatement topLevelStmt = stmtList.next(); - // TSourceToken token = sqlparser.sqlstatements.next(); - //System.out.println(topLevelStmt); - } - - for(TCustomSqlStatement stmt: sqlparser.sqlstatements){ - // System.out.println(stmt); - } - } - -} +package gudusoft.gsqlparser.commonTest; + +import gudusoft.gsqlparser.*; +import junit.framework.TestCase; + +import java.util.Iterator; + +public class testStatementList extends TestCase { + + public void test0(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "SELECT * FROM tab WHERE NOT EXISTS (SELECT 'x' FROM tab2);select a from t;select b from t2"; + assertTrue(sqlparser.parse() == 0); + Iterator stmtList = sqlparser.sqlstatements.iterator(); + + while (stmtList.hasNext()) { + TCustomSqlStatement topLevelStmt = stmtList.next(); + // TSourceToken token = sqlparser.sqlstatements.next(); + //System.out.println(topLevelStmt); + } + + for(TCustomSqlStatement stmt: sqlparser.sqlstatements){ + // System.out.println(stmt); + } + } + +} diff --git a/src/test/java/common/testStmtDelimiter.java b/src/test/java/gudusoft/gsqlparser/commonTest/testStmtDelimiter.java similarity index 99% rename from src/test/java/common/testStmtDelimiter.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testStmtDelimiter.java index 251d6fe0..7e0e9086 100644 --- a/src/test/java/common/testStmtDelimiter.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testStmtDelimiter.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/common/testSubquery.java b/src/test/java/gudusoft/gsqlparser/commonTest/testSubquery.java similarity index 96% rename from src/test/java/common/testSubquery.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testSubquery.java index 7d43be92..415b063c 100644 --- a/src/test/java/common/testSubquery.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testSubquery.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; /* * Date: 12-5-23 */ diff --git a/src/test/java/common/testSyntaxError.java b/src/test/java/gudusoft/gsqlparser/commonTest/testSyntaxError.java similarity index 97% rename from src/test/java/common/testSyntaxError.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testSyntaxError.java index 942556b7..37af93d9 100644 --- a/src/test/java/common/testSyntaxError.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testSyntaxError.java @@ -1,83 +1,83 @@ -package common; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TMergeSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSyntaxError extends TestCase { - - public void testSnowflakePivot(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE VIEW ATLAN_SAMPLE_DATA.OTT_PLATFORMS.NETFLIX_CUSTOMER_PAYMENTS_BY_TYPE \n" + - "AS SELECT NC.*, NCP.CREDIT_CARD, NCP.DEBIT_CARD, NCP.VOUCHER \n" + - "FROM ATLAN_SAMPLE_DATA.OTT_PLATFORMS.NETFLIX_CUSTOMER_MASTER AS NC \n" + - "JOIN ( SELECT * \n" + - "\t\tFROM ATLAN_SAMPLE_DATA.OTT_PLATFORMS.NETFLIX_CUSTOMER_PAYMENTS_MASTER PIVOT(sum(PAYMENT_VALUE) FOR PAYMENT_TYPE IN ('credit_card', 'debit_card', 'voucher')) AS P (CUSTOMER_ID, CREDIT_CARD, DEBIT_CARD, VOUCHER) ) AS NCP \n" + - "\t\t\t\tON NC.CUSTOMER_ID = NCP.CUSTOMER_ID;"; - assertTrue(sqlparser.parse() == 0); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createViewSqlStatement.getSyntaxHints().size() == 0); - } - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - sqlparser.sqltext = "MERGE dataset.DetailedInventory T\n" + - "USING dataset.Inventory S\n" + - "ON T.product = S.product\n" + - "WHEN NOT MATCHED AND quantity < 20 THEN\n" + - " INSERT(product, quantity, supply_constrained, comments)\n" + - " VALUES(product, quantity, true, ARRAY>[(DATE('2016-01-01'), 'comment1')])\n" + - "WHEN NOT MATCHED THEN\n" + - " INSERT(product, quantity, supply_constrained)\n" + - " VALUES(product, quantity, false)\n" + - ";"; - // System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TMergeSqlStatement mergeSqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(mergeSqlStatement.getErrorCount() == 0); - assertTrue(mergeSqlStatement.getSyntaxErrors().size() == 0); - assertTrue(mergeSqlStatement.getSyntaxHints().size() == 1); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = " SELECT\n" + - " c.[CustomerKey], \n" + - " x.[Region], \n" + - " x.[Age], \n" + - " CASE x.[Bikes] \n" + - " WHEN 0 THEN 0 \n" + - " ELSE 1 \n" + - " END AS [BikeBuyer]\n" + - " FROM\n" + - " [dbo].[DimCustomer] c INNER JOIN (\n" + - " SELECT\n" + - " [CustomerKey]\n" + - " ,[Region]\n" + - " ,[Age]\n" + - " ,Sum(\n" + - " CASE [EnglishProductCategoryName] \n" + - " WHEN 'Bikes' THEN 1 \n" + - " ELSE 0 \n" + - " END) AS [Bikes]\n" + - " FROM\n" + - " [dbo].[vDMPrep] \n" + - " GROUP BY\n" + - " [CustomerKey]\n" + - " ,[Region]\n" + - " ,[Age]\n" + - " ) AS [x]\n" + - " ON c.[CustomerKey] = x.[CustomerKey]" - ; - - // System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement SqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(SqlStatement.getErrorCount() == 0); - assertTrue(SqlStatement.getSyntaxErrors().size() == 0); - assertTrue(SqlStatement.getSyntaxHints().size() == 0); - } -} +package gudusoft.gsqlparser.commonTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; +import gudusoft.gsqlparser.stmt.TMergeSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testSyntaxError extends TestCase { + + public void testSnowflakePivot(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE OR REPLACE VIEW ATLAN_SAMPLE_DATA.OTT_PLATFORMS.NETFLIX_CUSTOMER_PAYMENTS_BY_TYPE \n" + + "AS SELECT NC.*, NCP.CREDIT_CARD, NCP.DEBIT_CARD, NCP.VOUCHER \n" + + "FROM ATLAN_SAMPLE_DATA.OTT_PLATFORMS.NETFLIX_CUSTOMER_MASTER AS NC \n" + + "JOIN ( SELECT * \n" + + "\t\tFROM ATLAN_SAMPLE_DATA.OTT_PLATFORMS.NETFLIX_CUSTOMER_PAYMENTS_MASTER PIVOT(sum(PAYMENT_VALUE) FOR PAYMENT_TYPE IN ('credit_card', 'debit_card', 'voucher')) AS P (CUSTOMER_ID, CREDIT_CARD, DEBIT_CARD, VOUCHER) ) AS NCP \n" + + "\t\t\t\tON NC.CUSTOMER_ID = NCP.CUSTOMER_ID;"; + assertTrue(sqlparser.parse() == 0); + TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createViewSqlStatement.getSyntaxHints().size() == 0); + } + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); + sqlparser.sqltext = "MERGE dataset.DetailedInventory T\n" + + "USING dataset.Inventory S\n" + + "ON T.product = S.product\n" + + "WHEN NOT MATCHED AND quantity < 20 THEN\n" + + " INSERT(product, quantity, supply_constrained, comments)\n" + + " VALUES(product, quantity, true, ARRAY>[(DATE('2016-01-01'), 'comment1')])\n" + + "WHEN NOT MATCHED THEN\n" + + " INSERT(product, quantity, supply_constrained)\n" + + " VALUES(product, quantity, false)\n" + + ";"; + // System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + TMergeSqlStatement mergeSqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(mergeSqlStatement.getErrorCount() == 0); + assertTrue(mergeSqlStatement.getSyntaxErrors().size() == 0); + assertTrue(mergeSqlStatement.getSyntaxHints().size() == 1); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = " SELECT\n" + + " c.[CustomerKey], \n" + + " x.[Region], \n" + + " x.[Age], \n" + + " CASE x.[Bikes] \n" + + " WHEN 0 THEN 0 \n" + + " ELSE 1 \n" + + " END AS [BikeBuyer]\n" + + " FROM\n" + + " [dbo].[DimCustomer] c INNER JOIN (\n" + + " SELECT\n" + + " [CustomerKey]\n" + + " ,[Region]\n" + + " ,[Age]\n" + + " ,Sum(\n" + + " CASE [EnglishProductCategoryName] \n" + + " WHEN 'Bikes' THEN 1 \n" + + " ELSE 0 \n" + + " END) AS [Bikes]\n" + + " FROM\n" + + " [dbo].[vDMPrep] \n" + + " GROUP BY\n" + + " [CustomerKey]\n" + + " ,[Region]\n" + + " ,[Age]\n" + + " ) AS [x]\n" + + " ON c.[CustomerKey] = x.[CustomerKey]" + ; + + // System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement SqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(SqlStatement.getErrorCount() == 0); + assertTrue(SqlStatement.getSyntaxErrors().size() == 0); + assertTrue(SqlStatement.getSyntaxHints().size() == 0); + } +} diff --git a/src/test/java/common/testTCreateSynonymStmt.java b/src/test/java/gudusoft/gsqlparser/commonTest/testTCreateSynonymStmt.java similarity index 95% rename from src/test/java/common/testTCreateSynonymStmt.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testTCreateSynonymStmt.java index 2d519f59..05acb0f8 100644 --- a/src/test/java/common/testTCreateSynonymStmt.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testTCreateSynonymStmt.java @@ -1,4 +1,4 @@ -package common; +package gudusoft.gsqlparser.commonTest; /* * Date: 2010-12-31 * Time: 14:18:14 diff --git a/src/test/java/common/testTCreateTableSqlStatement.java b/src/test/java/gudusoft/gsqlparser/commonTest/testTCreateTableSqlStatement.java similarity index 97% rename from src/test/java/common/testTCreateTableSqlStatement.java rename to src/test/java/gudusoft/gsqlparser/commonTest/testTCreateTableSqlStatement.java index feb43fac..0702527c 100644 --- a/src/test/java/common/testTCreateTableSqlStatement.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testTCreateTableSqlStatement.java @@ -1,91 +1,91 @@ -package common; -/* - * Date: 2010-11-11 - * Time: 14:20:43 - */ - -import junit.framework.TestCase; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.nodes.TColumnDefinitionList; -import gudusoft.gsqlparser.nodes.TConstraintList; - -public class testTCreateTableSqlStatement extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "create table new_employees\n" + - "(employee_id number not null,\n" + - " first_name char2(15) null,\n" + - " first_name2 char2(15) primary key,\n" + - "last_name char2(15) unique,\n" + - "last_name2 char2(15) check(last_name>10),\n" + - "hire_date date default 5,\n" + - "start_date timestamp(7) references scott.dept(start_date),\n" + - "end_date timestamp(7) references dept.end_date on delete cascade,\n" + - "end_date2 timestamp(7) references dept.end_date on update set null,\n" + - "check (start_date>end_date),\n" + - "constraint abc unique(a,b),\n" + - "primary key(a),\n" + - "foreign key(a,b) references dept(c,d) on delete set null\n" + - ")"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - - TColumnDefinitionList columns = createTable.getColumnList(); - assertTrue(columns.size() == 9); - for(int i=0;i10),\n" + + "hire_date date default 5,\n" + + "start_date timestamp(7) references scott.dept(start_date),\n" + + "end_date timestamp(7) references dept.end_date on delete cascade,\n" + + "end_date2 timestamp(7) references dept.end_date on update set null,\n" + + "check (start_date>end_date),\n" + + "constraint abc unique(a,b),\n" + + "primary key(a),\n" + + "foreign key(a,b) references dept(c,d) on delete set null\n" + + ")"; + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + + TColumnDefinitionList columns = createTable.getColumnList(); + assertTrue(columns.size() == 9); + for(int i=0;i files = new ArrayList( ); - files.add( file ); - Analyze_SP analyze = new Analyze_SP( files, "|" ); - analyze.setCheckDBObjectRelation( true ); - analyze.analyzeSQL( ); - - String result = "[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpKoliKabulCheck|Table|Create|Barkod,IrsaliyeNo,GonderenDepo,AlanDepo,OkutmaTarihi,OkutanKullanici\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpKoliKabulCheck|Table|Insert|\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpKoliKabulCheck|Table|Update|Barkod\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpCurs|Table|Insert|\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|tb_TemaMobileCommandTransaction|Table|Read|TranData,TemaMobileTransactionTipTanimRef,IsDeleted\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpKoliKabulCheck|Table|Read|Barkod\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpCurs|Table|Read|ToplamaId,ToplamaKoliId,UrunBarkod\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpTable|Table|Create|OutputValue\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpTable|Table|Insert|OutputValue\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpTable|Table|Read|OutputValue\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpTable|Table|Drop|\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpCurs|Table|Update|KaydiMiktar\r\n" - +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpCurs|Table|Read|*"; -// System.out.println( analyze.getDBObjectRelationsAnalysisResult( ) ); -// System.out.println("---------"); -// System.out.println( result); - - assertTrue( analyze.getDBObjectRelationsAnalysisResult( ) - .trim( ) - .equalsIgnoreCase( result ) ); - } - - public void testSample6( ) - { - File file = new File( basedir + "/sample6.sql" ); - List files = new ArrayList( ); - files.add( file ); - Analyze_SP analyze = new Analyze_SP( files, "|" ); - analyze.setCheckDBObjectRelation( true ); - analyze.analyzeSQL( ); - //System.out.println( analyze.getDBObjectRelationsAnalysisResult( ) ); - String result = "[Retail]|[Sync].[Write_tb_AltDepoIsEmri]|SP|tb_AltDepoIsEmri|Table|Insert|AltDepoIsEmriRef,AnaDepo,FromAltDepo,ToAltDepo,UrunID,Miktar,KalanMiktar,Tarih,AcilisNedenRef,IptalNedenRef,Durum\r\n" - +"[Retail]|[Sync].[Write_tb_AltDepoIsEmri]|SP|tb_AltDepoIsEmri|Table|Update|FromAltDepo,ToAltDepo,UrunID,Miktar,KalanMiktar,Tarih,AcilisNedenRef,IptalNedenRef,Durum\r\n" - +"[Retail]|[Sync].[Write_tb_AltDepoIsEmri]|SP|tb_AltDepoIsEmri|Table|Update|FromAltDepo,ToAltDepo,UrunID,Miktar,KalanMiktar,Tarih,AcilisNedenRef,IptalNedenRef,Durum\r\n" - +"[Retail]|[Sync].[Write_tb_AltDepoIsEmri]|SP|tb_AltDepoIsEmri|Table|Delete|"; - //System.out.println(result); - assertTrue( analyze.getDBObjectRelationsAnalysisResult( ) - .trim( ) - .equalsIgnoreCase( result ) ); - } - - public void testSample7( ) - { - File file = new File( basedir + "/sample7.sql" ); - List files = new ArrayList( ); - files.add( file ); - Analyze_SP analyze = new Analyze_SP( files, "|" ); - analyze.setCheckDBObjectRelation( true ); - analyze.analyzeSQL( ); - //System.out.println( analyze.getDBObjectRelationsAnalysisResult( ) ); - String result = ""; - assertTrue( analyze.getDBObjectRelationsAnalysisResult( ) - .trim( ) - .equalsIgnoreCase( result ) ); - } - - public void testSample8( ) - { - File file = new File( basedir + "/sample8.sql" ); - List files = new ArrayList( ); - files.add( file ); - Analyze_SP analyze = new Analyze_SP( files, "|" ); - analyze.setCheckDBObjectRelation( true ); - analyze.analyzeSQL( ); - - String result = "[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_KargoKoliBaslik|Table|Read|TemaTakipNo,SevkID,Depo,ToplamaID,KoliID\r\n" - +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|#tmpIrsaliye|Table|Drop|\r\n" - +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_KargoKoliBaslik|Table|Read|Depo,SevkID,TemaTakipNo\r\n" - +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_DepoSevkBaslik|Table|Read|FromDepo,SevkID,ToDepo\r\n" - +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_KargoKoliDetay|Table|Read|TemaTakipNo,UrunID,Miktar\r\n" - +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_UrunRecete|Table|Read|UrunID1,UrunID2,Miktar\r\n" - +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|#tmpIrsaliye|Table|Insert|\r\n" - +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|#tmpIrsaliye|Table|Update|UrunID2,ReceteMiktar\r\n" - +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|#tmpIrsaliye|Table|Read|UrunID2,AsortiMiktar,ReceteMiktar,TemaTakipNo\r\n" - +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_Urun|Table|Read|UrunID,Barkod"; - -// System.out.println( analyze.getDBObjectRelationsAnalysisResult( ) ); -// System.out.println("---------"); -// System.out.println( result); - - assertTrue( analyze.getDBObjectRelationsAnalysisResult( ) - .trim( ) - .equalsIgnoreCase( result ) ); - } - -} + +package gudusoft.gsqlparser.demosTest; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import junit.framework.TestCase; +import demos.analyzesp.Analyze_SP; + +public class analyzespTest extends TestCase +{ + + private String basedir; + + protected void setUp( ) + { + basedir = gspCommon.BASE_SQL_DIR+"private/sqlscripts/analyze_sp"; + } + + public void testSample1( ) + { + File file = new File( basedir + "/sample1.sql" ); + List files = new ArrayList( ); + files.add( file ); + Analyze_SP analyze = new Analyze_SP( files, "|" ); + analyze.setCheckDBObjectRelation( true ); + analyze.analyzeSQL( ); + + String result = "[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpKoliKabulCheck|Table|Create|Barkod,IrsaliyeNo,GonderenDepo,AlanDepo,OkutmaTarihi,OkutanKullanici\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpKoliKabulCheck|Table|Insert|\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpKoliKabulCheck|Table|Update|Barkod\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpCurs|Table|Insert|\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|tb_TemaMobileCommandTransaction|Table|Read|TranData,TemaMobileTransactionTipTanimRef,IsDeleted\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpKoliKabulCheck|Table|Read|Barkod\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpCurs|Table|Read|ToplamaId,ToplamaKoliId,UrunBarkod\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpTable|Table|Create|OutputValue\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpTable|Table|Insert|OutputValue\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpTable|Table|Read|OutputValue\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpTable|Table|Drop|\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpCurs|Table|Update|KaydiMiktar\r\n" + +"[Retail]|[dbo].[usp_CreateUrunIcerikForKoliKabul]|SP|#tmpCurs|Table|Read|*"; +// System.out.println( analyze.getDBObjectRelationsAnalysisResult( ) ); +// System.out.println("---------"); +// System.out.println( result); + + assertTrue( analyze.getDBObjectRelationsAnalysisResult( ) + .trim( ) + .equalsIgnoreCase( result ) ); + } + + public void testSample6( ) + { + File file = new File( basedir + "/sample6.sql" ); + List files = new ArrayList( ); + files.add( file ); + Analyze_SP analyze = new Analyze_SP( files, "|" ); + analyze.setCheckDBObjectRelation( true ); + analyze.analyzeSQL( ); + //System.out.println( analyze.getDBObjectRelationsAnalysisResult( ) ); + String result = "[Retail]|[Sync].[Write_tb_AltDepoIsEmri]|SP|tb_AltDepoIsEmri|Table|Insert|AltDepoIsEmriRef,AnaDepo,FromAltDepo,ToAltDepo,UrunID,Miktar,KalanMiktar,Tarih,AcilisNedenRef,IptalNedenRef,Durum\r\n" + +"[Retail]|[Sync].[Write_tb_AltDepoIsEmri]|SP|tb_AltDepoIsEmri|Table|Update|FromAltDepo,ToAltDepo,UrunID,Miktar,KalanMiktar,Tarih,AcilisNedenRef,IptalNedenRef,Durum\r\n" + +"[Retail]|[Sync].[Write_tb_AltDepoIsEmri]|SP|tb_AltDepoIsEmri|Table|Update|FromAltDepo,ToAltDepo,UrunID,Miktar,KalanMiktar,Tarih,AcilisNedenRef,IptalNedenRef,Durum\r\n" + +"[Retail]|[Sync].[Write_tb_AltDepoIsEmri]|SP|tb_AltDepoIsEmri|Table|Delete|"; + //System.out.println(result); + assertTrue( analyze.getDBObjectRelationsAnalysisResult( ) + .trim( ) + .equalsIgnoreCase( result ) ); + } + + public void testSample7( ) + { + File file = new File( basedir + "/sample7.sql" ); + List files = new ArrayList( ); + files.add( file ); + Analyze_SP analyze = new Analyze_SP( files, "|" ); + analyze.setCheckDBObjectRelation( true ); + analyze.analyzeSQL( ); + //System.out.println( analyze.getDBObjectRelationsAnalysisResult( ) ); + String result = ""; + assertTrue( analyze.getDBObjectRelationsAnalysisResult( ) + .trim( ) + .equalsIgnoreCase( result ) ); + } + + public void testSample8( ) + { + File file = new File( basedir + "/sample8.sql" ); + List files = new ArrayList( ); + files.add( file ); + Analyze_SP analyze = new Analyze_SP( files, "|" ); + analyze.setCheckDBObjectRelation( true ); + analyze.analyzeSQL( ); + + String result = "[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_KargoKoliBaslik|Table|Read|TemaTakipNo,SevkID,Depo,ToplamaID,KoliID\r\n" + +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|#tmpIrsaliye|Table|Drop|\r\n" + +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_KargoKoliBaslik|Table|Read|Depo,SevkID,TemaTakipNo\r\n" + +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_DepoSevkBaslik|Table|Read|FromDepo,SevkID,ToDepo\r\n" + +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_KargoKoliDetay|Table|Read|TemaTakipNo,UrunID,Miktar\r\n" + +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_UrunRecete|Table|Read|UrunID1,UrunID2,Miktar\r\n" + +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|#tmpIrsaliye|Table|Insert|\r\n" + +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|#tmpIrsaliye|Table|Update|UrunID2,ReceteMiktar\r\n" + +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|#tmpIrsaliye|Table|Read|UrunID2,AsortiMiktar,ReceteMiktar,TemaTakipNo\r\n" + +"[Retail]|[dbo].[usp_GetKoliInfoByBarkod]|SP|tb_Urun|Table|Read|UrunID,Barkod"; + +// System.out.println( analyze.getDBObjectRelationsAnalysisResult( ) ); +// System.out.println("---------"); +// System.out.println( result); + + assertTrue( analyze.getDBObjectRelationsAnalysisResult( ) + .trim( ) + .equalsIgnoreCase( result ) ); + } + +} diff --git a/src/test/java/demos/removeCondition/testRemoveCondition.java b/src/test/java/gudusoft/gsqlparser/demosTest/removeCondition/testRemoveCondition.java similarity index 96% rename from src/test/java/demos/removeCondition/testRemoveCondition.java rename to src/test/java/gudusoft/gsqlparser/demosTest/removeCondition/testRemoveCondition.java index 75221f88..9dd4e0b0 100644 --- a/src/test/java/demos/removeCondition/testRemoveCondition.java +++ b/src/test/java/gudusoft/gsqlparser/demosTest/removeCondition/testRemoveCondition.java @@ -1,214 +1,215 @@ - -package demos.removeCondition; - -import gudusoft.gsqlparser.EDbVendor; - -import java.io.BufferedInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; -import java.util.regex.Pattern; - -import junit.framework.Assert; -import junit.framework.TestCase; -import common.*; -import demos.removeCondition.removeCondition; - -public class testRemoveCondition extends TestCase -{ - - private String testFilesDirectory; - private String testFileSuffix = ".sql"; - private boolean containsSubFolder = false; - private Map conditionMap = new HashMap( ); - - public void setUp( ) - { - testFilesDirectory = "Test\\TestCases\\removeCondition"; - // containsSubFolder = false; - // testFileSuffix = ".sql"; - conditionMap.put( "Prof4", "Prof4" ); - conditionMap.put( "Prof3", "Prof3" ); - conditionMap.put( "Radius_Origin_ZIP", "Radius_Origin_ZIP" ); - conditionMap.put( "Radius_Distance_in_Miles", - "Radius_Distance_in_Miles" ); - conditionMap.put( "RadiusOriginZIP", "RadiusOriginZIP" ); - conditionMap.put( "RadiusDistanceinMiles", "RadiusDistanceinMiles" ); - conditionMap.put( "GivingFromDate", "2011-01-01" ); - conditionMap.put( "GivingThruDate", "2013-01-01" ); - conditionMap.put( "end_date", "2000-10-10" ); - } - - public static void testRemoveSpecialConditions( ) - { - String sql = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.id = summit.mstr.id\r\n" - + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" - + "AND d.fund_coll_attrb IN ( '$Institute$' )\r\n" - + "AND d.fund_acct IN ( '$Fund$' )\r\n" - + "AND d.cntrb_date >= '$From_Date$'\r\n" - + "AND d.cntrb_date <= '$Thru_Date$'\r\n" - + "GROUP BY d.id;"; - String result = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.id = summit.mstr.id\r\n" - + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" - + "AND d.fund_coll_attrb IN ( 'ShanXi University' )\r\n" - + "GROUP BY d.id;"; - Map conditionMap = new HashMap( ); - conditionMap.put( "Institute", "ShanXi University" ); - removeCondition remove = new removeCondition( sql, - EDbVendor.dbvmssql, - conditionMap ); - Assert.assertEquals( remove.getRemoveResult( ), result ); - } - - public static void testIssue239( ) - { - String sql = "SELECT SUM (d.amt) \r\n " - + "FROM summit.cntrb_detail d \r\n " - + "WHERE d.id = summit.mstr.id \r\n " - + " AND (d.cntrb_date || d.cntrb_time) >= ('$From_Date$' || '$From_Time$')\r\n " - + " AND (d.cntrb_date || d.cntrb_time) <= ('$Thru_Date$' || '$Thru_Date$')\r\n " - + "GROUP BY d.id "; - String result = "SELECT SUM (d.amt) \r\n" - + " FROM summit.cntrb_detail d \r\n" - + " WHERE d.id = summit.mstr.id \r\n" - + " AND (d.cntrb_date || d.cntrb_time) >= ('20130731')\r\n" - + " GROUP BY d.id"; - Map conditionMap = new HashMap( ); - conditionMap.put( "From_Date", "20130731" ); - removeCondition remove = new removeCondition( sql, - EDbVendor.dbvoracle, - conditionMap ); - Assert.assertEquals( remove.getRemoveResult( ), result ); - } - - public static void testRemoveNonConditions( ) - { - String sql = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.id = summit.mstr.id\r\n" - + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" - + "AND d.fund_coll_attrb IN ( '$Institute$' )\r\n" - + "AND d.fund_acct IN ( '$Fund$' )\r\n" - + "AND d.cntrb_date >= '$From_Date$'\r\n" - + "AND d.cntrb_date <= '$Thru_Date$'\r\n" - + "GROUP BY d.id;"; - String result = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.id = summit.mstr.id\r\n" - + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" - + "AND d.fund_coll_attrb IN ( 'ShanXi University' )\r\n" - + "AND d.fund_acct IN ( 'Eclipse' )\r\n" - + "AND d.cntrb_date >= '2012-01-01'\r\n" - + "AND d.cntrb_date <= '2013-01-01'\r\n" - + "GROUP BY d.id;"; - Map conditionMap = new HashMap( ); - conditionMap.put( "Institute", "ShanXi University" ); - conditionMap.put( "Fund", "Eclipse" ); - conditionMap.put( "From_Date", "2012-01-01" ); - conditionMap.put( "Thru_Date", "2013-01-01" ); - removeCondition remove = new removeCondition( sql, - EDbVendor.dbvmssql, - conditionMap ); - Assert.assertEquals( remove.getRemoveResult( ), result ); - } - - public static void testRemoveAllConditions( ) - { - String sql = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.fund_coll_attrb IN ( '$Institute$' )\r\n" - + "AND d.fund_acct IN ( '$Fund$' )\r\n" - + "AND d.cntrb_date >= '$From_Date$'\r\n" - + "AND d.cntrb_date <= '$Thru_Date$'\r\n" - + "GROUP BY d.id;"; - String result = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "GROUP BY d.id;"; - removeCondition remove = new removeCondition( sql, - EDbVendor.dbvmssql, - null ); - System.out.println(remove.getRemoveResult( )); - //Assert.assertEquals( remove.getRemoveResult( ), result ); - } - - public void testSQLFromFile( ) - { - SqlFileList fileList = new SqlFileList( testFilesDirectory, - containsSubFolder, - testFileSuffix ); - if ( fileList.sqlfiles != null ) - { - for ( int i = 0; i < fileList.sqlfiles.size( ); i++ ) - { - String filePath = fileList.sqlfiles.get( i ); - String xmlFilePath = filePath.replaceAll( "(?i)" - + Pattern.quote( testFileSuffix ), - ".txt" ); - File xmlFile = new File( xmlFilePath ); - File sqlFile = new File( filePath ); - if ( xmlFile.exists( ) && sqlFile.exists( ) ) - { - removeCondition remove = new removeCondition( sqlFile, - EDbVendor.dbvoracle, - conditionMap ); - System.out.println( remove.getRemoveResult( ) ); - try - { - new FileOutputStream( new File( "C:\\1.txt" ) ).write( remove.getRemoveResult( ) - .getBytes( ) ); - } - catch ( FileNotFoundException e ) - { - // TODO Auto-generated catch block - e.printStackTrace( ); - } - catch ( IOException e ) - { - // TODO Auto-generated catch block - e.printStackTrace( ); - } - Assert.assertTrue( remove.getRemoveResult( ) - .trim( ) - .equalsIgnoreCase( getContent( xmlFile ) ) ); - } - } - } - } - - private String getContent( File file ) - { - try - { - ByteArrayOutputStream out = new ByteArrayOutputStream( 4096 ); - byte[] tmp = new byte[4096]; - InputStream is = new BufferedInputStream( new FileInputStream( file ) ); - while ( true ) - { - int r = is.read( tmp ); - if ( r == -1 ) - break; - out.write( tmp, 0, r ); - } - byte[] bytes = out.toByteArray( ); - is.close( ); - out.close( ); - String content = new String( bytes ); - return content.trim( ); - } - catch ( IOException e ) - { - e.printStackTrace( ); - } - return null; - } -} + +package gudusoft.gsqlparser.demosTest.removeCondition; + +import demos.removeCondition.removeCondition; +import gudusoft.gsqlparser.EDbVendor; + +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Pattern; + +import gudusoft.gsqlparser.commonTest.SqlFileList; +import junit.framework.Assert; +import junit.framework.TestCase; + + +public class testRemoveCondition extends TestCase +{ + + private String testFilesDirectory; + private String testFileSuffix = ".sql"; + private boolean containsSubFolder = false; + private Map conditionMap = new HashMap( ); + + public void setUp( ) + { + testFilesDirectory = "Test\\TestCases\\removeCondition"; + // containsSubFolder = false; + // testFileSuffix = ".sql"; + conditionMap.put( "Prof4", "Prof4" ); + conditionMap.put( "Prof3", "Prof3" ); + conditionMap.put( "Radius_Origin_ZIP", "Radius_Origin_ZIP" ); + conditionMap.put( "Radius_Distance_in_Miles", + "Radius_Distance_in_Miles" ); + conditionMap.put( "RadiusOriginZIP", "RadiusOriginZIP" ); + conditionMap.put( "RadiusDistanceinMiles", "RadiusDistanceinMiles" ); + conditionMap.put( "GivingFromDate", "2011-01-01" ); + conditionMap.put( "GivingThruDate", "2013-01-01" ); + conditionMap.put( "end_date", "2000-10-10" ); + } + + public static void testRemoveSpecialConditions( ) + { + String sql = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.id = summit.mstr.id\r\n" + + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" + + "AND d.fund_coll_attrb IN ( '$Institute$' )\r\n" + + "AND d.fund_acct IN ( '$Fund$' )\r\n" + + "AND d.cntrb_date >= '$From_Date$'\r\n" + + "AND d.cntrb_date <= '$Thru_Date$'\r\n" + + "GROUP BY d.id;"; + String result = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.id = summit.mstr.id\r\n" + + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" + + "AND d.fund_coll_attrb IN ( 'ShanXi University' )\r\n" + + "GROUP BY d.id;"; + Map conditionMap = new HashMap( ); + conditionMap.put( "Institute", "ShanXi University" ); + removeCondition remove = new removeCondition( sql, + EDbVendor.dbvmssql, + conditionMap ); + Assert.assertEquals( remove.getRemoveResult( ), result ); + } + + public static void testIssue239( ) + { + String sql = "SELECT SUM (d.amt) \r\n " + + "FROM summit.cntrb_detail d \r\n " + + "WHERE d.id = summit.mstr.id \r\n " + + " AND (d.cntrb_date || d.cntrb_time) >= ('$From_Date$' || '$From_Time$')\r\n " + + " AND (d.cntrb_date || d.cntrb_time) <= ('$Thru_Date$' || '$Thru_Date$')\r\n " + + "GROUP BY d.id "; + String result = "SELECT SUM (d.amt) \r\n" + + " FROM summit.cntrb_detail d \r\n" + + " WHERE d.id = summit.mstr.id \r\n" + + " AND (d.cntrb_date || d.cntrb_time) >= ('20130731')\r\n" + + " GROUP BY d.id"; + Map conditionMap = new HashMap( ); + conditionMap.put( "From_Date", "20130731" ); + removeCondition remove = new removeCondition( sql, + EDbVendor.dbvoracle, + conditionMap ); + Assert.assertEquals( remove.getRemoveResult( ), result ); + } + + public static void testRemoveNonConditions( ) + { + String sql = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.id = summit.mstr.id\r\n" + + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" + + "AND d.fund_coll_attrb IN ( '$Institute$' )\r\n" + + "AND d.fund_acct IN ( '$Fund$' )\r\n" + + "AND d.cntrb_date >= '$From_Date$'\r\n" + + "AND d.cntrb_date <= '$Thru_Date$'\r\n" + + "GROUP BY d.id;"; + String result = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.id = summit.mstr.id\r\n" + + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" + + "AND d.fund_coll_attrb IN ( 'ShanXi University' )\r\n" + + "AND d.fund_acct IN ( 'Eclipse' )\r\n" + + "AND d.cntrb_date >= '2012-01-01'\r\n" + + "AND d.cntrb_date <= '2013-01-01'\r\n" + + "GROUP BY d.id;"; + Map conditionMap = new HashMap( ); + conditionMap.put( "Institute", "ShanXi University" ); + conditionMap.put( "Fund", "Eclipse" ); + conditionMap.put( "From_Date", "2012-01-01" ); + conditionMap.put( "Thru_Date", "2013-01-01" ); + removeCondition remove = new removeCondition( sql, + EDbVendor.dbvmssql, + conditionMap ); + Assert.assertEquals( remove.getRemoveResult( ), result ); + } + + public static void testRemoveAllConditions( ) + { + String sql = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.fund_coll_attrb IN ( '$Institute$' )\r\n" + + "AND d.fund_acct IN ( '$Fund$' )\r\n" + + "AND d.cntrb_date >= '$From_Date$'\r\n" + + "AND d.cntrb_date <= '$Thru_Date$'\r\n" + + "GROUP BY d.id;"; + String result = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "GROUP BY d.id;"; + removeCondition remove = new removeCondition( sql, + EDbVendor.dbvmssql, + null ); + System.out.println(remove.getRemoveResult( )); + //Assert.assertEquals( remove.getRemoveResult( ), result ); + } + + public void testSQLFromFile( ) + { + SqlFileList fileList = new SqlFileList( testFilesDirectory, + containsSubFolder, + testFileSuffix ); + if ( fileList.sqlfiles != null ) + { + for ( int i = 0; i < fileList.sqlfiles.size( ); i++ ) + { + String filePath = fileList.sqlfiles.get( i ); + String xmlFilePath = filePath.replaceAll( "(?i)" + + Pattern.quote( testFileSuffix ), + ".txt" ); + File xmlFile = new File( xmlFilePath ); + File sqlFile = new File( filePath ); + if ( xmlFile.exists( ) && sqlFile.exists( ) ) + { + removeCondition remove = new removeCondition( sqlFile, + EDbVendor.dbvoracle, + conditionMap ); + System.out.println( remove.getRemoveResult( ) ); + try + { + new FileOutputStream( new File( "C:\\1.txt" ) ).write( remove.getRemoveResult( ) + .getBytes( ) ); + } + catch ( FileNotFoundException e ) + { + // TODO Auto-generated catch block + e.printStackTrace( ); + } + catch ( IOException e ) + { + // TODO Auto-generated catch block + e.printStackTrace( ); + } + Assert.assertTrue( remove.getRemoveResult( ) + .trim( ) + .equalsIgnoreCase( getContent( xmlFile ) ) ); + } + } + } + } + + private String getContent( File file ) + { + try + { + ByteArrayOutputStream out = new ByteArrayOutputStream( 4096 ); + byte[] tmp = new byte[4096]; + InputStream is = new BufferedInputStream( new FileInputStream( file ) ); + while ( true ) + { + int r = is.read( tmp ); + if ( r == -1 ) + break; + out.write( tmp, 0, r ); + } + byte[] bytes = out.toByteArray( ); + is.close( ); + out.close( ); + String content = new String( bytes ); + return content.trim( ); + } + catch ( IOException e ) + { + e.printStackTrace( ); + } + return null; + } +} diff --git a/src/test/java/demos/traceDataLineageTest.java b/src/test/java/gudusoft/gsqlparser/demosTest/traceDataLineageTest.java similarity index 96% rename from src/test/java/demos/traceDataLineageTest.java rename to src/test/java/gudusoft/gsqlparser/demosTest/traceDataLineageTest.java index 67cfb2dd..7735c3d1 100644 --- a/src/test/java/demos/traceDataLineageTest.java +++ b/src/test/java/gudusoft/gsqlparser/demosTest/traceDataLineageTest.java @@ -1,13 +1,7 @@ -package demos; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; +package gudusoft.gsqlparser.demosTest; import junit.framework.TestCase; -import demos.tracedatalineage.Column; -import demos.tracedatalineage.traceDataLineage; public class traceDataLineageTest extends TestCase { diff --git a/src/test/java/dlineage/bigquery/testBigQuery.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testBigQuery.java similarity index 92% rename from src/test/java/dlineage/bigquery/testBigQuery.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testBigQuery.java index ba42d94b..e8413692 100644 --- a/src/test/java/dlineage/bigquery/testBigQuery.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testBigQuery.java @@ -1,13 +1,13 @@ -package dlineage.bigquery; +package gudusoft.gsqlparser.dlineageTest.bigquery; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Relationship; import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; -import gudusoft.gsqlparser.dlineage.util.XML2Model; import junit.framework.TestCase; import java.io.File; import java.util.Arrays; @@ -17,7 +17,7 @@ public class testBigQuery extends TestCase { public void test1(){ //fix bugs: https://wangz.net/bugs/mantisbt/view.php?id=2534 - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/bigquery/I61VO9.sql"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/bigquery/I61VO9.sql"); EDbVendor vendor = TGSqlParser.getDBVendorByName("bigquery"); Option option = new Option(); @@ -104,9 +104,9 @@ public void test2() throws Exception { public void test3(){ //fix bugs: https://e.gitee.com/gudusoft/notifications/referer?issue=I61W7N - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/bigquery/I61W7N.sql"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "gudusoft/gsqlparser/bigqueryTest/I61W7N.sql"); - EDbVendor vendor = TGSqlParser.getDBVendorByName("bigquery"); + EDbVendor vendor = TGSqlParser.getDBVendorByName("gudusoft/gsqlparser"); Option option = new Option(); option.setVendor(vendor); option.setSimpleOutput(true); diff --git a/src/test/java/dlineage/bigquery/testConcatFunction.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testConcatFunction.java similarity index 97% rename from src/test/java/dlineage/bigquery/testConcatFunction.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testConcatFunction.java index a80b8ac8..ec7b9336 100644 --- a/src/test/java/dlineage/bigquery/testConcatFunction.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testConcatFunction.java @@ -1,4 +1,4 @@ -package dlineage.bigquery; +package gudusoft.gsqlparser.dlineageTest.bigquery; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; @@ -6,7 +6,6 @@ import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Relationship; -import gudusoft.gsqlparser.dlineage.dataflow.model.json.RelationshipElement; import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; import junit.framework.TestCase; import java.util.Arrays; diff --git a/src/test/java/dlineage/bigquery/testCreateView.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testCreateView.java similarity index 98% rename from src/test/java/dlineage/bigquery/testCreateView.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testCreateView.java index 28bc3dc8..a6b75076 100644 --- a/src/test/java/dlineage/bigquery/testCreateView.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testCreateView.java @@ -1,4 +1,4 @@ -package dlineage.bigquery; +package gudusoft.gsqlparser.dlineageTest.bigquery; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/dlineage/bigquery/testExcept.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testExcept.java similarity index 88% rename from src/test/java/dlineage/bigquery/testExcept.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testExcept.java index 7f24fcda..f8870790 100644 --- a/src/test/java/dlineage/bigquery/testExcept.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testExcept.java @@ -1,7 +1,8 @@ -package dlineage.bigquery; +package gudusoft.gsqlparser.dlineageTest.bigquery; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; @@ -17,7 +18,7 @@ public class testExcept extends TestCase { public void test1(){ - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/bigquery/I6HPFS_except_1.sql"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/bigquery/I6HPFS_except_1.sql"); EDbVendor vendor = TGSqlParser.getDBVendorByName("bigquery"); Option option = new Option(); diff --git a/src/test/java/dlineage/bigquery/testReplace.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testReplace.java similarity index 98% rename from src/test/java/dlineage/bigquery/testReplace.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testReplace.java index eb489aac..8417626b 100644 --- a/src/test/java/dlineage/bigquery/testReplace.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testReplace.java @@ -1,4 +1,4 @@ -package dlineage.bigquery; +package gudusoft.gsqlparser.dlineageTest.bigquery; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; @@ -8,7 +8,6 @@ import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; import junit.framework.TestCase; import java.util.Arrays; -import java.util.stream.Collectors; public class testReplace extends TestCase { public void test1() throws Exception { diff --git a/src/test/java/dlineage/bigquery/testStruct.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testStruct.java similarity index 97% rename from src/test/java/dlineage/bigquery/testStruct.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testStruct.java index 56bd443b..06bb3ba5 100644 --- a/src/test/java/dlineage/bigquery/testStruct.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testStruct.java @@ -1,9 +1,8 @@ -package dlineage.bigquery; +package gudusoft.gsqlparser.dlineageTest.bigquery; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; -import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Relationship; import gudusoft.gsqlparser.dlineage.dataflow.model.json.RelationshipElement; diff --git a/src/test/java/dlineage/bigquery/testStructConstant.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testStructConstant.java similarity index 95% rename from src/test/java/dlineage/bigquery/testStructConstant.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testStructConstant.java index 7f3330cb..688bdb67 100644 --- a/src/test/java/dlineage/bigquery/testStructConstant.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testStructConstant.java @@ -1,14 +1,12 @@ -package dlineage.bigquery; +package gudusoft.gsqlparser.dlineageTest.bigquery; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; -import gudusoft.gsqlparser.dlineage.dataflow.model.json.Relationship; import gudusoft.gsqlparser.dlineage.dataflow.model.json.RelationshipElement; import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; -import gudusoft.gsqlparser.util.json.JSON; import junit.framework.TestCase; import java.util.ArrayList; diff --git a/src/test/java/dlineage/bigquery/testUnnest.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testUnnest.java similarity index 97% rename from src/test/java/dlineage/bigquery/testUnnest.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testUnnest.java index c9e241eb..46dccc04 100644 --- a/src/test/java/dlineage/bigquery/testUnnest.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/bigquery/testUnnest.java @@ -1,18 +1,14 @@ -package dlineage.bigquery; +package gudusoft.gsqlparser.dlineageTest.bigquery; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; -import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Relationship; import gudusoft.gsqlparser.dlineage.dataflow.model.json.RelationshipElement; import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; -import gudusoft.gsqlparser.util.json.JSON; import junit.framework.TestCase; -import javax.xml.bind.util.JAXBSource; -import java.io.File; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; diff --git a/src/test/java/dlineage/oracle/testDBLink.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/oracle/testDBLink.java similarity index 92% rename from src/test/java/dlineage/oracle/testDBLink.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/oracle/testDBLink.java index f2a873e1..278798d3 100644 --- a/src/test/java/dlineage/oracle/testDBLink.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/oracle/testDBLink.java @@ -1,7 +1,8 @@ -package dlineage.oracle; +package gudusoft.gsqlparser.dlineageTest.oracle; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Relationship; @@ -16,7 +17,7 @@ public class testDBLink extends TestCase { public void test1(){ - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/oracle/mviewDblink.json"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/oracle/mviewDblink.json"); // Create DataFlowAnalyzer EDbVendor vendor = TGSqlParser.getDBVendorByName("oracle"); @@ -37,7 +38,7 @@ public void test1(){ assertTrue(dbLinkRel.getTarget().getParentName().equalsIgnoreCase("\"DB2\".\"LOCOMOTIVES\"")); } public void test2() { - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/oracle/mviewDblink.json"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/oracle/mviewDblink.json"); EDbVendor vendor = TGSqlParser.getDBVendorByName("oracle"); DataFlowAnalyzer dataFlowAnalyzer = new DataFlowAnalyzer(file, vendor, true); diff --git a/src/test/java/dlineage/oracle/testSchema.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/oracle/testSchema.java similarity index 94% rename from src/test/java/dlineage/oracle/testSchema.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/oracle/testSchema.java index b43b79ac..0f0944f4 100644 --- a/src/test/java/dlineage/oracle/testSchema.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/oracle/testSchema.java @@ -1,7 +1,8 @@ -package dlineage.oracle; +package gudusoft.gsqlparser.dlineageTest.oracle; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Relationship; @@ -23,7 +24,7 @@ public void test1() { //solidatus: 0002525: Relationships parent has object in incorrect schema //https://e.gitee.com/gudusoft/issues/table?issue=I61BYG EDbVendor oracle = TGSqlParser.getDBVendorByName("oracle"); - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/oracle/I61BYG.json"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/oracle/I61BYG.json"); DataFlowAnalyzer dataFlowAnalyzer = new DataFlowAnalyzer(file, oracle, true); dataFlowAnalyzer.generateDataFlow(); diff --git a/src/test/java/dlineage/oracle/testTransitions.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/oracle/testTransitions.java similarity index 71% rename from src/test/java/dlineage/oracle/testTransitions.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/oracle/testTransitions.java index 64f4a5b6..38496ac6 100644 --- a/src/test/java/dlineage/oracle/testTransitions.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/oracle/testTransitions.java @@ -1,6 +1,7 @@ -package dlineage.oracle; +package gudusoft.gsqlparser.dlineageTest.oracle; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; @@ -8,15 +9,14 @@ import junit.framework.TestCase; import java.io.File; import java.util.Arrays; -import java.util.Objects; public class testTransitions extends TestCase { public void test1(){ File[] files = { - new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/oracle/I5ZBWU/create_departments_table.sql"), - new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/oracle/I5ZBWU/create_employees_table.sql"), - new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/oracle/I5ZBWU/create_employees_dump_table.sql"), - new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/oracle/I5ZBWU/dump_by_location_procedureless.sql") + new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/oracle/I5ZBWU/create_departments_table.sql"), + new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/oracle/I5ZBWU/create_employees_table.sql"), + new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/oracle/I5ZBWU/create_employees_dump_table.sql"), + new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/oracle/I5ZBWU/dump_by_location_procedureless.sql") }; // Create DataFlowAnalyzer diff --git a/src/test/java/dlineage/postgresql/testProcedure.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/postgresql/testProcedure.java similarity index 93% rename from src/test/java/dlineage/postgresql/testProcedure.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/postgresql/testProcedure.java index d216b689..fa472e9f 100644 --- a/src/test/java/dlineage/postgresql/testProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/postgresql/testProcedure.java @@ -1,13 +1,13 @@ -package dlineage.postgresql; +package gudusoft.gsqlparser.dlineageTest.postgresql; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Relationship; import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; -import gudusoft.gsqlparser.dlineage.metadata.Table; import gudusoft.gsqlparser.util.CollectionUtil; import junit.framework.TestCase; @@ -18,7 +18,7 @@ public class testProcedure extends TestCase { public void test1() { - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/postgresql/I61CZ0.json"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/postgresql/I61CZ0.json"); EDbVendor vendor = TGSqlParser.getDBVendorByName("postgresql"); Option option = new Option(); option.setVendor(vendor); diff --git a/src/test/java/dlineage/readme.md b/src/test/java/gudusoft/gsqlparser/dlineageTest/readme.md similarity index 98% rename from src/test/java/dlineage/readme.md rename to src/test/java/gudusoft/gsqlparser/dlineageTest/readme.md index c7460658..5576cd91 100644 --- a/src/test/java/dlineage/readme.md +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/readme.md @@ -1,3 +1,3 @@ -Test cases for DataFlowAnalyzer - +Test cases for DataFlowAnalyzer + https://github.com/sqlparser/sqlflow/tree/master/backend/application/src/test/java/com/gudusoft/gspLive/application/controller/sqlflow \ No newline at end of file diff --git a/src/test/java/dlineage/snowflake/testStructConstant.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/snowflake/testStructConstant.java similarity index 98% rename from src/test/java/dlineage/snowflake/testStructConstant.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/snowflake/testStructConstant.java index 300bb53d..65433c1e 100644 --- a/src/test/java/dlineage/snowflake/testStructConstant.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/snowflake/testStructConstant.java @@ -1,4 +1,4 @@ -package dlineage.snowflake; +package gudusoft.gsqlparser.dlineageTest.snowflake; import java.util.ArrayList; import java.util.Arrays; @@ -6,7 +6,6 @@ import java.util.stream.Collectors; import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TCustomSqlStatement; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; diff --git a/src/test/java/dlineage/solidatus/testDBLink.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/solidatus/testDBLink.java similarity index 98% rename from src/test/java/dlineage/solidatus/testDBLink.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/solidatus/testDBLink.java index d3e8c6aa..d9379423 100644 --- a/src/test/java/dlineage/solidatus/testDBLink.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/solidatus/testDBLink.java @@ -1,4 +1,4 @@ -package dlineage.solidatus; +package gudusoft.gsqlparser.dlineageTest.solidatus; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/dlineage/solidatus/testStarColumn.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/solidatus/testStarColumn.java similarity index 99% rename from src/test/java/dlineage/solidatus/testStarColumn.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/solidatus/testStarColumn.java index f60b56c9..15260885 100644 --- a/src/test/java/dlineage/solidatus/testStarColumn.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/solidatus/testStarColumn.java @@ -1,4 +1,4 @@ -package dlineage.solidatus; +package gudusoft.gsqlparser.dlineageTest.solidatus; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/dlineage/teradata/testTeradata.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/teradata/testTeradata.java similarity index 90% rename from src/test/java/dlineage/teradata/testTeradata.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/teradata/testTeradata.java index 74ddd7bb..27663e18 100644 --- a/src/test/java/dlineage/teradata/testTeradata.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/teradata/testTeradata.java @@ -1,7 +1,8 @@ -package dlineage.teradata; +package gudusoft.gsqlparser.dlineageTest.teradata; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; @@ -19,7 +20,7 @@ public class testTeradata extends TestCase { public void test1(){ //https://e.gitee.com/gudusoft/issues/table?issue=I620EV - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/teradata/query_sample.btq"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/teradata/query_sample.btq"); EDbVendor vendor = TGSqlParser.getDBVendorByName("teradata"); Option option = new Option(); @@ -46,7 +47,7 @@ public void test1(){ public void testJoin(){ //https://e.gitee.com/gudusoft/issues/table?issue=I620EV - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"dataflow/teradata/I8ZWLD.sql"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "dataflow/teradata/I8ZWLD.sql"); EDbVendor vendor = TGSqlParser.getDBVendorByName("teradata"); Option option = new Option(); diff --git a/src/test/java/gudusoft/gsqlparser/dlineageTest/testColumnLevelLineageFile.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/testColumnLevelLineageFile.java new file mode 100644 index 00000000..667c9292 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/testColumnLevelLineageFile.java @@ -0,0 +1,239 @@ +package gudusoft.gsqlparser.dlineageTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TBaseType; +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; +import gudusoft.gsqlparser.dlineage.util.ProcessUtility; +import junit.framework.TestCase; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.*; + +public class testColumnLevelLineageFile extends TestCase { + + public void test1() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/group-by.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/group-by.csv", EDbVendor.dbvoracle)); + } + + public void test2() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/from.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/from.csv", EDbVendor.dbvoracle)); + } + + public void test3() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/left-join.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/left-join.csv", EDbVendor.dbvoracle)); + } + + public void test4() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count.csv", EDbVendor.dbvoracle)); + } + + public void test5() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/alter-table.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/alter-table.csv", EDbVendor.dbvoracle)); + } + + public void test6() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-view.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-view.csv", EDbVendor.dbvoracle)); + } + + public void test7() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/from-where.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/from-where.csv", EDbVendor.dbvoracle)); + } + + public void test8() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/ROUND.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/ROUND.csv", EDbVendor.dbvoracle)); + } + + public void test9() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-sum.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-sum.csv", EDbVendor.dbvoracle)); + } + + public void test10() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-view-alter.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-view-alter.csv", EDbVendor.dbvoracle)); + } + + public void test11() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-where.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-where.csv", EDbVendor.dbvoracle)); + } + + public void test12() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-where-group.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-where-group.csv", EDbVendor.dbvoracle)); + } + + public void test13() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-where-group.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-where-group.csv", EDbVendor.dbvoracle)); + } + + public void test14() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-where.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-where.csv", EDbVendor.dbvoracle)); + } + + public void test15() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-column.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/count-column.csv", EDbVendor.dbvoracle)); + } + + public void test16() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-group.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/sum-group.csv", EDbVendor.dbvoracle)); + } + + public void test17() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/with.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/with.csv", EDbVendor.dbvoracle)); + } + + public void test18() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/select.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/select.csv", EDbVendor.dbvoracle)); + } + + public void test19() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-create.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-create.csv", EDbVendor.dbvoracle)); + } + + public void test20() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-select.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-select.csv", EDbVendor.dbvoracle)); + } + + public void test21() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-procedure.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-procedure.csv", EDbVendor.dbvmssql)); + } + + public void test22() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-all.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/insert-all.csv", EDbVendor.dbvpostgresql)); + } + + public void test23() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/with-select.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/with-select.csv", EDbVendor.dbvmssql)); + } + + public void test24() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-function.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/create-function.csv", EDbVendor.dbvmssql)); + } + + public void test25() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/plsql-array.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/plsql-array.csv", EDbVendor.dbvoracle)); + } + + public void test26() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-1.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-1.csv", EDbVendor.dbvpresto)); + } + + public void test27() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-2.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-2.csv", EDbVendor.dbvpresto)); + } + + public void test28() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-3.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-3.csv", EDbVendor.dbvpresto)); + } + + public void test29() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-4.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/presto-unnest-4.csv", EDbVendor.dbvpresto)); + } + + public void test30() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/star-column.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/star-column.csv", EDbVendor.dbvoracle)); + } + + public void test31() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/course.sql", gspCommon.BASE_SQL_DIR_PUBLIC + "lineage/course.csv", EDbVendor.dbvoracle)); + } + + public void test32() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/update-set-clause.sql", gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/update-set-clause.csv", EDbVendor.dbvmssql)); + } + + public void test33() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/column-alias.sql", gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/column-alias.csv", EDbVendor.dbvmssql)); + } + +// public void test34() { +// assertTrue(compare(common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/subquery-alais.sql", common.gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/subquery-alais.csv", EDbVendor.dbvmssql)); +// } + + public void test35() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external1.sql", gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external1.csv", EDbVendor.dbvbigquery)); + } + + public void test36() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external2.sql", gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external2.csv", EDbVendor.dbvbigquery)); + } + + public void test37() { + assertTrue(compare(gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external3.sql", gspCommon.BASE_SQL_DIR_PRIVATE + "lineage/create-external3.csv", EDbVendor.dbvredshift)); + } + + + private boolean compare(String sourceFile, String resultFile, EDbVendor vendor) { + if ((null == sourceFile || "".equals(sourceFile)) || + null == resultFile || "".equals(resultFile)) { + return false; + } + File file = new File(sourceFile); + if (!file.exists()) { + return false; + } + + File rf = new File(resultFile); + if (!rf.exists()) { + return false; + } + + StringBuilder v1 = new StringBuilder(); + try { + BufferedReader reader = new BufferedReader(new FileReader(rf)); + String tempStr; + while ((tempStr = reader.readLine()) != null) { + v1.append(new String(tempStr.getBytes(), StandardCharsets.UTF_8)).append("\n"); + } + reader.close(); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + + gudusoft.gsqlparser.dlineage.DataFlowAnalyzer dlineage = new gudusoft.gsqlparser.dlineage.DataFlowAnalyzer( + file, vendor, false); + dlineage.generateDataFlow(); + dataflow originDataflow = dlineage.getDataFlow(); + String result = ProcessUtility.generateColumnLevelLineageCsv(dlineage, originDataflow); + // compare + List c1 = resolver(v1.toString()); + List c2 = resolver(result); + + if (c1.isEmpty() || c2.isEmpty() || c1.size() != c2.size()) { +// try { +// SQLUtil.writeToFile(rf, result); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// return true; + return false; + } + boolean r = true; + for (int i = 0; i < c1.size(); i++) { + if (!TBaseType.comparyStringArray(c1.get(i), c2.get(i))) { + r = false; + System.out.println("The line number that failed to compare is : " + (i + 1)); + System.out.println(); + } + } + + return r; + } + + private List resolver(String str) { + List r = new ArrayList<>(); + String[] vars = str.replaceAll("\\d+", "").replace(";", ",").split("\n"); + List lines = new ArrayList(Arrays.asList(vars)); + Collections.sort(lines); + for (int i = 0; i < lines.size(); i++) { + if (i == 0) { + r.add(lines.get(i).split(",")); + continue; + } + r.add(lines.get(i).split(",")); + } + return r; + } + +} diff --git a/src/test/java/dlineage/testMultpleSqlFiles.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/testMultpleSqlFiles.java similarity index 94% rename from src/test/java/dlineage/testMultpleSqlFiles.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/testMultpleSqlFiles.java index 40a851a3..2a02b640 100644 --- a/src/test/java/dlineage/testMultpleSqlFiles.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/testMultpleSqlFiles.java @@ -1,10 +1,10 @@ -package dlineage; +package gudusoft.gsqlparser.dlineageTest; import java.io.File; import java.util.List; -import common.gspCommon; import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.DbObjectPosition; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Coordinate; @@ -19,7 +19,7 @@ public class testMultpleSqlFiles extends TestCase { public void test1() { //File sqlfiles = new File("D:/develop/git/gsp_sqlfiles/TestCases/dlineage/mysql/547"); - File sqlfiles = new File(common.gspCommon.BASE_SQL_DIR+"private/dlineage/mysql/547"); + File sqlfiles = new File(gspCommon.BASE_SQL_DIR+"private/dlineage/mysql/547"); DataFlowAnalyzer analyzer = new DataFlowAnalyzer(sqlfiles, EDbVendor.dbvmysql, false); analyzer.generateDataFlow(); dataflow dataflow = analyzer.getDataFlow(); diff --git a/src/test/java/dlineage/testSimpleSql.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/testSimpleSql.java similarity index 98% rename from src/test/java/dlineage/testSimpleSql.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/testSimpleSql.java index 99679ab7..8b0a5f17 100644 --- a/src/test/java/dlineage/testSimpleSql.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/testSimpleSql.java @@ -1,4 +1,4 @@ -package dlineage; +package gudusoft.gsqlparser.dlineageTest; import java.util.List; diff --git a/src/test/java/dlineage/test_IALOHN.java b/src/test/java/gudusoft/gsqlparser/dlineageTest/test_IALOHN.java similarity index 95% rename from src/test/java/dlineage/test_IALOHN.java rename to src/test/java/gudusoft/gsqlparser/dlineageTest/test_IALOHN.java index 3d170d0e..ad264395 100644 --- a/src/test/java/dlineage/test_IALOHN.java +++ b/src/test/java/gudusoft/gsqlparser/dlineageTest/test_IALOHN.java @@ -1,11 +1,11 @@ -package dlineage; +package gudusoft.gsqlparser.dlineageTest; import java.io.File; import java.util.Arrays; import java.util.Map; import java.util.stream.Collectors; -import common.gspCommon; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; diff --git a/src/test/java/dynamicsql/testPLSQLExecImmediateByVisitor.java b/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testPLSQLExecImmediateByVisitor.java similarity index 99% rename from src/test/java/dynamicsql/testPLSQLExecImmediateByVisitor.java rename to src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testPLSQLExecImmediateByVisitor.java index 3abcf94c..332eeafc 100644 --- a/src/test/java/dynamicsql/testPLSQLExecImmediateByVisitor.java +++ b/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testPLSQLExecImmediateByVisitor.java @@ -1,4 +1,4 @@ -package dynamicsql; +package gudusoft.gsqlparser.dynamicsqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/dynamicsql/testSQLServerCreateProcedureExec.java b/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerCreateProcedureExec.java similarity index 99% rename from src/test/java/dynamicsql/testSQLServerCreateProcedureExec.java rename to src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerCreateProcedureExec.java index 4037b130..b3acd879 100644 --- a/src/test/java/dynamicsql/testSQLServerCreateProcedureExec.java +++ b/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerCreateProcedureExec.java @@ -1,4 +1,4 @@ -package dynamicsql; +package gudusoft.gsqlparser.dynamicsqlTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.TExecParameter; diff --git a/src/test/java/dynamicsql/testSQLServerExec.java b/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerExec.java similarity index 99% rename from src/test/java/dynamicsql/testSQLServerExec.java rename to src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerExec.java index dfd5c277..89b5030a 100644 --- a/src/test/java/dynamicsql/testSQLServerExec.java +++ b/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerExec.java @@ -1,4 +1,4 @@ -package dynamicsql; +package gudusoft.gsqlparser.dynamicsqlTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.TParseTreeVisitor; diff --git a/src/test/java/erdiagram/testMsSQL.java b/src/test/java/gudusoft/gsqlparser/erdiagramTest/testMsSQL.java similarity index 81% rename from src/test/java/erdiagram/testMsSQL.java rename to src/test/java/gudusoft/gsqlparser/erdiagramTest/testMsSQL.java index 662792c7..add540ea 100644 --- a/src/test/java/erdiagram/testMsSQL.java +++ b/src/test/java/gudusoft/gsqlparser/erdiagramTest/testMsSQL.java @@ -1,6 +1,7 @@ -package erdiagram; +package gudusoft.gsqlparser.erdiagramTest; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; @@ -10,7 +11,7 @@ public class testMsSQL extends TestCase { public void test1(){ - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"erdiagram/voyager_sqlserver.sql"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "erdiagram/voyager_sqlserver.sql"); Option option = new Option(); option.setVendor(TGSqlParser.getDBVendorByName("mssql")); option.setShowERDiagram(true); diff --git a/src/test/java/erdiagram/testMySQL.java b/src/test/java/gudusoft/gsqlparser/erdiagramTest/testMySQL.java similarity index 82% rename from src/test/java/erdiagram/testMySQL.java rename to src/test/java/gudusoft/gsqlparser/erdiagramTest/testMySQL.java index a3c2a969..77016481 100644 --- a/src/test/java/erdiagram/testMySQL.java +++ b/src/test/java/gudusoft/gsqlparser/erdiagramTest/testMySQL.java @@ -1,6 +1,7 @@ -package erdiagram; +package gudusoft.gsqlparser.erdiagramTest; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; @@ -10,7 +11,7 @@ public class testMySQL extends TestCase { public void test1(){ - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"erdiagram/mysql_koel.sql"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "erdiagram/mysql_koel.sql"); Option option = new Option(); option.setVendor(TGSqlParser.getDBVendorByName("mysql")); option.setShowERDiagram(true); diff --git a/src/test/java/erdiagram/testOracle.java b/src/test/java/gudusoft/gsqlparser/erdiagramTest/testOracle.java similarity index 84% rename from src/test/java/erdiagram/testOracle.java rename to src/test/java/gudusoft/gsqlparser/erdiagramTest/testOracle.java index 61d055bf..e1b69700 100644 --- a/src/test/java/erdiagram/testOracle.java +++ b/src/test/java/gudusoft/gsqlparser/erdiagramTest/testOracle.java @@ -1,6 +1,7 @@ -package erdiagram; +package gudusoft.gsqlparser.erdiagramTest; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; @@ -11,7 +12,7 @@ public class testOracle extends TestCase { public void test1(){ - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE +"erdiagram/I6AUDT.sql"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "erdiagram/I6AUDT.sql"); Option option = new Option(); option.setVendor(TGSqlParser.getDBVendorByName("oracle")); option.setShowERDiagram(true); diff --git a/src/test/java/erdiagram/testPostgres.java b/src/test/java/gudusoft/gsqlparser/erdiagramTest/testPostgres.java similarity index 85% rename from src/test/java/erdiagram/testPostgres.java rename to src/test/java/gudusoft/gsqlparser/erdiagramTest/testPostgres.java index a9b5ae36..861783fe 100644 --- a/src/test/java/erdiagram/testPostgres.java +++ b/src/test/java/gudusoft/gsqlparser/erdiagramTest/testPostgres.java @@ -1,6 +1,7 @@ -package erdiagram; +package gudusoft.gsqlparser.erdiagramTest; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; import gudusoft.gsqlparser.dlineage.dataflow.model.Option; import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; @@ -8,14 +9,12 @@ import gudusoft.gsqlparser.dlineage.metadata.Column; import junit.framework.TestCase; import java.io.File; -import java.util.Arrays; import java.util.List; -import java.util.Objects; import java.util.stream.Collectors; public class testPostgres extends TestCase { public void test1() { - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE + "erdiagram/postgres_voyager.sql"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "erdiagram/postgres_voyager.sql"); Option option = new Option(); option.setVendor(TGSqlParser.getDBVendorByName("postgresql")); option.setShowERDiagram(true); @@ -26,7 +25,7 @@ public void test1() { } public void test2() { - File file = new File(common.gspCommon.BASE_SQL_DIR_PRIVATE + "erdiagram/postgres_index.sql"); + File file = new File(gspCommon.BASE_SQL_DIR_PRIVATE + "erdiagram/postgres_index.sql"); Option option = new Option(); option.setVendor(TGSqlParser.getDBVendorByName("postgresql")); option.setShowERDiagram(true); diff --git a/src/test/java/errorsql/testCreateIndex.java b/src/test/java/gudusoft/gsqlparser/errorsqlTest/testCreateIndex.java similarity index 96% rename from src/test/java/errorsql/testCreateIndex.java rename to src/test/java/gudusoft/gsqlparser/errorsqlTest/testCreateIndex.java index 235bfc23..3f4344f4 100644 --- a/src/test/java/errorsql/testCreateIndex.java +++ b/src/test/java/gudusoft/gsqlparser/errorsqlTest/testCreateIndex.java @@ -1,4 +1,4 @@ -package errorsql; +package gudusoft.gsqlparser.errorsqlTest; /* * Date: 13-3-25 */ diff --git a/src/test/java/formatsql/formatsqlTest.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlTest.java similarity index 96% rename from src/test/java/formatsql/formatsqlTest.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlTest.java index 6b43d077..52a34b28 100644 --- a/src/test/java/formatsql/formatsqlTest.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlTest.java @@ -1,10 +1,9 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 2010-11-9 * Time: 9:57:07 */ -import gudusoft.gsqlparser.pp.para.GOutputFmt; import junit.framework.TestCase; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; @@ -12,7 +11,7 @@ import gudusoft.gsqlparser.pp.para.GFmtOpt; import gudusoft.gsqlparser.pp.para.GFmtOptFactory; import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import common.SqlFileList; +import gudusoft.gsqlparser.commonTest.SqlFileList; public class formatsqlTest extends TestCase { diff --git a/src/test/java/formatsql/formatsqlVerifyTest.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlVerifyTest.java similarity index 94% rename from src/test/java/formatsql/formatsqlVerifyTest.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlVerifyTest.java index ff95a153..94602eab 100644 --- a/src/test/java/formatsql/formatsqlVerifyTest.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlVerifyTest.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; @@ -10,8 +10,8 @@ import java.io.File; import junit.framework.TestCase; -import common.FileUtil; -import common.SqlFileList; +import gudusoft.gsqlparser.commonTest.FileUtil; +import gudusoft.gsqlparser.commonTest.SqlFileList; public class formatsqlVerifyTest extends TestCase { diff --git a/src/test/java/formatsql/testAlignAliasInSelectList.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignAliasInSelectList.java similarity index 98% rename from src/test/java/formatsql/testAlignAliasInSelectList.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignAliasInSelectList.java index cc5c950f..803349cd 100644 --- a/src/test/java/formatsql/testAlignAliasInSelectList.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignAliasInSelectList.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 12-1-29 */ diff --git a/src/test/java/formatsql/testAlignment.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignment.java similarity index 99% rename from src/test/java/formatsql/testAlignment.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignment.java index 2b2a1a56..505ca31a 100644 --- a/src/test/java/formatsql/testAlignment.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignment.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testBlankLines.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testBlankLines.java similarity index 99% rename from src/test/java/formatsql/testBlankLines.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testBlankLines.java index f3504a71..0b11c6b8 100644 --- a/src/test/java/formatsql/testBlankLines.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testBlankLines.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-23 */ diff --git a/src/test/java/formatsql/testCTE.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCTE.java similarity index 97% rename from src/test/java/formatsql/testCTE.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testCTE.java index b159b083..9f44e50c 100644 --- a/src/test/java/formatsql/testCTE.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCTE.java @@ -1,44 +1,44 @@ -package formatsql; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testCTE extends TestCase { - - public static void testCTE_NewlineBeforeAs(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "WITH mycte(x) AS (SELECT x = Convert( VARCHAR(1000), 'hello' ) UNION ALL \n" + - " SELECT Convert( VARCHAR(1000), x + 'a' ) FROM mycte \n" + - " WHERE Len( x ) < 10 UNION ALL SELECT Convert( VARCHAR(1000), x + 'b' ) \n" + - " FROM mycte WHERE Len( x ) < 10)\n" + - "SELECT x FROM mycte ORDER BY Len( x ), x; "; - - sqlparser.parse(); - option.cteNewlineBeforeAs = false; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("WITH mycte(x) AS (SELECT x = Convert(VARCHAR(1000), 'hello')\n" + - " UNION ALL\n" + - " SELECT Convert(VARCHAR(1000), x + 'a')\n" + - " FROM mycte\n" + - " WHERE Len(x) < 10\n" + - " UNION ALL\n" + - " SELECT Convert(VARCHAR(1000), x + 'b')\n" + - " FROM mycte\n" + - " WHERE Len(x) < 10) \n" + - " SELECT x\n" + - " FROM mycte\n" + - " ORDER BY Len(x),\n" + - " x;")); - - // System.out.println(result.trim()); - } -} +package gudusoft.gsqlparser.formatsqlTest; +/* + * Date: 11-3-22 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.pp.para.GFmtOpt; +import gudusoft.gsqlparser.pp.para.GFmtOptFactory; +import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; +import junit.framework.TestCase; + +public class testCTE extends TestCase { + + public static void testCTE_NewlineBeforeAs(){ + GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "WITH mycte(x) AS (SELECT x = Convert( VARCHAR(1000), 'hello' ) UNION ALL \n" + + " SELECT Convert( VARCHAR(1000), x + 'a' ) FROM mycte \n" + + " WHERE Len( x ) < 10 UNION ALL SELECT Convert( VARCHAR(1000), x + 'b' ) \n" + + " FROM mycte WHERE Len( x ) < 10)\n" + + "SELECT x FROM mycte ORDER BY Len( x ), x; "; + + sqlparser.parse(); + option.cteNewlineBeforeAs = false; + String result = FormatterFactory.pp(sqlparser, option); + assertTrue(result.trim().equalsIgnoreCase("WITH mycte(x) AS (SELECT x = Convert(VARCHAR(1000), 'hello')\n" + + " UNION ALL\n" + + " SELECT Convert(VARCHAR(1000), x + 'a')\n" + + " FROM mycte\n" + + " WHERE Len(x) < 10\n" + + " UNION ALL\n" + + " SELECT Convert(VARCHAR(1000), x + 'b')\n" + + " FROM mycte\n" + + " WHERE Len(x) < 10) \n" + + " SELECT x\n" + + " FROM mycte\n" + + " ORDER BY Len(x),\n" + + " x;")); + + // System.out.println(result.trim()); + } +} diff --git a/src/test/java/formatsql/testCapitalisation.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCapitalisation.java similarity index 99% rename from src/test/java/formatsql/testCapitalisation.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testCapitalisation.java index 6047cfe5..6169d920 100644 --- a/src/test/java/formatsql/testCapitalisation.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCapitalisation.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-23 */ diff --git a/src/test/java/formatsql/testCaseExpression.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCaseExpression.java similarity index 99% rename from src/test/java/formatsql/testCaseExpression.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testCaseExpression.java index 387f2b40..41ac192e 100644 --- a/src/test/java/formatsql/testCaseExpression.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCaseExpression.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testComment.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testComment.java similarity index 99% rename from src/test/java/formatsql/testComment.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testComment.java index f7c9ba95..eae94d4b 100644 --- a/src/test/java/formatsql/testComment.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testComment.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-23 */ diff --git a/src/test/java/formatsql/testCompactMode.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCompactMode.java similarity index 97% rename from src/test/java/formatsql/testCompactMode.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testCompactMode.java index 22055049..12deb1cb 100644 --- a/src/test/java/formatsql/testCompactMode.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCompactMode.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-23 */ diff --git a/src/test/java/formatsql/testCreateFunctionProcedure.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateFunctionProcedure.java similarity index 99% rename from src/test/java/formatsql/testCreateFunctionProcedure.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateFunctionProcedure.java index 31d20445..27c881ae 100644 --- a/src/test/java/formatsql/testCreateFunctionProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateFunctionProcedure.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateTable.java similarity index 99% rename from src/test/java/formatsql/testCreateTable.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateTable.java index 8e551a08..f5adc81e 100644 --- a/src/test/java/formatsql/testCreateTable.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateTable.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testDeclare.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testDeclare.java similarity index 96% rename from src/test/java/formatsql/testDeclare.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testDeclare.java index 9d2cfda6..5763b1ea 100644 --- a/src/test/java/formatsql/testDeclare.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testDeclare.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/formatsql/testExecute.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testExecute.java similarity index 96% rename from src/test/java/formatsql/testExecute.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testExecute.java index b01de191..5325e040 100644 --- a/src/test/java/formatsql/testExecute.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testExecute.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testFromClause.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testFromClause.java similarity index 99% rename from src/test/java/formatsql/testFromClause.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testFromClause.java index 5d185228..d6afc429 100644 --- a/src/test/java/formatsql/testFromClause.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testFromClause.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testFunctionCall.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testFunctionCall.java similarity index 99% rename from src/test/java/formatsql/testFunctionCall.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testFunctionCall.java index ff75bd1f..e96a1d59 100644 --- a/src/test/java/formatsql/testFunctionCall.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testFunctionCall.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testGroupByClause.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testGroupByClause.java similarity index 98% rename from src/test/java/formatsql/testGroupByClause.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testGroupByClause.java index 2d791295..ab369250 100644 --- a/src/test/java/formatsql/testGroupByClause.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testGroupByClause.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testIndentation.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIndentation.java similarity index 99% rename from src/test/java/formatsql/testIndentation.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testIndentation.java index 24409418..6c24939d 100644 --- a/src/test/java/formatsql/testIndentation.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIndentation.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-23 */ diff --git a/src/test/java/formatsql/testInsertList.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testInsertList.java similarity index 98% rename from src/test/java/formatsql/testInsertList.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testInsertList.java index d52e6b93..852ae440 100644 --- a/src/test/java/formatsql/testInsertList.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testInsertList.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testIntoClause.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIntoClause.java similarity index 96% rename from src/test/java/formatsql/testIntoClause.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testIntoClause.java index ffd46c79..6a001cfb 100644 --- a/src/test/java/formatsql/testIntoClause.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIntoClause.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testIssues.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIssues.java similarity index 98% rename from src/test/java/formatsql/testIssues.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testIssues.java index 2ad3378b..90afce0b 100644 --- a/src/test/java/formatsql/testIssues.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIssues.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testLineNumber.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testLineNumber.java similarity index 96% rename from src/test/java/formatsql/testLineNumber.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testLineNumber.java index 7dfc1f8c..0fbec4d0 100644 --- a/src/test/java/formatsql/testLineNumber.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testLineNumber.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-23 */ diff --git a/src/test/java/formatsql/testOracleCreateView.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testOracleCreateView.java similarity index 99% rename from src/test/java/formatsql/testOracleCreateView.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testOracleCreateView.java index 1bd36212..be4a62f3 100644 --- a/src/test/java/formatsql/testOracleCreateView.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testOracleCreateView.java @@ -1,5 +1,5 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-4-6 diff --git a/src/test/java/formatsql/testOrderByClause.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testOrderByClause.java similarity index 98% rename from src/test/java/formatsql/testOrderByClause.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testOrderByClause.java index bde1c1d6..80db4d20 100644 --- a/src/test/java/formatsql/testOrderByClause.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testOrderByClause.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testPlsql1.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testPlsql1.java similarity index 98% rename from src/test/java/formatsql/testPlsql1.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testPlsql1.java index e77fe466..aaf90473 100644 --- a/src/test/java/formatsql/testPlsql1.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testPlsql1.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 13-2-8 */ diff --git a/src/test/java/formatsql/testSelectList.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testSelectList.java similarity index 99% rename from src/test/java/formatsql/testSelectList.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testSelectList.java index edf084db..14236d08 100644 --- a/src/test/java/formatsql/testSelectList.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testSelectList.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testWhereClause.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhereClause.java similarity index 97% rename from src/test/java/formatsql/testWhereClause.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhereClause.java index e6a1b94a..3a1bf044 100644 --- a/src/test/java/formatsql/testWhereClause.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhereClause.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-22 */ diff --git a/src/test/java/formatsql/testWhitespace.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhitespace.java similarity index 99% rename from src/test/java/formatsql/testWhitespace.java rename to src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhitespace.java index 73ede560..6a55ac60 100644 --- a/src/test/java/formatsql/testWhitespace.java +++ b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhitespace.java @@ -1,4 +1,4 @@ -package formatsql; +package gudusoft.gsqlparser.formatsqlTest; /* * Date: 11-3-23 */ diff --git a/src/test/java/gaussdb/testDeclareCursorSingleStmt.java b/src/test/java/gudusoft/gsqlparser/gaussdbTest/testDeclareCursorSingleStmt.java similarity index 96% rename from src/test/java/gaussdb/testDeclareCursorSingleStmt.java rename to src/test/java/gudusoft/gsqlparser/gaussdbTest/testDeclareCursorSingleStmt.java index 5c63c7a8..ba8bc244 100644 --- a/src/test/java/gaussdb/testDeclareCursorSingleStmt.java +++ b/src/test/java/gudusoft/gsqlparser/gaussdbTest/testDeclareCursorSingleStmt.java @@ -1,4 +1,4 @@ -package gaussdb; +package gudusoft.gsqlparser.gaussdbTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/gaussdb/testGetStmts.java b/src/test/java/gudusoft/gsqlparser/gaussdbTest/testGetStmts.java similarity index 92% rename from src/test/java/gaussdb/testGetStmts.java rename to src/test/java/gudusoft/gsqlparser/gaussdbTest/testGetStmts.java index bcff40eb..dfa9af29 100644 --- a/src/test/java/gaussdb/testGetStmts.java +++ b/src/test/java/gudusoft/gsqlparser/gaussdbTest/testGetStmts.java @@ -1,6 +1,6 @@ -package gaussdb; +package gudusoft.gsqlparser.gaussdbTest; -import common.gspCommon; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.stmt.*; @@ -11,7 +11,7 @@ public class testGetStmts extends TestCase { public void testCreateFunction(){ TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgaussdb); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA +"gaussdb/sql grammar/CREATE FUNCTION.sql"; + sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "gaussdb/sql grammar/CREATE FUNCTION.sql"; assertTrue(sqlparser.getrawsqlstatements() == 0); assertTrue(sqlparser.getSqlstatements().size() == 29); assertTrue(sqlparser.sqlstatements.get(1) instanceof TCreateFunctionStmt); @@ -24,7 +24,7 @@ public void testCreateFunction(){ public void testCreatePackage(){ TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgaussdb); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA +"gaussdb/sql grammar/CREATE PACKAGE.sql"; + sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "gaussdb/sql grammar/CREATE PACKAGE.sql"; assertTrue(sqlparser.getrawsqlstatements() == 0); assertTrue(sqlparser.getSqlstatements().size() == 9); assertTrue(sqlparser.sqlstatements.get(1) instanceof TPlsqlCreatePackage); @@ -37,7 +37,7 @@ public void testCreatePackage(){ public void testCreateProcedure(){ TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgaussdb); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA +"gaussdb/sql grammar/CREATE PROCEDURE.sql"; + sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "gaussdb/sql grammar/CREATE PROCEDURE.sql"; assertTrue(sqlparser.getrawsqlstatements() == 0); assertTrue(sqlparser.getSqlstatements().size() == 16); assertTrue(sqlparser.sqlstatements.get(0) instanceof TCreateProcedureStmt); @@ -50,7 +50,7 @@ public void testCreateProcedure(){ public void testCreateTrigger(){ TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgaussdb); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA +"gaussdb/sql grammar/CREATE TRIGGER.sql"; + sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "gaussdb/sql grammar/CREATE TRIGGER.sql"; assertTrue(sqlparser.getrawsqlstatements() == 0); assertTrue(sqlparser.getSqlstatements().size() == 23); assertTrue(sqlparser.sqlstatements.get(2) instanceof TCreateFunctionStmt); diff --git a/src/test/java/gettablecolumn/getObject.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/getObject.java similarity index 96% rename from src/test/java/gettablecolumn/getObject.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/getObject.java index f9475b19..ad52c641 100644 --- a/src/test/java/gettablecolumn/getObject.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/getObject.java @@ -1,276 +1,276 @@ -package gettablecolumn; -/* - * Date: 15-4-23 - */ - -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.sqlenv.TSQLEnv; -import common.gspCommon; -import common.metaDB; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; - -class getObject{ - public final static int compareMode = 1; - public final static int showMode = 2; - - String sqlfile; - String[] desiredTables = new String[100]; - String[] desiredColumns = new String[100]; - int desiredTableCount = 0, desiredColumnCount = 0; - - String oracle_sqldir = gspCommon.BASE_SQL_DIR_PRIVATE + "java/oracle/dbobject/"; - String[] oracle_sqlfiles = { - "berger_example_01","berger_sqltest_01","berger_sqltest_02", - "berger_sqltest_03","berger_sqltest_04","berger_sqltest_05", - "createtrigger","plsql_block_correlated_subquery","createfunction" , - "createpackagebody","merge","no_qualified_subquery" - }; - - String sqlserver_sqldir = gspCommon.BASE_SQL_DIR_PRIVATE + "java/mssql/dbobject/"; - String[] sqlserver_sqlfiles = { - "bigjoin1","shurleyjoin", - "delete1","delete2","delete4","delete5", - "update1","update2","update3","update4", - "createfunction1" - ,"createprocedure1","createtrigger1", - "createview1", - "while1","keyword_not_column_name", - "ogcmethod", - "funcitonOnXMLColumn" - - }; - - String sqldir ; - String[] sqlfiles ; - int files_count = 0; - - public String showModeFile; - - - String[] foundTables = new String[1000]; - String[] foundColumns = new String[1000]; - int foundTableCount = 0; - int foundColumnsCount = 0; - - EDbVendor dbvendor; - getObject(EDbVendor db){ - this.dbvendor = db; - if (db == EDbVendor.dbvoracle){ - sqldir = oracle_sqldir; - sqlfiles = oracle_sqlfiles; - files_count = sqlfiles.length; - }else{ - sqldir = sqlserver_sqldir; - sqlfiles = sqlserver_sqlfiles; - files_count = sqlfiles.length; - } - } - - void getDesiredTablesColumns(String sqlfile, String[] pTables,String[] pColumns){ - String line; - desiredTableCount = 0; - desiredColumnCount = 0; - boolean isTable = false,isColumn = false; - try{ - BufferedReader br = new BufferedReader( new FileReader(sqlfile) ); - - try{ - while( (line = br.readLine()) != null){ - - if (line.toLowerCase().indexOf("tables:") >= 0 ) { - isTable = true; - isColumn =false; - continue; - } - - if (line.toLowerCase().indexOf("fields:") >= 0 ) { - isTable = false; - isColumn =true; - continue; - } - - if (line.toLowerCase().indexOf("functions:") >= 0 ) { - isTable = false; - isColumn =false; - continue; - } - - if (line.toLowerCase().indexOf("schema:") >= 0 ) { - isTable = false; - isColumn =false; - continue; - } - - - if (isTable){ - pTables[desiredTableCount] = line.trim(); - desiredTableCount++; - } - - if (isColumn){ - pColumns[desiredColumnCount] = line.trim(); - desiredColumnCount++; - } - } - br.close(); - }catch(IOException e){ - System.out.println(e.toString()); - } - - }catch(FileNotFoundException e){ - System.out.println(e.toString()); - } - - } - - public void setSqlEnv(TSQLEnv sqlEnv) { - this.sqlEnv = sqlEnv; - } - - private TSQLEnv sqlEnv = null; - - boolean run(int pmode){ - // 1: compare, compare found table/column with desired results in a file - // 2: show result, don't compare - boolean retb = true; - - TGSqlParser sqlparser = new TGSqlParser(this.dbvendor); - if (sqlEnv != null){ - sqlparser.setSqlEnv(sqlEnv); - } - if (pmode == showMode){ - files_count = 1; - sqlparser.setMetaDatabase(new metaDB()); - } - for (int k=0;k= 0 ) { + isTable = true; + isColumn =false; + continue; + } + + if (line.toLowerCase().indexOf("fields:") >= 0 ) { + isTable = false; + isColumn =true; + continue; + } + + if (line.toLowerCase().indexOf("functions:") >= 0 ) { + isTable = false; + isColumn =false; + continue; + } + + if (line.toLowerCase().indexOf("schema:") >= 0 ) { + isTable = false; + isColumn =false; + continue; + } + + + if (isTable){ + pTables[desiredTableCount] = line.trim(); + desiredTableCount++; + } + + if (isColumn){ + pColumns[desiredColumnCount] = line.trim(); + desiredColumnCount++; + } + } + br.close(); + }catch(IOException e){ + System.out.println(e.toString()); + } + + }catch(FileNotFoundException e){ + System.out.println(e.toString()); + } + + } + + public void setSqlEnv(TSQLEnv sqlEnv) { + this.sqlEnv = sqlEnv; + } + + private TSQLEnv sqlEnv = null; + + boolean run(int pmode){ + // 1: compare, compare found table/column with desired results in a file + // 2: show result, don't compare + boolean retb = true; + + TGSqlParser sqlparser = new TGSqlParser(this.dbvendor); + if (sqlEnv != null){ + sqlparser.setSqlEnv(sqlEnv); + } + if (pmode == showMode){ + files_count = 1; + sqlparser.setMetaDatabase(new metaDB()); + } + for (int k=0;k= 0 ) { - isTable = true; - isColumn =false; - sb.append(line+newline); - continue; - } - - if (line.toLowerCase().indexOf("fields:") >= 0 ) { - isTable = false; - isColumn =true; - sb.append(newline+line+newline); - continue; - } - - if (line.toLowerCase().indexOf("functions:") >= 0 ) { - isTable = false; - isColumn =false; - break; - } - - if (line.toLowerCase().indexOf("database:") >= 0 ) { - isTable = false; - isColumn =false; - break; - } - - if (line.toLowerCase().indexOf("schema:") >= 0 ) { - isTable = false; - isColumn =false; - break; - } - - - if (isTable){ - sb.append(line+newline); - } - - if (isColumn){ - sb.append(line+newline); - } - } - br.close(); - }catch(IOException e){ - System.out.println(e.toString()); - } - - }catch(FileNotFoundException e){ - System.out.println(e.toString()); - } - - return sb.toString(); - } - - static void doTest(EDbVendor pdbvendor, String pDir){ - TGetTableColumn getTableColumn = new TGetTableColumn(pdbvendor); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - //getTableColumn.runFile(sqlfile); - SqlFileList sqlfiles = new SqlFileList(pDir,true); - String strDesired,strActual; - for(int k=0;k < sqlfiles.sqlfiles.size();k++){ - // System.out.println(sqlfiles.sqlfiles.get(k).toString()); - String sqlFile = sqlfiles.sqlfiles.get(k).toString(); - String desiredFile; - if (TBaseType.ENABLE_RESOLVER) { - desiredFile = sqlfiles.sqlfiles.get(k).toString().replace(".sql", ".newAlgorithm.outj"); - File f = new File(desiredFile); - if (!f.exists()) { - desiredFile = sqlfiles.sqlfiles.get(k).toString().replace(".sql", ".outj"); - } - }else{ - desiredFile = sqlfiles.sqlfiles.get(k).toString().replace(".sql", ".outj"); - } - - File f2 = new File(desiredFile); - if (!f2.exists()) { - // System.out.println("File not exists: "+desiredFile); - desiredFile = sqlfiles.sqlfiles.get(k).toString().replace(".sql", ".out"); - } - // System.out.println("Use desired file: "+desiredFile); - - getTableColumn.runFile(sqlFile); - strDesired = getDesiredTablesColumns(desiredFile); - strActual = getTableColumn.outList.toString(); - assertTrue("\nfile:"+sqlFile+"\n\ndesired:\n"+strDesired+"\nActual:\n"+strActual - ,strDesired.equalsIgnoreCase(strActual)); - //System.out.println(getTableColumn.outList.toString()); - //System.out.println(sqlfiles.sqlfiles.get(k).toString()); - //System.out.println(sqlfiles.sqlfiles.get(k).toString().replace(".sql",".out")); - } - } - - public static void testPlsqlVar(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - //getTableColumn.setMetaDatabase(new myMetaDB()); - getTableColumn.setSqlEnv(new TOracleServerEnv()); - - getTableColumn.runText("<

>\n" + - "DECLARE\n" + - "ename VARCHAR2(10) := 'KING';\n" + - "BEGIN\n" + - "DELETE FROM emp WHERE ename = main.ename;\n" + - "end;"); - String strActual = getTableColumn.outList.toString(); -// System.out.println("<
>\n" + -// "DECLARE\n" + -// "ename VARCHAR2(10) := 'KING';\n" + -// "BEGIN\n" + -// "DELETE FROM emp WHERE ename = main.ename;\n" + -// "end;"); - // System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("Tables:\n" + - "emp\n" + - "\nFields:\n" + - "emp.ename")); - - } - - public static void testOracle(){ - doTest(EDbVendor.dbvoracle, gspCommon.BASE_SQL_DIR_PRIVATE + "java/oracle/dbobject/"); - doTest(EDbVendor.dbvoracle,gspCommon.BASE_SQL_DIR_PRIVATE + "fetchdbobject\\oracle\\"); - } - - public static void testSqlServer(){ - doTest(EDbVendor.dbvmssql,gspCommon.BASE_SQL_DIR_PRIVATE + "java/mssql/dbobject/"); - doTest(EDbVendor.dbvmssql,gspCommon.BASE_SQL_DIR_PRIVATE + "fetchdbobject\\mssql\\bydbobject\\"); - } - - public static void testTableEffectDelete(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.runText("delete from employee\n" + - "where department_id = \n" + - "(select department_id\n" + - "from departments\n" + - "where department_name like '%Public%');"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstdelete\n" + - " employee(tetDelete)\n" + - " department_id\n" + - " sstselect\n" + - " departments(tetSelect)\n" + - " department_id\n" + - " department_name")); - } - - public static void testColumnLocationDelete(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.showColumnLocation = true; - getTableColumn.runText("delete from employee\n" + - "where department_id = \n" + - "(select department_id\n" + - "from departments\n" + - "where department_name like '%Public%');"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstdelete\n" + - " employee(tetDelete)\n" + - " department_id(where)\n" + - " sstselect\n" + - " departments(tetSelect)\n" + - " department_id(selectList)\n" + - " department_name(where)")); - } - - public static void testTableEffectInsert1(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.runText("insert into departments(department_id,department_name,manager_id,location_id)\n" + - "values(70,'Public Relations',100,1900);"); - - String strActual = getTableColumn.getInfos().toString(); - // System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstinsert\n" + - " departments(tetInsert)\n" + - " department_id\n" + - " department_name\n" + - " manager_id\n" + - " location_id")); - } - - public static void testColumnLocationInsert1(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.showColumnLocation = true; - getTableColumn.runText("insert into departments(department_id,department_name,manager_id,location_id)\n" + - "values(70,'Public Relations',100,1900);"); - - String strActual = getTableColumn.getInfos().toString(); - // System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstinsert\n" + - " departments(tetInsert)\n" + - " department_id(insertColumn)\n" + - " department_name(insertColumn)\n" + - " manager_id(insertColumn)\n" + - " location_id(insertColumn)")); - } - - public static void testTableEffectInsert2(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.runText("insert into sales_reps(id,name,salary,commission_pct)\n" + - "select employee_id,last_name,salary,commission_pc\n" + - "from employees\n" + - "where job_id like '%REP%';"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstinsert\n" + - " sales_reps(tetInsert)\n" + - " id\n" + - " name\n" + - " salary\n" + - " commission_pct\n" + - " sstselect\n" + - " employees(tetSelect)\n" + - " employee_id\n" + - " last_name\n" + - " salary\n" + - " commission_pc\n" + - " job_id")); - } - - public static void testColumnLocationInsert2(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.showColumnLocation = true; - getTableColumn.runText("insert into sales_reps(id,name,salary,commission_pct)\n" + - "select employee_id,last_name,salary,commission_pc\n" + - "from employees\n" + - "where job_id like '%REP%';"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstinsert\n" + - " sales_reps(tetInsert)\n" + - " id(insertColumn)\n" + - " name(insertColumn)\n" + - " salary(insertColumn)\n" + - " commission_pct(insertColumn)\n" + - " sstselect\n" + - " employees(tetSelect)\n" + - " employee_id(selectList)\n" + - " last_name(selectList)\n" + - " salary(selectList)\n" + - " commission_pc(selectList)\n" + - " job_id(where)")); - } - - public static void testTableEffectUpdate(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.runText("update employees e\n" + - "set department_name =\n" + - "(select department_name from deparments d\n" + - "where e.department_id = d.department_id);"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstupdate\n" + - " employees(tetUpdate)\n" + - " department_name\n" + - " department_id\n" + - " sstselect\n" + - " deparments(tetSelect)\n" + - " department_name\n" + - " department_id")); - } - - public static void testColumnLocationUpdate(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.showColumnLocation = true; - getTableColumn.runText("update employees e\n" + - "set department_name =\n" + - "(select department_name from deparments d\n" + - "where e.department_id = d.department_id);"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstupdate\n" + - " employees(tetUpdate)\n" + - " department_name(set)\n" + - " department_id(where)\n" + - " sstselect\n" + - " deparments(tetSelect)\n" + - " department_name(selectList)\n" + - " department_id(where)")); - } - - public static void testTableEffectMerge(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - String query = "MERGE Production.UnitMeasure AS target\n" + - " USING (SELECT @UnitMeasureCode, @Name) AS source (UnitMeasureCode, Name)\n" + - " ON (target.UnitMeasureCode = source.UnitMeasureCode)\n" + - " WHEN MATCHED THEN \n" + - " UPDATE SET Name = source.Name\n" + - "\tWHEN NOT MATCHED THEN\t\n" + - "\t INSERT (UnitMeasureCode, Name)\n" + - "\t VALUES (source.UnitMeasureCode, source.Name)\n" + - "\t OUTPUT deleted.*, $action, inserted.* INTO #MyTempTable;"; - - //System.out.println(query); - getTableColumn.runText(query); - - String strActual = getTableColumn.getInfos().toString(); - // System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstmerge\n" + - " Production.UnitMeasure(tetMerge)\n" + - " UnitMeasureCode\n" + - " Name\n" + - " UnitMeasureCode\n" + - " Name\n" + - " *\n" + - " *\n" + - " (subquery, alias:source)\n" + - " UnitMeasureCode\n" + - " Name\n" + - " #MyTempTable(tetOutput)\n" + - " sstselect")); - } - - public static void testColumnLocationMerge(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.showColumnLocation = true; - getTableColumn.runText("MERGE Production.UnitMeasure AS target\n" + - " USING (SELECT @UnitMeasureCode, @Name) AS source (UnitMeasureCode, Name)\n" + - " ON (target.UnitMeasureCode = source.UnitMeasureCode)\n" + - " WHEN MATCHED THEN \n" + - " UPDATE SET Name = source.Name\n" + - "\tWHEN NOT MATCHED THEN\t\n" + - "\t INSERT (UnitMeasureCode, Name)\n" + - "\t VALUES (source.UnitMeasureCode, source.Name)\n" + - "\t OUTPUT deleted.*, $action, inserted.* INTO #MyTempTable;"); - - String strActual = getTableColumn.getInfos().toString(); - //System.out.println(strActual); - String requiredStr = "sstmerge\n" + - " Production.UnitMeasure(tetMerge)\n" + - " UnitMeasureCode(joinCondition)\n" + - " Name(set)\n" + - " UnitMeasureCode(insertColumn)\n" + - " Name(insertColumn)\n" + - " *(output)\n" + - " *(output)\n" + - " (subquery, alias:source)\n" + - " UnitMeasureCode(joinCondition)\n" + - " Name(setValue)\n" + - " #MyTempTable(tetOutput)\n" + - " sstselect"; - // System.out.println("Required:\n"+requiredStr+"\n\nActual:\n"+strActual); - assertTrue(strActual.trim().equalsIgnoreCase(requiredStr)); - } - - public static void testTableEffectCreateTable1(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.runText("CREATE TABLE employees_demo\n" + - " ( employee_id NUMBER(6)\n" + - " , first_name VARCHAR2(20)\n" + - "\t, SalesPersonID int NULL REFERENCES SalesPerson(SalesPersonID)\n" + - "\t)"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstcreatetable\n" + - " employees_demo(tetCreate)\n" + - " employee_id\n" + - " first_name\n" + - " SalesPersonID\n" + - " SalesPerson(tetConstraintReference)\n" + - " SalesPersonID")); - } - - public static void testColumnLocationCreateTable1(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.showColumnLocation = true; - getTableColumn.runText("CREATE TABLE employees_demo\n" + - " ( employee_id NUMBER(6)\n" + - " , first_name VARCHAR2(20)\n" + - "\t, SalesPersonID int NULL REFERENCES SalesPerson(SalesPersonID)\n" + - "\t)"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstcreatetable\n" + - " employees_demo(tetCreate)\n" + - " employee_id(createTable)\n" + - " first_name(createTable)\n" + - " SalesPersonID(createTable)\n" + - " SalesPerson(tetConstraintReference)\n" + - " SalesPersonID(constraintRef)")); - } - - - public static void testTableEffectCreateTable2(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.runText("CREATE TABLE employees_demo\n" + - " ( ProductID NUMBER(6)\n" + - " , SpecialOfferID VARCHAR2(20)\n" + - "\t ,CONSTRAINT FK_SpecialOfferProduct_SalesOrderDetail FOREIGN KEY\n" + - " (ProductID, SpecialOfferID)\n" + - "REFERENCES SpecialOfferProduct (ProductID, SpecialOfferID)\n" + - "\t)"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstcreatetable\n" + - " employees_demo(tetCreate)\n" + - " ProductID\n" + - " SpecialOfferID\n" + - " SpecialOfferProduct(tetConstraintReference)\n" + - " ProductID\n" + - " SpecialOfferID")); - } - - public static void testColumnLocationCreateTable2(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.showColumnLocation = true; - getTableColumn.runText("CREATE TABLE employees_demo\n" + - " ( ProductID NUMBER(6)\n" + - " , SpecialOfferID VARCHAR2(20)\n" + - "\t ,CONSTRAINT FK_SpecialOfferProduct_SalesOrderDetail FOREIGN KEY\n" + - " (ProductID, SpecialOfferID)\n" + - "REFERENCES SpecialOfferProduct (ProductID, SpecialOfferID)\n" + - "\t)"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstcreatetable\n" + - " employees_demo(tetCreate)\n" + - " ProductID(createTable)\n" + - " SpecialOfferID(createTable)\n" + - " SpecialOfferProduct(tetConstraintReference)\n" + - " ProductID(constraintRef)\n" + - " SpecialOfferID(constraintRef)")); - } - - - public static void testColumnLocationJoin(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.showColumnLocation = true; - getTableColumn.runText("select e.employee_id,l.city,d.department_name\n" + - "from employee e\n" + - "join department d\n" + - "on d.department_id = e.department_id\n" + - "join locations l\n" + - "on d.location_id = l.location_id;"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstselect\n" + - " employee(tetSelect)\n" + - " department_id(joinCondition)\n" + - " employee_id(selectList)\n" + - " department(tetSelect)\n" + - " department_id(joinCondition)\n" + - " location_id(joinCondition)\n" + - " department_name(selectList)\n" + - " locations(tetSelect)\n" + - " location_id(joinCondition)\n" + - " city(selectList)")); - } - - public static void testColumnLocationSelect(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showDetail = false; - getTableColumn.showTableEffect = true; - getTableColumn.showColumnLocation = true; - getTableColumn.runText("select department_id,avg(salary)\n" + - "from employees\n" + - "where location_id = 1000\n" + - "group by department_id\n" + - "having avg(salary) > 8000\n" + - "order by sum(salary);"); - - String strActual = getTableColumn.getInfos().toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("sstselect\n" + - " employees(tetSelect)\n" + - " department_id(selectList)\n" + - " salary(selectList)\n" + - " location_id(where)\n" + - " department_id(groupby)\n" + - " salary(having)\n" + - " salary(orderby)")); - } - - -} +package gudusoft.gsqlparser.gettablecolumnTest; +/* + * Date: 15-4-23 + */ + +import demos.gettablecolumns.TGetTableColumn; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.IMetaDatabase; +import gudusoft.gsqlparser.TBaseType; +import gudusoft.gsqlparser.sqlenv.TSQLCatalog; +import gudusoft.gsqlparser.sqlenv.TSQLEnv; +import gudusoft.gsqlparser.sqlenv.TSQLSchema; +import gudusoft.gsqlparser.sqlenv.TSQLTable; +import junit.framework.TestCase; +import gudusoft.gsqlparser.commonTest.SqlFileList; +import gudusoft.gsqlparser.commonTest.gspCommon; + +import java.io.*; + + +class TOracleServerEnv extends TSQLEnv { + + public TOracleServerEnv(){ + super(EDbVendor.dbvoracle); + initSQLEnv(); + } + + @Override + public void initSQLEnv() { + + // add a new database: db + TSQLCatalog sqlCatalog = createSQLCatalog("db"); + // add a new schema: default + TSQLSchema defaultSchema = sqlCatalog.createSchema("default"); + //add a new table: emp + TSQLTable empTable = defaultSchema.createTable("emp"); + empTable.addColumn("ename"); + + // add a new schema: DW + TSQLSchema dwSchema = sqlCatalog.createSchema("DW"); + //add a new table: ImSysInfo_BC + TSQLTable bcTable = dwSchema.createTable("ImSysInfo_BC"); + bcTable.addColumn("ACCT_ID"); + bcTable.addColumn("SystemOfRec"); + bcTable.addColumn("OpeningDate"); + + //add a new table: AcctInfo_PT + TSQLTable ptTab = dwSchema.createTable("AcctInfo_PT"); + ptTab.addColumn("SystemOfRec"); + ptTab.addColumn("OfficerCode"); + + + } +} + +class myMetaDB implements IMetaDatabase { + + String columns[][] = { + {"server","db","","emp","ename"}, + {"server","db","DW","ImSysInfo_BC","ACCT_ID"}, + {"server","db","DW","AcctInfo_PT","SystemOfRec"}, + {"server","db","DW","ImSysInfo_BC","SystemOfRec"}, + {"server","db","DW","AcctInfo_PT","OfficerCode"}, + {"server","db","DW","ImSysInfo_BC","OpeningDate"}, + }; + + public boolean checkColumn(String server, String database,String schema, String table, String column){ + boolean bServer,bDatabase,bSchema,bTable,bColumn,bRet = false; + for (int i=0; i= 0 ) { + isTable = true; + isColumn =false; + sb.append(line+newline); + continue; + } + + if (line.toLowerCase().indexOf("fields:") >= 0 ) { + isTable = false; + isColumn =true; + sb.append(newline+line+newline); + continue; + } + + if (line.toLowerCase().indexOf("functions:") >= 0 ) { + isTable = false; + isColumn =false; + break; + } + + if (line.toLowerCase().indexOf("database:") >= 0 ) { + isTable = false; + isColumn =false; + break; + } + + if (line.toLowerCase().indexOf("schema:") >= 0 ) { + isTable = false; + isColumn =false; + break; + } + + + if (isTable){ + sb.append(line+newline); + } + + if (isColumn){ + sb.append(line+newline); + } + } + br.close(); + }catch(IOException e){ + System.out.println(e.toString()); + } + + }catch(FileNotFoundException e){ + System.out.println(e.toString()); + } + + return sb.toString(); + } + + static void doTest(EDbVendor pdbvendor, String pDir){ + TGetTableColumn getTableColumn = new TGetTableColumn(pdbvendor); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + //getTableColumn.runFile(sqlfile); + SqlFileList sqlfiles = new SqlFileList(pDir,true); + String strDesired,strActual; + for(int k=0;k < sqlfiles.sqlfiles.size();k++){ + // System.out.println(sqlfiles.sqlfiles.get(k).toString()); + String sqlFile = sqlfiles.sqlfiles.get(k).toString(); + String desiredFile; + if (TBaseType.ENABLE_RESOLVER) { + desiredFile = sqlfiles.sqlfiles.get(k).toString().replace(".sql", ".newAlgorithm.outj"); + File f = new File(desiredFile); + if (!f.exists()) { + desiredFile = sqlfiles.sqlfiles.get(k).toString().replace(".sql", ".outj"); + } + }else{ + desiredFile = sqlfiles.sqlfiles.get(k).toString().replace(".sql", ".outj"); + } + + File f2 = new File(desiredFile); + if (!f2.exists()) { + // System.out.println("File not exists: "+desiredFile); + desiredFile = sqlfiles.sqlfiles.get(k).toString().replace(".sql", ".out"); + } + // System.out.println("Use desired file: "+desiredFile); + + getTableColumn.runFile(sqlFile); + strDesired = getDesiredTablesColumns(desiredFile); + strActual = getTableColumn.outList.toString(); + assertTrue("\nfile:"+sqlFile+"\n\ndesired:\n"+strDesired+"\nActual:\n"+strActual + ,strDesired.equalsIgnoreCase(strActual)); + //System.out.println(getTableColumn.outList.toString()); + //System.out.println(sqlfiles.sqlfiles.get(k).toString()); + //System.out.println(sqlfiles.sqlfiles.get(k).toString().replace(".sql",".out")); + } + } + + public static void testPlsqlVar(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + //getTableColumn.setMetaDatabase(new myMetaDB()); + getTableColumn.setSqlEnv(new TOracleServerEnv()); + + getTableColumn.runText("<
>\n" + + "DECLARE\n" + + "ename VARCHAR2(10) := 'KING';\n" + + "BEGIN\n" + + "DELETE FROM emp WHERE ename = main.ename;\n" + + "end;"); + String strActual = getTableColumn.outList.toString(); +// System.out.println("<
>\n" + +// "DECLARE\n" + +// "ename VARCHAR2(10) := 'KING';\n" + +// "BEGIN\n" + +// "DELETE FROM emp WHERE ename = main.ename;\n" + +// "end;"); + // System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("Tables:\n" + + "emp\n" + + "\nFields:\n" + + "emp.ename")); + + } + + public static void testOracle(){ + doTest(EDbVendor.dbvoracle, gspCommon.BASE_SQL_DIR_PRIVATE + "java/oracle/dbobject/"); + doTest(EDbVendor.dbvoracle,gspCommon.BASE_SQL_DIR_PRIVATE + "fetchdbobject\\oracle\\"); + } + + public static void testSqlServer(){ + doTest(EDbVendor.dbvmssql,gspCommon.BASE_SQL_DIR_PRIVATE + "java/mssql/dbobject/"); + doTest(EDbVendor.dbvmssql,gspCommon.BASE_SQL_DIR_PRIVATE + "fetchdbobject\\mssql\\bydbobject\\"); + } + + public static void testTableEffectDelete(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.runText("delete from employee\n" + + "where department_id = \n" + + "(select department_id\n" + + "from departments\n" + + "where department_name like '%Public%');"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstdelete\n" + + " employee(tetDelete)\n" + + " department_id\n" + + " sstselect\n" + + " departments(tetSelect)\n" + + " department_id\n" + + " department_name")); + } + + public static void testColumnLocationDelete(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.showColumnLocation = true; + getTableColumn.runText("delete from employee\n" + + "where department_id = \n" + + "(select department_id\n" + + "from departments\n" + + "where department_name like '%Public%');"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstdelete\n" + + " employee(tetDelete)\n" + + " department_id(where)\n" + + " sstselect\n" + + " departments(tetSelect)\n" + + " department_id(selectList)\n" + + " department_name(where)")); + } + + public static void testTableEffectInsert1(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.runText("insert into departments(department_id,department_name,manager_id,location_id)\n" + + "values(70,'Public Relations',100,1900);"); + + String strActual = getTableColumn.getInfos().toString(); + // System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstinsert\n" + + " departments(tetInsert)\n" + + " department_id\n" + + " department_name\n" + + " manager_id\n" + + " location_id")); + } + + public static void testColumnLocationInsert1(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.showColumnLocation = true; + getTableColumn.runText("insert into departments(department_id,department_name,manager_id,location_id)\n" + + "values(70,'Public Relations',100,1900);"); + + String strActual = getTableColumn.getInfos().toString(); + // System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstinsert\n" + + " departments(tetInsert)\n" + + " department_id(insertColumn)\n" + + " department_name(insertColumn)\n" + + " manager_id(insertColumn)\n" + + " location_id(insertColumn)")); + } + + public static void testTableEffectInsert2(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.runText("insert into sales_reps(id,name,salary,commission_pct)\n" + + "select employee_id,last_name,salary,commission_pc\n" + + "from employees\n" + + "where job_id like '%REP%';"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstinsert\n" + + " sales_reps(tetInsert)\n" + + " id\n" + + " name\n" + + " salary\n" + + " commission_pct\n" + + " sstselect\n" + + " employees(tetSelect)\n" + + " employee_id\n" + + " last_name\n" + + " salary\n" + + " commission_pc\n" + + " job_id")); + } + + public static void testColumnLocationInsert2(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.showColumnLocation = true; + getTableColumn.runText("insert into sales_reps(id,name,salary,commission_pct)\n" + + "select employee_id,last_name,salary,commission_pc\n" + + "from employees\n" + + "where job_id like '%REP%';"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstinsert\n" + + " sales_reps(tetInsert)\n" + + " id(insertColumn)\n" + + " name(insertColumn)\n" + + " salary(insertColumn)\n" + + " commission_pct(insertColumn)\n" + + " sstselect\n" + + " employees(tetSelect)\n" + + " employee_id(selectList)\n" + + " last_name(selectList)\n" + + " salary(selectList)\n" + + " commission_pc(selectList)\n" + + " job_id(where)")); + } + + public static void testTableEffectUpdate(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.runText("update employees e\n" + + "set department_name =\n" + + "(select department_name from deparments d\n" + + "where e.department_id = d.department_id);"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstupdate\n" + + " employees(tetUpdate)\n" + + " department_name\n" + + " department_id\n" + + " sstselect\n" + + " deparments(tetSelect)\n" + + " department_name\n" + + " department_id")); + } + + public static void testColumnLocationUpdate(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.showColumnLocation = true; + getTableColumn.runText("update employees e\n" + + "set department_name =\n" + + "(select department_name from deparments d\n" + + "where e.department_id = d.department_id);"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstupdate\n" + + " employees(tetUpdate)\n" + + " department_name(set)\n" + + " department_id(where)\n" + + " sstselect\n" + + " deparments(tetSelect)\n" + + " department_name(selectList)\n" + + " department_id(where)")); + } + + public static void testTableEffectMerge(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + String query = "MERGE Production.UnitMeasure AS target\n" + + " USING (SELECT @UnitMeasureCode, @Name) AS source (UnitMeasureCode, Name)\n" + + " ON (target.UnitMeasureCode = source.UnitMeasureCode)\n" + + " WHEN MATCHED THEN \n" + + " UPDATE SET Name = source.Name\n" + + "\tWHEN NOT MATCHED THEN\t\n" + + "\t INSERT (UnitMeasureCode, Name)\n" + + "\t VALUES (source.UnitMeasureCode, source.Name)\n" + + "\t OUTPUT deleted.*, $action, inserted.* INTO #MyTempTable;"; + + //System.out.println(query); + getTableColumn.runText(query); + + String strActual = getTableColumn.getInfos().toString(); + // System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstmerge\n" + + " Production.UnitMeasure(tetMerge)\n" + + " UnitMeasureCode\n" + + " Name\n" + + " UnitMeasureCode\n" + + " Name\n" + + " *\n" + + " *\n" + + " (subquery, alias:source)\n" + + " UnitMeasureCode\n" + + " Name\n" + + " #MyTempTable(tetOutput)\n" + + " sstselect")); + } + + public static void testColumnLocationMerge(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.showColumnLocation = true; + getTableColumn.runText("MERGE Production.UnitMeasure AS target\n" + + " USING (SELECT @UnitMeasureCode, @Name) AS source (UnitMeasureCode, Name)\n" + + " ON (target.UnitMeasureCode = source.UnitMeasureCode)\n" + + " WHEN MATCHED THEN \n" + + " UPDATE SET Name = source.Name\n" + + "\tWHEN NOT MATCHED THEN\t\n" + + "\t INSERT (UnitMeasureCode, Name)\n" + + "\t VALUES (source.UnitMeasureCode, source.Name)\n" + + "\t OUTPUT deleted.*, $action, inserted.* INTO #MyTempTable;"); + + String strActual = getTableColumn.getInfos().toString(); + //System.out.println(strActual); + String requiredStr = "sstmerge\n" + + " Production.UnitMeasure(tetMerge)\n" + + " UnitMeasureCode(joinCondition)\n" + + " Name(set)\n" + + " UnitMeasureCode(insertColumn)\n" + + " Name(insertColumn)\n" + + " *(output)\n" + + " *(output)\n" + + " (subquery, alias:source)\n" + + " UnitMeasureCode(joinCondition)\n" + + " Name(setValue)\n" + + " #MyTempTable(tetOutput)\n" + + " sstselect"; + // System.out.println("Required:\n"+requiredStr+"\n\nActual:\n"+strActual); + assertTrue(strActual.trim().equalsIgnoreCase(requiredStr)); + } + + public static void testTableEffectCreateTable1(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.runText("CREATE TABLE employees_demo\n" + + " ( employee_id NUMBER(6)\n" + + " , first_name VARCHAR2(20)\n" + + "\t, SalesPersonID int NULL REFERENCES SalesPerson(SalesPersonID)\n" + + "\t)"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstcreatetable\n" + + " employees_demo(tetCreate)\n" + + " employee_id\n" + + " first_name\n" + + " SalesPersonID\n" + + " SalesPerson(tetConstraintReference)\n" + + " SalesPersonID")); + } + + public static void testColumnLocationCreateTable1(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.showColumnLocation = true; + getTableColumn.runText("CREATE TABLE employees_demo\n" + + " ( employee_id NUMBER(6)\n" + + " , first_name VARCHAR2(20)\n" + + "\t, SalesPersonID int NULL REFERENCES SalesPerson(SalesPersonID)\n" + + "\t)"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstcreatetable\n" + + " employees_demo(tetCreate)\n" + + " employee_id(createTable)\n" + + " first_name(createTable)\n" + + " SalesPersonID(createTable)\n" + + " SalesPerson(tetConstraintReference)\n" + + " SalesPersonID(constraintRef)")); + } + + + public static void testTableEffectCreateTable2(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.runText("CREATE TABLE employees_demo\n" + + " ( ProductID NUMBER(6)\n" + + " , SpecialOfferID VARCHAR2(20)\n" + + "\t ,CONSTRAINT FK_SpecialOfferProduct_SalesOrderDetail FOREIGN KEY\n" + + " (ProductID, SpecialOfferID)\n" + + "REFERENCES SpecialOfferProduct (ProductID, SpecialOfferID)\n" + + "\t)"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstcreatetable\n" + + " employees_demo(tetCreate)\n" + + " ProductID\n" + + " SpecialOfferID\n" + + " SpecialOfferProduct(tetConstraintReference)\n" + + " ProductID\n" + + " SpecialOfferID")); + } + + public static void testColumnLocationCreateTable2(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.showColumnLocation = true; + getTableColumn.runText("CREATE TABLE employees_demo\n" + + " ( ProductID NUMBER(6)\n" + + " , SpecialOfferID VARCHAR2(20)\n" + + "\t ,CONSTRAINT FK_SpecialOfferProduct_SalesOrderDetail FOREIGN KEY\n" + + " (ProductID, SpecialOfferID)\n" + + "REFERENCES SpecialOfferProduct (ProductID, SpecialOfferID)\n" + + "\t)"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstcreatetable\n" + + " employees_demo(tetCreate)\n" + + " ProductID(createTable)\n" + + " SpecialOfferID(createTable)\n" + + " SpecialOfferProduct(tetConstraintReference)\n" + + " ProductID(constraintRef)\n" + + " SpecialOfferID(constraintRef)")); + } + + + public static void testColumnLocationJoin(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.showColumnLocation = true; + getTableColumn.runText("select e.employee_id,l.city,d.department_name\n" + + "from employee e\n" + + "join department d\n" + + "on d.department_id = e.department_id\n" + + "join locations l\n" + + "on d.location_id = l.location_id;"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstselect\n" + + " employee(tetSelect)\n" + + " department_id(joinCondition)\n" + + " employee_id(selectList)\n" + + " department(tetSelect)\n" + + " department_id(joinCondition)\n" + + " location_id(joinCondition)\n" + + " department_name(selectList)\n" + + " locations(tetSelect)\n" + + " location_id(joinCondition)\n" + + " city(selectList)")); + } + + public static void testColumnLocationSelect(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showDetail = false; + getTableColumn.showTableEffect = true; + getTableColumn.showColumnLocation = true; + getTableColumn.runText("select department_id,avg(salary)\n" + + "from employees\n" + + "where location_id = 1000\n" + + "group by department_id\n" + + "having avg(salary) > 8000\n" + + "order by sum(salary);"); + + String strActual = getTableColumn.getInfos().toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("sstselect\n" + + " employees(tetSelect)\n" + + " department_id(selectList)\n" + + " salary(selectList)\n" + + " location_id(where)\n" + + " department_id(groupby)\n" + + " salary(having)\n" + + " salary(orderby)")); + } + + +} diff --git a/src/test/java/gettablecolumn/testOracle.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testOracle.java similarity index 97% rename from src/test/java/gettablecolumn/testOracle.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testOracle.java index 5bd3e78f..8480424f 100644 --- a/src/test/java/gettablecolumn/testOracle.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testOracle.java @@ -1,183 +1,183 @@ -package gettablecolumn; - - -import demos.gettablecolumns.TGetTableColumn; -import gudusoft.gsqlparser.EDbVendor; -import junit.framework.TestCase; - -public class testOracle extends TestCase { - - static void doTest(String inputQuery, String desireResult){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.showTableEffect = false; - getTableColumn.showColumnLocation = false; - getTableColumn.showTreeStructure = false; - getTableColumn.listStarColumn = true; - getTableColumn.runText(inputQuery); - // System.out.println(getTableColumn.outList.toString().trim()); - assertTrue(getTableColumn.outList.toString().trim().equalsIgnoreCase(desireResult)); - } - - public static void testCalculatedColumnWithStarColumn() { - doTest("SELECT \n" + - " tx_date_yyyymmdd AS DATA_DT --数据日期\n" + - " ,'zfb' as OPEN_CHAN_ORG_CD\n" + - "from \n" + - " (select *\n" + - " , START_DT - to_date(cast(intbegindate as varchar),'YYYYMMDD') + 1 as QIXIAN\n" + - " from dwodata.kcb_run_bj_contract_sz t1\n" + - ") t1\n" + - "where T1.QIXIAN > 0", - "Tables:\n" + - "dwodata.kcb_run_bj_contract_sz\n" + - "\n" + - "Fields:\n" + - "dwodata.kcb_run_bj_contract_sz.*\n" + - "dwodata.kcb_run_bj_contract_sz.intbegindate\n" + - "dwodata.kcb_run_bj_contract_sz.START_DT\n" + - "dwodata.kcb_run_bj_contract_sz.tx_date_yyyymmdd"); - } - - public static void testJsonObject() { - doTest("SELECT JSON_OBJECT (\n" + - " KEY 'deptno' IS d.department_id2,\n" + - " KEY 'deptname' IS d.department_name \n" + - " ) \"Department Objects\"\n" + - " FROM departments d\n" + - " ORDER BY d.department_id;", - "Tables:\n" + - "departments\n" + - "\n" + - "Fields:\n" + - "departments.department_id\n" + - "departments.department_id2\n" + - "departments.department_name"); - } - - public static void testSubqueryWithSameColumn() { - doTest("SELECT A.PROJECT_ID\n" + - " , A.SQL_AUTO_PERF_CHECK_ID\n" + - " FROM SQL_AUTO_PERF_CHK A\n" + - " , (\n" + - " SELECT PROJECT_ID\n" + - " , SQL_AUTO_PERF_CHECK_ID\n" + - " , DBID\n" + - " , EXEC_SEQ\n" + - " FROM FILTER_PRED_EXEC\n" + - " WHERE ACCESS_PATH_TYPE = 'AUTOINDEX'\n" + - " ) B\n" + - " , (\n" + - " SELECT IDX_AD_NO\n" + - " , DBID\n" + - " , EXEC_SEQ\n" + - " FROM IDX_AD_MST\n" + - " ) C\n" + - " WHERE A.PROJECT_ID = :project_id\n" + - " AND A.PERF_CHECK_EXEC_END_DT IS NOT NULL\n" + - " AND NVL(A.PERF_CHECK_FORCE_CLOSE_YN, 'N') <> 'Y'\n" + - " AND B.PROJECT_ID = A.PROJECT_ID\n" + - " AND B.SQL_AUTO_PERF_CHECK_ID = A.SQL_AUTO_PERF_CHECK_ID\n" + - " AND C.DBID = B.DBID", - "Tables:\n" + - "FILTER_PRED_EXEC\n" + - "IDX_AD_MST\n" + - "SQL_AUTO_PERF_CHK\n" + - "\n" + - "Fields:\n" + - "FILTER_PRED_EXEC.ACCESS_PATH_TYPE\n" + - "FILTER_PRED_EXEC.DBID\n" + - "FILTER_PRED_EXEC.EXEC_SEQ\n" + - "FILTER_PRED_EXEC.PROJECT_ID\n" + - "FILTER_PRED_EXEC.SQL_AUTO_PERF_CHECK_ID\n" + - "IDX_AD_MST.DBID\n" + - "IDX_AD_MST.EXEC_SEQ\n" + - "IDX_AD_MST.IDX_AD_NO\n" + - "SQL_AUTO_PERF_CHK.PERF_CHECK_EXEC_END_DT\n" + - "SQL_AUTO_PERF_CHK.PERF_CHECK_FORCE_CLOSE_YN\n" + - "SQL_AUTO_PERF_CHK.PROJECT_ID\n" + - "SQL_AUTO_PERF_CHK.SQL_AUTO_PERF_CHECK_ID"); - } - - public static void testInsertAll() { - doTest(" INSERT ALL\n" + - " WHEN id <= 3 THEN\n" + - " INTO dest_tab1 VALUES(id, description1)\n" + - " WHEN id BETWEEN 4 AND 7 THEN\n" + - " INTO dest_tab2 VALUES(id, description2)\n" + - " WHEN 1=1 THEN\n" + - " INTO dest_tab3 VALUES(id, description3)\n" + - "SELECT id, description1, description2,description3\n" + - "FROM source_tab;", - "Tables:\n" + - "dest_tab1\n" + - "dest_tab2\n" + - "dest_tab3\n" + - "source_tab\n" + - "\nFields:\n" + - "source_tab.description1\n" + - "source_tab.description2\n" + - "source_tab.description3\n" + - "source_tab.id"); - } - - public static void testColumnInUnionSelect(){ - doTest("Select\n" + - "(select phone_num as ephone1 from emp_phone p where p.emp_num=e.emp_num and primary_flag='Y' \n" + - "\tunion select phone_num as ephone1 from emp_phone1 p where p.emp_num=e.emp_num and primary_flag='Y') ephone,\n" + - "e.emp_attr_no_alias\n" + - "From\n" + - "Department d, employee e", - "Tables:\n" + - "Department\n" + - "emp_phone\n" + - "emp_phone1\n" + - "employee\n" + - "\n" + - "Fields:\n" + - "emp_phone.emp_num\n" + - "emp_phone.phone_num\n" + - "emp_phone.primary_flag\n" + - "emp_phone1.emp_num\n" + - "emp_phone1.phone_num\n" + - "emp_phone1.primary_flag\n" + - "employee.emp_attr_no_alias\n" + - "employee.emp_num"); - } - - public static void testColumnInSelectListOfJoin(){ - doTest("CREATE OR REPLACE FORCE VIEW \"CATALOG_IT\".\"VIEW1\" (\"COL1\", \"COL2\", \"COL3\", \"COL4\") AS\n" + - "SELECT al1.\"COL1\",al1.\"COL2\",al1.\"COL3\", al2.COL1 AS \"COL4\"\n" + - "FROM (SELECT COL1, COL2, COL3 FROM TABLE1 t1) al1\n" + - "JOIN (SELECT COL1, COL2, COL3 FROM TABLE2 t2) al2 ON al2.COL2 = al1.COL2", - "Tables:\n" + - "TABLE1\n" + - "TABLE2\n" + - "\n" + - "Fields:\n" + - "TABLE1.COL1\n" + - "TABLE1.COL2\n" + - "TABLE1.COL3\n" + - "TABLE2.COL1\n" + - "TABLE2.COL2\n" + - "TABLE2.COL3"); - } - - public static void testRowid(){ - doTest("Select t1.ROWID from table1 t1", - "Tables:\n" + - "table1\n" + - "\n" + - "Fields:\n" + - "table1.ROWID"); - } - - public static void testListAgg(){ - doTest("SELECT LISTAGG(DRIVER_NM, ',') WITHIN GROUP (ORDER BY DRIVER_NM) AS DRIVER_NM FROM DRIVER_INFO", - "Tables:\n" + - "DRIVER_INFO\n" + - "\n" + - "Fields:\n" + - "DRIVER_INFO.DRIVER_NM"); - } -} +package gudusoft.gsqlparser.gettablecolumnTest; + + +import demos.gettablecolumns.TGetTableColumn; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testOracle extends TestCase { + + static void doTest(String inputQuery, String desireResult){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.showTableEffect = false; + getTableColumn.showColumnLocation = false; + getTableColumn.showTreeStructure = false; + getTableColumn.listStarColumn = true; + getTableColumn.runText(inputQuery); + // System.out.println(getTableColumn.outList.toString().trim()); + assertTrue(getTableColumn.outList.toString().trim().equalsIgnoreCase(desireResult)); + } + + public static void testCalculatedColumnWithStarColumn() { + doTest("SELECT \n" + + " tx_date_yyyymmdd AS DATA_DT --数据日期\n" + + " ,'zfb' as OPEN_CHAN_ORG_CD\n" + + "from \n" + + " (select *\n" + + " , START_DT - to_date(cast(intbegindate as varchar),'YYYYMMDD') + 1 as QIXIAN\n" + + " from dwodata.kcb_run_bj_contract_sz t1\n" + + ") t1\n" + + "where T1.QIXIAN > 0", + "Tables:\n" + + "dwodata.kcb_run_bj_contract_sz\n" + + "\n" + + "Fields:\n" + + "dwodata.kcb_run_bj_contract_sz.*\n" + + "dwodata.kcb_run_bj_contract_sz.intbegindate\n" + + "dwodata.kcb_run_bj_contract_sz.START_DT\n" + + "dwodata.kcb_run_bj_contract_sz.tx_date_yyyymmdd"); + } + + public static void testJsonObject() { + doTest("SELECT JSON_OBJECT (\n" + + " KEY 'deptno' IS d.department_id2,\n" + + " KEY 'deptname' IS d.department_name \n" + + " ) \"Department Objects\"\n" + + " FROM departments d\n" + + " ORDER BY d.department_id;", + "Tables:\n" + + "departments\n" + + "\n" + + "Fields:\n" + + "departments.department_id\n" + + "departments.department_id2\n" + + "departments.department_name"); + } + + public static void testSubqueryWithSameColumn() { + doTest("SELECT A.PROJECT_ID\n" + + " , A.SQL_AUTO_PERF_CHECK_ID\n" + + " FROM SQL_AUTO_PERF_CHK A\n" + + " , (\n" + + " SELECT PROJECT_ID\n" + + " , SQL_AUTO_PERF_CHECK_ID\n" + + " , DBID\n" + + " , EXEC_SEQ\n" + + " FROM FILTER_PRED_EXEC\n" + + " WHERE ACCESS_PATH_TYPE = 'AUTOINDEX'\n" + + " ) B\n" + + " , (\n" + + " SELECT IDX_AD_NO\n" + + " , DBID\n" + + " , EXEC_SEQ\n" + + " FROM IDX_AD_MST\n" + + " ) C\n" + + " WHERE A.PROJECT_ID = :project_id\n" + + " AND A.PERF_CHECK_EXEC_END_DT IS NOT NULL\n" + + " AND NVL(A.PERF_CHECK_FORCE_CLOSE_YN, 'N') <> 'Y'\n" + + " AND B.PROJECT_ID = A.PROJECT_ID\n" + + " AND B.SQL_AUTO_PERF_CHECK_ID = A.SQL_AUTO_PERF_CHECK_ID\n" + + " AND C.DBID = B.DBID", + "Tables:\n" + + "FILTER_PRED_EXEC\n" + + "IDX_AD_MST\n" + + "SQL_AUTO_PERF_CHK\n" + + "\n" + + "Fields:\n" + + "FILTER_PRED_EXEC.ACCESS_PATH_TYPE\n" + + "FILTER_PRED_EXEC.DBID\n" + + "FILTER_PRED_EXEC.EXEC_SEQ\n" + + "FILTER_PRED_EXEC.PROJECT_ID\n" + + "FILTER_PRED_EXEC.SQL_AUTO_PERF_CHECK_ID\n" + + "IDX_AD_MST.DBID\n" + + "IDX_AD_MST.EXEC_SEQ\n" + + "IDX_AD_MST.IDX_AD_NO\n" + + "SQL_AUTO_PERF_CHK.PERF_CHECK_EXEC_END_DT\n" + + "SQL_AUTO_PERF_CHK.PERF_CHECK_FORCE_CLOSE_YN\n" + + "SQL_AUTO_PERF_CHK.PROJECT_ID\n" + + "SQL_AUTO_PERF_CHK.SQL_AUTO_PERF_CHECK_ID"); + } + + public static void testInsertAll() { + doTest(" INSERT ALL\n" + + " WHEN id <= 3 THEN\n" + + " INTO dest_tab1 VALUES(id, description1)\n" + + " WHEN id BETWEEN 4 AND 7 THEN\n" + + " INTO dest_tab2 VALUES(id, description2)\n" + + " WHEN 1=1 THEN\n" + + " INTO dest_tab3 VALUES(id, description3)\n" + + "SELECT id, description1, description2,description3\n" + + "FROM source_tab;", + "Tables:\n" + + "dest_tab1\n" + + "dest_tab2\n" + + "dest_tab3\n" + + "source_tab\n" + + "\nFields:\n" + + "source_tab.description1\n" + + "source_tab.description2\n" + + "source_tab.description3\n" + + "source_tab.id"); + } + + public static void testColumnInUnionSelect(){ + doTest("Select\n" + + "(select phone_num as ephone1 from emp_phone p where p.emp_num=e.emp_num and primary_flag='Y' \n" + + "\tunion select phone_num as ephone1 from emp_phone1 p where p.emp_num=e.emp_num and primary_flag='Y') ephone,\n" + + "e.emp_attr_no_alias\n" + + "From\n" + + "Department d, employee e", + "Tables:\n" + + "Department\n" + + "emp_phone\n" + + "emp_phone1\n" + + "employee\n" + + "\n" + + "Fields:\n" + + "emp_phone.emp_num\n" + + "emp_phone.phone_num\n" + + "emp_phone.primary_flag\n" + + "emp_phone1.emp_num\n" + + "emp_phone1.phone_num\n" + + "emp_phone1.primary_flag\n" + + "employee.emp_attr_no_alias\n" + + "employee.emp_num"); + } + + public static void testColumnInSelectListOfJoin(){ + doTest("CREATE OR REPLACE FORCE VIEW \"CATALOG_IT\".\"VIEW1\" (\"COL1\", \"COL2\", \"COL3\", \"COL4\") AS\n" + + "SELECT al1.\"COL1\",al1.\"COL2\",al1.\"COL3\", al2.COL1 AS \"COL4\"\n" + + "FROM (SELECT COL1, COL2, COL3 FROM TABLE1 t1) al1\n" + + "JOIN (SELECT COL1, COL2, COL3 FROM TABLE2 t2) al2 ON al2.COL2 = al1.COL2", + "Tables:\n" + + "TABLE1\n" + + "TABLE2\n" + + "\n" + + "Fields:\n" + + "TABLE1.COL1\n" + + "TABLE1.COL2\n" + + "TABLE1.COL3\n" + + "TABLE2.COL1\n" + + "TABLE2.COL2\n" + + "TABLE2.COL3"); + } + + public static void testRowid(){ + doTest("Select t1.ROWID from table1 t1", + "Tables:\n" + + "table1\n" + + "\n" + + "Fields:\n" + + "table1.ROWID"); + } + + public static void testListAgg(){ + doTest("SELECT LISTAGG(DRIVER_NM, ',') WITHIN GROUP (ORDER BY DRIVER_NM) AS DRIVER_NM FROM DRIVER_INFO", + "Tables:\n" + + "DRIVER_INFO\n" + + "\n" + + "Fields:\n" + + "DRIVER_INFO.DRIVER_NM"); + } +} diff --git a/src/test/java/gettablecolumn/testPostgresql.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testPostgresql.java similarity index 96% rename from src/test/java/gettablecolumn/testPostgresql.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testPostgresql.java index b4d08444..34231bfc 100644 --- a/src/test/java/gettablecolumn/testPostgresql.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testPostgresql.java @@ -1,51 +1,51 @@ -package gettablecolumn; - -import demos.gettablecolumns.TGetTableColumn; -import gudusoft.gsqlparser.EDbVendor; -import junit.framework.TestCase; - -public class testPostgresql extends TestCase { - - static void doTest(String inputQuery, String desireResult){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvpostgresql); - getTableColumn.isConsole = false; - getTableColumn.showTableEffect = false; - getTableColumn.showColumnLocation = false; - getTableColumn.showTreeStructure = false; - getTableColumn.showDatatype = true; - getTableColumn.listStarColumn = true; - getTableColumn.runText(inputQuery); - // System.out.println(getTableColumn.outList.toString().trim()); - assertTrue(getTableColumn.outList.toString().trim().equalsIgnoreCase(desireResult)); - } - - public static void testCopy1() { - doTest("COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';", - "Tables:\n" + - "country\n" + - "\n" + - "Fields:\n" + - "country.*\n" + - "country.country_name"); - } - - public static void testCopy2() { - doTest("COPY country TO STDOUT (DELIMITER '|');", - "Tables:\n" + - "country\n" + - "\n" + - "Fields:"); - } - - public static void testCopy3() { - doTest("COPY country(name,location,postid) FROM '/usr1/proj/bray/sql/country_data';", - "Tables:\n" + - "country\n" + - "\n" + - "Fields:\n" + - "country.location\n" + - "country.name\n" + - "country.postid"); - } -} - +package gudusoft.gsqlparser.gettablecolumnTest; + +import demos.gettablecolumns.TGetTableColumn; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testPostgresql extends TestCase { + + static void doTest(String inputQuery, String desireResult){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvpostgresql); + getTableColumn.isConsole = false; + getTableColumn.showTableEffect = false; + getTableColumn.showColumnLocation = false; + getTableColumn.showTreeStructure = false; + getTableColumn.showDatatype = true; + getTableColumn.listStarColumn = true; + getTableColumn.runText(inputQuery); + // System.out.println(getTableColumn.outList.toString().trim()); + assertTrue(getTableColumn.outList.toString().trim().equalsIgnoreCase(desireResult)); + } + + public static void testCopy1() { + doTest("COPY (SELECT * FROM country WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';", + "Tables:\n" + + "country\n" + + "\n" + + "Fields:\n" + + "country.*\n" + + "country.country_name"); + } + + public static void testCopy2() { + doTest("COPY country TO STDOUT (DELIMITER '|');", + "Tables:\n" + + "country\n" + + "\n" + + "Fields:"); + } + + public static void testCopy3() { + doTest("COPY country(name,location,postid) FROM '/usr1/proj/bray/sql/country_data';", + "Tables:\n" + + "country\n" + + "\n" + + "Fields:\n" + + "country.location\n" + + "country.name\n" + + "country.postid"); + } +} + diff --git a/src/test/java/gettablecolumn/testPresto.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testPresto.java similarity index 98% rename from src/test/java/gettablecolumn/testPresto.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testPresto.java index a352fe8a..a18907c4 100644 --- a/src/test/java/gettablecolumn/testPresto.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testPresto.java @@ -1,4 +1,4 @@ -package gettablecolumn; +package gudusoft.gsqlparser.gettablecolumnTest; import demos.gettablecolumns.TGetTableColumn; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/gettablecolumn/testRedshift.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testRedshift.java similarity index 96% rename from src/test/java/gettablecolumn/testRedshift.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testRedshift.java index 98fb6508..b0049a73 100644 --- a/src/test/java/gettablecolumn/testRedshift.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testRedshift.java @@ -1,4 +1,4 @@ -package gettablecolumn; +package gudusoft.gsqlparser.gettablecolumnTest; import demos.gettablecolumns.TGetTableColumn; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/gettablecolumn/testSQLEnv.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSQLEnv.java similarity index 97% rename from src/test/java/gettablecolumn/testSQLEnv.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSQLEnv.java index 59e3ad92..9574a1f3 100644 --- a/src/test/java/gettablecolumn/testSQLEnv.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSQLEnv.java @@ -1,337 +1,337 @@ -package gettablecolumn; - -import demos.gettablecolumns.TGetTableColumn; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TBaseType; -import gudusoft.gsqlparser.sqlenv.TSQLCatalog; -import gudusoft.gsqlparser.sqlenv.TSQLEnv; -import gudusoft.gsqlparser.sqlenv.TSQLSchema; -import gudusoft.gsqlparser.sqlenv.TSQLTable; -import junit.framework.TestCase; - -class TOracleEnv extends TSQLEnv { - - public TOracleEnv(){ - super(EDbVendor.dbvoracle); - initSQLEnv(); - } - - @Override - public void initSQLEnv() { - - // add a new database: master - TSQLCatalog sqlCatalog = createSQLCatalog("orcl"); - // add a new schema: dbo - TSQLSchema sqlSchema = sqlCatalog.createSchema("scott"); - //add a new table: - TSQLTable aTab = sqlSchema.createTable("tab2"); - aTab.addColumn("col1"); - - aTab = sqlSchema.createTable("departments"); - aTab.addColumn("department_name"); - - aTab = sqlSchema.createTable("CDS_H_KUNDEN_OBJEKT"); - aTab.addColumn("C_BANK"); - aTab.addColumn("STATUSCODE"); - - aTab = sqlSchema.createTable("CDS_H_ZINSEN"); - aTab.addColumn("BANKSTELLE"); - aTab.addColumn("HIST_DATUM"); - aTab.addColumn("KONTONUMMER"); - aTab.addColumn("RUBRIK"); - - aTab = sqlSchema.createTable("DWH_OTF_GESCHAEFTE"); - aTab.addColumn("agentur"); - aTab.addColumn("anzahl"); - aTab.addColumn("bankstelle"); - aTab.addColumn("betrag"); - aTab.addColumn("betrag_frw"); - aTab.addColumn("datum_verfall"); - aTab.addColumn("kategorie"); - aTab.addColumn("rubrik"); - aTab.addColumn("snb_code"); - aTab.addColumn("waehrungscode_iso"); - aTab.addColumn("zinssatz"); - - } -} - -class TSQLServerEnv extends TSQLEnv { - - public TSQLServerEnv(){ - super(EDbVendor.dbvmssql); - initSQLEnv(); - } - - @Override - public void initSQLEnv() { - - // add a new database: master - TSQLCatalog sqlCatalog = createSQLCatalog("master"); - // add a new schema: dbo - TSQLSchema sqlSchema = sqlCatalog.createSchema("dbo"); - //add a new table: aTab - TSQLTable aTab = sqlSchema.createTable("aTab"); - aTab.addColumn("Quantity1"); - - //add a new table: bTab - TSQLTable bTab = sqlSchema.createTable("bTab"); - bTab.addColumn("Quantity2"); - - //add a new table: cTab - TSQLTable cTab = sqlSchema.createTable("cTab"); - cTab.addColumn("Quantity"); - - TSQLTable tab = sqlSchema.createTable("sysforeignkeys"); - tab.addColumn("fkey"); - tab.addColumn("fkeyid"); - tab.addColumn("keyNo"); - tab.addColumn("rkey"); - tab.addColumn("rkeyid"); - - tab = sqlSchema.createTable("employee"); - tab.addColumn("max_lvl"); - tab.addColumn("min_lvl"); - - } -} - -class TSQLServerEnvSearchUpLevel extends TSQLEnv { - - public TSQLServerEnvSearchUpLevel(){ - super(EDbVendor.dbvmssql); - initSQLEnv(); - } - - @Override - public void initSQLEnv() { - - // add a new database: master - TSQLCatalog sqlCatalog = createSQLCatalog("master"); - // add a new schema: dbo - TSQLSchema sqlSchema = sqlCatalog.createSchema("dbo"); - //add a new table: cTab - TSQLTable ExecutionLogStorage = sqlSchema.createTable("ExecutionLogStorage"); - ExecutionLogStorage.addColumn("UserName"); - - } -} - -class TOracleEnv2 extends TSQLEnv { - - public TOracleEnv2(){ - super(EDbVendor.dbvoracle); - initSQLEnv(); - } - - @Override - public void initSQLEnv() { - - TSQLCatalog sqlCatalog = createSQLCatalog("orcl"); - TSQLSchema sqlSchema = sqlCatalog.createSchema("scott"); - //add a new table: - TSQLTable aTab = sqlSchema.createTable("deb_rfa_dpd_history"); - aTab.addColumn("dpd_100"); - aTab.addColumn("dpd_100_delinquency_bucket"); - } -} - -class TOracleEnvStarColumn1 extends TSQLEnv { - - public TOracleEnvStarColumn1(){ - super(EDbVendor.dbvoracle); - initSQLEnv(); - } - - @Override - public void initSQLEnv() { - TSQLCatalog sqlCatalog = createSQLCatalog("default"); - TSQLSchema sqlSchema = sqlCatalog.createSchema("default"); - TSQLTable aTab = sqlSchema.createTable("some_table"); - aTab.addColumn("c123"); - TSQLTable bTab = sqlSchema.createTable("other_table"); - bTab.addColumn("c1"); - } -} - -public class testSQLEnv extends TestCase { - - public static void test1(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); - getTableColumn.isConsole = false; - getTableColumn.listStarColumn = true; - getTableColumn.setSqlEnv(new TSQLServerEnv()); - - getTableColumn.runText("SELECT Quantity,b.Time,c.Description\n" + - "FROM\n" + - "(SELECT ID2,Time FROM bTab) b\n" + - "INNER JOIN aTab a on a.ID=b.ID\n" + - "INNER JOIN cTab c on a.ID=c.ID\n"); - String strActual = getTableColumn.outList.toString(); - //System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("Tables:\n" + - "aTab\n" + - "bTab\n" + - "cTab\n" + - "\n" + - "Fields:\n" + - "aTab.ID\n" + - "bTab.ID2\n" + - "bTab.Time\n" + - "cTab.Description\n" + - "cTab.ID\n" + - "cTab.Quantity")); - } - - public static void testOracle1(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.listStarColumn = true; - if (!TBaseType.ENABLE_RESOLVER){ - getTableColumn.setSqlEnv(new TOracleEnv2()); - } - - - getTableColumn.runText("select b.pb_id\n" + - " , b.pb_source_code\n" + - " , b.time_key as hist_time_key\n" + - " , ot.time_key as curr_time_key\n" + - " , dpd_100\n" + - " , dpd_100_delinquency_bucket as bucket_100\n" + - " , ot.time_id\n" + - " , to_char(add_months(ot.time_id, -6),'J') as time_key_6m\n" + - " from deb_rfa_product_bridge pb\n" + - " left join deb_rfa_dpd_history b\n" + - " on pb.pb_id = b.pb_id\n" + - " and pb.pb_source_code = b.pb_source_code\n" + - " cross join ods_time ot\n" + - " where b.time_key >= to_char (add_months (ot.time_id, -12),'J')\n" + - " and ot.time_id = (select process_current_date\n" + - " from etl_current_date\n" + - " where process_code = 'DEB_RFA_ODS')"); - String strActual = getTableColumn.outList.toString(); -// System.out.println("select b.pb_id\n" + -// " , b.pb_source_code\n" + -// " , b.time_key as hist_time_key\n" + -// " , ot.time_key as curr_time_key\n" + -// " , dpd_100\n" + -// " , dpd_100_delinquency_bucket as bucket_100\n" + -// " , ot.time_id\n" + -// " , to_char(add_months(ot.time_id, -6),'J') as time_key_6m\n" + -// " from deb_rfa_product_bridge pb\n" + -// " left join deb_rfa_dpd_history b\n" + -// " on pb.pb_id = b.pb_id\n" + -// " and pb.pb_source_code = b.pb_source_code\n" + -// " cross join ods_time ot\n" + -// " where b.time_key >= to_char (add_months (ot.time_id, -12),'J')\n" + -// " and ot.time_id = (select process_current_date\n" + -// " from etl_current_date\n" + -// " where process_code = 'DEB_RFA_ODS')"); -// System.out.println(strActual); - - String resultWithOldAlgo = "Tables:\n" + - "deb_rfa_dpd_history\n" + - "deb_rfa_product_bridge\n" + - "etl_current_date\n" + - "ods_time\n" + - "\n" + - "Fields:\n" + - "deb_rfa_dpd_history.dpd_100\n" + - "deb_rfa_dpd_history.dpd_100_delinquency_bucket\n" + - "deb_rfa_dpd_history.pb_id\n" + - "deb_rfa_dpd_history.pb_source_code\n" + - "deb_rfa_dpd_history.time_key\n" + - "deb_rfa_product_bridge.pb_id\n" + - "deb_rfa_product_bridge.pb_source_code\n" + - "etl_current_date.process_code\n" + - "etl_current_date.process_current_date\n" + - "ods_time.time_id\n" + - "ods_time.time_key"; - String resultWithNewAlgo = "Tables:\n" + - "deb_rfa_dpd_history\n" + - "deb_rfa_product_bridge\n" + - "etl_current_date\n" + - "ods_time\n" + - "\n" + - "Fields:\n" + - "deb_rfa_dpd_history.pb_id\n" + - "deb_rfa_dpd_history.pb_source_code\n" + - "deb_rfa_dpd_history.time_key\n" + - "deb_rfa_product_bridge.dpd_100\n" + - "deb_rfa_product_bridge.dpd_100_delinquency_bucket\n" + - "deb_rfa_product_bridge.pb_id\n" + - "deb_rfa_product_bridge.pb_source_code\n" + - "etl_current_date.process_code\n" + - "etl_current_date.process_current_date\n" + - "ods_time.time_id\n" + - "ods_time.time_key"; - - String resultStr=""; - if (TBaseType.ENABLE_RESOLVER){ - resultStr = resultWithNewAlgo; - }else{ - resultStr = resultWithOldAlgo; - } - assertTrue(strActual.trim().equalsIgnoreCase(resultStr)); - } - - public static void testSelectStarColumn1(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); - getTableColumn.isConsole = false; - getTableColumn.listStarColumn = true; - getTableColumn.setSqlEnv(new TOracleEnvStarColumn1()); - - getTableColumn.runText("select c1, c123 from\n" + - "( -- subquery\n" + - " select *\n" + - " from some_table o1, other_table o2\n" + - ")"); - String strActual = getTableColumn.outList.toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("Tables:\n" + - "other_table\n" + - "some_table\n" + - "\n" + - "Fields:\n" + - "other_table.*\n" + - "other_table.c1\n" + - "some_table.*\n" + - "some_table.c123")); - } - - - - public static void testSearchUpLevel(){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); - getTableColumn.isConsole = false; - getTableColumn.listStarColumn = true; - getTableColumn.setSqlEnv(new TSQLServerEnvSearchUpLevel()); - - getTableColumn.runText("insert into [dbo].[ExecutionLogStorage]\n" + - " ([InstanceName],\n" + - " [ReportID],\n" + - " [UserName]\n" + - " )\n" + - " select top (1024) with ties\n" + - " [InstanceName],\n" + - " [ReportID],\n" + - " [UserName]\n" + - " from [dbo].[ExecutionLog_Old] WITH (XLOCK)\n" + - " order by TimeStart ;"); - String strActual = getTableColumn.outList.toString(); -// System.out.println(strActual); - assertTrue(strActual.trim().equalsIgnoreCase("Tables:\n" + - "[dbo].[ExecutionLog_Old]\n" + - "[dbo].[ExecutionLogStorage]\n" + - "\n" + - "Fields:\n" + - "[dbo].[ExecutionLog_Old].[InstanceName]\n" + - "[dbo].[ExecutionLog_Old].[ReportID]\n" + - "[dbo].[ExecutionLog_Old].[UserName]\n" + - "[dbo].[ExecutionLog_Old].TimeStart\n" + - "[dbo].[ExecutionLogStorage].[InstanceName]\n" + - "[dbo].[ExecutionLogStorage].[ReportID]\n" + - "[dbo].[ExecutionLogStorage].[UserName]")); - } - -} +package gudusoft.gsqlparser.gettablecolumnTest; + +import demos.gettablecolumns.TGetTableColumn; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TBaseType; +import gudusoft.gsqlparser.sqlenv.TSQLCatalog; +import gudusoft.gsqlparser.sqlenv.TSQLEnv; +import gudusoft.gsqlparser.sqlenv.TSQLSchema; +import gudusoft.gsqlparser.sqlenv.TSQLTable; +import junit.framework.TestCase; + +class TOracleEnv extends TSQLEnv { + + public TOracleEnv(){ + super(EDbVendor.dbvoracle); + initSQLEnv(); + } + + @Override + public void initSQLEnv() { + + // add a new database: master + TSQLCatalog sqlCatalog = createSQLCatalog("orcl"); + // add a new schema: dbo + TSQLSchema sqlSchema = sqlCatalog.createSchema("scott"); + //add a new table: + TSQLTable aTab = sqlSchema.createTable("tab2"); + aTab.addColumn("col1"); + + aTab = sqlSchema.createTable("departments"); + aTab.addColumn("department_name"); + + aTab = sqlSchema.createTable("CDS_H_KUNDEN_OBJEKT"); + aTab.addColumn("C_BANK"); + aTab.addColumn("STATUSCODE"); + + aTab = sqlSchema.createTable("CDS_H_ZINSEN"); + aTab.addColumn("BANKSTELLE"); + aTab.addColumn("HIST_DATUM"); + aTab.addColumn("KONTONUMMER"); + aTab.addColumn("RUBRIK"); + + aTab = sqlSchema.createTable("DWH_OTF_GESCHAEFTE"); + aTab.addColumn("agentur"); + aTab.addColumn("anzahl"); + aTab.addColumn("bankstelle"); + aTab.addColumn("betrag"); + aTab.addColumn("betrag_frw"); + aTab.addColumn("datum_verfall"); + aTab.addColumn("kategorie"); + aTab.addColumn("rubrik"); + aTab.addColumn("snb_code"); + aTab.addColumn("waehrungscode_iso"); + aTab.addColumn("zinssatz"); + + } +} + +class TSQLServerEnv extends TSQLEnv { + + public TSQLServerEnv(){ + super(EDbVendor.dbvmssql); + initSQLEnv(); + } + + @Override + public void initSQLEnv() { + + // add a new database: master + TSQLCatalog sqlCatalog = createSQLCatalog("master"); + // add a new schema: dbo + TSQLSchema sqlSchema = sqlCatalog.createSchema("dbo"); + //add a new table: aTab + TSQLTable aTab = sqlSchema.createTable("aTab"); + aTab.addColumn("Quantity1"); + + //add a new table: bTab + TSQLTable bTab = sqlSchema.createTable("bTab"); + bTab.addColumn("Quantity2"); + + //add a new table: cTab + TSQLTable cTab = sqlSchema.createTable("cTab"); + cTab.addColumn("Quantity"); + + TSQLTable tab = sqlSchema.createTable("sysforeignkeys"); + tab.addColumn("fkey"); + tab.addColumn("fkeyid"); + tab.addColumn("keyNo"); + tab.addColumn("rkey"); + tab.addColumn("rkeyid"); + + tab = sqlSchema.createTable("employee"); + tab.addColumn("max_lvl"); + tab.addColumn("min_lvl"); + + } +} + +class TSQLServerEnvSearchUpLevel extends TSQLEnv { + + public TSQLServerEnvSearchUpLevel(){ + super(EDbVendor.dbvmssql); + initSQLEnv(); + } + + @Override + public void initSQLEnv() { + + // add a new database: master + TSQLCatalog sqlCatalog = createSQLCatalog("master"); + // add a new schema: dbo + TSQLSchema sqlSchema = sqlCatalog.createSchema("dbo"); + //add a new table: cTab + TSQLTable ExecutionLogStorage = sqlSchema.createTable("ExecutionLogStorage"); + ExecutionLogStorage.addColumn("UserName"); + + } +} + +class TOracleEnv2 extends TSQLEnv { + + public TOracleEnv2(){ + super(EDbVendor.dbvoracle); + initSQLEnv(); + } + + @Override + public void initSQLEnv() { + + TSQLCatalog sqlCatalog = createSQLCatalog("orcl"); + TSQLSchema sqlSchema = sqlCatalog.createSchema("scott"); + //add a new table: + TSQLTable aTab = sqlSchema.createTable("deb_rfa_dpd_history"); + aTab.addColumn("dpd_100"); + aTab.addColumn("dpd_100_delinquency_bucket"); + } +} + +class TOracleEnvStarColumn1 extends TSQLEnv { + + public TOracleEnvStarColumn1(){ + super(EDbVendor.dbvoracle); + initSQLEnv(); + } + + @Override + public void initSQLEnv() { + TSQLCatalog sqlCatalog = createSQLCatalog("default"); + TSQLSchema sqlSchema = sqlCatalog.createSchema("default"); + TSQLTable aTab = sqlSchema.createTable("some_table"); + aTab.addColumn("c123"); + TSQLTable bTab = sqlSchema.createTable("other_table"); + bTab.addColumn("c1"); + } +} + +public class testSQLEnv extends TestCase { + + public static void test1(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); + getTableColumn.isConsole = false; + getTableColumn.listStarColumn = true; + getTableColumn.setSqlEnv(new TSQLServerEnv()); + + getTableColumn.runText("SELECT Quantity,b.Time,c.Description\n" + + "FROM\n" + + "(SELECT ID2,Time FROM bTab) b\n" + + "INNER JOIN aTab a on a.ID=b.ID\n" + + "INNER JOIN cTab c on a.ID=c.ID\n"); + String strActual = getTableColumn.outList.toString(); + //System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("Tables:\n" + + "aTab\n" + + "bTab\n" + + "cTab\n" + + "\n" + + "Fields:\n" + + "aTab.ID\n" + + "bTab.ID2\n" + + "bTab.Time\n" + + "cTab.Description\n" + + "cTab.ID\n" + + "cTab.Quantity")); + } + + public static void testOracle1(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.listStarColumn = true; + if (!TBaseType.ENABLE_RESOLVER){ + getTableColumn.setSqlEnv(new TOracleEnv2()); + } + + + getTableColumn.runText("select b.pb_id\n" + + " , b.pb_source_code\n" + + " , b.time_key as hist_time_key\n" + + " , ot.time_key as curr_time_key\n" + + " , dpd_100\n" + + " , dpd_100_delinquency_bucket as bucket_100\n" + + " , ot.time_id\n" + + " , to_char(add_months(ot.time_id, -6),'J') as time_key_6m\n" + + " from deb_rfa_product_bridge pb\n" + + " left join deb_rfa_dpd_history b\n" + + " on pb.pb_id = b.pb_id\n" + + " and pb.pb_source_code = b.pb_source_code\n" + + " cross join ods_time ot\n" + + " where b.time_key >= to_char (add_months (ot.time_id, -12),'J')\n" + + " and ot.time_id = (select process_current_date\n" + + " from etl_current_date\n" + + " where process_code = 'DEB_RFA_ODS')"); + String strActual = getTableColumn.outList.toString(); +// System.out.println("select b.pb_id\n" + +// " , b.pb_source_code\n" + +// " , b.time_key as hist_time_key\n" + +// " , ot.time_key as curr_time_key\n" + +// " , dpd_100\n" + +// " , dpd_100_delinquency_bucket as bucket_100\n" + +// " , ot.time_id\n" + +// " , to_char(add_months(ot.time_id, -6),'J') as time_key_6m\n" + +// " from deb_rfa_product_bridge pb\n" + +// " left join deb_rfa_dpd_history b\n" + +// " on pb.pb_id = b.pb_id\n" + +// " and pb.pb_source_code = b.pb_source_code\n" + +// " cross join ods_time ot\n" + +// " where b.time_key >= to_char (add_months (ot.time_id, -12),'J')\n" + +// " and ot.time_id = (select process_current_date\n" + +// " from etl_current_date\n" + +// " where process_code = 'DEB_RFA_ODS')"); +// System.out.println(strActual); + + String resultWithOldAlgo = "Tables:\n" + + "deb_rfa_dpd_history\n" + + "deb_rfa_product_bridge\n" + + "etl_current_date\n" + + "ods_time\n" + + "\n" + + "Fields:\n" + + "deb_rfa_dpd_history.dpd_100\n" + + "deb_rfa_dpd_history.dpd_100_delinquency_bucket\n" + + "deb_rfa_dpd_history.pb_id\n" + + "deb_rfa_dpd_history.pb_source_code\n" + + "deb_rfa_dpd_history.time_key\n" + + "deb_rfa_product_bridge.pb_id\n" + + "deb_rfa_product_bridge.pb_source_code\n" + + "etl_current_date.process_code\n" + + "etl_current_date.process_current_date\n" + + "ods_time.time_id\n" + + "ods_time.time_key"; + String resultWithNewAlgo = "Tables:\n" + + "deb_rfa_dpd_history\n" + + "deb_rfa_product_bridge\n" + + "etl_current_date\n" + + "ods_time\n" + + "\n" + + "Fields:\n" + + "deb_rfa_dpd_history.pb_id\n" + + "deb_rfa_dpd_history.pb_source_code\n" + + "deb_rfa_dpd_history.time_key\n" + + "deb_rfa_product_bridge.dpd_100\n" + + "deb_rfa_product_bridge.dpd_100_delinquency_bucket\n" + + "deb_rfa_product_bridge.pb_id\n" + + "deb_rfa_product_bridge.pb_source_code\n" + + "etl_current_date.process_code\n" + + "etl_current_date.process_current_date\n" + + "ods_time.time_id\n" + + "ods_time.time_key"; + + String resultStr=""; + if (TBaseType.ENABLE_RESOLVER){ + resultStr = resultWithNewAlgo; + }else{ + resultStr = resultWithOldAlgo; + } + assertTrue(strActual.trim().equalsIgnoreCase(resultStr)); + } + + public static void testSelectStarColumn1(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvoracle); + getTableColumn.isConsole = false; + getTableColumn.listStarColumn = true; + getTableColumn.setSqlEnv(new TOracleEnvStarColumn1()); + + getTableColumn.runText("select c1, c123 from\n" + + "( -- subquery\n" + + " select *\n" + + " from some_table o1, other_table o2\n" + + ")"); + String strActual = getTableColumn.outList.toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("Tables:\n" + + "other_table\n" + + "some_table\n" + + "\n" + + "Fields:\n" + + "other_table.*\n" + + "other_table.c1\n" + + "some_table.*\n" + + "some_table.c123")); + } + + + + public static void testSearchUpLevel(){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); + getTableColumn.isConsole = false; + getTableColumn.listStarColumn = true; + getTableColumn.setSqlEnv(new TSQLServerEnvSearchUpLevel()); + + getTableColumn.runText("insert into [dbo].[ExecutionLogStorage]\n" + + " ([InstanceName],\n" + + " [ReportID],\n" + + " [UserName]\n" + + " )\n" + + " select top (1024) with ties\n" + + " [InstanceName],\n" + + " [ReportID],\n" + + " [UserName]\n" + + " from [dbo].[ExecutionLog_Old] WITH (XLOCK)\n" + + " order by TimeStart ;"); + String strActual = getTableColumn.outList.toString(); +// System.out.println(strActual); + assertTrue(strActual.trim().equalsIgnoreCase("Tables:\n" + + "[dbo].[ExecutionLog_Old]\n" + + "[dbo].[ExecutionLogStorage]\n" + + "\n" + + "Fields:\n" + + "[dbo].[ExecutionLog_Old].[InstanceName]\n" + + "[dbo].[ExecutionLog_Old].[ReportID]\n" + + "[dbo].[ExecutionLog_Old].[UserName]\n" + + "[dbo].[ExecutionLog_Old].TimeStart\n" + + "[dbo].[ExecutionLogStorage].[InstanceName]\n" + + "[dbo].[ExecutionLogStorage].[ReportID]\n" + + "[dbo].[ExecutionLogStorage].[UserName]")); + } + +} diff --git a/src/test/java/gettablecolumn/testSQLServer.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSQLServer.java similarity index 97% rename from src/test/java/gettablecolumn/testSQLServer.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSQLServer.java index 51e21094..a5d8f298 100644 --- a/src/test/java/gettablecolumn/testSQLServer.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSQLServer.java @@ -1,352 +1,352 @@ -package gettablecolumn; - -import common.gspCommon; -import demos.gettablecolumns.TGetTableColumn; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testSQLServer extends TestCase { - - static void doTestFile(String inputFile, String desireResult){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); - getTableColumn.isConsole = false; - getTableColumn.showTableEffect = false; - getTableColumn.showColumnLocation = false; - getTableColumn.showTreeStructure = false; - getTableColumn.showDatatype = true; - getTableColumn.listStarColumn = true; - getTableColumn.showColumnsOfCTE = false; - getTableColumn.runFile(inputFile); - // System.out.println(getTableColumn.outList.toString().trim()); - assertTrue(getTableColumn.outList.toString().trim().equalsIgnoreCase(desireResult)); - } - - static void doTest(String inputQuery, String desireResult){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); - getTableColumn.isConsole = false; - getTableColumn.showTableEffect = false; - getTableColumn.showColumnLocation = false; - getTableColumn.showTreeStructure = false; - getTableColumn.runText(inputQuery); - //System.out.println(inputQuery); - // System.out.println(getTableColumn.outList.toString().trim()); - assertTrue(getTableColumn.outList.toString().trim().equalsIgnoreCase(desireResult)); - // System.out.println(desireResult); - } - - public static void testSearchTopLevel() { - doTest("select\n" + - " case\n" + - " c.[SIZE] when 3 then (\n" + - " select\n" + - " name\n" + - " from\n" + - " (\n" + - " select\n" + - " ename as name\n" + - " from\n" + - " TestCatalog.TestSchema.TestTableEmployee tte\n" + - " where\n" + - " tte.[department id] = c.deptno ) a)\n" + - " when 5 Then c.[Department Location]\n" + - " end deptNameLoc\n" + - "from\n" + - " TestCatalog.TestSchema.TestTableDept c", - "Tables:\n" + - "TestCatalog.TestSchema.TestTableDept\n" + - "TestCatalog.TestSchema.TestTableEmployee\n" + - "\n" + - "Fields:\n" + - "TestCatalog.TestSchema.TestTableDept.[Department Location]\n" + - "TestCatalog.TestSchema.TestTableDept.[SIZE]\n" + - "TestCatalog.TestSchema.TestTableDept.deptno\n" + - "TestCatalog.TestSchema.TestTableEmployee.[department id]\n" + - "TestCatalog.TestSchema.TestTableEmployee.ename"); - } - - public static void testColumnInSubquery() { - - doTest("SELECT\n" + - " [FacilityAccountID] = CAST(enc.FacilityAccountID AS VARCHAR(255))\n" + - " ,[RowSourceDSC] = CAST('Cerner' AS VARCHAR(255))\n" + - " ,[AttendingProviderID] = CAST(CAST(p.PersonnelID AS NUMERIC(38,0)) AS VARCHAR(255))\n" + - " ,[EDWLastModifiedDTS] = CAST(p.EDWLastModifiedDTS AS DATETIME2(7))\n" + - "FROM Shared.Clinical.EncounterLink AS enc\n" + - "CROSS APPLY\n" + - "(\n" + - " SELECT TOP 1\n" + - " a.PersonnelID\n" + - " ,a.EDWLastModifiedDTS\n" + - " FROM Cerner.Encounter.EncounterToPersonnelRelationship AS a\n" + - " WHERE a.EncounterID = enc.SourcePatientEncounterID\n" + - " AND a.ActiveStatusCVCD = 506\n" + - " AND a.EncounterPersonnelRelationshipCVCD = 1206\n" + - " AND a.ContributorSystemCVCD = 16048\n" + - " ORDER BY\n" + - " a.UpdateDTS DESC\n" + - ") AS p", - "Tables:\n" + - "Cerner.Encounter.EncounterToPersonnelRelationship\n" + - "Shared.Clinical.EncounterLink\n" + - "\nFields:\n" + - "Cerner.Encounter.EncounterToPersonnelRelationship.ActiveStatusCVCD\n" + - "Cerner.Encounter.EncounterToPersonnelRelationship.ContributorSystemCVCD\n" + - "Cerner.Encounter.EncounterToPersonnelRelationship.EDWLastModifiedDTS\n" + - "Cerner.Encounter.EncounterToPersonnelRelationship.EncounterID\n" + - "Cerner.Encounter.EncounterToPersonnelRelationship.EncounterPersonnelRelationshipCVCD\n" + - "Cerner.Encounter.EncounterToPersonnelRelationship.PersonnelID\n" + - "Cerner.Encounter.EncounterToPersonnelRelationship.UpdateDTS\n" + - "Shared.Clinical.EncounterLink.FacilityAccountID\n" + - "Shared.Clinical.EncounterLink.SourcePatientEncounterID"); - } - - - public static void testCTE() { - doTest("WITH DataCTE\n" + - "AS\n" + - "(\n" + - "SELECT \n" + - "\t ExecCountsCTE.Calendar_Year \n" + - "\t,ExecCountsCTE.Calendar_Quarter \n" + - "\t,ExecCountsCTE.Calendar_Quarter_Name \n" + - "\t,ExecCountsCTE.Calendar_Month \n" + - "\t,ExecCountsCTE.Calendar_Month_Name \n" + - "\t,ErrorCountsCTE.ErrorSeverityCategory \n" + - "\t,SUM(ExecCountsCTE.ScriptExecCount)\t\t\t\t\t\t\t\t\t\t\t\t\t\tAS ScriptExecCount\n" + - "\t,SUM(ISNULL(ErrorCountsCTE.ErrorCount,0))\t\t\t\t\t\t\t\t\t\t\t\tAS ScriptErrorCount\n" + - "\t,CAST(CAST(SUM(ISNULL(ErrorCountsCTE.ErrorCount,0)) AS DECIMAL(20,2))\n" + - "\t/ CAST(SUM(ExecCountsCTE.ScriptExecCount) AS DECIMAL(20,2))\n" + - "\tAS DECIMAL(20,9))\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tAS PercentErrors\n" + - "FROM \n" + - "\t(\n" + - "\tSELECT \n" + - "\t\t dbo.TealeafPerformance.Calendar_Year \n" + - "\t\t,dbo.TealeafPerformance.Calendar_Quarter \n" + - "\t\t,dbo.TealeafPerformance.Calendar_Quarter_Name \n" + - "\t\t,dbo.TealeafPerformance.Calendar_Month\n" + - "\t\t,dbo.TealeafPerformance.Calendar_Month_Name\n" + - "\t\t,COUNT(*) AS ScriptExecCount\n" + - "\tFROM \n" + - "\t\tdbo.TealeafPerformance\n" + - "\tWHERE\n" + - "\t\tdbo.TealeafPerformance.PerformanceType = 'RoundTrip'\n" + - "\tAND dbo.TealeafPerformance.Application = 'CLAS'\n" + - "\tAND dbo.TealeafPerformance.Date >= @BegDate\n" + - "\tAND dbo.TealeafPerformance.Date < @EndDate\n" + - "\tAND dbo.TealeafPerformance.Date >= '2014-04-01' --valid data only beginning here\n" + - "\tGROUP BY\n" + - "\t\t dbo.TealeafPerformance.Calendar_Year \n" + - "\t\t,dbo.TealeafPerformance.Calendar_Quarter \n" + - "\t\t,dbo.TealeafPerformance.Calendar_Quarter_Name \n" + - "\t\t,dbo.TealeafPerformance.Calendar_Month\n" + - "\t\t,dbo.TealeafPerformance.Calendar_Month_Name\n" + - "\t) ExecCountsCTE\n" + - "\tLEFT OUTER JOIN \n" + - "\t(\n" + - "\tSELECT \n" + - "\t\t dbo.Tealeaf.Calendar_Year \n" + - "\t\t,dbo.Tealeaf.Calendar_Quarter \n" + - "\t\t,dbo.Tealeaf.Calendar_Quarter_Name \n" + - "\t\t,dbo.Tealeaf.Calendar_Month\n" + - "\t\t,dbo.Tealeaf.Calendar_Month_Name\n" + - "\t\t,CASE\n" + - "\t\t\tWHEN (dbo.Tealeaf.ErrorType >= '500' OR dbo.Tealeaf.ErrorType IN ('Legacy','.NET')) THEN 'High Severity'\n" + - "\t\t\tWHEN (dbo.Tealeaf.ErrorType >= '400' AND dbo.Tealeaf.ErrorType < '500') THEN 'Low Severity'\n" + - "\t\t\tELSE 'Unknown'\n" + - "\t\t END AS ErrorSeverityCategory\n" + - "\t\t,SUM(ISNULL(dbo.Tealeaf.ErrorCount,0)) AS ErrorCount\n" + - "\tFROM \n" + - "\t\tdbo.Tealeaf\n" + - "\tWHERE\n" + - "\t\tdbo.Tealeaf.Application = 'CLAS'\n" + - "\tAND dbo.Tealeaf.Date >= @BegDate\n" + - "\tAND dbo.Tealeaf.Date < @EndDate\n" + - "\tAND dbo.Tealeaf.Date >= '2014-04-01' --valid data only beginning here\n" + - "\tGROUP BY\n" + - "\t\t dbo.Tealeaf.Calendar_Year \n" + - "\t\t,dbo.Tealeaf.Calendar_Quarter \n" + - "\t\t,dbo.Tealeaf.Calendar_Quarter_Name \n" + - "\t\t,dbo.Tealeaf.Calendar_Month\n" + - "\t\t,dbo.Tealeaf.Calendar_Month_Name\n" + - "\t\t,CASE\n" + - "\t\t\tWHEN (dbo.Tealeaf.ErrorType >= '500' OR dbo.Tealeaf.ErrorType IN ('Legacy','.NET')) THEN 'High Severity'\n" + - "\t\t\tWHEN (dbo.Tealeaf.ErrorType >= '400' AND dbo.Tealeaf.ErrorType < '500') THEN 'Low Severity'\n" + - "\t\t\tELSE 'Unknown'\n" + - "\t\t END \n" + - "\t) ErrorCountsCTE\n" + - "\t\tON\tErrorCountsCTE.Calendar_Year = ExecCountsCTE.Calendar_Year\n" + - "\t\tAND\tErrorCountsCTE.Calendar_Month = ExecCountsCTE.Calendar_Month\n" + - "GROUP BY\n" + - "\t ExecCountsCTE.Calendar_Year \n" + - "\t,ExecCountsCTE.Calendar_Quarter \n" + - "\t,ExecCountsCTE.Calendar_Quarter_Name \n" + - "\t,ExecCountsCTE.Calendar_Month \n" + - "\t,ExecCountsCTE.Calendar_Month_Name \n" + - "\t,ErrorCountsCTE.ErrorSeverityCategory \n" + - ")\n" + - "SELECT\n" + - "\t DataCTE.Calendar_Year\n" + - "\t,DataCTE.Calendar_Quarter \n" + - "\t,DataCTE.Calendar_Quarter_Name \n" + - "\t,DataCTE.Calendar_Month \n" + - "\t,DataCTE.Calendar_Month_Name \n" + - "\t,DataCTE.ErrorSeverityCategory \n" + - "\t,DataCTE.ScriptExecCount\n" + - "\t,DataCTE.ScriptErrorCount\n" + - "\t,DataCTE.PercentErrors\n" + - "\t,PercentTotalApply.TotalPercent\n" + - "\t,(100.0 - (PercentTotalApply.TotalPercent * 100.0)) AS SuccessPercentile\n" + - "FROM\n" + - "\tDataCTE\n" + - "\tCROSS APPLY\n" + - "\t\t(\n" + - "\t\tSELECT\n" + - "\t\t\t DataCTE2.Calendar_Year \n" + - "\t\t\t,DataCTE2.Calendar_Month \n" + - "\t\t\t,DataCTE2.Calendar_Month_Name \n" + - "\t\t\t,SUM(DataCTE2.PercentErrors) AS TotalPercent\n" + - "\t\tFROM\n" + - "\t\t\tDataCTE DataCTE2\n" + - "\t\tWHERE\n" + - "\t\t\tDataCTE2.Calendar_Year\t\t\t= DataCTE.Calendar_Year\t\n" + - "\t\tAND\tDataCTE2.Calendar_Month\t\t\t= DataCTE.Calendar_Month\n" + - "\t\tGROUP BY\n" + - "\t\t\t DataCTE2.Calendar_Year \n" + - "\t\t\t,DataCTE2.Calendar_Month \n" + - "\t\t\t,DataCTE2.Calendar_Month_Name \n" + - "\t\t) PercentTotalApply", - "Tables:\n" + - "dbo.Tealeaf\n" + - "dbo.TealeafPerformance\n" + - "\nFields:\n" + - "dbo.Tealeaf.Application\n" + - "dbo.Tealeaf.Calendar_Month\n" + - "dbo.Tealeaf.Calendar_Month_Name\n" + - "dbo.Tealeaf.Calendar_Quarter\n" + - "dbo.Tealeaf.Calendar_Quarter_Name\n" + - "dbo.Tealeaf.Calendar_Year\n" + - "dbo.Tealeaf.Date\n" + - "dbo.Tealeaf.ErrorCount\n" + - "dbo.Tealeaf.ErrorType\n" + - "dbo.TealeafPerformance.Application\n" + - "dbo.TealeafPerformance.Calendar_Month\n" + - "dbo.TealeafPerformance.Calendar_Month_Name\n" + - "dbo.TealeafPerformance.Calendar_Quarter\n" + - "dbo.TealeafPerformance.Calendar_Quarter_Name\n" + - "dbo.TealeafPerformance.Calendar_Year\n" + - "dbo.TealeafPerformance.Date\n" + - "dbo.TealeafPerformance.PerformanceType"); - } - - - public static void testTableFunction() { - doTest("CREATE VIEW [dbo].[ERRORS]\n" + - "AS\n" + - "WITH DESC_CTE\n" + - "AS\n" + - " (\n" + - " SELECT rid\n" + - " ,POS = ID\n" + - " ,c_desc = LTRIM( RTRIM( value ))\n" + - " FROM [dbo].[reasons]\n" + - " CROSS APPLY\n" + - " (\n" + - " SELECT ID = ROW_NUMBER() OVER (PARTITION BY reasons_ID1\n" + - " ORDER BY\n" + - " reasons_ID2\n" + - " )\n" + - " ,value\n" + - " FROM STRING_SPLIT(REPLACE(c_desc ,'|~|',CHAR(7)),CHAR(7)) PM\n" + - " ) CR\n" + - " WHERE [IsDeleted] ='0'\n" + - " )\n" + - "SELECT [derid],\n" + - " POS =ISNULL(CR.[POS],1) ,\n" + - " [errorcode],\n" + - " [c_desc]= CAST(NULLIF(CR.c_desc,'') AS VARCHAR(300))\n" + - "FROM dbo.d_errors CE\n" + - "LEFT JOIN DESC_CTE CR\n" + - "ON CR.reasons_ID =CE.errorcode\n" + - "WHERE 1 = 1\n" + - " AND CE.IsDeleted = 0;", - "Tables:\n" + - "[dbo].[reasons]\n" + - "dbo.d_errors\n" + - "\n" + - "Fields:\n" + - "(table-valued function:STRING_SPLIT).value\n" + - "[dbo].[reasons].[IsDeleted]\n" + - "[dbo].[reasons].c_desc\n" + - "[dbo].[reasons].reasons_ID\n" + - "[dbo].[reasons].reasons_ID1\n" + - "[dbo].[reasons].reasons_ID2\n" + - "[dbo].[reasons].rid\n" + - "dbo.d_errors.[derid]\n" + - "dbo.d_errors.[errorcode]\n" + - "dbo.d_errors.errorcode\n" + - "dbo.d_errors.IsDeleted"); - } - - - public static void testColumnAlias() { - doTest("select C*2 as C from T", - "Tables:\n" + - "T\n" + - "\n" + - "Fields:\n" + - "T.C"); - } - - public static void testFile1() { - doTestFile(gspCommon.BASE_SQL_DIR_PRIVATE_JAVA +"mssql/column_resolver/pivot.sql", - "Tables:\n" + - "Imported.ADDRESS\n" + - "Imported.STATES\n" + - "p(piviot_table)\n" + - "\n" + - "Fields:\n" + - "(pivot-table:p(piviot_table)).[1]\n" + - "(pivot-table:p(piviot_table)).[2]\n" + - "(pivot-table:p(piviot_table)).[3]\n" + - "(table-valued function:STRING_SPLIT).[value]\n" + - "Imported.ADDRESS.[ADDRESS_ID]\n" + - "Imported.ADDRESS.ADDRESS_ADD_DATE\n" + - "Imported.ADDRESS.ADDRESS_CHANGE_DATE\n" + - "Imported.ADDRESS.ADDRESS_ID\n" + - "Imported.ADDRESS.ADDRESS_LINES\n" + - "Imported.ADDRESS.CITY\n" + - "Imported.ADDRESS.COUNTRY\n" + - "Imported.ADDRESS.IsDeleted\n" + - "Imported.ADDRESS.RESIDENTS\n" + - "Imported.ADDRESS.STATE\n" + - "Imported.ADDRESS.ZIP\n" + - "Imported.STATES.IsDeleted\n" + - "Imported.STATES.STATES_DESC\n" + - "Imported.STATES.STATES_ID"); - } - public static void testTempTable() { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmssql); - sqlParser.sqltext = "SELECT Emplid, SUBSTRING(RTRIM(Name),LEN(RTRIM(Name))-6, 7) AS Other_ID\n" + - "\t\tINTO #DupNames\n" + - "\t\tFROM [SnapShot].UAHEPRD.PS_NAMES\n" + - "\t\tWHERE (First_Name LIKE '%DUPLICATE%ID%' OR First_Name = 'DUPLICATE')\n" + - "\t\t\tAND Last_Name = 'CANCEL'\n" + - "\t\t\tAND NAME_TYPE = 'PRI'"; - int i = sqlParser.parse(); - assertTrue(i == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); - assertTrue(select.getSyntaxHints().size() == 0); - } - - public static void testWhereCurrentOf() { - doTest(" DELETE FROM HumanResources.EmployeePayHistory WHERE CURRENT OF complex_cursor;", - "Tables:\n" + - "HumanResources.EmployeePayHistory\n" + - "\n" + - "Fields:"); - } - -} +package gudusoft.gsqlparser.gettablecolumnTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import demos.gettablecolumns.TGetTableColumn; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + + +public class testSQLServer extends TestCase { + + static void doTestFile(String inputFile, String desireResult){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); + getTableColumn.isConsole = false; + getTableColumn.showTableEffect = false; + getTableColumn.showColumnLocation = false; + getTableColumn.showTreeStructure = false; + getTableColumn.showDatatype = true; + getTableColumn.listStarColumn = true; + getTableColumn.showColumnsOfCTE = false; + getTableColumn.runFile(inputFile); + // System.out.println(getTableColumn.outList.toString().trim()); + assertTrue(getTableColumn.outList.toString().trim().equalsIgnoreCase(desireResult)); + } + + static void doTest(String inputQuery, String desireResult){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvmssql); + getTableColumn.isConsole = false; + getTableColumn.showTableEffect = false; + getTableColumn.showColumnLocation = false; + getTableColumn.showTreeStructure = false; + getTableColumn.runText(inputQuery); + //System.out.println(inputQuery); + // System.out.println(getTableColumn.outList.toString().trim()); + assertTrue(getTableColumn.outList.toString().trim().equalsIgnoreCase(desireResult)); + // System.out.println(desireResult); + } + + public static void testSearchTopLevel() { + doTest("select\n" + + " case\n" + + " c.[SIZE] when 3 then (\n" + + " select\n" + + " name\n" + + " from\n" + + " (\n" + + " select\n" + + " ename as name\n" + + " from\n" + + " TestCatalog.TestSchema.TestTableEmployee tte\n" + + " where\n" + + " tte.[department id] = c.deptno ) a)\n" + + " when 5 Then c.[Department Location]\n" + + " end deptNameLoc\n" + + "from\n" + + " TestCatalog.TestSchema.TestTableDept c", + "Tables:\n" + + "TestCatalog.TestSchema.TestTableDept\n" + + "TestCatalog.TestSchema.TestTableEmployee\n" + + "\n" + + "Fields:\n" + + "TestCatalog.TestSchema.TestTableDept.[Department Location]\n" + + "TestCatalog.TestSchema.TestTableDept.[SIZE]\n" + + "TestCatalog.TestSchema.TestTableDept.deptno\n" + + "TestCatalog.TestSchema.TestTableEmployee.[department id]\n" + + "TestCatalog.TestSchema.TestTableEmployee.ename"); + } + + public static void testColumnInSubquery() { + + doTest("SELECT\n" + + " [FacilityAccountID] = CAST(enc.FacilityAccountID AS VARCHAR(255))\n" + + " ,[RowSourceDSC] = CAST('Cerner' AS VARCHAR(255))\n" + + " ,[AttendingProviderID] = CAST(CAST(p.PersonnelID AS NUMERIC(38,0)) AS VARCHAR(255))\n" + + " ,[EDWLastModifiedDTS] = CAST(p.EDWLastModifiedDTS AS DATETIME2(7))\n" + + "FROM Shared.Clinical.EncounterLink AS enc\n" + + "CROSS APPLY\n" + + "(\n" + + " SELECT TOP 1\n" + + " a.PersonnelID\n" + + " ,a.EDWLastModifiedDTS\n" + + " FROM Cerner.Encounter.EncounterToPersonnelRelationship AS a\n" + + " WHERE a.EncounterID = enc.SourcePatientEncounterID\n" + + " AND a.ActiveStatusCVCD = 506\n" + + " AND a.EncounterPersonnelRelationshipCVCD = 1206\n" + + " AND a.ContributorSystemCVCD = 16048\n" + + " ORDER BY\n" + + " a.UpdateDTS DESC\n" + + ") AS p", + "Tables:\n" + + "Cerner.Encounter.EncounterToPersonnelRelationship\n" + + "Shared.Clinical.EncounterLink\n" + + "\nFields:\n" + + "Cerner.Encounter.EncounterToPersonnelRelationship.ActiveStatusCVCD\n" + + "Cerner.Encounter.EncounterToPersonnelRelationship.ContributorSystemCVCD\n" + + "Cerner.Encounter.EncounterToPersonnelRelationship.EDWLastModifiedDTS\n" + + "Cerner.Encounter.EncounterToPersonnelRelationship.EncounterID\n" + + "Cerner.Encounter.EncounterToPersonnelRelationship.EncounterPersonnelRelationshipCVCD\n" + + "Cerner.Encounter.EncounterToPersonnelRelationship.PersonnelID\n" + + "Cerner.Encounter.EncounterToPersonnelRelationship.UpdateDTS\n" + + "Shared.Clinical.EncounterLink.FacilityAccountID\n" + + "Shared.Clinical.EncounterLink.SourcePatientEncounterID"); + } + + + public static void testCTE() { + doTest("WITH DataCTE\n" + + "AS\n" + + "(\n" + + "SELECT \n" + + "\t ExecCountsCTE.Calendar_Year \n" + + "\t,ExecCountsCTE.Calendar_Quarter \n" + + "\t,ExecCountsCTE.Calendar_Quarter_Name \n" + + "\t,ExecCountsCTE.Calendar_Month \n" + + "\t,ExecCountsCTE.Calendar_Month_Name \n" + + "\t,ErrorCountsCTE.ErrorSeverityCategory \n" + + "\t,SUM(ExecCountsCTE.ScriptExecCount)\t\t\t\t\t\t\t\t\t\t\t\t\t\tAS ScriptExecCount\n" + + "\t,SUM(ISNULL(ErrorCountsCTE.ErrorCount,0))\t\t\t\t\t\t\t\t\t\t\t\tAS ScriptErrorCount\n" + + "\t,CAST(CAST(SUM(ISNULL(ErrorCountsCTE.ErrorCount,0)) AS DECIMAL(20,2))\n" + + "\t/ CAST(SUM(ExecCountsCTE.ScriptExecCount) AS DECIMAL(20,2))\n" + + "\tAS DECIMAL(20,9))\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tAS PercentErrors\n" + + "FROM \n" + + "\t(\n" + + "\tSELECT \n" + + "\t\t dbo.TealeafPerformance.Calendar_Year \n" + + "\t\t,dbo.TealeafPerformance.Calendar_Quarter \n" + + "\t\t,dbo.TealeafPerformance.Calendar_Quarter_Name \n" + + "\t\t,dbo.TealeafPerformance.Calendar_Month\n" + + "\t\t,dbo.TealeafPerformance.Calendar_Month_Name\n" + + "\t\t,COUNT(*) AS ScriptExecCount\n" + + "\tFROM \n" + + "\t\tdbo.TealeafPerformance\n" + + "\tWHERE\n" + + "\t\tdbo.TealeafPerformance.PerformanceType = 'RoundTrip'\n" + + "\tAND dbo.TealeafPerformance.Application = 'CLAS'\n" + + "\tAND dbo.TealeafPerformance.Date >= @BegDate\n" + + "\tAND dbo.TealeafPerformance.Date < @EndDate\n" + + "\tAND dbo.TealeafPerformance.Date >= '2014-04-01' --valid data only beginning here\n" + + "\tGROUP BY\n" + + "\t\t dbo.TealeafPerformance.Calendar_Year \n" + + "\t\t,dbo.TealeafPerformance.Calendar_Quarter \n" + + "\t\t,dbo.TealeafPerformance.Calendar_Quarter_Name \n" + + "\t\t,dbo.TealeafPerformance.Calendar_Month\n" + + "\t\t,dbo.TealeafPerformance.Calendar_Month_Name\n" + + "\t) ExecCountsCTE\n" + + "\tLEFT OUTER JOIN \n" + + "\t(\n" + + "\tSELECT \n" + + "\t\t dbo.Tealeaf.Calendar_Year \n" + + "\t\t,dbo.Tealeaf.Calendar_Quarter \n" + + "\t\t,dbo.Tealeaf.Calendar_Quarter_Name \n" + + "\t\t,dbo.Tealeaf.Calendar_Month\n" + + "\t\t,dbo.Tealeaf.Calendar_Month_Name\n" + + "\t\t,CASE\n" + + "\t\t\tWHEN (dbo.Tealeaf.ErrorType >= '500' OR dbo.Tealeaf.ErrorType IN ('Legacy','.NET')) THEN 'High Severity'\n" + + "\t\t\tWHEN (dbo.Tealeaf.ErrorType >= '400' AND dbo.Tealeaf.ErrorType < '500') THEN 'Low Severity'\n" + + "\t\t\tELSE 'Unknown'\n" + + "\t\t END AS ErrorSeverityCategory\n" + + "\t\t,SUM(ISNULL(dbo.Tealeaf.ErrorCount,0)) AS ErrorCount\n" + + "\tFROM \n" + + "\t\tdbo.Tealeaf\n" + + "\tWHERE\n" + + "\t\tdbo.Tealeaf.Application = 'CLAS'\n" + + "\tAND dbo.Tealeaf.Date >= @BegDate\n" + + "\tAND dbo.Tealeaf.Date < @EndDate\n" + + "\tAND dbo.Tealeaf.Date >= '2014-04-01' --valid data only beginning here\n" + + "\tGROUP BY\n" + + "\t\t dbo.Tealeaf.Calendar_Year \n" + + "\t\t,dbo.Tealeaf.Calendar_Quarter \n" + + "\t\t,dbo.Tealeaf.Calendar_Quarter_Name \n" + + "\t\t,dbo.Tealeaf.Calendar_Month\n" + + "\t\t,dbo.Tealeaf.Calendar_Month_Name\n" + + "\t\t,CASE\n" + + "\t\t\tWHEN (dbo.Tealeaf.ErrorType >= '500' OR dbo.Tealeaf.ErrorType IN ('Legacy','.NET')) THEN 'High Severity'\n" + + "\t\t\tWHEN (dbo.Tealeaf.ErrorType >= '400' AND dbo.Tealeaf.ErrorType < '500') THEN 'Low Severity'\n" + + "\t\t\tELSE 'Unknown'\n" + + "\t\t END \n" + + "\t) ErrorCountsCTE\n" + + "\t\tON\tErrorCountsCTE.Calendar_Year = ExecCountsCTE.Calendar_Year\n" + + "\t\tAND\tErrorCountsCTE.Calendar_Month = ExecCountsCTE.Calendar_Month\n" + + "GROUP BY\n" + + "\t ExecCountsCTE.Calendar_Year \n" + + "\t,ExecCountsCTE.Calendar_Quarter \n" + + "\t,ExecCountsCTE.Calendar_Quarter_Name \n" + + "\t,ExecCountsCTE.Calendar_Month \n" + + "\t,ExecCountsCTE.Calendar_Month_Name \n" + + "\t,ErrorCountsCTE.ErrorSeverityCategory \n" + + ")\n" + + "SELECT\n" + + "\t DataCTE.Calendar_Year\n" + + "\t,DataCTE.Calendar_Quarter \n" + + "\t,DataCTE.Calendar_Quarter_Name \n" + + "\t,DataCTE.Calendar_Month \n" + + "\t,DataCTE.Calendar_Month_Name \n" + + "\t,DataCTE.ErrorSeverityCategory \n" + + "\t,DataCTE.ScriptExecCount\n" + + "\t,DataCTE.ScriptErrorCount\n" + + "\t,DataCTE.PercentErrors\n" + + "\t,PercentTotalApply.TotalPercent\n" + + "\t,(100.0 - (PercentTotalApply.TotalPercent * 100.0)) AS SuccessPercentile\n" + + "FROM\n" + + "\tDataCTE\n" + + "\tCROSS APPLY\n" + + "\t\t(\n" + + "\t\tSELECT\n" + + "\t\t\t DataCTE2.Calendar_Year \n" + + "\t\t\t,DataCTE2.Calendar_Month \n" + + "\t\t\t,DataCTE2.Calendar_Month_Name \n" + + "\t\t\t,SUM(DataCTE2.PercentErrors) AS TotalPercent\n" + + "\t\tFROM\n" + + "\t\t\tDataCTE DataCTE2\n" + + "\t\tWHERE\n" + + "\t\t\tDataCTE2.Calendar_Year\t\t\t= DataCTE.Calendar_Year\t\n" + + "\t\tAND\tDataCTE2.Calendar_Month\t\t\t= DataCTE.Calendar_Month\n" + + "\t\tGROUP BY\n" + + "\t\t\t DataCTE2.Calendar_Year \n" + + "\t\t\t,DataCTE2.Calendar_Month \n" + + "\t\t\t,DataCTE2.Calendar_Month_Name \n" + + "\t\t) PercentTotalApply", + "Tables:\n" + + "dbo.Tealeaf\n" + + "dbo.TealeafPerformance\n" + + "\nFields:\n" + + "dbo.Tealeaf.Application\n" + + "dbo.Tealeaf.Calendar_Month\n" + + "dbo.Tealeaf.Calendar_Month_Name\n" + + "dbo.Tealeaf.Calendar_Quarter\n" + + "dbo.Tealeaf.Calendar_Quarter_Name\n" + + "dbo.Tealeaf.Calendar_Year\n" + + "dbo.Tealeaf.Date\n" + + "dbo.Tealeaf.ErrorCount\n" + + "dbo.Tealeaf.ErrorType\n" + + "dbo.TealeafPerformance.Application\n" + + "dbo.TealeafPerformance.Calendar_Month\n" + + "dbo.TealeafPerformance.Calendar_Month_Name\n" + + "dbo.TealeafPerformance.Calendar_Quarter\n" + + "dbo.TealeafPerformance.Calendar_Quarter_Name\n" + + "dbo.TealeafPerformance.Calendar_Year\n" + + "dbo.TealeafPerformance.Date\n" + + "dbo.TealeafPerformance.PerformanceType"); + } + + + public static void testTableFunction() { + doTest("CREATE VIEW [dbo].[ERRORS]\n" + + "AS\n" + + "WITH DESC_CTE\n" + + "AS\n" + + " (\n" + + " SELECT rid\n" + + " ,POS = ID\n" + + " ,c_desc = LTRIM( RTRIM( value ))\n" + + " FROM [dbo].[reasons]\n" + + " CROSS APPLY\n" + + " (\n" + + " SELECT ID = ROW_NUMBER() OVER (PARTITION BY reasons_ID1\n" + + " ORDER BY\n" + + " reasons_ID2\n" + + " )\n" + + " ,value\n" + + " FROM STRING_SPLIT(REPLACE(c_desc ,'|~|',CHAR(7)),CHAR(7)) PM\n" + + " ) CR\n" + + " WHERE [IsDeleted] ='0'\n" + + " )\n" + + "SELECT [derid],\n" + + " POS =ISNULL(CR.[POS],1) ,\n" + + " [errorcode],\n" + + " [c_desc]= CAST(NULLIF(CR.c_desc,'') AS VARCHAR(300))\n" + + "FROM dbo.d_errors CE\n" + + "LEFT JOIN DESC_CTE CR\n" + + "ON CR.reasons_ID =CE.errorcode\n" + + "WHERE 1 = 1\n" + + " AND CE.IsDeleted = 0;", + "Tables:\n" + + "[dbo].[reasons]\n" + + "dbo.d_errors\n" + + "\n" + + "Fields:\n" + + "(table-valued function:STRING_SPLIT).value\n" + + "[dbo].[reasons].[IsDeleted]\n" + + "[dbo].[reasons].c_desc\n" + + "[dbo].[reasons].reasons_ID\n" + + "[dbo].[reasons].reasons_ID1\n" + + "[dbo].[reasons].reasons_ID2\n" + + "[dbo].[reasons].rid\n" + + "dbo.d_errors.[derid]\n" + + "dbo.d_errors.[errorcode]\n" + + "dbo.d_errors.errorcode\n" + + "dbo.d_errors.IsDeleted"); + } + + + public static void testColumnAlias() { + doTest("select C*2 as C from T", + "Tables:\n" + + "T\n" + + "\n" + + "Fields:\n" + + "T.C"); + } + + public static void testFile1() { + doTestFile(gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "mssql/column_resolver/pivot.sql", + "Tables:\n" + + "Imported.ADDRESS\n" + + "Imported.STATES\n" + + "p(piviot_table)\n" + + "\n" + + "Fields:\n" + + "(pivot-table:p(piviot_table)).[1]\n" + + "(pivot-table:p(piviot_table)).[2]\n" + + "(pivot-table:p(piviot_table)).[3]\n" + + "(table-valued function:STRING_SPLIT).[value]\n" + + "Imported.ADDRESS.[ADDRESS_ID]\n" + + "Imported.ADDRESS.ADDRESS_ADD_DATE\n" + + "Imported.ADDRESS.ADDRESS_CHANGE_DATE\n" + + "Imported.ADDRESS.ADDRESS_ID\n" + + "Imported.ADDRESS.ADDRESS_LINES\n" + + "Imported.ADDRESS.CITY\n" + + "Imported.ADDRESS.COUNTRY\n" + + "Imported.ADDRESS.IsDeleted\n" + + "Imported.ADDRESS.RESIDENTS\n" + + "Imported.ADDRESS.STATE\n" + + "Imported.ADDRESS.ZIP\n" + + "Imported.STATES.IsDeleted\n" + + "Imported.STATES.STATES_DESC\n" + + "Imported.STATES.STATES_ID"); + } + public static void testTempTable() { + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmssql); + sqlParser.sqltext = "SELECT Emplid, SUBSTRING(RTRIM(Name),LEN(RTRIM(Name))-6, 7) AS Other_ID\n" + + "\t\tINTO #DupNames\n" + + "\t\tFROM [SnapShot].UAHEPRD.PS_NAMES\n" + + "\t\tWHERE (First_Name LIKE '%DUPLICATE%ID%' OR First_Name = 'DUPLICATE')\n" + + "\t\t\tAND Last_Name = 'CANCEL'\n" + + "\t\t\tAND NAME_TYPE = 'PRI'"; + int i = sqlParser.parse(); + assertTrue(i == 0); + TSelectSqlStatement select = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); + assertTrue(select.getSyntaxHints().size() == 0); + } + + public static void testWhereCurrentOf() { + doTest(" DELETE FROM HumanResources.EmployeePayHistory WHERE CURRENT OF complex_cursor;", + "Tables:\n" + + "HumanResources.EmployeePayHistory\n" + + "\n" + + "Fields:"); + } + +} diff --git a/src/test/java/gettablecolumn/testSnowflake.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSnowflake.java similarity index 97% rename from src/test/java/gettablecolumn/testSnowflake.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSnowflake.java index c2c2a5fa..45e08bb3 100644 --- a/src/test/java/gettablecolumn/testSnowflake.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSnowflake.java @@ -1,106 +1,106 @@ -package gettablecolumn; - -import demos.gettablecolumns.TGetTableColumn; -import gudusoft.gsqlparser.EDbVendor; -import junit.framework.TestCase; - -public class testSnowflake extends TestCase { - - static void doTest(String inputQuery, String desireResult){ - TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvsnowflake); - getTableColumn.isConsole = false; - getTableColumn.showTableEffect = false; - getTableColumn.showColumnLocation = false; - getTableColumn.showTreeStructure = false; - getTableColumn.showDatatype = true; - getTableColumn.runText(inputQuery); - // System.out.println(getTableColumn.outList.toString().trim()); - assertTrue(getTableColumn.outList.toString().trim().equalsIgnoreCase(desireResult)); - } - - public static void testCreateFunction() { - doTest("create function profit()\n" + - " returns numeric(11, 2)\n" + - " as\n" + - " $$\n" + - " select sum((retail_price - wholesale_price) * number_sold) from purchases\n" + - " $$\n" + - " ;", - "Tables:\n" + - "purchases\n" + - "\n" + - "Fields:\n" + - "purchases.number_sold\n" + - "purchases.retail_price\n" + - "purchases.wholesale_price"); - } - - public static void testUpdate() { - - doTest("update t1\n" + - "set t1.number_column = t1.number_column + t2.number_column, t1.text_column = 'ASDF'\n" + - "from t2\n" + - "where t1.key_column = t2.t1_key and t1.number_column < 10;", - "Tables:\n" + - "t1\n" + - "t2\n" + - "\n" + - "Fields:\n" + - "t1.key_column\n" + - "t1.number_column\n" + - "t1.text_column\n" + - "t2.number_column\n" + - "t2.t1_key"); - } - - public static void testLateralColumnAlias() { - doTest(" select \n" + - " account_id\n" + - " , arr_change as x\n" + - " , start_arr as y\n" + - " , avg(x/y) as avg_upgrade\n" + - " from account_product_month\n" + - " group by 1", - "Tables:\n" + - "account_product_month\n" + - "\n" + - "Fields:\n" + - "account_product_month.account_id\n" + - "account_product_month.arr_change\n" + - "account_product_month.start_arr"); - } - - public static void testDateTimePart() { - doTest("create or replace VIEW PAYMENTS.APN_RT.PARTNER_REPORTING AS\n" + - "SELECT (CASE WHEN substate IN ('REJECTED', 'RETURNED') THEN round((datediff(second, to_timestamp(Create_DATETIME)::timestamp, to_timestamp(Status_updatedate)::timestamp))/60/60/24, 2) END) AGE_DAYS\n" + - ", partner_accounttype FROM payments.apn_rt.apn_report_data ;", - "Tables:\n" + - "payments.apn_rt.apn_report_data\n" + - "\n" + - "Fields:\n" + - "payments.apn_rt.apn_report_data.Create_DATETIME\n" + - "payments.apn_rt.apn_report_data.partner_accounttype\n" + - "payments.apn_rt.apn_report_data.Status_updatedate\n" + - "payments.apn_rt.apn_report_data.substate"); - } - - public static void testCTEWithSameName() { - doTest("WITH cte_2 AS \n" + - "(\n" + - "\tSELECT ID, \"NAME\",'cc'\n" + - "\tFROM SUNNY.HR.TEST\n" + - "),\n" + - "cte_2 AS \n" + - "(\n" + - "\tSELECT ID, \"NAME\",*\n" + - "\tFROM cte_2\n" + - ")\n" + - "select * FROM cte_2", - "Tables:\n" + - "SUNNY.HR.TEST\n" + - "\n" + - "Fields:\n" + - "SUNNY.HR.TEST.\"NAME\"\n" + - "SUNNY.HR.TEST.ID"); - } -} +package gudusoft.gsqlparser.gettablecolumnTest; + +import demos.gettablecolumns.TGetTableColumn; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testSnowflake extends TestCase { + + static void doTest(String inputQuery, String desireResult){ + TGetTableColumn getTableColumn = new TGetTableColumn(EDbVendor.dbvsnowflake); + getTableColumn.isConsole = false; + getTableColumn.showTableEffect = false; + getTableColumn.showColumnLocation = false; + getTableColumn.showTreeStructure = false; + getTableColumn.showDatatype = true; + getTableColumn.runText(inputQuery); + // System.out.println(getTableColumn.outList.toString().trim()); + assertTrue(getTableColumn.outList.toString().trim().equalsIgnoreCase(desireResult)); + } + + public static void testCreateFunction() { + doTest("create function profit()\n" + + " returns numeric(11, 2)\n" + + " as\n" + + " $$\n" + + " select sum((retail_price - wholesale_price) * number_sold) from purchases\n" + + " $$\n" + + " ;", + "Tables:\n" + + "purchases\n" + + "\n" + + "Fields:\n" + + "purchases.number_sold\n" + + "purchases.retail_price\n" + + "purchases.wholesale_price"); + } + + public static void testUpdate() { + + doTest("update t1\n" + + "set t1.number_column = t1.number_column + t2.number_column, t1.text_column = 'ASDF'\n" + + "from t2\n" + + "where t1.key_column = t2.t1_key and t1.number_column < 10;", + "Tables:\n" + + "t1\n" + + "t2\n" + + "\n" + + "Fields:\n" + + "t1.key_column\n" + + "t1.number_column\n" + + "t1.text_column\n" + + "t2.number_column\n" + + "t2.t1_key"); + } + + public static void testLateralColumnAlias() { + doTest(" select \n" + + " account_id\n" + + " , arr_change as x\n" + + " , start_arr as y\n" + + " , avg(x/y) as avg_upgrade\n" + + " from account_product_month\n" + + " group by 1", + "Tables:\n" + + "account_product_month\n" + + "\n" + + "Fields:\n" + + "account_product_month.account_id\n" + + "account_product_month.arr_change\n" + + "account_product_month.start_arr"); + } + + public static void testDateTimePart() { + doTest("create or replace VIEW PAYMENTS.APN_RT.PARTNER_REPORTING AS\n" + + "SELECT (CASE WHEN substate IN ('REJECTED', 'RETURNED') THEN round((datediff(second, to_timestamp(Create_DATETIME)::timestamp, to_timestamp(Status_updatedate)::timestamp))/60/60/24, 2) END) AGE_DAYS\n" + + ", partner_accounttype FROM payments.apn_rt.apn_report_data ;", + "Tables:\n" + + "payments.apn_rt.apn_report_data\n" + + "\n" + + "Fields:\n" + + "payments.apn_rt.apn_report_data.Create_DATETIME\n" + + "payments.apn_rt.apn_report_data.partner_accounttype\n" + + "payments.apn_rt.apn_report_data.Status_updatedate\n" + + "payments.apn_rt.apn_report_data.substate"); + } + + public static void testCTEWithSameName() { + doTest("WITH cte_2 AS \n" + + "(\n" + + "\tSELECT ID, \"NAME\",'cc'\n" + + "\tFROM SUNNY.HR.TEST\n" + + "),\n" + + "cte_2 AS \n" + + "(\n" + + "\tSELECT ID, \"NAME\",*\n" + + "\tFROM cte_2\n" + + ")\n" + + "select * FROM cte_2", + "Tables:\n" + + "SUNNY.HR.TEST\n" + + "\n" + + "Fields:\n" + + "SUNNY.HR.TEST.\"NAME\"\n" + + "SUNNY.HR.TEST.ID"); + } +} diff --git a/src/test/java/gettablecolumn/testSparkSQL.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSparkSQL.java similarity index 98% rename from src/test/java/gettablecolumn/testSparkSQL.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSparkSQL.java index 5a730e23..3c6cd9d4 100644 --- a/src/test/java/gettablecolumn/testSparkSQL.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testSparkSQL.java @@ -1,4 +1,4 @@ -package gettablecolumn; +package gudusoft.gsqlparser.gettablecolumnTest; import demos.gettablecolumns.TGetTableColumn; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/gettablecolumn/testStarColumn.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testStarColumn.java similarity index 96% rename from src/test/java/gettablecolumn/testStarColumn.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testStarColumn.java index 3d542219..420be044 100644 --- a/src/test/java/gettablecolumn/testStarColumn.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testStarColumn.java @@ -1,167 +1,166 @@ -package gettablecolumn; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.nodes.TParseTreeVisitor; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.sqlenv.TSQLCatalog; -import gudusoft.gsqlparser.sqlenv.TSQLEnv; -import gudusoft.gsqlparser.sqlenv.TSQLSchema; -import gudusoft.gsqlparser.sqlenv.TSQLTable; -import junit.framework.TestCase; - -import java.util.ArrayList; - -public class testStarColumn extends TestCase { - - public static void test1(){ - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "select emp.* from emp,dept"; - sqlParser.setSqlEnv(new TOracleEnv1()); - sqlParser.parse(); - nodeVisitor columnVisitor = new nodeVisitor(); - sqlParser.getSqlstatements().acceptChildren(columnVisitor); - ArrayList columns = columnVisitor.columns; - assertTrue(columns.get(0).equalsIgnoreCase("EMP.NO")); - assertTrue(columns.get(1).equalsIgnoreCase("EMP.NAME")); - assertTrue(columns.get(2).equalsIgnoreCase("EMP.DEPTNO")); - } - - public static void test11(){ - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "select dept.* from emp,dept"; - sqlParser.setSqlEnv(new TOracleEnv1()); - sqlParser.parse(); - nodeVisitor columnVisitor = new nodeVisitor(); - sqlParser.getSqlstatements().acceptChildren(columnVisitor); - ArrayList columns = columnVisitor.columns; - assertTrue(columns.get(0).equalsIgnoreCase("DEPT.NO")); - assertTrue(columns.get(1).equalsIgnoreCase("DEPT.NAME")); - assertTrue(columns.get(2).equalsIgnoreCase("DEPT.LOCATION")); - } - - public static void test2(){ - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "select * from emp,dept"; - sqlParser.setSqlEnv(new TOracleEnv1()); - sqlParser.parse(); - nodeVisitor columnVisitor = new nodeVisitor(); - sqlParser.getSqlstatements().acceptChildren(columnVisitor); - ArrayList columns = columnVisitor.columns; - assertTrue(columns.get(0).equalsIgnoreCase("EMP.NO")); - assertTrue(columns.get(1).equalsIgnoreCase("EMP.NAME")); - assertTrue(columns.get(2).equalsIgnoreCase("EMP.DEPTNO")); - assertTrue(columns.get(3).equalsIgnoreCase("DEPT.NO")); - assertTrue(columns.get(4).equalsIgnoreCase("DEPT.NAME")); - assertTrue(columns.get(5).equalsIgnoreCase("DEPT.LOCATION")); - } - - public static void test3(){ - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "select * from emp"; - sqlParser.setSqlEnv(new TOracleEnv1()); - sqlParser.parse(); - nodeVisitor columnVisitor = new nodeVisitor(); - sqlParser.getSqlstatements().acceptChildren(columnVisitor); - ArrayList columns = columnVisitor.columns; - assertTrue(columns.get(0).equalsIgnoreCase("EMP.NO")); - assertTrue(columns.get(1).equalsIgnoreCase("EMP.NAME")); - assertTrue(columns.get(2).equalsIgnoreCase("EMP.DEPTNO")); - } - - public static void test4(){ - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "select o1.*, o2.c1 from (select c123, c345 from some_table) o1, other_table o2"; - sqlParser.setSqlEnv(new TOracleEnv1()); - assertTrue(sqlParser.parse()==0); - nodeVisitor columnVisitor = new nodeVisitor(); - sqlParser.getSqlstatements().acceptChildren(columnVisitor); - ArrayList columns = columnVisitor.columns; - assertTrue(columns.get(0).equalsIgnoreCase("c123")); - assertTrue(columns.get(1).equalsIgnoreCase("c345")); - } - - public static void testCTE(){ - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmssql); - sqlParser.sqltext = "CREATE VIEW [dwh_sws_reports].[DimGroupCorporation] AS WITH src AS (\n" + - " SELECT \n" + - " [PackageExecutionID] = tb1.[PackageExecutionID2], \n" + - " [SourceTK] = tb1.[SourceTK], \n" + - " [ValidFromTC] = tb1.[ValidFromTC], \n" + - " [ChecksumTC] = tb1.[ChecksumTC], \n" + - " [IsActiveTC] = tb1.[IsActiveTC], \n" + - " [DimGroupCorporationSK] = tb1.[DimGroupCorporationSK], \n" + - " [GroupCorporationNo] = tb1.[GroupCorporationNo], \n" + - " [GroupCorporationName] = tb1.[GroupCorporationName], \n" + - " [GroupCorporationName_ERP] = tb1.[GroupCorporationName_ERP], \n" + - " [GroupCorporationNameAnnex_ERP] = tb1.[GroupCorporationNameAnnex_ERP], \n" + - " [GroupCorporationNameComplete_ERP] = tb1.[GroupCorporationNameComplete_ERP], \n" + - " [FinalAssemblyActivityCode] = tb1.[FinalAssemblyActivityCode], \n" + - " [ShipmentActivityCode] = tb1.[ShipmentActivityCode], \n" + - " [IsUsedInBAAN] = tb1.[IsUsedInBAAN], \n" + - " [IsActiveInBAAN] = tb1.[IsActiveInBAAN], \n" + - " [IsActive] = tb1.[IsActive] \n" + - " FROM \n" + - " [star_software_solutions].[DimGroupCorporation] AS tb1 \n" + - " WHERE \n" + - " 1 = 1\n" + - " ) \n" + - "SELECT \n" + - " * \n" + - "FROM \n" + - " [src] "; - - assertTrue(sqlParser.parse()==0); - nodeVisitor columnVisitor = new nodeVisitor(); - sqlParser.getSqlstatements().acceptChildren(columnVisitor); - ArrayList columns = columnVisitor.columns; - assertTrue(columns.size() == 16); - assertTrue(columns.get(0).equalsIgnoreCase("[PackageExecutionID]")); -// int i = 0; -// for(String s:columns){ -// i++; -// System.out.println(i+":\t"+s); -// } - } -} - -class nodeVisitor extends TParseTreeVisitor { - ArrayList columns = new ArrayList<>(); - - public void preVisit(TObjectName node) { - if (node.toString().endsWith("*")){ - if (node.getColumnsLinkedToStarColumn().size() > 0){ - for(String column : node.getColumnsLinkedToStarColumn()){ - columns.add(column); - } - //columns.addAll(node.getColumnsLinkedToStarColumn()); - }else{ - System.out.println("No linked column found for:"+node.toString()); - } - } - - } -} - -class TOracleEnv1 extends TSQLEnv { - - public TOracleEnv1(){ - super(EDbVendor.dbvoracle); - initSQLEnv(); - } - - @Override - public void initSQLEnv() { - TSQLCatalog sqlCatalog = createSQLCatalog("default"); - TSQLSchema sqlSchema = sqlCatalog.createSchema("scott"); - TSQLTable aTab = sqlSchema.createTable("emp"); - aTab.addColumn("no"); - aTab.addColumn("name"); - aTab.addColumn("deptNo"); - TSQLTable bTab = sqlSchema.createTable("dept"); - bTab.addColumn("no"); - bTab.addColumn("name"); - bTab.addColumn("location"); - } -} +package gudusoft.gsqlparser.gettablecolumnTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TObjectName; +import gudusoft.gsqlparser.nodes.TParseTreeVisitor; +import gudusoft.gsqlparser.sqlenv.TSQLCatalog; +import gudusoft.gsqlparser.sqlenv.TSQLEnv; +import gudusoft.gsqlparser.sqlenv.TSQLSchema; +import gudusoft.gsqlparser.sqlenv.TSQLTable; +import junit.framework.TestCase; + +import java.util.ArrayList; + +public class testStarColumn extends TestCase { + + public static void test1(){ + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + sqlParser.sqltext = "select emp.* from emp,dept"; + sqlParser.setSqlEnv(new TOracleEnv1()); + sqlParser.parse(); + nodeVisitor columnVisitor = new nodeVisitor(); + sqlParser.getSqlstatements().acceptChildren(columnVisitor); + ArrayList columns = columnVisitor.columns; + assertTrue(columns.get(0).equalsIgnoreCase("EMP.NO")); + assertTrue(columns.get(1).equalsIgnoreCase("EMP.NAME")); + assertTrue(columns.get(2).equalsIgnoreCase("EMP.DEPTNO")); + } + + public static void test11(){ + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + sqlParser.sqltext = "select dept.* from emp,dept"; + sqlParser.setSqlEnv(new TOracleEnv1()); + sqlParser.parse(); + nodeVisitor columnVisitor = new nodeVisitor(); + sqlParser.getSqlstatements().acceptChildren(columnVisitor); + ArrayList columns = columnVisitor.columns; + assertTrue(columns.get(0).equalsIgnoreCase("DEPT.NO")); + assertTrue(columns.get(1).equalsIgnoreCase("DEPT.NAME")); + assertTrue(columns.get(2).equalsIgnoreCase("DEPT.LOCATION")); + } + + public static void test2(){ + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + sqlParser.sqltext = "select * from emp,dept"; + sqlParser.setSqlEnv(new TOracleEnv1()); + sqlParser.parse(); + nodeVisitor columnVisitor = new nodeVisitor(); + sqlParser.getSqlstatements().acceptChildren(columnVisitor); + ArrayList columns = columnVisitor.columns; + assertTrue(columns.get(0).equalsIgnoreCase("EMP.NO")); + assertTrue(columns.get(1).equalsIgnoreCase("EMP.NAME")); + assertTrue(columns.get(2).equalsIgnoreCase("EMP.DEPTNO")); + assertTrue(columns.get(3).equalsIgnoreCase("DEPT.NO")); + assertTrue(columns.get(4).equalsIgnoreCase("DEPT.NAME")); + assertTrue(columns.get(5).equalsIgnoreCase("DEPT.LOCATION")); + } + + public static void test3(){ + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + sqlParser.sqltext = "select * from emp"; + sqlParser.setSqlEnv(new TOracleEnv1()); + sqlParser.parse(); + nodeVisitor columnVisitor = new nodeVisitor(); + sqlParser.getSqlstatements().acceptChildren(columnVisitor); + ArrayList columns = columnVisitor.columns; + assertTrue(columns.get(0).equalsIgnoreCase("EMP.NO")); + assertTrue(columns.get(1).equalsIgnoreCase("EMP.NAME")); + assertTrue(columns.get(2).equalsIgnoreCase("EMP.DEPTNO")); + } + + public static void test4(){ + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + sqlParser.sqltext = "select o1.*, o2.c1 from (select c123, c345 from some_table) o1, other_table o2"; + sqlParser.setSqlEnv(new TOracleEnv1()); + assertTrue(sqlParser.parse()==0); + nodeVisitor columnVisitor = new nodeVisitor(); + sqlParser.getSqlstatements().acceptChildren(columnVisitor); + ArrayList columns = columnVisitor.columns; + assertTrue(columns.get(0).equalsIgnoreCase("c123")); + assertTrue(columns.get(1).equalsIgnoreCase("c345")); + } + + public static void testCTE(){ + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmssql); + sqlParser.sqltext = "CREATE VIEW [dwh_sws_reports].[DimGroupCorporation] AS WITH src AS (\n" + + " SELECT \n" + + " [PackageExecutionID] = tb1.[PackageExecutionID2], \n" + + " [SourceTK] = tb1.[SourceTK], \n" + + " [ValidFromTC] = tb1.[ValidFromTC], \n" + + " [ChecksumTC] = tb1.[ChecksumTC], \n" + + " [IsActiveTC] = tb1.[IsActiveTC], \n" + + " [DimGroupCorporationSK] = tb1.[DimGroupCorporationSK], \n" + + " [GroupCorporationNo] = tb1.[GroupCorporationNo], \n" + + " [GroupCorporationName] = tb1.[GroupCorporationName], \n" + + " [GroupCorporationName_ERP] = tb1.[GroupCorporationName_ERP], \n" + + " [GroupCorporationNameAnnex_ERP] = tb1.[GroupCorporationNameAnnex_ERP], \n" + + " [GroupCorporationNameComplete_ERP] = tb1.[GroupCorporationNameComplete_ERP], \n" + + " [FinalAssemblyActivityCode] = tb1.[FinalAssemblyActivityCode], \n" + + " [ShipmentActivityCode] = tb1.[ShipmentActivityCode], \n" + + " [IsUsedInBAAN] = tb1.[IsUsedInBAAN], \n" + + " [IsActiveInBAAN] = tb1.[IsActiveInBAAN], \n" + + " [IsActive] = tb1.[IsActive] \n" + + " FROM \n" + + " [star_software_solutions].[DimGroupCorporation] AS tb1 \n" + + " WHERE \n" + + " 1 = 1\n" + + " ) \n" + + "SELECT \n" + + " * \n" + + "FROM \n" + + " [src] "; + + assertTrue(sqlParser.parse()==0); + nodeVisitor columnVisitor = new nodeVisitor(); + sqlParser.getSqlstatements().acceptChildren(columnVisitor); + ArrayList columns = columnVisitor.columns; + assertTrue(columns.size() == 16); + assertTrue(columns.get(0).equalsIgnoreCase("[PackageExecutionID]")); +// int i = 0; +// for(String s:columns){ +// i++; +// System.out.println(i+":\t"+s); +// } + } +} + +class nodeVisitor extends TParseTreeVisitor { + ArrayList columns = new ArrayList<>(); + + public void preVisit(TObjectName node) { + if (node.toString().endsWith("*")){ + if (node.getColumnsLinkedToStarColumn().size() > 0){ + for(String column : node.getColumnsLinkedToStarColumn()){ + columns.add(column); + } + //columns.addAll(node.getColumnsLinkedToStarColumn()); + }else{ + System.out.println("No linked column found for:"+node.toString()); + } + } + + } +} + +class TOracleEnv1 extends TSQLEnv { + + public TOracleEnv1(){ + super(EDbVendor.dbvoracle); + initSQLEnv(); + } + + @Override + public void initSQLEnv() { + TSQLCatalog sqlCatalog = createSQLCatalog("default"); + TSQLSchema sqlSchema = sqlCatalog.createSchema("scott"); + TSQLTable aTab = sqlSchema.createTable("emp"); + aTab.addColumn("no"); + aTab.addColumn("name"); + aTab.addColumn("deptNo"); + TSQLTable bTab = sqlSchema.createTable("dept"); + bTab.addColumn("no"); + bTab.addColumn("name"); + bTab.addColumn("location"); + } +} diff --git a/src/test/java/gettablecolumn/testStarColumnInfile.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testStarColumnInfile.java similarity index 97% rename from src/test/java/gettablecolumn/testStarColumnInfile.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testStarColumnInfile.java index 27fdb705..0dd79787 100644 --- a/src/test/java/gettablecolumn/testStarColumnInfile.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testStarColumnInfile.java @@ -1,6 +1,6 @@ -package gettablecolumn; +package gudusoft.gsqlparser.gettablecolumnTest; -import common.gspCommon; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TBaseType; import gudusoft.gsqlparser.TCustomSqlStatement; @@ -12,7 +12,6 @@ import java.io.*; import java.nio.charset.Charset; -import java.util.Arrays; public class testStarColumnInfile extends TestCase { diff --git a/src/test/java/gettablecolumn/testTC1.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testTC1.java similarity index 95% rename from src/test/java/gettablecolumn/testTC1.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testTC1.java index 588db256..c58effd3 100644 --- a/src/test/java/gettablecolumn/testTC1.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testTC1.java @@ -1,112 +1,110 @@ -package gettablecolumn; -/* - * Date: 15-4-30 - */ - -import demos.gettablecolumns.TGetTableColumn; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.IMetaDatabase; -import junit.framework.TestCase; - -/** - * @deprecated As of v2.0.3.1, please use {@link #testSQLEnv} instead - */ -class myMetaDB2 implements IMetaDatabase { - - String columns[][] = { - {"server","db","DW","AcctInfo_PT","ACCT_ID"}, - {"server","db","DW","ImSysInfo_BC","ACCT_ID"}, - {"server","db","DW","AcctInfo_PT","SystemOfRec"}, - {"server","db","DW","ImSysInfo_BC","SystemOfRec"}, - {"server","db","DW","AcctInfo_PT","OfficerCode"}, - {"server","db","DW","ImSysInfo_BC","OpeningDate"}, - }; - - public boolean checkColumn(String server, String database,String schema, String table, String column){ - boolean bServer,bDatabase,bSchema,bTable,bColumn,bRet = false; - for (int i=0; ia.deptno(expr)\n" + - " -->a.deptno\n" + - " -->deptno(expr)\n" + - " -->scott.emp.deptno\n" + - "\"Employees\"\n" + - " -->a.num_emp/b.total_count(expr)\n" + - " -->a.num_emp\n" + - " -->COUNT(*)(expr)\n" + - " -->scott.emp.*\n" + - " -->b.total_count\n" + - " -->COUNT(*)(expr)\n" + - " -->scott.emp.*\n" + - "\"Salary\"\n" + - " -->a.sal_sum/b.total_sal(expr)\n" + - " -->a.sal_sum\n" + - " -->SUM(SAL)(expr)\n" + - " -->scott.emp.SAL\n" + - " -->b.total_sal\n" + - " -->SUM(sal)(expr)\n" + - " -->scott.emp.sal"; - // System.out.println ("required:\n"+requireStr+"\n\nActual:\n"+actualStr); - assertTrue(actualStr.equalsIgnoreCase(requireStr)); - } - - public static void test2(){ - String sqltext = "create or replace view test\n" + - "(col1,col2)\n" + - "as \n" + - "select a, (select b from table2 where table2.c=table1.a) from table1\n" + - "union \n" + - "select d, e-g from table2"; - - - // (select b from table2 where table2.c=table1.a) 该查询中的 b 可用属于 table2, 也可以属于上层的 table1,有两个候选table - // 在这里选择使用 TBaseType.GUESS_COLUMN_STRATEGY_NEAREST - int b = TBaseType.GUESS_COLUMN_STRATEGY; - TBaseType.GUESS_COLUMN_STRATEGY = TBaseType.GUESS_COLUMN_STRATEGY_NEAREST; - - TTraceColumn traceColumn = new TTraceColumn(EDbVendor.dbvoracle); - traceColumn.runText(sqltext); - - assertTrue(traceColumn.getInfos().toString().trim().equalsIgnoreCase("col1\n" + - "col2\n" + - " -->a(expr)\n" + - " -->table1.a\n" + - " -->(select b from table2 where table2.c=table1.a)(expr)\n" + - " -->b(expr)\n" + - " -->table2.b\n" + - " -->d(expr)\n" + - " -->table2.d\n" + - " -->e-g(expr)\n" + - " -->table2.e\n" + - " -->table2.g")); - - TBaseType.GUESS_COLUMN_STRATEGY = b; - } - -} +package gudusoft.gsqlparser.gettablecolumnTest; + +import demos.traceColumn.TTraceColumn; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TBaseType; +import junit.framework.TestCase; + + +public class testTraceColumn extends TestCase { + + public static void test1(){ + String sqltext = "SELECT a.deptno \"Department\", \n" + + " a.num_emp/b.total_count \"Employees\", \n" + + " a.sal_sum/b.total_sal \"Salary\"\n" + + " FROM\n" + + "(SELECT deptno, COUNT(*) num_emp, SUM(SAL) sal_sum\n" + + " FROM scott.emp\n" + + " GROUP BY deptno) a,\n" + + "(SELECT COUNT(*) total_count, SUM(sal) total_sal\n" + + " FROM scott.emp) b"; + + //System.out.println(sqltext); + TTraceColumn traceColumn = new TTraceColumn(EDbVendor.dbvoracle); + traceColumn.runText(sqltext); + //System.out.print(traceColumn.getInfos().toString().trim()); + String actualStr = traceColumn.getInfos().toString().trim(); + String requireStr = "\"Department\"\n" + + " -->a.deptno(expr)\n" + + " -->a.deptno\n" + + " -->deptno(expr)\n" + + " -->scott.emp.deptno\n" + + "\"Employees\"\n" + + " -->a.num_emp/b.total_count(expr)\n" + + " -->a.num_emp\n" + + " -->COUNT(*)(expr)\n" + + " -->scott.emp.*\n" + + " -->b.total_count\n" + + " -->COUNT(*)(expr)\n" + + " -->scott.emp.*\n" + + "\"Salary\"\n" + + " -->a.sal_sum/b.total_sal(expr)\n" + + " -->a.sal_sum\n" + + " -->SUM(SAL)(expr)\n" + + " -->scott.emp.SAL\n" + + " -->b.total_sal\n" + + " -->SUM(sal)(expr)\n" + + " -->scott.emp.sal"; + // System.out.println ("required:\n"+requireStr+"\n\nActual:\n"+actualStr); + assertTrue(actualStr.equalsIgnoreCase(requireStr)); + } + + public static void test2(){ + String sqltext = "create or replace view test\n" + + "(col1,col2)\n" + + "as \n" + + "select a, (select b from table2 where table2.c=table1.a) from table1\n" + + "union \n" + + "select d, e-g from table2"; + + + // (select b from table2 where table2.c=table1.a) 该查询中的 b 可用属于 table2, 也可以属于上层的 table1,有两个候选table + // 在这里选择使用 TBaseType.GUESS_COLUMN_STRATEGY_NEAREST + int b = TBaseType.GUESS_COLUMN_STRATEGY; + TBaseType.GUESS_COLUMN_STRATEGY = TBaseType.GUESS_COLUMN_STRATEGY_NEAREST; + + TTraceColumn traceColumn = new TTraceColumn(EDbVendor.dbvoracle); + traceColumn.runText(sqltext); + + assertTrue(traceColumn.getInfos().toString().trim().equalsIgnoreCase("col1\n" + + "col2\n" + + " -->a(expr)\n" + + " -->table1.a\n" + + " -->(select b from table2 where table2.c=table1.a)(expr)\n" + + " -->b(expr)\n" + + " -->table2.b\n" + + " -->d(expr)\n" + + " -->table2.d\n" + + " -->e-g(expr)\n" + + " -->table2.e\n" + + " -->table2.g")); + + TBaseType.GUESS_COLUMN_STRATEGY = b; + } + +} diff --git a/src/test/java/gettablecolumn/testUpdate.java b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testUpdate.java similarity index 98% rename from src/test/java/gettablecolumn/testUpdate.java rename to src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testUpdate.java index 40ef9b26..ae43ee21 100644 --- a/src/test/java/gettablecolumn/testUpdate.java +++ b/src/test/java/gudusoft/gsqlparser/gettablecolumnTest/testUpdate.java @@ -1,4 +1,4 @@ -package gettablecolumn; +package gudusoft.gsqlparser.gettablecolumnTest; import demos.gettablecolumns.TGetTableColumn; diff --git a/src/test/java/greenplum/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testAlterTable.java similarity index 97% rename from src/test/java/greenplum/testAlterTable.java rename to src/test/java/gudusoft/gsqlparser/greenplumTest/testAlterTable.java index 9483a9e8..ef0e1340 100644 --- a/src/test/java/greenplum/testAlterTable.java +++ b/src/test/java/gudusoft/gsqlparser/greenplumTest/testAlterTable.java @@ -1,4 +1,4 @@ -package greenplum; +package gudusoft.gsqlparser.greenplumTest; /* * Date: 13-12-26 */ diff --git a/src/test/java/greenplum/testCreateExternalTable.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateExternalTable.java similarity index 99% rename from src/test/java/greenplum/testCreateExternalTable.java rename to src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateExternalTable.java index 4a708e38..02a6122d 100644 --- a/src/test/java/greenplum/testCreateExternalTable.java +++ b/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateExternalTable.java @@ -1,4 +1,4 @@ -package greenplum; +package gudusoft.gsqlparser.greenplumTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/greenplum/testCreateFunction.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateFunction.java similarity index 97% rename from src/test/java/greenplum/testCreateFunction.java rename to src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateFunction.java index 416a855b..b22f76eb 100644 --- a/src/test/java/greenplum/testCreateFunction.java +++ b/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateFunction.java @@ -1,532 +1,532 @@ -package greenplum; -/* - * Date: 13-12-26 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testCreateFunction extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "CREATE FUNCTION complex_add(complex, complex)\n" + - "RETURNS complex\n" + - "AS 'filename', 'complex_add'\n" + - "LANGUAGE C IMMUTABLE STRICT;"; - // System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("complex_add")); - assertTrue(createFunction.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.generic_t); - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.generic_t); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("C")); - assertTrue(createFunction.getObjfile().toString().equalsIgnoreCase("'filename'")); - assertTrue(createFunction.getLinkSymbol().toString().equalsIgnoreCase("'complex_add'")); - } - - - public void testplpgsql(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "--==============================================================================\n" + - "\n" + - "-- DBMS Name : Greenplum\n" + - "\n" + - "-- Script Name : update_wrk_bdw_gz_account_rollup_AFS_facility\n" + - "\n" + - "-- Description : Update the Stage table wrk_bdw_gz_account_rollup_AFS_facility\n" + - "\n" + - "-- Generated by : WhereScape RED Version 6.8.3.4 (build 150604-150128 RC)\n" + - "\n" + - "-- Generated for : Union Bank\n" + - "\n" + - "-- Generated on : Tuesday, March 15, 2016 at 13:17:50\n" + - "\n" + - "-- Author : xu82760\n" + - "\n" + - "--==============================================================================\n" + - "\n" + - "-- Notes / History\n" + - "\n" + - "--\n" + - "\n" + - "\n" + - "\n" + - "CREATE OR REPLACE FUNCTION FUNCTIONOWNER.update_wrk_bdw_gz_account_rollup_AFS_facility\n" + - "\n" + - " (\n" + - "\n" + - " p_sequence IN integer,\n" + - "\n" + - " p_job_name IN varchar(256),\n" + - "\n" + - " p_task_name IN varchar(256),\n" + - "\n" + - " p_job_id IN integer,\n" + - "\n" + - " p_task_id IN integer,\n" + - "\n" + - " p_parameters INOUT varchar[][],\n" + - "\n" + - " p_return_msg INOUT varchar(256),\n" + - "\n" + - " p_status INOUT integer\n" + - "\n" + - " )\n" + - "\n" + - "RETURNS RECORD\n" + - "\n" + - "AS $BODY$\n" + - "\n" + - "DECLARE\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- Control variables used in most programs\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " v_msgtext varchar(255); -- Text for audit_trail\n" + - "\n" + - " v_sql varchar(255); -- Text for SQL statements\n" + - "\n" + - " v_set integer; -- commit set\n" + - "\n" + - " v_analyze_flag integer; -- analyze flag\n" + - "\n" + - " v_step integer; -- return code\n" + - "\n" + - " v_insert_count integer; -- no of records inserted\n" + - "\n" + - " v_count integer; -- General counter\n" + - "\n" + - " v_sql_code integer; -- SQL Error Code for Audit Trail\n" + - "\n" + - " v_sql_error varchar(255); -- SQL Error Code for Audit Trail as varchar\n" + - "\n" + - " v_msg_type varchar(10); -- Message Type for WsWrkError Calls\n" + - "\n" + - "\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- General Variables\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " v_return_status integer; -- Update result status\n" + - "\n" + - " v_row_count integer; -- General row count\n" + - "\n" + - " v_status integer; -- General status field\n" + - "\n" + - " v_current_timestamp timestamp; -- Used for create/update dates\n" + - "\n" + - " v_current_datetime date ; -- Used for create/update dates\n" + - "\n" + - " v_current_date date; -- Current Date used for start and end dates\n" + - "\n" + - "\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- Main\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " BEGIN\n" + - "\n" + - " v_step := 100;\n" + - "\n" + - " v_row_count := 0;\n" + - "\n" + - " v_insert_count := 0;\n" + - "\n" + - " v_current_timestamp := CURRENT_TIMESTAMP;\n" + - "\n" + - " v_current_datetime := NOW();\n" + - "\n" + - " v_current_date := CURRENT_DATE;\n" + - "\n" + - "\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- Delete any records that we will be replacing\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " TRUNCATE TABLEOWNER.wrk_bdw_gz_account_rollup_AFS_facility;\n" + - "\n" + - "\n" + - "\n" + - " v_step := 200;\n" + - "\n" + - "\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- Insert new records\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " BEGIN\n" + - "\n" + - " v_row_count := 0;\n" + - "\n" + - "\n" + - "\n" + - " INSERT INTO TABLEOWNER.wrk_bdw_gz_account_rollup_AFS_facility\n" + - "\n" + - " ( account_number\n" + - "\n" + - " , as_of_date\n" + - "\n" + - " , source_system_code\n" + - "\n" + - " , committed_ult_parent_account_number\n" + - "\n" + - " , cif_number\n" + - "\n" + - " , source_system_customer_number\n" + - "\n" + - " , booking_office_responsible_center\n" + - "\n" + - " , account_opening_date\n" + - "\n" + - " , account_type_code\n" + - "\n" + - " , account_schedule_code\n" + - "\n" + - " , commitment_type_code\n" + - "\n" + - " , open_closed_ind\n" + - "\n" + - " , closed_date\n" + - "\n" + - " , closed_in_prev_period_indicator\n" + - "\n" + - " , commitment_amount\n" + - "\n" + - " , commitment_alloc_amount\n" + - "\n" + - " , commitment_unalloc_amount\n" + - "\n" + - " , part_commitment_amount\n" + - "\n" + - " , outstanding_balance\n" + - "\n" + - " , part_out_balance\n" + - "\n" + - " , run_identifier\n" + - "\n" + - " , population_timestamp\n" + - "\n" + - " )\n" + - "\n" + - " SELECT\n" + - "\n" + - " afsoblig_foc03_data.foc03_fc_oblg_mc010 || afsoblig_foc03_data.foc03_fc_obln_mc015\n" + - "\n" + - " , afsoblig_foc03_data.period_dt\n" + - "\n" + - " , 'AFS'\n" + - "\n" + - " , afsoblig_foc03_data.foc03_fc_oblg_mc010 || afsoblig_foc03_data.foc03_fc_obln_mc015\n" + - "\n" + - " , CAST(gz_customer_xref.btmu_cif_number AS varchar(8))\n" + - "\n" + - " , afsoblig_foc03_data.foc03_fc_oblg_mc010\n" + - "\n" + - " , afsoblig_foc03_data.foc03_fc_serv_unit_mc080\n" + - "\n" + - " , afsoblig_foc03_data.foc03_fc_eff_date_mc044::date\n" + - "\n" + - " , 'CF'\n" + - "\n" + - " , string_to_array('03a',',')\n" + - "\n" + - " , 'C'\n" + - "\n" + - " , Case\n" + - "\n" + - "\twhen lpad(afsoblig_foc03_data.foc03_fc_assgn_unit_mc081,5,'0')\n" + - "\n" + - "\t\tin ('17808', '17908','84300','96405','99042') then 'N'\n" + - "\n" + - "\twhen lpad(afsoblig_foc03_data.foc03_fc_assgn_unit_mc081,5,'0')\n" + - "\n" + - "\t\tnot in ('17808', '17908','84300','96405','99042') and afsoblig_foc03_data.foc03_fc_curr_prin_mc061 = 0.00 and afsoblig_foc03_data.foc03_fc_prin_bld_npd_mc151 = 0.00 then 'N'\n" + - "\n" + - "\twhen lpad(afsoblig_foc03_data.foc03_fc_assgn_unit_mc081,5,'0')\n" + - "\n" + - "\t\tnot in ('17808', '17908','84300','96405','99042') and (afsoblig_foc03_data.foc03_fc_curr_prin_mc061 <> 0.00 or afsoblig_foc03_data.foc03_fc_prin_bld_npd_mc151 <> 0.00) then 'Y'\n" + - "\n" + - "\telse ''\n" + - "\n" + - "end\n" + - "\n" + - " , afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048::date\n" + - "\n" + - " , CASE\n" + - "\n" + - "WHEN\n" + - "\n" + - "(\n" + - "\n" + - "CASE\n" + - "\n" + - " WHEN afsoblig_foc03_data.foc03_f_commt_bal_mc066 = 0.00\n" + - "\n" + - " AND afsoblig_foc03_data.foc03_fc_dt_out_dbt_mc050 = afsoblig_foc03_data.foc03_fc_dt_lst_activ\n" + - "\n" + - " AND afsoblig_foc03_data.foc03_fc_close_ind_mc574>'0'\n" + - "\n" + - " THEN 'N'\n" + - "\n" + - " ELSE 'Y'\n" + - "\n" + - "END\n" + - "\n" + - ") = 'Y'\n" + - "\n" + - "THEN 'N'\n" + - "\n" + - "WHEN\n" + - "\n" + - "(\n" + - "\n" + - "CASE\n" + - "\n" + - " WHEN afsoblig_foc03_data.foc03_f_commt_bal_mc066 = 0.00\n" + - "\n" + - " AND afsoblig_foc03_data.foc03_fc_dt_out_dbt_mc050 = afsoblig_foc03_data.foc03_fc_dt_lst_activ\n" + - "\n" + - " AND afsoblig_foc03_data.foc03_fc_close_ind_mc574> '0'\n" + - "\n" + - " THEN 'N'\n" + - "\n" + - " ELSE 'Y'\n" + - "\n" + - "END\n" + - "\n" + - ") = 'N'\n" + - "\n" + - "THEN CASE\n" + - "\n" + - "WHEN (\n" + - "\n" + - "date_part('year', afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048) = date_part('year', afsoblig_foc03_data.period_dt)\n" + - "\n" + - "AND date_part('month', afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048) < date_part('month', afsoblig_foc03_data.period_dt)\n" + - "\n" + - ")\n" + - "\n" + - "OR date_part('year', afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048) < date_part('year', afsoblig_foc03_data.period_dt)\n" + - "\n" + - "THEN 'Y'\n" + - "\n" + - "ELSE 'N'\n" + - "\n" + - "END\n" + - "\n" + - "END\n" + - "\n" + - " , afsoblig_foc03_data.foc03_f_commt_bal_mc066::numeric\n" + - "\n" + - " , afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + - "\n" + - " , CAST(afsoblig_foc03_data.FOC03_F_COMMT_BAL_MC066::numeric - afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + - "\n" + - " AS NUMERIC)\n" + - "\n" + - " , CAST(afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric * afsoblig_foc03_data.foc03_FC_TOT_PART_PCT_MC736::numeric\n" + - "\n" + - " AS numeric)\n" + - "\n" + - " , CAST (CASE WHEN afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric >= 0\n" + - "\n" + - " THEN afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + - "\n" + - " ELSE afsoblig_foc03_data.foc03_f_commt_bal_mc066::numeric + afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + - "\n" + - "END AS numeric)\n" + - "\n" + - " , afsoblig_foc03_data.FOC03_FC_T_PART_AMT_MC732::numeric\n" + - "\n" + - " , p_sequence\n" + - "\n" + - " , current_timestamp\n" + - "\n" + - " FROM\n" + - "\n" + - " (\n" + - "\n" + - " SELECT\n" + - "\n" + - " a.period_dt\n" + - "\n" + - " ,a.foc03_fc_oblg_mc010\n" + - "\n" + - " ,a.foc03_fc_obln_mc015\n" + - "\n" + - " ,a.foc03_fc_proc_type_mc038\n" + - "\n" + - " ,a.foc03_fc_gl_code_mc083\n" + - "\n" + - " ,a.foc03_fc_type_mc043\n" + - "\n" + - " ,coalesce(b.foc03_fc_curr_prin_mc061, a.foc03_fc_curr_prin_mc061) foc03_fc_curr_prin_mc061\n" + - "\n" + - " ,coalesce(b.foc03_fc_assgn_unit_mc081, a.foc03_fc_assgn_unit_mc081) foc03_fc_assgn_unit_mc081\n" + - "\n" + - " ,coalesce(b.foc03_fc_prin_bld_npd_mc151, a.foc03_fc_prin_bld_npd_mc151) foc03_fc_prin_bld_npd_mc151\n" + - "\n" + - " ,coalesce(b.foc03_fc_payoff_rsn_cd_mc618, a.foc03_fc_payoff_rsn_cd_mc618) foc03_fc_payoff_rsn_cd_mc618\n" + - "\n" + - " ,coalesce(b.foc03_fc_legal_mat_dt_mc048, a.foc03_fc_legal_mat_dt_mc048) foc03_fc_legal_mat_dt_mc048\n" + - "\n" + - " ,coalesce(b.foc03_f_commt_bal_mc066, a.foc03_f_commt_bal_mc066) foc03_f_commt_bal_mc066\n" + - "\n" + - " ,coalesce(b.foc03_fc_serv_unit_mc080, a.foc03_fc_serv_unit_mc080) foc03_fc_serv_unit_mc080\n" + - "\n" + - " ,coalesce(b.foc03_fc_eff_date_mc044, a.foc03_fc_eff_date_mc044) foc03_fc_eff_date_mc044\n" + - "\n" + - " ,coalesce(b.FOC03_FC_EST_MAT_DT_MC049, a.FOC03_FC_EST_MAT_DT_MC049) FOC03_FC_EST_MAT_DT_MC049\n" + - "\n" + - " ,coalesce(b.foc03_f_prin_amt_takendown, a.foc03_f_prin_amt_takendown) foc03_f_prin_amt_takendown\n" + - "\n" + - " ,coalesce(b.foc03_fc_tot_part_pct_mc736, a.foc03_fc_tot_part_pct_mc736) foc03_fc_tot_part_pct_mc736\n" + - "\n" + - " ,coalesce(b.FOC03_FC_BK_ASSET_BAL_MC904, a.FOC03_FC_BK_ASSET_BAL_MC904) FOC03_FC_BK_ASSET_BAL_MC904\n" + - "\n" + - " ,coalesce(b.FOC03_FC_T_PART_AMT_MC732, a.FOC03_FC_T_PART_AMT_MC732) FOC03_FC_T_PART_AMT_MC732\n" + - "\n" + - " ,coalesce(b.foc03_fc_dt_out_dbt_mc050, a.foc03_fc_dt_out_dbt_mc050) foc03_fc_dt_out_dbt_mc050\n" + - "\n" + - " ,coalesce(b.foc03_fc_dt_lst_activ, a.foc03_fc_dt_lst_activ) foc03_fc_dt_lst_activ\n" + - "\n" + - " ,coalesce(b.foc03_fc_close_ind_mc574, a.foc03_fc_close_ind_mc574) foc03_fc_close_ind_mc574\n" + - "\n" + - " ,coalesce(b.foc03_fc_intern_comm_mc039, a.foc03_fc_intern_comm_mc039) foc03_fc_intern_comm_mc039\n" + - "\n" + - " FROM TABLEOWNER.afsoblig_foc03_data a\n" + - "\n" + - " LEFT JOIN TABLEOWNER.afsoblig_foc03_data_swp b\n" + - "\n" + - " ON a.foc03_fc_oblg_mc010 = b.foc03_fc_oblg_mc010\n" + - "\n" + - " AND a.foc03_fc_obln_mc015 = b.foc03_fc_obln_mc015\n" + - "\n" + - " AND b.period_dt = udw_ops_cmn.get_udw_cntrl_param_value ('BDW','BDW_PROCESS_DATE')::date\n" + - "\n" + - " WHERE a.period_Dt = udw_ops_cmn.get_udw_cntrl_param_value ('BDW','BDW_PROCESS_DATE')::date\n" + - "\n" + - " ) afsoblig_foc03_data\n" + - "\n" + - " LEFT OUTER JOIN udw_gz_extract_pres.gz_customer_xref gz_customer_xref\n" + - "\n" + - " ON afsoblig_foc03_data.foc03_fc_oblg_mc010 = substring(gz_customer_xref.account_number from 9 for 10)\n" + - "\n" + - " AND gz_customer_xref.source_system='AFS'\n" + - "\n" + - " AND gz_customer_xref.primary_customer_indicator ='Y'\n" + - "\n" + - " AND afsoblig_foc03_data.period_dt=gz_customer_xref.as_of_date\n" + - "\n" + - " WHERE afsoblig_foc03_data.period_dt = udw_ops_cmn.get_udw_cntrl_param_value ('BDW','BDW_PROCESS_DATE')::date\n" + - "\n" + - " AND Substring(afsoblig_foc03_data.foc03_fc_proc_type_mc038, 1, 1) in ('0','1')\n" + - "\n" + - " AND Substring(afsoblig_foc03_data.foc03_fc_proc_type_mc038, 3, 2) <> ('02')\n" + - "\n" + - " ;\n" + - "\n" + - "\n" + - "\n" + - " GET DIAGNOSTICS v_row_count = row_count;\n" + - "\n" + - "\n" + - "\n" + - " END;\n" + - "\n" + - "\n" + - "\n" + - " v_insert_count := v_insert_count + v_row_count;\n" + - "\n" + - "\n" + - "\n" + - "\n" + - "\n" + - " v_step := 300;\n" + - "\n" + - "\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- Final settings\n" + - "\n" + - " --============================================================================\n" + - "\n" + - "\n" + - "\n" + - " -- Work out the return message\n" + - "\n" + - "\n" + - "\n" + - " p_status := 1;\n" + - "\n" + - " p_return_msg := 'wrk_bdw_gz_account_rollup_AFS_facility truncated and updated. '\n" + - "\n" + - " || CAST(v_insert_count AS VARCHAR(64)) || ' records added. ';\n" + - "\n" + - "RETURN;\n" + - "\n" + - "\n" + - "\n" + - "EXCEPTION\n" + - "\n" + - "WHEN OTHERS THEN\n" + - "\n" + - " v_sql_code := 0;\n" + - "\n" + - " v_sql_error := SQLERRM;\n" + - "\n" + - " p_return_msg := 'Unhandled Exception in update_wrk_bdw_gz_account_rollup_AFS_facility. '||\n" + - "\n" + - " ' Step ' ||v_step;\n" + - "\n" + - " RAISE NOTICE 'WsWrkAudit:F|%|%|%|%|%|%|%|%|',p_job_name, p_task_name, p_sequence,\n" + - "\n" + - " p_return_msg,v_sql_code,v_sql_error,p_task_id, p_job_id;\n" + - "\n" + - " p_status := -3;\n" + - "\n" + - "\n" + - "\n" + - "RETURN;\n" + - "\n" + - "\n" + - "\n" + - "END;\n" + - "\n" + - "$BODY$ LANGUAGE plpgsql;\n" + - "\n" + - "\n"; - // - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("FUNCTIONOWNER.update_wrk_bdw_gz_account_rollup_AFS_facility")); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); - assertTrue(createFunction.getBodyStatements().size()==14); - //System.out.println(createFunction.getBodyStatements().size()); - } -} +package gudusoft.gsqlparser.greenplumTest; +/* + * Date: 13-12-26 + */ + +import gudusoft.gsqlparser.EDataType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TParameterDeclaration; +import gudusoft.gsqlparser.stmt.*; +import junit.framework.TestCase; + +public class testCreateFunction extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); + sqlparser.sqltext = "CREATE FUNCTION complex_add(complex, complex)\n" + + "RETURNS complex\n" + + "AS 'filename', 'complex_add'\n" + + "LANGUAGE C IMMUTABLE STRICT;"; + // System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("complex_add")); + assertTrue(createFunction.getParameterDeclarations().size() == 2); + TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createFunction.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.generic_t); + assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.generic_t); + assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("C")); + assertTrue(createFunction.getObjfile().toString().equalsIgnoreCase("'filename'")); + assertTrue(createFunction.getLinkSymbol().toString().equalsIgnoreCase("'complex_add'")); + } + + + public void testplpgsql(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); + sqlparser.sqltext = "--==============================================================================\n" + + "\n" + + "-- DBMS Name : Greenplum\n" + + "\n" + + "-- Script Name : update_wrk_bdw_gz_account_rollup_AFS_facility\n" + + "\n" + + "-- Description : Update the Stage table wrk_bdw_gz_account_rollup_AFS_facility\n" + + "\n" + + "-- Generated by : WhereScape RED Version 6.8.3.4 (build 150604-150128 RC)\n" + + "\n" + + "-- Generated for : Union Bank\n" + + "\n" + + "-- Generated on : Tuesday, March 15, 2016 at 13:17:50\n" + + "\n" + + "-- Author : xu82760\n" + + "\n" + + "--==============================================================================\n" + + "\n" + + "-- Notes / History\n" + + "\n" + + "--\n" + + "\n" + + "\n" + + "\n" + + "CREATE OR REPLACE FUNCTION FUNCTIONOWNER.update_wrk_bdw_gz_account_rollup_AFS_facility\n" + + "\n" + + " (\n" + + "\n" + + " p_sequence IN integer,\n" + + "\n" + + " p_job_name IN varchar(256),\n" + + "\n" + + " p_task_name IN varchar(256),\n" + + "\n" + + " p_job_id IN integer,\n" + + "\n" + + " p_task_id IN integer,\n" + + "\n" + + " p_parameters INOUT varchar[][],\n" + + "\n" + + " p_return_msg INOUT varchar(256),\n" + + "\n" + + " p_status INOUT integer\n" + + "\n" + + " )\n" + + "\n" + + "RETURNS RECORD\n" + + "\n" + + "AS $BODY$\n" + + "\n" + + "DECLARE\n" + + "\n" + + " --============================================================================\n" + + "\n" + + " -- Control variables used in most programs\n" + + "\n" + + " --============================================================================\n" + + "\n" + + " v_msgtext varchar(255); -- Text for audit_trail\n" + + "\n" + + " v_sql varchar(255); -- Text for SQL statements\n" + + "\n" + + " v_set integer; -- commit set\n" + + "\n" + + " v_analyze_flag integer; -- analyze flag\n" + + "\n" + + " v_step integer; -- return code\n" + + "\n" + + " v_insert_count integer; -- no of records inserted\n" + + "\n" + + " v_count integer; -- General counter\n" + + "\n" + + " v_sql_code integer; -- SQL Error Code for Audit Trail\n" + + "\n" + + " v_sql_error varchar(255); -- SQL Error Code for Audit Trail as varchar\n" + + "\n" + + " v_msg_type varchar(10); -- Message Type for WsWrkError Calls\n" + + "\n" + + "\n" + + "\n" + + " --============================================================================\n" + + "\n" + + " -- General Variables\n" + + "\n" + + " --============================================================================\n" + + "\n" + + " v_return_status integer; -- Update result status\n" + + "\n" + + " v_row_count integer; -- General row count\n" + + "\n" + + " v_status integer; -- General status field\n" + + "\n" + + " v_current_timestamp timestamp; -- Used for create/update dates\n" + + "\n" + + " v_current_datetime date ; -- Used for create/update dates\n" + + "\n" + + " v_current_date date; -- Current Date used for start and end dates\n" + + "\n" + + "\n" + + "\n" + + " --============================================================================\n" + + "\n" + + " -- Main\n" + + "\n" + + " --============================================================================\n" + + "\n" + + " BEGIN\n" + + "\n" + + " v_step := 100;\n" + + "\n" + + " v_row_count := 0;\n" + + "\n" + + " v_insert_count := 0;\n" + + "\n" + + " v_current_timestamp := CURRENT_TIMESTAMP;\n" + + "\n" + + " v_current_datetime := NOW();\n" + + "\n" + + " v_current_date := CURRENT_DATE;\n" + + "\n" + + "\n" + + "\n" + + " --============================================================================\n" + + "\n" + + " -- Delete any records that we will be replacing\n" + + "\n" + + " --============================================================================\n" + + "\n" + + " TRUNCATE TABLEOWNER.wrk_bdw_gz_account_rollup_AFS_facility;\n" + + "\n" + + "\n" + + "\n" + + " v_step := 200;\n" + + "\n" + + "\n" + + "\n" + + " --============================================================================\n" + + "\n" + + " -- Insert new records\n" + + "\n" + + " --============================================================================\n" + + "\n" + + " BEGIN\n" + + "\n" + + " v_row_count := 0;\n" + + "\n" + + "\n" + + "\n" + + " INSERT INTO TABLEOWNER.wrk_bdw_gz_account_rollup_AFS_facility\n" + + "\n" + + " ( account_number\n" + + "\n" + + " , as_of_date\n" + + "\n" + + " , source_system_code\n" + + "\n" + + " , committed_ult_parent_account_number\n" + + "\n" + + " , cif_number\n" + + "\n" + + " , source_system_customer_number\n" + + "\n" + + " , booking_office_responsible_center\n" + + "\n" + + " , account_opening_date\n" + + "\n" + + " , account_type_code\n" + + "\n" + + " , account_schedule_code\n" + + "\n" + + " , commitment_type_code\n" + + "\n" + + " , open_closed_ind\n" + + "\n" + + " , closed_date\n" + + "\n" + + " , closed_in_prev_period_indicator\n" + + "\n" + + " , commitment_amount\n" + + "\n" + + " , commitment_alloc_amount\n" + + "\n" + + " , commitment_unalloc_amount\n" + + "\n" + + " , part_commitment_amount\n" + + "\n" + + " , outstanding_balance\n" + + "\n" + + " , part_out_balance\n" + + "\n" + + " , run_identifier\n" + + "\n" + + " , population_timestamp\n" + + "\n" + + " )\n" + + "\n" + + " SELECT\n" + + "\n" + + " afsoblig_foc03_data.foc03_fc_oblg_mc010 || afsoblig_foc03_data.foc03_fc_obln_mc015\n" + + "\n" + + " , afsoblig_foc03_data.period_dt\n" + + "\n" + + " , 'AFS'\n" + + "\n" + + " , afsoblig_foc03_data.foc03_fc_oblg_mc010 || afsoblig_foc03_data.foc03_fc_obln_mc015\n" + + "\n" + + " , CAST(gz_customer_xref.btmu_cif_number AS varchar(8))\n" + + "\n" + + " , afsoblig_foc03_data.foc03_fc_oblg_mc010\n" + + "\n" + + " , afsoblig_foc03_data.foc03_fc_serv_unit_mc080\n" + + "\n" + + " , afsoblig_foc03_data.foc03_fc_eff_date_mc044::date\n" + + "\n" + + " , 'CF'\n" + + "\n" + + " , string_to_array('03a',',')\n" + + "\n" + + " , 'C'\n" + + "\n" + + " , Case\n" + + "\n" + + "\twhen lpad(afsoblig_foc03_data.foc03_fc_assgn_unit_mc081,5,'0')\n" + + "\n" + + "\t\tin ('17808', '17908','84300','96405','99042') then 'N'\n" + + "\n" + + "\twhen lpad(afsoblig_foc03_data.foc03_fc_assgn_unit_mc081,5,'0')\n" + + "\n" + + "\t\tnot in ('17808', '17908','84300','96405','99042') and afsoblig_foc03_data.foc03_fc_curr_prin_mc061 = 0.00 and afsoblig_foc03_data.foc03_fc_prin_bld_npd_mc151 = 0.00 then 'N'\n" + + "\n" + + "\twhen lpad(afsoblig_foc03_data.foc03_fc_assgn_unit_mc081,5,'0')\n" + + "\n" + + "\t\tnot in ('17808', '17908','84300','96405','99042') and (afsoblig_foc03_data.foc03_fc_curr_prin_mc061 <> 0.00 or afsoblig_foc03_data.foc03_fc_prin_bld_npd_mc151 <> 0.00) then 'Y'\n" + + "\n" + + "\telse ''\n" + + "\n" + + "end\n" + + "\n" + + " , afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048::date\n" + + "\n" + + " , CASE\n" + + "\n" + + "WHEN\n" + + "\n" + + "(\n" + + "\n" + + "CASE\n" + + "\n" + + " WHEN afsoblig_foc03_data.foc03_f_commt_bal_mc066 = 0.00\n" + + "\n" + + " AND afsoblig_foc03_data.foc03_fc_dt_out_dbt_mc050 = afsoblig_foc03_data.foc03_fc_dt_lst_activ\n" + + "\n" + + " AND afsoblig_foc03_data.foc03_fc_close_ind_mc574>'0'\n" + + "\n" + + " THEN 'N'\n" + + "\n" + + " ELSE 'Y'\n" + + "\n" + + "END\n" + + "\n" + + ") = 'Y'\n" + + "\n" + + "THEN 'N'\n" + + "\n" + + "WHEN\n" + + "\n" + + "(\n" + + "\n" + + "CASE\n" + + "\n" + + " WHEN afsoblig_foc03_data.foc03_f_commt_bal_mc066 = 0.00\n" + + "\n" + + " AND afsoblig_foc03_data.foc03_fc_dt_out_dbt_mc050 = afsoblig_foc03_data.foc03_fc_dt_lst_activ\n" + + "\n" + + " AND afsoblig_foc03_data.foc03_fc_close_ind_mc574> '0'\n" + + "\n" + + " THEN 'N'\n" + + "\n" + + " ELSE 'Y'\n" + + "\n" + + "END\n" + + "\n" + + ") = 'N'\n" + + "\n" + + "THEN CASE\n" + + "\n" + + "WHEN (\n" + + "\n" + + "date_part('year', afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048) = date_part('year', afsoblig_foc03_data.period_dt)\n" + + "\n" + + "AND date_part('month', afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048) < date_part('month', afsoblig_foc03_data.period_dt)\n" + + "\n" + + ")\n" + + "\n" + + "OR date_part('year', afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048) < date_part('year', afsoblig_foc03_data.period_dt)\n" + + "\n" + + "THEN 'Y'\n" + + "\n" + + "ELSE 'N'\n" + + "\n" + + "END\n" + + "\n" + + "END\n" + + "\n" + + " , afsoblig_foc03_data.foc03_f_commt_bal_mc066::numeric\n" + + "\n" + + " , afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + + "\n" + + " , CAST(afsoblig_foc03_data.FOC03_F_COMMT_BAL_MC066::numeric - afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + + "\n" + + " AS NUMERIC)\n" + + "\n" + + " , CAST(afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric * afsoblig_foc03_data.foc03_FC_TOT_PART_PCT_MC736::numeric\n" + + "\n" + + " AS numeric)\n" + + "\n" + + " , CAST (CASE WHEN afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric >= 0\n" + + "\n" + + " THEN afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + + "\n" + + " ELSE afsoblig_foc03_data.foc03_f_commt_bal_mc066::numeric + afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + + "\n" + + "END AS numeric)\n" + + "\n" + + " , afsoblig_foc03_data.FOC03_FC_T_PART_AMT_MC732::numeric\n" + + "\n" + + " , p_sequence\n" + + "\n" + + " , current_timestamp\n" + + "\n" + + " FROM\n" + + "\n" + + " (\n" + + "\n" + + " SELECT\n" + + "\n" + + " a.period_dt\n" + + "\n" + + " ,a.foc03_fc_oblg_mc010\n" + + "\n" + + " ,a.foc03_fc_obln_mc015\n" + + "\n" + + " ,a.foc03_fc_proc_type_mc038\n" + + "\n" + + " ,a.foc03_fc_gl_code_mc083\n" + + "\n" + + " ,a.foc03_fc_type_mc043\n" + + "\n" + + " ,coalesce(b.foc03_fc_curr_prin_mc061, a.foc03_fc_curr_prin_mc061) foc03_fc_curr_prin_mc061\n" + + "\n" + + " ,coalesce(b.foc03_fc_assgn_unit_mc081, a.foc03_fc_assgn_unit_mc081) foc03_fc_assgn_unit_mc081\n" + + "\n" + + " ,coalesce(b.foc03_fc_prin_bld_npd_mc151, a.foc03_fc_prin_bld_npd_mc151) foc03_fc_prin_bld_npd_mc151\n" + + "\n" + + " ,coalesce(b.foc03_fc_payoff_rsn_cd_mc618, a.foc03_fc_payoff_rsn_cd_mc618) foc03_fc_payoff_rsn_cd_mc618\n" + + "\n" + + " ,coalesce(b.foc03_fc_legal_mat_dt_mc048, a.foc03_fc_legal_mat_dt_mc048) foc03_fc_legal_mat_dt_mc048\n" + + "\n" + + " ,coalesce(b.foc03_f_commt_bal_mc066, a.foc03_f_commt_bal_mc066) foc03_f_commt_bal_mc066\n" + + "\n" + + " ,coalesce(b.foc03_fc_serv_unit_mc080, a.foc03_fc_serv_unit_mc080) foc03_fc_serv_unit_mc080\n" + + "\n" + + " ,coalesce(b.foc03_fc_eff_date_mc044, a.foc03_fc_eff_date_mc044) foc03_fc_eff_date_mc044\n" + + "\n" + + " ,coalesce(b.FOC03_FC_EST_MAT_DT_MC049, a.FOC03_FC_EST_MAT_DT_MC049) FOC03_FC_EST_MAT_DT_MC049\n" + + "\n" + + " ,coalesce(b.foc03_f_prin_amt_takendown, a.foc03_f_prin_amt_takendown) foc03_f_prin_amt_takendown\n" + + "\n" + + " ,coalesce(b.foc03_fc_tot_part_pct_mc736, a.foc03_fc_tot_part_pct_mc736) foc03_fc_tot_part_pct_mc736\n" + + "\n" + + " ,coalesce(b.FOC03_FC_BK_ASSET_BAL_MC904, a.FOC03_FC_BK_ASSET_BAL_MC904) FOC03_FC_BK_ASSET_BAL_MC904\n" + + "\n" + + " ,coalesce(b.FOC03_FC_T_PART_AMT_MC732, a.FOC03_FC_T_PART_AMT_MC732) FOC03_FC_T_PART_AMT_MC732\n" + + "\n" + + " ,coalesce(b.foc03_fc_dt_out_dbt_mc050, a.foc03_fc_dt_out_dbt_mc050) foc03_fc_dt_out_dbt_mc050\n" + + "\n" + + " ,coalesce(b.foc03_fc_dt_lst_activ, a.foc03_fc_dt_lst_activ) foc03_fc_dt_lst_activ\n" + + "\n" + + " ,coalesce(b.foc03_fc_close_ind_mc574, a.foc03_fc_close_ind_mc574) foc03_fc_close_ind_mc574\n" + + "\n" + + " ,coalesce(b.foc03_fc_intern_comm_mc039, a.foc03_fc_intern_comm_mc039) foc03_fc_intern_comm_mc039\n" + + "\n" + + " FROM TABLEOWNER.afsoblig_foc03_data a\n" + + "\n" + + " LEFT JOIN TABLEOWNER.afsoblig_foc03_data_swp b\n" + + "\n" + + " ON a.foc03_fc_oblg_mc010 = b.foc03_fc_oblg_mc010\n" + + "\n" + + " AND a.foc03_fc_obln_mc015 = b.foc03_fc_obln_mc015\n" + + "\n" + + " AND b.period_dt = udw_ops_cmn.get_udw_cntrl_param_value ('BDW','BDW_PROCESS_DATE')::date\n" + + "\n" + + " WHERE a.period_Dt = udw_ops_cmn.get_udw_cntrl_param_value ('BDW','BDW_PROCESS_DATE')::date\n" + + "\n" + + " ) afsoblig_foc03_data\n" + + "\n" + + " LEFT OUTER JOIN udw_gz_extract_pres.gz_customer_xref gz_customer_xref\n" + + "\n" + + " ON afsoblig_foc03_data.foc03_fc_oblg_mc010 = substring(gz_customer_xref.account_number from 9 for 10)\n" + + "\n" + + " AND gz_customer_xref.source_system='AFS'\n" + + "\n" + + " AND gz_customer_xref.primary_customer_indicator ='Y'\n" + + "\n" + + " AND afsoblig_foc03_data.period_dt=gz_customer_xref.as_of_date\n" + + "\n" + + " WHERE afsoblig_foc03_data.period_dt = udw_ops_cmn.get_udw_cntrl_param_value ('BDW','BDW_PROCESS_DATE')::date\n" + + "\n" + + " AND Substring(afsoblig_foc03_data.foc03_fc_proc_type_mc038, 1, 1) in ('0','1')\n" + + "\n" + + " AND Substring(afsoblig_foc03_data.foc03_fc_proc_type_mc038, 3, 2) <> ('02')\n" + + "\n" + + " ;\n" + + "\n" + + "\n" + + "\n" + + " GET DIAGNOSTICS v_row_count = row_count;\n" + + "\n" + + "\n" + + "\n" + + " END;\n" + + "\n" + + "\n" + + "\n" + + " v_insert_count := v_insert_count + v_row_count;\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + " v_step := 300;\n" + + "\n" + + "\n" + + "\n" + + " --============================================================================\n" + + "\n" + + " -- Final settings\n" + + "\n" + + " --============================================================================\n" + + "\n" + + "\n" + + "\n" + + " -- Work out the return message\n" + + "\n" + + "\n" + + "\n" + + " p_status := 1;\n" + + "\n" + + " p_return_msg := 'wrk_bdw_gz_account_rollup_AFS_facility truncated and updated. '\n" + + "\n" + + " || CAST(v_insert_count AS VARCHAR(64)) || ' records added. ';\n" + + "\n" + + "RETURN;\n" + + "\n" + + "\n" + + "\n" + + "EXCEPTION\n" + + "\n" + + "WHEN OTHERS THEN\n" + + "\n" + + " v_sql_code := 0;\n" + + "\n" + + " v_sql_error := SQLERRM;\n" + + "\n" + + " p_return_msg := 'Unhandled Exception in update_wrk_bdw_gz_account_rollup_AFS_facility. '||\n" + + "\n" + + " ' Step ' ||v_step;\n" + + "\n" + + " RAISE NOTICE 'WsWrkAudit:F|%|%|%|%|%|%|%|%|',p_job_name, p_task_name, p_sequence,\n" + + "\n" + + " p_return_msg,v_sql_code,v_sql_error,p_task_id, p_job_id;\n" + + "\n" + + " p_status := -3;\n" + + "\n" + + "\n" + + "\n" + + "RETURN;\n" + + "\n" + + "\n" + + "\n" + + "END;\n" + + "\n" + + "$BODY$ LANGUAGE plpgsql;\n" + + "\n" + + "\n"; + // + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("FUNCTIONOWNER.update_wrk_bdw_gz_account_rollup_AFS_facility")); + assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); + assertTrue(createFunction.getBodyStatements().size()==14); + //System.out.println(createFunction.getBodyStatements().size()); + } +} diff --git a/src/test/java/greenplum/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateTable.java similarity index 97% rename from src/test/java/greenplum/testCreateTable.java rename to src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateTable.java index fbed6e4b..67508d6d 100644 --- a/src/test/java/greenplum/testCreateTable.java +++ b/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateTable.java @@ -1,4 +1,4 @@ -package greenplum; +package gudusoft.gsqlparser.greenplumTest; /* * Date: 13-12-26 */ diff --git a/src/test/java/greenplum/testDeclareBlock.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testDeclareBlock.java similarity index 80% rename from src/test/java/greenplum/testDeclareBlock.java rename to src/test/java/gudusoft/gsqlparser/greenplumTest/testDeclareBlock.java index 714992d9..6b03271a 100644 --- a/src/test/java/greenplum/testDeclareBlock.java +++ b/src/test/java/gudusoft/gsqlparser/greenplumTest/testDeclareBlock.java @@ -1,29 +1,30 @@ -package greenplum; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCommonBlock; -import junit.framework.TestCase; - -public class testDeclareBlock extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.setSqlfilename(common.gspCommon.BASE_SQL_DIR_PRIVATE +"java/greenplum/timewalking/declare_block.sql"); - assertTrue(sqlparser.parse() == 0); - - TCommonBlock block = (TCommonBlock)sqlparser.sqlstatements.get(0); - assertTrue(block.getBodyStatements().size()==127); - assertTrue(block.getDeclareStatements().size() == 37); -// int i = 0; -// for(TCustomSqlStatement sql:block.getBodyStatements()){ -// i++; -// System.out.println(i+":\t"+sql.sqlstatementtype); -// if ((sql.getStartToken()==null)||(sql.getEndToken()==null)){ -// System.out.println("\t"+i); -// } -// } - } - -} +package gudusoft.gsqlparser.greenplumTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.stmt.TCommonBlock; +import junit.framework.TestCase; + +public class testDeclareBlock extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); + sqlparser.setSqlfilename(gspCommon.BASE_SQL_DIR_PRIVATE +"java/greenplum/timewalking/declare_block.sql"); + assertTrue(sqlparser.parse() == 0); + + TCommonBlock block = (TCommonBlock)sqlparser.sqlstatements.get(0); + assertTrue(block.getBodyStatements().size()==127); + assertTrue(block.getDeclareStatements().size() == 37); +// int i = 0; +// for(TCustomSqlStatement sql:block.getBodyStatements()){ +// i++; +// System.out.println(i+":\t"+sql.sqlstatementtype); +// if ((sql.getStartToken()==null)||(sql.getEndToken()==null)){ +// System.out.println("\t"+i); +// } +// } + } + +} diff --git a/src/test/java/greenplum/testSetVariable.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testSetVariable.java similarity index 97% rename from src/test/java/greenplum/testSetVariable.java rename to src/test/java/gudusoft/gsqlparser/greenplumTest/testSetVariable.java index 74723c09..f0f7e3fc 100644 --- a/src/test/java/greenplum/testSetVariable.java +++ b/src/test/java/gudusoft/gsqlparser/greenplumTest/testSetVariable.java @@ -1,4 +1,4 @@ -package greenplum; +package gudusoft.gsqlparser.greenplumTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESetStatementType; diff --git a/src/test/java/greenplum/testValues.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testValues.java similarity index 98% rename from src/test/java/greenplum/testValues.java rename to src/test/java/gudusoft/gsqlparser/greenplumTest/testValues.java index b4f496b0..ac4c38d6 100644 --- a/src/test/java/greenplum/testValues.java +++ b/src/test/java/gudusoft/gsqlparser/greenplumTest/testValues.java @@ -1,4 +1,4 @@ -package greenplum; +package gudusoft.gsqlparser.greenplumTest; /* * Date: 13-12-26 */ diff --git a/src/test/java/hana/testAlterProcedureAndFunction.java b/src/test/java/gudusoft/gsqlparser/hanaTest/testAlterProcedureAndFunction.java similarity index 97% rename from src/test/java/hana/testAlterProcedureAndFunction.java rename to src/test/java/gudusoft/gsqlparser/hanaTest/testAlterProcedureAndFunction.java index c84681ff..a6a9c4c9 100644 --- a/src/test/java/hana/testAlterProcedureAndFunction.java +++ b/src/test/java/gudusoft/gsqlparser/hanaTest/testAlterProcedureAndFunction.java @@ -1,4 +1,4 @@ -package hana; +package gudusoft.gsqlparser.hanaTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/hana/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/hanaTest/testCreateProcedure.java similarity index 89% rename from src/test/java/hana/testCreateProcedure.java rename to src/test/java/gudusoft/gsqlparser/hanaTest/testCreateProcedure.java index ee3cb347..30776d8a 100644 --- a/src/test/java/hana/testCreateProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/hanaTest/testCreateProcedure.java @@ -1,38 +1,35 @@ -package hana; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TMultiTarget; -import gudusoft.gsqlparser.nodes.TResultColumnList; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import gudusoft.gsqlparser.stmt.TUpsertStmt; -import junit.framework.TestCase; - -public class testCreateProcedure extends TestCase { - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "CREATE PROCEDURE upsert_proc (IN v_isbn VARCHAR(20))\n" + - "LANGUAGE SQLSCRIPT AS\n" + - "BEGIN\n" + - " DECLARE found INT = 1;\n" + - " SELECT count(*) INTO found FROM books WHERE isbn = :v_isbn;\n" + - " IF :found = 0\n" + - " THEN\n" + - " INSERT INTO books\n" + - " VALUES (:v_isbn, 'In-Memory Data Management', 1, 1,\n" + - " '2011', 42.75, 'EUR');\n" + - " ELSE\n" + - " UPDATE books SET price = 42.75 WHERE isbn =:v_isbn;\n" + - " END IF;\n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedureStmt = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(createProcedureStmt.getBodyStatements().size() == 3); - for(TCustomSqlStatement sqlStatement: createProcedureStmt.getBodyStatements()){ - // System.out.println(sqlStatement.sqlstatementtype); - } - } -} +package gudusoft.gsqlparser.hanaTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TCustomSqlStatement; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; +import junit.framework.TestCase; + +public class testCreateProcedure extends TestCase { + public void test1() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); + sqlparser.sqltext = "CREATE PROCEDURE upsert_proc (IN v_isbn VARCHAR(20))\n" + + "LANGUAGE SQLSCRIPT AS\n" + + "BEGIN\n" + + " DECLARE found INT = 1;\n" + + " SELECT count(*) INTO found FROM books WHERE isbn = :v_isbn;\n" + + " IF :found = 0\n" + + " THEN\n" + + " INSERT INTO books\n" + + " VALUES (:v_isbn, 'In-Memory Data Management', 1, 1,\n" + + " '2011', 42.75, 'EUR');\n" + + " ELSE\n" + + " UPDATE books SET price = 42.75 WHERE isbn =:v_isbn;\n" + + " END IF;\n" + + "END;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateprocedure); + TCreateProcedureStmt createProcedureStmt = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); + assertTrue(createProcedureStmt.getBodyStatements().size() == 3); + for(TCustomSqlStatement sqlStatement: createProcedureStmt.getBodyStatements()){ + // System.out.println(sqlStatement.sqlstatementtype); + } + } +} diff --git a/src/test/java/hana/testLateral.java b/src/test/java/gudusoft/gsqlparser/hanaTest/testLateral.java similarity index 95% rename from src/test/java/hana/testLateral.java rename to src/test/java/gudusoft/gsqlparser/hanaTest/testLateral.java index 1e001bcf..7eca1b9f 100644 --- a/src/test/java/hana/testLateral.java +++ b/src/test/java/gudusoft/gsqlparser/hanaTest/testLateral.java @@ -1,4 +1,4 @@ -package hana; +package gudusoft.gsqlparser.hanaTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/hana/testUpsert.java b/src/test/java/gudusoft/gsqlparser/hanaTest/testUpsert.java similarity index 97% rename from src/test/java/hana/testUpsert.java rename to src/test/java/gudusoft/gsqlparser/hanaTest/testUpsert.java index 5b534529..b5a2f793 100644 --- a/src/test/java/hana/testUpsert.java +++ b/src/test/java/gudusoft/gsqlparser/hanaTest/testUpsert.java @@ -1,82 +1,82 @@ -package hana; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TMultiTarget; -import gudusoft.gsqlparser.nodes.TResultColumnList; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TUpsertStmt; -import junit.framework.TestCase; - -public class testUpsert extends TestCase { - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T VALUES (1, 1);"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); - TMultiTarget multiTarget = upsertStmt.getValues().getMultiTarget(0); - TResultColumnList columnList = multiTarget.getColumnList(); - assertTrue(columnList.getResultColumn(0).toString().equalsIgnoreCase("1")); - assertTrue(columnList.getResultColumn(1).toString().equalsIgnoreCase("1")); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T VALUES (1, 9) WHERE KEY = 1;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); - TMultiTarget multiTarget = upsertStmt.getValues().getMultiTarget(0); - TResultColumnList columnList = multiTarget.getColumnList(); - assertTrue(columnList.getResultColumn(0).toString().equalsIgnoreCase("1")); - assertTrue(columnList.getResultColumn(1).toString().equalsIgnoreCase("9")); - assertTrue(upsertStmt.getWhereClause().getCondition().toString().equalsIgnoreCase("KEY = 1")); - } - - public void test3() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T VALUES (1, 8) WITH PRIMARY KEY;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); - TMultiTarget multiTarget = upsertStmt.getValues().getMultiTarget(0); - TResultColumnList columnList = multiTarget.getColumnList(); - assertTrue(columnList.getResultColumn(0).toString().equalsIgnoreCase("1")); - assertTrue(columnList.getResultColumn(1).toString().equalsIgnoreCase("8")); - } - - public void test4() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T SELECT KEY + 2, VAL FROM T;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); - TSelectSqlStatement select = upsertStmt.getSubQuery(); - assertTrue(select.getTables().getTable(0).toString().equalsIgnoreCase("T")); - } - - public void test5() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T1 VALUES ( 1, ARRAY ( 21, 22, 23, 24 ) ) WHERE ID = 1;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T1")); - } - - public void test6() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T1 VALUES ( 1, ARRAY ( SELECT C1 FROM T0 ) ) WHERE ID = 1;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T1")); - } - -} +package gudusoft.gsqlparser.hanaTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TMultiTarget; +import gudusoft.gsqlparser.nodes.TResultColumnList; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import gudusoft.gsqlparser.stmt.TUpsertStmt; +import junit.framework.TestCase; + +public class testUpsert extends TestCase { + public void test1() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); + sqlparser.sqltext = "UPSERT T VALUES (1, 1);"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); + TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); + assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); + TMultiTarget multiTarget = upsertStmt.getValues().getMultiTarget(0); + TResultColumnList columnList = multiTarget.getColumnList(); + assertTrue(columnList.getResultColumn(0).toString().equalsIgnoreCase("1")); + assertTrue(columnList.getResultColumn(1).toString().equalsIgnoreCase("1")); + } + + public void test2() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); + sqlparser.sqltext = "UPSERT T VALUES (1, 9) WHERE KEY = 1;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); + TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); + assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); + TMultiTarget multiTarget = upsertStmt.getValues().getMultiTarget(0); + TResultColumnList columnList = multiTarget.getColumnList(); + assertTrue(columnList.getResultColumn(0).toString().equalsIgnoreCase("1")); + assertTrue(columnList.getResultColumn(1).toString().equalsIgnoreCase("9")); + assertTrue(upsertStmt.getWhereClause().getCondition().toString().equalsIgnoreCase("KEY = 1")); + } + + public void test3() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); + sqlparser.sqltext = "UPSERT T VALUES (1, 8) WITH PRIMARY KEY;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); + TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); + assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); + TMultiTarget multiTarget = upsertStmt.getValues().getMultiTarget(0); + TResultColumnList columnList = multiTarget.getColumnList(); + assertTrue(columnList.getResultColumn(0).toString().equalsIgnoreCase("1")); + assertTrue(columnList.getResultColumn(1).toString().equalsIgnoreCase("8")); + } + + public void test4() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); + sqlparser.sqltext = "UPSERT T SELECT KEY + 2, VAL FROM T;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); + TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); + assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); + TSelectSqlStatement select = upsertStmt.getSubQuery(); + assertTrue(select.getTables().getTable(0).toString().equalsIgnoreCase("T")); + } + + public void test5() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); + sqlparser.sqltext = "UPSERT T1 VALUES ( 1, ARRAY ( 21, 22, 23, 24 ) ) WHERE ID = 1;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); + TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); + assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T1")); + } + + public void test6() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); + sqlparser.sqltext = "UPSERT T1 VALUES ( 1, ARRAY ( SELECT C1 FROM T0 ) ) WHERE ID = 1;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); + TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); + assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T1")); + } + +} diff --git a/src/test/java/hive/testAlias.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testAlias.java similarity index 97% rename from src/test/java/hive/testAlias.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testAlias.java index 5f2e1561..7aed411c 100644 --- a/src/test/java/hive/testAlias.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testAlias.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-12 */ diff --git a/src/test/java/hive/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testAlterTable.java similarity index 98% rename from src/test/java/hive/testAlterTable.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testAlterTable.java index 01847e2d..2217270f 100644 --- a/src/test/java/hive/testAlterTable.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testAlterTable.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; import gudusoft.gsqlparser.EAlterTableOptionType; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/hive/testAnalyze.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testAnalyze.java similarity index 97% rename from src/test/java/hive/testAnalyze.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testAnalyze.java index 5f8aa2a8..de2316a0 100644 --- a/src/test/java/hive/testAnalyze.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testAnalyze.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-16 */ diff --git a/src/test/java/hive/testCTE.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCTE.java similarity index 94% rename from src/test/java/hive/testCTE.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testCTE.java index 40b0bc25..b2035024 100644 --- a/src/test/java/hive/testCTE.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testCTE.java @@ -1,49 +1,48 @@ -package hive; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TCTE; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.hive.THiveFromQuery; -import junit.framework.TestCase; - - -public class testCTE extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "with q1 as ( select key from src where key = '5')\n" + - "select *\n" + - "from q1;\n"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("q1")); - assertTrue(select.getCteList().size() == 1); - TCTE cte = select.getCteList().getCTE(0); - assertTrue(cte.getTableName().toString().equalsIgnoreCase("q1")); - TSelectSqlStatement s1 = cte.getSubquery(); - assertTrue(s1.tables.getTable(0).toString().equalsIgnoreCase("src")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "with q1 as (select * from src where key= '5')\n" + - "from q1\n" + - "select *;"; - assertTrue(sqlparser.parse() == 0); - - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement fromQuery = (TSelectSqlStatement)sqlStatement; - - - assertTrue(fromQuery.tables.getTable(0).toString().equalsIgnoreCase("q1")); - assertTrue(fromQuery.getCteList().size() == 1); - TCTE cte = fromQuery.getCteList().getCTE(0); - assertTrue(cte.getTableName().toString().equalsIgnoreCase("q1")); - TSelectSqlStatement s1 = cte.getSubquery(); - assertTrue(s1.tables.getTable(0).toString().equalsIgnoreCase("src")); - } -} +package gudusoft.gsqlparser.hiveTest; + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.TCTE; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + + +public class testCTE extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "with q1 as ( select key from src where key = '5')\n" + + "select *\n" + + "from q1;\n"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("q1")); + assertTrue(select.getCteList().size() == 1); + TCTE cte = select.getCteList().getCTE(0); + assertTrue(cte.getTableName().toString().equalsIgnoreCase("q1")); + TSelectSqlStatement s1 = cte.getSubquery(); + assertTrue(s1.tables.getTable(0).toString().equalsIgnoreCase("src")); + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "with q1 as (select * from src where key= '5')\n" + + "from q1\n" + + "select *;"; + assertTrue(sqlparser.parse() == 0); + + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement fromQuery = (TSelectSqlStatement)sqlStatement; + + + assertTrue(fromQuery.tables.getTable(0).toString().equalsIgnoreCase("q1")); + assertTrue(fromQuery.getCteList().size() == 1); + TCTE cte = fromQuery.getCteList().getCTE(0); + assertTrue(cte.getTableName().toString().equalsIgnoreCase("q1")); + TSelectSqlStatement s1 = cte.getSubquery(); + assertTrue(s1.tables.getTable(0).toString().equalsIgnoreCase("src")); + } +} diff --git a/src/test/java/hive/testCastFunction.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCastFunction.java similarity index 88% rename from src/test/java/hive/testCastFunction.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testCastFunction.java index a7305b0b..04de8735 100644 --- a/src/test/java/hive/testCastFunction.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testCastFunction.java @@ -1,43 +1,39 @@ -package hive; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TAliasClause; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.nodes.hive.THiveTransformClause; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCastFunction extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "create table nikesh.tournament_base_registration as\n" + - "select distinct process_date,cast(userid as bigint) as user_id,\n" + - "cast(channelid as int) as reg_channel_id,\n" + - "cast(str2['ptype'] as int) as ptype,\n" + - "cast(str2['pkr'] as int) as pkr,\n" + - "cast(str4['tid'] as bigint) as tid,\n" + - "str4['trnmnt_name'] as trnmnt_name,\n" + - "cast(str5['join_via'] as int) as join_via,\n" + - "cast(from_unixtime(unix_timestamp(timestamp,'yyyy-MM-dd hh:mm:ss')) as timestamp) as time_of_reg,\n" + - "\n" + - "case when str5['join_type'] = 'Join' then 0\n" + - " when str5['join_type'] = 'Waitlist' then 1 end as wait_list_ind\n" + - "\n" + - "from taxonomy.gameplay a , nikesh.tournament_base b\n" + - "where cast(str4['tid'] as bigint) = b.id and process_date between date_sub('##v_start_date',60) and '##v_end_date'\n" + - "and event in ('join_click_response') and str5['response_type'] = 'Success';"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createTableSqlStatement.getSubQuery(); - assertTrue(select.getResultColumnList().getResultColumn(2).toString().equalsIgnoreCase("cast(channelid as int)")); - assertTrue(select.getResultColumnList().getResultColumn(2).getAliasClause().toString().equalsIgnoreCase("reg_channel_id")); - - } - -} +package gudusoft.gsqlparser.hiveTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testCastFunction extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "create table nikesh.tournament_base_registration as\n" + + "select distinct process_date,cast(userid as bigint) as user_id,\n" + + "cast(channelid as int) as reg_channel_id,\n" + + "cast(str2['ptype'] as int) as ptype,\n" + + "cast(str2['pkr'] as int) as pkr,\n" + + "cast(str4['tid'] as bigint) as tid,\n" + + "str4['trnmnt_name'] as trnmnt_name,\n" + + "cast(str5['join_via'] as int) as join_via,\n" + + "cast(from_unixtime(unix_timestamp(timestamp,'yyyy-MM-dd hh:mm:ss')) as timestamp) as time_of_reg,\n" + + "\n" + + "case when str5['join_type'] = 'Join' then 0\n" + + " when str5['join_type'] = 'Waitlist' then 1 end as wait_list_ind\n" + + "\n" + + "from taxonomy.gameplay a , nikesh.tournament_base b\n" + + "where cast(str4['tid'] as bigint) = b.id and process_date between date_sub('##v_start_date',60) and '##v_end_date'\n" + + "and event in ('join_click_response') and str5['response_type'] = 'Success';"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); + TSelectSqlStatement select = createTableSqlStatement.getSubQuery(); + assertTrue(select.getResultColumnList().getResultColumn(2).toString().equalsIgnoreCase("cast(channelid as int)")); + assertTrue(select.getResultColumnList().getResultColumn(2).getAliasClause().toString().equalsIgnoreCase("reg_channel_id")); + + } + +} diff --git a/src/test/java/hive/testCreateFunction.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateFunction.java similarity index 95% rename from src/test/java/hive/testCreateFunction.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testCreateFunction.java index 2618bb46..b2aace0a 100644 --- a/src/test/java/hive/testCreateFunction.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateFunction.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-16 */ diff --git a/src/test/java/hive/testCreateIndex.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateIndex.java similarity index 98% rename from src/test/java/hive/testCreateIndex.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testCreateIndex.java index 7d6cfcc4..306c4471 100644 --- a/src/test/java/hive/testCreateIndex.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateIndex.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-16 */ diff --git a/src/test/java/hive/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateTable.java similarity index 97% rename from src/test/java/hive/testCreateTable.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testCreateTable.java index eb2b9e01..58ad2487 100644 --- a/src/test/java/hive/testCreateTable.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateTable.java @@ -1,176 +1,176 @@ -package hive; -/* - * Date: 13-8-15 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EFileFormat; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.nodes.TTypeName; -import gudusoft.gsqlparser.nodes.hive.*; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCreateTable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "create table Addresses (\n" + - " name string,\n" + - " street string,\n" + - " city string,\n" + - " state string,\n" + - " zip int\n" + - ") stored as orc tblproperties (\"orc.compress\"=\"NONE\");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("Addresses")); - assertTrue(createTable.getColumnList().size() == 5 ); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("name")); - assertTrue(cd.getDatatype().getDataType() == EDataType.string_t); - cd = createTable.getColumnList().getColumn(4); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("zip")); - assertTrue(cd.getDatatype().getDataType() == EDataType.int_t); - - THiveTableFileFormat tff = createTable.getHiveTableFileFormat(); - assertTrue(tff.getFileFormat() == EFileFormat.sffFILEFORMAT_GENERIC); - assertTrue(tff.getGenericSpec().toString().equalsIgnoreCase("orc")); - - THiveTableProperties tp = createTable.getHiveTableProperties(); - assertTrue(tp.getTableProperties().size() == 1); - THiveKeyValueProperty kv = tp.getTableProperties().getElement(0); - assertTrue(kv.getKeyString().toString().equalsIgnoreCase("\"orc.compress\"")); - assertTrue(kv.getValueString().toString().equalsIgnoreCase("\"NONE\"")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "CREATE TABLE union_test(foo UNIONTYPE, struct>);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("union_test")); - assertTrue(createTable.getColumnList().size() == 1 ); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("foo")); - assertTrue(cd.getDatatype().getDataType() == EDataType.unionType_t); - - assertTrue(cd.getDatatype().getColTypeList().size() == 4); - TTypeName dataType = cd.getDatatype().getColTypeList().getElement(0); - assertTrue(dataType.getDataType() == EDataType.int_t); - - dataType = cd.getDatatype().getColTypeList().getElement(1); - assertTrue(dataType.getDataType() == EDataType.double_t); - - dataType = cd.getDatatype().getColTypeList().getElement(2); - assertTrue(dataType.getDataType() == EDataType.listType_t); - assertTrue(dataType.getTypeOfList().getDataType() == EDataType.string_t); - - dataType = cd.getDatatype().getColTypeList().getElement(3); - assertTrue(dataType.getDataType() == EDataType.struct_t); - assertTrue(dataType.getColumnDefList().size() == 2); - TColumnDefinition cd1 = dataType.getColumnDefList().getColumn(0); - assertTrue(cd1.getColumnName().toString().equalsIgnoreCase("a")); - assertTrue(cd1.getDatatype().getDataType() == EDataType.int_t); - TColumnDefinition cd2 = dataType.getColumnDefList().getColumn(1); - assertTrue(cd2.getColumnName().toString().equalsIgnoreCase("b")); - assertTrue(cd2.getDatatype().getDataType() == EDataType.string_t); - - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "CREATE TABLE complex_json (\n" + - " DocId string,\n" + - " User struct,\n" + - " Orders:array>>\n" + - ")\n" + - "ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe';"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("complex_json")); - assertTrue(createTable.getColumnList().size() == 2 ); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("DocId")); - assertTrue(cd.getDatatype().getDataType() == EDataType.string_t); - - cd = createTable.getColumnList().getColumn(1); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("User")); - assertTrue(cd.getDatatype().getDataType() == EDataType.struct_t); - assertTrue(cd.getDatatype().getColumnDefList().size() == 5); - - THiveRowFormat rowFormat = createTable.getHiveRowFormat(); - assertTrue(rowFormat.getRowFormatType() == THiveRowFormat.ERowFormatType.serde); - assertTrue(rowFormat.getRowFormatName().toString().equalsIgnoreCase("'org.openx.data.jsonserde.JsonSerDe'")); - - } - - public void test4(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "CREATE TABLE page_view(viewTime INT, userid BIGINT,\n" + - "page_url STRING, referrer_url STRING,\n" + - "ip STRING COMMENT 'IP Address of the User')\n" + - "COMMENT 'This is the page view table'\n" + - "PARTITIONED BY(dt STRING, country STRING)\n" + - "ROW FORMAT DELIMITED\n" + - "FIELDS TERMINATED BY '1'\n" + - "STORED AS SEQUENCEFILE;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("page_view")); - TColumnDefinition cd = createTable.getColumnList().getColumn(4); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("ip")); - assertTrue(cd.getDatatype().getDataType() == EDataType.string_t); - assertTrue(cd.getComment().toString().equalsIgnoreCase("'IP Address of the User'")); - - assertTrue(createTable.getTableComment().toString().equalsIgnoreCase("'This is the page view table'")); - THiveTablePartition tp = createTable.getHiveTablePartition(); - assertTrue(tp.getColumnDefList().size() == 2); - assertTrue(tp.getColumnDefList().getColumn(0).getColumnName().toString().equalsIgnoreCase("dt")); - assertTrue(tp.getColumnDefList().getColumn(1).getDatatype().getDataType() == EDataType.string_t); - - THiveRowFormat rowFormat = createTable.getHiveRowFormat(); - assertTrue(rowFormat.getRowFormatType() == THiveRowFormat.ERowFormatType.delimited); - assertTrue(rowFormat.getTableRowFormatFieldIdentifier().getTerminateString().toString().equalsIgnoreCase("'1'")); - - THiveTableFileFormat tff = createTable.getHiveTableFileFormat(); - assertTrue(tff.getFileFormat() == EFileFormat.sffTBLSEQUENCEFILE); - - - } - - public void testSubquery(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "create table test.concat \n" + - "as select concat(heroes.name,' vs. ',villains.name) as battle \n" + - "from heroes \n" + - "join villains \n" + - "where heroes.era = villains.era and heroes.planet = villains.planet"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createTable.getSubQuery(); - System.out.println(select.toString()); - } - -} +package gudusoft.gsqlparser.hiveTest; +/* + * Date: 13-8-15 + */ + +import gudusoft.gsqlparser.EDataType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EFileFormat; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TColumnDefinition; +import gudusoft.gsqlparser.nodes.TTypeName; +import gudusoft.gsqlparser.nodes.hive.*; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testCreateTable extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "create table Addresses (\n" + + " name string,\n" + + " street string,\n" + + " city string,\n" + + " state string,\n" + + " zip int\n" + + ") stored as orc tblproperties (\"orc.compress\"=\"NONE\");"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("Addresses")); + assertTrue(createTable.getColumnList().size() == 5 ); + TColumnDefinition cd = createTable.getColumnList().getColumn(0); + assertTrue(cd.getColumnName().toString().equalsIgnoreCase("name")); + assertTrue(cd.getDatatype().getDataType() == EDataType.string_t); + cd = createTable.getColumnList().getColumn(4); + assertTrue(cd.getColumnName().toString().equalsIgnoreCase("zip")); + assertTrue(cd.getDatatype().getDataType() == EDataType.int_t); + + THiveTableFileFormat tff = createTable.getHiveTableFileFormat(); + assertTrue(tff.getFileFormat() == EFileFormat.sffFILEFORMAT_GENERIC); + assertTrue(tff.getGenericSpec().toString().equalsIgnoreCase("orc")); + + THiveTableProperties tp = createTable.getHiveTableProperties(); + assertTrue(tp.getTableProperties().size() == 1); + THiveKeyValueProperty kv = tp.getTableProperties().getElement(0); + assertTrue(kv.getKeyString().toString().equalsIgnoreCase("\"orc.compress\"")); + assertTrue(kv.getValueString().toString().equalsIgnoreCase("\"NONE\"")); + + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "CREATE TABLE union_test(foo UNIONTYPE, struct>);"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("union_test")); + assertTrue(createTable.getColumnList().size() == 1 ); + TColumnDefinition cd = createTable.getColumnList().getColumn(0); + assertTrue(cd.getColumnName().toString().equalsIgnoreCase("foo")); + assertTrue(cd.getDatatype().getDataType() == EDataType.unionType_t); + + assertTrue(cd.getDatatype().getColTypeList().size() == 4); + TTypeName dataType = cd.getDatatype().getColTypeList().getElement(0); + assertTrue(dataType.getDataType() == EDataType.int_t); + + dataType = cd.getDatatype().getColTypeList().getElement(1); + assertTrue(dataType.getDataType() == EDataType.double_t); + + dataType = cd.getDatatype().getColTypeList().getElement(2); + assertTrue(dataType.getDataType() == EDataType.listType_t); + assertTrue(dataType.getTypeOfList().getDataType() == EDataType.string_t); + + dataType = cd.getDatatype().getColTypeList().getElement(3); + assertTrue(dataType.getDataType() == EDataType.struct_t); + assertTrue(dataType.getColumnDefList().size() == 2); + TColumnDefinition cd1 = dataType.getColumnDefList().getColumn(0); + assertTrue(cd1.getColumnName().toString().equalsIgnoreCase("a")); + assertTrue(cd1.getDatatype().getDataType() == EDataType.int_t); + TColumnDefinition cd2 = dataType.getColumnDefList().getColumn(1); + assertTrue(cd2.getColumnName().toString().equalsIgnoreCase("b")); + assertTrue(cd2.getDatatype().getDataType() == EDataType.string_t); + + } + + public void test3(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "CREATE TABLE complex_json (\n" + + " DocId string,\n" + + " User struct,\n" + + " Orders:array>>\n" + + ")\n" + + "ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe';"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("complex_json")); + assertTrue(createTable.getColumnList().size() == 2 ); + TColumnDefinition cd = createTable.getColumnList().getColumn(0); + assertTrue(cd.getColumnName().toString().equalsIgnoreCase("DocId")); + assertTrue(cd.getDatatype().getDataType() == EDataType.string_t); + + cd = createTable.getColumnList().getColumn(1); + assertTrue(cd.getColumnName().toString().equalsIgnoreCase("User")); + assertTrue(cd.getDatatype().getDataType() == EDataType.struct_t); + assertTrue(cd.getDatatype().getColumnDefList().size() == 5); + + THiveRowFormat rowFormat = createTable.getHiveRowFormat(); + assertTrue(rowFormat.getRowFormatType() == THiveRowFormat.ERowFormatType.serde); + assertTrue(rowFormat.getRowFormatName().toString().equalsIgnoreCase("'org.openx.data.jsonserde.JsonSerDe'")); + + } + + public void test4(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "CREATE TABLE page_view(viewTime INT, userid BIGINT,\n" + + "page_url STRING, referrer_url STRING,\n" + + "ip STRING COMMENT 'IP Address of the User')\n" + + "COMMENT 'This is the page view table'\n" + + "PARTITIONED BY(dt STRING, country STRING)\n" + + "ROW FORMAT DELIMITED\n" + + "FIELDS TERMINATED BY '1'\n" + + "STORED AS SEQUENCEFILE;"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("page_view")); + TColumnDefinition cd = createTable.getColumnList().getColumn(4); + assertTrue(cd.getColumnName().toString().equalsIgnoreCase("ip")); + assertTrue(cd.getDatatype().getDataType() == EDataType.string_t); + assertTrue(cd.getComment().toString().equalsIgnoreCase("'IP Address of the User'")); + + assertTrue(createTable.getTableComment().toString().equalsIgnoreCase("'This is the page view table'")); + THiveTablePartition tp = createTable.getHiveTablePartition(); + assertTrue(tp.getColumnDefList().size() == 2); + assertTrue(tp.getColumnDefList().getColumn(0).getColumnName().toString().equalsIgnoreCase("dt")); + assertTrue(tp.getColumnDefList().getColumn(1).getDatatype().getDataType() == EDataType.string_t); + + THiveRowFormat rowFormat = createTable.getHiveRowFormat(); + assertTrue(rowFormat.getRowFormatType() == THiveRowFormat.ERowFormatType.delimited); + assertTrue(rowFormat.getTableRowFormatFieldIdentifier().getTerminateString().toString().equalsIgnoreCase("'1'")); + + THiveTableFileFormat tff = createTable.getHiveTableFileFormat(); + assertTrue(tff.getFileFormat() == EFileFormat.sffTBLSEQUENCEFILE); + + + } + + public void testSubquery(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "create table test.concat \n" + + "as select concat(heroes.name,' vs. ',villains.name) as battle \n" + + "from heroes \n" + + "join villains \n" + + "where heroes.era = villains.era and heroes.planet = villains.planet"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TSelectSqlStatement select = createTable.getSubQuery(); + System.out.println(select.toString()); + } + +} diff --git a/src/test/java/hive/testCreateView.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateView.java similarity index 96% rename from src/test/java/hive/testCreateView.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testCreateView.java index 639cf1e7..70d645ba 100644 --- a/src/test/java/hive/testCreateView.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateView.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-16 */ diff --git a/src/test/java/hive/testDescribe.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testDescribe.java similarity index 98% rename from src/test/java/hive/testDescribe.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testDescribe.java index 09801849..4ede1aa9 100644 --- a/src/test/java/hive/testDescribe.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testDescribe.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-16 */ diff --git a/src/test/java/hive/testDropIndex.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testDropIndex.java similarity index 95% rename from src/test/java/hive/testDropIndex.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testDropIndex.java index 25f9c460..df0b8e15 100644 --- a/src/test/java/hive/testDropIndex.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testDropIndex.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-16 */ diff --git a/src/test/java/hive/testExplain.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testExplain.java similarity index 97% rename from src/test/java/hive/testExplain.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testExplain.java index 2f6c7c84..4d22b9cf 100644 --- a/src/test/java/hive/testExplain.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testExplain.java @@ -1,51 +1,51 @@ -package hive; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TGroupBy; -import gudusoft.gsqlparser.nodes.EHiveInsertType; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.hive.THiveExplain; -import junit.framework.TestCase; - - -public class testExplain extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "EXPLAIN\n" + - "FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key;"; - assertTrue(sqlparser.parse() == 0); - - THiveExplain explain = (THiveExplain)sqlparser.sqlstatements.get(0); - assertTrue(explain.getStmt().sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insert = (TInsertSqlStatement)explain.getStmt(); -// TInsertSqlStatement insert = (TInsertSqlStatement)fromQuery.getHiveBodyList().get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insert.getTargetTable().getTableName().toString().equalsIgnoreCase("dest_g1")); - TSelectSqlStatement fromQuery = insert.getSubQuery(); - - assertTrue(fromQuery.tables.getTable(0).getTableName().toString().equalsIgnoreCase("src")); -// assertTrue(fromQuery.getHiveBodyList().size() == 1); -// TSelectSqlStatement select = (TSelectSqlStatement)insert.getSubQuery(); - TGroupBy groupBy = fromQuery.getGroupByClause(); - assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("src.key")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "EXPLAIN DEPENDENCY\n" + - " SELECT key, count(1) FROM srcpart WHERE ds IS NOT NULL GROUP BY key;"; - assertTrue(sqlparser.parse() == 0); - - THiveExplain explain = (THiveExplain)sqlparser.sqlstatements.get(0); - assertTrue(explain.getStmt().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)explain.getStmt(); - assertTrue(select.getResultColumnList().size() == 2); - assertTrue(select.tables.getTable(0).getTableName().toString().equalsIgnoreCase("srcpart")); - assertTrue(select.getWhereClause().getCondition().toString().equalsIgnoreCase("ds IS NOT NULL")); - TGroupBy groupBy = select.getGroupByClause(); - assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("key")); - } -} +package gudusoft.gsqlparser.hiveTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TGroupBy; +import gudusoft.gsqlparser.nodes.EHiveInsertType; +import gudusoft.gsqlparser.stmt.TInsertSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import gudusoft.gsqlparser.stmt.hive.THiveExplain; +import junit.framework.TestCase; + + +public class testExplain extends TestCase { + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "EXPLAIN\n" + + "FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key;"; + assertTrue(sqlparser.parse() == 0); + + THiveExplain explain = (THiveExplain)sqlparser.sqlstatements.get(0); + assertTrue(explain.getStmt().sqlstatementtype == ESqlStatementType.sstinsert); + TInsertSqlStatement insert = (TInsertSqlStatement)explain.getStmt(); +// TInsertSqlStatement insert = (TInsertSqlStatement)fromQuery.getHiveBodyList().get(0); + assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); + assertTrue(insert.getTargetTable().getTableName().toString().equalsIgnoreCase("dest_g1")); + TSelectSqlStatement fromQuery = insert.getSubQuery(); + + assertTrue(fromQuery.tables.getTable(0).getTableName().toString().equalsIgnoreCase("src")); +// assertTrue(fromQuery.getHiveBodyList().size() == 1); +// TSelectSqlStatement select = (TSelectSqlStatement)insert.getSubQuery(); + TGroupBy groupBy = fromQuery.getGroupByClause(); + assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("src.key")); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "EXPLAIN DEPENDENCY\n" + + " SELECT key, count(1) FROM srcpart WHERE ds IS NOT NULL GROUP BY key;"; + assertTrue(sqlparser.parse() == 0); + + THiveExplain explain = (THiveExplain)sqlparser.sqlstatements.get(0); + assertTrue(explain.getStmt().sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement select = (TSelectSqlStatement)explain.getStmt(); + assertTrue(select.getResultColumnList().size() == 2); + assertTrue(select.tables.getTable(0).getTableName().toString().equalsIgnoreCase("srcpart")); + assertTrue(select.getWhereClause().getCondition().toString().equalsIgnoreCase("ds IS NOT NULL")); + TGroupBy groupBy = select.getGroupByClause(); + assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("key")); + } +} diff --git a/src/test/java/hive/testExportTable.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testExportTable.java similarity index 98% rename from src/test/java/hive/testExportTable.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testExportTable.java index 47a42a65..575c007f 100644 --- a/src/test/java/hive/testExportTable.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testExportTable.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-15 */ diff --git a/src/test/java/hive/testFieldExpression.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testFieldExpression.java similarity index 97% rename from src/test/java/hive/testFieldExpression.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testFieldExpression.java index b3e33896..14d5c9b1 100644 --- a/src/test/java/hive/testFieldExpression.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testFieldExpression.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-12 */ diff --git a/src/test/java/hive/testFromSelect.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testFromSelect.java similarity index 98% rename from src/test/java/hive/testFromSelect.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testFromSelect.java index 7093b88b..797149d0 100644 --- a/src/test/java/hive/testFromSelect.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testFromSelect.java @@ -1,281 +1,281 @@ -package hive; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.hive.*; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testFromSelect extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="FROM pv_users \n" + - "INSERT OVERWRITE TABLE pv_gender_sum\n" + - " SELECT pv_users.gender, count(DISTINCT pv_users.userid) \n" + - " GROUP BY pv_users.gender \n" + - "INSERT OVERWRITE DIRECTORY '/user/facebook/tmp/pv_age_sum'\n" + - " SELECT pv_users.age, count(DISTINCT pv_users.userid) \n" + - " GROUP BY pv_users.age; \n" + - " "; - // System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insertSqlStatement.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insertSqlStatement.getTargetTable().getFullName().equalsIgnoreCase("pv_gender_sum")); - - TSelectSqlStatement select = insertSqlStatement.getSubQuery(); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - assertTrue(join.getTable().getFullName().equalsIgnoreCase("pv_users")); - assertTrue(select.getGroupByClause().getItems().getGroupByItem(0).toString().equalsIgnoreCase("pv_users.gender")); - - - TInsertSqlStatement insertSqlStatement2 = insertSqlStatement.getMultiInsertStatements().get(0); - assertTrue(insertSqlStatement2.getHiveInsertType() == EHiveInsertType.overwriteDirectory); - assertTrue(insertSqlStatement2.getDirectoryName().toString().equalsIgnoreCase("'/user/facebook/tmp/pv_age_sum'")); - - select = insertSqlStatement2.getSubQuery(); - join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - assertTrue(join.getTable().getFullName().equalsIgnoreCase("pv_users")); - assertTrue(select.getGroupByClause().getItems().getGroupByItem(0).toString().equalsIgnoreCase("pv_users.age")); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext =" FROM (\n" + - " FROM pv_users\n" + - " MAP ( pv_users.userid, pv_users.date )\n" + - " USING 'map_script'\n" + - " AS c1, c2, c3\n" + - " DISTRIBUTE BY c2\n" + - " SORT BY c2, c1) map_output\n" + - " INSERT OVERWRITE TABLE pv_users_reduced\n" + - " REDUCE ( map_output.c1, map_output.c2, map_output.c3 )\n" + - " USING 'reduce_script'\n" + - " AS date, count;" ; - - - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insert.tables.getTable(0).toString().equalsIgnoreCase("pv_users_reduced")); - - TSelectSqlStatement reduceSelect = insert.getSubQuery(); - assertTrue(reduceSelect.getTransformClause() != null); - THiveTransformClause transformClause = reduceSelect.getTransformClause(); - assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettReduce); - assertTrue(transformClause.getExpressionList().size() == 3); - assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("map_output.c1")); - assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("map_output.c2")); - assertTrue(transformClause.getExpressionList().getExpression(2).toString().equalsIgnoreCase("map_output.c3")); - assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'reduce_script'")); - - TAliasClause aliasClause = transformClause.getAliasClause(); - assertTrue(aliasClause.getColumns().size() == 2); - assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("date")); - assertTrue(aliasClause.getColumns().getObjectName(1).toString().equalsIgnoreCase("count")); - - - -// FROM ( -// FROM pv_users -// MAP ( pv_users.userid, pv_users.date ) -// USING 'map_script' -// AS c1, c2, c3 -// DISTRIBUTE BY c2 -// SORT BY c2, c1) map_output - - // table is type of subquery of the above sql - TTable table = reduceSelect.tables.getTable(0); - assertTrue(table.getAliasClause().toString().equalsIgnoreCase("map_output")); - - assertTrue(table.getTableType() == ETableSource.subquery); - TSelectSqlStatement select1 = table.getSubquery(); - TTable table1 = select1.tables.getTable(0); - assertTrue(table1.getTableName().toString().equalsIgnoreCase("pv_users")); - - - assertTrue(select1.getTransformClause() != null); - transformClause = select1.getTransformClause(); - assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettMap); - - assertTrue(transformClause.getExpressionList().size() == 2); - assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("pv_users.userid")); - assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("pv_users.date")); - assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'map_script'")); - - aliasClause = transformClause.getAliasClause(); - assertTrue(aliasClause.getColumns().size() == 3); - assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("c1")); - assertTrue(aliasClause.getColumns().getObjectName(1).toString().equalsIgnoreCase("c2")); - assertTrue(aliasClause.getColumns().getObjectName(2).toString().equalsIgnoreCase("c3")); - - TDistributeBy distributeBy = select1.getDistributeBy(); - assertTrue(distributeBy.getExpressionList().size() == 1); - assertTrue(distributeBy.getExpressionList().getExpression(0).toString().equalsIgnoreCase("c2")); - - TSortBy sortBy = select1.getSortBy(); - assertTrue(sortBy.getItems().size() == 2); - assertTrue(sortBy.getItems().getOrderByItem(0).getSortKey().toString().equalsIgnoreCase("c2")); - assertTrue(sortBy.getItems().getOrderByItem(0).getSortType() == TBaseType.srtNone); - assertTrue(sortBy.getItems().getOrderByItem(1).getSortKey().toString().equalsIgnoreCase("c1")); - assertTrue(sortBy.getItems().getOrderByItem(0).getSortType() == TBaseType.srtNone); - - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = " FROM (\n" + - " FROM pv_users\n" + - " MAP pv_users.userid, pv_users.date\n" + - " USING 'map_script'\n" + - " AS dt, uid\n" + - " CLUSTER BY dt) map_output\n" + - " INSERT OVERWRITE TABLE pv_users_reduced\n" + - " REDUCE map_output.dt, map_output.uid\n" + - " USING 'reduce_script'\n" + - " AS date, count;\n"; - - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insert.tables.getTable(0).toString().equalsIgnoreCase("pv_users_reduced")); - TSelectSqlStatement subquery = insert.getSubQuery(); - - - TTable table = subquery.tables.getTable(0); - assertTrue(table.getAliasClause().toString().equalsIgnoreCase("map_output")); - - - assertTrue(subquery.getTransformClause() != null); - - THiveTransformClause transformClause = subquery.getTransformClause(); - assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettReduce); - assertTrue(transformClause.getExpressionList().size() == 2); - assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("map_output.dt")); - assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("map_output.uid")); - assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'reduce_script'")); - - TAliasClause aliasClause = transformClause.getAliasClause(); - assertTrue(aliasClause.getColumns().size() ==2 ); - assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("date")); - assertTrue(aliasClause.getColumns().getObjectName(1).toString().equalsIgnoreCase("count")); - } - - public void test4(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "FROM (\n" + - " FROM src\n" + - " SELECT TRANSFORM(src.KEY, src.value) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'\n" + - " USING '/bin/cat'\n" + - " AS (tkey, tvalue) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'\n" + - " RECORDREADER 'org.apache.hadoop.hive.ql.exec.TypedBytesRecordReader'\n" + - " ) tmap\n" + - " INSERT OVERWRITE TABLE dest1 SELECT tkey, tvalue;"; - - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - //TInsertSqlStatement insert = (TInsertSqlStatement)select.getHiveBodyList().get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insert.tables.getTable(0).toString().equalsIgnoreCase("dest1")); - TSelectSqlStatement subquery = insert.getSubQuery(); - assertTrue(subquery.getResultColumnList().size() == 2); - assertTrue(subquery.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("tkey")); - assertTrue(subquery.getResultColumnList().getResultColumn(1).toString().equalsIgnoreCase("tvalue")); - - - TTable table = subquery.tables.getTable(0); - assertTrue(table.getAliasClause().toString().equalsIgnoreCase("tmap")); - - - assertTrue(table.getTableType() == ETableSource.subquery); - TSelectSqlStatement subquery1 = table.getSubquery(); - assertTrue(subquery1.tables.getTable(0).toString().equalsIgnoreCase("src")); - - TSelectSqlStatement select1 = subquery1; - - assertTrue(select1.getTransformClause() != null); - THiveTransformClause transformClause = select1.getTransformClause(); - assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettSelect); - assertTrue(transformClause.getExpressionList().size() == 2); - assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("src.KEY")); - assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("src.value")); - - THiveRowFormat inrf = transformClause.getInRowFormat(); - assertTrue(inrf.getRowFormatType() == THiveRowFormat.ERowFormatType.serde); - assertTrue(inrf.getRowFormatName().toString().equalsIgnoreCase("'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'")); - - THiveRowFormat outrf = transformClause.getOutRowFormat(); - assertTrue(outrf.getRowFormatType() == THiveRowFormat.ERowFormatType.serde); - assertTrue(outrf.getRowFormatName().toString().equalsIgnoreCase("'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'")); - - THiveRecordReader outrr = transformClause.getOutRecordReader(); - assertTrue(outrr.getStringLiteral().toString().equalsIgnoreCase("'org.apache.hadoop.hive.ql.exec.TypedBytesRecordReader'")); - - TAliasClause aliasClause = transformClause.getAliasClause(); - assertTrue(aliasClause.getColumns().size() == 2); - assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("tkey")); - - assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'/bin/cat'")); - } - - - public void test5(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "FROM page_view_stg pvs\n" + - "INSERT OVERWRITE TABLE page_view PARTITION(dt='2008-06-08', country)\n" + - "SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, null, null, pvs.ip, pvs.country"; - - assertTrue(sqlparser.parse() == 0); - - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - TTable table = insert.getTargetTable(); - TPartitionExtensionClause partition = table.getPartitionExtensionClause(); - - assertTrue(table.getTableName().toString().equalsIgnoreCase("page_view")); - assertTrue(partition.getKeyValues().getExpression(0).getLeftOperand().toString().equalsIgnoreCase("dt")); - - TSelectSqlStatement subquery = insert.getSubQuery(); - assertTrue(subquery.getResultColumnList().size() == 8); - - //TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(subquery.tables.getTable(0).getTableName().toString().equalsIgnoreCase("page_view_stg")); - - } - - public void test6(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "FROM pv_users\n" + - "MAP pv_users.userid, pv_users.date\n" + - "USING 'map_script'\n" + - "AS dt, uid\n" + - "CLUSTER BY dt;"; - - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement mapSelect = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(mapSelect.tables.getTable(0).getTableName().toString().equalsIgnoreCase("pv_users")); - assertTrue(mapSelect.getTransformClause() != null); - THiveTransformClause transformClause = mapSelect.getTransformClause(); - assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettMap); - assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("pv_users.userid")); - assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'map_script'")); - assertTrue(mapSelect.getClusterBy().getExpressionList().getExpression(0).toString().equalsIgnoreCase("dt")); - } -} +package gudusoft.gsqlparser.hiveTest; + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.nodes.hive.*; +import gudusoft.gsqlparser.stmt.TInsertSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + + +public class testFromSelect extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext ="FROM pv_users \n" + + "INSERT OVERWRITE TABLE pv_gender_sum\n" + + " SELECT pv_users.gender, count(DISTINCT pv_users.userid) \n" + + " GROUP BY pv_users.gender \n" + + "INSERT OVERWRITE DIRECTORY '/user/facebook/tmp/pv_age_sum'\n" + + " SELECT pv_users.age, count(DISTINCT pv_users.userid) \n" + + " GROUP BY pv_users.age; \n" + + " "; + // System.out.println(sqlparser.sqltext); + + assertTrue(sqlparser.parse() == 0); + + + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstinsert); + TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(insertSqlStatement.getHiveInsertType() == EHiveInsertType.overwriteTable); + assertTrue(insertSqlStatement.getTargetTable().getFullName().equalsIgnoreCase("pv_gender_sum")); + + TSelectSqlStatement select = insertSqlStatement.getSubQuery(); + TJoin join = select.joins.getJoin(0); + assertTrue(join.getKind() == TBaseType.join_source_fake); + assertTrue(join.getTable().getFullName().equalsIgnoreCase("pv_users")); + assertTrue(select.getGroupByClause().getItems().getGroupByItem(0).toString().equalsIgnoreCase("pv_users.gender")); + + + TInsertSqlStatement insertSqlStatement2 = insertSqlStatement.getMultiInsertStatements().get(0); + assertTrue(insertSqlStatement2.getHiveInsertType() == EHiveInsertType.overwriteDirectory); + assertTrue(insertSqlStatement2.getDirectoryName().toString().equalsIgnoreCase("'/user/facebook/tmp/pv_age_sum'")); + + select = insertSqlStatement2.getSubQuery(); + join = select.joins.getJoin(0); + assertTrue(join.getKind() == TBaseType.join_source_fake); + assertTrue(join.getTable().getFullName().equalsIgnoreCase("pv_users")); + assertTrue(select.getGroupByClause().getItems().getGroupByItem(0).toString().equalsIgnoreCase("pv_users.age")); + + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext =" FROM (\n" + + " FROM pv_users\n" + + " MAP ( pv_users.userid, pv_users.date )\n" + + " USING 'map_script'\n" + + " AS c1, c2, c3\n" + + " DISTRIBUTE BY c2\n" + + " SORT BY c2, c1) map_output\n" + + " INSERT OVERWRITE TABLE pv_users_reduced\n" + + " REDUCE ( map_output.c1, map_output.c2, map_output.c3 )\n" + + " USING 'reduce_script'\n" + + " AS date, count;" ; + + + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); + + assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); + assertTrue(insert.tables.getTable(0).toString().equalsIgnoreCase("pv_users_reduced")); + + TSelectSqlStatement reduceSelect = insert.getSubQuery(); + assertTrue(reduceSelect.getTransformClause() != null); + THiveTransformClause transformClause = reduceSelect.getTransformClause(); + assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettReduce); + assertTrue(transformClause.getExpressionList().size() == 3); + assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("map_output.c1")); + assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("map_output.c2")); + assertTrue(transformClause.getExpressionList().getExpression(2).toString().equalsIgnoreCase("map_output.c3")); + assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'reduce_script'")); + + TAliasClause aliasClause = transformClause.getAliasClause(); + assertTrue(aliasClause.getColumns().size() == 2); + assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("date")); + assertTrue(aliasClause.getColumns().getObjectName(1).toString().equalsIgnoreCase("count")); + + + +// FROM ( +// FROM pv_users +// MAP ( pv_users.userid, pv_users.date ) +// USING 'map_script' +// AS c1, c2, c3 +// DISTRIBUTE BY c2 +// SORT BY c2, c1) map_output + + // table is type of subquery of the above sql + TTable table = reduceSelect.tables.getTable(0); + assertTrue(table.getAliasClause().toString().equalsIgnoreCase("map_output")); + + assertTrue(table.getTableType() == ETableSource.subquery); + TSelectSqlStatement select1 = table.getSubquery(); + TTable table1 = select1.tables.getTable(0); + assertTrue(table1.getTableName().toString().equalsIgnoreCase("pv_users")); + + + assertTrue(select1.getTransformClause() != null); + transformClause = select1.getTransformClause(); + assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettMap); + + assertTrue(transformClause.getExpressionList().size() == 2); + assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("pv_users.userid")); + assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("pv_users.date")); + assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'map_script'")); + + aliasClause = transformClause.getAliasClause(); + assertTrue(aliasClause.getColumns().size() == 3); + assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("c1")); + assertTrue(aliasClause.getColumns().getObjectName(1).toString().equalsIgnoreCase("c2")); + assertTrue(aliasClause.getColumns().getObjectName(2).toString().equalsIgnoreCase("c3")); + + TDistributeBy distributeBy = select1.getDistributeBy(); + assertTrue(distributeBy.getExpressionList().size() == 1); + assertTrue(distributeBy.getExpressionList().getExpression(0).toString().equalsIgnoreCase("c2")); + + TSortBy sortBy = select1.getSortBy(); + assertTrue(sortBy.getItems().size() == 2); + assertTrue(sortBy.getItems().getOrderByItem(0).getSortKey().toString().equalsIgnoreCase("c2")); + assertTrue(sortBy.getItems().getOrderByItem(0).getSortType() == TBaseType.srtNone); + assertTrue(sortBy.getItems().getOrderByItem(1).getSortKey().toString().equalsIgnoreCase("c1")); + assertTrue(sortBy.getItems().getOrderByItem(0).getSortType() == TBaseType.srtNone); + + } + + public void test3(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = " FROM (\n" + + " FROM pv_users\n" + + " MAP pv_users.userid, pv_users.date\n" + + " USING 'map_script'\n" + + " AS dt, uid\n" + + " CLUSTER BY dt) map_output\n" + + " INSERT OVERWRITE TABLE pv_users_reduced\n" + + " REDUCE map_output.dt, map_output.uid\n" + + " USING 'reduce_script'\n" + + " AS date, count;\n"; + + assertTrue(sqlparser.parse() == 0); + + TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); + assertTrue(insert.tables.getTable(0).toString().equalsIgnoreCase("pv_users_reduced")); + TSelectSqlStatement subquery = insert.getSubQuery(); + + + TTable table = subquery.tables.getTable(0); + assertTrue(table.getAliasClause().toString().equalsIgnoreCase("map_output")); + + + assertTrue(subquery.getTransformClause() != null); + + THiveTransformClause transformClause = subquery.getTransformClause(); + assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettReduce); + assertTrue(transformClause.getExpressionList().size() == 2); + assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("map_output.dt")); + assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("map_output.uid")); + assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'reduce_script'")); + + TAliasClause aliasClause = transformClause.getAliasClause(); + assertTrue(aliasClause.getColumns().size() ==2 ); + assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("date")); + assertTrue(aliasClause.getColumns().getObjectName(1).toString().equalsIgnoreCase("count")); + } + + public void test4(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "FROM (\n" + + " FROM src\n" + + " SELECT TRANSFORM(src.KEY, src.value) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'\n" + + " USING '/bin/cat'\n" + + " AS (tkey, tvalue) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'\n" + + " RECORDREADER 'org.apache.hadoop.hive.ql.exec.TypedBytesRecordReader'\n" + + " ) tmap\n" + + " INSERT OVERWRITE TABLE dest1 SELECT tkey, tvalue;"; + + assertTrue(sqlparser.parse() == 0); + + TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); + //TInsertSqlStatement insert = (TInsertSqlStatement)select.getHiveBodyList().get(0); + assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); + assertTrue(insert.tables.getTable(0).toString().equalsIgnoreCase("dest1")); + TSelectSqlStatement subquery = insert.getSubQuery(); + assertTrue(subquery.getResultColumnList().size() == 2); + assertTrue(subquery.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("tkey")); + assertTrue(subquery.getResultColumnList().getResultColumn(1).toString().equalsIgnoreCase("tvalue")); + + + TTable table = subquery.tables.getTable(0); + assertTrue(table.getAliasClause().toString().equalsIgnoreCase("tmap")); + + + assertTrue(table.getTableType() == ETableSource.subquery); + TSelectSqlStatement subquery1 = table.getSubquery(); + assertTrue(subquery1.tables.getTable(0).toString().equalsIgnoreCase("src")); + + TSelectSqlStatement select1 = subquery1; + + assertTrue(select1.getTransformClause() != null); + THiveTransformClause transformClause = select1.getTransformClause(); + assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettSelect); + assertTrue(transformClause.getExpressionList().size() == 2); + assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("src.KEY")); + assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("src.value")); + + THiveRowFormat inrf = transformClause.getInRowFormat(); + assertTrue(inrf.getRowFormatType() == THiveRowFormat.ERowFormatType.serde); + assertTrue(inrf.getRowFormatName().toString().equalsIgnoreCase("'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'")); + + THiveRowFormat outrf = transformClause.getOutRowFormat(); + assertTrue(outrf.getRowFormatType() == THiveRowFormat.ERowFormatType.serde); + assertTrue(outrf.getRowFormatName().toString().equalsIgnoreCase("'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'")); + + THiveRecordReader outrr = transformClause.getOutRecordReader(); + assertTrue(outrr.getStringLiteral().toString().equalsIgnoreCase("'org.apache.hadoop.hive.ql.exec.TypedBytesRecordReader'")); + + TAliasClause aliasClause = transformClause.getAliasClause(); + assertTrue(aliasClause.getColumns().size() == 2); + assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("tkey")); + + assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'/bin/cat'")); + } + + + public void test5(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "FROM page_view_stg pvs\n" + + "INSERT OVERWRITE TABLE page_view PARTITION(dt='2008-06-08', country)\n" + + "SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, null, null, pvs.ip, pvs.country"; + + assertTrue(sqlparser.parse() == 0); + + + TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); + TTable table = insert.getTargetTable(); + TPartitionExtensionClause partition = table.getPartitionExtensionClause(); + + assertTrue(table.getTableName().toString().equalsIgnoreCase("page_view")); + assertTrue(partition.getKeyValues().getExpression(0).getLeftOperand().toString().equalsIgnoreCase("dt")); + + TSelectSqlStatement subquery = insert.getSubQuery(); + assertTrue(subquery.getResultColumnList().size() == 8); + + //TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(subquery.tables.getTable(0).getTableName().toString().equalsIgnoreCase("page_view_stg")); + + } + + public void test6(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "FROM pv_users\n" + + "MAP pv_users.userid, pv_users.date\n" + + "USING 'map_script'\n" + + "AS dt, uid\n" + + "CLUSTER BY dt;"; + + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement mapSelect = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(mapSelect.tables.getTable(0).getTableName().toString().equalsIgnoreCase("pv_users")); + assertTrue(mapSelect.getTransformClause() != null); + THiveTransformClause transformClause = mapSelect.getTransformClause(); + assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettMap); + assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("pv_users.userid")); + assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'map_script'")); + assertTrue(mapSelect.getClusterBy().getExpressionList().getExpression(0).toString().equalsIgnoreCase("dt")); + } +} diff --git a/src/test/java/hive/testFunction.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testFunction.java similarity index 98% rename from src/test/java/hive/testFunction.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testFunction.java index aed06011..2119e22e 100644 --- a/src/test/java/hive/testFunction.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testFunction.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.TExpression; diff --git a/src/test/java/hive/testGetFullTableName.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testGetFullTableName.java similarity index 95% rename from src/test/java/hive/testGetFullTableName.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testGetFullTableName.java index 4597a239..d7bf54b4 100644 --- a/src/test/java/hive/testGetFullTableName.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testGetFullTableName.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 14-1-29 */ diff --git a/src/test/java/hive/testHint.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testHint.java similarity index 96% rename from src/test/java/hive/testHint.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testHint.java index 202fcf78..3a765b8a 100644 --- a/src/test/java/hive/testHint.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testHint.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/hive/testIdentifierBacktick.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testIdentifierBacktick.java similarity index 97% rename from src/test/java/hive/testIdentifierBacktick.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testIdentifierBacktick.java index 118a9f30..cda261a0 100644 --- a/src/test/java/hive/testIdentifierBacktick.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testIdentifierBacktick.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/hive/testImportTable.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testImportTable.java similarity index 97% rename from src/test/java/hive/testImportTable.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testImportTable.java index b5695b00..56ebda09 100644 --- a/src/test/java/hive/testImportTable.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testImportTable.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-15 */ diff --git a/src/test/java/hive/testInsert.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testInsert.java similarity index 99% rename from src/test/java/hive/testInsert.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testInsert.java index b08e96f3..57789c3b 100644 --- a/src/test/java/hive/testInsert.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testInsert.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-12 */ diff --git a/src/test/java/hive/testJoin.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testJoin.java similarity index 99% rename from src/test/java/hive/testJoin.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testJoin.java index 70a108a3..e7d9f779 100644 --- a/src/test/java/hive/testJoin.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testJoin.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.*; diff --git a/src/test/java/hive/testLateralView.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testLateralView.java similarity index 97% rename from src/test/java/hive/testLateralView.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testLateralView.java index defc67f3..310e633d 100644 --- a/src/test/java/hive/testLateralView.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testLateralView.java @@ -1,63 +1,63 @@ -package hive; -/* - * Date: 13-8-12 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.nodes.TLateralView; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testLateralView extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "SELECT * FROM exampleTable\n" + - " LATERAL VIEW explode(col1) myTable1 AS myCol1\n" + - " LATERAL VIEW explode(myCol1) myTable2 AS myCol2;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TTable table = select.tables.getTable(0); - assertTrue(table.getTableType() == ETableSource.objectname); - assertTrue(table.getTableName().toString().equalsIgnoreCase("exampleTable")); - assertTrue(table.getLateralViewList().size() == 2); - - TLateralView view = table.getLateralViewList().get(0); - TFunctionCall call = view.getUdtf(); - assertTrue(call.getFunctionName().toString().equalsIgnoreCase("explode")); - assertTrue(call.getArgs().getExpression(0).toString().equalsIgnoreCase("col1")); - assertTrue(view.getTableAlias().getAliasName().toString().equalsIgnoreCase("myTable1")); - assertTrue(view.getColumnAliasList().size() == 1); - assertTrue(view.getColumnAliasList().getObjectName(0).toString().equalsIgnoreCase("myCol1")); - - view = table.getLateralViewList().get(1); - call = view.getUdtf(); - assertTrue(call.getFunctionName().toString().equalsIgnoreCase("explode")); - assertTrue(call.getArgs().getExpression(0).toString().equalsIgnoreCase("myCol1")); - assertTrue(view.getTableAlias().getAliasName().toString().equalsIgnoreCase("myTable2")); - assertTrue(view.getColumnAliasList().size() == 1); - assertTrue(view.getColumnAliasList().getObjectName(0).toString().equalsIgnoreCase("myCol2")); - - } - - public void test2() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "select full_name, t.* from foodmart.trimmed_employee\n" + - "lateral view json_tuple('{\"email\":\"amy@only_for_json_udf_test.net\", \"owner\":123}','owner','email') t as owner,email;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(select.joins.size() == 1); - } - -} +package gudusoft.gsqlparser.hiveTest; +/* + * Date: 13-8-12 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ETableSource; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TFunctionCall; +import gudusoft.gsqlparser.nodes.TTable; +import gudusoft.gsqlparser.nodes.TLateralView; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testLateralView extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "SELECT * FROM exampleTable\n" + + " LATERAL VIEW explode(col1) myTable1 AS myCol1\n" + + " LATERAL VIEW explode(myCol1) myTable2 AS myCol2;"; + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + TTable table = select.tables.getTable(0); + assertTrue(table.getTableType() == ETableSource.objectname); + assertTrue(table.getTableName().toString().equalsIgnoreCase("exampleTable")); + assertTrue(table.getLateralViewList().size() == 2); + + TLateralView view = table.getLateralViewList().get(0); + TFunctionCall call = view.getUdtf(); + assertTrue(call.getFunctionName().toString().equalsIgnoreCase("explode")); + assertTrue(call.getArgs().getExpression(0).toString().equalsIgnoreCase("col1")); + assertTrue(view.getTableAlias().getAliasName().toString().equalsIgnoreCase("myTable1")); + assertTrue(view.getColumnAliasList().size() == 1); + assertTrue(view.getColumnAliasList().getObjectName(0).toString().equalsIgnoreCase("myCol1")); + + view = table.getLateralViewList().get(1); + call = view.getUdtf(); + assertTrue(call.getFunctionName().toString().equalsIgnoreCase("explode")); + assertTrue(call.getArgs().getExpression(0).toString().equalsIgnoreCase("myCol1")); + assertTrue(view.getTableAlias().getAliasName().toString().equalsIgnoreCase("myTable2")); + assertTrue(view.getColumnAliasList().size() == 1); + assertTrue(view.getColumnAliasList().getObjectName(0).toString().equalsIgnoreCase("myCol2")); + + } + + public void test2() { + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "select full_name, t.* from foodmart.trimmed_employee\n" + + "lateral view json_tuple('{\"email\":\"amy@only_for_json_udf_test.net\", \"owner\":123}','owner','email') t as owner,email;"; + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); + assertTrue(select.joins.size() == 1); + } + +} diff --git a/src/test/java/hive/testLoad.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testLoad.java similarity index 98% rename from src/test/java/hive/testLoad.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testLoad.java index f8abcc2d..0646e87b 100644 --- a/src/test/java/hive/testLoad.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testLoad.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-15 */ diff --git a/src/test/java/hive/testParse.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testParse.java similarity index 96% rename from src/test/java/hive/testParse.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testParse.java index 22f9b963..6a0d2474 100644 --- a/src/test/java/hive/testParse.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testParse.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/hive/testSampleClause.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testSampleClause.java similarity index 99% rename from src/test/java/hive/testSampleClause.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testSampleClause.java index 4d8cc8c0..1cc2c752 100644 --- a/src/test/java/hive/testSampleClause.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testSampleClause.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-12 */ diff --git a/src/test/java/hive/testSelect.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testSelect.java similarity index 99% rename from src/test/java/hive/testSelect.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testSelect.java index a8f01cad..0df13744 100644 --- a/src/test/java/hive/testSelect.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testSelect.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-9 */ diff --git a/src/test/java/hive/testSet.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testSet.java similarity index 98% rename from src/test/java/hive/testSet.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testSet.java index 3467ab2a..3e1f1b3a 100644 --- a/src/test/java/hive/testSet.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testSet.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-15 */ diff --git a/src/test/java/hive/testShow.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testShow.java similarity index 95% rename from src/test/java/hive/testShow.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testShow.java index f149f6b1..1cdaaaeb 100644 --- a/src/test/java/hive/testShow.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testShow.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-16 */ diff --git a/src/test/java/hive/testTimestamp.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testTimestamp.java similarity index 87% rename from src/test/java/hive/testTimestamp.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testTimestamp.java index 775a422a..f5501d02 100644 --- a/src/test/java/hive/testTimestamp.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testTimestamp.java @@ -1,11 +1,7 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.EHiveInsertType; -import gudusoft.gsqlparser.nodes.TJoin; import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; import gudusoft.gsqlparser.stmt.TSelectSqlStatement; import junit.framework.TestCase; diff --git a/src/test/java/hive/testToString.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testToString.java similarity index 96% rename from src/test/java/hive/testToString.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testToString.java index 8402666c..f7534043 100644 --- a/src/test/java/hive/testToString.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testToString.java @@ -1,36 +1,36 @@ -package hive; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testToString extends TestCase { - - public void testGroupBy(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "select * from t1 group by c1 with rollup"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getGroupByClause().toString().equalsIgnoreCase("group by c1 with rollup")); - // System.out.println(select.getGroupByClause().toString()); - - } - - public void testFromClause(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "select * from t1 join t2 on t1.c1 = t2.c2"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - //System.out.println(select.joins); - assertTrue(select.joins.toString().equalsIgnoreCase("t1 join t2 on t1.c1 = t2.c2")); - //assertTrue(select.getGroupByClause().toString().equalsIgnoreCase("group by c1")); - - } - -} +package gudusoft.gsqlparser.hiveTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testToString extends TestCase { + + public void testGroupBy(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "select * from t1 group by c1 with rollup"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(select.getGroupByClause().toString().equalsIgnoreCase("group by c1 with rollup")); + // System.out.println(select.getGroupByClause().toString()); + + } + + public void testFromClause(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "select * from t1 join t2 on t1.c1 = t2.c2"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + //System.out.println(select.joins); + assertTrue(select.joins.toString().equalsIgnoreCase("t1 join t2 on t1.c1 = t2.c2")); + //assertTrue(select.getGroupByClause().toString().equalsIgnoreCase("group by c1")); + + } + +} diff --git a/src/test/java/hive/testUnion.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testUnion.java similarity index 97% rename from src/test/java/hive/testUnion.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testUnion.java index 960bfafc..79d54c6d 100644 --- a/src/test/java/hive/testUnion.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testUnion.java @@ -1,195 +1,194 @@ -package hive; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.hive.THiveFromQuery; -import junit.framework.TestCase; - -/** - * Created by IntelliJ IDEA. - * User: tako - * Date: 13-8-11 - * Time: 下午6:32 - * To change this template use File | Settings | File Templates. - */ -public class testUnion extends TestCase { - - public void testUnionInSubquery(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT t3.col\n" + - "FROM (\n" + - " SELECT a+b AS col\n" + - " FROM t1\n" + - " UNION ALL\n" + - " SELECT c-d AS col\n" + - " FROM t2\n" + - ") t3;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.subquery); - - TSelectSqlStatement subquery = table.getSubquery(); - assertTrue(subquery.isCombinedQuery()); - TSelectSqlStatement left = subquery.getLeftStmt(); - TSelectSqlStatement right = subquery.getRightStmt(); - - TResultColumn rs = left.getResultColumnList().getResultColumn(0); - TExpression expr = rs.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.arithmetic_plus_t); - - TAliasClause aliasClause = rs.getAliasClause(); - // System.out.println(aliasClause.getAliasName().toString()); - assertTrue(aliasClause.getAliasName().toString().equalsIgnoreCase("col")); - - rs = right.getResultColumnList().getResultColumn(0); - expr = rs.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.arithmetic_minus_t); - - - } - - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "SELECT u.id, actions.date\n" + - "FROM (\n" + - " SELECT av.uid AS uid \n" + - " FROM action_video av \n" + - " WHERE av.date = '2008-06-03'\n" + - " UNION ALL \n" + - " SELECT ac.uid AS uid \n" + - " FROM action_comment ac \n" + - " WHERE ac.date = '2008-06-03'\n" + - " ) actions JOIN users u ON (u.id = actions.uid) ;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_table); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.subquery); - TJoinItem joinItem = join.getJoinItems().getJoinItem(0); - assertTrue(joinItem.getJoinType() == EJoinType.join); - assertTrue(joinItem.getTable().getFullName().equalsIgnoreCase("users")); - - TSelectSqlStatement subquery = table.getSubquery(); - assertTrue(subquery.isCombinedQuery()); - - TSelectSqlStatement left = subquery.getLeftStmt(); - TSelectSqlStatement right = subquery.getRightStmt(); - - TResultColumn rs = left.getResultColumnList().getResultColumn(0); - TExpression expr = rs.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expr.toString().equalsIgnoreCase("av.uid")); - assertTrue(rs.getAliasClause().getAliasName().toString().equalsIgnoreCase("uid")); - - rs = right.getResultColumnList().getResultColumn(0); - expr = rs.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expr.toString().equalsIgnoreCase("ac.uid")); - assertTrue(rs.getAliasClause().getAliasName().toString().equalsIgnoreCase("uid")); - - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "FROM (\n" + - " FROM (\n" + - " FROM action_video av\n" + - " SELECT av.uid AS uid, av.id AS id, av.date AS date\n" + - " \n" + - " UNION ALL\n" + - " \n" + - " FROM action_comment ac\n" + - " SELECT ac.uid AS uid, ac.id AS id, ac.date AS date\n" + - " ) union_actions\n" + - " SELECT union_actions.uid, union_actions.id, union_actions.date\n" + - " CLUSTER BY union_actions.uid) map;"; - // System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement fromQuery = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = fromQuery.tables.getTable(0); - assertTrue(table.getTableType() == ETableSource.subquery); - - assertTrue(table.getAliasClause().getAliasName().toString().equalsIgnoreCase("map")); - - //assertTrue(fromQuery.getHiveBodyList().size() == 0); - - TSelectSqlStatement select = table.getSubquery(); - //TSelectSqlStatement select = (TSelectSqlStatement)fromQuery.getHiveBodyList().get(0); - assertTrue(select.getResultColumnList().size() == 3); - TClusterBy clusterBy = select.getClusterBy(); - assertTrue(clusterBy.getExpressionList().getExpression(0).toString().equalsIgnoreCase("union_actions.uid")); - - table = select.tables.getTable(0); - assertTrue(table.getTableType() == ETableSource.subquery); - assertTrue(table.getAliasClause().getAliasName().toString().equalsIgnoreCase("union_actions")); - select = table.getSubquery(); - assertTrue(select.isCombinedQuery()); - assertTrue(select.getSetOperator() == TSelectSqlStatement.setOperator_unionall); - // hive from query: from...select will be translated into select statement in union operation - TSelectSqlStatement left = select.getLeftStmt(); - assertTrue(left.tables.getTable(0).getTableName().toString().equalsIgnoreCase("action_video")); - assertTrue(left.tables.getTable(0).getAliasClause().getAliasName().toString().equalsIgnoreCase("av")); - - // hive from query: from...select will be translated into select statement in union operation - TSelectSqlStatement right = select.getRightStmt(); - assertTrue(right.tables.getTable(0).getTableName().toString().equalsIgnoreCase("action_comment")); - assertTrue(right.tables.getTable(0).getAliasClause().getAliasName().toString().equalsIgnoreCase("ac")); - - //assertTrue(fromQuery.getHiveBodyList().size() == 0); - - } - - public void testSelectUnion(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE VIEW SAMPLE_JOIN AS SELECT \n" + - " P_DATE,\n" + - " SAMPLE_DT NAME ,\n" + - " SAMPLE_ADV_AM ADVANCE_AMOUNT,\n" + - " 'ACTIVE' AS SMPLE_STATUS\n" + - " FROM SAMPLE_TABLE SAMP,\n" + - " (SELECT 'A' DELTA_BYTE FROM DUAL\n" + - " UNION ALL\n" + - " SELECT 'C' DELTA_BYTE FROM DUAL\n" + - " UNION ALL\n" + - " SELECT 'D' DELTA_BYTE FROM DUAL\n" + - "\t\t ) BYTE_TAB\n" + - " WHERE P_DATE =\n" + - " (SELECT MAX (P_DATE)\n" + - " FROM SAMPLE_LKUP\n" + - " WHERE STATUS = 'COMPLETED')\n" + - " AND SAMP.DELTA_FILE_BYTE = BYTE_TAB.DELTA_BYTE"; - assertTrue(sqlparser.parse() == 0); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select =createViewSqlStatement.getSubquery(); - TSelectSqlStatement subquery = select.joins.getJoin(1).getTable().getSubquery(); - TSelectSqlStatement right = subquery.getLeftStmt().getRightStmt(); - assertTrue(right.toString().equalsIgnoreCase("SELECT 'C' DELTA_BYTE FROM DUAL")); - assertTrue(right.getParentStmt().toString().equalsIgnoreCase("(SELECT 'A' DELTA_BYTE FROM DUAL\n" + - " UNION ALL\n" + - " SELECT 'C' DELTA_BYTE FROM DUAL\n" + - " UNION ALL\n" + - " SELECT 'D' DELTA_BYTE FROM DUAL\n" + - "\t\t )")); - //assertTrue(select.joins.getStartToken().toString().equalsIgnoreCase("skills")); - - } -} +package gudusoft.gsqlparser.hiveTest; + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +/** + * Created by IntelliJ IDEA. + * User: tako + * Date: 13-8-11 + * Time: 下午6:32 + * To change this template use File | Settings | File Templates. + */ +public class testUnion extends TestCase { + + public void testUnionInSubquery(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext ="SELECT t3.col\n" + + "FROM (\n" + + " SELECT a+b AS col\n" + + " FROM t1\n" + + " UNION ALL\n" + + " SELECT c-d AS col\n" + + " FROM t2\n" + + ") t3;"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(select.getResultColumnList().size() == 1); + + assertTrue(select.joins.size() == 1); + TJoin join = select.joins.getJoin(0); + assertTrue(join.getKind() == TBaseType.join_source_fake); + + TTable table = join.getTable(); + assertTrue(table.getTableType() == ETableSource.subquery); + + TSelectSqlStatement subquery = table.getSubquery(); + assertTrue(subquery.isCombinedQuery()); + TSelectSqlStatement left = subquery.getLeftStmt(); + TSelectSqlStatement right = subquery.getRightStmt(); + + TResultColumn rs = left.getResultColumnList().getResultColumn(0); + TExpression expr = rs.getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.arithmetic_plus_t); + + TAliasClause aliasClause = rs.getAliasClause(); + // System.out.println(aliasClause.getAliasName().toString()); + assertTrue(aliasClause.getAliasName().toString().equalsIgnoreCase("col")); + + rs = right.getResultColumnList().getResultColumn(0); + expr = rs.getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.arithmetic_minus_t); + + + } + + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "SELECT u.id, actions.date\n" + + "FROM (\n" + + " SELECT av.uid AS uid \n" + + " FROM action_video av \n" + + " WHERE av.date = '2008-06-03'\n" + + " UNION ALL \n" + + " SELECT ac.uid AS uid \n" + + " FROM action_comment ac \n" + + " WHERE ac.date = '2008-06-03'\n" + + " ) actions JOIN users u ON (u.id = actions.uid) ;"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(select.joins.size() == 1); + TJoin join = select.joins.getJoin(0); + assertTrue(join.getKind() == TBaseType.join_source_table); + + TTable table = join.getTable(); + assertTrue(table.getTableType() == ETableSource.subquery); + TJoinItem joinItem = join.getJoinItems().getJoinItem(0); + assertTrue(joinItem.getJoinType() == EJoinType.join); + assertTrue(joinItem.getTable().getFullName().equalsIgnoreCase("users")); + + TSelectSqlStatement subquery = table.getSubquery(); + assertTrue(subquery.isCombinedQuery()); + + TSelectSqlStatement left = subquery.getLeftStmt(); + TSelectSqlStatement right = subquery.getRightStmt(); + + TResultColumn rs = left.getResultColumnList().getResultColumn(0); + TExpression expr = rs.getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(expr.toString().equalsIgnoreCase("av.uid")); + assertTrue(rs.getAliasClause().getAliasName().toString().equalsIgnoreCase("uid")); + + rs = right.getResultColumnList().getResultColumn(0); + expr = rs.getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(expr.toString().equalsIgnoreCase("ac.uid")); + assertTrue(rs.getAliasClause().getAliasName().toString().equalsIgnoreCase("uid")); + + + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); + sqlparser.sqltext = "FROM (\n" + + " FROM (\n" + + " FROM action_video av\n" + + " SELECT av.uid AS uid, av.id AS id, av.date AS date\n" + + " \n" + + " UNION ALL\n" + + " \n" + + " FROM action_comment ac\n" + + " SELECT ac.uid AS uid, ac.id AS id, ac.date AS date\n" + + " ) union_actions\n" + + " SELECT union_actions.uid, union_actions.id, union_actions.date\n" + + " CLUSTER BY union_actions.uid) map;"; + // System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement fromQuery = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TTable table = fromQuery.tables.getTable(0); + assertTrue(table.getTableType() == ETableSource.subquery); + + assertTrue(table.getAliasClause().getAliasName().toString().equalsIgnoreCase("map")); + + //assertTrue(fromQuery.getHiveBodyList().size() == 0); + + TSelectSqlStatement select = table.getSubquery(); + //TSelectSqlStatement select = (TSelectSqlStatement)fromQuery.getHiveBodyList().get(0); + assertTrue(select.getResultColumnList().size() == 3); + TClusterBy clusterBy = select.getClusterBy(); + assertTrue(clusterBy.getExpressionList().getExpression(0).toString().equalsIgnoreCase("union_actions.uid")); + + table = select.tables.getTable(0); + assertTrue(table.getTableType() == ETableSource.subquery); + assertTrue(table.getAliasClause().getAliasName().toString().equalsIgnoreCase("union_actions")); + select = table.getSubquery(); + assertTrue(select.isCombinedQuery()); + assertTrue(select.getSetOperator() == TSelectSqlStatement.setOperator_unionall); + // hive from query: from...select will be translated into select statement in union operation + TSelectSqlStatement left = select.getLeftStmt(); + assertTrue(left.tables.getTable(0).getTableName().toString().equalsIgnoreCase("action_video")); + assertTrue(left.tables.getTable(0).getAliasClause().getAliasName().toString().equalsIgnoreCase("av")); + + // hive from query: from...select will be translated into select statement in union operation + TSelectSqlStatement right = select.getRightStmt(); + assertTrue(right.tables.getTable(0).getTableName().toString().equalsIgnoreCase("action_comment")); + assertTrue(right.tables.getTable(0).getAliasClause().getAliasName().toString().equalsIgnoreCase("ac")); + + //assertTrue(fromQuery.getHiveBodyList().size() == 0); + + } + + public void testSelectUnion(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "CREATE VIEW SAMPLE_JOIN AS SELECT \n" + + " P_DATE,\n" + + " SAMPLE_DT NAME ,\n" + + " SAMPLE_ADV_AM ADVANCE_AMOUNT,\n" + + " 'ACTIVE' AS SMPLE_STATUS\n" + + " FROM SAMPLE_TABLE SAMP,\n" + + " (SELECT 'A' DELTA_BYTE FROM DUAL\n" + + " UNION ALL\n" + + " SELECT 'C' DELTA_BYTE FROM DUAL\n" + + " UNION ALL\n" + + " SELECT 'D' DELTA_BYTE FROM DUAL\n" + + "\t\t ) BYTE_TAB\n" + + " WHERE P_DATE =\n" + + " (SELECT MAX (P_DATE)\n" + + " FROM SAMPLE_LKUP\n" + + " WHERE STATUS = 'COMPLETED')\n" + + " AND SAMP.DELTA_FILE_BYTE = BYTE_TAB.DELTA_BYTE"; + assertTrue(sqlparser.parse() == 0); + TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); + TSelectSqlStatement select =createViewSqlStatement.getSubquery(); + TSelectSqlStatement subquery = select.joins.getJoin(1).getTable().getSubquery(); + TSelectSqlStatement right = subquery.getLeftStmt().getRightStmt(); + assertTrue(right.toString().equalsIgnoreCase("SELECT 'C' DELTA_BYTE FROM DUAL")); + assertTrue(right.getParentStmt().toString().equalsIgnoreCase("(SELECT 'A' DELTA_BYTE FROM DUAL\n" + + " UNION ALL\n" + + " SELECT 'C' DELTA_BYTE FROM DUAL\n" + + " UNION ALL\n" + + " SELECT 'D' DELTA_BYTE FROM DUAL\n" + + "\t\t )")); + //assertTrue(select.joins.getStartToken().toString().equalsIgnoreCase("skills")); + + } +} diff --git a/src/test/java/hive/testWindowClause.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testWindowClause.java similarity index 99% rename from src/test/java/hive/testWindowClause.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testWindowClause.java index 2174a140..0cf2e766 100644 --- a/src/test/java/hive/testWindowClause.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testWindowClause.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; /* * Date: 13-8-12 */ diff --git a/src/test/java/hive/testlexer.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testlexer.java similarity index 99% rename from src/test/java/hive/testlexer.java rename to src/test/java/gudusoft/gsqlparser/hiveTest/testlexer.java index 49e6defb..086696ac 100644 --- a/src/test/java/hive/testlexer.java +++ b/src/test/java/gudusoft/gsqlparser/hiveTest/testlexer.java @@ -1,4 +1,4 @@ -package hive; +package gudusoft.gsqlparser.hiveTest; import gudusoft.gsqlparser.*; import junit.framework.TestCase; diff --git a/src/test/java/impala/testSubquery.java b/src/test/java/gudusoft/gsqlparser/impalaTest/testSubquery.java similarity index 95% rename from src/test/java/impala/testSubquery.java rename to src/test/java/gudusoft/gsqlparser/impalaTest/testSubquery.java index 8dfd0a62..3895a91c 100644 --- a/src/test/java/impala/testSubquery.java +++ b/src/test/java/gudusoft/gsqlparser/impalaTest/testSubquery.java @@ -1,27 +1,27 @@ -package impala; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSubquery extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvimpala); - sqlparser.sqltext = "create table test.concat \n" + - "as select concat(heroes.name,' vs. ',villains.name) as battle \n" + - "from heroes \n" + - "join villains \n" + - "where heroes.era = villains.era and heroes.planet = villains.planet"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createTable.getSubQuery(); - System.out.println(select.toString()); - } - -} +package gudusoft.gsqlparser.impalaTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testSubquery extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvimpala); + sqlparser.sqltext = "create table test.concat \n" + + "as select concat(heroes.name,' vs. ',villains.name) as battle \n" + + "from heroes \n" + + "join villains \n" + + "where heroes.era = villains.era and heroes.planet = villains.planet"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TSelectSqlStatement select = createTable.getSubQuery(); + System.out.println(select.toString()); + } + +} diff --git a/src/test/java/informix/testAlterObject.java b/src/test/java/gudusoft/gsqlparser/informixTest/testAlterObject.java similarity index 93% rename from src/test/java/informix/testAlterObject.java rename to src/test/java/gudusoft/gsqlparser/informixTest/testAlterObject.java index 3908068b..5d9e9dca 100644 --- a/src/test/java/informix/testAlterObject.java +++ b/src/test/java/gudusoft/gsqlparser/informixTest/testAlterObject.java @@ -1,4 +1,4 @@ -package informix; +package gudusoft.gsqlparser.informixTest; /* * Date: 13-1-25 */ diff --git a/src/test/java/informix/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/informixTest/testCreateProcedure.java similarity index 97% rename from src/test/java/informix/testCreateProcedure.java rename to src/test/java/gudusoft/gsqlparser/informixTest/testCreateProcedure.java index a4afa961..3b6c6a48 100644 --- a/src/test/java/informix/testCreateProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/informixTest/testCreateProcedure.java @@ -1,4 +1,4 @@ -package informix; +package gudusoft.gsqlparser.informixTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/informix/testDropObject.java b/src/test/java/gudusoft/gsqlparser/informixTest/testDropObject.java similarity index 98% rename from src/test/java/informix/testDropObject.java rename to src/test/java/gudusoft/gsqlparser/informixTest/testDropObject.java index a83af299..edb7ee24 100644 --- a/src/test/java/informix/testDropObject.java +++ b/src/test/java/gudusoft/gsqlparser/informixTest/testDropObject.java @@ -1,4 +1,4 @@ -package informix; +package gudusoft.gsqlparser.informixTest; /* * Date: 13-1-24 */ diff --git a/src/test/java/informix/testOuterJoin.java b/src/test/java/gudusoft/gsqlparser/informixTest/testOuterJoin.java similarity index 98% rename from src/test/java/informix/testOuterJoin.java rename to src/test/java/gudusoft/gsqlparser/informixTest/testOuterJoin.java index a3f065a6..5518bd12 100644 --- a/src/test/java/informix/testOuterJoin.java +++ b/src/test/java/gudusoft/gsqlparser/informixTest/testOuterJoin.java @@ -1,4 +1,4 @@ -package informix; +package gudusoft.gsqlparser.informixTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ETableSource; diff --git a/src/test/java/informix/testRenameObject.java b/src/test/java/gudusoft/gsqlparser/informixTest/testRenameObject.java similarity index 96% rename from src/test/java/informix/testRenameObject.java rename to src/test/java/gudusoft/gsqlparser/informixTest/testRenameObject.java index 272501c8..e61e91ac 100644 --- a/src/test/java/informix/testRenameObject.java +++ b/src/test/java/gudusoft/gsqlparser/informixTest/testRenameObject.java @@ -1,4 +1,4 @@ -package informix; +package gudusoft.gsqlparser.informixTest; /* * Date: 13-1-25 */ @@ -7,7 +7,6 @@ import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.stmt.TRenameStmt; -import gudusoft.gsqlparser.stmt.informix.TInformixDropRowTypeStmt; import junit.framework.TestCase; public class testRenameObject extends TestCase { diff --git a/src/test/java/informix/testSkip.java b/src/test/java/gudusoft/gsqlparser/informixTest/testSkip.java similarity index 96% rename from src/test/java/informix/testSkip.java rename to src/test/java/gudusoft/gsqlparser/informixTest/testSkip.java index 91c7f498..e4a031f2 100644 --- a/src/test/java/informix/testSkip.java +++ b/src/test/java/gudusoft/gsqlparser/informixTest/testSkip.java @@ -1,4 +1,4 @@ -package informix; +package gudusoft.gsqlparser.informixTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/interfaceDemo/testITokenHandle.java b/src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testITokenHandle.java similarity index 93% rename from src/test/java/interfaceDemo/testITokenHandle.java rename to src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testITokenHandle.java index 5e571307..ea1e91eb 100644 --- a/src/test/java/interfaceDemo/testITokenHandle.java +++ b/src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testITokenHandle.java @@ -1,4 +1,4 @@ -package interfaceDemo; +package gudusoft.gsqlparser.interfaceDemoTest; import gudusoft.gsqlparser.*; import junit.framework.TestCase; diff --git a/src/test/java/interfaceDemo/testIgnorePrompt.java b/src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testIgnorePrompt.java similarity index 97% rename from src/test/java/interfaceDemo/testIgnorePrompt.java rename to src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testIgnorePrompt.java index 7cdae726..972b6a9e 100644 --- a/src/test/java/interfaceDemo/testIgnorePrompt.java +++ b/src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testIgnorePrompt.java @@ -1,4 +1,4 @@ -package interfaceDemo; +package gudusoft.gsqlparser.interfaceDemoTest; import gudusoft.gsqlparser.*; diff --git a/src/test/java/joinConvert/JoinConverterTest.java b/src/test/java/gudusoft/gsqlparser/joinConvertTest/JoinConverterTest.java similarity index 99% rename from src/test/java/joinConvert/JoinConverterTest.java rename to src/test/java/gudusoft/gsqlparser/joinConvertTest/JoinConverterTest.java index 5b95c25a..7bcad9d1 100644 --- a/src/test/java/joinConvert/JoinConverterTest.java +++ b/src/test/java/gudusoft/gsqlparser/joinConvertTest/JoinConverterTest.java @@ -1,4 +1,4 @@ -package joinConvert; +package gudusoft.gsqlparser.joinConvertTest; import demos.joinConvert.JoinConverter; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/mdx/testAlterCube.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testAlterCube.java similarity index 94% rename from src/test/java/mdx/testAlterCube.java rename to src/test/java/gudusoft/gsqlparser/mdxTest/testAlterCube.java index b5b13504..d2895ec1 100644 --- a/src/test/java/mdx/testAlterCube.java +++ b/src/test/java/gudusoft/gsqlparser/mdxTest/testAlterCube.java @@ -1,4 +1,4 @@ -package mdx; +package gudusoft.gsqlparser.mdxTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/mdx/testCreateMeasure.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMeasure.java similarity index 97% rename from src/test/java/mdx/testCreateMeasure.java rename to src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMeasure.java index 434c570b..982e3ceb 100644 --- a/src/test/java/mdx/testCreateMeasure.java +++ b/src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMeasure.java @@ -1,4 +1,4 @@ -package mdx; +package gudusoft.gsqlparser.mdxTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/mdx/testCreateMember.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMember.java similarity index 98% rename from src/test/java/mdx/testCreateMember.java rename to src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMember.java index 32127774..5328905c 100644 --- a/src/test/java/mdx/testCreateMember.java +++ b/src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMember.java @@ -1,4 +1,4 @@ -package mdx; +package gudusoft.gsqlparser.mdxTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TBaseType; diff --git a/src/test/java/mdx/testIIF.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testIIF.java similarity index 96% rename from src/test/java/mdx/testIIF.java rename to src/test/java/gudusoft/gsqlparser/mdxTest/testIIF.java index 97cbc5d3..9c775eac 100644 --- a/src/test/java/mdx/testIIF.java +++ b/src/test/java/gudusoft/gsqlparser/mdxTest/testIIF.java @@ -1,4 +1,4 @@ -package mdx; +package gudusoft.gsqlparser.mdxTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/mdx/testMembers.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testMembers.java similarity index 99% rename from src/test/java/mdx/testMembers.java rename to src/test/java/gudusoft/gsqlparser/mdxTest/testMembers.java index faef555d..8147b6eb 100644 --- a/src/test/java/mdx/testMembers.java +++ b/src/test/java/gudusoft/gsqlparser/mdxTest/testMembers.java @@ -1,4 +1,4 @@ -package mdx; +package gudusoft.gsqlparser.mdxTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/mdx/testRawStatements.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testRawStatements.java similarity index 93% rename from src/test/java/mdx/testRawStatements.java rename to src/test/java/gudusoft/gsqlparser/mdxTest/testRawStatements.java index 15baa1f1..b94be540 100644 --- a/src/test/java/mdx/testRawStatements.java +++ b/src/test/java/gudusoft/gsqlparser/mdxTest/testRawStatements.java @@ -1,14 +1,15 @@ -package mdx; +package gudusoft.gsqlparser.mdxTest; /* * Date: 11-12-31 */ import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.commonTest.gspCommon; import junit.framework.TestCase; public class testRawStatements extends TestCase { - String rootdir = common.gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"mdx/"; + String rootdir = gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "mdx/"; public void testMdx1(){ TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmdx); diff --git a/src/test/java/mdx/testTokenlizer.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testTokenlizer.java similarity index 99% rename from src/test/java/mdx/testTokenlizer.java rename to src/test/java/gudusoft/gsqlparser/mdxTest/testTokenlizer.java index 1f50b05a..17057214 100644 --- a/src/test/java/mdx/testTokenlizer.java +++ b/src/test/java/gudusoft/gsqlparser/mdxTest/testTokenlizer.java @@ -1,4 +1,4 @@ -package mdx; +package gudusoft.gsqlparser.mdxTest; /* * Date: 11-12-26 */ diff --git a/src/test/java/mdx/testWithMeasureInSelect.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testWithMeasureInSelect.java similarity index 97% rename from src/test/java/mdx/testWithMeasureInSelect.java rename to src/test/java/gudusoft/gsqlparser/mdxTest/testWithMeasureInSelect.java index 0e7341d6..18e62eb4 100644 --- a/src/test/java/mdx/testWithMeasureInSelect.java +++ b/src/test/java/gudusoft/gsqlparser/mdxTest/testWithMeasureInSelect.java @@ -1,4 +1,4 @@ -package mdx; +package gudusoft.gsqlparser.mdxTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/mssql/testAlterDatabase.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testAlterDatabase.java similarity index 95% rename from src/test/java/mssql/testAlterDatabase.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testAlterDatabase.java index 9ae1199f..e3d7eb78 100644 --- a/src/test/java/mssql/testAlterDatabase.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testAlterDatabase.java @@ -1,25 +1,25 @@ -package mssql; -/* - * Date: 15-4-22 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.stmt.TAlterDatabaseStmt; -import junit.framework.TestCase; - -public class testAlterDatabase extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "ALTER DATABASE CURRENT SET COMPATIBILITY_LEVEL = 110"; - int result = sqlparser.parse(); - assertTrue(result==0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstalterdatabase); - TAlterDatabaseStmt alterDatabaseStmt = (TAlterDatabaseStmt)sqlparser.sqlstatements.get(0); - assertTrue(alterDatabaseStmt.getDatabaseName().toString().equalsIgnoreCase("CURRENT")); - assertTrue(sqlparser.sqlstatements.get(0).toString().equalsIgnoreCase("ALTER DATABASE CURRENT SET COMPATIBILITY_LEVEL = 110")); - } - - -} +package gudusoft.gsqlparser.mssqlTest; +/* + * Date: 15-4-22 + */ + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.stmt.TAlterDatabaseStmt; +import junit.framework.TestCase; + +public class testAlterDatabase extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "ALTER DATABASE CURRENT SET COMPATIBILITY_LEVEL = 110"; + int result = sqlparser.parse(); + assertTrue(result==0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstalterdatabase); + TAlterDatabaseStmt alterDatabaseStmt = (TAlterDatabaseStmt)sqlparser.sqlstatements.get(0); + assertTrue(alterDatabaseStmt.getDatabaseName().toString().equalsIgnoreCase("CURRENT")); + assertTrue(sqlparser.sqlstatements.get(0).toString().equalsIgnoreCase("ALTER DATABASE CURRENT SET COMPATIBILITY_LEVEL = 110")); + } + + +} diff --git a/src/test/java/mssql/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testAlterTable.java similarity index 98% rename from src/test/java/mssql/testAlterTable.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testAlterTable.java index 6aff4521..66d0bcee 100644 --- a/src/test/java/mssql/testAlterTable.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testAlterTable.java @@ -1,167 +1,167 @@ -package mssql; -/* - * Date: 12-3-20 - */ - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import gudusoft.gsqlparser.stmt.mssql.TMssqlBlock; -import gudusoft.gsqlparser.stmt.mssql.TMssqlIfElse; -import junit.framework.TestCase; - - - -public class testAlterTable extends TestCase { - - - public void testAddDefaultForColumn(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "ALTER TABLE testTable ADD DEFAULT ('') FOR testColumn;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTableStatement = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTableStatement.getAlterTableOptionList().size() == 1); - TAlterTableOption ao = alterTableStatement.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ao.getOptionType() == EAlterTableOptionType.AddConstraint); - TConstraint constraint = ao.getConstraintList().getConstraint(0); - assertTrue(constraint.getConstraint_type() == EConstraintType.default_value); - assertTrue(constraint.getForObjectName().toString().equalsIgnoreCase("testColumn")); - } - - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "IF NOT EXISTS (SELECT * FROM [dbo].[TableA] WHERE id = OBJECT_ID(N'[dbo].[TableB]') AND name = N'Foo')\n" + - "BEGIN\n" + - " ALTER TABLE [dbo].[TableB]\n" + - " ADD [Foo] [int] NULL,\n" + - " CONSTRAINT [ForeignKeyA] FOREIGN KEY([Foo])\n" + - " REFERENCES [dbo].[TableC] ([AutoID])\n" + - " ON UPDATE CASCADE\n" + - " ON DELETE CASCADE\n" + - "END"; - assertTrue(sqlparser.parse() == 0); - - TMssqlIfElse ifElse = (TMssqlIfElse)sqlparser.sqlstatements.get(0); - - TMssqlBlock block = (TMssqlBlock)ifElse.getStmt(); - assertTrue(block.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstaltertable); - TAlterTableStatement alterTableStatement = (TAlterTableStatement)block.getBodyStatements().get(0); - assertTrue(alterTableStatement.getAlterTableOptionList().size() == 1); - TAlterTableOption ao = alterTableStatement.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ao.getOptionType() == EAlterTableOptionType.AddColumn); - assertTrue(ao.getColumnDefinitionList().size() == 1); - TColumnDefinition cd = ao.getColumnDefinitionList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("[Foo]")); - assertTrue(cd.getConstraints().size() == 1); - TConstraint constraint = cd.getConstraints().getConstraint(0); - assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); - assertTrue(constraint.getConstraintName().toString().equalsIgnoreCase("[ForeignKeyA]")); - -// assertTrue(alterTableStatement.getTableElementList().size() == 2); -// TTableElement element0 = alterTableStatement.getTableElementList().getTableElement(0); -// TTableElement element1 = alterTableStatement.getTableElementList().getTableElement(1); -// assertTrue(element0.getType() == TTableElement.type_column_def); -// TColumnDefinition columnDefinition = element0.getColumnDefinition(); -// assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("[Foo]")); -// assertTrue(element1.getType() == TTableElement.type_table_constraint); -// TConstraint constraint = element1.getConstraint(); -// assertTrue(constraint.getConstraintName().toString().equalsIgnoreCase("[ForeignKeyA]")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "ALTER TABLE [dbo].[TableA] ADD\n" + - " CONSTRAINT [ConstraintA] FOREIGN KEY\n" + - " (\n" + - " [ColumnA]\n" + - " ) REFERENCES [dbo].[TableB] (\n" + - " [ColumnA]\n" + - " ) NOT FOR REPLICATION ,\n" + - " CONSTRAINT [ConstraintB] FOREIGN KEY\n" + - " (\n" + - " [ColumnB]\n" + - " ) REFERENCES [dbo].[TableC] (\n" + - " [ColumnA]\n" + - " ) ON DELETE CASCADE ON UPDATE CASCADE"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTableStatement = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - - assertTrue(alterTableStatement.getAlterTableOptionList().size() == 1); - TTable targetTable = alterTableStatement.getTargetTable(); - assertTrue(targetTable.getEffectType() == ETableEffectType.tetAlter); - TAlterTableOption ao = alterTableStatement.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ao.getOptionType() == EAlterTableOptionType.AddConstraint); - assertTrue(ao.getConstraintList().size() == 2); - TConstraint constraint1 = ao.getConstraintList().getConstraint(0); - TConstraint constraint2 = ao.getConstraintList().getConstraint(1); - assertTrue(constraint1.getConstraintName().toString().equalsIgnoreCase("[ConstraintA]")); - assertTrue(constraint2.getConstraintName().toString().equalsIgnoreCase("[ConstraintB]")); - -// TColumnDefinition cd = ao.getColumnDefinitionList().getColumn(0); -// assertTrue(cd.getColumnName().toString().equalsIgnoreCase("[Foo]")); -// assertTrue(cd.getConstraints().size() == 1); -// TConstraint constraint = cd.getConstraints().getConstraint(0); -// assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); -// assertTrue(constraint.getConstraintName().toString().equalsIgnoreCase("[ForeignKeyA]")); - -// assertTrue(alterTableStatement.getTableElementList().size() == 2); -// TTableElement element0 = alterTableStatement.getTableElementList().getTableElement(0); -// TTableElement element1 = alterTableStatement.getTableElementList().getTableElement(1); -// assertTrue(element0.getType() == TTableElement.type_table_constraint); -// assertTrue(element1.getType() == TTableElement.type_table_constraint); -// TConstraint constraint = element1.getConstraint(); -// assertTrue(constraint.getConstraintName().toString().equalsIgnoreCase("[ConstraintB]")); - - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "ALTER TABLE FolderComment ADD CommentRSN INT NOT NULL DEFAULT NEXT VALUE FOR FolderCommentSeq"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTableStatement = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTableStatement.getAlterTableOptionList().size() == 1); - TAlterTableOption ao = alterTableStatement.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ao.getOptionType() == EAlterTableOptionType.AddColumn); - -// assertTrue(alterTableStatement.getTableElementList().size() == 1); -// TTableElement element0 = alterTableStatement.getTableElementList().getTableElement(0); -// assertTrue(element0.getType() == TTableElement.type_column_def); - - TColumnDefinition columnDefinition = ao.getColumnDefinitionList().getColumn(0); - assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("CommentRSN")); - TConstraint columnConstraint = columnDefinition.getConstraints().getConstraint(0); - assertTrue(columnConstraint.getConstraint_type() == EConstraintType.notnull); - columnConstraint = columnDefinition.getConstraints().getConstraint(1); - assertTrue(columnConstraint.getConstraint_type() == EConstraintType.default_value); - TExpression defaultValue = columnConstraint.getDefaultExpression(); - assertTrue(defaultValue.getExpressionType() == EExpressionType.next_value_for_t); - assertTrue(defaultValue.getSequenceName().toString().equalsIgnoreCase("FolderCommentSeq")); - - } - - - public void testDropColumn() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "ALTER TABLE F_HISTO_LETTRAGE DROP COLUMN HL_LETTRAGE;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTableStatement = (TAlterTableStatement) sqlparser.sqlstatements.get(0); - assertTrue(alterTableStatement.getAlterTableOptionList().size() == 1); - TAlterTableOption ao = alterTableStatement.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ao.getOptionType() == EAlterTableOptionType.DropColumn); - assertTrue(ao.getColumnName().toString().equalsIgnoreCase("HL_LETTRAGE")); - assertTrue(ao.getColumnNameList().getObjectName(0).toString().equalsIgnoreCase("HL_LETTRAGE")); - } - -} +package gudusoft.gsqlparser.mssqlTest; +/* + * Date: 12-3-20 + */ + + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.stmt.TAlterTableStatement; +import gudusoft.gsqlparser.stmt.mssql.TMssqlBlock; +import gudusoft.gsqlparser.stmt.mssql.TMssqlIfElse; +import junit.framework.TestCase; + + + +public class testAlterTable extends TestCase { + + + public void testAddDefaultForColumn(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "ALTER TABLE testTable ADD DEFAULT ('') FOR testColumn;"; + assertTrue(sqlparser.parse() == 0); + + TAlterTableStatement alterTableStatement = (TAlterTableStatement)sqlparser.sqlstatements.get(0); + assertTrue(alterTableStatement.getAlterTableOptionList().size() == 1); + TAlterTableOption ao = alterTableStatement.getAlterTableOptionList().getAlterTableOption(0); + assertTrue(ao.getOptionType() == EAlterTableOptionType.AddConstraint); + TConstraint constraint = ao.getConstraintList().getConstraint(0); + assertTrue(constraint.getConstraint_type() == EConstraintType.default_value); + assertTrue(constraint.getForObjectName().toString().equalsIgnoreCase("testColumn")); + } + + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "IF NOT EXISTS (SELECT * FROM [dbo].[TableA] WHERE id = OBJECT_ID(N'[dbo].[TableB]') AND name = N'Foo')\n" + + "BEGIN\n" + + " ALTER TABLE [dbo].[TableB]\n" + + " ADD [Foo] [int] NULL,\n" + + " CONSTRAINT [ForeignKeyA] FOREIGN KEY([Foo])\n" + + " REFERENCES [dbo].[TableC] ([AutoID])\n" + + " ON UPDATE CASCADE\n" + + " ON DELETE CASCADE\n" + + "END"; + assertTrue(sqlparser.parse() == 0); + + TMssqlIfElse ifElse = (TMssqlIfElse)sqlparser.sqlstatements.get(0); + + TMssqlBlock block = (TMssqlBlock)ifElse.getStmt(); + assertTrue(block.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstaltertable); + TAlterTableStatement alterTableStatement = (TAlterTableStatement)block.getBodyStatements().get(0); + assertTrue(alterTableStatement.getAlterTableOptionList().size() == 1); + TAlterTableOption ao = alterTableStatement.getAlterTableOptionList().getAlterTableOption(0); + assertTrue(ao.getOptionType() == EAlterTableOptionType.AddColumn); + assertTrue(ao.getColumnDefinitionList().size() == 1); + TColumnDefinition cd = ao.getColumnDefinitionList().getColumn(0); + assertTrue(cd.getColumnName().toString().equalsIgnoreCase("[Foo]")); + assertTrue(cd.getConstraints().size() == 1); + TConstraint constraint = cd.getConstraints().getConstraint(0); + assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); + assertTrue(constraint.getConstraintName().toString().equalsIgnoreCase("[ForeignKeyA]")); + +// assertTrue(alterTableStatement.getTableElementList().size() == 2); +// TTableElement element0 = alterTableStatement.getTableElementList().getTableElement(0); +// TTableElement element1 = alterTableStatement.getTableElementList().getTableElement(1); +// assertTrue(element0.getType() == TTableElement.type_column_def); +// TColumnDefinition columnDefinition = element0.getColumnDefinition(); +// assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("[Foo]")); +// assertTrue(element1.getType() == TTableElement.type_table_constraint); +// TConstraint constraint = element1.getConstraint(); +// assertTrue(constraint.getConstraintName().toString().equalsIgnoreCase("[ForeignKeyA]")); + + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "ALTER TABLE [dbo].[TableA] ADD\n" + + " CONSTRAINT [ConstraintA] FOREIGN KEY\n" + + " (\n" + + " [ColumnA]\n" + + " ) REFERENCES [dbo].[TableB] (\n" + + " [ColumnA]\n" + + " ) NOT FOR REPLICATION ,\n" + + " CONSTRAINT [ConstraintB] FOREIGN KEY\n" + + " (\n" + + " [ColumnB]\n" + + " ) REFERENCES [dbo].[TableC] (\n" + + " [ColumnA]\n" + + " ) ON DELETE CASCADE ON UPDATE CASCADE"; + assertTrue(sqlparser.parse() == 0); + + TAlterTableStatement alterTableStatement = (TAlterTableStatement)sqlparser.sqlstatements.get(0); + + assertTrue(alterTableStatement.getAlterTableOptionList().size() == 1); + TTable targetTable = alterTableStatement.getTargetTable(); + assertTrue(targetTable.getEffectType() == ETableEffectType.tetAlter); + TAlterTableOption ao = alterTableStatement.getAlterTableOptionList().getAlterTableOption(0); + assertTrue(ao.getOptionType() == EAlterTableOptionType.AddConstraint); + assertTrue(ao.getConstraintList().size() == 2); + TConstraint constraint1 = ao.getConstraintList().getConstraint(0); + TConstraint constraint2 = ao.getConstraintList().getConstraint(1); + assertTrue(constraint1.getConstraintName().toString().equalsIgnoreCase("[ConstraintA]")); + assertTrue(constraint2.getConstraintName().toString().equalsIgnoreCase("[ConstraintB]")); + +// TColumnDefinition cd = ao.getColumnDefinitionList().getColumn(0); +// assertTrue(cd.getColumnName().toString().equalsIgnoreCase("[Foo]")); +// assertTrue(cd.getConstraints().size() == 1); +// TConstraint constraint = cd.getConstraints().getConstraint(0); +// assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); +// assertTrue(constraint.getConstraintName().toString().equalsIgnoreCase("[ForeignKeyA]")); + +// assertTrue(alterTableStatement.getTableElementList().size() == 2); +// TTableElement element0 = alterTableStatement.getTableElementList().getTableElement(0); +// TTableElement element1 = alterTableStatement.getTableElementList().getTableElement(1); +// assertTrue(element0.getType() == TTableElement.type_table_constraint); +// assertTrue(element1.getType() == TTableElement.type_table_constraint); +// TConstraint constraint = element1.getConstraint(); +// assertTrue(constraint.getConstraintName().toString().equalsIgnoreCase("[ConstraintB]")); + + } + + public void test3(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "ALTER TABLE FolderComment ADD CommentRSN INT NOT NULL DEFAULT NEXT VALUE FOR FolderCommentSeq"; + assertTrue(sqlparser.parse() == 0); + + TAlterTableStatement alterTableStatement = (TAlterTableStatement)sqlparser.sqlstatements.get(0); + assertTrue(alterTableStatement.getAlterTableOptionList().size() == 1); + TAlterTableOption ao = alterTableStatement.getAlterTableOptionList().getAlterTableOption(0); + assertTrue(ao.getOptionType() == EAlterTableOptionType.AddColumn); + +// assertTrue(alterTableStatement.getTableElementList().size() == 1); +// TTableElement element0 = alterTableStatement.getTableElementList().getTableElement(0); +// assertTrue(element0.getType() == TTableElement.type_column_def); + + TColumnDefinition columnDefinition = ao.getColumnDefinitionList().getColumn(0); + assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("CommentRSN")); + TConstraint columnConstraint = columnDefinition.getConstraints().getConstraint(0); + assertTrue(columnConstraint.getConstraint_type() == EConstraintType.notnull); + columnConstraint = columnDefinition.getConstraints().getConstraint(1); + assertTrue(columnConstraint.getConstraint_type() == EConstraintType.default_value); + TExpression defaultValue = columnConstraint.getDefaultExpression(); + assertTrue(defaultValue.getExpressionType() == EExpressionType.next_value_for_t); + assertTrue(defaultValue.getSequenceName().toString().equalsIgnoreCase("FolderCommentSeq")); + + } + + + public void testDropColumn() { + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "ALTER TABLE F_HISTO_LETTRAGE DROP COLUMN HL_LETTRAGE;"; + assertTrue(sqlparser.parse() == 0); + + TAlterTableStatement alterTableStatement = (TAlterTableStatement) sqlparser.sqlstatements.get(0); + assertTrue(alterTableStatement.getAlterTableOptionList().size() == 1); + TAlterTableOption ao = alterTableStatement.getAlterTableOptionList().getAlterTableOption(0); + assertTrue(ao.getOptionType() == EAlterTableOptionType.DropColumn); + assertTrue(ao.getColumnName().toString().equalsIgnoreCase("HL_LETTRAGE")); + assertTrue(ao.getColumnNameList().getObjectName(0).toString().equalsIgnoreCase("HL_LETTRAGE")); + } + +} diff --git a/src/test/java/mssql/testAssignment.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testAssignment.java similarity index 97% rename from src/test/java/mssql/testAssignment.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testAssignment.java index 2a4748cb..82564677 100644 --- a/src/test/java/mssql/testAssignment.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testAssignment.java @@ -1,53 +1,53 @@ -package mssql; -/* - * Date: 14-10-21 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testAssignment extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT\n" + - " @var1 = varA,\n" + - " @var2= varB,\n" + - " @var3= varC\n" + - "FROM @TestTable \n" + - "WHERE Id = @id;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - //assertTrue(select.getSelectDistinct().getDistinctType() == TBaseType.dtDistinct); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.assignment_t); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT\n" + - "CUSTOMER.ADDRESS AS CUST_ADDRESS1,\n" + - "CUSTOMER.ADDRESS AS [CUST_ADDRESS2],\n" + - "CUSTOMER.ADDRESS AS \"CUST_ADDRESS3\",\n" + - "CUSTOMER.ADDRESS AS 'CUST_ADDRESS4',\n" + - "CUST_ADDRESS5 = CUSTOMER.ADDRESS\n" + - "FROM CUSTOMER"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().getObjectOperand().toString().equalsIgnoreCase("CUSTOMER.ADDRESS")); - assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("CUST_ADDRESS1")); - - resultColumn = select.getResultColumnList().getResultColumn(4); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("CUST_ADDRESS5 = CUSTOMER.ADDRESS")); - assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("CUST_ADDRESS5")); - assertTrue(resultColumn.getColumnFullname().toString().equalsIgnoreCase("CUSTOMER.ADDRESS")); - assertTrue(resultColumn.getColumnNameOnly().equalsIgnoreCase("ADDRESS")); - } - -} +package gudusoft.gsqlparser.mssqlTest; +/* + * Date: 14-10-21 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TResultColumn; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testAssignment extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "SELECT\n" + + " @var1 = varA,\n" + + " @var2= varB,\n" + + " @var3= varC\n" + + "FROM @TestTable \n" + + "WHERE Id = @id;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + //assertTrue(select.getSelectDistinct().getDistinctType() == TBaseType.dtDistinct); + TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.assignment_t); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "SELECT\n" + + "CUSTOMER.ADDRESS AS CUST_ADDRESS1,\n" + + "CUSTOMER.ADDRESS AS [CUST_ADDRESS2],\n" + + "CUSTOMER.ADDRESS AS \"CUST_ADDRESS3\",\n" + + "CUSTOMER.ADDRESS AS 'CUST_ADDRESS4',\n" + + "CUST_ADDRESS5 = CUSTOMER.ADDRESS\n" + + "FROM CUSTOMER"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); + assertTrue(resultColumn.getExpr().getObjectOperand().toString().equalsIgnoreCase("CUSTOMER.ADDRESS")); + assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("CUST_ADDRESS1")); + + resultColumn = select.getResultColumnList().getResultColumn(4); + assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("CUST_ADDRESS5 = CUSTOMER.ADDRESS")); + assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("CUST_ADDRESS5")); + assertTrue(resultColumn.getColumnFullname().toString().equalsIgnoreCase("CUSTOMER.ADDRESS")); + assertTrue(resultColumn.getColumnNameOnly().equalsIgnoreCase("ADDRESS")); + } + +} diff --git a/src/test/java/mssql/testCallTarget.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCallTarget.java similarity index 97% rename from src/test/java/mssql/testCallTarget.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testCallTarget.java index 9b5ace51..05772e13 100644 --- a/src/test/java/mssql/testCallTarget.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCallTarget.java @@ -1,64 +1,64 @@ -package mssql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TExpressionCallTarget; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCallTarget extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "\tSELECT DISTINCT p.COl1,\n" + - "STUFF((SELECT distinct ',' + p1.[Col2]\n" + - " FROM sampleSchema.table1 p1\n" + - " WHERE p.COl1 = p1.COl1\n" + - " FOR XML PATH(''), TYPE\n" + - " ).value('.', 'NVARCHAR(MAX)'),1,1,'') Col2\n" + - "FROM sampleSchema.table2 p WHERE SourceSchema +'.'+ SourceObject = @table"; - // System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(1).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.function_t); - TFunctionCall f1 = expr.getFunctionCall(); - assertTrue(f1.getFunctionName().toString().equalsIgnoreCase("STUFF")); - TExpression p1 = f1.getArgs().getExpression(0); - assertTrue(p1.getExpressionType() == EExpressionType.function_t); - TFunctionCall f2 = p1.getFunctionCall(); - assertTrue(f2.getFunctionName().toString().equalsIgnoreCase("value")); - assertTrue(f2.getArgs().getExpression(0).toString().equalsIgnoreCase("'.'")); - TExpressionCallTarget ct = f2.getCallTarget(); - TExpression expr2 = ct.getExpr(); - assertTrue(expr2.getExpressionType() == EExpressionType.subquery_t); - TSelectSqlStatement select1 = expr2.getSubQuery(); - assertTrue(select1.getResultColumnList().getResultColumn(0).getExpr().toString().equalsIgnoreCase("',' + p1.[Col2]")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT CatalogDescription.value(' \n" + - " declare namespace PD=\"http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription\"; \n" + - " (/PD:ProductDescription/@ProductModelID)[1]', 'int') AS Result \n" + - "FROM Production.ProductModel \n" + - "WHERE CatalogDescription IS NOT NULL \n" + - "ORDER BY Result desc"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.function_t); - TFunctionCall f2 = expr.getFunctionCall(); - assertTrue(f2.getFunctionName().toString().equalsIgnoreCase("CatalogDescription.value")); - assertTrue(f2.getArgs().getExpression(1).toString().equalsIgnoreCase("'int'")); - TExpressionCallTarget ct = f2.getCallTarget(); - TExpression expr2 = ct.getExpr(); - - assertTrue(expr2.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expr2.getObjectOperand().toString().equalsIgnoreCase("CatalogDescription")); - } - -} +package gudusoft.gsqlparser.mssqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TExpressionCallTarget; +import gudusoft.gsqlparser.nodes.TFunctionCall; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testCallTarget extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "\tSELECT DISTINCT p.COl1,\n" + + "STUFF((SELECT distinct ',' + p1.[Col2]\n" + + " FROM sampleSchema.table1 p1\n" + + " WHERE p.COl1 = p1.COl1\n" + + " FOR XML PATH(''), TYPE\n" + + " ).value('.', 'NVARCHAR(MAX)'),1,1,'') Col2\n" + + "FROM sampleSchema.table2 p WHERE SourceSchema +'.'+ SourceObject = @table"; + // System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TExpression expr = select.getResultColumnList().getResultColumn(1).getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.function_t); + TFunctionCall f1 = expr.getFunctionCall(); + assertTrue(f1.getFunctionName().toString().equalsIgnoreCase("STUFF")); + TExpression p1 = f1.getArgs().getExpression(0); + assertTrue(p1.getExpressionType() == EExpressionType.function_t); + TFunctionCall f2 = p1.getFunctionCall(); + assertTrue(f2.getFunctionName().toString().equalsIgnoreCase("value")); + assertTrue(f2.getArgs().getExpression(0).toString().equalsIgnoreCase("'.'")); + TExpressionCallTarget ct = f2.getCallTarget(); + TExpression expr2 = ct.getExpr(); + assertTrue(expr2.getExpressionType() == EExpressionType.subquery_t); + TSelectSqlStatement select1 = expr2.getSubQuery(); + assertTrue(select1.getResultColumnList().getResultColumn(0).getExpr().toString().equalsIgnoreCase("',' + p1.[Col2]")); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "SELECT CatalogDescription.value(' \n" + + " declare namespace PD=\"http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription\"; \n" + + " (/PD:ProductDescription/@ProductModelID)[1]', 'int') AS Result \n" + + "FROM Production.ProductModel \n" + + "WHERE CatalogDescription IS NOT NULL \n" + + "ORDER BY Result desc"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.function_t); + TFunctionCall f2 = expr.getFunctionCall(); + assertTrue(f2.getFunctionName().toString().equalsIgnoreCase("CatalogDescription.value")); + assertTrue(f2.getArgs().getExpression(1).toString().equalsIgnoreCase("'int'")); + TExpressionCallTarget ct = f2.getCallTarget(); + TExpression expr2 = ct.getExpr(); + + assertTrue(expr2.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(expr2.getObjectOperand().toString().equalsIgnoreCase("CatalogDescription")); + } + +} diff --git a/src/test/java/mssql/testContainsFunction.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testContainsFunction.java similarity index 96% rename from src/test/java/mssql/testContainsFunction.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testContainsFunction.java index abfc7755..a4e2ac3f 100644 --- a/src/test/java/mssql/testContainsFunction.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testContainsFunction.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.EFunctionType; diff --git a/src/test/java/mssql/testCopyIntoStmt.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCopyIntoStmt.java similarity index 98% rename from src/test/java/mssql/testCopyIntoStmt.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testCopyIntoStmt.java index 6e6e9562..712cc7ec 100644 --- a/src/test/java/mssql/testCopyIntoStmt.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCopyIntoStmt.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/mssql/testCreateCredential.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateCredential.java similarity index 97% rename from src/test/java/mssql/testCreateCredential.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateCredential.java index ac1b80d9..3825fb02 100644 --- a/src/test/java/mssql/testCreateCredential.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateCredential.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/mssql/testCreateDatabase.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateDatabase.java similarity index 97% rename from src/test/java/mssql/testCreateDatabase.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateDatabase.java index f1acafce..64f4c87a 100644 --- a/src/test/java/mssql/testCreateDatabase.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateDatabase.java @@ -1,35 +1,35 @@ -package mssql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateDatabaseSqlStatement; -import gudusoft.gsqlparser.stmt.mssql.TMssqlIfElse; -import junit.framework.TestCase; - -public class testCreateDatabase extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE DATABASE xml"; - int result = sqlparser.parse(); - assertTrue(result==0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatedatabase); - TCreateDatabaseSqlStatement createDatabaseSqlStatement = (TCreateDatabaseSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createDatabaseSqlStatement.getDatabaseName().toString().equalsIgnoreCase("xml")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "if db_id('AutoSchemaDB') is null create database AutoSchemaDB"; - int result = sqlparser.parse(); - assertTrue(result==0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlif); - TMssqlIfElse ifElse = (TMssqlIfElse )sqlparser.sqlstatements.get(0); - assertTrue(ifElse.getStmt().sqlstatementtype == ESqlStatementType.sstcreatedatabase); - TCreateDatabaseSqlStatement createDatabaseSqlStatement = (TCreateDatabaseSqlStatement)ifElse.getStmt(); - assertTrue(createDatabaseSqlStatement.getDatabaseName().toString().equalsIgnoreCase("AutoSchemaDB")); - } - -} - +package gudusoft.gsqlparser.mssqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateDatabaseSqlStatement; +import gudusoft.gsqlparser.stmt.mssql.TMssqlIfElse; +import junit.framework.TestCase; + +public class testCreateDatabase extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE DATABASE xml"; + int result = sqlparser.parse(); + assertTrue(result==0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatedatabase); + TCreateDatabaseSqlStatement createDatabaseSqlStatement = (TCreateDatabaseSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createDatabaseSqlStatement.getDatabaseName().toString().equalsIgnoreCase("xml")); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "if db_id('AutoSchemaDB') is null create database AutoSchemaDB"; + int result = sqlparser.parse(); + assertTrue(result==0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlif); + TMssqlIfElse ifElse = (TMssqlIfElse )sqlparser.sqlstatements.get(0); + assertTrue(ifElse.getStmt().sqlstatementtype == ESqlStatementType.sstcreatedatabase); + TCreateDatabaseSqlStatement createDatabaseSqlStatement = (TCreateDatabaseSqlStatement)ifElse.getStmt(); + assertTrue(createDatabaseSqlStatement.getDatabaseName().toString().equalsIgnoreCase("AutoSchemaDB")); + } + +} + diff --git a/src/test/java/mssql/testCreateEventSession.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateEventSession.java similarity index 96% rename from src/test/java/mssql/testCreateEventSession.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateEventSession.java index c50d3b81..a650bbe0 100644 --- a/src/test/java/mssql/testCreateEventSession.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateEventSession.java @@ -1,29 +1,29 @@ -package mssql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.mssql.TCreateEventSession; -import junit.framework.TestCase; - -public class testCreateEventSession extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE EVENT SESSION test_session\n" + - "ON SERVER\n" + - " ADD EVENT sqlos.async_io_requested,\n" + - " ADD EVENT sqlserver.lock_acquired\n" + - " ADD TARGET package0.etw_classic_sync_target\n" + - " (SET default_etw_session_logfile_path = N'C:\\demo\\traces\\sqletw.etl' )\n" + - " WITH (MAX_MEMORY=4MB, MAX_EVENT_SIZE=4MB);"; - int result = sqlparser.parse(); - assertTrue(result==0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlcreateeventsession); - TCreateEventSession createEventSession = (TCreateEventSession)sqlparser.sqlstatements.get(0); - assertTrue(createEventSession.getEventSessionName().toString().equalsIgnoreCase("test_session")); - } - - -} +package gudusoft.gsqlparser.mssqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.mssql.TCreateEventSession; +import junit.framework.TestCase; + +public class testCreateEventSession extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE EVENT SESSION test_session\n" + + "ON SERVER\n" + + " ADD EVENT sqlos.async_io_requested,\n" + + " ADD EVENT sqlserver.lock_acquired\n" + + " ADD TARGET package0.etw_classic_sync_target\n" + + " (SET default_etw_session_logfile_path = N'C:\\demo\\traces\\sqletw.etl' )\n" + + " WITH (MAX_MEMORY=4MB, MAX_EVENT_SIZE=4MB);"; + int result = sqlparser.parse(); + assertTrue(result==0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlcreateeventsession); + TCreateEventSession createEventSession = (TCreateEventSession)sqlparser.sqlstatements.get(0); + assertTrue(createEventSession.getEventSessionName().toString().equalsIgnoreCase("test_session")); + } + + +} diff --git a/src/test/java/mssql/testCreateExternalDataSource.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateExternalDataSource.java similarity index 97% rename from src/test/java/mssql/testCreateExternalDataSource.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateExternalDataSource.java index 3ce83eda..41f0fd1c 100644 --- a/src/test/java/mssql/testCreateExternalDataSource.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateExternalDataSource.java @@ -1,50 +1,50 @@ -package mssql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.mssql.TCreateExternalDataSourceStmt; -import junit.framework.TestCase; - -public class testCreateExternalDataSource extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE EXTERNAL DATA SOURCE WWIStorage\n" + - "WITH\n" + - "(\n" + - " TYPE = Hadoop,\n" + - " LOCATION = 'wasbs://wideworldimporters@sqldwholdata.blob.core.windows.net'\n" + - ");"; - int result = sqlparser.parse(); - assertTrue(result==0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlcreateevexternalDataSource); - TCreateExternalDataSourceStmt createExternalDataSourceStmt = (TCreateExternalDataSourceStmt)sqlparser.sqlstatements.get(0); - assertTrue(createExternalDataSourceStmt.getDataSourceName().toString().equalsIgnoreCase("WWIStorage")); - assertTrue(createExternalDataSourceStmt.getOptionNames().get(0).equalsIgnoreCase("TYPE")); - assertTrue(createExternalDataSourceStmt.getOptionNames().get(1).equalsIgnoreCase("LOCATION")); - assertTrue(createExternalDataSourceStmt.getOption("type").equalsIgnoreCase("Hadoop")); - assertTrue(createExternalDataSourceStmt.getOption("LOCATION").equalsIgnoreCase("'wasbs://wideworldimporters@sqldwholdata.blob.core.windows.net'")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE EXTERNAL DATA SOURCE MyOracleServer\n" + - "WITH\n" + - " ( LOCATION = 'oracle://145.145.145.145:1521',\n" + - " CREDENTIAL = OracleProxyAccount,\n" + - " PUSHDOWN = ON\n" + - " ) ;"; - int result = sqlparser.parse(); - assertTrue(result==0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlcreateevexternalDataSource); - TCreateExternalDataSourceStmt createExternalDataSourceStmt = (TCreateExternalDataSourceStmt)sqlparser.sqlstatements.get(0); - assertTrue(createExternalDataSourceStmt.getDataSourceName().toString().equalsIgnoreCase("MyOracleServer")); - assertTrue(createExternalDataSourceStmt.getOption("CREDENTIAL").equalsIgnoreCase("OracleProxyAccount")); - assertTrue(createExternalDataSourceStmt.getOption("LOCATION").equalsIgnoreCase("'oracle://145.145.145.145:1521'")); - assertTrue(createExternalDataSourceStmt.getOption("PUSHDOWN").equalsIgnoreCase("ON")); - } - -} +package gudusoft.gsqlparser.mssqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.mssql.TCreateExternalDataSourceStmt; +import junit.framework.TestCase; + +public class testCreateExternalDataSource extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE EXTERNAL DATA SOURCE WWIStorage\n" + + "WITH\n" + + "(\n" + + " TYPE = Hadoop,\n" + + " LOCATION = 'wasbs://wideworldimporters@sqldwholdata.blob.core.windows.net'\n" + + ");"; + int result = sqlparser.parse(); + assertTrue(result==0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlcreateevexternalDataSource); + TCreateExternalDataSourceStmt createExternalDataSourceStmt = (TCreateExternalDataSourceStmt)sqlparser.sqlstatements.get(0); + assertTrue(createExternalDataSourceStmt.getDataSourceName().toString().equalsIgnoreCase("WWIStorage")); + assertTrue(createExternalDataSourceStmt.getOptionNames().get(0).equalsIgnoreCase("TYPE")); + assertTrue(createExternalDataSourceStmt.getOptionNames().get(1).equalsIgnoreCase("LOCATION")); + assertTrue(createExternalDataSourceStmt.getOption("type").equalsIgnoreCase("Hadoop")); + assertTrue(createExternalDataSourceStmt.getOption("LOCATION").equalsIgnoreCase("'wasbs://wideworldimporters@sqldwholdata.blob.core.windows.net'")); + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE EXTERNAL DATA SOURCE MyOracleServer\n" + + "WITH\n" + + " ( LOCATION = 'oracle://145.145.145.145:1521',\n" + + " CREDENTIAL = OracleProxyAccount,\n" + + " PUSHDOWN = ON\n" + + " ) ;"; + int result = sqlparser.parse(); + assertTrue(result==0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlcreateevexternalDataSource); + TCreateExternalDataSourceStmt createExternalDataSourceStmt = (TCreateExternalDataSourceStmt)sqlparser.sqlstatements.get(0); + assertTrue(createExternalDataSourceStmt.getDataSourceName().toString().equalsIgnoreCase("MyOracleServer")); + assertTrue(createExternalDataSourceStmt.getOption("CREDENTIAL").equalsIgnoreCase("OracleProxyAccount")); + assertTrue(createExternalDataSourceStmt.getOption("LOCATION").equalsIgnoreCase("'oracle://145.145.145.145:1521'")); + assertTrue(createExternalDataSourceStmt.getOption("PUSHDOWN").equalsIgnoreCase("ON")); + } + +} diff --git a/src/test/java/mssql/testCreateExternalLanguage.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateExternalLanguage.java similarity index 95% rename from src/test/java/mssql/testCreateExternalLanguage.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateExternalLanguage.java index 0ae57c55..ff24fad2 100644 --- a/src/test/java/mssql/testCreateExternalLanguage.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateExternalLanguage.java @@ -1,21 +1,21 @@ -package mssql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.mssql.TCreateExternalLanguage; -import junit.framework.TestCase; - -public class testCreateExternalLanguage extends TestCase { - - public void test1() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE EXTERNAL LANGUAGE Java FROM (CONTENT = N'', FILE_NAME = 'javaextension.dll');"; - int result = sqlparser.parse(); - assertTrue(result == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlcreateevexternalLanguage); - TCreateExternalLanguage createExternalLanguage = (TCreateExternalLanguage) sqlparser.sqlstatements.get(0); - assertTrue(createExternalLanguage.getLanguageName().toString().equalsIgnoreCase("Java")); - } -} +package gudusoft.gsqlparser.mssqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.mssql.TCreateExternalLanguage; +import junit.framework.TestCase; + +public class testCreateExternalLanguage extends TestCase { + + public void test1() { + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE EXTERNAL LANGUAGE Java FROM (CONTENT = N'', FILE_NAME = 'javaextension.dll');"; + int result = sqlparser.parse(); + assertTrue(result == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlcreateevexternalLanguage); + TCreateExternalLanguage createExternalLanguage = (TCreateExternalLanguage) sqlparser.sqlstatements.get(0); + assertTrue(createExternalLanguage.getLanguageName().toString().equalsIgnoreCase("Java")); + } +} diff --git a/src/test/java/mssql/testCreateIndex.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateIndex.java similarity index 97% rename from src/test/java/mssql/testCreateIndex.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateIndex.java index 94b5e1d2..57cdbbf9 100644 --- a/src/test/java/mssql/testCreateIndex.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateIndex.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/mssql/testCreateMasterKey.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateMasterKey.java similarity index 94% rename from src/test/java/mssql/testCreateMasterKey.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateMasterKey.java index ebe72689..ec21db4d 100644 --- a/src/test/java/mssql/testCreateMasterKey.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateMasterKey.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/mssql/testCreateProcedureOption.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateProcedureOption.java similarity index 98% rename from src/test/java/mssql/testCreateProcedureOption.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateProcedureOption.java index 1069e917..4301ce9a 100644 --- a/src/test/java/mssql/testCreateProcedureOption.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateProcedureOption.java @@ -1,395 +1,395 @@ -package mssql; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.mssql.TExecuteAsClause; -import gudusoft.gsqlparser.nodes.mssql.TProcedureOption; -import gudusoft.gsqlparser.stmt.mssql.TMssqlBlock; -import gudusoft.gsqlparser.stmt.mssql.TMssqlCreateProcedure; -import gudusoft.gsqlparser.stmt.mssql.TMssqlExecuteAs; -import junit.framework.TestCase; - - -public class testCreateProcedureOption extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE PROCEDURE dbo.usp_myproc \n" + - " WITH EXECUTE AS CALLER\n" + - "AS \n" + - " SELECT SUSER_NAME(), USER_NAME();\n" + - " EXECUTE AS USER = 'guest';\n" + - " SELECT SUSER_NAME(), USER_NAME();\n" + - " REVERT;\n" + - " SELECT SUSER_NAME(), USER_NAME();\n" + - " DBCC CHECKIDENT (\"HumanResources.Employee\", RESEED, 30);"; - assertTrue(sqlparser.parse() == 0); - - TMssqlCreateProcedure createProcedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(0); - TProcedureOption option = createProcedure.getProcedureOptions().getElement(0); - assertTrue(option.getOptionType() == EProcedureOptionType.potExecuteAs); - TExecuteAsClause asClause = option.getExecuteAsClause(); - assertTrue(asClause.getExecuteAsOption() == EExecuteAsOption.eaoCaller); - - //System.out.println(createProcedure.getBodyStatements().size()); - assertTrue(createProcedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstmssqlexecuteas); - TMssqlExecuteAs executeAs = (TMssqlExecuteAs)createProcedure.getBodyStatements().get(1); - assertTrue(executeAs.getExecuteAsOption() == EExecuteAsOption.eaoUser); - assertTrue(executeAs.getUserName().equalsIgnoreCase("'guest'")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "create proc dbo.outer\n" + - " @var1 nvarchar(255) = ''\n" + - " as\n" + - " set nocount on\n" + - " exec dbo.inner\n" + - " @var1"; - assertTrue(sqlparser.parse() == 0); - - TMssqlCreateProcedure createProcedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(0); - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("dbo.outer")); - - assertTrue(createProcedure.getBodyStatements().size() == 2); - //System.out.println(createProcedure.getBodyStatements().get(0).sqlstatementtype); - assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstmssqlset); - assertTrue(createProcedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstmssqlexec); - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE PROCEDURE [dbo].[LockSnapshotForUpgrade]\n" + - "@SnapshotDataID as uniqueidentifier,\n" + - "@IsPermanentSnapshot as bit\n" + - "AS\n" + - "if @IsPermanentSnapshot = 1\n" + - "BEGIN\n" + - " SELECT ChunkName from ChunkData with (XLOCK)\n" + - " WHERE SnapshotDataID = @SnapshotDataID\n" + - "END ELSE BEGIN\n" + - " SELECT ChunkName from [ReportServerTempDB].dbo.ChunkData with (XLOCK)\n" + - " WHERE SnapshotDataID = @SnapshotDataID\n" + - "END;\n" + - "\n" + - "CREATE VIEW [dbo].ExtendedDataSets\n" + - "AS\n" + - "SELECT\n" + - " ID, LinkID, [Name], ItemID\n" + - "FROM DataSets\n" + - "UNION ALL\n" + - "SELECT\n" + - " ID, LinkID, [Name], ItemID\n" + - "FROM [ReportServerTempDB].dbo.TempDataSets;\n" + - "CREATE VIEW [dbo].[ExecutionLog3]\n" + - "AS\n" + - "SELECT\n" + - " InstanceName,\n" + - " COALESCE(CASE(ReportAction)\n" + - " WHEN 11 THEN AdditionalInfo.value('(AdditionalInfo/SourceReportUri)[1]', 'nvarchar(max)')\n" + - " ELSE C.Path\n" + - " END, 'Unknown') AS ItemPath,\n" + - " UserName,\n" + - " ExecutionId,\n" + - " CASE(RequestType)\n" + - " WHEN 0 THEN 'Interactive'\n" + - " WHEN 1 THEN 'Subscription'\n" + - " WHEN 2 THEN 'Refresh Cache'\n" + - " ELSE 'Unknown'\n" + - " END AS RequestType,\n" + - " -- SubscriptionId,\n" + - " Format,\n" + - " Parameters,\n" + - " CASE(ReportAction)\n" + - " WHEN 1 THEN 'Render'\n" + - " WHEN 2 THEN 'BookmarkNavigation'\n" + - " WHEN 3 THEN 'DocumentMapNavigation'\n" + - " WHEN 4 THEN 'DrillThrough'\n" + - " WHEN 5 THEN 'FindString'\n" + - " WHEN 6 THEN 'GetDocumentMap'\n" + - " WHEN 7 THEN 'Toggle'\n" + - " WHEN 8 THEN 'Sort'\n" + - " WHEN 9 THEN 'Execute'\n" + - " WHEN 10 THEN 'RenderEdit'\n" + - " WHEN 11 THEN 'ExecuteDataShapeQuery'\n" + - " WHEN 12 THEN 'RenderMobileReport'\n" + - " WHEN 13 THEN 'ConceptualSchema'\n" + - " WHEN 14 THEN 'QueryData'\n" + - " WHEN 15 THEN 'ASModelStream'\n" + - " WHEN 16 THEN 'RenderExcelWorkbook'\n" + - " WHEN 17 THEN 'GetExcelWorkbookInfo'\n" + - " ELSE 'Unknown'\n" + - " END AS ItemAction,\n" + - " TimeStart,\n" + - " TimeEnd,\n" + - " TimeDataRetrieval,\n" + - " TimeProcessing,\n" + - " TimeRendering,\n" + - " CASE(Source)\n" + - " WHEN 1 THEN 'Live'\n" + - " WHEN 2 THEN 'Cache'\n" + - " WHEN 3 THEN 'Snapshot'\n" + - " WHEN 4 THEN 'History'\n" + - " WHEN 5 THEN 'AdHoc'\n" + - " WHEN 6 THEN 'Session'\n" + - " WHEN 7 THEN 'Rdce'\n" + - " ELSE 'Unknown'\n" + - " END AS Source,\n" + - " Status,\n" + - " ByteCount,\n" + - " [RowCount],\n" + - " AdditionalInfo\n" + - "FROM ExecutionLogStorage EL WITH(NOLOCK)\n" + - "LEFT OUTER JOIN Catalog C WITH(NOLOCK) ON (EL.ReportID = C.ItemID);\n" + - "\n" + - "CREATE VIEW [dbo].[ExecutionLog]\n" + - "AS\n" + - "SELECT\n" + - " [InstanceName],\n" + - " [ReportID],\n" + - " [UserName],\n" + - " CASE ([RequestType])\n" + - " WHEN 1 THEN CONVERT(BIT, 1)\n" + - " ELSE CONVERT(BIT, 0)\n" + - " END AS [RequestType],\n" + - " [Format],\n" + - " [Parameters],\n" + - " [TimeStart],\n" + - " [TimeEnd],\n" + - " [TimeDataRetrieval],\n" + - " [TimeProcessing],\n" + - " [TimeRendering],\n" + - " CASE([Source])\n" + - " WHEN 6 THEN 3\n" + - " ELSE [Source]\n" + - " END AS Source, -- Session source doesn't exist in yukon, mark source as snapshot\n" + - " -- for in-session requests\n" + - " [Status],\n" + - " [ByteCount],\n" + - " [RowCount]\n" + - "FROM [ExecutionLogStorage] WITH (NOLOCK)\n" + - "WHERE [ReportAction] = 1 -- Backwards compatibility log only contains render requests;\n" + - "\n" + - "CREATE VIEW [dbo].ExtendedDataSources\n" + - "AS\n" + - "SELECT\n" + - " DSID, ItemID, SubscriptionID, Name, Extension, Link,\n" + - " CredentialRetrieval, Prompt, ConnectionString,\n" + - " OriginalConnectionString, OriginalConnectStringExpressionBased,\n" + - " UserName, Password, Flags, Version, DSIDNum\n" + - "FROM DataSource\n" + - "UNION ALL\n" + - "SELECT\n" + - " DSID, ItemID, NULL as [SubscriptionID], Name, Extension, Link,\n" + - " CredentialRetrieval, Prompt, ConnectionString,\n" + - " OriginalConnectionString, OriginalConnectStringExpressionBased,\n" + - " UserName, Password, Flags, Version, null\n" + - "FROM [ReportServerTempDB].dbo.TempDataSources;\n" + - "\n" + - "CREATE VIEW [dbo].[ExecutionLog2]\n" + - "AS\n" + - "SELECT \n" + - "\tInstanceName, \n" + - "\tCOALESCE(C.Path, 'Unknown') AS ReportPath, \n" + - "\tUserName,\n" + - "\tExecutionId, \n" + - "\tCASE(RequestType)\n" + - "\t\tWHEN 0 THEN 'Interactive'\n" + - "\t\tWHEN 1 THEN 'Subscription'\n" + - "\t\tELSE 'Unknown'\n" + - "\t\tEND AS RequestType, \n" + - "\t-- SubscriptionId, \n" + - "\tFormat, \n" + - "\tParameters, \n" + - "\tCASE(ReportAction)\t\t\n" + - "\t\tWHEN 1 THEN 'Render'\n" + - "\t\tWHEN 2 THEN 'BookmarkNavigation'\n" + - "\t\tWHEN 3 THEN 'DocumentMapNavigation'\n" + - "\t\tWHEN 4 THEN 'DrillThrough'\n" + - "\t\tWHEN 5 THEN 'FindString'\n" + - "\t\tWHEN 6 THEN 'GetDocumentMap'\n" + - "\t\tWHEN 7 THEN 'Toggle'\n" + - "\t\tWHEN 8 THEN 'Sort'\n" + - "\t\tELSE 'Unknown'\n" + - "\t\tEND AS ReportAction,\n" + - "\tTimeStart, \n" + - "\tTimeEnd, \n" + - "\tTimeDataRetrieval, \n" + - "\tTimeProcessing, \n" + - "\tTimeRendering,\n" + - "\tCASE(Source)\n" + - "\t\tWHEN 1 THEN 'Live'\n" + - "\t\tWHEN 2 THEN 'Cache'\n" + - "\t\tWHEN 3 THEN 'Snapshot' \n" + - "\t\tWHEN 4 THEN 'History'\n" + - "\t\tWHEN 5 THEN 'AdHoc'\n" + - "\t\tWHEN 6 THEN 'Session'\n" + - "\t\tWHEN 7 THEN 'Rdce'\n" + - "\t\tELSE 'Unknown'\n" + - "\t\tEND AS Source,\n" + - "\tStatus,\n" + - "\tByteCount,\n" + - "\t[RowCount],\n" + - "\tAdditionalInfo\n" + - "FROM ExecutionLogStorage EL WITH(NOLOCK)\n" + - "LEFT OUTER JOIN Catalog C WITH(NOLOCK) ON (EL.ReportID = C.ItemID);"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 6); - - } - - public void testBeginCatch(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE PROCEDURE Intacct.ValidateResponseXML\n" + - "(\n" + - "\t@LoadId\t\t\tINT\n" + - ",\t@Loaddate\t\tDATE\t= NULL\n" + - ",\t@ResponseRaw\tVARCHAR(MAX)\n" + - ",\t@Response\t\tXML OUTPUT\n" + - ",\t@IsValid\t\tBIT\tOUTPUT\n" + - ")\n" + - "AS\n" + - "BEGIN\n" + - "\tDECLARE\n" + - "\t\t@Procedurename\t\t\tNVARCHAR(129) = OBJECT_SCHEMA_NAME(@@Procid)+'.'+OBJECT_NAME(@@Procid)\n" + - "\t,\t@Tablename\t\t\t\tNVARCHAR(129) = 'None'\n" + - "\t,\t@Affectedrowcount\t\tINT\n" + - "\t,\t@Message\t\t\t\tVARCHAR(512)\n" + - "\t,\t@ErrorId\t\t\t\tUNIQUEIDENTIFIER\t= NEWID()\n" + - "\t,\t@LineValueStart\t\t\tINT\n" + - "\t,\t@LineValueEnd\t\t\tINT\n" + - "\t,\t@CharacterValueStart\tINT\n" + - "\t,\t@CharacterValueEnd\t\tINT\n" + - "\t,\t@LineNumber\t\t\t\tINT\n" + - "\t,\t@CharacterPosition\t\tINT\n" + - "\t,\t@SuspectLine\t\t\tVARCHAR(2048)\n" + - "\t,\t@InvalidCharacter\t\tNVARCHAR(1)\n" + - "\t,\t@Delimiter\t\t\t\tCHAR(1) = CHAR(13)\n" + - "--\t,\t@Response\t\t\t\tXML\n" + - "\t,\t@ErrorMessage\t\t\tNVARCHAR(4000)\n" + - "\t,\t@ErrorNumber\t\t\tINT\n" + - "\n" + - "\tSET @IsValid = 0\n" + - "\tSET @Response = NULL\n" + - "\n" + - "\tSET @Message = 'Replacing a few known bad characters in the data set coming in the XML message.';\n" + - "\n" + - "\tEXEC ETL_Logging.ETL.LoadLog_Detail_Insert \n" + - "\t\t@Loadid\t\t\t= @Loadid\n" + - "\t,\t@Commenttypeid\t= 1\n" + - "\t,\t@Comment\t\t= @Message\n" + - "\t,\t@Loaddate\t\t= @Loaddate\n" + - "\t,\t@Procname\t\t= @Procedurename\n" + - "\t,\t@Rowsinserted\t= 0\n" + - "\t,\t@Rowsupdated\t= 0\n" + - "\t,\t@Rowsdeleted\t= 0\n" + - "\t,\t@Tableaffected\t= @Tablename;\n" + - "\t\n" + - "\t-- We can make this step more generic\n" + - "\tSET @ResponseRaw = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@ResponseRaw,CHAR(237),'i'),CHAR(10),''),CHAR(233),'e'),CHAR(241),'n'),CHAR(160),' ') --fixes í and LF and é and ñ\n" + - "\n" + - "\tSET @Message = 'Validating XML message.';\n" + - "\tEXEC ETL_Logging.ETL.LoadLog_Detail_Insert \n" + - "\t\t@Loadid\t\t\t= @Loadid\n" + - "\t,\t@Commenttypeid\t= 1\n" + - "\t,\t@Comment\t\t= @Message\n" + - "\t,\t@Loaddate\t\t= @Loaddate\n" + - "\t,\t@Procname\t\t= @Procedurename\n" + - "\t,\t@Rowsinserted\t= 0\n" + - "\t,\t@Rowsupdated\t= 0\n" + - "\t,\t@Rowsdeleted\t= 0\n" + - "\t,\t@Tableaffected\t= @Tablename;\n" + - "\n" + - "\tBEGIN TRY\n" + - "\t\tSET @Response = CAST(@ResponseRaw AS XML)\n" + - "\t\tSET @IsValid = 1\n" + - "\n" + - "\t\tSET @Message = 'Response XML message is valid.';\n" + - "\t\tEXEC ETL_Logging.ETL.LoadLog_Detail_Insert \n" + - "\t\t\t@Loadid\t\t\t= @Loadid\n" + - "\t\t,\t@Commenttypeid\t= 1\n" + - "\t\t,\t@Comment\t\t= @Message\n" + - "\t\t,\t@Loaddate\t\t= @Loaddate\n" + - "\t\t,\t@Procname\t\t= @Procedurename\n" + - "\t\t,\t@Rowsinserted\t= 0\n" + - "\t\t,\t@Rowsupdated\t= 0\n" + - "\t\t,\t@Rowsdeleted\t= 0\n" + - "\t\t,\t@Tableaffected\t= @Tablename;\n" + - "\tEND TRY\n" + - "\tBEGIN CATCH\n" + - "\t\tSET @Message = 'Response XML message is NOT valid. View details in Intacct.XMLParseErrorLog for ErrorId: ' + CAST(@ErrorId AS VARCHAR(50));\n" + - "\t\tEXEC ETL_Logging.ETL.LoadLog_Detail_Insert \n" + - "\t\t\t@Loadid\t\t\t= @Loadid\n" + - "\t\t,\t@Commenttypeid\t= 1\n" + - "\t\t,\t@Comment\t\t= @Message\n" + - "\t\t,\t@Loaddate\t\t= @Loaddate\n" + - "\t\t,\t@Procname\t\t= @Procedurename\n" + - "\t\t,\t@Rowsinserted\t= 0\n" + - "\t\t,\t@Rowsupdated\t= 0\n" + - "\t\t,\t@Rowsdeleted\t= 0\n" + - "\t\t,\t@Tableaffected\t= @Tablename;\n" + - "\n" + - "\t\t-- process xml string based on error message/number, etc.\n" + - "\t\tSELECT\n" + - "\t\t\t@ErrorMessage\t= ERROR_MESSAGE()\n" + - "\t\t,\t@ErrorNumber\t= ERROR_NUMBER()\n" + - "\n" + - "\t\tSELECT\n" + - "\t\t\t@LineValueStart\t= CHARINDEX('line', @ErrorMessage) + 5\n" + - "\t\t,\t@LineValueEnd\t= CHARINDEX(',', @ErrorMessage)\n" + - "\n" + - "\t\tSELECT\n" + - "\t\t\t@CharacterValueStart\t= CHARINDEX('character', @ErrorMessage, @LineValueEnd + 1) + 10\n" + - "\t\t,\t@CharacterValueEnd\t\t= CHARINDEX(',', @ErrorMessage, @LineValueEnd + 1)\n" + - "\n" + - "\t\tSELECT\n" + - "\t\t\t@LineNumber\t\t\t= CAST(SUBSTRING(@ErrorMessage, @LineValueStart, @LineValueEnd - @LineValueStart) AS INT)\n" + - "\t\t,\t@CharacterPosition\t= CAST(SUBSTRING(@ErrorMessage, @CharacterValueStart, @CharacterValueEnd - @CharacterValueStart) AS INT)\n" + - "\n" + - "\t\tCREATE TABLE #Temp\n" + - "\t\t(\n" + - "\t\t\tRowNumber\tINT IDENTITY (1,1)\n" + - "\t\t,\tLineValue\tVARCHAR(MAX)\n" + - "\t\t)\n" + - "\n" + - "\t\tINSERT INTO #Temp (LineValue)\n" + - "\t\tSELECT\n" + - "\t\t\tvalue\n" + - "\t\tFROM\n" + - "\t\t\tSTRING_SPLIT ( @ResponseRaw , @Delimiter ) \n" + - "\n" + - "\t\tSELECT\n" + - "\t\t\t@SuspectLine = LineValue\n" + - "\t\tFROM\n" + - "\t\t\t#Temp\n" + - "\t\tWHERE\n" + - "\t\t\tRowNumber = @LineNumber\n" + - "\n" + - "\t\tINSERT INTO Intacct.XMLParseErrorLog (ErrorId, ErrorTime, ResponseRaw, LineNumber, CharacterPosition, SuspectLine, InvalidCharacter)\n" + - "\t\tSELECT\n" + - "\t\t\t@ErrorId\t\t\t\t\t\t\t\t\t\t\tAS ErrorId\n" + - "\t\t,\tGETDATE()\t\t\t\t\t\t\t\t\t\t\tAS ErrorTime\n" + - "\t\t,\t@ResponseRaw\t\t\t\t\t\t\t\t\t\tAS ResponseRaw\n" + - "\t\t,\t@LineNumber\t\t\t\t\t\t\t\t\t\t\tAS LineNumber\n" + - "\t\t,\t@CharacterPosition\t\t\t\t\t\t\t\t\tAS CharacterPosition\n" + - "\t\t,\t@SuspectLine\t\t\t\t\t\t\t\t\t\tAS SuspectLine\n" + - "\t\t,\tSUBSTRING(@SuspectLine, @CharacterPosition + 1, 1)\tAS InvalidCharacter\n" + - "\tEND CATCH\n" + - "END"; - assertTrue(sqlparser.parse() == 0); - - TMssqlCreateProcedure createProcedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(0); - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("Intacct.ValidateResponseXML")); - - // assertTrue(createProcedure.getBodyStatements().size() == 2); - // System.out.println(createProcedure.getDeclareStatements().size()); - assertTrue(createProcedure.getBodyStatements().size() == 1); - assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstmssqlblock); - TMssqlBlock block = (TMssqlBlock)createProcedure.getBodyStatements().get(0); - assertTrue(block.getBodyStatements().size() == 9); - assertTrue(block.getBodyStatements().get(8).sqlstatementtype == ESqlStatementType.sstmssqlblock); - block = (TMssqlBlock)block.getBodyStatements().get(8); - //System.out.println(block.getBodyStatements().size()); - assertTrue(block.getBodyStatements().size() == 14); - } - -} +package gudusoft.gsqlparser.mssqlTest; + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.mssql.TExecuteAsClause; +import gudusoft.gsqlparser.nodes.mssql.TProcedureOption; +import gudusoft.gsqlparser.stmt.mssql.TMssqlBlock; +import gudusoft.gsqlparser.stmt.mssql.TMssqlCreateProcedure; +import gudusoft.gsqlparser.stmt.mssql.TMssqlExecuteAs; +import junit.framework.TestCase; + + +public class testCreateProcedureOption extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE PROCEDURE dbo.usp_myproc \n" + + " WITH EXECUTE AS CALLER\n" + + "AS \n" + + " SELECT SUSER_NAME(), USER_NAME();\n" + + " EXECUTE AS USER = 'guest';\n" + + " SELECT SUSER_NAME(), USER_NAME();\n" + + " REVERT;\n" + + " SELECT SUSER_NAME(), USER_NAME();\n" + + " DBCC CHECKIDENT (\"HumanResources.Employee\", RESEED, 30);"; + assertTrue(sqlparser.parse() == 0); + + TMssqlCreateProcedure createProcedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(0); + TProcedureOption option = createProcedure.getProcedureOptions().getElement(0); + assertTrue(option.getOptionType() == EProcedureOptionType.potExecuteAs); + TExecuteAsClause asClause = option.getExecuteAsClause(); + assertTrue(asClause.getExecuteAsOption() == EExecuteAsOption.eaoCaller); + + //System.out.println(createProcedure.getBodyStatements().size()); + assertTrue(createProcedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstmssqlexecuteas); + TMssqlExecuteAs executeAs = (TMssqlExecuteAs)createProcedure.getBodyStatements().get(1); + assertTrue(executeAs.getExecuteAsOption() == EExecuteAsOption.eaoUser); + assertTrue(executeAs.getUserName().equalsIgnoreCase("'guest'")); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "create proc dbo.outer\n" + + " @var1 nvarchar(255) = ''\n" + + " as\n" + + " set nocount on\n" + + " exec dbo.inner\n" + + " @var1"; + assertTrue(sqlparser.parse() == 0); + + TMssqlCreateProcedure createProcedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(0); + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("dbo.outer")); + + assertTrue(createProcedure.getBodyStatements().size() == 2); + //System.out.println(createProcedure.getBodyStatements().get(0).sqlstatementtype); + assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstmssqlset); + assertTrue(createProcedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstmssqlexec); + } + + public void test3(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE PROCEDURE [dbo].[LockSnapshotForUpgrade]\n" + + "@SnapshotDataID as uniqueidentifier,\n" + + "@IsPermanentSnapshot as bit\n" + + "AS\n" + + "if @IsPermanentSnapshot = 1\n" + + "BEGIN\n" + + " SELECT ChunkName from ChunkData with (XLOCK)\n" + + " WHERE SnapshotDataID = @SnapshotDataID\n" + + "END ELSE BEGIN\n" + + " SELECT ChunkName from [ReportServerTempDB].dbo.ChunkData with (XLOCK)\n" + + " WHERE SnapshotDataID = @SnapshotDataID\n" + + "END;\n" + + "\n" + + "CREATE VIEW [dbo].ExtendedDataSets\n" + + "AS\n" + + "SELECT\n" + + " ID, LinkID, [Name], ItemID\n" + + "FROM DataSets\n" + + "UNION ALL\n" + + "SELECT\n" + + " ID, LinkID, [Name], ItemID\n" + + "FROM [ReportServerTempDB].dbo.TempDataSets;\n" + + "CREATE VIEW [dbo].[ExecutionLog3]\n" + + "AS\n" + + "SELECT\n" + + " InstanceName,\n" + + " COALESCE(CASE(ReportAction)\n" + + " WHEN 11 THEN AdditionalInfo.value('(AdditionalInfo/SourceReportUri)[1]', 'nvarchar(max)')\n" + + " ELSE C.Path\n" + + " END, 'Unknown') AS ItemPath,\n" + + " UserName,\n" + + " ExecutionId,\n" + + " CASE(RequestType)\n" + + " WHEN 0 THEN 'Interactive'\n" + + " WHEN 1 THEN 'Subscription'\n" + + " WHEN 2 THEN 'Refresh Cache'\n" + + " ELSE 'Unknown'\n" + + " END AS RequestType,\n" + + " -- SubscriptionId,\n" + + " Format,\n" + + " Parameters,\n" + + " CASE(ReportAction)\n" + + " WHEN 1 THEN 'Render'\n" + + " WHEN 2 THEN 'BookmarkNavigation'\n" + + " WHEN 3 THEN 'DocumentMapNavigation'\n" + + " WHEN 4 THEN 'DrillThrough'\n" + + " WHEN 5 THEN 'FindString'\n" + + " WHEN 6 THEN 'GetDocumentMap'\n" + + " WHEN 7 THEN 'Toggle'\n" + + " WHEN 8 THEN 'Sort'\n" + + " WHEN 9 THEN 'Execute'\n" + + " WHEN 10 THEN 'RenderEdit'\n" + + " WHEN 11 THEN 'ExecuteDataShapeQuery'\n" + + " WHEN 12 THEN 'RenderMobileReport'\n" + + " WHEN 13 THEN 'ConceptualSchema'\n" + + " WHEN 14 THEN 'QueryData'\n" + + " WHEN 15 THEN 'ASModelStream'\n" + + " WHEN 16 THEN 'RenderExcelWorkbook'\n" + + " WHEN 17 THEN 'GetExcelWorkbookInfo'\n" + + " ELSE 'Unknown'\n" + + " END AS ItemAction,\n" + + " TimeStart,\n" + + " TimeEnd,\n" + + " TimeDataRetrieval,\n" + + " TimeProcessing,\n" + + " TimeRendering,\n" + + " CASE(Source)\n" + + " WHEN 1 THEN 'Live'\n" + + " WHEN 2 THEN 'Cache'\n" + + " WHEN 3 THEN 'Snapshot'\n" + + " WHEN 4 THEN 'History'\n" + + " WHEN 5 THEN 'AdHoc'\n" + + " WHEN 6 THEN 'Session'\n" + + " WHEN 7 THEN 'Rdce'\n" + + " ELSE 'Unknown'\n" + + " END AS Source,\n" + + " Status,\n" + + " ByteCount,\n" + + " [RowCount],\n" + + " AdditionalInfo\n" + + "FROM ExecutionLogStorage EL WITH(NOLOCK)\n" + + "LEFT OUTER JOIN Catalog C WITH(NOLOCK) ON (EL.ReportID = C.ItemID);\n" + + "\n" + + "CREATE VIEW [dbo].[ExecutionLog]\n" + + "AS\n" + + "SELECT\n" + + " [InstanceName],\n" + + " [ReportID],\n" + + " [UserName],\n" + + " CASE ([RequestType])\n" + + " WHEN 1 THEN CONVERT(BIT, 1)\n" + + " ELSE CONVERT(BIT, 0)\n" + + " END AS [RequestType],\n" + + " [Format],\n" + + " [Parameters],\n" + + " [TimeStart],\n" + + " [TimeEnd],\n" + + " [TimeDataRetrieval],\n" + + " [TimeProcessing],\n" + + " [TimeRendering],\n" + + " CASE([Source])\n" + + " WHEN 6 THEN 3\n" + + " ELSE [Source]\n" + + " END AS Source, -- Session source doesn't exist in yukon, mark source as snapshot\n" + + " -- for in-session requests\n" + + " [Status],\n" + + " [ByteCount],\n" + + " [RowCount]\n" + + "FROM [ExecutionLogStorage] WITH (NOLOCK)\n" + + "WHERE [ReportAction] = 1 -- Backwards compatibility log only contains render requests;\n" + + "\n" + + "CREATE VIEW [dbo].ExtendedDataSources\n" + + "AS\n" + + "SELECT\n" + + " DSID, ItemID, SubscriptionID, Name, Extension, Link,\n" + + " CredentialRetrieval, Prompt, ConnectionString,\n" + + " OriginalConnectionString, OriginalConnectStringExpressionBased,\n" + + " UserName, Password, Flags, Version, DSIDNum\n" + + "FROM DataSource\n" + + "UNION ALL\n" + + "SELECT\n" + + " DSID, ItemID, NULL as [SubscriptionID], Name, Extension, Link,\n" + + " CredentialRetrieval, Prompt, ConnectionString,\n" + + " OriginalConnectionString, OriginalConnectStringExpressionBased,\n" + + " UserName, Password, Flags, Version, null\n" + + "FROM [ReportServerTempDB].dbo.TempDataSources;\n" + + "\n" + + "CREATE VIEW [dbo].[ExecutionLog2]\n" + + "AS\n" + + "SELECT \n" + + "\tInstanceName, \n" + + "\tCOALESCE(C.Path, 'Unknown') AS ReportPath, \n" + + "\tUserName,\n" + + "\tExecutionId, \n" + + "\tCASE(RequestType)\n" + + "\t\tWHEN 0 THEN 'Interactive'\n" + + "\t\tWHEN 1 THEN 'Subscription'\n" + + "\t\tELSE 'Unknown'\n" + + "\t\tEND AS RequestType, \n" + + "\t-- SubscriptionId, \n" + + "\tFormat, \n" + + "\tParameters, \n" + + "\tCASE(ReportAction)\t\t\n" + + "\t\tWHEN 1 THEN 'Render'\n" + + "\t\tWHEN 2 THEN 'BookmarkNavigation'\n" + + "\t\tWHEN 3 THEN 'DocumentMapNavigation'\n" + + "\t\tWHEN 4 THEN 'DrillThrough'\n" + + "\t\tWHEN 5 THEN 'FindString'\n" + + "\t\tWHEN 6 THEN 'GetDocumentMap'\n" + + "\t\tWHEN 7 THEN 'Toggle'\n" + + "\t\tWHEN 8 THEN 'Sort'\n" + + "\t\tELSE 'Unknown'\n" + + "\t\tEND AS ReportAction,\n" + + "\tTimeStart, \n" + + "\tTimeEnd, \n" + + "\tTimeDataRetrieval, \n" + + "\tTimeProcessing, \n" + + "\tTimeRendering,\n" + + "\tCASE(Source)\n" + + "\t\tWHEN 1 THEN 'Live'\n" + + "\t\tWHEN 2 THEN 'Cache'\n" + + "\t\tWHEN 3 THEN 'Snapshot' \n" + + "\t\tWHEN 4 THEN 'History'\n" + + "\t\tWHEN 5 THEN 'AdHoc'\n" + + "\t\tWHEN 6 THEN 'Session'\n" + + "\t\tWHEN 7 THEN 'Rdce'\n" + + "\t\tELSE 'Unknown'\n" + + "\t\tEND AS Source,\n" + + "\tStatus,\n" + + "\tByteCount,\n" + + "\t[RowCount],\n" + + "\tAdditionalInfo\n" + + "FROM ExecutionLogStorage EL WITH(NOLOCK)\n" + + "LEFT OUTER JOIN Catalog C WITH(NOLOCK) ON (EL.ReportID = C.ItemID);"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.size() == 6); + + } + + public void testBeginCatch(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE PROCEDURE Intacct.ValidateResponseXML\n" + + "(\n" + + "\t@LoadId\t\t\tINT\n" + + ",\t@Loaddate\t\tDATE\t= NULL\n" + + ",\t@ResponseRaw\tVARCHAR(MAX)\n" + + ",\t@Response\t\tXML OUTPUT\n" + + ",\t@IsValid\t\tBIT\tOUTPUT\n" + + ")\n" + + "AS\n" + + "BEGIN\n" + + "\tDECLARE\n" + + "\t\t@Procedurename\t\t\tNVARCHAR(129) = OBJECT_SCHEMA_NAME(@@Procid)+'.'+OBJECT_NAME(@@Procid)\n" + + "\t,\t@Tablename\t\t\t\tNVARCHAR(129) = 'None'\n" + + "\t,\t@Affectedrowcount\t\tINT\n" + + "\t,\t@Message\t\t\t\tVARCHAR(512)\n" + + "\t,\t@ErrorId\t\t\t\tUNIQUEIDENTIFIER\t= NEWID()\n" + + "\t,\t@LineValueStart\t\t\tINT\n" + + "\t,\t@LineValueEnd\t\t\tINT\n" + + "\t,\t@CharacterValueStart\tINT\n" + + "\t,\t@CharacterValueEnd\t\tINT\n" + + "\t,\t@LineNumber\t\t\t\tINT\n" + + "\t,\t@CharacterPosition\t\tINT\n" + + "\t,\t@SuspectLine\t\t\tVARCHAR(2048)\n" + + "\t,\t@InvalidCharacter\t\tNVARCHAR(1)\n" + + "\t,\t@Delimiter\t\t\t\tCHAR(1) = CHAR(13)\n" + + "--\t,\t@Response\t\t\t\tXML\n" + + "\t,\t@ErrorMessage\t\t\tNVARCHAR(4000)\n" + + "\t,\t@ErrorNumber\t\t\tINT\n" + + "\n" + + "\tSET @IsValid = 0\n" + + "\tSET @Response = NULL\n" + + "\n" + + "\tSET @Message = 'Replacing a few known bad characters in the data set coming in the XML message.';\n" + + "\n" + + "\tEXEC ETL_Logging.ETL.LoadLog_Detail_Insert \n" + + "\t\t@Loadid\t\t\t= @Loadid\n" + + "\t,\t@Commenttypeid\t= 1\n" + + "\t,\t@Comment\t\t= @Message\n" + + "\t,\t@Loaddate\t\t= @Loaddate\n" + + "\t,\t@Procname\t\t= @Procedurename\n" + + "\t,\t@Rowsinserted\t= 0\n" + + "\t,\t@Rowsupdated\t= 0\n" + + "\t,\t@Rowsdeleted\t= 0\n" + + "\t,\t@Tableaffected\t= @Tablename;\n" + + "\t\n" + + "\t-- We can make this step more generic\n" + + "\tSET @ResponseRaw = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@ResponseRaw,CHAR(237),'i'),CHAR(10),''),CHAR(233),'e'),CHAR(241),'n'),CHAR(160),' ') --fixes í and LF and é and ñ\n" + + "\n" + + "\tSET @Message = 'Validating XML message.';\n" + + "\tEXEC ETL_Logging.ETL.LoadLog_Detail_Insert \n" + + "\t\t@Loadid\t\t\t= @Loadid\n" + + "\t,\t@Commenttypeid\t= 1\n" + + "\t,\t@Comment\t\t= @Message\n" + + "\t,\t@Loaddate\t\t= @Loaddate\n" + + "\t,\t@Procname\t\t= @Procedurename\n" + + "\t,\t@Rowsinserted\t= 0\n" + + "\t,\t@Rowsupdated\t= 0\n" + + "\t,\t@Rowsdeleted\t= 0\n" + + "\t,\t@Tableaffected\t= @Tablename;\n" + + "\n" + + "\tBEGIN TRY\n" + + "\t\tSET @Response = CAST(@ResponseRaw AS XML)\n" + + "\t\tSET @IsValid = 1\n" + + "\n" + + "\t\tSET @Message = 'Response XML message is valid.';\n" + + "\t\tEXEC ETL_Logging.ETL.LoadLog_Detail_Insert \n" + + "\t\t\t@Loadid\t\t\t= @Loadid\n" + + "\t\t,\t@Commenttypeid\t= 1\n" + + "\t\t,\t@Comment\t\t= @Message\n" + + "\t\t,\t@Loaddate\t\t= @Loaddate\n" + + "\t\t,\t@Procname\t\t= @Procedurename\n" + + "\t\t,\t@Rowsinserted\t= 0\n" + + "\t\t,\t@Rowsupdated\t= 0\n" + + "\t\t,\t@Rowsdeleted\t= 0\n" + + "\t\t,\t@Tableaffected\t= @Tablename;\n" + + "\tEND TRY\n" + + "\tBEGIN CATCH\n" + + "\t\tSET @Message = 'Response XML message is NOT valid. View details in Intacct.XMLParseErrorLog for ErrorId: ' + CAST(@ErrorId AS VARCHAR(50));\n" + + "\t\tEXEC ETL_Logging.ETL.LoadLog_Detail_Insert \n" + + "\t\t\t@Loadid\t\t\t= @Loadid\n" + + "\t\t,\t@Commenttypeid\t= 1\n" + + "\t\t,\t@Comment\t\t= @Message\n" + + "\t\t,\t@Loaddate\t\t= @Loaddate\n" + + "\t\t,\t@Procname\t\t= @Procedurename\n" + + "\t\t,\t@Rowsinserted\t= 0\n" + + "\t\t,\t@Rowsupdated\t= 0\n" + + "\t\t,\t@Rowsdeleted\t= 0\n" + + "\t\t,\t@Tableaffected\t= @Tablename;\n" + + "\n" + + "\t\t-- process xml string based on error message/number, etc.\n" + + "\t\tSELECT\n" + + "\t\t\t@ErrorMessage\t= ERROR_MESSAGE()\n" + + "\t\t,\t@ErrorNumber\t= ERROR_NUMBER()\n" + + "\n" + + "\t\tSELECT\n" + + "\t\t\t@LineValueStart\t= CHARINDEX('line', @ErrorMessage) + 5\n" + + "\t\t,\t@LineValueEnd\t= CHARINDEX(',', @ErrorMessage)\n" + + "\n" + + "\t\tSELECT\n" + + "\t\t\t@CharacterValueStart\t= CHARINDEX('character', @ErrorMessage, @LineValueEnd + 1) + 10\n" + + "\t\t,\t@CharacterValueEnd\t\t= CHARINDEX(',', @ErrorMessage, @LineValueEnd + 1)\n" + + "\n" + + "\t\tSELECT\n" + + "\t\t\t@LineNumber\t\t\t= CAST(SUBSTRING(@ErrorMessage, @LineValueStart, @LineValueEnd - @LineValueStart) AS INT)\n" + + "\t\t,\t@CharacterPosition\t= CAST(SUBSTRING(@ErrorMessage, @CharacterValueStart, @CharacterValueEnd - @CharacterValueStart) AS INT)\n" + + "\n" + + "\t\tCREATE TABLE #Temp\n" + + "\t\t(\n" + + "\t\t\tRowNumber\tINT IDENTITY (1,1)\n" + + "\t\t,\tLineValue\tVARCHAR(MAX)\n" + + "\t\t)\n" + + "\n" + + "\t\tINSERT INTO #Temp (LineValue)\n" + + "\t\tSELECT\n" + + "\t\t\tvalue\n" + + "\t\tFROM\n" + + "\t\t\tSTRING_SPLIT ( @ResponseRaw , @Delimiter ) \n" + + "\n" + + "\t\tSELECT\n" + + "\t\t\t@SuspectLine = LineValue\n" + + "\t\tFROM\n" + + "\t\t\t#Temp\n" + + "\t\tWHERE\n" + + "\t\t\tRowNumber = @LineNumber\n" + + "\n" + + "\t\tINSERT INTO Intacct.XMLParseErrorLog (ErrorId, ErrorTime, ResponseRaw, LineNumber, CharacterPosition, SuspectLine, InvalidCharacter)\n" + + "\t\tSELECT\n" + + "\t\t\t@ErrorId\t\t\t\t\t\t\t\t\t\t\tAS ErrorId\n" + + "\t\t,\tGETDATE()\t\t\t\t\t\t\t\t\t\t\tAS ErrorTime\n" + + "\t\t,\t@ResponseRaw\t\t\t\t\t\t\t\t\t\tAS ResponseRaw\n" + + "\t\t,\t@LineNumber\t\t\t\t\t\t\t\t\t\t\tAS LineNumber\n" + + "\t\t,\t@CharacterPosition\t\t\t\t\t\t\t\t\tAS CharacterPosition\n" + + "\t\t,\t@SuspectLine\t\t\t\t\t\t\t\t\t\tAS SuspectLine\n" + + "\t\t,\tSUBSTRING(@SuspectLine, @CharacterPosition + 1, 1)\tAS InvalidCharacter\n" + + "\tEND CATCH\n" + + "END"; + assertTrue(sqlparser.parse() == 0); + + TMssqlCreateProcedure createProcedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(0); + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("Intacct.ValidateResponseXML")); + + // assertTrue(createProcedure.getBodyStatements().size() == 2); + // System.out.println(createProcedure.getDeclareStatements().size()); + assertTrue(createProcedure.getBodyStatements().size() == 1); + assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstmssqlblock); + TMssqlBlock block = (TMssqlBlock)createProcedure.getBodyStatements().get(0); + assertTrue(block.getBodyStatements().size() == 9); + assertTrue(block.getBodyStatements().get(8).sqlstatementtype == ESqlStatementType.sstmssqlblock); + block = (TMssqlBlock)block.getBodyStatements().get(8); + //System.out.println(block.getBodyStatements().size()); + assertTrue(block.getBodyStatements().size() == 14); + } + +} diff --git a/src/test/java/mssql/testCreateTrigger.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateTrigger.java similarity index 98% rename from src/test/java/mssql/testCreateTrigger.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateTrigger.java index c57c7a74..80ee3704 100644 --- a/src/test/java/mssql/testCreateTrigger.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateTrigger.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/mssql/testDatatype.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testDatatype.java similarity index 97% rename from src/test/java/mssql/testDatatype.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testDatatype.java index 42e0eff6..a1231767 100644 --- a/src/test/java/mssql/testDatatype.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testDatatype.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; /* * Date: 12-5-23 */ diff --git a/src/test/java/mssql/testDeclareBlock.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testDeclareBlock.java similarity index 97% rename from src/test/java/mssql/testDeclareBlock.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testDeclareBlock.java index 68c745cf..cbd3112d 100644 --- a/src/test/java/mssql/testDeclareBlock.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testDeclareBlock.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; /* * Date: 11-8-4 */ diff --git a/src/test/java/mssql/testDeclareCursor.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testDeclareCursor.java similarity index 96% rename from src/test/java/mssql/testDeclareCursor.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testDeclareCursor.java index c5ebad29..f4e165ff 100644 --- a/src/test/java/mssql/testDeclareCursor.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testDeclareCursor.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; /* * Date: 12-3-12 */ diff --git a/src/test/java/mssql/testDistinct.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testDistinct.java similarity index 94% rename from src/test/java/mssql/testDistinct.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testDistinct.java index 37d1084a..e3efcff6 100644 --- a/src/test/java/mssql/testDistinct.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testDistinct.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; /* * Date: 12-2-17 */ diff --git a/src/test/java/mssql/testDropDBObject.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testDropDBObject.java similarity index 91% rename from src/test/java/mssql/testDropDBObject.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testDropDBObject.java index 41d79f1d..59481948 100644 --- a/src/test/java/mssql/testDropDBObject.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testDropDBObject.java @@ -1,32 +1,31 @@ -package mssql; -/* - * Date: 12-3-9 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropFunctionStmt; -import gudusoft.gsqlparser.stmt.TDropProcedureStmt; -import gudusoft.gsqlparser.stmt.mssql.TMssqlDropDbObject; -import junit.framework.TestCase; - -public class testDropDBObject extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "DROP PROCEDURE ProcedureA"; - assertTrue(sqlparser.parse() == 0); - - TDropProcedureStmt dropDbObject = (TDropProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(dropDbObject.getProcedureName().toString().equalsIgnoreCase("ProcedureA")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "DROP FUNCTION if exists FunctionA"; - assertTrue(sqlparser.parse() == 0); - - TDropFunctionStmt dropDbObject = (TDropFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(dropDbObject.getFunctionName().toString().equalsIgnoreCase("FunctionA")); - } -} +package gudusoft.gsqlparser.mssqlTest; +/* + * Date: 12-3-9 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TDropFunctionStmt; +import gudusoft.gsqlparser.stmt.TDropProcedureStmt; +import junit.framework.TestCase; + +public class testDropDBObject extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "DROP PROCEDURE ProcedureA"; + assertTrue(sqlparser.parse() == 0); + + TDropProcedureStmt dropDbObject = (TDropProcedureStmt)sqlparser.sqlstatements.get(0); + assertTrue(dropDbObject.getProcedureName().toString().equalsIgnoreCase("ProcedureA")); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "DROP FUNCTION if exists FunctionA"; + assertTrue(sqlparser.parse() == 0); + + TDropFunctionStmt dropDbObject = (TDropFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(dropDbObject.getFunctionName().toString().equalsIgnoreCase("FunctionA")); + } +} diff --git a/src/test/java/mssql/testExecuteOption.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testExecuteOption.java similarity index 99% rename from src/test/java/mssql/testExecuteOption.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testExecuteOption.java index 6eb77d24..63daf1f9 100644 --- a/src/test/java/mssql/testExecuteOption.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testExecuteOption.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.*; diff --git a/src/test/java/mssql/testExternalTable.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testExternalTable.java similarity index 98% rename from src/test/java/mssql/testExternalTable.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testExternalTable.java index 3683db01..065e7cf2 100644 --- a/src/test/java/mssql/testExternalTable.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testExternalTable.java @@ -1,10 +1,9 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.mssql.TCreateExternalLanguage; import junit.framework.TestCase; public class testExternalTable extends TestCase { diff --git a/src/test/java/mssql/testFileFormat.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testFileFormat.java similarity index 96% rename from src/test/java/mssql/testFileFormat.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testFileFormat.java index 7976fe76..ac276b5b 100644 --- a/src/test/java/mssql/testFileFormat.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testFileFormat.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.EFileFormat; diff --git a/src/test/java/mssql/testOpenjson.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testOpenjson.java similarity index 97% rename from src/test/java/mssql/testOpenjson.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testOpenjson.java index 9bdda303..ade413bd 100644 --- a/src/test/java/mssql/testOpenjson.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testOpenjson.java @@ -1,121 +1,121 @@ -package mssql; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.nodes.TColumnDefinitionList; -import gudusoft.gsqlparser.nodes.TJsonTable; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testOpenjson extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "DECLARE @json NVARCHAR(2048) = N'{\n" + - " \"String_value\": \"John\",\n" + - " \"DoublePrecisionFloatingPoint_value\": 45,\n" + - " \"DoublePrecisionFloatingPoint_value\": 2.3456,\n" + - " \"BooleanTrue_value\": true,\n" + - " \"BooleanFalse_value\": false,\n" + - " \"Null_value\": null,\n" + - " \"Array_value\": [\"a\",\"r\",\"r\",\"a\",\"y\"],\n" + - " \"Object_value\": {\"obj\":\"ect\"}\n" + - "}';\n" + - "\n" + - "SELECT * FROM OpenJson(@json);"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(1); - TTable table = select.getTables().getTable(0); - assertTrue(table.getTableType() == ETableSource.jsonTable); - TJsonTable jsonTable = table.getJsonTable(); - assertTrue(jsonTable.getJsonExpression().toString().equalsIgnoreCase("@json")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "DECLARE @json NVARCHAR(4000) = N'{ \n" + - " \"path\": { \n" + - " \"to\":{ \n" + - " \"sub-object\":[\"en-GB\", \"en-UK\",\"de-AT\",\"es-AR\",\"sr-Cyrl\"] \n" + - " } \n" + - " } \n" + - " }';\n" + - "\n" + - "SELECT [key], value\n" + - "FROM OPENJSON(@json,'$.path.to.\"sub-object\"')"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(1); - TTable table = select.getTables().getTable(0); - assertTrue(table.getTableType() == ETableSource.jsonTable); - TJsonTable jsonTable = table.getJsonTable(); - assertTrue(jsonTable.getJsonExpression().toString().equalsIgnoreCase("@json")); - assertTrue(jsonTable.getPath().equalsIgnoreCase("'$.path.to.\"sub-object\"'")); - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "DECLARE @json NVARCHAR(MAX) = N'[ \n" + - " { \n" + - " \"Order\": { \n" + - " \"Number\":\"SO43659\", \n" + - " \"Date\":\"2011-05-31T00:00:00\" \n" + - " }, \n" + - " \"AccountNumber\":\"AW29825\", \n" + - " \"Item\": { \n" + - " \"Price\":2024.9940, \n" + - " \"Quantity\":1 \n" + - " } \n" + - " }, \n" + - " { \n" + - " \"Order\": { \n" + - " \"Number\":\"SO43661\", \n" + - " \"Date\":\"2011-06-01T00:00:00\" \n" + - " }, \n" + - " \"AccountNumber\":\"AW73565\", \n" + - " \"Item\": { \n" + - " \"Price\":2024.9940, \n" + - " \"Quantity\":3 \n" + - " } \n" + - " }\n" + - "]' \n" + - " \n" + - "SELECT *\n" + - "FROM OPENJSON ( @json ) \n" + - "WITH ( \n" + - " Number VARCHAR(200) '$.Order.Number', \n" + - " Date DATETIME '$.Order.Date', \n" + - " Customer VARCHAR(200) '$.AccountNumber', \n" + - " Quantity INT '$.Item.Quantity', \n" + - " [Order] NVARCHAR(MAX) AS JSON \n" + - " )"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(1); - TTable table = select.getTables().getTable(0); - assertTrue(table.getTableType() == ETableSource.jsonTable); - TJsonTable jsonTable = table.getJsonTable(); - assertTrue(jsonTable.getJsonExpression().toString().equalsIgnoreCase("@json")); - TColumnDefinitionList columnDefinitions = jsonTable.getColumnDefinitions(); - assertTrue(columnDefinitions.size() == 5); - TColumnDefinition columnDefinition = columnDefinitions.getColumn(0); - assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("Number")); - assertTrue(columnDefinition.getDatatype().getDataType() == EDataType.varchar_t); - assertTrue(columnDefinition.getColumnPath().equalsIgnoreCase("'$.Order.Number'")); - assertTrue(!columnDefinition.isAsJson()); - - columnDefinition = columnDefinitions.getColumn(4); - assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("[Order]")); - assertTrue(columnDefinition.getDatatype().getDataType() == EDataType.nvarchar_t); - assertTrue(columnDefinition.isAsJson()); - } - -} +package gudusoft.gsqlparser.mssqlTest; + +import gudusoft.gsqlparser.EDataType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ETableSource; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TColumnDefinition; +import gudusoft.gsqlparser.nodes.TColumnDefinitionList; +import gudusoft.gsqlparser.nodes.TJsonTable; +import gudusoft.gsqlparser.nodes.TTable; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testOpenjson extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "DECLARE @json NVARCHAR(2048) = N'{\n" + + " \"String_value\": \"John\",\n" + + " \"DoublePrecisionFloatingPoint_value\": 45,\n" + + " \"DoublePrecisionFloatingPoint_value\": 2.3456,\n" + + " \"BooleanTrue_value\": true,\n" + + " \"BooleanFalse_value\": false,\n" + + " \"Null_value\": null,\n" + + " \"Array_value\": [\"a\",\"r\",\"r\",\"a\",\"y\"],\n" + + " \"Object_value\": {\"obj\":\"ect\"}\n" + + "}';\n" + + "\n" + + "SELECT * FROM OpenJson(@json);"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(1); + TTable table = select.getTables().getTable(0); + assertTrue(table.getTableType() == ETableSource.jsonTable); + TJsonTable jsonTable = table.getJsonTable(); + assertTrue(jsonTable.getJsonExpression().toString().equalsIgnoreCase("@json")); + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "DECLARE @json NVARCHAR(4000) = N'{ \n" + + " \"path\": { \n" + + " \"to\":{ \n" + + " \"sub-object\":[\"en-GB\", \"en-UK\",\"de-AT\",\"es-AR\",\"sr-Cyrl\"] \n" + + " } \n" + + " } \n" + + " }';\n" + + "\n" + + "SELECT [key], value\n" + + "FROM OPENJSON(@json,'$.path.to.\"sub-object\"')"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(1); + TTable table = select.getTables().getTable(0); + assertTrue(table.getTableType() == ETableSource.jsonTable); + TJsonTable jsonTable = table.getJsonTable(); + assertTrue(jsonTable.getJsonExpression().toString().equalsIgnoreCase("@json")); + assertTrue(jsonTable.getPath().equalsIgnoreCase("'$.path.to.\"sub-object\"'")); + } + + public void test3(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "DECLARE @json NVARCHAR(MAX) = N'[ \n" + + " { \n" + + " \"Order\": { \n" + + " \"Number\":\"SO43659\", \n" + + " \"Date\":\"2011-05-31T00:00:00\" \n" + + " }, \n" + + " \"AccountNumber\":\"AW29825\", \n" + + " \"Item\": { \n" + + " \"Price\":2024.9940, \n" + + " \"Quantity\":1 \n" + + " } \n" + + " }, \n" + + " { \n" + + " \"Order\": { \n" + + " \"Number\":\"SO43661\", \n" + + " \"Date\":\"2011-06-01T00:00:00\" \n" + + " }, \n" + + " \"AccountNumber\":\"AW73565\", \n" + + " \"Item\": { \n" + + " \"Price\":2024.9940, \n" + + " \"Quantity\":3 \n" + + " } \n" + + " }\n" + + "]' \n" + + " \n" + + "SELECT *\n" + + "FROM OPENJSON ( @json ) \n" + + "WITH ( \n" + + " Number VARCHAR(200) '$.Order.Number', \n" + + " Date DATETIME '$.Order.Date', \n" + + " Customer VARCHAR(200) '$.AccountNumber', \n" + + " Quantity INT '$.Item.Quantity', \n" + + " [Order] NVARCHAR(MAX) AS JSON \n" + + " )"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(1); + TTable table = select.getTables().getTable(0); + assertTrue(table.getTableType() == ETableSource.jsonTable); + TJsonTable jsonTable = table.getJsonTable(); + assertTrue(jsonTable.getJsonExpression().toString().equalsIgnoreCase("@json")); + TColumnDefinitionList columnDefinitions = jsonTable.getColumnDefinitions(); + assertTrue(columnDefinitions.size() == 5); + TColumnDefinition columnDefinition = columnDefinitions.getColumn(0); + assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("Number")); + assertTrue(columnDefinition.getDatatype().getDataType() == EDataType.varchar_t); + assertTrue(columnDefinition.getColumnPath().equalsIgnoreCase("'$.Order.Number'")); + assertTrue(!columnDefinition.isAsJson()); + + columnDefinition = columnDefinitions.getColumn(4); + assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("[Order]")); + assertTrue(columnDefinition.getDatatype().getDataType() == EDataType.nvarchar_t); + assertTrue(columnDefinition.isAsJson()); + } + +} diff --git a/src/test/java/mssql/testOutputClause.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testOutputClause.java similarity index 98% rename from src/test/java/mssql/testOutputClause.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testOutputClause.java index 403d6988..60d21f12 100644 --- a/src/test/java/mssql/testOutputClause.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testOutputClause.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; /* * Date: 14-10-17 */ diff --git a/src/test/java/mssql/testPivot.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testPivot.java similarity index 99% rename from src/test/java/mssql/testPivot.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testPivot.java index eccf850a..fdd11f65 100644 --- a/src/test/java/mssql/testPivot.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testPivot.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ETableSource; diff --git a/src/test/java/mssql/testQualifiedName.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testQualifiedName.java similarity index 97% rename from src/test/java/mssql/testQualifiedName.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testQualifiedName.java index cc84ed95..932aff68 100644 --- a/src/test/java/mssql/testQualifiedName.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testQualifiedName.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/mssql/testSyntaxHint.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testSyntaxHint.java similarity index 86% rename from src/test/java/mssql/testSyntaxHint.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testSyntaxHint.java index cb1ad9e0..c57733d7 100644 --- a/src/test/java/mssql/testSyntaxHint.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testSyntaxHint.java @@ -1,6 +1,6 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; -import common.gspCommon; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; import gudusoft.gsqlparser.TGSqlParser; @@ -12,7 +12,7 @@ public class testSyntaxHint extends TestCase { public void test1(){ TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA +"mssql/octopai/3243.sql"; + sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "mssql/octopai/3243.sql"; int result = sqlparser.parse(); assertTrue(result==0); assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateview); diff --git a/src/test/java/mssql/testTableHint.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testTableHint.java similarity index 99% rename from src/test/java/mssql/testTableHint.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testTableHint.java index 803636c8..89bfb072 100644 --- a/src/test/java/mssql/testTableHint.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testTableHint.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; /* * Date: 12-4-13 */ @@ -11,7 +11,6 @@ import gudusoft.gsqlparser.nodes.TTableHint; import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TUseDatabase; import junit.framework.TestCase; public class testTableHint extends TestCase { diff --git a/src/test/java/mssql/testThrow.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testThrow.java similarity index 96% rename from src/test/java/mssql/testThrow.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testThrow.java index 4f4e4967..85a55699 100644 --- a/src/test/java/mssql/testThrow.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testThrow.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; /* * Date: 14-10-17 */ diff --git a/src/test/java/mssql/testUse.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testUse.java similarity index 93% rename from src/test/java/mssql/testUse.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testUse.java index 545f1666..81c9ffa8 100644 --- a/src/test/java/mssql/testUse.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testUse.java @@ -1,4 +1,4 @@ -package mssql; +package gudusoft.gsqlparser.mssqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/mssql/testXMLfunction.java b/src/test/java/gudusoft/gsqlparser/mssqlTest/testXMLfunction.java similarity index 98% rename from src/test/java/mssql/testXMLfunction.java rename to src/test/java/gudusoft/gsqlparser/mssqlTest/testXMLfunction.java index 333795d7..0d99d0d3 100644 --- a/src/test/java/mssql/testXMLfunction.java +++ b/src/test/java/gudusoft/gsqlparser/mssqlTest/testXMLfunction.java @@ -1,52 +1,52 @@ -package mssql; - -import gudusoft.gsqlparser.EDbObjectType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EFunctionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testXMLfunction extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT p.Demographics.value('declare namespace awns=\"http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey\"; (awns:IndividualSurvey/awns:NumberCarsOwned) [1]',\n" + - " 'int') AS NumberCarsOwned,db1.schema1.func1(arg1)\n" + - "FROM Sales.Customer AS c INNER JOIN\n" + - " Person.Person AS p ON p.BusinessEntityID = c.PersonID INNER JOIN\n" + - " Person.BusinessEntityAddress AS a ON a.BusinessEntityID = p.BusinessEntityID INNER JOIN\n" + - " Person.AddressType AS t ON a.AddressTypeID = t.AddressTypeID INNER JOIN\n" + - " Person.Address AS ad ON ad.AddressID = a.AddressID INNER JOIN\n" + - " Person.EmailAddress AS ea ON ea.BusinessEntityID = p.BusinessEntityID INNER JOIN\n" + - " Person.StateProvince AS sp ON sp.StateProvinceID = ad.StateProvinceID\n" + - "WHERE (c.StoreID IS NULL) AND (t.Name = N'Home') AND (sp.CountryRegionCode = N'US')"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column = selectSqlStatement.getResultColumnList().getResultColumn(0); - TExpression expression = column.getExpr(); - TFunctionCall functionCall = expression.getFunctionCall(); - //System.out.println(functionCall.getFunctionName().getObjectToken().toString()); - assertTrue(functionCall.getFunctionType() == EFunctionType.xmlvalue_t); - assertTrue(functionCall.getFunctionName().getObjectToken().toString().equalsIgnoreCase("p")); - - TExpressionCallTarget callTarget = functionCall.getCallTarget(); - assertTrue(callTarget.getExpr().toString().equalsIgnoreCase("p.Demographics")); - - TResultColumn column1 = selectSqlStatement.getResultColumnList().getResultColumn(1); - TExpression expression1 = column1.getExpr(); - TFunctionCall functionCall1 = expression1.getFunctionCall(); - //System.out.println(functionCall1.getFunctionName().getObjectToken().toString()); - assertTrue(functionCall1.getFunctionName().getObjectToken().getDbObjType() == TObjectName.ttobjFunctionName); - //System.out.println(functionCall1.getFunctionName().getSchemaString().toString()); - assertTrue(functionCall1.getFunctionName().getSchemaToken().getDbObjType() == TObjectName.ttobjSchemaName); - // System.out.println(functionCall1.getFunctionName().getDatabaseToken().toString()); - //assertTrue((functionCall1.getFunctionName().getDatabaseToken().getDbObjType() == TObjectName.ttobjDatabaseName)); - assertTrue(functionCall1.getFunctionName().getDatabaseToken().getDbObjectType() == EDbObjectType.database); - - } - -} +package gudusoft.gsqlparser.mssqlTest; + +import gudusoft.gsqlparser.EDbObjectType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EFunctionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testXMLfunction extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); + sqlparser.sqltext = "SELECT p.Demographics.value('declare namespace awns=\"http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/IndividualSurvey\"; (awns:IndividualSurvey/awns:NumberCarsOwned) [1]',\n" + + " 'int') AS NumberCarsOwned,db1.schema1.func1(arg1)\n" + + "FROM Sales.Customer AS c INNER JOIN\n" + + " Person.Person AS p ON p.BusinessEntityID = c.PersonID INNER JOIN\n" + + " Person.BusinessEntityAddress AS a ON a.BusinessEntityID = p.BusinessEntityID INNER JOIN\n" + + " Person.AddressType AS t ON a.AddressTypeID = t.AddressTypeID INNER JOIN\n" + + " Person.Address AS ad ON ad.AddressID = a.AddressID INNER JOIN\n" + + " Person.EmailAddress AS ea ON ea.BusinessEntityID = p.BusinessEntityID INNER JOIN\n" + + " Person.StateProvince AS sp ON sp.StateProvinceID = ad.StateProvinceID\n" + + "WHERE (c.StoreID IS NULL) AND (t.Name = N'Home') AND (sp.CountryRegionCode = N'US')"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn column = selectSqlStatement.getResultColumnList().getResultColumn(0); + TExpression expression = column.getExpr(); + TFunctionCall functionCall = expression.getFunctionCall(); + //System.out.println(functionCall.getFunctionName().getObjectToken().toString()); + assertTrue(functionCall.getFunctionType() == EFunctionType.xmlvalue_t); + assertTrue(functionCall.getFunctionName().getObjectToken().toString().equalsIgnoreCase("p")); + + TExpressionCallTarget callTarget = functionCall.getCallTarget(); + assertTrue(callTarget.getExpr().toString().equalsIgnoreCase("p.Demographics")); + + TResultColumn column1 = selectSqlStatement.getResultColumnList().getResultColumn(1); + TExpression expression1 = column1.getExpr(); + TFunctionCall functionCall1 = expression1.getFunctionCall(); + //System.out.println(functionCall1.getFunctionName().getObjectToken().toString()); + assertTrue(functionCall1.getFunctionName().getObjectToken().getDbObjType() == TObjectName.ttobjFunctionName); + //System.out.println(functionCall1.getFunctionName().getSchemaString().toString()); + assertTrue(functionCall1.getFunctionName().getSchemaToken().getDbObjType() == TObjectName.ttobjSchemaName); + // System.out.println(functionCall1.getFunctionName().getDatabaseToken().toString()); + //assertTrue((functionCall1.getFunctionName().getDatabaseToken().getDbObjType() == TObjectName.ttobjDatabaseName)); + assertTrue(functionCall1.getFunctionName().getDatabaseToken().getDbObjectType() == EDbObjectType.database); + + } + +} diff --git a/src/test/java/mysql/testCall.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testCall.java similarity index 96% rename from src/test/java/mysql/testCall.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testCall.java index 8e0b75d7..53d58a49 100644 --- a/src/test/java/mysql/testCall.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testCall.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 12-6-11 */ diff --git a/src/test/java/mysql/testComment.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testComment.java similarity index 94% rename from src/test/java/mysql/testComment.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testComment.java index 93a3bac2..80837331 100644 --- a/src/test/java/mysql/testComment.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testComment.java @@ -1,9 +1,8 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; import gudusoft.gsqlparser.nodes.TResultColumn; import gudusoft.gsqlparser.stmt.TSelectSqlStatement; import junit.framework.TestCase; diff --git a/src/test/java/mysql/testCreateFucntion.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testCreateFucntion.java similarity index 98% rename from src/test/java/mysql/testCreateFucntion.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testCreateFucntion.java index 5acfcb3e..1393c2e4 100644 --- a/src/test/java/mysql/testCreateFucntion.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testCreateFucntion.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; import gudusoft.gsqlparser.*; diff --git a/src/test/java/mysql/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testCreateTable.java similarity index 97% rename from src/test/java/mysql/testCreateTable.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testCreateTable.java index 7579d734..4979cfc0 100644 --- a/src/test/java/mysql/testCreateTable.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testCreateTable.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/mysql/testDatatype.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDatatype.java similarity index 98% rename from src/test/java/mysql/testDatatype.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testDatatype.java index d43215e7..915b30a9 100644 --- a/src/test/java/mysql/testDatatype.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDatatype.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; import gudusoft.gsqlparser.EDataType; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/mysql/testDate.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDate.java similarity index 96% rename from src/test/java/mysql/testDate.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testDate.java index 4ad7af50..2417637f 100644 --- a/src/test/java/mysql/testDate.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDate.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/mysql/testDecimalDot.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDecimalDot.java similarity index 96% rename from src/test/java/mysql/testDecimalDot.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testDecimalDot.java index 2e91d0a5..e4029ee0 100644 --- a/src/test/java/mysql/testDecimalDot.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDecimalDot.java @@ -1,60 +1,60 @@ -package mysql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TConstant; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.EExpressionType.unary_plus_t; - -public class testDecimalDot extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "select t.84b4ffb8315895bd from t;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - TExpression expression =resultColumn.getExpr(); - TObjectName objectName = expression.getObjectOperand(); - assertTrue(objectName.getColumnNameOnly().equalsIgnoreCase("84b4ffb8315895bd")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "select +.89;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - TExpression expression =resultColumn.getExpr(); - assertTrue(expression.getExpressionType() == unary_plus_t); - TExpression rightExpr = expression.getRightOperand(); - TConstant constant = rightExpr.getConstantOperand(); - assertTrue(constant.toString().equalsIgnoreCase(".89")); - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "select .84b4ffb8315895bd from t;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - TExpression expression =resultColumn.getExpr(); - - TConstant constant = expression.getConstantOperand(); - assertTrue(constant.toString().equalsIgnoreCase(".84")); - - assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("b4ffb8315895bd")); - } - -} +package gudusoft.gsqlparser.mysqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TConstant; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TObjectName; +import gudusoft.gsqlparser.nodes.TResultColumn; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +import static gudusoft.gsqlparser.EExpressionType.unary_plus_t; + +public class testDecimalDot extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "select t.84b4ffb8315895bd from t;"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); + TExpression expression =resultColumn.getExpr(); + TObjectName objectName = expression.getObjectOperand(); + assertTrue(objectName.getColumnNameOnly().equalsIgnoreCase("84b4ffb8315895bd")); + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "select +.89;"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); + TExpression expression =resultColumn.getExpr(); + assertTrue(expression.getExpressionType() == unary_plus_t); + TExpression rightExpr = expression.getRightOperand(); + TConstant constant = rightExpr.getConstantOperand(); + assertTrue(constant.toString().equalsIgnoreCase(".89")); + } + + public void test3(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "select .84b4ffb8315895bd from t;"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); + TExpression expression =resultColumn.getExpr(); + + TConstant constant = expression.getConstantOperand(); + assertTrue(constant.toString().equalsIgnoreCase(".84")); + + assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("b4ffb8315895bd")); + } + +} diff --git a/src/test/java/mysql/testDelete.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDelete.java similarity index 96% rename from src/test/java/mysql/testDelete.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testDelete.java index 416acde9..25ec2d6d 100644 --- a/src/test/java/mysql/testDelete.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDelete.java @@ -1,32 +1,32 @@ -package mysql; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDeleteSqlStatement; -import junit.framework.TestCase; - -public class testDelete extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "DELETE LOW_PRIORITY from t1 where a=1"; - assertTrue(sqlparser.parse() == 0); - - TDeleteSqlStatement deleteSqlStatement = (TDeleteSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(deleteSqlStatement.getTargetTable().toString().equalsIgnoreCase("t1")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "delete LOW_PRIORITY QUICK IGNORE from t5 where name='B' and id=1;"; - assertTrue(sqlparser.parse() == 0); - - TDeleteSqlStatement deleteSqlStatement = (TDeleteSqlStatement)sqlparser.sqlstatements.get(0); - //System.out.print(deleteSqlStatement.getTargetTable().toString()); - assertTrue(deleteSqlStatement.getTargetTable().toString().equalsIgnoreCase("t5")); - } - -} +package gudusoft.gsqlparser.mysqlTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TDeleteSqlStatement; +import junit.framework.TestCase; + +public class testDelete extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "DELETE LOW_PRIORITY from t1 where a=1"; + assertTrue(sqlparser.parse() == 0); + + TDeleteSqlStatement deleteSqlStatement = (TDeleteSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(deleteSqlStatement.getTargetTable().toString().equalsIgnoreCase("t1")); + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "delete LOW_PRIORITY QUICK IGNORE from t5 where name='B' and id=1;"; + assertTrue(sqlparser.parse() == 0); + + TDeleteSqlStatement deleteSqlStatement = (TDeleteSqlStatement)sqlparser.sqlstatements.get(0); + //System.out.print(deleteSqlStatement.getTargetTable().toString()); + assertTrue(deleteSqlStatement.getTargetTable().toString().equalsIgnoreCase("t5")); + } + +} diff --git a/src/test/java/mysql/testDescribe.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDescribe.java similarity index 96% rename from src/test/java/mysql/testDescribe.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testDescribe.java index 71c1564d..dffd8fee 100644 --- a/src/test/java/mysql/testDescribe.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDescribe.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 13-3-26 */ diff --git a/src/test/java/mysql/testDropTable.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDropTable.java similarity index 96% rename from src/test/java/mysql/testDropTable.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testDropTable.java index eca54aef..406a534b 100644 --- a/src/test/java/mysql/testDropTable.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testDropTable.java @@ -1,24 +1,24 @@ -package mysql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableEffectType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TDropTableSqlStatement; -import junit.framework.TestCase; - -public class testDropTable extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "DROP TABLE database_n.table_n"; - assertTrue(sqlparser.parse() == 0); - TDropTableSqlStatement dropTableSqlStatement = (TDropTableSqlStatement)sqlparser.sqlstatements.get(0); - TTable targetTable = dropTableSqlStatement.getTargetTable(); - assertTrue(targetTable.getEffectType() == ETableEffectType.tetDrop); - assertTrue(dropTableSqlStatement.getTableNameList().getObjectName(0).getDatabaseString().equalsIgnoreCase("database_n")); - assertTrue(dropTableSqlStatement.getTableNameList().getObjectName(0).getObjectString().equalsIgnoreCase("table_n")); - assertTrue(dropTableSqlStatement.getTableNameList().getObjectName(0).toString().equalsIgnoreCase("database_n.table_n")); - } - -} +package gudusoft.gsqlparser.mysqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ETableEffectType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TTable; +import gudusoft.gsqlparser.stmt.TDropTableSqlStatement; +import junit.framework.TestCase; + +public class testDropTable extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "DROP TABLE database_n.table_n"; + assertTrue(sqlparser.parse() == 0); + TDropTableSqlStatement dropTableSqlStatement = (TDropTableSqlStatement)sqlparser.sqlstatements.get(0); + TTable targetTable = dropTableSqlStatement.getTargetTable(); + assertTrue(targetTable.getEffectType() == ETableEffectType.tetDrop); + assertTrue(dropTableSqlStatement.getTableNameList().getObjectName(0).getDatabaseString().equalsIgnoreCase("database_n")); + assertTrue(dropTableSqlStatement.getTableNameList().getObjectName(0).getObjectString().equalsIgnoreCase("table_n")); + assertTrue(dropTableSqlStatement.getTableNameList().getObjectName(0).toString().equalsIgnoreCase("database_n.table_n")); + } + +} diff --git a/src/test/java/mysql/testExecute.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testExecute.java similarity index 93% rename from src/test/java/mysql/testExecute.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testExecute.java index bcadb93d..e08ed7d5 100644 --- a/src/test/java/mysql/testExecute.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testExecute.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/mysql/testFromTableList.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testFromTableList.java similarity index 96% rename from src/test/java/mysql/testFromTableList.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testFromTableList.java index 53a4deef..158a769a 100644 --- a/src/test/java/mysql/testFromTableList.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testFromTableList.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 13-5-29 */ diff --git a/src/test/java/mysql/testGetTable.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testGetTable.java similarity index 99% rename from src/test/java/mysql/testGetTable.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testGetTable.java index 8a985ea6..11219252 100644 --- a/src/test/java/mysql/testGetTable.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testGetTable.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 14-1-10 */ diff --git a/src/test/java/mysql/testIdentifier.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testIdentifier.java similarity index 91% rename from src/test/java/mysql/testIdentifier.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testIdentifier.java index 9c98fede..c8f8ce1c 100644 --- a/src/test/java/mysql/testIdentifier.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testIdentifier.java @@ -1,20 +1,20 @@ -package mysql; -/* - * Date: 12-10-8 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testIdentifier extends TestCase { - - public void testIdentifierStartWithNumber(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "create table 9t(1a int)"; - assertTrue(sqlparser.parse() == 0); - - } - -} +package gudusoft.gsqlparser.mysqlTest; +/* + * Date: 12-10-8 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import junit.framework.TestCase; + +public class testIdentifier extends TestCase { + + public void testIdentifierStartWithNumber(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "create table 9t(1a int)"; + assertTrue(sqlparser.parse() == 0); + + } + +} diff --git a/src/test/java/mysql/testIndexStorageType.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testIndexStorageType.java similarity index 97% rename from src/test/java/mysql/testIndexStorageType.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testIndexStorageType.java index 2e358435..4fcfcfeb 100644 --- a/src/test/java/mysql/testIndexStorageType.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testIndexStorageType.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 12-2-6 */ diff --git a/src/test/java/mysql/testIndexType.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testIndexType.java similarity index 98% rename from src/test/java/mysql/testIndexType.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testIndexType.java index 7ba9b4c7..defedb3a 100644 --- a/src/test/java/mysql/testIndexType.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testIndexType.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 12-2-6 */ diff --git a/src/test/java/mysql/testInsertIgnore.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testInsertIgnore.java similarity index 90% rename from src/test/java/mysql/testInsertIgnore.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testInsertIgnore.java index 9e7676d2..dea388ea 100644 --- a/src/test/java/mysql/testInsertIgnore.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testInsertIgnore.java @@ -1,8 +1,7 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropTableSqlStatement; import gudusoft.gsqlparser.stmt.TInsertSqlStatement; import junit.framework.TestCase; diff --git a/src/test/java/mysql/testIntDisplayLength.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testIntDisplayLength.java similarity index 96% rename from src/test/java/mysql/testIntDisplayLength.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testIntDisplayLength.java index 98cee4e3..a55cc229 100644 --- a/src/test/java/mysql/testIntDisplayLength.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testIntDisplayLength.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/mysql/testLeftRightShift.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testLeftRightShift.java similarity index 97% rename from src/test/java/mysql/testLeftRightShift.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testLeftRightShift.java index 0ffd4f77..59db162f 100644 --- a/src/test/java/mysql/testLeftRightShift.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testLeftRightShift.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 13-11-14 */ diff --git a/src/test/java/mysql/testLimitClause.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testLimitClause.java similarity index 97% rename from src/test/java/mysql/testLimitClause.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testLimitClause.java index 8b3ba405..096e0baf 100644 --- a/src/test/java/mysql/testLimitClause.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testLimitClause.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 11-7-29 */ diff --git a/src/test/java/mysql/testNullEncoded.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testNullEncoded.java similarity index 97% rename from src/test/java/mysql/testNullEncoded.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testNullEncoded.java index 468547b9..3a7f56e7 100644 --- a/src/test/java/mysql/testNullEncoded.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testNullEncoded.java @@ -1,24 +1,24 @@ -package mysql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import junit.framework.TestCase; - -public class testNullEncoded extends TestCase { - - public void testIdentifierStartWithNumber(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "INSERT INTO pet VALUES ('Fluffy','Harold','cat','f',\\N,'1993-02-04',NULL);"; - assertTrue(sqlparser.parse() == 0); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insertSqlStatement.getValues().getMultiTarget(0).getColumnList().size() == 7); - assertTrue(insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(4).getExpr().getExpressionType()== EExpressionType.simple_constant_t ); - assertTrue(insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(6).getExpr().getExpressionType() == EExpressionType.simple_constant_t); - assertTrue(insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(4).getExpr().getConstantOperand().toString().equalsIgnoreCase("\\N")); - assertTrue(insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(6).getExpr().getConstantOperand().toString().equalsIgnoreCase("NULL")); - } - -} +package gudusoft.gsqlparser.mysqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TInsertSqlStatement; +import junit.framework.TestCase; + +public class testNullEncoded extends TestCase { + + public void testIdentifierStartWithNumber(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "INSERT INTO pet VALUES ('Fluffy','Harold','cat','f',\\N,'1993-02-04',NULL);"; + assertTrue(sqlparser.parse() == 0); + TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(insertSqlStatement.getValues().getMultiTarget(0).getColumnList().size() == 7); + assertTrue(insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(4).getExpr().getExpressionType()== EExpressionType.simple_constant_t ); + assertTrue(insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(6).getExpr().getExpressionType() == EExpressionType.simple_constant_t); + assertTrue(insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(4).getExpr().getConstantOperand().toString().equalsIgnoreCase("\\N")); + assertTrue(insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(6).getExpr().getConstantOperand().toString().equalsIgnoreCase("NULL")); + } + +} diff --git a/src/test/java/mysql/testOnDuplicateUpdate.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testOnDuplicateUpdate.java similarity index 96% rename from src/test/java/mysql/testOnDuplicateUpdate.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testOnDuplicateUpdate.java index 7465bade..0f6355b9 100644 --- a/src/test/java/mysql/testOnDuplicateUpdate.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testOnDuplicateUpdate.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 12-10-19 */ diff --git a/src/test/java/mysql/testPrepareStmt.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testPrepareStmt.java similarity index 96% rename from src/test/java/mysql/testPrepareStmt.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testPrepareStmt.java index 4862c9f0..5c87ef32 100644 --- a/src/test/java/mysql/testPrepareStmt.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testPrepareStmt.java @@ -1,32 +1,32 @@ -package mysql; -/* - * Date: 13-3-25 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TPrepareStmt; -import junit.framework.TestCase; - -public class testPrepareStmt extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "prepare stmnt from 'insert into Dept values(?,?,?,?,?)';"; - assertTrue(sqlparser.parse() == 0); - - TPrepareStmt stmt = (TPrepareStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getStmtName().toString().equalsIgnoreCase("stmnt")); - assertTrue(stmt.getPreparableStmtStr().equalsIgnoreCase("insert into Dept values(?,?,?,?,?)")); - if (stmt.getPreparableStmt() != null){ - assertTrue(stmt.getPreparableStmt().sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insert = (TInsertSqlStatement)stmt.getPreparableStmt(); - assertTrue(insert.getTargetTable().toString().equalsIgnoreCase("Dept")); - assertTrue(insert.getValues().getMultiTarget(0).getColumnList().size() == 5); - } - } - -} +package gudusoft.gsqlparser.mysqlTest; +/* + * Date: 13-3-25 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TInsertSqlStatement; +import gudusoft.gsqlparser.stmt.TPrepareStmt; +import junit.framework.TestCase; + +public class testPrepareStmt extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "prepare stmnt from 'insert into Dept values(?,?,?,?,?)';"; + assertTrue(sqlparser.parse() == 0); + + TPrepareStmt stmt = (TPrepareStmt)sqlparser.sqlstatements.get(0); + assertTrue(stmt.getStmtName().toString().equalsIgnoreCase("stmnt")); + assertTrue(stmt.getPreparableStmtStr().equalsIgnoreCase("insert into Dept values(?,?,?,?,?)")); + if (stmt.getPreparableStmt() != null){ + assertTrue(stmt.getPreparableStmt().sqlstatementtype == ESqlStatementType.sstinsert); + TInsertSqlStatement insert = (TInsertSqlStatement)stmt.getPreparableStmt(); + assertTrue(insert.getTargetTable().toString().equalsIgnoreCase("Dept")); + assertTrue(insert.getValues().getMultiTarget(0).getColumnList().size() == 5); + } + } + +} diff --git a/src/test/java/mysql/testQuoteInLiteral.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testQuoteInLiteral.java similarity index 98% rename from src/test/java/mysql/testQuoteInLiteral.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testQuoteInLiteral.java index b107334a..31013097 100644 --- a/src/test/java/mysql/testQuoteInLiteral.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testQuoteInLiteral.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 12-2-27 */ diff --git a/src/test/java/mysql/testRollupModifier.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testRollupModifier.java similarity index 95% rename from src/test/java/mysql/testRollupModifier.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testRollupModifier.java index b9fff598..033d182e 100644 --- a/src/test/java/mysql/testRollupModifier.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testRollupModifier.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 13-10-29 */ diff --git a/src/test/java/mysql/testSPParameter.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testSPParameter.java similarity index 98% rename from src/test/java/mysql/testSPParameter.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testSPParameter.java index 32c61d29..707a1566 100644 --- a/src/test/java/mysql/testSPParameter.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testSPParameter.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 12-5-7 */ diff --git a/src/test/java/mysql/testSelectModifier.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testSelectModifier.java similarity index 95% rename from src/test/java/mysql/testSelectModifier.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testSelectModifier.java index 070d072d..eed9bf37 100644 --- a/src/test/java/mysql/testSelectModifier.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testSelectModifier.java @@ -1,22 +1,22 @@ -package mysql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSelectModifier extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "select all high_priority straight_join sql_small_result sql_big_result sql_buffer_result sql_no_cache sql_calc_found_rows name from t5;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("name")); - assertTrue(select.getTables().getTable(0).toString().equalsIgnoreCase("t5")); - - } -} +package gudusoft.gsqlparser.mysqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testSelectModifier extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "select all high_priority straight_join sql_small_result sql_big_result sql_buffer_result sql_no_cache sql_calc_found_rows name from t5;"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(select.getResultColumnList().size() == 1); + assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("name")); + assertTrue(select.getTables().getTable(0).toString().equalsIgnoreCase("t5")); + + } +} diff --git a/src/test/java/mysql/testSet.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testSet.java similarity index 99% rename from src/test/java/mysql/testSet.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testSet.java index b993ba3f..2ed1ac49 100644 --- a/src/test/java/mysql/testSet.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testSet.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 13-10-25 */ diff --git a/src/test/java/mysql/testShowIndex.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testShowIndex.java similarity index 96% rename from src/test/java/mysql/testShowIndex.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testShowIndex.java index 912192b1..fe881166 100644 --- a/src/test/java/mysql/testShowIndex.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testShowIndex.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/mysql/testTimestampOnUpdate.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testTimestampOnUpdate.java similarity index 97% rename from src/test/java/mysql/testTimestampOnUpdate.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testTimestampOnUpdate.java index 8cefd1a2..ce52b7ed 100644 --- a/src/test/java/mysql/testTimestampOnUpdate.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testTimestampOnUpdate.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 12-3-30 */ diff --git a/src/test/java/mysql/testTruncateTable.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testTruncateTable.java similarity index 96% rename from src/test/java/mysql/testTruncateTable.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testTruncateTable.java index 2074081f..0fa8e2a8 100644 --- a/src/test/java/mysql/testTruncateTable.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testTruncateTable.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; /* * Date: 13-3-25 */ diff --git a/src/test/java/mysql/testUpdateTargetTable.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testUpdateTargetTable.java similarity index 96% rename from src/test/java/mysql/testUpdateTargetTable.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testUpdateTargetTable.java index 8d2e8c67..ff095362 100644 --- a/src/test/java/mysql/testUpdateTargetTable.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testUpdateTargetTable.java @@ -1,42 +1,42 @@ -package mysql; -/* - * Date: 12-3-9 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TJoinItem; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import junit.framework.TestCase; - -public class testUpdateTargetTable extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "UPDATE table1 a\n" + - " INNER JOIN table2 b ON(a.field0=b.field0)\n" + - " SET a.field1 = 20120221\n" + - " WHERE b.field1 = 'D'\n" + - " AND b.field2 BETWEEN 20120217 and 20120219\n" + - " AND b.field3 != 0"; - assertTrue(sqlparser.parse() == 0); - - TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(updateSqlStatement.getTargetTable().getFullName().equalsIgnoreCase("table1")); - TJoinItem joinItem = updateSqlStatement.joins.getJoin(0).getJoinItems().getJoinItem(0); - assertTrue(joinItem.getJoinType().toString().equalsIgnoreCase("inner")); - assertTrue(joinItem.getTable().toString().equalsIgnoreCase("table2")); - assertTrue(joinItem.getOnCondition().toString().equalsIgnoreCase("(a.field0=b.field0)")); - } - - public void testModifier(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "update low_priority ignore t5 set name='B' where id=1"; - assertTrue(sqlparser.parse() == 0); - - TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(updateSqlStatement.getTargetTable().getFullName().equalsIgnoreCase("t5")); - } - - -} +package gudusoft.gsqlparser.mysqlTest; +/* + * Date: 12-3-9 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TJoinItem; +import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; +import junit.framework.TestCase; + +public class testUpdateTargetTable extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "UPDATE table1 a\n" + + " INNER JOIN table2 b ON(a.field0=b.field0)\n" + + " SET a.field1 = 20120221\n" + + " WHERE b.field1 = 'D'\n" + + " AND b.field2 BETWEEN 20120217 and 20120219\n" + + " AND b.field3 != 0"; + assertTrue(sqlparser.parse() == 0); + + TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(updateSqlStatement.getTargetTable().getFullName().equalsIgnoreCase("table1")); + TJoinItem joinItem = updateSqlStatement.joins.getJoin(0).getJoinItems().getJoinItem(0); + assertTrue(joinItem.getJoinType().toString().equalsIgnoreCase("inner")); + assertTrue(joinItem.getTable().toString().equalsIgnoreCase("table2")); + assertTrue(joinItem.getOnCondition().toString().equalsIgnoreCase("(a.field0=b.field0)")); + } + + public void testModifier(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); + sqlparser.sqltext = "update low_priority ignore t5 set name='B' where id=1"; + assertTrue(sqlparser.parse() == 0); + + TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(updateSqlStatement.getTargetTable().getFullName().equalsIgnoreCase("t5")); + } + + +} diff --git a/src/test/java/mysql/testUseDatabase.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testUseDatabase.java similarity index 93% rename from src/test/java/mysql/testUseDatabase.java rename to src/test/java/gudusoft/gsqlparser/mysqlTest/testUseDatabase.java index d795e49b..d6de31e8 100644 --- a/src/test/java/mysql/testUseDatabase.java +++ b/src/test/java/gudusoft/gsqlparser/mysqlTest/testUseDatabase.java @@ -1,4 +1,4 @@ -package mysql; +package gudusoft.gsqlparser.mysqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/netezza/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testAlterTable.java similarity index 97% rename from src/test/java/netezza/testAlterTable.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testAlterTable.java index 7aaa281d..48bcd5f4 100644 --- a/src/test/java/netezza/testAlterTable.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testAlterTable.java @@ -1,4 +1,4 @@ -package netezza; +package gudusoft.gsqlparser.netezzaTest; /* * Date: 14-7-29 */ diff --git a/src/test/java/netezza/testCTEInCreateView.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInCreateView.java similarity index 99% rename from src/test/java/netezza/testCTEInCreateView.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInCreateView.java index 2b0cd4c3..596a0b81 100644 --- a/src/test/java/netezza/testCTEInCreateView.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInCreateView.java @@ -1,4 +1,4 @@ -package netezza; +package gudusoft.gsqlparser.netezzaTest; /* * Date: 14-10-23 */ diff --git a/src/test/java/netezza/testCTEInInsert.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInInsert.java similarity index 94% rename from src/test/java/netezza/testCTEInInsert.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInInsert.java index 01612927..22562676 100644 --- a/src/test/java/netezza/testCTEInInsert.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInInsert.java @@ -1,9 +1,8 @@ -package netezza; +package gudusoft.gsqlparser.netezzaTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.nodes.TCTE; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; import gudusoft.gsqlparser.stmt.TInsertSqlStatement; import gudusoft.gsqlparser.stmt.TSelectSqlStatement; import junit.framework.TestCase; diff --git a/src/test/java/netezza/testCreateExternalTable.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateExternalTable.java similarity index 96% rename from src/test/java/netezza/testCreateExternalTable.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateExternalTable.java index d2261bc5..9840a20d 100644 --- a/src/test/java/netezza/testCreateExternalTable.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateExternalTable.java @@ -1,24 +1,24 @@ -package netezza; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateExternalTable extends TestCase { - - public void testCreateTable1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (delimiter ',') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("'/export/home/nz/student.csv'")); - assertTrue(createTableSqlStatement.getSubQuery().getTables().getTable(0).getTableName().toString().equalsIgnoreCase("student")); - assertTrue(createTableSqlStatement.getExternalTableOption().getOptionText().equalsIgnoreCase("USING (delimiter ',')")); - } - -} - +package gudusoft.gsqlparser.netezzaTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; +import junit.framework.TestCase; + +public class testCreateExternalTable extends TestCase { + + public void testCreateTable1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); + sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (delimiter ',') AS SELECT * FROM student;"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTableSqlStatement.isExternal()); + assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("'/export/home/nz/student.csv'")); + assertTrue(createTableSqlStatement.getSubQuery().getTables().getTable(0).getTableName().toString().equalsIgnoreCase("student")); + assertTrue(createTableSqlStatement.getExternalTableOption().getOptionText().equalsIgnoreCase("USING (delimiter ',')")); + } + +} + diff --git a/src/test/java/netezza/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateProcedure.java similarity index 97% rename from src/test/java/netezza/testCreateProcedure.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateProcedure.java index 0af69083..3e9a73b5 100644 --- a/src/test/java/netezza/testCreateProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateProcedure.java @@ -1,65 +1,65 @@ -package netezza; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import junit.framework.TestCase; - -public class testCreateProcedure extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_p() RETURNS INT4 LANGUAGE NZPLSQL AS\n" + - " BEGIN_PROC\n" + - " DECLARE\n" + - " words varchar;\n" + - " BEGIN\n" + - " words := 'This string is quoted';\n" + - " -- This comment is the match for below BEGIN_PROC\n" + - " insert into va values ('END_PROC');\n" + - " END;\n" + - " END_PROC;"; - - assertTrue(sqlparser.parse() == 0); - TCreateProcedureStmt createProcedureStmt = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(createProcedureStmt.getProcedureName().toString().equalsIgnoreCase("test_p")); - assertTrue(createProcedureStmt.getReturnDataType().getDataType() == EDataType.int4_t); - assertTrue(createProcedureStmt.getBodyStatements().size() == 2); - assertTrue(createProcedureStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sst_assignstmt); - assertTrue(createProcedureStmt.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstinsert); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE exec_nzplsql_block(text) RETURNS BOOLEAN\n" + - "LANGUAGE NZPLSQL AS\n" + - "BEGIN_PROC\n" + - " DECLARE lRet BOOLEAN;\n" + - " DECLARE sid INTEGER;\n" + - " DECLARE nm varchar;\n" + - " DECLARE cr varchar;\n" + - "BEGIN\n" + - " sid := current_sid;\n" + - " nm := 'any_block' || sid || '()';\n" + - " cr = 'CREATE OR REPLACE PROCEDURE ' || nm ||\n" + - " ' RETURNS BOOL LANGUAGE NZPLSQL AS BEGIN_PROC '\n" + - " || \\$1 || ' END_PROC';\n" + - " EXECUTE IMMEDIATE cr;\n" + - " EXECUTE IMMEDIATE 'SELECT ' || nm;\n" + - " EXECUTE IMMEDIATE 'DROP PROCEDURE ' || nm;\n" + - " RETURN TRUE;\n" + - "END;\n" + - "END_PROC;"; - assertTrue(sqlparser.parse() == 0); - TCreateProcedureStmt createProcedureStmt = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(createProcedureStmt.getProcedureName().toString().equalsIgnoreCase("exec_nzplsql_block")); - assertTrue(createProcedureStmt.getReturnDataType().getDataType() == EDataType.bool_t); - //System.out.println(createProcedureStmt.getReturnDataType().getDataType()); - assertTrue(createProcedureStmt.getBodyStatements().size() == 7); - assertTrue(createProcedureStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sst_assignstmt); - assertTrue(createProcedureStmt.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstplsql_execimmestmt); - //System.out.println(createProcedureStmt.getBodyStatements().get(3).sqlstatementtype); - } -} +package gudusoft.gsqlparser.netezzaTest; + +import gudusoft.gsqlparser.EDataType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; +import junit.framework.TestCase; + +public class testCreateProcedure extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); + sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_p() RETURNS INT4 LANGUAGE NZPLSQL AS\n" + + " BEGIN_PROC\n" + + " DECLARE\n" + + " words varchar;\n" + + " BEGIN\n" + + " words := 'This string is quoted';\n" + + " -- This comment is the match for below BEGIN_PROC\n" + + " insert into va values ('END_PROC');\n" + + " END;\n" + + " END_PROC;"; + + assertTrue(sqlparser.parse() == 0); + TCreateProcedureStmt createProcedureStmt = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); + assertTrue(createProcedureStmt.getProcedureName().toString().equalsIgnoreCase("test_p")); + assertTrue(createProcedureStmt.getReturnDataType().getDataType() == EDataType.int4_t); + assertTrue(createProcedureStmt.getBodyStatements().size() == 2); + assertTrue(createProcedureStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sst_assignstmt); + assertTrue(createProcedureStmt.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstinsert); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); + sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE exec_nzplsql_block(text) RETURNS BOOLEAN\n" + + "LANGUAGE NZPLSQL AS\n" + + "BEGIN_PROC\n" + + " DECLARE lRet BOOLEAN;\n" + + " DECLARE sid INTEGER;\n" + + " DECLARE nm varchar;\n" + + " DECLARE cr varchar;\n" + + "BEGIN\n" + + " sid := current_sid;\n" + + " nm := 'any_block' || sid || '()';\n" + + " cr = 'CREATE OR REPLACE PROCEDURE ' || nm ||\n" + + " ' RETURNS BOOL LANGUAGE NZPLSQL AS BEGIN_PROC '\n" + + " || \\$1 || ' END_PROC';\n" + + " EXECUTE IMMEDIATE cr;\n" + + " EXECUTE IMMEDIATE 'SELECT ' || nm;\n" + + " EXECUTE IMMEDIATE 'DROP PROCEDURE ' || nm;\n" + + " RETURN TRUE;\n" + + "END;\n" + + "END_PROC;"; + assertTrue(sqlparser.parse() == 0); + TCreateProcedureStmt createProcedureStmt = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); + assertTrue(createProcedureStmt.getProcedureName().toString().equalsIgnoreCase("exec_nzplsql_block")); + assertTrue(createProcedureStmt.getReturnDataType().getDataType() == EDataType.bool_t); + //System.out.println(createProcedureStmt.getReturnDataType().getDataType()); + assertTrue(createProcedureStmt.getBodyStatements().size() == 7); + assertTrue(createProcedureStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sst_assignstmt); + assertTrue(createProcedureStmt.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstplsql_execimmestmt); + //System.out.println(createProcedureStmt.getBodyStatements().get(3).sqlstatementtype); + } +} diff --git a/src/test/java/netezza/testDropSchema.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testDropSchema.java similarity index 95% rename from src/test/java/netezza/testDropSchema.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testDropSchema.java index 871246e3..b0eee23a 100644 --- a/src/test/java/netezza/testDropSchema.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testDropSchema.java @@ -1,4 +1,4 @@ -package netezza; +package gudusoft.gsqlparser.netezzaTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/netezza/testExternalTableOption.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testExternalTableOption.java similarity index 99% rename from src/test/java/netezza/testExternalTableOption.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testExternalTableOption.java index d8894a09..31fa1727 100644 --- a/src/test/java/netezza/testExternalTableOption.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testExternalTableOption.java @@ -1,4 +1,4 @@ -package netezza; +package gudusoft.gsqlparser.netezzaTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/netezza/testGenerateStatistics.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testGenerateStatistics.java similarity index 97% rename from src/test/java/netezza/testGenerateStatistics.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testGenerateStatistics.java index f999f0d9..1d0cc9e2 100644 --- a/src/test/java/netezza/testGenerateStatistics.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testGenerateStatistics.java @@ -1,4 +1,4 @@ -package netezza; +package gudusoft.gsqlparser.netezzaTest; /* * Date: 13-11-25 */ diff --git a/src/test/java/netezza/testGroomTable.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testGroomTable.java similarity index 97% rename from src/test/java/netezza/testGroomTable.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testGroomTable.java index 88bbdb42..b5b0917f 100644 --- a/src/test/java/netezza/testGroomTable.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testGroomTable.java @@ -1,4 +1,4 @@ -package netezza; +package gudusoft.gsqlparser.netezzaTest; /* * Date: 13-11-25 */ diff --git a/src/test/java/netezza/testMinusSetToString.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testMinusSetToString.java similarity index 95% rename from src/test/java/netezza/testMinusSetToString.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testMinusSetToString.java index ba7c61af..087719bd 100644 --- a/src/test/java/netezza/testMinusSetToString.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testMinusSetToString.java @@ -1,4 +1,4 @@ -package netezza; +package gudusoft.gsqlparser.netezzaTest; /* * Date: 14-1-8 */ diff --git a/src/test/java/netezza/testSelectFromExternalTable.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testSelectFromExternalTable.java similarity index 97% rename from src/test/java/netezza/testSelectFromExternalTable.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testSelectFromExternalTable.java index 4009ca4a..4c72c62e 100644 --- a/src/test/java/netezza/testSelectFromExternalTable.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testSelectFromExternalTable.java @@ -1,4 +1,4 @@ -package netezza; +package gudusoft.gsqlparser.netezzaTest; /* * Date: 14-2-17 */ diff --git a/src/test/java/netezza/testSetCatalogStmt.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testSetCatalogStmt.java similarity index 93% rename from src/test/java/netezza/testSetCatalogStmt.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testSetCatalogStmt.java index 78754493..38f19120 100644 --- a/src/test/java/netezza/testSetCatalogStmt.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testSetCatalogStmt.java @@ -1,4 +1,4 @@ -package netezza; +package gudusoft.gsqlparser.netezzaTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/netezza/testSetSchemaStmt.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testSetSchemaStmt.java similarity index 93% rename from src/test/java/netezza/testSetSchemaStmt.java rename to src/test/java/gudusoft/gsqlparser/netezzaTest/testSetSchemaStmt.java index 4dec67ee..70a019a3 100644 --- a/src/test/java/netezza/testSetSchemaStmt.java +++ b/src/test/java/gudusoft/gsqlparser/netezzaTest/testSetSchemaStmt.java @@ -1,4 +1,4 @@ -package netezza; +package gudusoft.gsqlparser.netezzaTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/oracle/testAlterMaterializedView.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterMaterializedView.java similarity index 94% rename from src/test/java/oracle/testAlterMaterializedView.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testAlterMaterializedView.java index 94278043..220def10 100644 --- a/src/test/java/oracle/testAlterMaterializedView.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterMaterializedView.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; diff --git a/src/test/java/oracle/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTable.java similarity index 98% rename from src/test/java/oracle/testAlterTable.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTable.java index 92259140..bedd793c 100644 --- a/src/test/java/oracle/testAlterTable.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTable.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 12-1-19 */ diff --git a/src/test/java/oracle/testAlterTrigger.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTrigger.java similarity index 95% rename from src/test/java/oracle/testAlterTrigger.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTrigger.java index aa68deaa..ba059ef3 100644 --- a/src/test/java/oracle/testAlterTrigger.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTrigger.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EAlterTriggerOption; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/oracle/testCall.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCall.java similarity index 94% rename from src/test/java/oracle/testCall.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testCall.java index 081a3476..1251d8ec 100644 --- a/src/test/java/oracle/testCall.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testCall.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 13-10-31 */ diff --git a/src/test/java/oracle/testCallSpec.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCallSpec.java similarity index 98% rename from src/test/java/oracle/testCallSpec.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testCallSpec.java index 2832e382..86d51624 100644 --- a/src/test/java/oracle/testCallSpec.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testCallSpec.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/oracle/testCommentOn.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCommentOn.java similarity index 95% rename from src/test/java/oracle/testCommentOn.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testCommentOn.java index 9fe15778..043b6641 100644 --- a/src/test/java/oracle/testCommentOn.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testCommentOn.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/oracle/testCompoundTrigger.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCompoundTrigger.java similarity index 96% rename from src/test/java/oracle/testCompoundTrigger.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testCompoundTrigger.java index 49a37598..16cdda1c 100644 --- a/src/test/java/oracle/testCompoundTrigger.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testCompoundTrigger.java @@ -1,130 +1,128 @@ -package oracle; - - -import gudusoft.gsqlparser.EAlterTriggerOption; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAlterTriggerStmt; -import gudusoft.gsqlparser.stmt.oracle.TCompoundTriggerBody; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateTrigger; -import junit.framework.TestCase; - -public class testCompoundTrigger extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE OR REPLACE TRIGGER aud_emp\n" + - "FOR INSERT OR UPDATE\n" + - "ON employees\n" + - "COMPOUND TRIGGER\n" + - " \n" + - " TYPE t_emp_changes IS TABLE OF aud_emp%ROWTYPE INDEX BY SIMPLE_INTEGER;\n" + - " v_emp_changes t_emp_changes;\n" + - " \n" + - " v_index SIMPLE_INTEGER := 0;\n" + - " v_threshhold CONSTANT SIMPLE_INTEGER := 1000; --maximum number of rows to write in one go.\n" + - " v_user VARCHAR2(50); --logged in user\n" + - " \n" + - " PROCEDURE flush_logs\n" + - " IS\n" + - " v_updates CONSTANT SIMPLE_INTEGER := v_emp_changes.count();\n" + - " BEGIN\n" + - " \n" + - " FORALL v_count IN 1..v_updates\n" + - " INSERT INTO aud_emp\n" + - " VALUES v_emp_changes(v_count);\n" + - " \n" + - " v_emp_changes.delete();\n" + - " v_index := 0; --resetting threshold for next bulk-insert.\n" + - " \n" + - " END flush_logs;\n" + - " \n" + - " AFTER EACH ROW\n" + - " IS\n" + - " BEGIN\n" + - " \n" + - " IF INSERTING THEN\n" + - " v_index := v_index + 1;\n" + - " v_emp_changes(v_index).upd_dt := SYSDATE;\n" + - " v_emp_changes(v_index).upd_by := SYS_CONTEXT ('USERENV', 'SESSION_USER');\n" + - " v_emp_changes(v_index).emp_id := :NEW.emp_id;\n" + - " v_emp_changes(v_index).action := 'Create';\n" + - " v_emp_changes(v_index).field := '*';\n" + - " v_emp_changes(v_index).from_value := 'NULL';\n" + - " v_emp_changes(v_index).to_value := '*';\n" + - " \n" + - " ELSIF UPDATING THEN\n" + - " IF ( (:OLD.EMP_ID <> :NEW.EMP_ID)\n" + - " OR (:OLD.EMP_ID IS NULL AND :NEW.EMP_ID IS NOT NULL)\n" + - " OR (:OLD.EMP_ID IS NOT NULL AND :NEW.EMP_ID IS NULL)\n" + - " )\n" + - " THEN\n" + - " v_index := v_index + 1;\n" + - " v_emp_changes(v_index).upd_dt := SYSDATE;\n" + - " v_emp_changes(v_index).upd_by := SYS_CONTEXT ('USERENV', 'SESSION_USER');\n" + - " v_emp_changes(v_index).emp_id := :NEW.emp_id;\n" + - " v_emp_changes(v_index).field := 'EMP_ID';\n" + - " v_emp_changes(v_index).from_value := to_char(:OLD.EMP_ID);\n" + - " v_emp_changes(v_index).to_value := to_char(:NEW.EMP_ID);\n" + - " v_emp_changes(v_index).action := 'Update';\n" + - " END IF;\n" + - " \n" + - " IF ( (:OLD.NAME <> :NEW.NAME)\n" + - " OR (:OLD.NAME IS NULL AND :NEW.NAME IS NOT NULL)\n" + - " OR (:OLD.NAME IS NOT NULL AND :NEW.NAME IS NULL)\n" + - " )\n" + - " THEN\n" + - " v_index := v_index + 1;\n" + - " v_emp_changes(v_index).upd_dt := SYSDATE;\n" + - " v_emp_changes(v_index).upd_by := SYS_CONTEXT ('USERENV', 'SESSION_USER');\n" + - " v_emp_changes(v_index).emp_id := :NEW.emp_id;\n" + - " v_emp_changes(v_index).field := 'NAME';\n" + - " v_emp_changes(v_index).from_value := to_char(:OLD.NAME);\n" + - " v_emp_changes(v_index).to_value := to_char(:NEW.NAME);\n" + - " v_emp_changes(v_index).action := 'Update';\n" + - " END IF;\n" + - " \n" + - " IF ( (:OLD.SALARY <> :NEW.SALARY)\n" + - " OR (:OLD.SALARY IS NULL AND :NEW.SALARY IS NOT NULL)\n" + - " OR (:OLD.SALARY IS NOT NULL AND :NEW.SALARY IS NULL)\n" + - " )\n" + - " THEN\n" + - " v_index := v_index + 1;\n" + - " v_emp_changes(v_index).upd_dt := SYSDATE;\n" + - " v_emp_changes(v_index).upd_by := SYS_CONTEXT ('USERENV', 'SESSION_USER');\n" + - " v_emp_changes(v_index).emp_id := :NEW.emp_id;\n" + - " v_emp_changes(v_index).field := 'SALARY';\n" + - " v_emp_changes(v_index).from_value := to_char(:OLD.SALARY);\n" + - " v_emp_changes(v_index).to_value := to_char(:NEW.SALARY);\n" + - " v_emp_changes(v_index).action := 'Update';\n" + - " END IF;\n" + - " \n" + - " END IF;\n" + - " \n" + - " IF v_index >= v_threshhold THEN\n" + - " flush_logs();\n" + - " END IF;\n" + - " \n" + - " END AFTER EACH ROW;\n" + - " \n" + - " -- AFTER STATEMENT Section:\n" + - " AFTER STATEMENT IS\n" + - " BEGIN\n" + - " flush_logs();\n" + - " END AFTER STATEMENT;\n" + - " \n" + - "END aud_emp;\n" + - "/"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateTrigger createTrigger = (TPlsqlCreateTrigger)sqlparser.sqlstatements.get(0); - assertTrue(createTrigger.getTriggerName().toString().equalsIgnoreCase("aud_emp")); - TCompoundTriggerBody compoundTriggerBody = (TCompoundTriggerBody)createTrigger.getTriggerBody(); - //System.out.println(compoundTriggerBody.getDeclareStatements().size()); - //System.out.println(compoundTriggerBody.getTimingPointList().size()); - assertTrue(compoundTriggerBody.getDeclareStatements().size() == 6); - assertTrue(compoundTriggerBody.getTimingPointList().size() == 2); - //assertTrue(); - } -} +package gudusoft.gsqlparser.oracleTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.oracle.TCompoundTriggerBody; +import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateTrigger; +import junit.framework.TestCase; + +public class testCompoundTrigger extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "CREATE OR REPLACE TRIGGER aud_emp\n" + + "FOR INSERT OR UPDATE\n" + + "ON employees\n" + + "COMPOUND TRIGGER\n" + + " \n" + + " TYPE t_emp_changes IS TABLE OF aud_emp%ROWTYPE INDEX BY SIMPLE_INTEGER;\n" + + " v_emp_changes t_emp_changes;\n" + + " \n" + + " v_index SIMPLE_INTEGER := 0;\n" + + " v_threshhold CONSTANT SIMPLE_INTEGER := 1000; --maximum number of rows to write in one go.\n" + + " v_user VARCHAR2(50); --logged in user\n" + + " \n" + + " PROCEDURE flush_logs\n" + + " IS\n" + + " v_updates CONSTANT SIMPLE_INTEGER := v_emp_changes.count();\n" + + " BEGIN\n" + + " \n" + + " FORALL v_count IN 1..v_updates\n" + + " INSERT INTO aud_emp\n" + + " VALUES v_emp_changes(v_count);\n" + + " \n" + + " v_emp_changes.delete();\n" + + " v_index := 0; --resetting threshold for next bulk-insert.\n" + + " \n" + + " END flush_logs;\n" + + " \n" + + " AFTER EACH ROW\n" + + " IS\n" + + " BEGIN\n" + + " \n" + + " IF INSERTING THEN\n" + + " v_index := v_index + 1;\n" + + " v_emp_changes(v_index).upd_dt := SYSDATE;\n" + + " v_emp_changes(v_index).upd_by := SYS_CONTEXT ('USERENV', 'SESSION_USER');\n" + + " v_emp_changes(v_index).emp_id := :NEW.emp_id;\n" + + " v_emp_changes(v_index).action := 'Create';\n" + + " v_emp_changes(v_index).field := '*';\n" + + " v_emp_changes(v_index).from_value := 'NULL';\n" + + " v_emp_changes(v_index).to_value := '*';\n" + + " \n" + + " ELSIF UPDATING THEN\n" + + " IF ( (:OLD.EMP_ID <> :NEW.EMP_ID)\n" + + " OR (:OLD.EMP_ID IS NULL AND :NEW.EMP_ID IS NOT NULL)\n" + + " OR (:OLD.EMP_ID IS NOT NULL AND :NEW.EMP_ID IS NULL)\n" + + " )\n" + + " THEN\n" + + " v_index := v_index + 1;\n" + + " v_emp_changes(v_index).upd_dt := SYSDATE;\n" + + " v_emp_changes(v_index).upd_by := SYS_CONTEXT ('USERENV', 'SESSION_USER');\n" + + " v_emp_changes(v_index).emp_id := :NEW.emp_id;\n" + + " v_emp_changes(v_index).field := 'EMP_ID';\n" + + " v_emp_changes(v_index).from_value := to_char(:OLD.EMP_ID);\n" + + " v_emp_changes(v_index).to_value := to_char(:NEW.EMP_ID);\n" + + " v_emp_changes(v_index).action := 'Update';\n" + + " END IF;\n" + + " \n" + + " IF ( (:OLD.NAME <> :NEW.NAME)\n" + + " OR (:OLD.NAME IS NULL AND :NEW.NAME IS NOT NULL)\n" + + " OR (:OLD.NAME IS NOT NULL AND :NEW.NAME IS NULL)\n" + + " )\n" + + " THEN\n" + + " v_index := v_index + 1;\n" + + " v_emp_changes(v_index).upd_dt := SYSDATE;\n" + + " v_emp_changes(v_index).upd_by := SYS_CONTEXT ('USERENV', 'SESSION_USER');\n" + + " v_emp_changes(v_index).emp_id := :NEW.emp_id;\n" + + " v_emp_changes(v_index).field := 'NAME';\n" + + " v_emp_changes(v_index).from_value := to_char(:OLD.NAME);\n" + + " v_emp_changes(v_index).to_value := to_char(:NEW.NAME);\n" + + " v_emp_changes(v_index).action := 'Update';\n" + + " END IF;\n" + + " \n" + + " IF ( (:OLD.SALARY <> :NEW.SALARY)\n" + + " OR (:OLD.SALARY IS NULL AND :NEW.SALARY IS NOT NULL)\n" + + " OR (:OLD.SALARY IS NOT NULL AND :NEW.SALARY IS NULL)\n" + + " )\n" + + " THEN\n" + + " v_index := v_index + 1;\n" + + " v_emp_changes(v_index).upd_dt := SYSDATE;\n" + + " v_emp_changes(v_index).upd_by := SYS_CONTEXT ('USERENV', 'SESSION_USER');\n" + + " v_emp_changes(v_index).emp_id := :NEW.emp_id;\n" + + " v_emp_changes(v_index).field := 'SALARY';\n" + + " v_emp_changes(v_index).from_value := to_char(:OLD.SALARY);\n" + + " v_emp_changes(v_index).to_value := to_char(:NEW.SALARY);\n" + + " v_emp_changes(v_index).action := 'Update';\n" + + " END IF;\n" + + " \n" + + " END IF;\n" + + " \n" + + " IF v_index >= v_threshhold THEN\n" + + " flush_logs();\n" + + " END IF;\n" + + " \n" + + " END AFTER EACH ROW;\n" + + " \n" + + " -- AFTER STATEMENT Section:\n" + + " AFTER STATEMENT IS\n" + + " BEGIN\n" + + " flush_logs();\n" + + " END AFTER STATEMENT;\n" + + " \n" + + "END aud_emp;\n" + + "/"; + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + TPlsqlCreateTrigger createTrigger = (TPlsqlCreateTrigger)sqlparser.sqlstatements.get(0); + assertTrue(createTrigger.getTriggerName().toString().equalsIgnoreCase("aud_emp")); + TCompoundTriggerBody compoundTriggerBody = (TCompoundTriggerBody)createTrigger.getTriggerBody(); + //System.out.println(compoundTriggerBody.getDeclareStatements().size()); + //System.out.println(compoundTriggerBody.getTimingPointList().size()); + assertTrue(compoundTriggerBody.getDeclareStatements().size() == 6); + assertTrue(compoundTriggerBody.getTimingPointList().size() == 2); + //assertTrue(); + } +} diff --git a/src/test/java/oracle/testCreateFunction.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateFunction.java similarity index 97% rename from src/test/java/oracle/testCreateFunction.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testCreateFunction.java index f172de8f..4e14539d 100644 --- a/src/test/java/oracle/testCreateFunction.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateFunction.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 13-3-27 */ diff --git a/src/test/java/oracle/testCreateLibrary.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateLibrary.java similarity index 97% rename from src/test/java/oracle/testCreateLibrary.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testCreateLibrary.java index ace3ca18..5fd7cd71 100644 --- a/src/test/java/oracle/testCreateLibrary.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateLibrary.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/oracle/testCreateMaterializedView.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateMaterializedView.java similarity index 98% rename from src/test/java/oracle/testCreateMaterializedView.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testCreateMaterializedView.java index 112606d7..bfb90d7a 100644 --- a/src/test/java/oracle/testCreateMaterializedView.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateMaterializedView.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/oracle/testCreatePackage.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreatePackage.java similarity index 94% rename from src/test/java/oracle/testCreatePackage.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testCreatePackage.java index d6bf1ac6..d51a549a 100644 --- a/src/test/java/oracle/testCreatePackage.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreatePackage.java @@ -1,9 +1,7 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import gudusoft.gsqlparser.stmt.oracle.TOracleCreateLibraryStmt; import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateFunction; import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreatePackage; import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; diff --git a/src/test/java/oracle/testCreateTableResultCache.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateTableResultCache.java similarity index 97% rename from src/test/java/oracle/testCreateTableResultCache.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testCreateTableResultCache.java index fa40b764..82177602 100644 --- a/src/test/java/oracle/testCreateTableResultCache.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateTableResultCache.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/oracle/testCreateView.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateView.java similarity index 96% rename from src/test/java/oracle/testCreateView.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testCreateView.java index f077ebf7..dc5eed7b 100644 --- a/src/test/java/oracle/testCreateView.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateView.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ERestrictionType; diff --git a/src/test/java/oracle/testDatabaseLink.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testDatabaseLink.java similarity index 98% rename from src/test/java/oracle/testDatabaseLink.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testDatabaseLink.java index f537ea0d..dba857df 100644 --- a/src/test/java/oracle/testDatabaseLink.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testDatabaseLink.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; @@ -8,7 +8,6 @@ import gudusoft.gsqlparser.stmt.TInsertSqlStatement; import gudusoft.gsqlparser.stmt.TSelectSqlStatement; import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; -import gudusoft.gsqlparser.stmt.sybase.TSybaseDeleteStatistics; import junit.framework.TestCase; diff --git a/src/test/java/oracle/testDatatype.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testDatatype.java similarity index 97% rename from src/test/java/oracle/testDatatype.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testDatatype.java index e1776881..952ecf96 100644 --- a/src/test/java/oracle/testDatatype.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testDatatype.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 13-9-3 */ diff --git a/src/test/java/oracle/testErrorLoggingClause.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testErrorLoggingClause.java similarity index 96% rename from src/test/java/oracle/testErrorLoggingClause.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testErrorLoggingClause.java index 8233b72e..31fc0f5c 100644 --- a/src/test/java/oracle/testErrorLoggingClause.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testErrorLoggingClause.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/oracle/testExecImmediate.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testExecImmediate.java similarity index 98% rename from src/test/java/oracle/testExecImmediate.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testExecImmediate.java index 7737243c..a7b489d8 100644 --- a/src/test/java/oracle/testExecImmediate.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testExecImmediate.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 14-6-20 */ diff --git a/src/test/java/oracle/testExecuteProcedure.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testExecuteProcedure.java similarity index 96% rename from src/test/java/oracle/testExecuteProcedure.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testExecuteProcedure.java index 32bdca87..4df700c8 100644 --- a/src/test/java/oracle/testExecuteProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testExecuteProcedure.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 12-5-6 */ diff --git a/src/test/java/oracle/testExplainPlan.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testExplainPlan.java similarity index 97% rename from src/test/java/oracle/testExplainPlan.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testExplainPlan.java index 0273ed90..7d4e2208 100644 --- a/src/test/java/oracle/testExplainPlan.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testExplainPlan.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 13-2-1 */ @@ -8,7 +8,6 @@ import gudusoft.gsqlparser.EExpressionType; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TMultiTargetList; import gudusoft.gsqlparser.nodes.TResultColumn; import gudusoft.gsqlparser.stmt.TSelectSqlStatement; import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; diff --git a/src/test/java/oracle/testGetRawstatements.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testGetRawstatements.java similarity index 94% rename from src/test/java/oracle/testGetRawstatements.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testGetRawstatements.java index 522c03eb..6853f2be 100644 --- a/src/test/java/oracle/testGetRawstatements.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testGetRawstatements.java @@ -1,29 +1,29 @@ -package oracle; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testGetRawstatements extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE TABLE myTable\n" + - "(\n" + - " Col1 int\n" + - ")\n" + - "\n" + - "INSERT INTO myTable (Col1)\n" + - "SELECT Something\n" + - " FROM Somewhere;\n" + - "\n" + - "SELECT Col1\n" + - " FROM myTable\n"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 3); - } - - -} - +package gudusoft.gsqlparser.oracleTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import junit.framework.TestCase; + +public class testGetRawstatements extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "CREATE TABLE myTable\n" + + "(\n" + + " Col1 int\n" + + ")\n" + + "\n" + + "INSERT INTO myTable (Col1)\n" + + "SELECT Something\n" + + " FROM Somewhere;\n" + + "\n" + + "SELECT Col1\n" + + " FROM myTable\n"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.size() == 3); + } + + +} + diff --git a/src/test/java/oracle/testInExpr.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testInExpr.java similarity index 98% rename from src/test/java/oracle/testInExpr.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testInExpr.java index 45916882..77d269d8 100644 --- a/src/test/java/oracle/testInExpr.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testInExpr.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 11-7-10 */ diff --git a/src/test/java/oracle/testInsertMultiTable.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testInsertMultiTable.java similarity index 99% rename from src/test/java/oracle/testInsertMultiTable.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testInsertMultiTable.java index f3398f11..1673baa4 100644 --- a/src/test/java/oracle/testInsertMultiTable.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testInsertMultiTable.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 12-5-11 */ diff --git a/src/test/java/oracle/testInvokerRights.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testInvokerRights.java similarity index 95% rename from src/test/java/oracle/testInvokerRights.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testInvokerRights.java index 3e643210..c9b78ba5 100644 --- a/src/test/java/oracle/testInvokerRights.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testInvokerRights.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 13-2-8 */ diff --git a/src/test/java/oracle/testListAggOverflow.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testListAggOverflow.java similarity index 86% rename from src/test/java/oracle/testListAggOverflow.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testListAggOverflow.java index 324195b9..992c6f09 100644 --- a/src/test/java/oracle/testListAggOverflow.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testListAggOverflow.java @@ -1,43 +1,39 @@ -package oracle; - -import common.testCoordinates; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TCaseExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.nodes.TParseTreeVisitor; -import gudusoft.gsqlparser.nodes.oracle.TListaggOverflow; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testListAggOverflow extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT department_id \"Dept.\",\n" + - " LISTAGG(last_name, '; ' ON OVERFLOW TRUNCATE '...')\n" + - " WITHIN GROUP (ORDER BY hire_date) \"Employees\"\n" + - " FROM employees"; - assertTrue(sqlparser.parse() == 0); - - functionVisitor fv = new functionVisitor(); - sqlparser.sqlstatements.get(0).acceptChildren(fv); - - } - - class functionVisitor extends TParseTreeVisitor { - - public void preVisit(TFunctionCall functionCall) { - if (functionCall.getFunctionName().toString().equalsIgnoreCase("LISTAGG")) { - TListaggOverflow listaggOverflow = functionCall.getListaggOverflow(); - assertTrue(listaggOverflow.getOn_overflow_type() == TListaggOverflow.ON_OVERFLOW_TRUNCATE); - assertTrue(listaggOverflow.getTruncation_indicator().toString().equalsIgnoreCase("'...'")); - assertTrue(!listaggOverflow.isWithCount()); - assertTrue(!listaggOverflow.isWithoutCount()); - - } - } - } -} +package gudusoft.gsqlparser.oracleTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TFunctionCall; +import gudusoft.gsqlparser.nodes.TParseTreeVisitor; +import gudusoft.gsqlparser.nodes.oracle.TListaggOverflow; +import junit.framework.TestCase; + +public class testListAggOverflow extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + sqlparser.sqltext = "SELECT department_id \"Dept.\",\n" + + " LISTAGG(last_name, '; ' ON OVERFLOW TRUNCATE '...')\n" + + " WITHIN GROUP (ORDER BY hire_date) \"Employees\"\n" + + " FROM employees"; + assertTrue(sqlparser.parse() == 0); + + functionVisitor fv = new functionVisitor(); + sqlparser.sqlstatements.get(0).acceptChildren(fv); + + } + + class functionVisitor extends TParseTreeVisitor { + + public void preVisit(TFunctionCall functionCall) { + if (functionCall.getFunctionName().toString().equalsIgnoreCase("LISTAGG")) { + TListaggOverflow listaggOverflow = functionCall.getListaggOverflow(); + assertTrue(listaggOverflow.getOn_overflow_type() == TListaggOverflow.ON_OVERFLOW_TRUNCATE); + assertTrue(listaggOverflow.getTruncation_indicator().toString().equalsIgnoreCase("'...'")); + assertTrue(!listaggOverflow.isWithCount()); + assertTrue(!listaggOverflow.isWithoutCount()); + + } + } + } +} diff --git a/src/test/java/oracle/testMaterializedView.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testMaterializedView.java similarity index 94% rename from src/test/java/oracle/testMaterializedView.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testMaterializedView.java index a2117a7c..21aea9e5 100644 --- a/src/test/java/oracle/testMaterializedView.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testMaterializedView.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/oracle/testMergeInPlsql.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testMergeInPlsql.java similarity index 97% rename from src/test/java/oracle/testMergeInPlsql.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testMergeInPlsql.java index 97c9f05f..a4bc1411 100644 --- a/src/test/java/oracle/testMergeInPlsql.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testMergeInPlsql.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 13-1-16 */ diff --git a/src/test/java/oracle/testMethodCall.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testMethodCall.java similarity index 96% rename from src/test/java/oracle/testMethodCall.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testMethodCall.java index 3614b632..a1297cd8 100644 --- a/src/test/java/oracle/testMethodCall.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testMethodCall.java @@ -1,11 +1,10 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.EExpressionType; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; import gudusoft.gsqlparser.nodes.TObjectName; import gudusoft.gsqlparser.stmt.TAssignStmt; import gudusoft.gsqlparser.stmt.TCommonBlock; diff --git a/src/test/java/oracle/testNamedParameter.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testNamedParameter.java similarity index 95% rename from src/test/java/oracle/testNamedParameter.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testNamedParameter.java index 7d025c63..0a044dcd 100644 --- a/src/test/java/oracle/testNamedParameter.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testNamedParameter.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/oracle/testNaturalJoin.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testNaturalJoin.java similarity index 95% rename from src/test/java/oracle/testNaturalJoin.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testNaturalJoin.java index c46eacf6..27a625e5 100644 --- a/src/test/java/oracle/testNaturalJoin.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testNaturalJoin.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/oracle/testNewConstructor.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testNewConstructor.java similarity index 97% rename from src/test/java/oracle/testNewConstructor.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testNewConstructor.java index 0d939590..9f880a17 100644 --- a/src/test/java/oracle/testNewConstructor.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testNewConstructor.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.EExpressionType; diff --git a/src/test/java/oracle/testObjectAccess.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testObjectAccess.java similarity index 97% rename from src/test/java/oracle/testObjectAccess.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testObjectAccess.java index 41ee35a8..c7e311a6 100644 --- a/src/test/java/oracle/testObjectAccess.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testObjectAccess.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 12-11-1 */ diff --git a/src/test/java/oracle/testOffsetClause.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testOffsetClause.java similarity index 96% rename from src/test/java/oracle/testOffsetClause.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testOffsetClause.java index d258a70b..54cc9175 100644 --- a/src/test/java/oracle/testOffsetClause.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testOffsetClause.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/oracle/testPivot.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testPivot.java similarity index 98% rename from src/test/java/oracle/testPivot.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testPivot.java index 87f74a59..91135926 100644 --- a/src/test/java/oracle/testPivot.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testPivot.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 13-1-12 */ diff --git a/src/test/java/oracle/testRDBMSPackageCall.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testRDBMSPackageCall.java similarity index 95% rename from src/test/java/oracle/testRDBMSPackageCall.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testRDBMSPackageCall.java index e6fbdae0..e7a204c7 100644 --- a/src/test/java/oracle/testRDBMSPackageCall.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testRDBMSPackageCall.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/oracle/testRestrictionClause.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testRestrictionClause.java similarity index 96% rename from src/test/java/oracle/testRestrictionClause.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testRestrictionClause.java index 0936e3b9..40acd646 100644 --- a/src/test/java/oracle/testRestrictionClause.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testRestrictionClause.java @@ -1,4 +1,4 @@ -package oracle; +package gudusoft.gsqlparser.oracleTest; /* * Date: 13-5-16 */ diff --git a/src/test/java/oracle/testSequence.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testSequence.java similarity index 95% rename from src/test/java/oracle/testSequence.java rename to src/test/java/gudusoft/gsqlparser/oracleTest/testSequence.java index c541eab5..9a35d67e 100644 --- a/src/test/java/oracle/testSequence.java +++ b/src/test/java/gudusoft/gsqlparser/oracleTest/testSequence.java @@ -1,29 +1,29 @@ -package oracle; -/* - * Date: 11-6-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TSequenceOption; -import gudusoft.gsqlparser.stmt.TCreateSequenceStmt; -import junit.framework.TestCase; - -public class testSequence extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE SEQUENCE SOME_SEQ increment by 1 start with 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE NOCACHE NOORDER;"; - assertTrue(sqlparser.parse() == 0); - - TCreateSequenceStmt sequenceStmt = (TCreateSequenceStmt)sqlparser.sqlstatements.get(0); - assertTrue(sequenceStmt.getSequenceName().toString().equalsIgnoreCase("SOME_SEQ")); - for(int i=0;i>\n" + - "DECLARE\n" + - " quantity integer := 30;\n" + - "BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30\n" + - " quantity := 50;\n" + - " --\n" + - " -- Create a subblock\n" + - " --\n" + - " DECLARE\n" + - " quantity integer := 80;\n" + - " BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80\n" + - " RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50\n" + - " END;\n" + - "\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50\n" + - "\n" + - " RETURN quantity;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("somefunc")); - assertTrue(createFunction.getDeclareStatements().size() == 1); - TVarDeclStmt declareVariable = (TVarDeclStmt)createFunction.getDeclareStatements().get(0); - assertTrue(declareVariable.getElementName().toString().equalsIgnoreCase("quantity")); - assertTrue(createFunction.getBodyStatements().size()==5); - } - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION sales_tax(subtotal int) RETURNS real AS $$\n" + - "BEGIN\n" + - " RETURN subtotal * 0.06;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql; "; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("sales_tax")); - assertTrue(createFunction.getParameterDeclarations().size() == 1); - TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("subtotal")); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.real_t); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); - } - - public void testReturnTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION extended_sales(p_itemno int)\n" + - "RETURNS TABLE(quantity int, total numeric) AS $$\n" + - "BEGIN\n" + - "RETURN QUERY SELECT quantity, quantity\n" + - "*\n" + - "price FROM sales\n" + - "WHERE itemno = p_itemno;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("extended_sales")); - TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("p_itemno")); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(createFunction.getReturnMode() == TBaseType.function_return_table); - TTableElementList tls = createFunction.getReturnTableDefinitions(); - assertTrue(tls.size() == 2); - - TColumnDefinition cd = tls.getTableElement(0).getColumnDefinition(); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("quantity")); - assertTrue(cd.getDatatype().getDataType() == EDataType.int_t); - - cd = tls.getTableElement(1).getColumnDefinition(); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("total")); - assertTrue(cd.getDatatype().getDataType() == EDataType.numeric_t); - - } - - - public void testDropTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION ibis_speedtestci_tmp.create_speedtest_marketshare_by_month_poa()\n" + - " RETURNS void\n" + - " LANGUAGE plpgsql\n" + - "AS $function$\n" + - "\n" + - "DECLARE\n" + - "begin\n" + - "\n" + - "drop table if exists ibis_speedtestci_tmp.speedtest_marketshare_by_month_poa;\n" + - "create table ibis_speedtestci_tmp.speedtest_marketshare_by_month_poa\n" + - "as\n" + - "(\n" + - "select date, postcode as postcode, network_operator_name, count(device_id) as unique_share\n" + - "from (\n" + - " select postcode, network_operator_name, device_id, date_trunc('month', test_date) as date\n" + - " from ibis_speedtestci_raw.st_combined, ibis_admin_bdys_201811_raw.postcode_bdys_display\n" + - " where device_id != 0\n" + - " and sim_network_operator_code_a IS NOT NULL\n" + - " and sim_network_operator_code_a like '505__'\n" + - " and ST_Intersects(postcode_bdys_display.geom, st_combined.geom)\n" + - " group by postcode, network_operator_name, device_id, date_trunc('month', test_date)\n" + - ") as st_combined\n" + - "group by date, postcode, network_operator_name\n" + - ");\n" + - "\n" + - "END;\n" + - "\n" + - "$function$"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("ibis_speedtestci_tmp.create_speedtest_marketshare_by_month_poa")); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); - assertTrue(createFunction.getBodyStatements().size()==2); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstdroptable); - } - - public void testIntoVariable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE function \n" + - " totalrecords (emp_id INT) returns INTEGER \n" + - "AS \n" + - " $total$ \n" + - " DECLARE total INTEGER;\n" + - " BEGIN \n" + - " SELECT total_sal \n" + - " INTO total \n" + - " FROM employee emp \n" + - " WHERE emp.employee_id = emp_id;\n" + - " RETURN total;\n" + - " END;\n" + - " \n" + - " $total$ language plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("totalrecords")); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); - - assertTrue(createFunction.getBodyStatements().size() == 2); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - TIntoClause intoClause = selectSqlStatement.getIntoClause(); - // System.out.println(intoClause.getExprList().getExpression(0).getExpressionType()); - //assertTrue(intoClause.getExprList().getExpression(0).getExpressionType() == EExpressionType.simple_object_name_t); - TObjectName variableName = intoClause.getVariableList().getObjectName(0); - assertTrue(variableName.getDbObjectType() == EDbObjectType.variable); - } - - public void testCreateFunction1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION test_data_it.function3(double precision, double precision)\n" + - " RETURNS double precision\n" + - " LANGUAGE sql\n" + - " STABLE\n" + - "AS $function$\n" + - " select case when $1 > $2 then $1\n" + - " else $2\n" + - " end\n" + - "$function$"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("test_data_it.function3")); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("sql")); - - assertTrue(createFunction.getBodyStatements().size() == 1); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - TExpression expr = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.case_t); - TCaseExpression caseExpression = expr.getCaseExpression(); - - assertTrue(caseExpression.getElse_expr().toString().equalsIgnoreCase("$2")); - } - -} - - +package gudusoft.gsqlparser.postgresqlTest; +/* + * Date: 13-11-29 + */ + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import gudusoft.gsqlparser.stmt.*; +import junit.framework.TestCase; + +public class testCreateFunction extends TestCase { + + public void testStmtToString(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE +"java/postgresql/create_function_big_proc.sql"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("intf_crm.p_crm_cust_lbl_smy")); +// assertTrue(createFunction.getParameterDeclarations().size() == 2); +// TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createFunction.getParameterDeclarations().getParameterDeclarationItem(0); +// assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("a")); +// assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.bigint_t); +// assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.boolean_t); +// assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpython3u")); + } + + + public void testLanguagePython(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE OR REPLACE FUNCTION public.s2_cellid_contains(a bigint, b bigint)\n" + + " RETURNS boolean\n" + + " LANGUAGE plpython3u\n" + + " IMMUTABLE STRICT\n" + + "AS $function$\n" + + " import s2sphere\n" + + " id_a = s2sphere.CellId(int.from_bytes(a.to_bytes(8, 'big', signed=True), 'big', signed=False))\n" + + " id_b = s2sphere.CellId(int.from_bytes(b.to_bytes(8, 'big', signed=True), 'big', signed=False))\n" + + " return id_a.contains(id_b)\n" + + "$function$"; + // System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("public.s2_cellid_contains")); + assertTrue(createFunction.getParameterDeclarations().size() == 2); + TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createFunction.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("a")); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.bigint_t); + assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.boolean_t); + assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpython3u")); + } + + public void testDeclare(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE FUNCTION somefunc() RETURNS integer AS $$\n" + + "<< outerblock >>\n" + + "DECLARE\n" + + " quantity integer := 30;\n" + + "BEGIN\n" + + " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30\n" + + " quantity := 50;\n" + + " --\n" + + " -- Create a subblock\n" + + " --\n" + + " DECLARE\n" + + " quantity integer := 80;\n" + + " BEGIN\n" + + " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80\n" + + " RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50\n" + + " END;\n" + + "\n" + + " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50\n" + + "\n" + + " RETURN quantity;\n" + + "END;\n" + + "$$ LANGUAGE plpgsql;"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("somefunc")); + assertTrue(createFunction.getDeclareStatements().size() == 1); + TVarDeclStmt declareVariable = (TVarDeclStmt)createFunction.getDeclareStatements().get(0); + assertTrue(declareVariable.getElementName().toString().equalsIgnoreCase("quantity")); + assertTrue(createFunction.getBodyStatements().size()==5); + } + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE FUNCTION sales_tax(subtotal int) RETURNS real AS $$\n" + + "BEGIN\n" + + " RETURN subtotal * 0.06;\n" + + "END;\n" + + "$$ LANGUAGE plpgsql; "; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("sales_tax")); + assertTrue(createFunction.getParameterDeclarations().size() == 1); + TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createFunction.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("subtotal")); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); + assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.real_t); + assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); + } + + public void testReturnTable(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE FUNCTION extended_sales(p_itemno int)\n" + + "RETURNS TABLE(quantity int, total numeric) AS $$\n" + + "BEGIN\n" + + "RETURN QUERY SELECT quantity, quantity\n" + + "*\n" + + "price FROM sales\n" + + "WHERE itemno = p_itemno;\n" + + "END;\n" + + "$$ LANGUAGE plpgsql;"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("extended_sales")); + TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createFunction.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("p_itemno")); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); + assertTrue(createFunction.getReturnMode() == TBaseType.function_return_table); + TTableElementList tls = createFunction.getReturnTableDefinitions(); + assertTrue(tls.size() == 2); + + TColumnDefinition cd = tls.getTableElement(0).getColumnDefinition(); + assertTrue(cd.getColumnName().toString().equalsIgnoreCase("quantity")); + assertTrue(cd.getDatatype().getDataType() == EDataType.int_t); + + cd = tls.getTableElement(1).getColumnDefinition(); + assertTrue(cd.getColumnName().toString().equalsIgnoreCase("total")); + assertTrue(cd.getDatatype().getDataType() == EDataType.numeric_t); + + } + + + public void testDropTable(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE OR REPLACE FUNCTION ibis_speedtestci_tmp.create_speedtest_marketshare_by_month_poa()\n" + + " RETURNS void\n" + + " LANGUAGE plpgsql\n" + + "AS $function$\n" + + "\n" + + "DECLARE\n" + + "begin\n" + + "\n" + + "drop table if exists ibis_speedtestci_tmp.speedtest_marketshare_by_month_poa;\n" + + "create table ibis_speedtestci_tmp.speedtest_marketshare_by_month_poa\n" + + "as\n" + + "(\n" + + "select date, postcode as postcode, network_operator_name, count(device_id) as unique_share\n" + + "from (\n" + + " select postcode, network_operator_name, device_id, date_trunc('month', test_date) as date\n" + + " from ibis_speedtestci_raw.st_combined, ibis_admin_bdys_201811_raw.postcode_bdys_display\n" + + " where device_id != 0\n" + + " and sim_network_operator_code_a IS NOT NULL\n" + + " and sim_network_operator_code_a like '505__'\n" + + " and ST_Intersects(postcode_bdys_display.geom, st_combined.geom)\n" + + " group by postcode, network_operator_name, device_id, date_trunc('month', test_date)\n" + + ") as st_combined\n" + + "group by date, postcode, network_operator_name\n" + + ");\n" + + "\n" + + "END;\n" + + "\n" + + "$function$"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("ibis_speedtestci_tmp.create_speedtest_marketshare_by_month_poa")); + assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); + assertTrue(createFunction.getBodyStatements().size()==2); + assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstdroptable); + } + + public void testIntoVariable(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE OR REPLACE function \n" + + " totalrecords (emp_id INT) returns INTEGER \n" + + "AS \n" + + " $total$ \n" + + " DECLARE total INTEGER;\n" + + " BEGIN \n" + + " SELECT total_sal \n" + + " INTO total \n" + + " FROM employee emp \n" + + " WHERE emp.employee_id = emp_id;\n" + + " RETURN total;\n" + + " END;\n" + + " \n" + + " $total$ language plpgsql;"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("totalrecords")); + assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); + + assertTrue(createFunction.getBodyStatements().size() == 2); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); + TIntoClause intoClause = selectSqlStatement.getIntoClause(); + // System.out.println(intoClause.getExprList().getExpression(0).getExpressionType()); + //assertTrue(intoClause.getExprList().getExpression(0).getExpressionType() == EExpressionType.simple_object_name_t); + TObjectName variableName = intoClause.getVariableList().getObjectName(0); + assertTrue(variableName.getDbObjectType() == EDbObjectType.variable); + } + + public void testCreateFunction1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE OR REPLACE FUNCTION test_data_it.function3(double precision, double precision)\n" + + " RETURNS double precision\n" + + " LANGUAGE sql\n" + + " STABLE\n" + + "AS $function$\n" + + " select case when $1 > $2 then $1\n" + + " else $2\n" + + " end\n" + + "$function$"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("test_data_it.function3")); + assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("sql")); + + assertTrue(createFunction.getBodyStatements().size() == 1); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); + TExpression expr = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.case_t); + TCaseExpression caseExpression = expr.getCaseExpression(); + + assertTrue(caseExpression.getElse_expr().toString().equalsIgnoreCase("$2")); + } + +} + + diff --git a/src/test/java/postgresql/testCreateFunction2.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateFunction2.java similarity index 84% rename from src/test/java/postgresql/testCreateFunction2.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateFunction2.java index d8c23ac2..308c9361 100644 --- a/src/test/java/postgresql/testCreateFunction2.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateFunction2.java @@ -1,29 +1,30 @@ -package postgresql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testCreateFunction2 extends TestCase { - - public void testStmtToString(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqlfilename = common.gspCommon.BASE_SQL_DIR_PRIVATE +"java/postgresql/create_function_big_proc.sql"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("intf_crm.p_crm_cust_lbl_smy")); - assertTrue(createFunction.getDeclareStatements().size() == 36); - assertTrue(createFunction.getBodyStatements().size() == 119); -// int i=0,j=0; -// for(TCustomSqlStatement sql:createFunction.getBodyStatements()){ -// i++; -// if (sql.toString() == null){ -// j++; -// System.out.println(j+":"+i+sql.sqlstatementtype+"\t"+sql.getStartToken().lineNo); -// } -// //System.out.println(sql.toString()); -// } - } -} +package gudusoft.gsqlparser.postgresqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.stmt.*; +import junit.framework.TestCase; + +public class testCreateFunction2 extends TestCase { + + public void testStmtToString(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE +"java/postgresql/create_function_big_proc.sql"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("intf_crm.p_crm_cust_lbl_smy")); + assertTrue(createFunction.getDeclareStatements().size() == 36); + assertTrue(createFunction.getBodyStatements().size() == 119); +// int i=0,j=0; +// for(TCustomSqlStatement sql:createFunction.getBodyStatements()){ +// i++; +// if (sql.toString() == null){ +// j++; +// System.out.println(j+":"+i+sql.sqlstatementtype+"\t"+sql.getStartToken().lineNo); +// } +// //System.out.println(sql.toString()); +// } + } +} diff --git a/src/test/java/postgresql/testCreateIndex.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateIndex.java similarity index 94% rename from src/test/java/postgresql/testCreateIndex.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateIndex.java index 786284bb..8c4f9bab 100644 --- a/src/test/java/postgresql/testCreateIndex.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateIndex.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 11-6-22 */ diff --git a/src/test/java/postgresql/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateProcedure.java similarity index 96% rename from src/test/java/postgresql/testCreateProcedure.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateProcedure.java index 8b480400..6ecbf642 100644 --- a/src/test/java/postgresql/testCreateProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateProcedure.java @@ -1,68 +1,67 @@ -package postgresql; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.TCallStatement; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testCreateProcedure extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE transfer(INT, INT, DEC)\n" + - "LANGUAGE plpgsql\n" + - "AS $$\n" + - "BEGIN\n" + - "UPDATE accounts\n" + - " SET balance = balance - $3\n" + - " WHERE id = $1;\n" + - "\n" + - " COMMIT;\n" + - "END;\n" + - "$$;"; - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("transfer")); - assertTrue(createProcedure.getParameterDeclarations().size() == 3); - TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(createProcedure.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); - - assertTrue(createProcedure.getBodyStatements().size() == 2); - TUpdateSqlStatement update = (TUpdateSqlStatement)createProcedure.getBodyStatements().get(0); - assertTrue(update.getTargetTable().toString().equalsIgnoreCase("accounts")); - - //assertTrue(createProcedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstcommit); - //System.out.print(createProcedure.getBodyStatements().get(1).sqlstatementtype ); - } - - public void testCall(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE public.test1()\n" + - "AS $$\n" + - "DECLARE\n" + - " rec_JOB_BATCH RECORD;\n" + - "begin\n" + - " call public.test1();\n" + - "END;\n" + - "$$ LANGUAGE plpgsql\n" + - "SECURITY INVOKER;"; - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("public.test1")); - - assertTrue(createProcedure.getBodyStatements().size() == 1); - assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstcall); - TCallStatement callStatement = (TCallStatement)createProcedure.getBodyStatements().get(0); - assertTrue(callStatement.getRoutineName().toString().equalsIgnoreCase("public.test1")); - //System.out.print(createProcedure.getBodyStatements().get(0).sqlstatementtype ); - } -} +package gudusoft.gsqlparser.postgresqlTest; + +import gudusoft.gsqlparser.EDataType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TParameterDeclaration; +import gudusoft.gsqlparser.stmt.TCallStatement; +import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; +import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; +import junit.framework.TestCase; + +public class testCreateProcedure extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE transfer(INT, INT, DEC)\n" + + "LANGUAGE plpgsql\n" + + "AS $$\n" + + "BEGIN\n" + + "UPDATE accounts\n" + + " SET balance = balance - $3\n" + + " WHERE id = $1;\n" + + "\n" + + " COMMIT;\n" + + "END;\n" + + "$$;"; + assertTrue(sqlparser.parse() == 0); + + TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("transfer")); + assertTrue(createProcedure.getParameterDeclarations().size() == 3); + TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); + assertTrue(createProcedure.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); + + assertTrue(createProcedure.getBodyStatements().size() == 2); + TUpdateSqlStatement update = (TUpdateSqlStatement)createProcedure.getBodyStatements().get(0); + assertTrue(update.getTargetTable().toString().equalsIgnoreCase("accounts")); + + //assertTrue(createProcedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstcommit); + //System.out.print(createProcedure.getBodyStatements().get(1).sqlstatementtype ); + } + + public void testCall(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE public.test1()\n" + + "AS $$\n" + + "DECLARE\n" + + " rec_JOB_BATCH RECORD;\n" + + "begin\n" + + " call public.test1();\n" + + "END;\n" + + "$$ LANGUAGE plpgsql\n" + + "SECURITY INVOKER;"; + assertTrue(sqlparser.parse() == 0); + + TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("public.test1")); + + assertTrue(createProcedure.getBodyStatements().size() == 1); + assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstcall); + TCallStatement callStatement = (TCallStatement)createProcedure.getBodyStatements().get(0); + assertTrue(callStatement.getRoutineName().toString().equalsIgnoreCase("public.test1")); + //System.out.print(createProcedure.getBodyStatements().get(0).sqlstatementtype ); + } +} diff --git a/src/test/java/postgresql/testCreateTrigger.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateTrigger.java similarity index 96% rename from src/test/java/postgresql/testCreateTrigger.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateTrigger.java index 0be1e620..2b80d3e7 100644 --- a/src/test/java/postgresql/testCreateTrigger.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateTrigger.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-5 */ diff --git a/src/test/java/postgresql/testCreateView.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateView.java similarity index 98% rename from src/test/java/postgresql/testCreateView.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateView.java index 4c01ecc4..1b1f3e7a 100644 --- a/src/test/java/postgresql/testCreateView.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateView.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-10-22 */ diff --git a/src/test/java/postgresql/testDatatype.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDatatype.java similarity index 97% rename from src/test/java/postgresql/testDatatype.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testDatatype.java index f1b2645d..503ce22f 100644 --- a/src/test/java/postgresql/testDatatype.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDatatype.java @@ -1,151 +1,151 @@ -package postgresql; -/* - * Date: 13-6-14 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.EExpressionType.unary_minus_t; - -public class testDatatype extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE \"table1\" (\n" + - " \"column2\" date\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getDatatype().getDataType() == EDataType.date_t); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE \"table1\" (\n" + - " \"column1\" numeric(5,2)\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getDatatype().getDataType() == EDataType.numeric_t); - assertTrue(cd.getDatatype().getPrecision().toString().equalsIgnoreCase("5")); - assertTrue(cd.getDatatype().getScale().toString().equalsIgnoreCase("2")); - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE Flights\n" + - "(\n" + - " DEPART_TIME TIME,\n" + - " ID SERIAL\n" + - ")"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getDatatype().getDataType() == EDataType.time_t); - - cd = createTable.getColumnList().getColumn(1); - assertTrue(cd.getDatatype().getDataType() == EDataType.serial_t); - } - - public void test31(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "create table t(time time, id int);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("time")); - assertTrue(cd.getDatatype().getDataType() == EDataType.time_t); - } - - public void test4(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE \"table\" (\n" + - " \"column\" character(2)\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - //System.out.println(cd.getDatatype().getDataType().toString()); - assertTrue(cd.getDatatype().getDataType() == EDataType.character_t); - } - - public void test5(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "create table test(column TEXT);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - // System.out.println(cd.getDatatype().getDataType().toString()); - assertTrue(cd.getDatatype().getDataType() == EDataType.text_t); - } - - public void test6(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE test (\n" + - " id character \n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getDatatype().getDataType() == EDataType.char_t); - } - - public void test9(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE test (\n" + - " id bigint, \n" + - " id1 bigserial, \n" + - " id2 money, \n" + - " id3 bytea \n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - TColumnDefinition cd1 = createTable.getColumnList().getColumn(1); - TColumnDefinition cd2 = createTable.getColumnList().getColumn(2); - TColumnDefinition cd3 = createTable.getColumnList().getColumn(3); - assertTrue(cd.getDatatype().getDataType() == EDataType.bigint_t); - assertTrue(cd1.getDatatype().getDataType() == EDataType.bigserial_t); - assertTrue(cd2.getDatatype().getDataType() == EDataType.money_t); - assertTrue(cd3.getDatatype().getDataType() == EDataType.bytea_t); - } - - public void test10(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "INSERT INTO bigint_table ( clear_test , enc_test) VALUES ( -922337203 , -10.2)"; - assertTrue(sqlparser.parse() == 0); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.getSqlstatements().get(0); - TResultColumn resultColumn = insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - assertTrue(expression.getExpressionType() == unary_minus_t); - - TResultColumn resultColumn1 = insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(1); - TExpression expression1 = resultColumn1.getExpr(); - assertTrue(expression1.getExpressionType() == unary_minus_t); - } -} +package gudusoft.gsqlparser.postgresqlTest; +/* + * Date: 13-6-14 + */ + +import gudusoft.gsqlparser.EDataType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; +import gudusoft.gsqlparser.stmt.TInsertSqlStatement; +import junit.framework.TestCase; + +import static gudusoft.gsqlparser.EExpressionType.unary_minus_t; + +public class testDatatype extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE TABLE \"table1\" (\n" + + " \"column2\" date\n" + + ");"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TColumnDefinition cd = createTable.getColumnList().getColumn(0); + assertTrue(cd.getDatatype().getDataType() == EDataType.date_t); + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE TABLE \"table1\" (\n" + + " \"column1\" numeric(5,2)\n" + + ");"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TColumnDefinition cd = createTable.getColumnList().getColumn(0); + assertTrue(cd.getDatatype().getDataType() == EDataType.numeric_t); + assertTrue(cd.getDatatype().getPrecision().toString().equalsIgnoreCase("5")); + assertTrue(cd.getDatatype().getScale().toString().equalsIgnoreCase("2")); + } + + public void test3(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE TABLE Flights\n" + + "(\n" + + " DEPART_TIME TIME,\n" + + " ID SERIAL\n" + + ")"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TColumnDefinition cd = createTable.getColumnList().getColumn(0); + assertTrue(cd.getDatatype().getDataType() == EDataType.time_t); + + cd = createTable.getColumnList().getColumn(1); + assertTrue(cd.getDatatype().getDataType() == EDataType.serial_t); + } + + public void test31(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "create table t(time time, id int);"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TColumnDefinition cd = createTable.getColumnList().getColumn(0); + assertTrue(cd.getColumnName().toString().equalsIgnoreCase("time")); + assertTrue(cd.getDatatype().getDataType() == EDataType.time_t); + } + + public void test4(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE TABLE \"table\" (\n" + + " \"column\" character(2)\n" + + ");"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TColumnDefinition cd = createTable.getColumnList().getColumn(0); + //System.out.println(cd.getDatatype().getDataType().toString()); + assertTrue(cd.getDatatype().getDataType() == EDataType.character_t); + } + + public void test5(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "create table test(column TEXT);"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TColumnDefinition cd = createTable.getColumnList().getColumn(0); + // System.out.println(cd.getDatatype().getDataType().toString()); + assertTrue(cd.getDatatype().getDataType() == EDataType.text_t); + } + + public void test6(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE TABLE test (\n" + + " id character \n" + + ");"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TColumnDefinition cd = createTable.getColumnList().getColumn(0); + assertTrue(cd.getDatatype().getDataType() == EDataType.char_t); + } + + public void test9(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE TABLE test (\n" + + " id bigint, \n" + + " id1 bigserial, \n" + + " id2 money, \n" + + " id3 bytea \n" + + ");"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TColumnDefinition cd = createTable.getColumnList().getColumn(0); + TColumnDefinition cd1 = createTable.getColumnList().getColumn(1); + TColumnDefinition cd2 = createTable.getColumnList().getColumn(2); + TColumnDefinition cd3 = createTable.getColumnList().getColumn(3); + assertTrue(cd.getDatatype().getDataType() == EDataType.bigint_t); + assertTrue(cd1.getDatatype().getDataType() == EDataType.bigserial_t); + assertTrue(cd2.getDatatype().getDataType() == EDataType.money_t); + assertTrue(cd3.getDatatype().getDataType() == EDataType.bytea_t); + } + + public void test10(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "INSERT INTO bigint_table ( clear_test , enc_test) VALUES ( -922337203 , -10.2)"; + assertTrue(sqlparser.parse() == 0); + TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.getSqlstatements().get(0); + TResultColumn resultColumn = insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(0); + TExpression expression = resultColumn.getExpr(); + assertTrue(expression.getExpressionType() == unary_minus_t); + + TResultColumn resultColumn1 = insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(1); + TExpression expression1 = resultColumn1.getExpr(); + assertTrue(expression1.getExpressionType() == unary_minus_t); + } +} diff --git a/src/test/java/postgresql/testDeleteStmt.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDeleteStmt.java similarity index 95% rename from src/test/java/postgresql/testDeleteStmt.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testDeleteStmt.java index eedc66f3..b5536031 100644 --- a/src/test/java/postgresql/testDeleteStmt.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDeleteStmt.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 11-6-21 */ diff --git a/src/test/java/postgresql/testDrop.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDrop.java similarity index 94% rename from src/test/java/postgresql/testDrop.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testDrop.java index faf3e92f..3b608a19 100644 --- a/src/test/java/postgresql/testDrop.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDrop.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/postgresql/testDropTable.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDropTable.java similarity index 94% rename from src/test/java/postgresql/testDropTable.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testDropTable.java index fe900431..736f3e72 100644 --- a/src/test/java/postgresql/testDropTable.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDropTable.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/postgresql/testFieldSelection.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testFieldSelection.java similarity index 98% rename from src/test/java/postgresql/testFieldSelection.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testFieldSelection.java index d5509a5a..6858dac1 100644 --- a/src/test/java/postgresql/testFieldSelection.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testFieldSelection.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 11-5-23 */ diff --git a/src/test/java/postgresql/testFunctionCall.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testFunctionCall.java similarity index 95% rename from src/test/java/postgresql/testFunctionCall.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testFunctionCall.java index d7d95f6d..ea66d35a 100644 --- a/src/test/java/postgresql/testFunctionCall.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testFunctionCall.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 11-5-25 */ diff --git a/src/test/java/postgresql/testJSON.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testJSON.java similarity index 99% rename from src/test/java/postgresql/testJSON.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testJSON.java index 584e7967..bae7023e 100644 --- a/src/test/java/postgresql/testJSON.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testJSON.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; import gudusoft.gsqlparser.EDataType; diff --git a/src/test/java/postgresql/testLimitOffset.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testLimitOffset.java similarity index 94% rename from src/test/java/postgresql/testLimitOffset.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testLimitOffset.java index 48e5a0fd..2964629f 100644 --- a/src/test/java/postgresql/testLimitOffset.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testLimitOffset.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 14-2-7 */ diff --git a/src/test/java/postgresql/testLockingClause.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testLockingClause.java similarity index 97% rename from src/test/java/postgresql/testLockingClause.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testLockingClause.java index d4ab7c18..bbda4aaf 100644 --- a/src/test/java/postgresql/testLockingClause.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testLockingClause.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 11-5-18 */ diff --git a/src/test/java/postgresql/testMathematicalOperator.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testMathematicalOperator.java similarity index 99% rename from src/test/java/postgresql/testMathematicalOperator.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testMathematicalOperator.java index 9724c867..065233eb 100644 --- a/src/test/java/postgresql/testMathematicalOperator.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testMathematicalOperator.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 11-5-25 */ diff --git a/src/test/java/postgresql/testPlpgsql_assign.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_assign.java similarity index 98% rename from src/test/java/postgresql/testPlpgsql_assign.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_assign.java index af679bd3..65e48201 100644 --- a/src/test/java/postgresql/testPlpgsql_assign.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_assign.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_block.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_block.java similarity index 98% rename from src/test/java/postgresql/testPlpgsql_block.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_block.java index b46a085d..34a1709b 100644 --- a/src/test/java/postgresql/testPlpgsql_block.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_block.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_case.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_case.java similarity index 99% rename from src/test/java/postgresql/testPlpgsql_case.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_case.java index 4b1b352a..856ceabe 100644 --- a/src/test/java/postgresql/testPlpgsql_case.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_case.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_close.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_close.java similarity index 99% rename from src/test/java/postgresql/testPlpgsql_close.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_close.java index 3a138241..8d7743fa 100644 --- a/src/test/java/postgresql/testPlpgsql_close.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_close.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_declarestmt.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_declarestmt.java similarity index 99% rename from src/test/java/postgresql/testPlpgsql_declarestmt.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_declarestmt.java index 9610014e..c27436eb 100644 --- a/src/test/java/postgresql/testPlpgsql_declarestmt.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_declarestmt.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_delete.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_delete.java similarity index 98% rename from src/test/java/postgresql/testPlpgsql_delete.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_delete.java index 32a9973e..1c8120bd 100644 --- a/src/test/java/postgresql/testPlpgsql_delete.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_delete.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_exception.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exception.java similarity index 98% rename from src/test/java/postgresql/testPlpgsql_exception.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exception.java index 58ae7539..b9e1c602 100644 --- a/src/test/java/postgresql/testPlpgsql_exception.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exception.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-5 */ diff --git a/src/test/java/postgresql/testPlpgsql_execute.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_execute.java similarity index 98% rename from src/test/java/postgresql/testPlpgsql_execute.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_execute.java index e7a3100c..51e7e8da 100644 --- a/src/test/java/postgresql/testPlpgsql_execute.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_execute.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_exit.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exit.java similarity index 99% rename from src/test/java/postgresql/testPlpgsql_exit.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exit.java index 8dee63e6..89d89569 100644 --- a/src/test/java/postgresql/testPlpgsql_exit.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exit.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_fetch.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_fetch.java similarity index 97% rename from src/test/java/postgresql/testPlpgsql_fetch.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_fetch.java index 185bdd29..0967ae76 100644 --- a/src/test/java/postgresql/testPlpgsql_fetch.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_fetch.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_forLoop.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_forLoop.java similarity index 97% rename from src/test/java/postgresql/testPlpgsql_forLoop.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_forLoop.java index fb568d44..d3cf2d93 100644 --- a/src/test/java/postgresql/testPlpgsql_forLoop.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_forLoop.java @@ -1,97 +1,97 @@ -package postgresql; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TLoopStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_forLoop extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION myfunc(refcursor, refcursor) RETURNS SETOF refcursor AS $$\n" + - "BEGIN\n" + - "\tFOR recordvar IN bound_cursorvar LOOP\n" + - "\t\tnull;\n" + - "\tEND LOOP;\n" + - "\t\n" + - "\tFOR recordvar IN bound_cursorvar(1,s) LOOP\n" + - "\t\tnull;\n" + - "\tEND LOOP;\n" + - "\t\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 2); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - TLoopStmt loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getKind() == TLoopStmt.cursor_for_loop); - assertTrue(loopStmt.getIndexName().toString().equalsIgnoreCase("recordvar")); - assertTrue(loopStmt.getCursorName().toString().equalsIgnoreCase("bound_cursorvar")); - - assertTrue(loopStmt.getBodyStatements().size() == 1); - assertTrue(loopStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getKind() == TLoopStmt.cursor_for_loop); - assertTrue(loopStmt.getIndexName().toString().equalsIgnoreCase("recordvar")); - assertTrue(loopStmt.getCursorName().toString().equalsIgnoreCase("bound_cursorvar")); - - assertTrue(loopStmt.getBodyStatements().size() == 1); - assertTrue(loopStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); - - assertTrue(loopStmt.getCursorParameterNames().getExpression(0).toString().equalsIgnoreCase("1")); - assertTrue(loopStmt.getCursorParameterNames().getExpression(1).toString().equalsIgnoreCase("s")); - } - - public void testExecute(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION cs_refresh_mviews() RETURNS integer AS $$\n" + - "DECLARE\n" + - "mviews RECORD;\n" + - "BEGIN\n" + - "\t\n" + - " <>\n" + - "FOR target1 IN EXECUTE a+b USING 1,2,3 LOOP\n" + - "\tnull;\n" + - "END LOOP label1;\n" + - "\n" + - "\tRETURN 1;\n" + - "\t\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 2); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - TLoopStmt loopStmt = (TLoopStmt)stmt; - - assertTrue(loopStmt.getLabelName().toString().equalsIgnoreCase("label1")); - assertTrue(loopStmt.getEndlabelName().toString().equalsIgnoreCase("label1")); - assertTrue(loopStmt.getKind() == TLoopStmt.cursor_for_loop); - assertTrue(loopStmt.getIndexName().toString().equalsIgnoreCase("target1")); - assertTrue(loopStmt.getExecuteExpr().toString().equalsIgnoreCase("a+b")); - assertTrue(loopStmt.getExecuteUsingVars().size() == 3); - assertTrue(loopStmt.getExecuteUsingVars().getExpression(0).toString().equalsIgnoreCase("1")); - -// System.out.println(loopStmt.getBodyStatements().size()); -// System.out.println(loopStmt.getBodyStatements().get(0).sqlstatementtype); - assertTrue(loopStmt.getBodyStatements().size() == 1); - assertTrue(loopStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); - - } - -} +package gudusoft.gsqlparser.postgresqlTest; +/* + * Date: 13-12-4 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TCustomSqlStatement; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TLoopStmt; +import gudusoft.gsqlparser.stmt.*; +import junit.framework.TestCase; + +public class testPlpgsql_forLoop extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE FUNCTION myfunc(refcursor, refcursor) RETURNS SETOF refcursor AS $$\n" + + "BEGIN\n" + + "\tFOR recordvar IN bound_cursorvar LOOP\n" + + "\t\tnull;\n" + + "\tEND LOOP;\n" + + "\t\n" + + "\tFOR recordvar IN bound_cursorvar(1,s) LOOP\n" + + "\t\tnull;\n" + + "\tEND LOOP;\n" + + "\t\n" + + "END;\n" + + "$$ LANGUAGE plpgsql;"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getBodyStatements().size() == 2); + TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); + assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); + TLoopStmt loopStmt = (TLoopStmt)stmt; + assertTrue(loopStmt.getKind() == TLoopStmt.cursor_for_loop); + assertTrue(loopStmt.getIndexName().toString().equalsIgnoreCase("recordvar")); + assertTrue(loopStmt.getCursorName().toString().equalsIgnoreCase("bound_cursorvar")); + + assertTrue(loopStmt.getBodyStatements().size() == 1); + assertTrue(loopStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); + + stmt = createFunction.getBodyStatements().get(1); + assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); + loopStmt = (TLoopStmt)stmt; + assertTrue(loopStmt.getKind() == TLoopStmt.cursor_for_loop); + assertTrue(loopStmt.getIndexName().toString().equalsIgnoreCase("recordvar")); + assertTrue(loopStmt.getCursorName().toString().equalsIgnoreCase("bound_cursorvar")); + + assertTrue(loopStmt.getBodyStatements().size() == 1); + assertTrue(loopStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); + + assertTrue(loopStmt.getCursorParameterNames().getExpression(0).toString().equalsIgnoreCase("1")); + assertTrue(loopStmt.getCursorParameterNames().getExpression(1).toString().equalsIgnoreCase("s")); + } + + public void testExecute(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE FUNCTION cs_refresh_mviews() RETURNS integer AS $$\n" + + "DECLARE\n" + + "mviews RECORD;\n" + + "BEGIN\n" + + "\t\n" + + " <>\n" + + "FOR target1 IN EXECUTE a+b USING 1,2,3 LOOP\n" + + "\tnull;\n" + + "END LOOP label1;\n" + + "\n" + + "\tRETURN 1;\n" + + "\t\n" + + "END;\n" + + "$$ LANGUAGE plpgsql;"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getBodyStatements().size() == 2); + TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); + assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); + TLoopStmt loopStmt = (TLoopStmt)stmt; + + assertTrue(loopStmt.getLabelName().toString().equalsIgnoreCase("label1")); + assertTrue(loopStmt.getEndlabelName().toString().equalsIgnoreCase("label1")); + assertTrue(loopStmt.getKind() == TLoopStmt.cursor_for_loop); + assertTrue(loopStmt.getIndexName().toString().equalsIgnoreCase("target1")); + assertTrue(loopStmt.getExecuteExpr().toString().equalsIgnoreCase("a+b")); + assertTrue(loopStmt.getExecuteUsingVars().size() == 3); + assertTrue(loopStmt.getExecuteUsingVars().getExpression(0).toString().equalsIgnoreCase("1")); + +// System.out.println(loopStmt.getBodyStatements().size()); +// System.out.println(loopStmt.getBodyStatements().get(0).sqlstatementtype); + assertTrue(loopStmt.getBodyStatements().size() == 1); + assertTrue(loopStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); + + } + +} diff --git a/src/test/java/postgresql/testPlpgsql_foreach.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_foreach.java similarity index 97% rename from src/test/java/postgresql/testPlpgsql_foreach.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_foreach.java index 0d2a8ce1..b6f484d4 100644 --- a/src/test/java/postgresql/testPlpgsql_foreach.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_foreach.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_getdiag.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_getdiag.java similarity index 98% rename from src/test/java/postgresql/testPlpgsql_getdiag.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_getdiag.java index c7faf32b..7ed08281 100644 --- a/src/test/java/postgresql/testPlpgsql_getdiag.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_getdiag.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_if.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_if.java similarity index 99% rename from src/test/java/postgresql/testPlpgsql_if.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_if.java index 550a3c5e..7fcc0bcf 100644 --- a/src/test/java/postgresql/testPlpgsql_if.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_if.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_insert.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_insert.java similarity index 98% rename from src/test/java/postgresql/testPlpgsql_insert.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_insert.java index 0d2ea84e..ff41225d 100644 --- a/src/test/java/postgresql/testPlpgsql_insert.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_insert.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ @@ -6,7 +6,6 @@ import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.TExpression; import gudusoft.gsqlparser.stmt.*; -import gudusoft.gsqlparser.stmt.*; import junit.framework.TestCase; public class testPlpgsql_insert extends TestCase { diff --git a/src/test/java/postgresql/testPlpgsql_label.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_label.java similarity index 96% rename from src/test/java/postgresql/testPlpgsql_label.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_label.java index 29fbcd4d..6738d4de 100644 --- a/src/test/java/postgresql/testPlpgsql_label.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_label.java @@ -1,45 +1,45 @@ -package postgresql; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_label extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION somefunc() RETURNS integer AS $$\n" + - "<< outerblock >>\n" + - "DECLARE\n" + - " quantity integer := 30;\n" + - "BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30\n" + - " quantity := 50;\n" + - " --\n" + - " -- Create a subblock\n" + - " --\n" + - " DECLARE\n" + - " quantity integer := 80;\n" + - " BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80\n" + - " RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50\n" + - " END;\n" + - "\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50\n" + - "\n" + - " RETURN quantity;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size()==5); - // System.out.println(createFunction.getOuterLabelName().toString()); - assertTrue(createFunction.getBlockBody().getLabelName().toString().equalsIgnoreCase("outerblock")); - - } - -} +package gudusoft.gsqlparser.postgresqlTest; +/* + * Date: 13-12-4 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.*; +import junit.framework.TestCase; + +public class testPlpgsql_label extends TestCase { + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "CREATE FUNCTION somefunc() RETURNS integer AS $$\n" + + "<< outerblock >>\n" + + "DECLARE\n" + + " quantity integer := 30;\n" + + "BEGIN\n" + + " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30\n" + + " quantity := 50;\n" + + " --\n" + + " -- Create a subblock\n" + + " --\n" + + " DECLARE\n" + + " quantity integer := 80;\n" + + " BEGIN\n" + + " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80\n" + + " RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50\n" + + " END;\n" + + "\n" + + " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50\n" + + "\n" + + " RETURN quantity;\n" + + "END;\n" + + "$$ LANGUAGE plpgsql;"; + assertTrue(sqlparser.parse() == 0); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFunction.getBodyStatements().size()==5); + // System.out.println(createFunction.getOuterLabelName().toString()); + assertTrue(createFunction.getBlockBody().getLabelName().toString().equalsIgnoreCase("outerblock")); + + } + +} diff --git a/src/test/java/postgresql/testPlpgsql_loop.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_loop.java similarity index 99% rename from src/test/java/postgresql/testPlpgsql_loop.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_loop.java index 2ee1fee7..7dcf32ec 100644 --- a/src/test/java/postgresql/testPlpgsql_loop.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_loop.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_move.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_move.java similarity index 97% rename from src/test/java/postgresql/testPlpgsql_move.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_move.java index f759bb65..aaacf780 100644 --- a/src/test/java/postgresql/testPlpgsql_move.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_move.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_null.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_null.java similarity index 97% rename from src/test/java/postgresql/testPlpgsql_null.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_null.java index 651325bc..61d6b631 100644 --- a/src/test/java/postgresql/testPlpgsql_null.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_null.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_open.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_open.java similarity index 97% rename from src/test/java/postgresql/testPlpgsql_open.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_open.java index 66caa9b1..9d1f55b0 100644 --- a/src/test/java/postgresql/testPlpgsql_open.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_open.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_openfor.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_openfor.java similarity index 97% rename from src/test/java/postgresql/testPlpgsql_openfor.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_openfor.java index a3abdf03..de7d8a14 100644 --- a/src/test/java/postgresql/testPlpgsql_openfor.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_openfor.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-5 */ diff --git a/src/test/java/postgresql/testPlpgsql_raise.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_raise.java similarity index 97% rename from src/test/java/postgresql/testPlpgsql_raise.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_raise.java index 09305c85..27832541 100644 --- a/src/test/java/postgresql/testPlpgsql_raise.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_raise.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_return.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_return.java similarity index 97% rename from src/test/java/postgresql/testPlpgsql_return.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_return.java index 2dff41d1..b5ced890 100644 --- a/src/test/java/postgresql/testPlpgsql_return.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_return.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_update.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_update.java similarity index 99% rename from src/test/java/postgresql/testPlpgsql_update.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_update.java index d40f4a7e..d1ad4d80 100644 --- a/src/test/java/postgresql/testPlpgsql_update.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_update.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testPlpgsql_while.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_while.java similarity index 98% rename from src/test/java/postgresql/testPlpgsql_while.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_while.java index 5741842f..8a0c9405 100644 --- a/src/test/java/postgresql/testPlpgsql_while.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_while.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testReindex.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testReindex.java similarity index 96% rename from src/test/java/postgresql/testReindex.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testReindex.java index e17890c6..48d78a12 100644 --- a/src/test/java/postgresql/testReindex.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testReindex.java @@ -1,28 +1,28 @@ -package postgresql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TReindexStmt; -import junit.framework.TestCase; - -public class testReindex extends TestCase { - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "REINDEX INDEX my_index"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstReindex); - TReindexStmt reindexStmt = (TReindexStmt) sqlparser.sqlstatements.get(0); - assertTrue(reindexStmt.getIndexName().toString().equalsIgnoreCase("my_index")); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "REINDEX TABLE CONCURRENTLY my_broken_table;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstReindex); - TReindexStmt reindexStmt = (TReindexStmt) sqlparser.sqlstatements.get(0); - assertTrue(reindexStmt.getIndexName().toString().equalsIgnoreCase("my_broken_table")); - } - -} +package gudusoft.gsqlparser.postgresqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TReindexStmt; +import junit.framework.TestCase; + +public class testReindex extends TestCase { + public void test1() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "REINDEX INDEX my_index"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstReindex); + TReindexStmt reindexStmt = (TReindexStmt) sqlparser.sqlstatements.get(0); + assertTrue(reindexStmt.getIndexName().toString().equalsIgnoreCase("my_index")); + } + + public void test2() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "REINDEX TABLE CONCURRENTLY my_broken_table;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstReindex); + TReindexStmt reindexStmt = (TReindexStmt) sqlparser.sqlstatements.get(0); + assertTrue(reindexStmt.getIndexName().toString().equalsIgnoreCase("my_broken_table")); + } + +} diff --git a/src/test/java/postgresql/testRowConstructor.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testRowConstructor.java similarity index 98% rename from src/test/java/postgresql/testRowConstructor.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testRowConstructor.java index 0b0a456b..b6fd50b7 100644 --- a/src/test/java/postgresql/testRowConstructor.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testRowConstructor.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 11-5-25 */ diff --git a/src/test/java/postgresql/testSYMMETRIC.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSYMMETRIC.java similarity index 94% rename from src/test/java/postgresql/testSYMMETRIC.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testSYMMETRIC.java index 981301a4..3926f742 100644 --- a/src/test/java/postgresql/testSYMMETRIC.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSYMMETRIC.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-7-30 */ diff --git a/src/test/java/postgresql/testSchema.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSchema.java similarity index 96% rename from src/test/java/postgresql/testSchema.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testSchema.java index a6818b3a..b97f002b 100644 --- a/src/test/java/postgresql/testSchema.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSchema.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/postgresql/testSetSearchPath.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetSearchPath.java similarity index 95% rename from src/test/java/postgresql/testSetSearchPath.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetSearchPath.java index b48f4c2a..40063c50 100644 --- a/src/test/java/postgresql/testSetSearchPath.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetSearchPath.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESetStatementType; diff --git a/src/test/java/postgresql/testSetVariable.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetVariable.java similarity index 97% rename from src/test/java/postgresql/testSetVariable.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetVariable.java index ef9570a0..8ecd35f8 100644 --- a/src/test/java/postgresql/testSetVariable.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetVariable.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESetStatementType; diff --git a/src/test/java/postgresql/testStringConcate.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testStringConcate.java similarity index 94% rename from src/test/java/postgresql/testStringConcate.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testStringConcate.java index 6000df1f..80cc7ce8 100644 --- a/src/test/java/postgresql/testStringConcate.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testStringConcate.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 14-2-7 */ diff --git a/src/test/java/postgresql/testSubscript.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSubscript.java similarity index 99% rename from src/test/java/postgresql/testSubscript.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testSubscript.java index f8fde460..7107cd80 100644 --- a/src/test/java/postgresql/testSubscript.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSubscript.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 11-5-23 */ diff --git a/src/test/java/postgresql/testTableStmt.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testTableStmt.java similarity index 95% rename from src/test/java/postgresql/testTableStmt.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testTableStmt.java index 27060c65..4686a3bf 100644 --- a/src/test/java/postgresql/testTableStmt.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testTableStmt.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/postgresql/testTruncate.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testTruncate.java similarity index 96% rename from src/test/java/postgresql/testTruncate.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testTruncate.java index eab3eab4..fa8b86ea 100644 --- a/src/test/java/postgresql/testTruncate.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testTruncate.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 13-12-4 */ diff --git a/src/test/java/postgresql/testUpdateStmt.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testUpdateStmt.java similarity index 99% rename from src/test/java/postgresql/testUpdateStmt.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testUpdateStmt.java index 85e97207..b82eaf65 100644 --- a/src/test/java/postgresql/testUpdateStmt.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testUpdateStmt.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 11-6-21 */ diff --git a/src/test/java/postgresql/testVacuum.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testVacuum.java similarity index 93% rename from src/test/java/postgresql/testVacuum.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testVacuum.java index c5e724b7..efb872d0 100644 --- a/src/test/java/postgresql/testVacuum.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testVacuum.java @@ -1,38 +1,37 @@ -package postgresql; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TVacuumStmt; -import junit.framework.TestCase; - -public class testVacuum extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "VACUUM"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstVacuum); - TVacuumStmt vacuumStmt = (TVacuumStmt) sqlparser.sqlstatements.get(0); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "VACUUM full tablename"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstVacuum); - TVacuumStmt vacuumStmt = (TVacuumStmt) sqlparser.sqlstatements.get(0); - assertTrue(vacuumStmt.getTableName().toString().equalsIgnoreCase("tablename")); - } - - public void test3() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "VACUUM full analyze tablename(f1,f2)"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstVacuum); - TVacuumStmt vacuumStmt = (TVacuumStmt) sqlparser.sqlstatements.get(0); - assertTrue(vacuumStmt.getTableName().toString().equalsIgnoreCase("tablename")); - assertTrue(vacuumStmt.getColumList().size() == 2); - } -} +package gudusoft.gsqlparser.postgresqlTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TVacuumStmt; +import junit.framework.TestCase; + +public class testVacuum extends TestCase { + + public void test1() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "VACUUM"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstVacuum); + TVacuumStmt vacuumStmt = (TVacuumStmt) sqlparser.sqlstatements.get(0); + } + + public void test2() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "VACUUM full tablename"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstVacuum); + TVacuumStmt vacuumStmt = (TVacuumStmt) sqlparser.sqlstatements.get(0); + assertTrue(vacuumStmt.getTableName().toString().equalsIgnoreCase("tablename")); + } + + public void test3() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlparser.sqltext = "VACUUM full analyze tablename(f1,f2)"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstVacuum); + TVacuumStmt vacuumStmt = (TVacuumStmt) sqlparser.sqlstatements.get(0); + assertTrue(vacuumStmt.getTableName().toString().equalsIgnoreCase("tablename")); + assertTrue(vacuumStmt.getColumList().size() == 2); + } +} diff --git a/src/test/java/postgresql/testValueListInFromClause.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testValueListInFromClause.java similarity index 97% rename from src/test/java/postgresql/testValueListInFromClause.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testValueListInFromClause.java index 957d8827..a314cd73 100644 --- a/src/test/java/postgresql/testValueListInFromClause.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testValueListInFromClause.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 14-2-7 */ diff --git a/src/test/java/postgresql/testWindowClause.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowClause.java similarity index 93% rename from src/test/java/postgresql/testWindowClause.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowClause.java index b828b623..9189da0d 100644 --- a/src/test/java/postgresql/testWindowClause.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowClause.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 11-5-19 */ diff --git a/src/test/java/postgresql/testWindowFunctions.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowFunctions.java similarity index 99% rename from src/test/java/postgresql/testWindowFunctions.java rename to src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowFunctions.java index 7efabcb0..ae1df053 100644 --- a/src/test/java/postgresql/testWindowFunctions.java +++ b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowFunctions.java @@ -1,4 +1,4 @@ -package postgresql; +package gudusoft.gsqlparser.postgresqlTest; /* * Date: 11-5-24 */ diff --git a/src/test/java/presto/testCreateTableLike.java b/src/test/java/gudusoft/gsqlparser/prestoTest/testCreateTableLike.java similarity index 97% rename from src/test/java/presto/testCreateTableLike.java rename to src/test/java/gudusoft/gsqlparser/prestoTest/testCreateTableLike.java index 975a7a05..ff4f741c 100644 --- a/src/test/java/presto/testCreateTableLike.java +++ b/src/test/java/gudusoft/gsqlparser/prestoTest/testCreateTableLike.java @@ -1,4 +1,4 @@ -package presto; +package gudusoft.gsqlparser.prestoTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/presto/testExplain.java b/src/test/java/gudusoft/gsqlparser/prestoTest/testExplain.java similarity index 97% rename from src/test/java/presto/testExplain.java rename to src/test/java/gudusoft/gsqlparser/prestoTest/testExplain.java index c1d18bcc..7197bcec 100644 --- a/src/test/java/presto/testExplain.java +++ b/src/test/java/gudusoft/gsqlparser/prestoTest/testExplain.java @@ -1,4 +1,4 @@ -package presto; +package gudusoft.gsqlparser.prestoTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/presto/testPrepare.java b/src/test/java/gudusoft/gsqlparser/prestoTest/testPrepare.java similarity index 96% rename from src/test/java/presto/testPrepare.java rename to src/test/java/gudusoft/gsqlparser/prestoTest/testPrepare.java index f8760e1d..2ac0a076 100644 --- a/src/test/java/presto/testPrepare.java +++ b/src/test/java/gudusoft/gsqlparser/prestoTest/testPrepare.java @@ -1,9 +1,8 @@ -package presto; +package gudusoft.gsqlparser.prestoTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAlterDatabaseStmt; import gudusoft.gsqlparser.stmt.TInsertSqlStatement; import gudusoft.gsqlparser.stmt.TPrepareStmt; import gudusoft.gsqlparser.stmt.TSelectSqlStatement; diff --git a/src/test/java/presto/testUnnest.java b/src/test/java/gudusoft/gsqlparser/prestoTest/testUnnest.java similarity index 98% rename from src/test/java/presto/testUnnest.java rename to src/test/java/gudusoft/gsqlparser/prestoTest/testUnnest.java index ed10e002..60f6b2d4 100644 --- a/src/test/java/presto/testUnnest.java +++ b/src/test/java/gudusoft/gsqlparser/prestoTest/testUnnest.java @@ -1,4 +1,4 @@ -package presto; +package gudusoft.gsqlparser.prestoTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ETableSource; diff --git a/src/test/java/redshift/TestCreateFunction.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateFunction.java similarity index 97% rename from src/test/java/redshift/TestCreateFunction.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateFunction.java index c2e97960..7ebc9ea6 100644 --- a/src/test/java/redshift/TestCreateFunction.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateFunction.java @@ -1,94 +1,94 @@ -package redshift; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class TestCreateFunction extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create function f_sql_greater (float, float)\n" + - " returns float\n" + - "stable\n" + - "as $$\n" + - " select case when $1 > $2 then $1\n" + - " else $2\n" + - " end\n" + - "$$ language sql"; - // System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("f_sql_greater")); - assertTrue(createFunction.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.float_t); - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.float_t); - assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("sql")); - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - TExpression expression = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.case_t); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create function f_sql_commission (float, float )\n" + - " returns float\n" + - "stable\n" + - "as $$\n" + - " select f_sql_greater ($1, $2) \n" + - "$$ language sql;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("f_sql_commission")); - assertTrue(createFunction.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.float_t); - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.float_t); - assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("sql")); - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - TExpression expression = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.function_t); - } - - public void testPython(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create function f_py_greater (a float, b float)\n" + - " returns float\n" + - "stable\n" + - "as $$\n" + - " if a > b:\n" + - " return a\n" + - " return b\n" + - "$$ language plpythonu;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("f_py_greater")); - assertTrue(createFunction.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("a")); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.float_t); - - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.float_t); - assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("plpythonu")); - - } -} +package gudusoft.gsqlparser.redshiftTest; + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TParameterDeclaration; +import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class TestCreateFunction extends TestCase { + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); + sqlparser.sqltext = "create function f_sql_greater (float, float)\n" + + " returns float\n" + + "stable\n" + + "as $$\n" + + " select case when $1 > $2 then $1\n" + + " else $2\n" + + " end\n" + + "$$ language sql"; + // System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("f_sql_greater")); + assertTrue(createFunction.getParameterDeclarations().size() == 2); + TParameterDeclaration parameterDeclaration = createFunction.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.float_t); + assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.float_t); + assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("sql")); + + assertTrue(createFunction.getBodyStatements().size() == 1); + assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); + TExpression expression = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); + assertTrue(expression.getExpressionType() == EExpressionType.case_t); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); + sqlparser.sqltext = "create function f_sql_commission (float, float )\n" + + " returns float\n" + + "stable\n" + + "as $$\n" + + " select f_sql_greater ($1, $2) \n" + + "$$ language sql;"; + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("f_sql_commission")); + assertTrue(createFunction.getParameterDeclarations().size() == 2); + TParameterDeclaration parameterDeclaration = createFunction.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.float_t); + assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.float_t); + assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("sql")); + + assertTrue(createFunction.getBodyStatements().size() == 1); + assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); + TExpression expression = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); + assertTrue(expression.getExpressionType() == EExpressionType.function_t); + } + + public void testPython(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); + sqlparser.sqltext = "create function f_py_greater (a float, b float)\n" + + " returns float\n" + + "stable\n" + + "as $$\n" + + " if a > b:\n" + + " return a\n" + + " return b\n" + + "$$ language plpythonu;"; + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); + + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("f_py_greater")); + assertTrue(createFunction.getParameterDeclarations().size() == 2); + TParameterDeclaration parameterDeclaration = createFunction.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("a")); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.float_t); + + assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.float_t); + assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("plpythonu")); + + } +} diff --git a/src/test/java/redshift/TestCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateProcedure.java similarity index 96% rename from src/test/java/redshift/TestCreateProcedure.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateProcedure.java index 66343bc6..51cb88ce 100644 --- a/src/test/java/redshift/TestCreateProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateProcedure.java @@ -1,132 +1,130 @@ -package redshift; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TIntoClause; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.ESqlStatementType.sstplsql_vardecl; - -public class TestCreateProcedure extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_sp1(f1 int, f2 varchar(20))\n" + - "AS $$\n" + - "DECLARE\n" + - " min_val int;\n" + - "BEGIN\n" + - " DROP TABLE IF EXISTS tmp_tbl;\n" + - " CREATE TEMP TABLE tmp_tbl(id int);\n" + - " INSERT INTO tmp_tbl values (f1),(10001),(10002);\n" + - " SELECT MIN(id) INTO min_val FROM tmp_tbl;\n" + - " RAISE INFO 'min_val = %, f2 = %', min_val, f2;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("test_sp1")); - assertTrue(createProcedure.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("f1")); - - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("plpgsql")); - - assertTrue(createProcedure.getDeclareStatements().size() == 1); - assertTrue (createProcedure.getDeclareStatements().get(0).sqlstatementtype== sstplsql_vardecl); - assertTrue(createProcedure.getBodyStatements().size() == 5); - assertTrue(createProcedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createProcedure.getBodyStatements().get(3); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("tmp_tbl")); - - } - - public void test11(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_sp1(f1 int, f2 varchar(20))\n" + - "AS $$\n" + - "DECLARE\n" + - " min_val int;\n" + - "BEGIN\n" + - " DROP TABLE IF EXISTS tmp_tbl;\n" + - " CREATE TEMP TABLE tmp_tbl(id int);\n" + - " INSERT INTO tmp_tbl values (f1),(10001),(10002);\n" + - " SELECT INTO min_val MIN(id) FROM tmp_tbl;\n" + - " RAISE INFO 'min_val = %, f2 = %', min_val, f2;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("test_sp1")); - assertTrue(createProcedure.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("f1")); - - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("plpgsql")); - - assertTrue(createProcedure.getDeclareStatements().size() == 1); - assertTrue (createProcedure.getDeclareStatements().get(0).sqlstatementtype== sstplsql_vardecl); - assertTrue(createProcedure.getBodyStatements().size() == 5); - assertTrue(createProcedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createProcedure.getBodyStatements().get(3); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("tmp_tbl")); - TIntoClause intoClause = selectSqlStatement.getIntoClause(); - assertTrue(intoClause.getVariableList().getObjectName(0).toString().equalsIgnoreCase("min_val")); - - } - - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_sp2(f1 IN int, f2 INOUT varchar(256), out_var OUT varchar(256))\n" + - "AS $$\n" + - "DECLARE\n" + - " loop_var int;\n" + - "BEGIN\n" + - " IF f1 is null OR f2 is null THEN\n" + - " RAISE EXCEPTION 'input cannot be null';\n" + - " END IF;\n" + - " DROP TABLE if exists my_etl;\n" + - " CREATE TEMP TABLE my_etl(a int, b varchar);\n" + - " FOR loop_var IN 1..f1 LOOP\n" + - " insert into my_etl values (loop_var, f2);\n" + - " f2 := f2 || '+' || f2;\n" + - " END LOOP;\n" + - " SELECT count(*) INTO out_var from my_etl;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("test_sp2")); - assertTrue(createProcedure.getParameterDeclarations().size() == 3); - TParameterDeclaration parameterDeclaration = createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("f1")); - assertTrue(parameterDeclaration.getParameterMode() == EParameterMode.in); - - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("plpgsql")); - - assertTrue(createProcedure.getDeclareStatements().size() == 1); - assertTrue (createProcedure.getDeclareStatements().get(0).sqlstatementtype== sstplsql_vardecl); - assertTrue(createProcedure.getBodyStatements().size() == 5); - assertTrue(createProcedure.getBodyStatements().get(4).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createProcedure.getBodyStatements().get(4); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("my_etl")); - - } -} +package gudusoft.gsqlparser.redshiftTest; + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.TIntoClause; +import gudusoft.gsqlparser.nodes.TParameterDeclaration; +import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +import static gudusoft.gsqlparser.ESqlStatementType.sstplsql_vardecl; + +public class TestCreateProcedure extends TestCase { + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); + sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_sp1(f1 int, f2 varchar(20))\n" + + "AS $$\n" + + "DECLARE\n" + + " min_val int;\n" + + "BEGIN\n" + + " DROP TABLE IF EXISTS tmp_tbl;\n" + + " CREATE TEMP TABLE tmp_tbl(id int);\n" + + " INSERT INTO tmp_tbl values (f1),(10001),(10002);\n" + + " SELECT MIN(id) INTO min_val FROM tmp_tbl;\n" + + " RAISE INFO 'min_val = %, f2 = %', min_val, f2;\n" + + "END;\n" + + "$$ LANGUAGE plpgsql;"; + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); + + TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("test_sp1")); + assertTrue(createProcedure.getParameterDeclarations().size() == 2); + TParameterDeclaration parameterDeclaration = createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); + assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("f1")); + + assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("plpgsql")); + + assertTrue(createProcedure.getDeclareStatements().size() == 1); + assertTrue (createProcedure.getDeclareStatements().get(0).sqlstatementtype== sstplsql_vardecl); + assertTrue(createProcedure.getBodyStatements().size() == 5); + assertTrue(createProcedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createProcedure.getBodyStatements().get(3); + assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("tmp_tbl")); + + } + + public void test11(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); + sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_sp1(f1 int, f2 varchar(20))\n" + + "AS $$\n" + + "DECLARE\n" + + " min_val int;\n" + + "BEGIN\n" + + " DROP TABLE IF EXISTS tmp_tbl;\n" + + " CREATE TEMP TABLE tmp_tbl(id int);\n" + + " INSERT INTO tmp_tbl values (f1),(10001),(10002);\n" + + " SELECT INTO min_val MIN(id) FROM tmp_tbl;\n" + + " RAISE INFO 'min_val = %, f2 = %', min_val, f2;\n" + + "END;\n" + + "$$ LANGUAGE plpgsql;"; + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); + + TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("test_sp1")); + assertTrue(createProcedure.getParameterDeclarations().size() == 2); + TParameterDeclaration parameterDeclaration = createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); + assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("f1")); + + assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("plpgsql")); + + assertTrue(createProcedure.getDeclareStatements().size() == 1); + assertTrue (createProcedure.getDeclareStatements().get(0).sqlstatementtype== sstplsql_vardecl); + assertTrue(createProcedure.getBodyStatements().size() == 5); + assertTrue(createProcedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createProcedure.getBodyStatements().get(3); + assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("tmp_tbl")); + TIntoClause intoClause = selectSqlStatement.getIntoClause(); + assertTrue(intoClause.getVariableList().getObjectName(0).toString().equalsIgnoreCase("min_val")); + + } + + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); + sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_sp2(f1 IN int, f2 INOUT varchar(256), out_var OUT varchar(256))\n" + + "AS $$\n" + + "DECLARE\n" + + " loop_var int;\n" + + "BEGIN\n" + + " IF f1 is null OR f2 is null THEN\n" + + " RAISE EXCEPTION 'input cannot be null';\n" + + " END IF;\n" + + " DROP TABLE if exists my_etl;\n" + + " CREATE TEMP TABLE my_etl(a int, b varchar);\n" + + " FOR loop_var IN 1..f1 LOOP\n" + + " insert into my_etl values (loop_var, f2);\n" + + " f2 := f2 || '+' || f2;\n" + + " END LOOP;\n" + + " SELECT count(*) INTO out_var from my_etl;\n" + + "END;\n" + + "$$ LANGUAGE plpgsql;"; + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); + + TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("test_sp2")); + assertTrue(createProcedure.getParameterDeclarations().size() == 3); + TParameterDeclaration parameterDeclaration = createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); + assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("f1")); + assertTrue(parameterDeclaration.getParameterMode() == EParameterMode.in); + + assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("plpgsql")); + + assertTrue(createProcedure.getDeclareStatements().size() == 1); + assertTrue (createProcedure.getDeclareStatements().get(0).sqlstatementtype== sstplsql_vardecl); + assertTrue(createProcedure.getBodyStatements().size() == 5); + assertTrue(createProcedure.getBodyStatements().get(4).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createProcedure.getBodyStatements().get(4); + assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("my_etl")); + + } +} diff --git a/src/test/java/redshift/testAlterDatabase.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterDatabase.java similarity index 97% rename from src/test/java/redshift/testAlterDatabase.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterDatabase.java index b45f6327..558413fc 100644 --- a/src/test/java/redshift/testAlterDatabase.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterDatabase.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testAlterGroup.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterGroup.java similarity index 97% rename from src/test/java/redshift/testAlterGroup.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterGroup.java index 1c705d7e..f74f4dff 100644 --- a/src/test/java/redshift/testAlterGroup.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterGroup.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testAlterSchema.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterSchema.java similarity index 97% rename from src/test/java/redshift/testAlterSchema.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterSchema.java index a1a42aa9..2719c993 100644 --- a/src/test/java/redshift/testAlterSchema.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterSchema.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterTable.java similarity index 99% rename from src/test/java/redshift/testAlterTable.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterTable.java index 80cf392f..dcb9e99c 100644 --- a/src/test/java/redshift/testAlterTable.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterTable.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.TAlterTableOption; diff --git a/src/test/java/redshift/testAlterUser.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterUser.java similarity index 93% rename from src/test/java/redshift/testAlterUser.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterUser.java index 631b5c0d..c34a96d8 100644 --- a/src/test/java/redshift/testAlterUser.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterUser.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.stmt.redshift.TRedshiftAlterUser; diff --git a/src/test/java/redshift/testAnalyze.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyze.java similarity index 97% rename from src/test/java/redshift/testAnalyze.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyze.java index e33a00ff..73b3bc8c 100644 --- a/src/test/java/redshift/testAnalyze.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyze.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testAnalyzeCompression.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyzeCompression.java similarity index 97% rename from src/test/java/redshift/testAnalyzeCompression.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyzeCompression.java index 32289f94..441522b4 100644 --- a/src/test/java/redshift/testAnalyzeCompression.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyzeCompression.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testCancel.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCancel.java similarity index 96% rename from src/test/java/redshift/testCancel.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testCancel.java index c7237afb..4e22a447 100644 --- a/src/test/java/redshift/testCancel.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCancel.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testClose.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testClose.java similarity index 90% rename from src/test/java/redshift/testClose.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testClose.java index 64c4b3ef..f5ee94c9 100644 --- a/src/test/java/redshift/testClose.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testClose.java @@ -1,10 +1,9 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.stmt.TCloseStmt; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftClose; import junit.framework.TestCase; public class testClose extends TestCase { diff --git a/src/test/java/redshift/testComment.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testComment.java similarity index 97% rename from src/test/java/redshift/testComment.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testComment.java index b28e736e..5b7e7f4e 100644 --- a/src/test/java/redshift/testComment.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testComment.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbObjectType; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/redshift/testCopy.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCopy.java similarity index 97% rename from src/test/java/redshift/testCopy.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testCopy.java index 49820e55..8d80ff77 100644 --- a/src/test/java/redshift/testCopy.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCopy.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testCreateDatabase.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateDatabase.java similarity index 95% rename from src/test/java/redshift/testCreateDatabase.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateDatabase.java index c13d8239..1d2c5aa5 100644 --- a/src/test/java/redshift/testCreateDatabase.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateDatabase.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testCreateGroup.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateGroup.java similarity index 95% rename from src/test/java/redshift/testCreateGroup.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateGroup.java index cc34380d..121f4eb3 100644 --- a/src/test/java/redshift/testCreateGroup.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateGroup.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testCreateSchema.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateSchema.java similarity index 94% rename from src/test/java/redshift/testCreateSchema.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateSchema.java index 2dd55f33..4e02a1c6 100644 --- a/src/test/java/redshift/testCreateSchema.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateSchema.java @@ -1,10 +1,9 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.stmt.TCreateSchemaSqlStatement; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftCreateSchema; import junit.framework.TestCase; diff --git a/src/test/java/redshift/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateTable.java similarity index 99% rename from src/test/java/redshift/testCreateTable.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateTable.java index 3426153f..8930bf48 100644 --- a/src/test/java/redshift/testCreateTable.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateTable.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.TColumnDefinition; diff --git a/src/test/java/redshift/testCreateUser.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateUser.java similarity index 94% rename from src/test/java/redshift/testCreateUser.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateUser.java index dba6ca35..4d96023b 100644 --- a/src/test/java/redshift/testCreateUser.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateUser.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testCreateView.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateView.java similarity index 96% rename from src/test/java/redshift/testCreateView.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateView.java index 51ab0ed8..3f3d74da 100644 --- a/src/test/java/redshift/testCreateView.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateView.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testDeallocate.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDeallocate.java similarity index 94% rename from src/test/java/redshift/testDeallocate.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testDeallocate.java index c64e33e1..2f24c50c 100644 --- a/src/test/java/redshift/testDeallocate.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDeallocate.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testDeclare.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDeclare.java similarity index 97% rename from src/test/java/redshift/testDeclare.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testDeclare.java index fa71d26b..c1222827 100644 --- a/src/test/java/redshift/testDeclare.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDeclare.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.EExpressionType; diff --git a/src/test/java/redshift/testDelete.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDelete.java similarity index 95% rename from src/test/java/redshift/testDelete.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testDelete.java index 1811659c..d6605bed 100644 --- a/src/test/java/redshift/testDelete.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDelete.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testDropDatabase.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropDatabase.java similarity index 94% rename from src/test/java/redshift/testDropDatabase.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testDropDatabase.java index 4dbbc08b..062efdc8 100644 --- a/src/test/java/redshift/testDropDatabase.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropDatabase.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testDropGroup.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropGroup.java similarity index 94% rename from src/test/java/redshift/testDropGroup.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testDropGroup.java index aa0f8204..16820de8 100644 --- a/src/test/java/redshift/testDropGroup.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropGroup.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/redshift/testDropSchema.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropSchema.java similarity index 94% rename from src/test/java/redshift/testDropSchema.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testDropSchema.java index 7c12f20e..76b43a3f 100644 --- a/src/test/java/redshift/testDropSchema.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropSchema.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testDropTable.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropTable.java similarity index 95% rename from src/test/java/redshift/testDropTable.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testDropTable.java index 2362c95b..5caffa7e 100644 --- a/src/test/java/redshift/testDropTable.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropTable.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testDropUser.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropUser.java similarity index 95% rename from src/test/java/redshift/testDropUser.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testDropUser.java index 9e80bf33..358b5bfd 100644 --- a/src/test/java/redshift/testDropUser.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropUser.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testDropView.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropView.java similarity index 95% rename from src/test/java/redshift/testDropView.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testDropView.java index 43d6d9f7..22cec56d 100644 --- a/src/test/java/redshift/testDropView.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropView.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testExecute.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testExecute.java similarity index 95% rename from src/test/java/redshift/testExecute.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testExecute.java index 1913dc27..c41e5e71 100644 --- a/src/test/java/redshift/testExecute.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testExecute.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testExplain.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testExplain.java similarity index 98% rename from src/test/java/redshift/testExplain.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testExplain.java index 5b39106c..2fffd9ce 100644 --- a/src/test/java/redshift/testExplain.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testExplain.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testExpression.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testExpression.java similarity index 99% rename from src/test/java/redshift/testExpression.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testExpression.java index 5b9ecc56..45953907 100644 --- a/src/test/java/redshift/testExpression.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testExpression.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/redshift/testFetchFrom.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testFetchFrom.java similarity index 94% rename from src/test/java/redshift/testFetchFrom.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testFetchFrom.java index a9d269ff..fd89a2f4 100644 --- a/src/test/java/redshift/testFetchFrom.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testFetchFrom.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testLock.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testLock.java similarity index 92% rename from src/test/java/redshift/testLock.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testLock.java index ccc99da0..c2b8a777 100644 --- a/src/test/java/redshift/testLock.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testLock.java @@ -1,10 +1,9 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.stmt.TLockTableStmt; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftLock; import junit.framework.TestCase; diff --git a/src/test/java/redshift/testPrepare.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testPrepare.java similarity index 96% rename from src/test/java/redshift/testPrepare.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testPrepare.java index 498151d2..f6d787c8 100644 --- a/src/test/java/redshift/testPrepare.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testPrepare.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDataType; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/redshift/testUnload.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testUnload.java similarity index 97% rename from src/test/java/redshift/testUnload.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testUnload.java index 0932691a..ec29b309 100644 --- a/src/test/java/redshift/testUnload.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testUnload.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/redshift/testVaccum.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testVaccum.java similarity index 94% rename from src/test/java/redshift/testVaccum.java rename to src/test/java/gudusoft/gsqlparser/redshiftTest/testVaccum.java index d23c024e..805a006f 100644 --- a/src/test/java/redshift/testVaccum.java +++ b/src/test/java/gudusoft/gsqlparser/redshiftTest/testVaccum.java @@ -1,4 +1,4 @@ -package redshift; +package gudusoft.gsqlparser.redshiftTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/removeCondition/testRemoveCondition.java b/src/test/java/gudusoft/gsqlparser/removeConditionTest/testRemoveCondition.java similarity index 96% rename from src/test/java/removeCondition/testRemoveCondition.java rename to src/test/java/gudusoft/gsqlparser/removeConditionTest/testRemoveCondition.java index d40a8f58..57e9c55e 100644 --- a/src/test/java/removeCondition/testRemoveCondition.java +++ b/src/test/java/gudusoft/gsqlparser/removeConditionTest/testRemoveCondition.java @@ -1,196 +1,196 @@ -package removeCondition; - -import java.io.BufferedInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; -import java.util.regex.Pattern; - -import demos.removeCondition.removeCondition; -import gudusoft.gsqlparser.EDbVendor; -import junit.framework.Assert; -import junit.framework.TestCase; -import common.SqlFileList; - -public class testRemoveCondition extends TestCase -{ - - private String testFilesDirectory; - private String testFileSuffix = ".sql"; - private boolean containsSubFolder = false; - private Map conditionMap = new HashMap( ); - - public void setUp( ) - { - testFilesDirectory = "Test\\TestCases\\removeCondition"; - // containsSubFolder = false; - // testFileSuffix = ".sql"; - conditionMap.put( "Prof4", "Prof4" ); - conditionMap.put( "Prof3", "Prof3" ); - conditionMap.put( "Radius_Origin_ZIP", "Radius_Origin_ZIP" ); - conditionMap.put( "Radius_Distance_in_Miles", - "Radius_Distance_in_Miles" ); - conditionMap.put( "RadiusOriginZIP", "RadiusOriginZIP" ); - conditionMap.put( "RadiusDistanceinMiles", "RadiusDistanceinMiles" ); - conditionMap.put( "GivingFromDate", "2011-01-01" ); - conditionMap.put( "GivingThruDate", "2013-01-01" ); - conditionMap.put( "end_date", "2000-10-10" ); - } - - public static void testRemoveSpecialConditions( ) - { - String sql = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.id = summit.mstr.id\r\n" - + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" - + "AND d.fund_coll_attrb IN ( '$Institute$' )\r\n" - + "AND d.fund_acct IN ( '$Fund$' )\r\n" - + "AND d.cntrb_date >= '$From_Date$'\r\n" - + "AND d.cntrb_date <= '$Thru_Date$'\r\n" - + "GROUP BY d.id;"; - String result = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.id = summit.mstr.id\r\n" - + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" - + "AND d.fund_coll_attrb IN ( 'ShanXi University' )\r\n" - + "GROUP BY d.id;"; - Map conditionMap = new HashMap( ); - conditionMap.put( "Institute", "ShanXi University" ); - removeCondition remove = new removeCondition( sql, - EDbVendor.dbvmssql, - conditionMap ); - Assert.assertEquals( remove.getRemoveResult( ), result ); - } - - public static void testIssue239( ) - { - String sql = "SELECT SUM (d.amt) \r\n " - + "FROM summit.cntrb_detail d \r\n " - + "WHERE d.id = summit.mstr.id \r\n " - + " AND (d.cntrb_date || d.cntrb_time) >= ('$From_Date$' || '$From_Time$')\r\n " - + " AND (d.cntrb_date || d.cntrb_time) <= ('$Thru_Date$' || '$Thru_Date$')\r\n " - + "GROUP BY d.id "; - String result = "SELECT SUM (d.amt) \r\n" - + " FROM summit.cntrb_detail d \r\n" - + " WHERE d.id = summit.mstr.id \r\n" - + " AND (d.cntrb_date || d.cntrb_time) >= ('20130731')\r\n" - + " GROUP BY d.id"; - Map conditionMap = new HashMap( ); - conditionMap.put( "From_Date", "20130731" ); - removeCondition remove = new removeCondition( sql, - EDbVendor.dbvoracle, - conditionMap ); - Assert.assertEquals( remove.getRemoveResult( ), result ); - } - - public static void testRemoveNonConditions( ) - { - String sql = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.id = summit.mstr.id\r\n" - + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" - + "AND d.fund_coll_attrb IN ( '$Institute$' )\r\n" - + "AND d.fund_acct IN ( '$Fund$' )\r\n" - + "AND d.cntrb_date >= '$From_Date$'\r\n" - + "AND d.cntrb_date <= '$Thru_Date$'\r\n" - + "GROUP BY d.id;"; - String result = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.id = summit.mstr.id\r\n" - + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" - + "AND d.fund_coll_attrb IN ( 'ShanXi University' )\r\n" - + "AND d.fund_acct IN ( 'Eclipse' )\r\n" - + "AND d.cntrb_date >= '2012-01-01'\r\n" - + "AND d.cntrb_date <= '2013-01-01'\r\n" - + "GROUP BY d.id;"; - Map conditionMap = new HashMap( ); - conditionMap.put( "Institute", "ShanXi University" ); - conditionMap.put( "Fund", "Eclipse" ); - conditionMap.put( "From_Date", "2012-01-01" ); - conditionMap.put( "Thru_Date", "2013-01-01" ); - removeCondition remove = new removeCondition( sql, - EDbVendor.dbvmssql, - conditionMap ); - Assert.assertEquals( remove.getRemoveResult( ), result ); - } - - public static void testRemoveAllConditions( ) - { - String sql = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "WHERE d.fund_coll_attrb IN ( '$Institute$' )\r\n" - + "AND d.fund_acct IN ( '$Fund$' )\r\n" - + "AND d.cntrb_date >= '$From_Date$'\r\n" - + "AND d.cntrb_date <= '$Thru_Date$'\r\n" - + "GROUP BY d.id;"; - String result = "SELECT SUM (d.amt)\r\n" - + "FROM summit.cntrb_detail d\r\n" - + "GROUP BY d.id;"; - removeCondition remove = new removeCondition( sql, - EDbVendor.dbvmssql, - null ); - Assert.assertEquals( remove.getRemoveResult( ), result ); - } - - public void testSQLFromFile( ) - { - SqlFileList fileList = new SqlFileList( testFilesDirectory, - containsSubFolder, - testFileSuffix ); - if ( fileList.sqlfiles != null ) - { - for ( int i = 0; i < fileList.sqlfiles.size( ); i++ ) - { - String filePath = fileList.sqlfiles.get( i ); - String xmlFilePath = filePath.replaceAll( "(?i)" - + Pattern.quote( testFileSuffix ), - ".txt" ); - System.out.println(filePath); - File xmlFile = new File( xmlFilePath ); - File sqlFile = new File( filePath ); - if ( xmlFile.exists( ) && sqlFile.exists( ) ) - { - removeCondition remove = new removeCondition( sqlFile, - EDbVendor.dbvoracle, - conditionMap ); - - String result = remove.getRemoveResult( ).replaceAll("\\s+", " ").trim().toLowerCase(); - String result1 = getContent( xmlFile ).replaceAll("\\s+", " ").trim().toLowerCase(); - - Assert.assertTrue(result.equals(result1)); - } - } - } - } - - private String getContent( File file ) - { - try - { - ByteArrayOutputStream out = new ByteArrayOutputStream( 4096 ); - byte[] tmp = new byte[4096]; - InputStream is = new BufferedInputStream( new FileInputStream( file ) ); - while ( true ) - { - int r = is.read( tmp ); - if ( r == -1 ) - break; - out.write( tmp, 0, r ); - } - byte[] bytes = out.toByteArray( ); - is.close( ); - out.close( ); - String content = new String( bytes ); - return content.trim( ); - } - catch ( IOException e ) - { - e.printStackTrace( ); - } - return null; - } -} +package gudusoft.gsqlparser.removeConditionTest; + +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Pattern; + +import demos.removeCondition.removeCondition; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.Assert; +import junit.framework.TestCase; +import gudusoft.gsqlparser.commonTest.SqlFileList; + +public class testRemoveCondition extends TestCase +{ + + private String testFilesDirectory; + private String testFileSuffix = ".sql"; + private boolean containsSubFolder = false; + private Map conditionMap = new HashMap( ); + + public void setUp( ) + { + testFilesDirectory = "Test\\TestCases\\removeCondition"; + // containsSubFolder = false; + // testFileSuffix = ".sql"; + conditionMap.put( "Prof4", "Prof4" ); + conditionMap.put( "Prof3", "Prof3" ); + conditionMap.put( "Radius_Origin_ZIP", "Radius_Origin_ZIP" ); + conditionMap.put( "Radius_Distance_in_Miles", + "Radius_Distance_in_Miles" ); + conditionMap.put( "RadiusOriginZIP", "RadiusOriginZIP" ); + conditionMap.put( "RadiusDistanceinMiles", "RadiusDistanceinMiles" ); + conditionMap.put( "GivingFromDate", "2011-01-01" ); + conditionMap.put( "GivingThruDate", "2013-01-01" ); + conditionMap.put( "end_date", "2000-10-10" ); + } + + public static void testRemoveSpecialConditions( ) + { + String sql = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.id = summit.mstr.id\r\n" + + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" + + "AND d.fund_coll_attrb IN ( '$Institute$' )\r\n" + + "AND d.fund_acct IN ( '$Fund$' )\r\n" + + "AND d.cntrb_date >= '$From_Date$'\r\n" + + "AND d.cntrb_date <= '$Thru_Date$'\r\n" + + "GROUP BY d.id;"; + String result = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.id = summit.mstr.id\r\n" + + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" + + "AND d.fund_coll_attrb IN ( 'ShanXi University' )\r\n" + + "GROUP BY d.id;"; + Map conditionMap = new HashMap( ); + conditionMap.put( "Institute", "ShanXi University" ); + removeCondition remove = new removeCondition( sql, + EDbVendor.dbvmssql, + conditionMap ); + Assert.assertEquals( remove.getRemoveResult( ), result ); + } + + public static void testIssue239( ) + { + String sql = "SELECT SUM (d.amt) \r\n " + + "FROM summit.cntrb_detail d \r\n " + + "WHERE d.id = summit.mstr.id \r\n " + + " AND (d.cntrb_date || d.cntrb_time) >= ('$From_Date$' || '$From_Time$')\r\n " + + " AND (d.cntrb_date || d.cntrb_time) <= ('$Thru_Date$' || '$Thru_Date$')\r\n " + + "GROUP BY d.id "; + String result = "SELECT SUM (d.amt) \r\n" + + " FROM summit.cntrb_detail d \r\n" + + " WHERE d.id = summit.mstr.id \r\n" + + " AND (d.cntrb_date || d.cntrb_time) >= ('20130731')\r\n" + + " GROUP BY d.id"; + Map conditionMap = new HashMap( ); + conditionMap.put( "From_Date", "20130731" ); + removeCondition remove = new removeCondition( sql, + EDbVendor.dbvoracle, + conditionMap ); + Assert.assertEquals( remove.getRemoveResult( ), result ); + } + + public static void testRemoveNonConditions( ) + { + String sql = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.id = summit.mstr.id\r\n" + + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" + + "AND d.fund_coll_attrb IN ( '$Institute$' )\r\n" + + "AND d.fund_acct IN ( '$Fund$' )\r\n" + + "AND d.cntrb_date >= '$From_Date$'\r\n" + + "AND d.cntrb_date <= '$Thru_Date$'\r\n" + + "GROUP BY d.id;"; + String result = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.id = summit.mstr.id\r\n" + + "AND d.system_gift_type IN ( 'OG', 'PLP', 'PGP' )\r\n" + + "AND d.fund_coll_attrb IN ( 'ShanXi University' )\r\n" + + "AND d.fund_acct IN ( 'Eclipse' )\r\n" + + "AND d.cntrb_date >= '2012-01-01'\r\n" + + "AND d.cntrb_date <= '2013-01-01'\r\n" + + "GROUP BY d.id;"; + Map conditionMap = new HashMap( ); + conditionMap.put( "Institute", "ShanXi University" ); + conditionMap.put( "Fund", "Eclipse" ); + conditionMap.put( "From_Date", "2012-01-01" ); + conditionMap.put( "Thru_Date", "2013-01-01" ); + removeCondition remove = new removeCondition( sql, + EDbVendor.dbvmssql, + conditionMap ); + Assert.assertEquals( remove.getRemoveResult( ), result ); + } + + public static void testRemoveAllConditions( ) + { + String sql = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "WHERE d.fund_coll_attrb IN ( '$Institute$' )\r\n" + + "AND d.fund_acct IN ( '$Fund$' )\r\n" + + "AND d.cntrb_date >= '$From_Date$'\r\n" + + "AND d.cntrb_date <= '$Thru_Date$'\r\n" + + "GROUP BY d.id;"; + String result = "SELECT SUM (d.amt)\r\n" + + "FROM summit.cntrb_detail d\r\n" + + "GROUP BY d.id;"; + removeCondition remove = new removeCondition( sql, + EDbVendor.dbvmssql, + null ); + Assert.assertEquals( remove.getRemoveResult( ), result ); + } + + public void testSQLFromFile( ) + { + SqlFileList fileList = new SqlFileList( testFilesDirectory, + containsSubFolder, + testFileSuffix ); + if ( fileList.sqlfiles != null ) + { + for ( int i = 0; i < fileList.sqlfiles.size( ); i++ ) + { + String filePath = fileList.sqlfiles.get( i ); + String xmlFilePath = filePath.replaceAll( "(?i)" + + Pattern.quote( testFileSuffix ), + ".txt" ); + System.out.println(filePath); + File xmlFile = new File( xmlFilePath ); + File sqlFile = new File( filePath ); + if ( xmlFile.exists( ) && sqlFile.exists( ) ) + { + removeCondition remove = new removeCondition( sqlFile, + EDbVendor.dbvoracle, + conditionMap ); + + String result = remove.getRemoveResult( ).replaceAll("\\s+", " ").trim().toLowerCase(); + String result1 = getContent( xmlFile ).replaceAll("\\s+", " ").trim().toLowerCase(); + + Assert.assertTrue(result.equals(result1)); + } + } + } + } + + private String getContent( File file ) + { + try + { + ByteArrayOutputStream out = new ByteArrayOutputStream( 4096 ); + byte[] tmp = new byte[4096]; + InputStream is = new BufferedInputStream( new FileInputStream( file ) ); + while ( true ) + { + int r = is.read( tmp ); + if ( r == -1 ) + break; + out.write( tmp, 0, r ); + } + byte[] bytes = out.toByteArray( ); + is.close( ); + out.close( ); + String content = new String( bytes ); + return content.trim( ); + } + catch ( IOException e ) + { + e.printStackTrace( ); + } + return null; + } +} diff --git a/src/test/java/removeSpecialConditions/testRemoveSpecialConditions.java b/src/test/java/gudusoft/gsqlparser/removeSpecialConditionsTest/testRemoveSpecialConditions.java similarity index 99% rename from src/test/java/removeSpecialConditions/testRemoveSpecialConditions.java rename to src/test/java/gudusoft/gsqlparser/removeSpecialConditionsTest/testRemoveSpecialConditions.java index 8f3bcea5..142a283b 100644 --- a/src/test/java/removeSpecialConditions/testRemoveSpecialConditions.java +++ b/src/test/java/gudusoft/gsqlparser/removeSpecialConditionsTest/testRemoveSpecialConditions.java @@ -1,4 +1,4 @@ -package removeSpecialConditions; +package gudusoft.gsqlparser.removeSpecialConditionsTest; import demos.removeSpecialConditions.RemoveCondition; import gudusoft.gsqlparser.EDbVendor; @@ -85,7 +85,7 @@ public void test1() { rmvColumnListWithout$.add("$To_Date$"); rmvColumnListWithout$.add("$OUMI_Departments$"); - EDbVendor vendor = TGSqlParser.getDBVendorByName("mssql"); + EDbVendor vendor = TGSqlParser.getDBVendorByName("gudusoft/gsqlparser"); RemoveCondition rc = new RemoveCondition(sql,vendor,rmvColumnListWithout$); @@ -242,7 +242,7 @@ public void test3() { rmvColumnListWithout$.add("$User$"); rmvColumnListWithout$.add("$UserDisableAttrb$"); rmvColumnListWithout$.add("$GroupDisableAttrb$"); - EDbVendor vendor = TGSqlParser.getDBVendorByName("mssql"); + EDbVendor vendor = TGSqlParser.getDBVendorByName("gudusoft/gsqlparser"); RemoveCondition rc = new RemoveCondition(sql,vendor,rmvColumnListWithout$); diff --git a/src/test/java/scriptWriter/testColumnAlias.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testColumnAlias.java similarity index 96% rename from src/test/java/scriptWriter/testColumnAlias.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testColumnAlias.java index 481599f5..fa6b9a16 100644 --- a/src/test/java/scriptWriter/testColumnAlias.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testColumnAlias.java @@ -1,4 +1,4 @@ -package scriptWriter; +package gudusoft.gsqlparser.scriptWriterTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/scriptWriter/testCreateNode.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testCreateNode.java similarity index 97% rename from src/test/java/scriptWriter/testCreateNode.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testCreateNode.java index 97b438bb..284c3ec9 100644 --- a/src/test/java/scriptWriter/testCreateNode.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testCreateNode.java @@ -1,1791 +1,1791 @@ - -package scriptWriter; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.oracle.TInvokerRightsClause; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TCaseOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import gudusoft.gsqlparser.stmt.*; -import gudusoft.gsqlparser.stmt.mssql.TMssqlBlock; -import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare; -import gudusoft.gsqlparser.stmt.mssql.TMssqlExecute; -import gudusoft.gsqlparser.stmt.mssql.TMssqlIfElse; -import gudusoft.gsqlparser.stmt.mssql.TMssqlPrint; -import gudusoft.gsqlparser.stmt.mssql.TMssqlRaiserror; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; -import junit.framework.TestCase; - -import java.util.ArrayList; - - -public class testCreateNode extends TestCase -{ - - private TGSqlParser OracleParser = null; - private TGSqlParser SQLServerParser = null; - - - protected void setUp() throws Exception { - super.setUp(); - OracleParser = new TGSqlParser(EDbVendor.dbvoracle); - SQLServerParser = new TGSqlParser(EDbVendor.dbvmssql); - - } - - protected void tearDown() throws Exception { - OracleParser = null; - SQLServerParser = null; - super.tearDown(); - } - - public void testCreateSourceToken( ) - { - TSourceToken st = new TSourceToken("AToken"); - assertTrue(st.toScript().equalsIgnoreCase("AToken")); - - //TGSqlParser sqlParser= new TGSqlParser(EDbVendor.dbvmssql); - } - - public void testCreateObjectname( ) - { - // use new constructor to create an object name - TObjectName tableName = TObjectName.createObjectName ( EDbVendor.dbvoracle, EDbObjectType.table, new TSourceToken("ATable")); - assertTrue(tableName.toScript().equalsIgnoreCase("ATable")); - - // TObjectName columnName = new TObjectName(EDbObjectType.column,new TSourceToken("ATable"),new TSourceToken("AColumn")); - TObjectName columnName = TObjectName.createObjectName (EDbVendor.dbvoracle, EDbObjectType.column,new TSourceToken("ATable"),new TSourceToken("AColumn")); - assertTrue(columnName.toScript().equalsIgnoreCase("ATable.AColumn")); - - // use parseObjectName() method to create a three parts object name - TGSqlParser sqlParser= new TGSqlParser(EDbVendor.dbvmssql); - columnName = sqlParser.parseObjectName("scott.emp.salary"); - assertTrue(columnName.toScript().equalsIgnoreCase("scott.emp.salary")); - } - - public void testCreateConstant( ) - { - // use new constructor to create constant - TConstant numberConstant = new TConstant(ELiteralType.etNumber,new TSourceToken("9.1")); - assertTrue(numberConstant.toScript().equalsIgnoreCase("9.1")); - - // use parseConstant() method to create constant - TGSqlParser sqlParser= new TGSqlParser(EDbVendor.dbvmssql); - numberConstant = sqlParser.parseConstant("9.1"); - assertTrue(numberConstant.toScript().equalsIgnoreCase("9.1")); - } - - public void testCreateFunction( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmssql); - TFunctionCall functionCall = sqlParser.parseFunctionCall("fx(a1,a2)"); - assertTrue( functionCall.getFunctionName( ) - .toScript() - .equalsIgnoreCase( "fx" ) ); - } - - - public void testCreateSubquery( ) { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmssql); - - String subQueryStr = " SELECT *\r\n" - + " FROM CompanyData.dbo.Customers_33\r\n" - + " UNION ALL\r\n" - + " SELECT *\r\n" - + " FROM Server2.CompanyData.dbo.Customers_66\r\n" - + " UNION ALL\r\n" - + " SELECT *\r\n" - + " FROM Server3.CompanyData.dbo.Customers_99"; - - TSelectSqlStatement subquery = sqlParser.parseSubquery(subQueryStr); - } - - public void testCreateTable( ) - { - - TCreateTableSqlStatement createTable = new TCreateTableSqlStatement( EDbVendor.dbvoracle ); - - TTable table = new TTable( ); - table.setTableName( OracleParser.parseObjectName( "newTable" ) ); - createTable.setTargetTable( table ); - - TColumnDefinitionList columns = new TColumnDefinitionList( ); - createTable.setColumnList( columns ); - - TColumnDefinition column1 = new TColumnDefinition( ); - columns.addColumn( column1 ); - column1.setColumnName( OracleParser.parseObjectName("column1") ); - TTypeName datatype1 = new TTypeName( ); - datatype1.setDataType( EDataType.number_t ); - datatype1.setPrecision(OracleParser.parseConstant("10")); - datatype1.setScale( OracleParser.parseConstant("2") ); - column1.setDatatype( datatype1 ); - - TConstraintList constraintList1 = new TConstraintList( ); - column1.setConstraints( constraintList1 ); - TConstraint constraint1 = new TConstraint( ); - constraintList1.addConstraint( constraint1 ); - constraint1.setConstraint_type( EConstraintType.primary_key ); - - TColumnDefinition column2 = new TColumnDefinition( ); - columns.addColumn( column2 ); - column2.setColumnName( OracleParser.parseObjectName("column2") ); - TTypeName datatype2 = new TTypeName( ); - datatype2.setDataType( EDataType.char_t ); - datatype2.setLength( OracleParser.parseConstant("10") ); - column2.setDatatype( datatype2 ); - - TConstraintList constraintList2 = new TConstraintList( ); - column2.setConstraints( constraintList2 ); - TConstraint constraint2 = new TConstraint( ); - constraintList2.addConstraint( constraint2 ); - constraint2.setConstraint_type( EConstraintType.notnull ); - - TColumnDefinition column3 = new TColumnDefinition( ); - columns.addColumn( column3 ); - column3.setColumnName( OracleParser.parseObjectName("title") ); - TTypeName datatype3 = new TTypeName( ); - datatype3.setDataType( EDataType.varchar_t ); - datatype3.setLength( OracleParser.parseConstant("20") ); - column3.setDatatype( datatype3 ); - - TConstraintList constraintList3 = new TConstraintList( ); - column3.setConstraints( constraintList3 ); - TConstraint constraint3 = new TConstraint( ); - constraintList3.addConstraint( constraint3 ); - constraint3.setConstraint_type( EConstraintType.default_value ); - constraint3.setDefaultExpression(OracleParser.parseExpression("'manager'")); - - TColumnDefinition column4 = new TColumnDefinition( ); - columns.addColumn( column4 ); - column4.setColumnName( OracleParser.parseObjectName("column4") ); - TTypeName datatype4 = new TTypeName( ); - datatype4.setDataType( EDataType.integer_t ); - column4.setDatatype( datatype4 ); - - TConstraintList constraintList4 = new TConstraintList( ); - column4.setConstraints( constraintList4 ); - TConstraint constraint4 = new TConstraint( ); - constraintList4.addConstraint( constraint4 ); - constraint4.setConstraint_type( EConstraintType.reference ); - constraint4.setReferencedObject( OracleParser.parseObjectName("table2") ); - - TObjectNameList referencedColumns = new TObjectNameList( ); - referencedColumns.addObjectName( OracleParser.parseObjectName("ref_column") ); - constraint4.setReferencedColumnList( referencedColumns ); - - TConstraintList tableConstraints = new TConstraintList( ); - createTable.setTableConstraints( tableConstraints ); - TConstraint tableConstraint = new TConstraint( ); - tableConstraints.addConstraint( tableConstraint ); - tableConstraint.setConstraint_type( EConstraintType.foreign_key ); - tableConstraint.setReferencedObject( OracleParser.parseObjectName("table3") ); - - TPTNodeList Columns = new TPTNodeList( ); - Columns.addNode( new TColumnWithSortOrder( - OracleParser.parseObjectName( "column1" ) ) ); - Columns.addNode( new TColumnWithSortOrder( - OracleParser.parseObjectName( "column2" ) ) ); - tableConstraint.setColumnList( Columns ); - - TObjectNameList referencedColumns2 = new TObjectNameList( ); - referencedColumns2.addObjectName( OracleParser.parseObjectName("ref_column1") ); - referencedColumns2.addObjectName( OracleParser.parseObjectName("ref_column2") ); - tableConstraint.setReferencedColumnList( referencedColumns2 ); - - // System.out.println(scriptGenerator.generateScript(createTable, - // true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,createTable.toScript() - ,"CREATE TABLE newtable(column1 NUMBER (10,2) PRIMARY KEY,\n" - + " column2 CHAR (10) NOT NULL,\n" - + " title VARCHAR (20) DEFAULT 'manager',\n" - + " column4 INTEGER REFERENCES table2(ref_column),\n" - + " FOREIGN KEY (column1,column2) REFERENCES table3(ref_column1,ref_column2) )" - )); - - } - - public void testMssqlCreateTrigger( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TStatementList stmts = new TStatementList( ); - - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText( SQLServerParser.parseExpression("50009") ); - error.setSeverity( SQLServerParser.parseExpression("16") ); - error.setState(SQLServerParser.parseExpression("10")); - - stmts.add( error ); - - createTrigger.setBodyStatements( stmts ); - - String createTriggerQuery = "CREATE TRIGGER reminder\r\n" - + "ON titles\r\n" - + "FOR INSERT , UPDATE\r\n" - + "AS RAISERROR (50009,16,10)"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - } - - public void testMssqlCreateTrigger1( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - TStatementList stmts = new TStatementList( ); - - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText( SQLServerParser.parseExpression("50009") ); - error.setSeverity( SQLServerParser.parseExpression("16") ); - error.setState(SQLServerParser.parseExpression("10")); - - stmts.add( error ); - - createTrigger.setBodyStatements( stmts ); - - String createTriggerQuery = "CREATE TRIGGER reminder\r\n" - + "ON titles\r\n" - + "instead of INSERT , UPDATE\r\n" - + "AS RAISERROR (50009,16,10)"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - - } - - public void testMssqlAlterTrigger2( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - createTrigger.setAlterTrigger( true ); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TStatementList stmts = new TStatementList( ); - - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText( SQLServerParser.parseExpression("50009") ); - error.setSeverity( SQLServerParser.parseExpression("16") ); - error.setState(SQLServerParser.parseExpression("10")); - - stmts.add( error ); - - createTrigger.setBodyStatements( stmts ); - - String createTriggerQuery = "ALTER TRIGGER reminder\r\n" - + "ON titles\r\n" - + "instead of INSERT , UPDATE\r\n" - + "AS RAISERROR (50009,16,10)"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - } - - public void testMssqlCreateTrigger3( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - TMssqlIfElse ifstmt = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifstmt.setCondition(SQLServerParser.parseExpression("update(col1)")); - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText(SQLServerParser.parseExpression("50009")); - error.setSeverity( SQLServerParser.parseExpression("16") ); - error.setState( SQLServerParser.parseExpression("10") ); - ifstmt.setStmt( error ); - - createTrigger.getBodyStatements( ).add( ifstmt ); - - String createTriggerQuery = "CREATE TRIGGER reminder\r\n" - + "ON titles\r\n" - + "instead of INSERT , UPDATE\r\n" - + "AS if update(col1) RAISERROR (50009,16,10)"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - } - - public void testMssqlCreateTrigger4( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - TMssqlIfElse ifstmt = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifstmt.setCondition(SQLServerParser.parseExpression("update(col1)")); - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText(SQLServerParser.parseExpression("50009")); - error.setSeverity( SQLServerParser.parseExpression("16") ); - error.setState( SQLServerParser.parseExpression("10") ); - TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); - block.getBodyStatements( ).add( error ); - ifstmt.setStmt( block ); - - createTrigger.getBodyStatements( ).add( ifstmt ); - - String createTriggerQuery = "CREATE TRIGGER reminder\r\n" - + "ON titles\r\n" - + "instead of INSERT , UPDATE\r\n" - + "AS if update(col1)\r\n" - + " begin \r\n" - + " RAISERROR (50009,16,10)\r\n" - + " end"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - } - - public void testMssqlCreateTrigger5( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem0 = new TDmlEventItem(); - dmlEventItem0.setDmlType(ESqlStatementType.sstdelete); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem0); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TMssqlExecute exec = new TMssqlExecute( EDbVendor.dbvmssql ); - exec.setModuleName(SQLServerParser.parseObjectName("master..xp_sendmail")); - TExecParameterList params = new TExecParameterList( ); - TExecParameter param1 = new TExecParameter( ); - param1.setParameterValue( SQLServerParser.parseExpression("'MaryM'") ); - params.addExecParameter( param1 ); - TExecParameter param2 = new TExecParameter( ); - param2.setParameterValue(SQLServerParser.parseExpression("'Don''t forget to print a report for the distributors.'")); - params.addExecParameter( param2 ); - exec.setParameters( params ); - createTrigger.getBodyStatements( ).add( exec ); - - String createTriggerQuery = "CREATE TRIGGER reminder\r\n" - + "ON titles\r\n" - + "instead of DELETE , INSERT , UPDATE\r\n" - + "AS EXEC master..xp_sendmail 'MaryM',\r\n" - + " 'Don''t forget to print a report for the distributors.'"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - } - - public void testMssqlCreateTrigger6( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("employee_insupd")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("employee")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TMssqlDeclare declare = new TMssqlDeclare( EDbVendor.dbvmssql ); - TDeclareVariableList vars = new TDeclareVariableList( ); - TDeclareVariable var = new TDeclareVariable( ); - var.setVariableName( SQLServerParser.parseObjectName("@min_lvl") ); - TTypeName datatype = new TTypeName( ); - datatype.setDataType( EDataType.tinyint_t ); - var.setDatatype( datatype ); - vars.addDeclareVariable( var ); - - TDeclareVariable var1 = new TDeclareVariable( ); - var1.setVariableName( SQLServerParser.parseObjectName("@max_lvl") ); - TTypeName datatype1 = new TTypeName( ); - datatype1.setDataType( EDataType.tinyint_t ); - var1.setDatatype( datatype1 ); - vars.addDeclareVariable( var1 ); - - TDeclareVariable var2 = new TDeclareVariable( ); - var2.setVariableName( SQLServerParser.parseObjectName("@emp_lvl") ); - TTypeName datatype2 = new TTypeName( ); - datatype2.setDataType( EDataType.tinyint_t ); - var2.setDatatype( datatype2 ); - vars.addDeclareVariable( var2 ); - - TDeclareVariable var3 = new TDeclareVariable( ); - var3.setVariableName( SQLServerParser.parseObjectName("@job_id") ); - TTypeName datatype3 = new TTypeName( ); - datatype3.setDataType( EDataType.smallint_t ); - var3.setDatatype( datatype3 ); - vars.addDeclareVariable( var3 ); - - declare.setVariables( vars ); - - createTrigger.getBodyStatements( ).add( declare ); - createTrigger.getBodyStatements( ) - .add( SQLServerParser.parseSubquery ( "SELECT @min_lvl = min_lvl,\r\n" - + " @max_lvl = max_lvl,\r\n" - + " @emp_lvl = i.job_lvl,\r\n" - + " @job_id = i.job_id\r\n" - + "FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id\r\n" - + " JOIN jobs j ON j.job_id = i.job_id" ) ); - - TMssqlIfElse ifElse = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifElse.setCondition( SQLServerParser.parseExpression("(@job_id = 1) and (@emp_lvl <> 10)") ); - - TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText( new TExpression(SQLServerParser.parseConstant("'Job id 1 expects the default level of 10.'") )); - error.setSeverity( new TExpression(SQLServerParser.parseConstant("16")) ); - error.setState( new TExpression(SQLServerParser.parseConstant("1")) ); - block.getBodyStatements( ).add( error ); - - // TMssqlRollback rollback = new TMssqlRollback( EDbVendor.dbvmssql ); - // rollback.setTrans_or_work( new TSourceToken( "transaction" ) ); - // block.getBodyStatements( ).add( rollback ); - - ifElse.setStmt( block ); - - TMssqlIfElse ifStmt = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifStmt.setCondition( SQLServerParser.parseExpression("NOT(@emp_lvl BETWEEN @min_lvl AND @max_lvl)") ); - - TMssqlBlock block1 = new TMssqlBlock( EDbVendor.dbvmssql ); - TMssqlRaiserror error1 = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error1.setMessageText(new TExpression(SQLServerParser.parseConstant("'The level for job_id:%d should be between %d and %d.'")) ); - error1.setSeverity( new TExpression(SQLServerParser.parseConstant("16")) ); - error1.setState( new TExpression(SQLServerParser.parseConstant("1")) ); - TExpressionList expressions = new TExpressionList( ); - expressions.addExpression( new TExpression(SQLServerParser.parseObjectName("@job_id")) ); - expressions.addExpression( new TExpression(SQLServerParser.parseObjectName("@min_lvl")) ); - expressions.addExpression( new TExpression(SQLServerParser.parseObjectName("@max_lvl")) ); - error1.setArgs( expressions ); - block1.getBodyStatements( ).add( error1 ); - - // TMssqlRollback rollback1 = new TMssqlRollback( EDbVendor.dbvmssql ); - // rollback1.setTrans_or_work( new TSourceToken( "transaction" ) ); - // block1.getBodyStatements( ).add( rollback ); - ifStmt.setStmt( block1 ); - - ifElse.setElseStmt( ifStmt ); - createTrigger.getBodyStatements( ).add( ifElse ); - - String createTriggerQuery = "CREATE TRIGGER employee_insupd\r\n" - + "ON employee\r\n" - + "FOR INSERT , UPDATE\r\n" - + "AS\r\n" - + "DECLARE @min_lvl tinyint,\r\n" - + " @max_lvl tinyint,\r\n" - + " @emp_lvl tinyint,\r\n" - + " @job_id smallint ;\r\n" - + "SELECT @min_lvl = min_lvl,\r\n" - + " @max_lvl = max_lvl,\r\n" - + " @emp_lvl = i.job_lvl,\r\n" - + " @job_id = i.job_id\r\n" - + "FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id\r\n" - + " JOIN jobs j ON j.job_id = i.job_id;\r\n" - + "IF (@job_id = 1) and (@emp_lvl <> 10)\r\n" - + "BEGIN \r\n" - + " RAISERROR ('Job id 1 expects the default level of 10.',16,1)\r\n" - // + " ROLLBACK TRANSACTION\r\n" - + "END \r\n" - + "ELSE \r\n" - + "IF NOT(@emp_lvl BETWEEN @min_lvl AND @max_lvl)\r\n" - + "BEGIN \r\n" - + " RAISERROR ('The level for job_id:%d should be between %d and %d.'," - + "16,1,@job_id,@min_lvl,@max_lvl)\r\n" - // + " ROLLBACK TRANSACTION\r\n" - + "END ;"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - } - - public void testMssqlCreateTrigger7( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("trig1")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("authors")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem0 = new TDmlEventItem(); - dmlEventItem0.setDmlType(ESqlStatementType.sstdelete); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem0); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - createTrigger.getBodyStatements( ) - .add( SQLServerParser.parseSubquery("SELECT a.au_lname, a.au_fname, x.info\r\n" - + "FROM authors a INNER JOIN does_not_exist x\r\n" - + " ON a.au_id = x.au_id") ); - - String createTriggerQuery = "CREATE TRIGGER trig1\r\n" - + "on authors\r\n" - + "FOR DELETE , INSERT , UPDATE\r\n" - + "AS\r\n" - + " SELECT a.au_lname, a.au_fname, x.info\r\n" - + " FROM authors a INNER JOIN does_not_exist x\r\n" - + " ON a.au_id = x.au_id"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - } - - public void testMssqlCreateTrigger8( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("trig2")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("authors")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - TMssqlDeclare declare = new TMssqlDeclare( EDbVendor.dbvmssql ); - TDeclareVariableList vars = new TDeclareVariableList( ); - TDeclareVariable var = new TDeclareVariable( ); - var.setVariableName( SQLServerParser.parseObjectName("@fax") ); - TTypeName datatype = new TTypeName( ); - datatype.setDataType(EDataType.varchar_t); - datatype.setLength( SQLServerParser.parseConstant("12") ); - var.setDatatype( datatype ); - vars.addDeclareVariable( var ); - declare.setVariables( vars ); - - createTrigger.getBodyStatements( ).add( declare ); - - createTrigger.getBodyStatements( ) - .add( SQLServerParser.parseSubquery("SELECT @fax = phone\r\n" - + "FROM authors") ); - - String createTriggerQuery = "CREATE TRIGGER trig2\r\n" - + "ON authors\r\n" - + "FOR INSERT , UPDATE\r\n" - + "AS\r\n" - + " DECLARE @fax varchar (12);\r\n" - + " SELECT @fax = phone\r\n" - + " FROM authors;"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - , createTrigger.toScript() - , createTriggerQuery - )); - } - - public void testMssqlCreateTrigger9( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("updEmployeeData")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("employeeData")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TMssqlIfElse ifElse = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifElse.setCondition( SQLServerParser.parseExpression("(COLUMNS_UPDATED() & 14) > 0") ); - - TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); - - TInsertSqlStatement insert = new TInsertSqlStatement( EDbVendor.dbvmssql ); - TTable insertTable = new TTable( ); - insertTable.setTableName( SQLServerParser.parseObjectName("auditEmployeeData") ); - insert.setTargetTable( insertTable ); - - TObjectNameList columnNameList = new TObjectNameList( ); - insert.setColumnList( columnNameList ); - columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_log_type") ); - columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_id") ); - columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_bankAccountNumber") ); - columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_salary") ); - columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_SSN") ); - - insert.setSubQuery( SQLServerParser.parseSubquery("SELECT 'OLD',\r\n" - + " del.emp_id,\r\n" - + " del.emp_bankAccountNumber,\r\n" - + " del.emp_salary,\r\n" - + " del.emp_SSN\r\n" - + "FROM deleted del") ); - - block.getBodyStatements( ).add( insert ); - - TInsertSqlStatement insert1 = new TInsertSqlStatement( EDbVendor.dbvmssql ); - TTable insertTable1 = new TTable( ); - insertTable1.setTableName( SQLServerParser.parseObjectName("auditEmployeeData") ); - insert1.setTargetTable( insertTable1 ); - - TObjectNameList columnNameList1 = new TObjectNameList( ); - insert1.setColumnList( columnNameList1 ); - columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_log_type") ); - columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_id") ); - columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_bankAccountNumber") ); - columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_salary") ); - columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_SSN") ); - - insert1.setSubQuery( SQLServerParser.parseSubquery("SELECT 'NEW',\r\n" - + " ins.emp_id,\r\n" - + " ins.emp_bankAccountNumber,\r\n" - + " ins.emp_salary,\r\n" - + " ins.emp_SSN\r\n" - + "FROM inserted ins") ); - block.getBodyStatements( ).add( insert1 ); - - ifElse.setStmt( block ); - createTrigger.getBodyStatements( ).add( ifElse ); - - String createTriggerQuery = "CREATE TRIGGER updEmployeeData\r\n" - + "ON employeeData\r\n" - + "FOR update\r\n" - + "AS\r\n" - + " IF (COLUMNS_UPDATED() & 14) > 0\r\n" - + " BEGIN \r\n" - + " INSERT INTO auditEmployeeData\r\n" - + " (audit_log_type,\r\n" - + " audit_emp_id,\r\n" - + " audit_emp_bankAccountNumber,\r\n" - + " audit_emp_salary,\r\n" - + " audit_emp_SSN)\r\n" - + " SELECT 'OLD',\r\n" - + " del.emp_id,\r\n" - + " del.emp_bankAccountNumber,\r\n" - + " del.emp_salary,\r\n" - + " del.emp_SSN\r\n" - + " FROM deleted del;\r\n" - + " INSERT INTO auditEmployeeData\r\n" - + " (audit_log_type,\r\n" - + " audit_emp_id,\r\n" - + " audit_emp_bankAccountNumber,\r\n" - + " audit_emp_salary,\r\n" - + " audit_emp_SSN)\r\n" - + " SELECT 'NEW',\r\n" - + " ins.emp_id,\r\n" - + " ins.emp_bankAccountNumber,\r\n" - + " ins.emp_salary,\r\n" - + " ins.emp_SSN\r\n" - + " FROM inserted ins;\r\n" - + " END"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - , createTrigger.toScript() - , createTriggerQuery - )); - } - - public void testMssqlCreateTrigger10( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("tr1")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("Customers")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TMssqlIfElse ifStmt = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifStmt.setCondition(SQLServerParser.parseExpression("( (SUBSTRING(COLUMNS_UPDATED(),1,1)=power(2,(3 - 1))\r\n" - + " + power(2,(5 - 1)))\r\n" - + " AND (SUBSTRING(COLUMNS_UPDATED(),2,1)=power(2,(1 - 1)))\r\n )")); - - TMssqlPrint print = new TMssqlPrint( EDbVendor.dbvmssql ); - TExpressionList expressionList = new TExpressionList( ); - expressionList.addExpression( SQLServerParser.parseExpression("'Columns 3, 5 and 9 updated'") ); - print.setMessages( expressionList ); - ifStmt.setStmt( print ); - - createTrigger.getBodyStatements( ).add( ifStmt ); - - String createTriggerQuery = "CREATE TRIGGER tr1 ON Customers\r\n" - + "FOR UPDATE\r\nAS\r\n" - + " IF ( (SUBSTRING(COLUMNS_UPDATED(),1,1)=power(2,(3 - 1))\r\n" - + " + power(2,(5 - 1)))\r\n" - + " AND (SUBSTRING(COLUMNS_UPDATED(),2,1)=power(2,(1 - 1)))\r\n" - + " )\r\n" - + " PRINT 'Columns 3, 5 and 9 updated'"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - , createTrigger.toScript() - , createTriggerQuery - )); - } - - public void testCreateView( ) - { - TCreateViewSqlStatement createView = new TCreateViewSqlStatement( EDbVendor.dbvoracle ); - - createView.setViewName(SQLServerParser.parseObjectName("vNessusTargetHostExtract")); - - String subQuery = "SELECT LoadKey, vcHost, CASE WHEN iPluginid = 12053 THEN SUBSTRING(vcResult,CHARINDEX('resolves as',vcResult) + 12,(DATALENGTH(vcResult) - 1)\n" - + " - (CHARINDEX('resolves as',vcResult) + 12)) ELSE 'No registered hostname' END AS vcHostName, vcport, LoadedOn, iRecordTypeID,\n" - + " iAgentProcessID, iTableID\n" - + "FROM dbo.vNessusResultExtract"; - createView.setSubquery( OracleParser.parseSubquery(subQuery) ); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,createView.toScript() - ,"CREATE VIEW vNessusTargetHostExtract\nAS \n" - + subQuery - )); - - } - - public void testQualifiedNameWithServer(){ - String query = "select * FROM Server2.CompanyData.dbo.Customers_66"; - SQLServerParser.sqltext = query; - SQLServerParser.parse(); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , SQLServerParser.sqlstatements.get(0).toScript() - , SQLServerParser.sqlstatements.get(0).toScript().toString() - )); - } - - public void testCreateView2( ) - { - TCreateViewSqlStatement createView = new TCreateViewSqlStatement( EDbVendor.dbvmssql ); - - createView.setViewName(SQLServerParser.parseObjectName("Customers")); - - String subQuery = " SELECT *\r\n" - + " FROM CompanyData.dbo.Customers_33\r\n" - + " UNION ALL\r\n" - + " SELECT *\r\n" - + " FROM Server2.CompanyData.dbo.Customers_66\r\n" - + " UNION ALL\r\n" - + " SELECT *\r\n" - + " FROM Server3.CompanyData.dbo.Customers_99"; - createView.setSubquery( SQLServerParser.parseSubquery(subQuery) ); - //System.out.print(createView.toScript()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - , createView.toScript() - , "CREATE VIEW Customers\nAS \n" - + subQuery - )); - - } - - public void testCreateIndex( ) - { - TCreateIndexSqlStatement createIndex = new TCreateIndexSqlStatement( EDbVendor.dbvmssql ); - - createIndex.setIndexName(SQLServerParser.parseObjectName("IX_TransactionHistory_ReferenceOrderID")); - createIndex.setNonClustered( true ); - createIndex.setTableName(SQLServerParser.parseObjectName("Production.TransactionHistory")); - TOrderByItemList items = new TOrderByItemList( ); - TOrderByItem item = new TOrderByItem( ); - item.setSortKey( new TExpression(SQLServerParser.parseObjectName("ReferenceOrderID") )); - items.addOrderByItem( item ); - createIndex.setColumnNameList(items); - - createIndex.setFilegroupOrPartitionSchemeName( SQLServerParser.parseObjectName("TransactionsPS1") ); - createIndex.setPartitionSchemeColumns(new TObjectNameList()); - createIndex.getPartitionSchemeColumns( ) - .addObjectName(SQLServerParser.parseObjectName("TransactionDate")); - - String createIndexQuery = "CREATE NONCLUSTERED INDEX IX_TransactionHistory_ReferenceOrderID\r\n" - + "ON Production.TransactionHistory (ReferenceOrderID)\r\nON TransactionsPS1 (TransactionDate)"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createIndex.toScript() - ,createIndexQuery - )); - } - - public void testCreateUniqueIndex( ) - { - TCreateIndexSqlStatement createIndex = new TCreateIndexSqlStatement( EDbVendor.dbvmssql ); - - createIndex.setIndexName(SQLServerParser.parseObjectName("AK_UnitMeasure_Name")); - createIndex.setIndexType( EIndexType.itUnique ); -// createIndex.getCreateIndexNode( ) -// .setTableName( sqlParser.parseObjectName( "Production.UnitMeasure" ) ); - createIndex.setTableName(SQLServerParser.parseObjectName("Production.UnitMeasure")); - TOrderByItemList items = new TOrderByItemList( ); - TOrderByItem item = new TOrderByItem( ); - item.setSortKey( new TExpression(SQLServerParser.parseObjectName("Name") )); - items.addOrderByItem( item ); -// createIndex.getCreateIndexNode( ).setColumnNameList( items ); - createIndex.setColumnNameList(items); - - String createIndexQuery = "CREATE UNIQUE INDEX AK_UnitMeasure_Name\n" - + " ON Production.UnitMeasure (Name)"; -// System.out.print(scriptGenerator.generateScript( createIndex, true )); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createIndex.toScript() - ,createIndexQuery - )); - - } - - public void testCreateViewWithAlias( ) - { - TCreateViewSqlStatement createView = new TCreateViewSqlStatement( EDbVendor.dbvoracle ); - - createView.setViewName(OracleParser.parseObjectName("test1")); - createView.setStReplace( new TSourceToken( "replace" ) ); - - TViewAliasItemList itemList = new TViewAliasItemList( ); - TViewAliasItem item = new TViewAliasItem( ); - item.setAlias( OracleParser.parseObjectName("account_name_alias") ); - itemList.addViewAliasItem(item); - TViewAliasItem item1 = new TViewAliasItem( ); - item1.setAlias(OracleParser.parseObjectName("account_number_alias")); - itemList.addViewAliasItem( item1 ); - - TViewAliasClause aliasClause = new TViewAliasClause( ); - aliasClause.setViewAliasItemList( itemList ); - - createView.setViewAliasClause( aliasClause );; - - String subQuery = "select account_name, account_number from \n" - + "AP10_BANK_ACCOUNTS t"; - createView.setSubquery( OracleParser.parseSubquery(subQuery) ); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createView.toScript() - ,"CREATE OR REPLACE VIEW test1(account_name_alias, account_number_alias)\nAS \n" - + subQuery - )); - - } - -// public void testMssqlCreateFunction( ) -// { -// TMssqlCreateFunction createFunction = new TMssqlCreateFunction( EDbVendor.dbvmssql ); -// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvmssql ); -// createFunction.setFunctionName( sqlParser.parseObjectName( "dbo.ufnGetStock" ) ); -// TParameterDeclarationList params = new TParameterDeclarationList( ); -// TParameterDeclaration param = new TParameterDeclaration( ); -// param.setParameterName( sqlParser.parseObjectName( "@ProductID" ) ); -// TTypeName dataType = new TTypeName( ); -// dataType.setDataType( EDataType.int_t ); -// param.setDataType( dataType ); -// params.addParameterDeclarationItem( param ); -// createFunction.setParameterDeclarations( params ); -// -// TTypeName returnDataType = new TTypeName( ); -// returnDataType.setDataType( EDataType.int_t ); -// createFunction.setReturnDataType( returnDataType ); -// -// TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); -// -// TMssqlDeclare declare = new TMssqlDeclare( EDbVendor.dbvmssql ); -// TDeclareVariableList vars = new TDeclareVariableList( ); -// TDeclareVariable var = new TDeclareVariable( ); -// var.setVariableName( sqlParser.parseObjectName( "@ret" ) ); -// TTypeName datatype = new TTypeName( ); -// datatype.setDataType( EDataType.int_t ); -// var.setDatatype( datatype ); -// vars.addDeclareVariable( var ); -// declare.setVariables( vars ); -// -// block.getBodyStatements( ).add( declare ); -// -// String selectQuery = "SELECT @ret = SUM(p.Quantity)\r\n" -// + " FROM Production.ProductInventory p\r\n" -// + " WHERE p.ProductID = @ProductID\r\n" -// + " AND p.LocationID = '6'"; -// block.getBodyStatements( ) -// .add( scriptGenerator.createSubquery( selectQuery ) ); -// -// TMssqlIfElse ifElse = new TMssqlIfElse( EDbVendor.dbvmssql ); -// ifElse.setCondition( sqlParser.parseExpression( "@ret IS NULL" ) ); -// TMssqlSet setStmt = new TMssqlSet( EDbVendor.dbvmssql ); -// setStmt.setVarName( sqlParser.parseObjectName( "@ret" ) ); -// setStmt.setVarExpr( sqlParser.parseExpression( "0" ) ); -// ifElse.setStmt( setStmt ); -// -// block.getBodyStatements( ).add( ifElse ); -// -// TMssqlReturn returnStmt = new TMssqlReturn( EDbVendor.dbvmssql ); -// returnStmt.setReturnExpr( sqlParser.parseExpression( "@ret" ) ); -// block.getBodyStatements( ).add( returnStmt ); -// -// createFunction.getBodyStatements( ).add( block ); -// -// String createFunctionQuery = "CREATE FUNCTION dbo.ufnGetStock(@ProductID int)\r\n" -// + "RETURNS int\r\n" -// + "AS\r\n" -// + "BEGIN\r\n" -// + " DECLARE @ret int ; \r\n" -// + " SELECT @ret = SUM(p.Quantity)\r\n" -// + " FROM Production.ProductInventory p\r\n" -// + " WHERE p.ProductID = @ProductID\r\n" -// + " AND p.LocationID = '6'; \r\n" -// + " IF @ret IS NULL \r\n" -// + " SET @ret=0; \r\n" -// + " RETURN @ret; \r\n" -// + "END"; -// assertTrue( scriptGenerator.generateScript( createFunction, true ) -// .trim( ) -// .equalsIgnoreCase( formatSql( createFunctionQuery, -// EDbVendor.dbvmssql ).trim( ) ) ); -// } - - public void testOracleCreateProcedure( ) - { - TPlsqlCreateProcedure createProcedure = new TPlsqlCreateProcedure( EDbVendor.dbvoracle ); - - createProcedure.setProcedureName(OracleParser.parseObjectName("evaluate")); - - TParameterDeclarationList params = new TParameterDeclarationList( ); - TParameterDeclaration param = new TParameterDeclaration( ); - param.setParameterName( OracleParser.parseObjectName("my_empno") ); - TTypeName dataType = new TTypeName( ); - dataType.setDataType( EDataType.number_t ); - param.setDataType( dataType ); - params.addParameterDeclarationItem(param); - createProcedure.setParameterDeclarations(params); - - TInvokerRightsClause invoke = new TInvokerRightsClause( ); - invoke.setDefiner(OracleParser.parseObjectName("current_user")); - createProcedure.setInvokerRightsClause( invoke ); - - TVarDeclStmt variable = new TVarDeclStmt( EDbVendor.dbvoracle ); - variable.setElementName( OracleParser.parseObjectName("my_ename") ); - TTypeName datatype = new TTypeName( ); - datatype.setDataType( EDataType.varchar2_t ); - TConstant c = new TConstant( ELiteralType.etNumber,new TSourceToken("15") ); - //c.setStringValue( "15" ); - datatype.setLength( c ); - variable.setDataType( datatype ); - createProcedure.getDeclareStatements( ).add( variable ); - - String selectQuery = "SELECT ename INTO my_ename FROM emp WHERE empno = my_empno;"; - createProcedure.getBodyStatements( ) - .add( OracleParser.parseSubquery(selectQuery) ); - - String createProcedureQuery = "CREATE PROCEDURE evaluate(my_empno NUMBER) \r\n" - + "AUTHID CURRENT_USER AS \r\n" - + "my_ename VARCHAR2 (15); \r\n" - + "BEGIN \r\n" - + "SELECT ename INTO my_ename FROM emp WHERE empno = my_empno;\r\n" - + "END ;"; - - //System.out.println(createProcedure.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,createProcedure.toScript() - ,createProcedureQuery - )); - - } - - public void testDropIndex( ) - { - TDropIndexSqlStatement dropIndex = new TDropIndexSqlStatement( EDbVendor.dbvmssql ); - - - TDropIndexItemList itemList = new TDropIndexItemList( ); - TDropIndexItem item = new TDropIndexItem( ); - item.setIndexName(SQLServerParser.parseObjectName("IX_SalesPerson_SalesQuota_SalesYTD")); - item.setObjectName( SQLServerParser.parseObjectName("Sales.SalesPerson") ); - itemList.addDropIndexItem( item ); - dropIndex.setDropIndexItemList( itemList ); - - String dropIndexQuery = "DROP INDEX IX_SalesPerson_SalesQuota_SalesYTD ON Sales.SalesPerson"; - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,dropIndex.toScript() - ,dropIndexQuery - )); - - - } - - public void testUseDatabase( ) - { - TUseDatabase useDatabase = new TUseDatabase( EDbVendor.dbvmssql ); - - useDatabase.setDatabaseName(SQLServerParser.parseObjectName("AdventureWorks")); - - String useDatabaseQuery = "USE AdventureWorks"; - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,useDatabase.toScript() - ,useDatabaseQuery - )); - - } - - - public void testOracleIfStmt( ) - { - TIfStmt ifStmt = new TIfStmt( EDbVendor.dbvoracle ); - TExpression left = new TExpression(OracleParser.parseObjectName("ILevel")); - TExpression lowExpr = new TExpression(OracleParser.parseConstant("'Low Income'")); - TExpression avgExpr = new TExpression(OracleParser.parseConstant("'Avg Income'")); - TExpression highExpr = new TExpression(OracleParser.parseConstant("'High Income'")); - - ifStmt.setCondition(OracleParser.parseExpression("monthly_value <= 4000")); - ifStmt.getThenStatements( ) - .add( new TAssignStmt(left,lowExpr) ); - - TElsifStmt elsIf = new TElsifStmt( ); - elsIf.setCondition( OracleParser.parseExpression("monthly_value > 4000 and monthly_value <= 7000") ); - elsIf.getThenStatements( ) - .add( new TAssignStmt(left,avgExpr) ); - ifStmt.getElseifStatements( ).add( elsIf ); - ifStmt.getElseStatements( ) - .add( new TAssignStmt(left,highExpr) ); - - String ifQuery = "IF monthly_value <= 4000 THEN \r\n" - + " ILevel = 'Low Income'\r\n" - + " ELSIF monthly_value > 4000 and monthly_value <= 7000 THEN \r\n" - + " ILevel = 'Avg Income'\r\n" - + " ELSE ILevel = 'High Income'\r\n" - + " END IF"; - - //System.out.println(ifStmt.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , ifStmt.toScript() - , ifQuery - )); - - } - -// public void testMssqlIfStmt( ) -// { -// TMssqlIfElse ifStmt = new TMssqlIfElse( EDbVendor.dbvmssql ); -// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvmssql ); -// ifStmt.setCondition( sqlParser.parseExpression( "EXISTS (SELECT name FROM sys.indexes\r\n" -// + " WHERE name = N'IX_Address_PostalCode')" ) ); -// -// TDropIndexSqlStatement ifDrop = new TDropIndexSqlStatement( EDbVendor.dbvmssql ); -// ifDrop.setIndexName( sqlParser.parseObjectName( "IX_Address_PostalCode" ) ); -// TDropIndexItemList items = new TDropIndexItemList( ); -// TDropIndexItem item = new TDropIndexItem( ); -// item.setObjectName( sqlParser.parseObjectName( "Person.Address" ) ); -// items.addDropIndexItem( item ); -// ifDrop.setDropIndexItemList( items ); -// -// ifStmt.setStmt( ifDrop ); -// -// TDropIndexSqlStatement elseDrop = new TDropIndexSqlStatement( EDbVendor.dbvmssql ); -// elseDrop.setIndexName( sqlParser.parseObjectName( "IX_Address_PostalCode" ) ); -// TDropIndexItemList items1 = new TDropIndexItemList( ); -// TDropIndexItem item1 = new TDropIndexItem( ); -// item1.setObjectName( sqlParser.parseObjectName( "Person.NAME" ) ); -// items1.addDropIndexItem( item1 ); -// elseDrop.setDropIndexItemList( items1 ); -// -// ifStmt.setElseStmt( elseDrop ); -// -// String ifQuery = "IF EXISTS ( SELECT name FROM sys.indexes\r\n" -// + " WHERE name = N'IX_Address_PostalCode')\r\n" -// + " DROP INDEX IX_Address_PostalCode ON Person.Address\r\n" -// + "ELSE DROP INDEX IX_Address_PostalCode ON Person.NAME"; -// assertTrue( scriptGenerator.generateScript( ifStmt, true ) -// .trim( ) -// .toLowerCase( ) -// .equals( formatSql( ifQuery.trim( ), EDbVendor.dbvmssql ).toLowerCase( ) ) ); -// } - - String formatSql( String inputQuery, EDbVendor dbVendor ) - { - String Result = inputQuery; - TGSqlParser sqlparser = new TGSqlParser( dbVendor ); - sqlparser.sqltext = inputQuery; - int ret = sqlparser.parse( ); - if ( ret == 0 ) - { - GFmtOpt option = GFmtOptFactory.newInstance( ); - option.caseFuncname = TCaseOption.CoNoChange; - Result = FormatterFactory.pp( sqlparser, option ); - } - return Result; - } - - public void testInsertSubquery( ) - { - TInsertSqlStatement insert = new TInsertSqlStatement( EDbVendor.dbvoracle ); - - TTable table = new TTable( ); - table.setTableName(OracleParser.parseObjectName("table1")); - insert.setTargetTable( table ); - - TObjectNameList columnNameList = new TObjectNameList( ); - insert.setColumnList( columnNameList ); - columnNameList.addObjectName(OracleParser.parseObjectName("column1")); - columnNameList.addObjectName(OracleParser.parseObjectName("column2")); - - insert.setSubQuery( OracleParser.parseSubquery("select c1,c1 from table2") ); - - // System.out.println(scriptGenerator.generateScript(insert, true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,insert.toScript() - ,"INSERT INTO table1\n" - + " (column1,\n" - + " column2)\n" - + "SELECT c1,\n" - + " c1\n" - + "FROM table2" - )); - - - } - - public void testInsert( ) - { - TInsertSqlStatement insert = new TInsertSqlStatement( EDbVendor.dbvoracle ); - - TTable table = new TTable( ); - table.setTableName(OracleParser.parseObjectName("table1")); - insert.setTargetTable( table ); - - TObjectNameList columnNameList = new TObjectNameList( ); - insert.setColumnList( columnNameList ); - columnNameList.addObjectName(OracleParser.parseObjectName("column1")); - columnNameList.addObjectName(OracleParser.parseObjectName("column2")); - - TMultiTargetList values = new TMultiTargetList( ); - insert.setValues(values); - TMultiTarget multiTarget = new TMultiTarget( ); - values.addMultiTarget( multiTarget ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - multiTarget.setColumnList( resultColumnList ); - - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - resultColumn1.setExpr(OracleParser.parseExpression("1")); - - TResultColumn resultColumn2 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn2 ); - resultColumn2.setExpr(OracleParser.parseExpression("2")); - - // System.out.println(scriptGenerator.generateScript(insert, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,insert.toScript() - ,"INSERT INTO table1\n" - + " (column1,\n" - + " column2)\n" - + "VALUES (1,\n" - + " 2)" - )); - - } - - public void testUpdateMultiTable( ) - { - TUpdateSqlStatement update = new TUpdateSqlStatement( EDbVendor.dbvmssql ); - - TTable table = new TTable( ); - table.setTableName(SQLServerParser.parseObjectName("dbo.Table2")); - update.setTargetTable( table ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - update.setResultColumnList( resultColumnList ); - - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - TExpression left = SQLServerParser.parseExpression("dbo.Table2.ColB"); - TExpression right = SQLServerParser.parseExpression("dbo.Table2.ColB + dbo.Table1.ColB"); - resultColumn1.setExpr(new TExpression (EExpressionType.assignment_t, - left, - right)); - - TJoinList joinList = new TJoinList( ); - update.joins = joinList; - TJoin join = new TJoin( ); - joinList.addJoin( join ); - TTable table1 = new TTable( ); - join.setTable( table1 ); - table1.setTableName(SQLServerParser.parseObjectName("dbo.Table2")); - - TJoinItem joinItem = new TJoinItem( ); - join.getJoinItems( ).addJoinItem(joinItem); - joinItem.setJoinType(EJoinType.inner); - TTable joinTable = new TTable( ); - joinItem.setTable( joinTable ); - - joinTable.setTableName(SQLServerParser.parseObjectName("dbo.Table1")); - joinItem.setOnCondition( SQLServerParser.parseExpression("(dbo.Table2.ColA = dbo.Table1.ColA)") ); - - // System.out.println(scriptGenerator.generateScript(update, true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,update.toScript() - ,"UPDATE dbo.table2\n" - + "SET dbo.table2.colb=dbo.table2.colb + dbo.table1.colb FROM dbo.table2 INNER JOIN dbo.table1 ON (dbo.table2.cola = dbo.table1.cola)" - )); - - } - - public void testUpdate( ) - { - TUpdateSqlStatement update = new TUpdateSqlStatement( EDbVendor.dbvoracle ); - - TTable table = new TTable( ); - table.setTableName(OracleParser.parseObjectName("table1")); - update.setTargetTable( table ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - update.setResultColumnList( resultColumnList ); - - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - TExpression left = OracleParser.parseExpression("column1"); - TExpression right = OracleParser.parseExpression("1"); - - resultColumn1.setExpr( new TExpression (EExpressionType.assignment_t, - left, - right)); - - TResultColumn resultColumn2 = new TResultColumn( ); - resultColumnList.addResultColumn(resultColumn2); - TExpression left2 = OracleParser.parseExpression("column2"); - TExpression right2 = OracleParser.parseExpression("1"); - - resultColumn2.setExpr( new TExpression( EExpressionType.assignment_t, - left2, - right2 ) ); - - TWhereClause whereClause = new TWhereClause( ); - update.setWhereClause( whereClause ); - whereClause.setCondition( OracleParser.parseExpression("column3 > 250.00") ); - - // System.out.println(scriptGenerator.generateScript(update, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,update.toScript() - ,"UPDATE table1\n" - + "SET column1=1,\n" - + " column2=1\n" - + "WHERE column3 > 250.00" - )); - - } - - public void testDeleteMultiTable( ) - { - TDeleteSqlStatement delete = new TDeleteSqlStatement( EDbVendor.dbvmssql ); - delete.setFromKeyword( true ); - - TTable table = new TTable( ); - table.setTableName(SQLServerParser.parseObjectName("Sales.SalesPersonQuotaHistory ")); - delete.setTargetTable( table ); - - TJoinList joinList = new TJoinList( ); - delete.joins = joinList; - TJoin join = new TJoin( ); - joinList.addJoin( join ); - TTable table1 = new TTable( ); - join.setTable( table1 ); - table1.setTableName(SQLServerParser.parseObjectName("Sales.SalesPersonQuotaHistory")); - - TAliasClause aliasClause = new TAliasClause( ); - table1.setAliasClause( aliasClause ); - aliasClause.setHasAs( true ); - aliasClause.setAliasName(SQLServerParser.parseObjectName("spqh")); - - TJoinItem joinItem = new TJoinItem( ); - join.getJoinItems().addJoinItem(joinItem); - joinItem.setJoinType( EJoinType.inner ); - TTable joinTable = new TTable( ); - joinItem.setTable(joinTable); - TAliasClause aliasClause2 = new TAliasClause( ); - joinTable.setAliasClause( aliasClause2 ); - aliasClause2.setHasAs(true); - aliasClause2.setAliasName( SQLServerParser.parseObjectName("sp") ); - - joinTable.setTableName(SQLServerParser.parseObjectName("Sales.SalesPerson")); - joinItem.setOnCondition( SQLServerParser.parseExpression("spqh.BusinessEntityID = sp.BusinessEntityID") ); - - TWhereClause whereClause = new TWhereClause( ); - delete.setWhereClause( whereClause ); - whereClause.setCondition( SQLServerParser.parseExpression("sp.SalesYTD > 2500000.00") ); - - // System.out.println(scriptGenerator.generateScript(delete, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,delete.toScript() - ,"DELETE FROM sales.salespersonquotahistory FROM sales.salespersonquotahistory AS spqh INNER JOIN sales.salesperson AS sp ON spqh.businessentityid = sp.businessentityid\n" - + "WHERE sp.salesytd > 2500000.00" - )); - - } - - public void testDelete( ) - { - TDeleteSqlStatement delete = new TDeleteSqlStatement( EDbVendor.dbvoracle ); - delete.setFromKeyword( true ); - - TTable table = new TTable( ); - table.setTableName(OracleParser.parseObjectName("table1")); - delete.setTargetTable( table ); - - TWhereClause whereClause = new TWhereClause( ); - delete.setWhereClause( whereClause ); - whereClause.setCondition(OracleParser.parseExpression("f1>0")); - - // System.out.println(scriptGenerator.generateScript(delete, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,delete.toScript() - ,"DELETE FROM table1\n" - + "WHERE f1 > 0" - )); - - } - - public void testSelect( ) - { - TSelectSqlStatement select = new TSelectSqlStatement( EDbVendor.dbvoracle ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - select.setResultColumnList( resultColumnList ); - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - resultColumn1.setExpr( OracleParser.parseExpression("column1") ); - - TResultColumn resultColumn2 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn2 ); - resultColumn2.setExpr( OracleParser.parseExpression("column2") ); - TAliasClause aliasClause = new TAliasClause( ); - resultColumn2.setAliasClause( aliasClause ); - aliasClause.setHasAs( true ); - aliasClause.setAliasName( OracleParser.parseObjectName("c_alias") ); - // System.out.println( scriptGenerator.generateScript(select) ); - - TJoinList joinList = new TJoinList( ); - select.joins = joinList; - TJoin join = new TJoin( ); - joinList.addJoin( join ); - TTable table = new TTable( ); - join.setTable( table ); - // table.setTableType(ETableSource.objectname); - table.setTableName( OracleParser.parseObjectName("table1") ); - - TWhereClause whereClause = new TWhereClause( ); - select.setWhereClause( whereClause ); - whereClause.setCondition( OracleParser.parseExpression("f1>0") ); - - TGroupBy groupBy = new TGroupBy( ); - select.setGroupByClause( groupBy ); - TGroupByItem groupByItem = new TGroupByItem( ); - groupBy.getItems( ).addGroupByItem( groupByItem ); - groupByItem.setExpr( OracleParser.parseExpression("column1") ); - groupBy.setHavingClause( OracleParser.parseExpression("sum(column2) > 10") ); - - TOrderBy orderBy = new TOrderBy( ); - select.setOrderbyClause( orderBy ); - TOrderByItem orderByItem = new TOrderByItem( ); - orderBy.getItems( ).addElement( orderByItem ); - orderByItem.setSortKey( OracleParser.parseExpression("column1") ); - orderByItem.setSortOrder( ESortType.desc ); - - TOrderByItem orderByItem2 = new TOrderByItem( ); - orderBy.getItems( ).addElement( orderByItem2 ); - orderByItem2.setSortKey( OracleParser.parseExpression("column3") ); - orderByItem2.setSortOrder( ESortType.asc ); - - // System.out.println(scriptGenerator.generateScript(select, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT column1,\n" - + " column2 AS c_alias\n" - + "FROM table1\n" - + "WHERE f1 > 0\n" - + "GROUP BY column1\n" - + "HAVING sum(column2) > 10\n" - + "ORDER BY column1 DESC,\n" - + " column3 ASC" - )); - - } - - public void testSelectOracleJoin( ) - { - TSelectSqlStatement select = new TSelectSqlStatement( EDbVendor.dbvoracle ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - select.setResultColumnList( resultColumnList ); - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - resultColumn1.setExpr(OracleParser.parseExpression("column1")); - - TResultColumn resultColumn2 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn2 ); - resultColumn2.setExpr(OracleParser.parseExpression("column2")); - TAliasClause aliasClause = new TAliasClause( ); - resultColumn2.setAliasClause( aliasClause ); - aliasClause.setHasAs( true ); - aliasClause.setAliasName(OracleParser.parseObjectName("c_alias")); - - TJoinList joinList = new TJoinList( ); - select.joins = joinList; - TJoin join = new TJoin( ); - joinList.addJoin( join ); - TTable table = new TTable( ); - join.setTable( table ); - table.setTableType(ETableSource.objectname); - table.setTableName( OracleParser.parseObjectName("table1") ); - - TJoin join2 = new TJoin( ); - joinList.addJoin(join2); - TTable table2 = new TTable( ); - join2.setTable( table2 ); - // table2.setTableType(ETableSource.objectname); - table2.setTableName(OracleParser.parseObjectName("table2")); - - TWhereClause whereClause = new TWhereClause( ); - select.setWhereClause( whereClause ); - whereClause.setCondition( OracleParser.parseExpression("table1.f1 = table2.f1 and table1.f2 = 0") ); - - // System.out.println(scriptGenerator.generateScript(select, true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT column1,\n" - + " column2 AS c_alias\n" - + "FROM table1,\n" - + " table2\n" - + "WHERE table1.f1 = table2.f1\n" - + " AND table1.f2 = 0" - )); - - - } - - public void testSelectAnsiJoin( ) - { - TSelectSqlStatement select = new TSelectSqlStatement( EDbVendor.dbvoracle ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - select.setResultColumnList( resultColumnList ); - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - resultColumn1.setExpr( OracleParser.parseExpression("column1") ); - - TResultColumn resultColumn2 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn2 ); - resultColumn2.setExpr( OracleParser.parseExpression("column2") ); - TAliasClause aliasClause = new TAliasClause( ); - resultColumn2.setAliasClause( aliasClause ); - aliasClause.setHasAs( true ); - aliasClause.setAliasName( OracleParser.parseObjectName("c_alias") ); - - TJoinList joinList = new TJoinList( ); - select.joins = joinList; - TJoin join = new TJoin( ); - joinList.addJoin( join ); - TTable table = new TTable( ); - join.setTable( table ); - // table.setTableType(ETableSource.objectname); - table.setTableName( OracleParser.parseObjectName("table1") ); - - TJoinItem joinItem = new TJoinItem( ); - join.getJoinItems( ).addJoinItem( joinItem ); - joinItem.setJoinType( EJoinType.inner ); - TTable joinTable = new TTable( ); - joinItem.setTable( joinTable ); - joinTable.setTableName( OracleParser.parseObjectName("table2") ); - joinItem.setOnCondition( OracleParser.parseExpression("table1.f1 = table2.f1") ); - - TJoinItem joinItem3 = new TJoinItem( ); - join.getJoinItems( ).addJoinItem( joinItem3 ); - joinItem3.setJoinType( EJoinType.leftouter ); - TTable joinTable3 = new TTable( ); - joinItem3.setTable( joinTable3 ); - joinTable3.setTableName( OracleParser.parseObjectName("table3") ); - joinItem3.setOnCondition( OracleParser.parseExpression("table3.f1 = table2.f1") ); - - TJoinItem joinItem4 = new TJoinItem( ); - join.getJoinItems( ).addJoinItem( joinItem4 ); - joinItem4.setJoinType( EJoinType.rightouter ); - TTable joinTable4 = new TTable( ); - joinItem4.setTable( joinTable4 ); - joinTable4.setTableName( OracleParser.parseObjectName("table4") ); - joinItem4.setOnCondition( OracleParser.parseExpression("table4.f1 = table3.f1") ); - - TWhereClause whereClause = new TWhereClause( ); - select.setWhereClause( whereClause ); - whereClause.setCondition( OracleParser.parseExpression("table1.f2 = 0") ); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT column1,\n" - + " column2 AS c_alias\n" - + "FROM table1\n" - + " INNER JOIN table2\n" - + " ON table1.f1 = table2.f1\n" - + " LEFT OUTER JOIN table3\n" - + " ON table3.f1 = table2.f1\n" - + " RIGHT OUTER JOIN table4\n" - + " ON table4.f1 = table3.f1\n" - + "WHERE table1.f2 = 0" - )); - - // System.out.println(scriptGenerator.generateScript(select, true)); - - } - - public void testCreateOracleAssignStmt( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - TAssignStmt assign = new TAssignStmt( ); - - assign.setLeft(sqlParser.parseExpression("ILevel")); - assign.setExpression( sqlParser.parseExpression("'Low Income'") ); - - //System.out.println(assign.toScript()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "ILevel = 'Low Income'", assign.toScript())); - - } - - public void testCreateBinaryExpression( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - - TExpression left = sqlParser.parseExpression("1"); - TExpression right = sqlParser.parseExpression("2"); - TExpression plus = new TExpression(); - plus.setExpressionType(EExpressionType.arithmetic_plus_t); - plus.setLeftOperand(left); - plus.setRightOperand(right); - //System.out.println(plus.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "1 + 2 ", plus.toScript())); - } - - public void testCreateComparisonPredicate( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - - TExpression left = sqlParser.parseExpression("salary"); - TExpression right = sqlParser.parseExpression("20"); - TExpression plus = new TExpression(); - plus.setExpressionType(EExpressionType.simple_comparison_t); - plus.setComparisonType(EComparisonType.greaterThanOrEqualTo); - plus.setLeftOperand(left); - plus.setRightOperand(right); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary >= 20", plus.toScript())); - } - - public void testCreateAndPredicate( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - - TExpression left = sqlParser.parseExpression("salary"); - TExpression right = sqlParser.parseExpression("20"); - - TExpression left2 = sqlParser.parseExpression("location"); - TExpression right2 = sqlParser.parseExpression("'NY'"); - - TExpression c1 = new TExpression(); - c1.setExpressionType(EExpressionType.simple_comparison_t); - c1.setComparisonType(EComparisonType.greaterThanOrEqualTo); - c1.setLeftOperand(left); - c1.setRightOperand(right); - - TExpression c2 = new TExpression(); - c2.setExpressionType(EExpressionType.simple_comparison_t); - c2.setComparisonType(EComparisonType.equals); - c2.setLeftOperand(left2); - c2.setRightOperand(right2); - - TExpression c3 = new TExpression(); - c3.setExpressionType(EExpressionType.logical_and_t); - c3.setLeftOperand(c1); - c3.setRightOperand(c2); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary >= 20 and location = 'NY'", c3.toScript())); - - } - - public void testCreateSubqueryPredicate( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - - TExpression left = sqlParser.parseExpression("salary"); - TExpression right = sqlParser.parseExpression("(select sal from emp where empno=1)"); - TExpression subqueryPredicate = new TExpression(); - subqueryPredicate.setExpressionType(EExpressionType.simple_comparison_t); - subqueryPredicate.setComparisonType(EComparisonType.notLessThan); - subqueryPredicate.setLeftOperand(left); - subqueryPredicate.setRightOperand(right); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary !< (select sal from emp where empno=1)", subqueryPredicate.toScript())); - - subqueryPredicate.setExpressionType(EExpressionType.group_comparison_t); - subqueryPredicate.setComparisonType(EComparisonType.greaterThanOrEqualTo); - subqueryPredicate.setQuantifierType(EQuantifierType.all); - //System.out.println(subqueryPredicate.toScript()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary >= all (select sal from emp where empno=1)", subqueryPredicate.toScript())); - - - } - - + +package gudusoft.gsqlparser.scriptWriterTest; + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.nodes.oracle.TInvokerRightsClause; +import gudusoft.gsqlparser.pp.para.GFmtOpt; +import gudusoft.gsqlparser.pp.para.GFmtOptFactory; +import gudusoft.gsqlparser.pp.para.styleenums.TCaseOption; +import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; +import gudusoft.gsqlparser.stmt.*; +import gudusoft.gsqlparser.stmt.mssql.TMssqlBlock; +import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare; +import gudusoft.gsqlparser.stmt.mssql.TMssqlExecute; +import gudusoft.gsqlparser.stmt.mssql.TMssqlIfElse; +import gudusoft.gsqlparser.stmt.mssql.TMssqlPrint; +import gudusoft.gsqlparser.stmt.mssql.TMssqlRaiserror; +import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; +import junit.framework.TestCase; + +import java.util.ArrayList; + + +public class testCreateNode extends TestCase +{ + + private TGSqlParser OracleParser = null; + private TGSqlParser SQLServerParser = null; + + + protected void setUp() throws Exception { + super.setUp(); + OracleParser = new TGSqlParser(EDbVendor.dbvoracle); + SQLServerParser = new TGSqlParser(EDbVendor.dbvmssql); + + } + + protected void tearDown() throws Exception { + OracleParser = null; + SQLServerParser = null; + super.tearDown(); + } + + public void testCreateSourceToken( ) + { + TSourceToken st = new TSourceToken("AToken"); + assertTrue(st.toScript().equalsIgnoreCase("AToken")); + + //TGSqlParser sqlParser= new TGSqlParser(EDbVendor.dbvmssql); + } + + public void testCreateObjectname( ) + { + // use new constructor to create an object name + TObjectName tableName = TObjectName.createObjectName ( EDbVendor.dbvoracle, EDbObjectType.table, new TSourceToken("ATable")); + assertTrue(tableName.toScript().equalsIgnoreCase("ATable")); + + // TObjectName columnName = new TObjectName(EDbObjectType.column,new TSourceToken("ATable"),new TSourceToken("AColumn")); + TObjectName columnName = TObjectName.createObjectName (EDbVendor.dbvoracle, EDbObjectType.column,new TSourceToken("ATable"),new TSourceToken("AColumn")); + assertTrue(columnName.toScript().equalsIgnoreCase("ATable.AColumn")); + + // use parseObjectName() method to create a three parts object name + TGSqlParser sqlParser= new TGSqlParser(EDbVendor.dbvmssql); + columnName = sqlParser.parseObjectName("scott.emp.salary"); + assertTrue(columnName.toScript().equalsIgnoreCase("scott.emp.salary")); + } + + public void testCreateConstant( ) + { + // use new constructor to create constant + TConstant numberConstant = new TConstant(ELiteralType.etNumber,new TSourceToken("9.1")); + assertTrue(numberConstant.toScript().equalsIgnoreCase("9.1")); + + // use parseConstant() method to create constant + TGSqlParser sqlParser= new TGSqlParser(EDbVendor.dbvmssql); + numberConstant = sqlParser.parseConstant("9.1"); + assertTrue(numberConstant.toScript().equalsIgnoreCase("9.1")); + } + + public void testCreateFunction( ) + { + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmssql); + TFunctionCall functionCall = sqlParser.parseFunctionCall("fx(a1,a2)"); + assertTrue( functionCall.getFunctionName( ) + .toScript() + .equalsIgnoreCase( "fx" ) ); + } + + + public void testCreateSubquery( ) { + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmssql); + + String subQueryStr = " SELECT *\r\n" + + " FROM CompanyData.dbo.Customers_33\r\n" + + " UNION ALL\r\n" + + " SELECT *\r\n" + + " FROM Server2.CompanyData.dbo.Customers_66\r\n" + + " UNION ALL\r\n" + + " SELECT *\r\n" + + " FROM Server3.CompanyData.dbo.Customers_99"; + + TSelectSqlStatement subquery = sqlParser.parseSubquery(subQueryStr); + } + + public void testCreateTable( ) + { + + TCreateTableSqlStatement createTable = new TCreateTableSqlStatement( EDbVendor.dbvoracle ); + + TTable table = new TTable( ); + table.setTableName( OracleParser.parseObjectName( "newTable" ) ); + createTable.setTargetTable( table ); + + TColumnDefinitionList columns = new TColumnDefinitionList( ); + createTable.setColumnList( columns ); + + TColumnDefinition column1 = new TColumnDefinition( ); + columns.addColumn( column1 ); + column1.setColumnName( OracleParser.parseObjectName("column1") ); + TTypeName datatype1 = new TTypeName( ); + datatype1.setDataType( EDataType.number_t ); + datatype1.setPrecision(OracleParser.parseConstant("10")); + datatype1.setScale( OracleParser.parseConstant("2") ); + column1.setDatatype( datatype1 ); + + TConstraintList constraintList1 = new TConstraintList( ); + column1.setConstraints( constraintList1 ); + TConstraint constraint1 = new TConstraint( ); + constraintList1.addConstraint( constraint1 ); + constraint1.setConstraint_type( EConstraintType.primary_key ); + + TColumnDefinition column2 = new TColumnDefinition( ); + columns.addColumn( column2 ); + column2.setColumnName( OracleParser.parseObjectName("column2") ); + TTypeName datatype2 = new TTypeName( ); + datatype2.setDataType( EDataType.char_t ); + datatype2.setLength( OracleParser.parseConstant("10") ); + column2.setDatatype( datatype2 ); + + TConstraintList constraintList2 = new TConstraintList( ); + column2.setConstraints( constraintList2 ); + TConstraint constraint2 = new TConstraint( ); + constraintList2.addConstraint( constraint2 ); + constraint2.setConstraint_type( EConstraintType.notnull ); + + TColumnDefinition column3 = new TColumnDefinition( ); + columns.addColumn( column3 ); + column3.setColumnName( OracleParser.parseObjectName("title") ); + TTypeName datatype3 = new TTypeName( ); + datatype3.setDataType( EDataType.varchar_t ); + datatype3.setLength( OracleParser.parseConstant("20") ); + column3.setDatatype( datatype3 ); + + TConstraintList constraintList3 = new TConstraintList( ); + column3.setConstraints( constraintList3 ); + TConstraint constraint3 = new TConstraint( ); + constraintList3.addConstraint( constraint3 ); + constraint3.setConstraint_type( EConstraintType.default_value ); + constraint3.setDefaultExpression(OracleParser.parseExpression("'manager'")); + + TColumnDefinition column4 = new TColumnDefinition( ); + columns.addColumn( column4 ); + column4.setColumnName( OracleParser.parseObjectName("column4") ); + TTypeName datatype4 = new TTypeName( ); + datatype4.setDataType( EDataType.integer_t ); + column4.setDatatype( datatype4 ); + + TConstraintList constraintList4 = new TConstraintList( ); + column4.setConstraints( constraintList4 ); + TConstraint constraint4 = new TConstraint( ); + constraintList4.addConstraint( constraint4 ); + constraint4.setConstraint_type( EConstraintType.reference ); + constraint4.setReferencedObject( OracleParser.parseObjectName("table2") ); + + TObjectNameList referencedColumns = new TObjectNameList( ); + referencedColumns.addObjectName( OracleParser.parseObjectName("ref_column") ); + constraint4.setReferencedColumnList( referencedColumns ); + + TConstraintList tableConstraints = new TConstraintList( ); + createTable.setTableConstraints( tableConstraints ); + TConstraint tableConstraint = new TConstraint( ); + tableConstraints.addConstraint( tableConstraint ); + tableConstraint.setConstraint_type( EConstraintType.foreign_key ); + tableConstraint.setReferencedObject( OracleParser.parseObjectName("table3") ); + + TPTNodeList Columns = new TPTNodeList( ); + Columns.addNode( new TColumnWithSortOrder( + OracleParser.parseObjectName( "column1" ) ) ); + Columns.addNode( new TColumnWithSortOrder( + OracleParser.parseObjectName( "column2" ) ) ); + tableConstraint.setColumnList( Columns ); + + TObjectNameList referencedColumns2 = new TObjectNameList( ); + referencedColumns2.addObjectName( OracleParser.parseObjectName("ref_column1") ); + referencedColumns2.addObjectName( OracleParser.parseObjectName("ref_column2") ); + tableConstraint.setReferencedColumnList( referencedColumns2 ); + + // System.out.println(scriptGenerator.generateScript(createTable, + // true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,createTable.toScript() + ,"CREATE TABLE newtable(column1 NUMBER (10,2) PRIMARY KEY,\n" + + " column2 CHAR (10) NOT NULL,\n" + + " title VARCHAR (20) DEFAULT 'manager',\n" + + " column4 INTEGER REFERENCES table2(ref_column),\n" + + " FOREIGN KEY (column1,column2) REFERENCES table3(ref_column1,ref_column2) )" + )); + + } + + public void testMssqlCreateTrigger( ) + { + TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); + + createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); + + TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); + dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); + + TDmlEventClause dmlEventClause = new TDmlEventClause(); + dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); + ArrayList dmlEventItems = new ArrayList(); + TDmlEventItem dmlEventItem1 = new TDmlEventItem(); + dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); + TDmlEventItem dmlEventItem2 = new TDmlEventItem(); + dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); + dmlEventItems.add(dmlEventItem1); + dmlEventItems.add(dmlEventItem2); + dmlEventClause.setEventItems(dmlEventItems); + + dmlTriggerClause.setEventClause(dmlEventClause); + createTrigger.setTriggeringClause(dmlTriggerClause); + + + TStatementList stmts = new TStatementList( ); + + TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); + error.setMessageText( SQLServerParser.parseExpression("50009") ); + error.setSeverity( SQLServerParser.parseExpression("16") ); + error.setState(SQLServerParser.parseExpression("10")); + + stmts.add( error ); + + createTrigger.setBodyStatements( stmts ); + + String createTriggerQuery = "CREATE TRIGGER reminder\r\n" + + "ON titles\r\n" + + "FOR INSERT , UPDATE\r\n" + + "AS RAISERROR (50009,16,10)"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,createTrigger.toScript() + ,createTriggerQuery + )); + + } + + public void testMssqlCreateTrigger1( ) + { + TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); + createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); + + TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); + dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); + + TDmlEventClause dmlEventClause = new TDmlEventClause(); + dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); + ArrayList dmlEventItems = new ArrayList(); + TDmlEventItem dmlEventItem1 = new TDmlEventItem(); + dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); + TDmlEventItem dmlEventItem2 = new TDmlEventItem(); + dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); + dmlEventItems.add(dmlEventItem1); + dmlEventItems.add(dmlEventItem2); + dmlEventClause.setEventItems(dmlEventItems); + + dmlTriggerClause.setEventClause(dmlEventClause); + createTrigger.setTriggeringClause(dmlTriggerClause); + + TStatementList stmts = new TStatementList( ); + + TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); + error.setMessageText( SQLServerParser.parseExpression("50009") ); + error.setSeverity( SQLServerParser.parseExpression("16") ); + error.setState(SQLServerParser.parseExpression("10")); + + stmts.add( error ); + + createTrigger.setBodyStatements( stmts ); + + String createTriggerQuery = "CREATE TRIGGER reminder\r\n" + + "ON titles\r\n" + + "instead of INSERT , UPDATE\r\n" + + "AS RAISERROR (50009,16,10)"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,createTrigger.toScript() + ,createTriggerQuery + )); + + + } + + public void testMssqlAlterTrigger2( ) + { + TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); + + createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); + createTrigger.setAlterTrigger( true ); + + TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); + dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); + + TDmlEventClause dmlEventClause = new TDmlEventClause(); + dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); + ArrayList dmlEventItems = new ArrayList(); + TDmlEventItem dmlEventItem1 = new TDmlEventItem(); + dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); + TDmlEventItem dmlEventItem2 = new TDmlEventItem(); + dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); + dmlEventItems.add(dmlEventItem1); + dmlEventItems.add(dmlEventItem2); + dmlEventClause.setEventItems(dmlEventItems); + + dmlTriggerClause.setEventClause(dmlEventClause); + createTrigger.setTriggeringClause(dmlTriggerClause); + + + TStatementList stmts = new TStatementList( ); + + TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); + error.setMessageText( SQLServerParser.parseExpression("50009") ); + error.setSeverity( SQLServerParser.parseExpression("16") ); + error.setState(SQLServerParser.parseExpression("10")); + + stmts.add( error ); + + createTrigger.setBodyStatements( stmts ); + + String createTriggerQuery = "ALTER TRIGGER reminder\r\n" + + "ON titles\r\n" + + "instead of INSERT , UPDATE\r\n" + + "AS RAISERROR (50009,16,10)"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,createTrigger.toScript() + ,createTriggerQuery + )); + + } + + public void testMssqlCreateTrigger3( ) + { + TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); + createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); + + TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); + dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); + + TDmlEventClause dmlEventClause = new TDmlEventClause(); + dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); + ArrayList dmlEventItems = new ArrayList(); + TDmlEventItem dmlEventItem1 = new TDmlEventItem(); + dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); + TDmlEventItem dmlEventItem2 = new TDmlEventItem(); + dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); + dmlEventItems.add(dmlEventItem1); + dmlEventItems.add(dmlEventItem2); + dmlEventClause.setEventItems(dmlEventItems); + + dmlTriggerClause.setEventClause(dmlEventClause); + createTrigger.setTriggeringClause(dmlTriggerClause); + + TMssqlIfElse ifstmt = new TMssqlIfElse( EDbVendor.dbvmssql ); + ifstmt.setCondition(SQLServerParser.parseExpression("update(col1)")); + TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); + error.setMessageText(SQLServerParser.parseExpression("50009")); + error.setSeverity( SQLServerParser.parseExpression("16") ); + error.setState( SQLServerParser.parseExpression("10") ); + ifstmt.setStmt( error ); + + createTrigger.getBodyStatements( ).add( ifstmt ); + + String createTriggerQuery = "CREATE TRIGGER reminder\r\n" + + "ON titles\r\n" + + "instead of INSERT , UPDATE\r\n" + + "AS if update(col1) RAISERROR (50009,16,10)"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,createTrigger.toScript() + ,createTriggerQuery + )); + + } + + public void testMssqlCreateTrigger4( ) + { + TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); + createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); + + TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); + dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); + + TDmlEventClause dmlEventClause = new TDmlEventClause(); + dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); + ArrayList dmlEventItems = new ArrayList(); + TDmlEventItem dmlEventItem1 = new TDmlEventItem(); + dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); + TDmlEventItem dmlEventItem2 = new TDmlEventItem(); + dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); + dmlEventItems.add(dmlEventItem1); + dmlEventItems.add(dmlEventItem2); + dmlEventClause.setEventItems(dmlEventItems); + + dmlTriggerClause.setEventClause(dmlEventClause); + createTrigger.setTriggeringClause(dmlTriggerClause); + + TMssqlIfElse ifstmt = new TMssqlIfElse( EDbVendor.dbvmssql ); + ifstmt.setCondition(SQLServerParser.parseExpression("update(col1)")); + TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); + error.setMessageText(SQLServerParser.parseExpression("50009")); + error.setSeverity( SQLServerParser.parseExpression("16") ); + error.setState( SQLServerParser.parseExpression("10") ); + TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); + block.getBodyStatements( ).add( error ); + ifstmt.setStmt( block ); + + createTrigger.getBodyStatements( ).add( ifstmt ); + + String createTriggerQuery = "CREATE TRIGGER reminder\r\n" + + "ON titles\r\n" + + "instead of INSERT , UPDATE\r\n" + + "AS if update(col1)\r\n" + + " begin \r\n" + + " RAISERROR (50009,16,10)\r\n" + + " end"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,createTrigger.toScript() + ,createTriggerQuery + )); + + } + + public void testMssqlCreateTrigger5( ) + { + TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); + createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); + + TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); + dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); + + TDmlEventClause dmlEventClause = new TDmlEventClause(); + dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); + ArrayList dmlEventItems = new ArrayList(); + TDmlEventItem dmlEventItem0 = new TDmlEventItem(); + dmlEventItem0.setDmlType(ESqlStatementType.sstdelete); + TDmlEventItem dmlEventItem1 = new TDmlEventItem(); + dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); + TDmlEventItem dmlEventItem2 = new TDmlEventItem(); + dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); + dmlEventItems.add(dmlEventItem0); + dmlEventItems.add(dmlEventItem1); + dmlEventItems.add(dmlEventItem2); + dmlEventClause.setEventItems(dmlEventItems); + + dmlTriggerClause.setEventClause(dmlEventClause); + createTrigger.setTriggeringClause(dmlTriggerClause); + + + TMssqlExecute exec = new TMssqlExecute( EDbVendor.dbvmssql ); + exec.setModuleName(SQLServerParser.parseObjectName("master..xp_sendmail")); + TExecParameterList params = new TExecParameterList( ); + TExecParameter param1 = new TExecParameter( ); + param1.setParameterValue( SQLServerParser.parseExpression("'MaryM'") ); + params.addExecParameter( param1 ); + TExecParameter param2 = new TExecParameter( ); + param2.setParameterValue(SQLServerParser.parseExpression("'Don''t forget to print a report for the distributors.'")); + params.addExecParameter( param2 ); + exec.setParameters( params ); + createTrigger.getBodyStatements( ).add( exec ); + + String createTriggerQuery = "CREATE TRIGGER reminder\r\n" + + "ON titles\r\n" + + "instead of DELETE , INSERT , UPDATE\r\n" + + "AS EXEC master..xp_sendmail 'MaryM',\r\n" + + " 'Don''t forget to print a report for the distributors.'"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,createTrigger.toScript() + ,createTriggerQuery + )); + + } + + public void testMssqlCreateTrigger6( ) + { + TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); + createTrigger.setTriggerName(SQLServerParser.parseObjectName("employee_insupd")); + + TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); + dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); + + TDmlEventClause dmlEventClause = new TDmlEventClause(); + dmlEventClause.setTableName(SQLServerParser.parseObjectName("employee")); + ArrayList dmlEventItems = new ArrayList(); + TDmlEventItem dmlEventItem1 = new TDmlEventItem(); + dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); + TDmlEventItem dmlEventItem2 = new TDmlEventItem(); + dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); + dmlEventItems.add(dmlEventItem1); + dmlEventItems.add(dmlEventItem2); + dmlEventClause.setEventItems(dmlEventItems); + + dmlTriggerClause.setEventClause(dmlEventClause); + createTrigger.setTriggeringClause(dmlTriggerClause); + + + TMssqlDeclare declare = new TMssqlDeclare( EDbVendor.dbvmssql ); + TDeclareVariableList vars = new TDeclareVariableList( ); + TDeclareVariable var = new TDeclareVariable( ); + var.setVariableName( SQLServerParser.parseObjectName("@min_lvl") ); + TTypeName datatype = new TTypeName( ); + datatype.setDataType( EDataType.tinyint_t ); + var.setDatatype( datatype ); + vars.addDeclareVariable( var ); + + TDeclareVariable var1 = new TDeclareVariable( ); + var1.setVariableName( SQLServerParser.parseObjectName("@max_lvl") ); + TTypeName datatype1 = new TTypeName( ); + datatype1.setDataType( EDataType.tinyint_t ); + var1.setDatatype( datatype1 ); + vars.addDeclareVariable( var1 ); + + TDeclareVariable var2 = new TDeclareVariable( ); + var2.setVariableName( SQLServerParser.parseObjectName("@emp_lvl") ); + TTypeName datatype2 = new TTypeName( ); + datatype2.setDataType( EDataType.tinyint_t ); + var2.setDatatype( datatype2 ); + vars.addDeclareVariable( var2 ); + + TDeclareVariable var3 = new TDeclareVariable( ); + var3.setVariableName( SQLServerParser.parseObjectName("@job_id") ); + TTypeName datatype3 = new TTypeName( ); + datatype3.setDataType( EDataType.smallint_t ); + var3.setDatatype( datatype3 ); + vars.addDeclareVariable( var3 ); + + declare.setVariables( vars ); + + createTrigger.getBodyStatements( ).add( declare ); + createTrigger.getBodyStatements( ) + .add( SQLServerParser.parseSubquery ( "SELECT @min_lvl = min_lvl,\r\n" + + " @max_lvl = max_lvl,\r\n" + + " @emp_lvl = i.job_lvl,\r\n" + + " @job_id = i.job_id\r\n" + + "FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id\r\n" + + " JOIN jobs j ON j.job_id = i.job_id" ) ); + + TMssqlIfElse ifElse = new TMssqlIfElse( EDbVendor.dbvmssql ); + ifElse.setCondition( SQLServerParser.parseExpression("(@job_id = 1) and (@emp_lvl <> 10)") ); + + TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); + TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); + error.setMessageText( new TExpression(SQLServerParser.parseConstant("'Job id 1 expects the default level of 10.'") )); + error.setSeverity( new TExpression(SQLServerParser.parseConstant("16")) ); + error.setState( new TExpression(SQLServerParser.parseConstant("1")) ); + block.getBodyStatements( ).add( error ); + + // TMssqlRollback rollback = new TMssqlRollback( EDbVendor.dbvmssql ); + // rollback.setTrans_or_work( new TSourceToken( "transaction" ) ); + // block.getBodyStatements( ).add( rollback ); + + ifElse.setStmt( block ); + + TMssqlIfElse ifStmt = new TMssqlIfElse( EDbVendor.dbvmssql ); + ifStmt.setCondition( SQLServerParser.parseExpression("NOT(@emp_lvl BETWEEN @min_lvl AND @max_lvl)") ); + + TMssqlBlock block1 = new TMssqlBlock( EDbVendor.dbvmssql ); + TMssqlRaiserror error1 = new TMssqlRaiserror( EDbVendor.dbvmssql ); + error1.setMessageText(new TExpression(SQLServerParser.parseConstant("'The level for job_id:%d should be between %d and %d.'")) ); + error1.setSeverity( new TExpression(SQLServerParser.parseConstant("16")) ); + error1.setState( new TExpression(SQLServerParser.parseConstant("1")) ); + TExpressionList expressions = new TExpressionList( ); + expressions.addExpression( new TExpression(SQLServerParser.parseObjectName("@job_id")) ); + expressions.addExpression( new TExpression(SQLServerParser.parseObjectName("@min_lvl")) ); + expressions.addExpression( new TExpression(SQLServerParser.parseObjectName("@max_lvl")) ); + error1.setArgs( expressions ); + block1.getBodyStatements( ).add( error1 ); + + // TMssqlRollback rollback1 = new TMssqlRollback( EDbVendor.dbvmssql ); + // rollback1.setTrans_or_work( new TSourceToken( "transaction" ) ); + // block1.getBodyStatements( ).add( rollback ); + ifStmt.setStmt( block1 ); + + ifElse.setElseStmt( ifStmt ); + createTrigger.getBodyStatements( ).add( ifElse ); + + String createTriggerQuery = "CREATE TRIGGER employee_insupd\r\n" + + "ON employee\r\n" + + "FOR INSERT , UPDATE\r\n" + + "AS\r\n" + + "DECLARE @min_lvl tinyint,\r\n" + + " @max_lvl tinyint,\r\n" + + " @emp_lvl tinyint,\r\n" + + " @job_id smallint ;\r\n" + + "SELECT @min_lvl = min_lvl,\r\n" + + " @max_lvl = max_lvl,\r\n" + + " @emp_lvl = i.job_lvl,\r\n" + + " @job_id = i.job_id\r\n" + + "FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id\r\n" + + " JOIN jobs j ON j.job_id = i.job_id;\r\n" + + "IF (@job_id = 1) and (@emp_lvl <> 10)\r\n" + + "BEGIN \r\n" + + " RAISERROR ('Job id 1 expects the default level of 10.',16,1)\r\n" + // + " ROLLBACK TRANSACTION\r\n" + + "END \r\n" + + "ELSE \r\n" + + "IF NOT(@emp_lvl BETWEEN @min_lvl AND @max_lvl)\r\n" + + "BEGIN \r\n" + + " RAISERROR ('The level for job_id:%d should be between %d and %d.'," + + "16,1,@job_id,@min_lvl,@max_lvl)\r\n" + // + " ROLLBACK TRANSACTION\r\n" + + "END ;"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,createTrigger.toScript() + ,createTriggerQuery + )); + } + + public void testMssqlCreateTrigger7( ) + { + TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); + createTrigger.setTriggerName(SQLServerParser.parseObjectName("trig1")); + + TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); + dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); + + TDmlEventClause dmlEventClause = new TDmlEventClause(); + dmlEventClause.setTableName(SQLServerParser.parseObjectName("authors")); + ArrayList dmlEventItems = new ArrayList(); + TDmlEventItem dmlEventItem0 = new TDmlEventItem(); + dmlEventItem0.setDmlType(ESqlStatementType.sstdelete); + TDmlEventItem dmlEventItem1 = new TDmlEventItem(); + dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); + TDmlEventItem dmlEventItem2 = new TDmlEventItem(); + dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); + dmlEventItems.add(dmlEventItem0); + dmlEventItems.add(dmlEventItem1); + dmlEventItems.add(dmlEventItem2); + dmlEventClause.setEventItems(dmlEventItems); + + dmlTriggerClause.setEventClause(dmlEventClause); + createTrigger.setTriggeringClause(dmlTriggerClause); + + + createTrigger.getBodyStatements( ) + .add( SQLServerParser.parseSubquery("SELECT a.au_lname, a.au_fname, x.info\r\n" + + "FROM authors a INNER JOIN does_not_exist x\r\n" + + " ON a.au_id = x.au_id") ); + + String createTriggerQuery = "CREATE TRIGGER trig1\r\n" + + "on authors\r\n" + + "FOR DELETE , INSERT , UPDATE\r\n" + + "AS\r\n" + + " SELECT a.au_lname, a.au_fname, x.info\r\n" + + " FROM authors a INNER JOIN does_not_exist x\r\n" + + " ON a.au_id = x.au_id"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,createTrigger.toScript() + ,createTriggerQuery + )); + } + + public void testMssqlCreateTrigger8( ) + { + TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); + createTrigger.setTriggerName(SQLServerParser.parseObjectName("trig2")); + + TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); + dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); + + TDmlEventClause dmlEventClause = new TDmlEventClause(); + dmlEventClause.setTableName(SQLServerParser.parseObjectName("authors")); + ArrayList dmlEventItems = new ArrayList(); + TDmlEventItem dmlEventItem1 = new TDmlEventItem(); + dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); + TDmlEventItem dmlEventItem2 = new TDmlEventItem(); + dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); + dmlEventItems.add(dmlEventItem1); + dmlEventItems.add(dmlEventItem2); + dmlEventClause.setEventItems(dmlEventItems); + + dmlTriggerClause.setEventClause(dmlEventClause); + createTrigger.setTriggeringClause(dmlTriggerClause); + + TMssqlDeclare declare = new TMssqlDeclare( EDbVendor.dbvmssql ); + TDeclareVariableList vars = new TDeclareVariableList( ); + TDeclareVariable var = new TDeclareVariable( ); + var.setVariableName( SQLServerParser.parseObjectName("@fax") ); + TTypeName datatype = new TTypeName( ); + datatype.setDataType(EDataType.varchar_t); + datatype.setLength( SQLServerParser.parseConstant("12") ); + var.setDatatype( datatype ); + vars.addDeclareVariable( var ); + declare.setVariables( vars ); + + createTrigger.getBodyStatements( ).add( declare ); + + createTrigger.getBodyStatements( ) + .add( SQLServerParser.parseSubquery("SELECT @fax = phone\r\n" + + "FROM authors") ); + + String createTriggerQuery = "CREATE TRIGGER trig2\r\n" + + "ON authors\r\n" + + "FOR INSERT , UPDATE\r\n" + + "AS\r\n" + + " DECLARE @fax varchar (12);\r\n" + + " SELECT @fax = phone\r\n" + + " FROM authors;"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + , createTrigger.toScript() + , createTriggerQuery + )); + } + + public void testMssqlCreateTrigger9( ) + { + TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); + createTrigger.setTriggerName(SQLServerParser.parseObjectName("updEmployeeData")); + + TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); + dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); + + TDmlEventClause dmlEventClause = new TDmlEventClause(); + dmlEventClause.setTableName(SQLServerParser.parseObjectName("employeeData")); + ArrayList dmlEventItems = new ArrayList(); + TDmlEventItem dmlEventItem2 = new TDmlEventItem(); + dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); + dmlEventItems.add(dmlEventItem2); + dmlEventClause.setEventItems(dmlEventItems); + + dmlTriggerClause.setEventClause(dmlEventClause); + createTrigger.setTriggeringClause(dmlTriggerClause); + + + TMssqlIfElse ifElse = new TMssqlIfElse( EDbVendor.dbvmssql ); + ifElse.setCondition( SQLServerParser.parseExpression("(COLUMNS_UPDATED() & 14) > 0") ); + + TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); + + TInsertSqlStatement insert = new TInsertSqlStatement( EDbVendor.dbvmssql ); + TTable insertTable = new TTable( ); + insertTable.setTableName( SQLServerParser.parseObjectName("auditEmployeeData") ); + insert.setTargetTable( insertTable ); + + TObjectNameList columnNameList = new TObjectNameList( ); + insert.setColumnList( columnNameList ); + columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_log_type") ); + columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_id") ); + columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_bankAccountNumber") ); + columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_salary") ); + columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_SSN") ); + + insert.setSubQuery( SQLServerParser.parseSubquery("SELECT 'OLD',\r\n" + + " del.emp_id,\r\n" + + " del.emp_bankAccountNumber,\r\n" + + " del.emp_salary,\r\n" + + " del.emp_SSN\r\n" + + "FROM deleted del") ); + + block.getBodyStatements( ).add( insert ); + + TInsertSqlStatement insert1 = new TInsertSqlStatement( EDbVendor.dbvmssql ); + TTable insertTable1 = new TTable( ); + insertTable1.setTableName( SQLServerParser.parseObjectName("auditEmployeeData") ); + insert1.setTargetTable( insertTable1 ); + + TObjectNameList columnNameList1 = new TObjectNameList( ); + insert1.setColumnList( columnNameList1 ); + columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_log_type") ); + columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_id") ); + columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_bankAccountNumber") ); + columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_salary") ); + columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_SSN") ); + + insert1.setSubQuery( SQLServerParser.parseSubquery("SELECT 'NEW',\r\n" + + " ins.emp_id,\r\n" + + " ins.emp_bankAccountNumber,\r\n" + + " ins.emp_salary,\r\n" + + " ins.emp_SSN\r\n" + + "FROM inserted ins") ); + block.getBodyStatements( ).add( insert1 ); + + ifElse.setStmt( block ); + createTrigger.getBodyStatements( ).add( ifElse ); + + String createTriggerQuery = "CREATE TRIGGER updEmployeeData\r\n" + + "ON employeeData\r\n" + + "FOR update\r\n" + + "AS\r\n" + + " IF (COLUMNS_UPDATED() & 14) > 0\r\n" + + " BEGIN \r\n" + + " INSERT INTO auditEmployeeData\r\n" + + " (audit_log_type,\r\n" + + " audit_emp_id,\r\n" + + " audit_emp_bankAccountNumber,\r\n" + + " audit_emp_salary,\r\n" + + " audit_emp_SSN)\r\n" + + " SELECT 'OLD',\r\n" + + " del.emp_id,\r\n" + + " del.emp_bankAccountNumber,\r\n" + + " del.emp_salary,\r\n" + + " del.emp_SSN\r\n" + + " FROM deleted del;\r\n" + + " INSERT INTO auditEmployeeData\r\n" + + " (audit_log_type,\r\n" + + " audit_emp_id,\r\n" + + " audit_emp_bankAccountNumber,\r\n" + + " audit_emp_salary,\r\n" + + " audit_emp_SSN)\r\n" + + " SELECT 'NEW',\r\n" + + " ins.emp_id,\r\n" + + " ins.emp_bankAccountNumber,\r\n" + + " ins.emp_salary,\r\n" + + " ins.emp_SSN\r\n" + + " FROM inserted ins;\r\n" + + " END"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + , createTrigger.toScript() + , createTriggerQuery + )); + } + + public void testMssqlCreateTrigger10( ) + { + TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); + createTrigger.setTriggerName(SQLServerParser.parseObjectName("tr1")); + + TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); + dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); + + TDmlEventClause dmlEventClause = new TDmlEventClause(); + dmlEventClause.setTableName(SQLServerParser.parseObjectName("Customers")); + ArrayList dmlEventItems = new ArrayList(); + TDmlEventItem dmlEventItem2 = new TDmlEventItem(); + dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); + dmlEventItems.add(dmlEventItem2); + dmlEventClause.setEventItems(dmlEventItems); + + dmlTriggerClause.setEventClause(dmlEventClause); + createTrigger.setTriggeringClause(dmlTriggerClause); + + + TMssqlIfElse ifStmt = new TMssqlIfElse( EDbVendor.dbvmssql ); + ifStmt.setCondition(SQLServerParser.parseExpression("( (SUBSTRING(COLUMNS_UPDATED(),1,1)=power(2,(3 - 1))\r\n" + + " + power(2,(5 - 1)))\r\n" + + " AND (SUBSTRING(COLUMNS_UPDATED(),2,1)=power(2,(1 - 1)))\r\n )")); + + TMssqlPrint print = new TMssqlPrint( EDbVendor.dbvmssql ); + TExpressionList expressionList = new TExpressionList( ); + expressionList.addExpression( SQLServerParser.parseExpression("'Columns 3, 5 and 9 updated'") ); + print.setMessages( expressionList ); + ifStmt.setStmt( print ); + + createTrigger.getBodyStatements( ).add( ifStmt ); + + String createTriggerQuery = "CREATE TRIGGER tr1 ON Customers\r\n" + + "FOR UPDATE\r\nAS\r\n" + + " IF ( (SUBSTRING(COLUMNS_UPDATED(),1,1)=power(2,(3 - 1))\r\n" + + " + power(2,(5 - 1)))\r\n" + + " AND (SUBSTRING(COLUMNS_UPDATED(),2,1)=power(2,(1 - 1)))\r\n" + + " )\r\n" + + " PRINT 'Columns 3, 5 and 9 updated'"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + , createTrigger.toScript() + , createTriggerQuery + )); + } + + public void testCreateView( ) + { + TCreateViewSqlStatement createView = new TCreateViewSqlStatement( EDbVendor.dbvoracle ); + + createView.setViewName(SQLServerParser.parseObjectName("vNessusTargetHostExtract")); + + String subQuery = "SELECT LoadKey, vcHost, CASE WHEN iPluginid = 12053 THEN SUBSTRING(vcResult,CHARINDEX('resolves as',vcResult) + 12,(DATALENGTH(vcResult) - 1)\n" + + " - (CHARINDEX('resolves as',vcResult) + 12)) ELSE 'No registered hostname' END AS vcHostName, vcport, LoadedOn, iRecordTypeID,\n" + + " iAgentProcessID, iTableID\n" + + "FROM dbo.vNessusResultExtract"; + createView.setSubquery( OracleParser.parseSubquery(subQuery) ); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,createView.toScript() + ,"CREATE VIEW vNessusTargetHostExtract\nAS \n" + + subQuery + )); + + } + + public void testQualifiedNameWithServer(){ + String query = "select * FROM Server2.CompanyData.dbo.Customers_66"; + SQLServerParser.sqltext = query; + SQLServerParser.parse(); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + , SQLServerParser.sqlstatements.get(0).toScript() + , SQLServerParser.sqlstatements.get(0).toScript().toString() + )); + } + + public void testCreateView2( ) + { + TCreateViewSqlStatement createView = new TCreateViewSqlStatement( EDbVendor.dbvmssql ); + + createView.setViewName(SQLServerParser.parseObjectName("Customers")); + + String subQuery = " SELECT *\r\n" + + " FROM CompanyData.dbo.Customers_33\r\n" + + " UNION ALL\r\n" + + " SELECT *\r\n" + + " FROM Server2.CompanyData.dbo.Customers_66\r\n" + + " UNION ALL\r\n" + + " SELECT *\r\n" + + " FROM Server3.CompanyData.dbo.Customers_99"; + createView.setSubquery( SQLServerParser.parseSubquery(subQuery) ); + //System.out.print(createView.toScript()); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + , createView.toScript() + , "CREATE VIEW Customers\nAS \n" + + subQuery + )); + + } + + public void testCreateIndex( ) + { + TCreateIndexSqlStatement createIndex = new TCreateIndexSqlStatement( EDbVendor.dbvmssql ); + + createIndex.setIndexName(SQLServerParser.parseObjectName("IX_TransactionHistory_ReferenceOrderID")); + createIndex.setNonClustered( true ); + createIndex.setTableName(SQLServerParser.parseObjectName("Production.TransactionHistory")); + TOrderByItemList items = new TOrderByItemList( ); + TOrderByItem item = new TOrderByItem( ); + item.setSortKey( new TExpression(SQLServerParser.parseObjectName("ReferenceOrderID") )); + items.addOrderByItem( item ); + createIndex.setColumnNameList(items); + + createIndex.setFilegroupOrPartitionSchemeName( SQLServerParser.parseObjectName("TransactionsPS1") ); + createIndex.setPartitionSchemeColumns(new TObjectNameList()); + createIndex.getPartitionSchemeColumns( ) + .addObjectName(SQLServerParser.parseObjectName("TransactionDate")); + + String createIndexQuery = "CREATE NONCLUSTERED INDEX IX_TransactionHistory_ReferenceOrderID\r\n" + + "ON Production.TransactionHistory (ReferenceOrderID)\r\nON TransactionsPS1 (TransactionDate)"; + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,createIndex.toScript() + ,createIndexQuery + )); + } + + public void testCreateUniqueIndex( ) + { + TCreateIndexSqlStatement createIndex = new TCreateIndexSqlStatement( EDbVendor.dbvmssql ); + + createIndex.setIndexName(SQLServerParser.parseObjectName("AK_UnitMeasure_Name")); + createIndex.setIndexType( EIndexType.itUnique ); +// createIndex.getCreateIndexNode( ) +// .setTableName( sqlParser.parseObjectName( "Production.UnitMeasure" ) ); + createIndex.setTableName(SQLServerParser.parseObjectName("Production.UnitMeasure")); + TOrderByItemList items = new TOrderByItemList( ); + TOrderByItem item = new TOrderByItem( ); + item.setSortKey( new TExpression(SQLServerParser.parseObjectName("Name") )); + items.addOrderByItem( item ); +// createIndex.getCreateIndexNode( ).setColumnNameList( items ); + createIndex.setColumnNameList(items); + + String createIndexQuery = "CREATE UNIQUE INDEX AK_UnitMeasure_Name\n" + + " ON Production.UnitMeasure (Name)"; +// System.out.print(scriptGenerator.generateScript( createIndex, true )); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,createIndex.toScript() + ,createIndexQuery + )); + + } + + public void testCreateViewWithAlias( ) + { + TCreateViewSqlStatement createView = new TCreateViewSqlStatement( EDbVendor.dbvoracle ); + + createView.setViewName(OracleParser.parseObjectName("test1")); + createView.setStReplace( new TSourceToken( "replace" ) ); + + TViewAliasItemList itemList = new TViewAliasItemList( ); + TViewAliasItem item = new TViewAliasItem( ); + item.setAlias( OracleParser.parseObjectName("account_name_alias") ); + itemList.addViewAliasItem(item); + TViewAliasItem item1 = new TViewAliasItem( ); + item1.setAlias(OracleParser.parseObjectName("account_number_alias")); + itemList.addViewAliasItem( item1 ); + + TViewAliasClause aliasClause = new TViewAliasClause( ); + aliasClause.setViewAliasItemList( itemList ); + + createView.setViewAliasClause( aliasClause );; + + String subQuery = "select account_name, account_number from \n" + + "AP10_BANK_ACCOUNTS t"; + createView.setSubquery( OracleParser.parseSubquery(subQuery) ); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,createView.toScript() + ,"CREATE OR REPLACE VIEW test1(account_name_alias, account_number_alias)\nAS \n" + + subQuery + )); + + } + +// public void testMssqlCreateFunction( ) +// { +// TMssqlCreateFunction createFunction = new TMssqlCreateFunction( EDbVendor.dbvmssql ); +// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvmssql ); +// createFunction.setFunctionName( sqlParser.parseObjectName( "dbo.ufnGetStock" ) ); +// TParameterDeclarationList params = new TParameterDeclarationList( ); +// TParameterDeclaration param = new TParameterDeclaration( ); +// param.setParameterName( sqlParser.parseObjectName( "@ProductID" ) ); +// TTypeName dataType = new TTypeName( ); +// dataType.setDataType( EDataType.int_t ); +// param.setDataType( dataType ); +// params.addParameterDeclarationItem( param ); +// createFunction.setParameterDeclarations( params ); +// +// TTypeName returnDataType = new TTypeName( ); +// returnDataType.setDataType( EDataType.int_t ); +// createFunction.setReturnDataType( returnDataType ); +// +// TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); +// +// TMssqlDeclare declare = new TMssqlDeclare( EDbVendor.dbvmssql ); +// TDeclareVariableList vars = new TDeclareVariableList( ); +// TDeclareVariable var = new TDeclareVariable( ); +// var.setVariableName( sqlParser.parseObjectName( "@ret" ) ); +// TTypeName datatype = new TTypeName( ); +// datatype.setDataType( EDataType.int_t ); +// var.setDatatype( datatype ); +// vars.addDeclareVariable( var ); +// declare.setVariables( vars ); +// +// block.getBodyStatements( ).add( declare ); +// +// String selectQuery = "SELECT @ret = SUM(p.Quantity)\r\n" +// + " FROM Production.ProductInventory p\r\n" +// + " WHERE p.ProductID = @ProductID\r\n" +// + " AND p.LocationID = '6'"; +// block.getBodyStatements( ) +// .add( scriptGenerator.createSubquery( selectQuery ) ); +// +// TMssqlIfElse ifElse = new TMssqlIfElse( EDbVendor.dbvmssql ); +// ifElse.setCondition( sqlParser.parseExpression( "@ret IS NULL" ) ); +// TMssqlSet setStmt = new TMssqlSet( EDbVendor.dbvmssql ); +// setStmt.setVarName( sqlParser.parseObjectName( "@ret" ) ); +// setStmt.setVarExpr( sqlParser.parseExpression( "0" ) ); +// ifElse.setStmt( setStmt ); +// +// block.getBodyStatements( ).add( ifElse ); +// +// TMssqlReturn returnStmt = new TMssqlReturn( EDbVendor.dbvmssql ); +// returnStmt.setReturnExpr( sqlParser.parseExpression( "@ret" ) ); +// block.getBodyStatements( ).add( returnStmt ); +// +// createFunction.getBodyStatements( ).add( block ); +// +// String createFunctionQuery = "CREATE FUNCTION dbo.ufnGetStock(@ProductID int)\r\n" +// + "RETURNS int\r\n" +// + "AS\r\n" +// + "BEGIN\r\n" +// + " DECLARE @ret int ; \r\n" +// + " SELECT @ret = SUM(p.Quantity)\r\n" +// + " FROM Production.ProductInventory p\r\n" +// + " WHERE p.ProductID = @ProductID\r\n" +// + " AND p.LocationID = '6'; \r\n" +// + " IF @ret IS NULL \r\n" +// + " SET @ret=0; \r\n" +// + " RETURN @ret; \r\n" +// + "END"; +// assertTrue( scriptGenerator.generateScript( createFunction, true ) +// .trim( ) +// .equalsIgnoreCase( formatSql( createFunctionQuery, +// EDbVendor.dbvmssql ).trim( ) ) ); +// } + + public void testOracleCreateProcedure( ) + { + TPlsqlCreateProcedure createProcedure = new TPlsqlCreateProcedure( EDbVendor.dbvoracle ); + + createProcedure.setProcedureName(OracleParser.parseObjectName("evaluate")); + + TParameterDeclarationList params = new TParameterDeclarationList( ); + TParameterDeclaration param = new TParameterDeclaration( ); + param.setParameterName( OracleParser.parseObjectName("my_empno") ); + TTypeName dataType = new TTypeName( ); + dataType.setDataType( EDataType.number_t ); + param.setDataType( dataType ); + params.addParameterDeclarationItem(param); + createProcedure.setParameterDeclarations(params); + + TInvokerRightsClause invoke = new TInvokerRightsClause( ); + invoke.setDefiner(OracleParser.parseObjectName("current_user")); + createProcedure.setInvokerRightsClause( invoke ); + + TVarDeclStmt variable = new TVarDeclStmt( EDbVendor.dbvoracle ); + variable.setElementName( OracleParser.parseObjectName("my_ename") ); + TTypeName datatype = new TTypeName( ); + datatype.setDataType( EDataType.varchar2_t ); + TConstant c = new TConstant( ELiteralType.etNumber,new TSourceToken("15") ); + //c.setStringValue( "15" ); + datatype.setLength( c ); + variable.setDataType( datatype ); + createProcedure.getDeclareStatements( ).add( variable ); + + String selectQuery = "SELECT ename INTO my_ename FROM emp WHERE empno = my_empno;"; + createProcedure.getBodyStatements( ) + .add( OracleParser.parseSubquery(selectQuery) ); + + String createProcedureQuery = "CREATE PROCEDURE evaluate(my_empno NUMBER) \r\n" + + "AUTHID CURRENT_USER AS \r\n" + + "my_ename VARCHAR2 (15); \r\n" + + "BEGIN \r\n" + + "SELECT ename INTO my_ename FROM emp WHERE empno = my_empno;\r\n" + + "END ;"; + + //System.out.println(createProcedure.toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,createProcedure.toScript() + ,createProcedureQuery + )); + + } + + public void testDropIndex( ) + { + TDropIndexSqlStatement dropIndex = new TDropIndexSqlStatement( EDbVendor.dbvmssql ); + + + TDropIndexItemList itemList = new TDropIndexItemList( ); + TDropIndexItem item = new TDropIndexItem( ); + item.setIndexName(SQLServerParser.parseObjectName("IX_SalesPerson_SalesQuota_SalesYTD")); + item.setObjectName( SQLServerParser.parseObjectName("Sales.SalesPerson") ); + itemList.addDropIndexItem( item ); + dropIndex.setDropIndexItemList( itemList ); + + String dropIndexQuery = "DROP INDEX IX_SalesPerson_SalesQuota_SalesYTD ON Sales.SalesPerson"; + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,dropIndex.toScript() + ,dropIndexQuery + )); + + + } + + public void testUseDatabase( ) + { + TUseDatabase useDatabase = new TUseDatabase( EDbVendor.dbvmssql ); + + useDatabase.setDatabaseName(SQLServerParser.parseObjectName("AdventureWorks")); + + String useDatabaseQuery = "USE AdventureWorks"; + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,useDatabase.toScript() + ,useDatabaseQuery + )); + + } + + + public void testOracleIfStmt( ) + { + TIfStmt ifStmt = new TIfStmt( EDbVendor.dbvoracle ); + TExpression left = new TExpression(OracleParser.parseObjectName("ILevel")); + TExpression lowExpr = new TExpression(OracleParser.parseConstant("'Low Income'")); + TExpression avgExpr = new TExpression(OracleParser.parseConstant("'Avg Income'")); + TExpression highExpr = new TExpression(OracleParser.parseConstant("'High Income'")); + + ifStmt.setCondition(OracleParser.parseExpression("monthly_value <= 4000")); + ifStmt.getThenStatements( ) + .add( new TAssignStmt(left,lowExpr) ); + + TElsifStmt elsIf = new TElsifStmt( ); + elsIf.setCondition( OracleParser.parseExpression("monthly_value > 4000 and monthly_value <= 7000") ); + elsIf.getThenStatements( ) + .add( new TAssignStmt(left,avgExpr) ); + ifStmt.getElseifStatements( ).add( elsIf ); + ifStmt.getElseStatements( ) + .add( new TAssignStmt(left,highExpr) ); + + String ifQuery = "IF monthly_value <= 4000 THEN \r\n" + + " ILevel = 'Low Income'\r\n" + + " ELSIF monthly_value > 4000 and monthly_value <= 7000 THEN \r\n" + + " ILevel = 'Avg Income'\r\n" + + " ELSE ILevel = 'High Income'\r\n" + + " END IF"; + + //System.out.println(ifStmt.toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + , ifStmt.toScript() + , ifQuery + )); + + } + +// public void testMssqlIfStmt( ) +// { +// TMssqlIfElse ifStmt = new TMssqlIfElse( EDbVendor.dbvmssql ); +// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvmssql ); +// ifStmt.setCondition( sqlParser.parseExpression( "EXISTS (SELECT name FROM sys.indexes\r\n" +// + " WHERE name = N'IX_Address_PostalCode')" ) ); +// +// TDropIndexSqlStatement ifDrop = new TDropIndexSqlStatement( EDbVendor.dbvmssql ); +// ifDrop.setIndexName( sqlParser.parseObjectName( "IX_Address_PostalCode" ) ); +// TDropIndexItemList items = new TDropIndexItemList( ); +// TDropIndexItem item = new TDropIndexItem( ); +// item.setObjectName( sqlParser.parseObjectName( "Person.Address" ) ); +// items.addDropIndexItem( item ); +// ifDrop.setDropIndexItemList( items ); +// +// ifStmt.setStmt( ifDrop ); +// +// TDropIndexSqlStatement elseDrop = new TDropIndexSqlStatement( EDbVendor.dbvmssql ); +// elseDrop.setIndexName( sqlParser.parseObjectName( "IX_Address_PostalCode" ) ); +// TDropIndexItemList items1 = new TDropIndexItemList( ); +// TDropIndexItem item1 = new TDropIndexItem( ); +// item1.setObjectName( sqlParser.parseObjectName( "Person.NAME" ) ); +// items1.addDropIndexItem( item1 ); +// elseDrop.setDropIndexItemList( items1 ); +// +// ifStmt.setElseStmt( elseDrop ); +// +// String ifQuery = "IF EXISTS ( SELECT name FROM sys.indexes\r\n" +// + " WHERE name = N'IX_Address_PostalCode')\r\n" +// + " DROP INDEX IX_Address_PostalCode ON Person.Address\r\n" +// + "ELSE DROP INDEX IX_Address_PostalCode ON Person.NAME"; +// assertTrue( scriptGenerator.generateScript( ifStmt, true ) +// .trim( ) +// .toLowerCase( ) +// .equals( formatSql( ifQuery.trim( ), EDbVendor.dbvmssql ).toLowerCase( ) ) ); +// } + + String formatSql( String inputQuery, EDbVendor dbVendor ) + { + String Result = inputQuery; + TGSqlParser sqlparser = new TGSqlParser( dbVendor ); + sqlparser.sqltext = inputQuery; + int ret = sqlparser.parse( ); + if ( ret == 0 ) + { + GFmtOpt option = GFmtOptFactory.newInstance( ); + option.caseFuncname = TCaseOption.CoNoChange; + Result = FormatterFactory.pp( sqlparser, option ); + } + return Result; + } + + public void testInsertSubquery( ) + { + TInsertSqlStatement insert = new TInsertSqlStatement( EDbVendor.dbvoracle ); + + TTable table = new TTable( ); + table.setTableName(OracleParser.parseObjectName("table1")); + insert.setTargetTable( table ); + + TObjectNameList columnNameList = new TObjectNameList( ); + insert.setColumnList( columnNameList ); + columnNameList.addObjectName(OracleParser.parseObjectName("column1")); + columnNameList.addObjectName(OracleParser.parseObjectName("column2")); + + insert.setSubQuery( OracleParser.parseSubquery("select c1,c1 from table2") ); + + // System.out.println(scriptGenerator.generateScript(insert, true)); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,insert.toScript() + ,"INSERT INTO table1\n" + + " (column1,\n" + + " column2)\n" + + "SELECT c1,\n" + + " c1\n" + + "FROM table2" + )); + + + } + + public void testInsert( ) + { + TInsertSqlStatement insert = new TInsertSqlStatement( EDbVendor.dbvoracle ); + + TTable table = new TTable( ); + table.setTableName(OracleParser.parseObjectName("table1")); + insert.setTargetTable( table ); + + TObjectNameList columnNameList = new TObjectNameList( ); + insert.setColumnList( columnNameList ); + columnNameList.addObjectName(OracleParser.parseObjectName("column1")); + columnNameList.addObjectName(OracleParser.parseObjectName("column2")); + + TMultiTargetList values = new TMultiTargetList( ); + insert.setValues(values); + TMultiTarget multiTarget = new TMultiTarget( ); + values.addMultiTarget( multiTarget ); + + TResultColumnList resultColumnList = new TResultColumnList( ); + multiTarget.setColumnList( resultColumnList ); + + TResultColumn resultColumn1 = new TResultColumn( ); + resultColumnList.addResultColumn( resultColumn1 ); + resultColumn1.setExpr(OracleParser.parseExpression("1")); + + TResultColumn resultColumn2 = new TResultColumn( ); + resultColumnList.addResultColumn( resultColumn2 ); + resultColumn2.setExpr(OracleParser.parseExpression("2")); + + // System.out.println(scriptGenerator.generateScript(insert, true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,insert.toScript() + ,"INSERT INTO table1\n" + + " (column1,\n" + + " column2)\n" + + "VALUES (1,\n" + + " 2)" + )); + + } + + public void testUpdateMultiTable( ) + { + TUpdateSqlStatement update = new TUpdateSqlStatement( EDbVendor.dbvmssql ); + + TTable table = new TTable( ); + table.setTableName(SQLServerParser.parseObjectName("dbo.Table2")); + update.setTargetTable( table ); + + TResultColumnList resultColumnList = new TResultColumnList( ); + update.setResultColumnList( resultColumnList ); + + TResultColumn resultColumn1 = new TResultColumn( ); + resultColumnList.addResultColumn( resultColumn1 ); + TExpression left = SQLServerParser.parseExpression("dbo.Table2.ColB"); + TExpression right = SQLServerParser.parseExpression("dbo.Table2.ColB + dbo.Table1.ColB"); + resultColumn1.setExpr(new TExpression (EExpressionType.assignment_t, + left, + right)); + + TJoinList joinList = new TJoinList( ); + update.joins = joinList; + TJoin join = new TJoin( ); + joinList.addJoin( join ); + TTable table1 = new TTable( ); + join.setTable( table1 ); + table1.setTableName(SQLServerParser.parseObjectName("dbo.Table2")); + + TJoinItem joinItem = new TJoinItem( ); + join.getJoinItems( ).addJoinItem(joinItem); + joinItem.setJoinType(EJoinType.inner); + TTable joinTable = new TTable( ); + joinItem.setTable( joinTable ); + + joinTable.setTableName(SQLServerParser.parseObjectName("dbo.Table1")); + joinItem.setOnCondition( SQLServerParser.parseExpression("(dbo.Table2.ColA = dbo.Table1.ColA)") ); + + // System.out.println(scriptGenerator.generateScript(update, true)); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,update.toScript() + ,"UPDATE dbo.table2\n" + + "SET dbo.table2.colb=dbo.table2.colb + dbo.table1.colb FROM dbo.table2 INNER JOIN dbo.table1 ON (dbo.table2.cola = dbo.table1.cola)" + )); + + } + + public void testUpdate( ) + { + TUpdateSqlStatement update = new TUpdateSqlStatement( EDbVendor.dbvoracle ); + + TTable table = new TTable( ); + table.setTableName(OracleParser.parseObjectName("table1")); + update.setTargetTable( table ); + + TResultColumnList resultColumnList = new TResultColumnList( ); + update.setResultColumnList( resultColumnList ); + + TResultColumn resultColumn1 = new TResultColumn( ); + resultColumnList.addResultColumn( resultColumn1 ); + TExpression left = OracleParser.parseExpression("column1"); + TExpression right = OracleParser.parseExpression("1"); + + resultColumn1.setExpr( new TExpression (EExpressionType.assignment_t, + left, + right)); + + TResultColumn resultColumn2 = new TResultColumn( ); + resultColumnList.addResultColumn(resultColumn2); + TExpression left2 = OracleParser.parseExpression("column2"); + TExpression right2 = OracleParser.parseExpression("1"); + + resultColumn2.setExpr( new TExpression( EExpressionType.assignment_t, + left2, + right2 ) ); + + TWhereClause whereClause = new TWhereClause( ); + update.setWhereClause( whereClause ); + whereClause.setCondition( OracleParser.parseExpression("column3 > 250.00") ); + + // System.out.println(scriptGenerator.generateScript(update, true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,update.toScript() + ,"UPDATE table1\n" + + "SET column1=1,\n" + + " column2=1\n" + + "WHERE column3 > 250.00" + )); + + } + + public void testDeleteMultiTable( ) + { + TDeleteSqlStatement delete = new TDeleteSqlStatement( EDbVendor.dbvmssql ); + delete.setFromKeyword( true ); + + TTable table = new TTable( ); + table.setTableName(SQLServerParser.parseObjectName("Sales.SalesPersonQuotaHistory ")); + delete.setTargetTable( table ); + + TJoinList joinList = new TJoinList( ); + delete.joins = joinList; + TJoin join = new TJoin( ); + joinList.addJoin( join ); + TTable table1 = new TTable( ); + join.setTable( table1 ); + table1.setTableName(SQLServerParser.parseObjectName("Sales.SalesPersonQuotaHistory")); + + TAliasClause aliasClause = new TAliasClause( ); + table1.setAliasClause( aliasClause ); + aliasClause.setHasAs( true ); + aliasClause.setAliasName(SQLServerParser.parseObjectName("spqh")); + + TJoinItem joinItem = new TJoinItem( ); + join.getJoinItems().addJoinItem(joinItem); + joinItem.setJoinType( EJoinType.inner ); + TTable joinTable = new TTable( ); + joinItem.setTable(joinTable); + TAliasClause aliasClause2 = new TAliasClause( ); + joinTable.setAliasClause( aliasClause2 ); + aliasClause2.setHasAs(true); + aliasClause2.setAliasName( SQLServerParser.parseObjectName("sp") ); + + joinTable.setTableName(SQLServerParser.parseObjectName("Sales.SalesPerson")); + joinItem.setOnCondition( SQLServerParser.parseExpression("spqh.BusinessEntityID = sp.BusinessEntityID") ); + + TWhereClause whereClause = new TWhereClause( ); + delete.setWhereClause( whereClause ); + whereClause.setCondition( SQLServerParser.parseExpression("sp.SalesYTD > 2500000.00") ); + + // System.out.println(scriptGenerator.generateScript(delete, true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql + ,delete.toScript() + ,"DELETE FROM sales.salespersonquotahistory FROM sales.salespersonquotahistory AS spqh INNER JOIN sales.salesperson AS sp ON spqh.businessentityid = sp.businessentityid\n" + + "WHERE sp.salesytd > 2500000.00" + )); + + } + + public void testDelete( ) + { + TDeleteSqlStatement delete = new TDeleteSqlStatement( EDbVendor.dbvoracle ); + delete.setFromKeyword( true ); + + TTable table = new TTable( ); + table.setTableName(OracleParser.parseObjectName("table1")); + delete.setTargetTable( table ); + + TWhereClause whereClause = new TWhereClause( ); + delete.setWhereClause( whereClause ); + whereClause.setCondition(OracleParser.parseExpression("f1>0")); + + // System.out.println(scriptGenerator.generateScript(delete, true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,delete.toScript() + ,"DELETE FROM table1\n" + + "WHERE f1 > 0" + )); + + } + + public void testSelect( ) + { + TSelectSqlStatement select = new TSelectSqlStatement( EDbVendor.dbvoracle ); + + TResultColumnList resultColumnList = new TResultColumnList( ); + select.setResultColumnList( resultColumnList ); + TResultColumn resultColumn1 = new TResultColumn( ); + resultColumnList.addResultColumn( resultColumn1 ); + resultColumn1.setExpr( OracleParser.parseExpression("column1") ); + + TResultColumn resultColumn2 = new TResultColumn( ); + resultColumnList.addResultColumn( resultColumn2 ); + resultColumn2.setExpr( OracleParser.parseExpression("column2") ); + TAliasClause aliasClause = new TAliasClause( ); + resultColumn2.setAliasClause( aliasClause ); + aliasClause.setHasAs( true ); + aliasClause.setAliasName( OracleParser.parseObjectName("c_alias") ); + // System.out.println( scriptGenerator.generateScript(select) ); + + TJoinList joinList = new TJoinList( ); + select.joins = joinList; + TJoin join = new TJoin( ); + joinList.addJoin( join ); + TTable table = new TTable( ); + join.setTable( table ); + // table.setTableType(ETableSource.objectname); + table.setTableName( OracleParser.parseObjectName("table1") ); + + TWhereClause whereClause = new TWhereClause( ); + select.setWhereClause( whereClause ); + whereClause.setCondition( OracleParser.parseExpression("f1>0") ); + + TGroupBy groupBy = new TGroupBy( ); + select.setGroupByClause( groupBy ); + TGroupByItem groupByItem = new TGroupByItem( ); + groupBy.getItems( ).addGroupByItem( groupByItem ); + groupByItem.setExpr( OracleParser.parseExpression("column1") ); + groupBy.setHavingClause( OracleParser.parseExpression("sum(column2) > 10") ); + + TOrderBy orderBy = new TOrderBy( ); + select.setOrderbyClause( orderBy ); + TOrderByItem orderByItem = new TOrderByItem( ); + orderBy.getItems( ).addElement( orderByItem ); + orderByItem.setSortKey( OracleParser.parseExpression("column1") ); + orderByItem.setSortOrder( ESortType.desc ); + + TOrderByItem orderByItem2 = new TOrderByItem( ); + orderBy.getItems( ).addElement( orderByItem2 ); + orderByItem2.setSortKey( OracleParser.parseExpression("column3") ); + orderByItem2.setSortOrder( ESortType.asc ); + + // System.out.println(scriptGenerator.generateScript(select, true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT column1,\n" + + " column2 AS c_alias\n" + + "FROM table1\n" + + "WHERE f1 > 0\n" + + "GROUP BY column1\n" + + "HAVING sum(column2) > 10\n" + + "ORDER BY column1 DESC,\n" + + " column3 ASC" + )); + + } + + public void testSelectOracleJoin( ) + { + TSelectSqlStatement select = new TSelectSqlStatement( EDbVendor.dbvoracle ); + + TResultColumnList resultColumnList = new TResultColumnList( ); + select.setResultColumnList( resultColumnList ); + TResultColumn resultColumn1 = new TResultColumn( ); + resultColumnList.addResultColumn( resultColumn1 ); + resultColumn1.setExpr(OracleParser.parseExpression("column1")); + + TResultColumn resultColumn2 = new TResultColumn( ); + resultColumnList.addResultColumn( resultColumn2 ); + resultColumn2.setExpr(OracleParser.parseExpression("column2")); + TAliasClause aliasClause = new TAliasClause( ); + resultColumn2.setAliasClause( aliasClause ); + aliasClause.setHasAs( true ); + aliasClause.setAliasName(OracleParser.parseObjectName("c_alias")); + + TJoinList joinList = new TJoinList( ); + select.joins = joinList; + TJoin join = new TJoin( ); + joinList.addJoin( join ); + TTable table = new TTable( ); + join.setTable( table ); + table.setTableType(ETableSource.objectname); + table.setTableName( OracleParser.parseObjectName("table1") ); + + TJoin join2 = new TJoin( ); + joinList.addJoin(join2); + TTable table2 = new TTable( ); + join2.setTable( table2 ); + // table2.setTableType(ETableSource.objectname); + table2.setTableName(OracleParser.parseObjectName("table2")); + + TWhereClause whereClause = new TWhereClause( ); + select.setWhereClause( whereClause ); + whereClause.setCondition( OracleParser.parseExpression("table1.f1 = table2.f1 and table1.f2 = 0") ); + + // System.out.println(scriptGenerator.generateScript(select, true)); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT column1,\n" + + " column2 AS c_alias\n" + + "FROM table1,\n" + + " table2\n" + + "WHERE table1.f1 = table2.f1\n" + + " AND table1.f2 = 0" + )); + + + } + + public void testSelectAnsiJoin( ) + { + TSelectSqlStatement select = new TSelectSqlStatement( EDbVendor.dbvoracle ); + + TResultColumnList resultColumnList = new TResultColumnList( ); + select.setResultColumnList( resultColumnList ); + TResultColumn resultColumn1 = new TResultColumn( ); + resultColumnList.addResultColumn( resultColumn1 ); + resultColumn1.setExpr( OracleParser.parseExpression("column1") ); + + TResultColumn resultColumn2 = new TResultColumn( ); + resultColumnList.addResultColumn( resultColumn2 ); + resultColumn2.setExpr( OracleParser.parseExpression("column2") ); + TAliasClause aliasClause = new TAliasClause( ); + resultColumn2.setAliasClause( aliasClause ); + aliasClause.setHasAs( true ); + aliasClause.setAliasName( OracleParser.parseObjectName("c_alias") ); + + TJoinList joinList = new TJoinList( ); + select.joins = joinList; + TJoin join = new TJoin( ); + joinList.addJoin( join ); + TTable table = new TTable( ); + join.setTable( table ); + // table.setTableType(ETableSource.objectname); + table.setTableName( OracleParser.parseObjectName("table1") ); + + TJoinItem joinItem = new TJoinItem( ); + join.getJoinItems( ).addJoinItem( joinItem ); + joinItem.setJoinType( EJoinType.inner ); + TTable joinTable = new TTable( ); + joinItem.setTable( joinTable ); + joinTable.setTableName( OracleParser.parseObjectName("table2") ); + joinItem.setOnCondition( OracleParser.parseExpression("table1.f1 = table2.f1") ); + + TJoinItem joinItem3 = new TJoinItem( ); + join.getJoinItems( ).addJoinItem( joinItem3 ); + joinItem3.setJoinType( EJoinType.leftouter ); + TTable joinTable3 = new TTable( ); + joinItem3.setTable( joinTable3 ); + joinTable3.setTableName( OracleParser.parseObjectName("table3") ); + joinItem3.setOnCondition( OracleParser.parseExpression("table3.f1 = table2.f1") ); + + TJoinItem joinItem4 = new TJoinItem( ); + join.getJoinItems( ).addJoinItem( joinItem4 ); + joinItem4.setJoinType( EJoinType.rightouter ); + TTable joinTable4 = new TTable( ); + joinItem4.setTable( joinTable4 ); + joinTable4.setTableName( OracleParser.parseObjectName("table4") ); + joinItem4.setOnCondition( OracleParser.parseExpression("table4.f1 = table3.f1") ); + + TWhereClause whereClause = new TWhereClause( ); + select.setWhereClause( whereClause ); + whereClause.setCondition( OracleParser.parseExpression("table1.f2 = 0") ); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT column1,\n" + + " column2 AS c_alias\n" + + "FROM table1\n" + + " INNER JOIN table2\n" + + " ON table1.f1 = table2.f1\n" + + " LEFT OUTER JOIN table3\n" + + " ON table3.f1 = table2.f1\n" + + " RIGHT OUTER JOIN table4\n" + + " ON table4.f1 = table3.f1\n" + + "WHERE table1.f2 = 0" + )); + + // System.out.println(scriptGenerator.generateScript(select, true)); + + } + + public void testCreateOracleAssignStmt( ) + { + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + TAssignStmt assign = new TAssignStmt( ); + + assign.setLeft(sqlParser.parseExpression("ILevel")); + assign.setExpression( sqlParser.parseExpression("'Low Income'") ); + + //System.out.println(assign.toScript()); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "ILevel = 'Low Income'", assign.toScript())); + + } + + public void testCreateBinaryExpression( ) + { + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + + TExpression left = sqlParser.parseExpression("1"); + TExpression right = sqlParser.parseExpression("2"); + TExpression plus = new TExpression(); + plus.setExpressionType(EExpressionType.arithmetic_plus_t); + plus.setLeftOperand(left); + plus.setRightOperand(right); + //System.out.println(plus.toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "1 + 2 ", plus.toScript())); + } + + public void testCreateComparisonPredicate( ) + { + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + + TExpression left = sqlParser.parseExpression("salary"); + TExpression right = sqlParser.parseExpression("20"); + TExpression plus = new TExpression(); + plus.setExpressionType(EExpressionType.simple_comparison_t); + plus.setComparisonType(EComparisonType.greaterThanOrEqualTo); + plus.setLeftOperand(left); + plus.setRightOperand(right); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary >= 20", plus.toScript())); + } + + public void testCreateAndPredicate( ) + { + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + + TExpression left = sqlParser.parseExpression("salary"); + TExpression right = sqlParser.parseExpression("20"); + + TExpression left2 = sqlParser.parseExpression("location"); + TExpression right2 = sqlParser.parseExpression("'NY'"); + + TExpression c1 = new TExpression(); + c1.setExpressionType(EExpressionType.simple_comparison_t); + c1.setComparisonType(EComparisonType.greaterThanOrEqualTo); + c1.setLeftOperand(left); + c1.setRightOperand(right); + + TExpression c2 = new TExpression(); + c2.setExpressionType(EExpressionType.simple_comparison_t); + c2.setComparisonType(EComparisonType.equals); + c2.setLeftOperand(left2); + c2.setRightOperand(right2); + + TExpression c3 = new TExpression(); + c3.setExpressionType(EExpressionType.logical_and_t); + c3.setLeftOperand(c1); + c3.setRightOperand(c2); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary >= 20 and location = 'NY'", c3.toScript())); + + } + + public void testCreateSubqueryPredicate( ) + { + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + + TExpression left = sqlParser.parseExpression("salary"); + TExpression right = sqlParser.parseExpression("(select sal from emp where empno=1)"); + TExpression subqueryPredicate = new TExpression(); + subqueryPredicate.setExpressionType(EExpressionType.simple_comparison_t); + subqueryPredicate.setComparisonType(EComparisonType.notLessThan); + subqueryPredicate.setLeftOperand(left); + subqueryPredicate.setRightOperand(right); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary !< (select sal from emp where empno=1)", subqueryPredicate.toScript())); + + subqueryPredicate.setExpressionType(EExpressionType.group_comparison_t); + subqueryPredicate.setComparisonType(EComparisonType.greaterThanOrEqualTo); + subqueryPredicate.setQuantifierType(EQuantifierType.all); + //System.out.println(subqueryPredicate.toScript()); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary >= all (select sal from emp where empno=1)", subqueryPredicate.toScript())); + + + } + + } \ No newline at end of file diff --git a/src/test/java/scriptWriter/testDatabricks.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testDatabricks.java similarity index 99% rename from src/test/java/scriptWriter/testDatabricks.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testDatabricks.java index 69e97bc6..a5977069 100644 --- a/src/test/java/scriptWriter/testDatabricks.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testDatabricks.java @@ -1,4 +1,4 @@ -package scriptWriter; +package gudusoft.gsqlparser.scriptWriterTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/scriptWriter/testGenerator.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testGenerator.java similarity index 96% rename from src/test/java/scriptWriter/testGenerator.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testGenerator.java index 9fe953f0..4dc0747c 100644 --- a/src/test/java/scriptWriter/testGenerator.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testGenerator.java @@ -1,12 +1,12 @@ -package scriptWriter; +package gudusoft.gsqlparser.scriptWriterTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; import gudusoft.gsqlparser.TCustomSqlStatement; import gudusoft.gsqlparser.TGSqlParser; import junit.framework.TestCase; -import common.SqlFileList; +import gudusoft.gsqlparser.commonTest.SqlFileList; public class testGenerator extends TestCase { diff --git a/src/test/java/scriptWriter/testModifyExpr.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifyExpr.java similarity index 97% rename from src/test/java/scriptWriter/testModifyExpr.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifyExpr.java index e7be6e89..21db2470 100644 --- a/src/test/java/scriptWriter/testModifyExpr.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifyExpr.java @@ -1,292 +1,292 @@ -package scriptWriter; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TExpressionList; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; -import gudusoft.gsqlparser.scriptWriter.TScriptGenerator; - -/** - * Code illustrates how to modify expression. - */ -public class testModifyExpr extends TestCase { - - private TGSqlParser parser = null; - private TScriptGenerator scriptGenerator = null; - - protected void setUp() throws Exception { - super.setUp(); - parser = new TGSqlParser(EDbVendor.dbvoracle); - scriptGenerator = new TScriptGenerator(); - } - - protected void tearDown() throws Exception { - parser = null; - super.tearDown(); - } - - /** - * set the status of an expression to be removed from the parent expression. - */ - public void testRemoveObjectExpr() { - TExpression expression = parser.parseExpression("columnA"); - assertTrue(expression.getExpressionType() == EExpressionType.simple_object_name_t); - expression.remove(); - assertTrue(expression.getExpressionType() == EExpressionType.removed_t); - } - - /** - * Remove an expression which includes a function call from the parent expression. - */ - public void testRemoveFunctionCallExpr() { - TExpression expression = parser.parseExpression("fx(columnA)"); - assertTrue(expression.getExpressionType() == EExpressionType.function_t); - expression.remove(); - assertTrue(expression.getExpressionType() == EExpressionType.removed_t); - } - - /** - * Remove columnC in fx(columnA,columnB,fx2(1+columnC)) cause the whole function - * removed from the parent expression. - */ - public void testRemoveColumnInFunctionCall() { - TExpression expression = parser.parseExpression("fx(columnA,columnB,fx2(1+columnC))"); - assertTrue(expression.getExpressionType() == EExpressionType.function_t); - - TExpressionList resultList = expression.searchColumn("columnC"); - assertTrue(resultList.size() == 1); - TExpression columnCExpr = resultList.getExpression(0); - columnCExpr.remove(); - - assertTrue(expression.getExpressionType() == EExpressionType.removed_t); - } - - /** - * Remove columnB in - * {@code - * columnA+(columnB*2)+columnC - * } - * will cause the whole expression removed from the parent expression or parse tree node. - */ - public void testSearchColumn() { - TExpression expression = parser.parseExpression("columnA+(columnB*2)+columnC"); - TExpressionList resultList = expression.searchColumn("columnB"); - assertTrue(resultList.size() == 1); - TExpression columnBExpr = resultList.getExpression(0); - assertTrue(columnBExpr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(columnBExpr.toString().equalsIgnoreCase("columnB")); - - assertTrue(expression.toScript().equalsIgnoreCase("columnA + (columnB * 2) + columnC")); - columnBExpr.remove(); - System.out.println(expression.toScript()); - //assertTrue(expression.toScript().equalsIgnoreCase("")); - } - - /** - * Remove columnA in - *
-     * {@code
-     * columnA+(columnB*2)>columnC
-     * }
-     * 
- * will cause the whole expression removed from the parent expression or parse tree node. - */ - public void testColumnInComparision() { - TExpression expression = parser.parseExpression("columnA+(columnB*2)>columnC"); - TExpressionList resultList = expression.searchColumn("columnA"); - assertTrue(resultList.size() == 1); - TExpression columnAExpr = resultList.getExpression(0); - assertTrue(columnAExpr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(columnAExpr.toString().equalsIgnoreCase("columnA")); - - assertTrue(expression.toScript().equalsIgnoreCase("columnA + (columnB * 2) > columnC")); - columnAExpr.remove(); - assertTrue(expression.toScript().equalsIgnoreCase("")); - } - - /** - * Remove columnA in - *
{@code columnA+(columnB*2)>columnC and columnD=columnE-9}
- * will cause the expression - *
-     * {@code columnA+(columnB*2)>columnC}
-     * 
- * removed from the parent expression and keep this expression unchange: - *
-     * {@code columnD = columnE - 9}
-     * 
- */ - public void testColumnInAndOr() { - TExpression expression = parser.parseExpression("columnA+(columnB*2)>columnC and columnD=columnE-9"); - TExpressionList resultList = expression.searchColumn("columnA"); - assertTrue(resultList.size() == 1); - TExpression columnAExpr = resultList.getExpression(0); - assertTrue(columnAExpr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(columnAExpr.toString().equalsIgnoreCase("columnA")); - - assertTrue(expression.toScript().equalsIgnoreCase("columnA + (columnB * 2) > columnC and columnD = columnE - 9")); - columnAExpr.remove(); - assertTrue(expression.toScript().equalsIgnoreCase("columnD = columnE - 9")); - } - - /** - * Remove column: application_location_id from the where condition, - *
-     * {@code
-     *     (pal.application_location_id = pualr.application_location_id +
-     *                        AND pu.jbp_uid = pualr.jbp_uid" +
-     *                        AND pu.username = 'USERID')
-     * }
-     * 
- * Keep the following condition unchanged: - *
-     *     {@code
-     *     (pu.jbp_uid = pualr.jbp_uid  and  pu.username = 'USERID')
-     *     }
-     * 
- */ - public void testColumnInAndOr1(){ - parser.sqltext = "select *\n" + - "from table1 pal, table2 pualr, table3 pu\n" + - "WHERE (pal.application_location_id = pualr.application_location_id \n" + - " AND pu.jbp_uid = pualr.jbp_uid \n" + - " AND pu.username = 'USERID')"; - int ret = parser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression = selectSqlStatement.getWhereClause().getCondition(); - - TExpressionList resultList = expression.searchColumn("application_location_id"); - assertTrue(resultList.size() == 2); - TExpression expression1 = resultList.getExpression(0); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expression1.toString().equalsIgnoreCase("pal.application_location_id")); - expression1.remove(); - assertTrue(expression.toScript().equalsIgnoreCase("(pu.jbp_uid = pualr.jbp_uid and pu.username = 'USERID')")); - } - - - /** - * Remove the right operand of a condition in where clause. - *
-     *     {@code
-     *     m.id = ?  and  m.id = altname.id(+)  and  m.id = ccu.id(+)
-     *     }
-     * 
- * After remove the right operand, the condition become like this: - *
-     *     {@code
-     *     m.id = ?  and  m.id = altname.id(+)
-     *     }
-     * 
- * then, remove the right operand again, the condition become like this: - *
-     *     {@code
-     *     m.id = ?
-     *     }
-     * 
- */ - public void testColumnInAndOr2(){ - parser.sqltext = "SELECT m.*, \n" + - " altname.last_name last_name_student, \n" + - " altname.first_name first_name_student, \n" + - " ccu.date_joined, \n" + - " ccu.last_login, \n" + - " ccu.photo_id, \n" + - " ccu.last_updated \n" + - "FROM summit.mstr m, \n" + - " summit.alt_name altname, \n" + - " smmtccon.ccn_user ccu \n" + - "WHERE m.id =?\n" + - " AND m.id = altname.id(+) \n" + - " AND m.id = ccu.id(+) \n" + - " AND altname.grad_name_ind(+) = '*'"; - int ret = parser.parse(); - - assertTrue(ret == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression = selectSqlStatement.getWhereClause().getCondition(); - - expression.getRightOperand().remove(); - assertTrue(expression.toScript().equalsIgnoreCase("m.id = ? and m.id = altname.id(+) and m.id = ccu.id(+)")); - expression.getRightOperand().remove(); - assertTrue(expression.toScript().equalsIgnoreCase("m.id = ? and m.id = altname.id(+)")); - expression.getRightOperand().remove(); - assertTrue(expression.toScript().equalsIgnoreCase("m.id = ?")); - } - - /** - * Remove those columns from the condition: lst.soort_adres, nat.prs_id, adr.id, prs.id - *
-     *     {@code
-     *   pas.soort_adres = lst.soort_adres
-     *   and prs.id(+) = nat.prs_id
-     *   and adr.id = pas.adr_id
-     *   and prs.id = pas.prs_id
-     *     and lst.persoonssoort = 'PERSOON'
-     *      and pas.einddatumrelatie is null;
-     *     }
-     * 
- * The result condition is: - *
-     *     {@code
-     *     lst.persoonssoort = 'PERSOON'
-     *            and pas.einddatumrelatie is null"
-     *     }
-     * 
- */ - public void testColumnInAndOr3(){ - parser.sqltext = "select *\n" + - "from ods_trf_pnb_stuf_lijst_adrsrt2 lst\n" + - "\t\t, ods_stg_pnb_stuf_pers_adr pas\n" + - "\t\t, ods_stg_pnb_stuf_pers_nat nat\n" + - "\t\t, ods_stg_pnb_stuf_adr adr\n" + - "\t\t, ods_stg_pnb_stuf_np prs\n" + - "where \n" + - "\tpas.soort_adres = lst.soort_adres\n" + - "\tand prs.id(+) = nat.prs_id\n" + - "\tand adr.id = pas.adr_id\n" + - "\tand prs.id = pas.prs_id\n" + - " and lst.persoonssoort = 'PERSOON'\n" + - " and pas.einddatumrelatie is null"; - int ret = parser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression = selectSqlStatement.getWhereClause().getCondition(); - - TExpressionList resultList = expression.searchColumn("lst.soort_adres"); - assertTrue(resultList.size() == 1); - TExpression expression1 = resultList.getExpression(0); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - expression1.remove(); - - resultList = expression.searchColumn("nat.prs_id"); - assertTrue(resultList.size() == 1); - expression1 = resultList.getExpression(0); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - expression1.remove(); - - resultList = expression.searchColumn("adr.id"); - assertTrue(resultList.size() == 1); - expression1 = resultList.getExpression(0); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - expression1.remove(); - - resultList = expression.searchColumn("prs.id"); - assertTrue(resultList.size() == 1); - expression1 = resultList.getExpression(0); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - expression1.remove(); - - assertTrue(expression.toScript().trim().equalsIgnoreCase("lst.persoonssoort = \'PERSOON\' and pas.einddatumrelatie is null")); - // assertTrue(expression.toScript().equalsIgnoreCase("(pu.jbp_uid = pualr.jbp_uid and pu.username = 'USERID')")); - } - -} +package gudusoft.gsqlparser.scriptWriterTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TExpressionList; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; +import gudusoft.gsqlparser.scriptWriter.TScriptGenerator; + +/** + * Code illustrates how to modify expression. + */ +public class testModifyExpr extends TestCase { + + private TGSqlParser parser = null; + private TScriptGenerator scriptGenerator = null; + + protected void setUp() throws Exception { + super.setUp(); + parser = new TGSqlParser(EDbVendor.dbvoracle); + scriptGenerator = new TScriptGenerator(); + } + + protected void tearDown() throws Exception { + parser = null; + super.tearDown(); + } + + /** + * set the status of an expression to be removed from the parent expression. + */ + public void testRemoveObjectExpr() { + TExpression expression = parser.parseExpression("columnA"); + assertTrue(expression.getExpressionType() == EExpressionType.simple_object_name_t); + expression.remove(); + assertTrue(expression.getExpressionType() == EExpressionType.removed_t); + } + + /** + * Remove an expression which includes a function call from the parent expression. + */ + public void testRemoveFunctionCallExpr() { + TExpression expression = parser.parseExpression("fx(columnA)"); + assertTrue(expression.getExpressionType() == EExpressionType.function_t); + expression.remove(); + assertTrue(expression.getExpressionType() == EExpressionType.removed_t); + } + + /** + * Remove columnC in fx(columnA,columnB,fx2(1+columnC)) cause the whole function + * removed from the parent expression. + */ + public void testRemoveColumnInFunctionCall() { + TExpression expression = parser.parseExpression("fx(columnA,columnB,fx2(1+columnC))"); + assertTrue(expression.getExpressionType() == EExpressionType.function_t); + + TExpressionList resultList = expression.searchColumn("columnC"); + assertTrue(resultList.size() == 1); + TExpression columnCExpr = resultList.getExpression(0); + columnCExpr.remove(); + + assertTrue(expression.getExpressionType() == EExpressionType.removed_t); + } + + /** + * Remove columnB in + * {@code + * columnA+(columnB*2)+columnC + * } + * will cause the whole expression removed from the parent expression or parse tree node. + */ + public void testSearchColumn() { + TExpression expression = parser.parseExpression("columnA+(columnB*2)+columnC"); + TExpressionList resultList = expression.searchColumn("columnB"); + assertTrue(resultList.size() == 1); + TExpression columnBExpr = resultList.getExpression(0); + assertTrue(columnBExpr.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(columnBExpr.toString().equalsIgnoreCase("columnB")); + + assertTrue(expression.toScript().equalsIgnoreCase("columnA + (columnB * 2) + columnC")); + columnBExpr.remove(); + System.out.println(expression.toScript()); + //assertTrue(expression.toScript().equalsIgnoreCase("")); + } + + /** + * Remove columnA in + *
+     * {@code
+     * columnA+(columnB*2)>columnC
+     * }
+     * 
+ * will cause the whole expression removed from the parent expression or parse tree node. + */ + public void testColumnInComparision() { + TExpression expression = parser.parseExpression("columnA+(columnB*2)>columnC"); + TExpressionList resultList = expression.searchColumn("columnA"); + assertTrue(resultList.size() == 1); + TExpression columnAExpr = resultList.getExpression(0); + assertTrue(columnAExpr.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(columnAExpr.toString().equalsIgnoreCase("columnA")); + + assertTrue(expression.toScript().equalsIgnoreCase("columnA + (columnB * 2) > columnC")); + columnAExpr.remove(); + assertTrue(expression.toScript().equalsIgnoreCase("")); + } + + /** + * Remove columnA in + *
{@code columnA+(columnB*2)>columnC and columnD=columnE-9}
+ * will cause the expression + *
+     * {@code columnA+(columnB*2)>columnC}
+     * 
+ * removed from the parent expression and keep this expression unchange: + *
+     * {@code columnD = columnE - 9}
+     * 
+ */ + public void testColumnInAndOr() { + TExpression expression = parser.parseExpression("columnA+(columnB*2)>columnC and columnD=columnE-9"); + TExpressionList resultList = expression.searchColumn("columnA"); + assertTrue(resultList.size() == 1); + TExpression columnAExpr = resultList.getExpression(0); + assertTrue(columnAExpr.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(columnAExpr.toString().equalsIgnoreCase("columnA")); + + assertTrue(expression.toScript().equalsIgnoreCase("columnA + (columnB * 2) > columnC and columnD = columnE - 9")); + columnAExpr.remove(); + assertTrue(expression.toScript().equalsIgnoreCase("columnD = columnE - 9")); + } + + /** + * Remove column: application_location_id from the where condition, + *
+     * {@code
+     *     (pal.application_location_id = pualr.application_location_id +
+     *                        AND pu.jbp_uid = pualr.jbp_uid" +
+     *                        AND pu.username = 'USERID')
+     * }
+     * 
+ * Keep the following condition unchanged: + *
+     *     {@code
+     *     (pu.jbp_uid = pualr.jbp_uid  and  pu.username = 'USERID')
+     *     }
+     * 
+ */ + public void testColumnInAndOr1(){ + parser.sqltext = "select *\n" + + "from table1 pal, table2 pualr, table3 pu\n" + + "WHERE (pal.application_location_id = pualr.application_location_id \n" + + " AND pu.jbp_uid = pualr.jbp_uid \n" + + " AND pu.username = 'USERID')"; + int ret = parser.parse(); + assertTrue(ret == 0); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TExpression expression = selectSqlStatement.getWhereClause().getCondition(); + + TExpressionList resultList = expression.searchColumn("application_location_id"); + assertTrue(resultList.size() == 2); + TExpression expression1 = resultList.getExpression(0); + assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(expression1.toString().equalsIgnoreCase("pal.application_location_id")); + expression1.remove(); + assertTrue(expression.toScript().equalsIgnoreCase("(pu.jbp_uid = pualr.jbp_uid and pu.username = 'USERID')")); + } + + + /** + * Remove the right operand of a condition in where clause. + *
+     *     {@code
+     *     m.id = ?  and  m.id = altname.id(+)  and  m.id = ccu.id(+)
+     *     }
+     * 
+ * After remove the right operand, the condition become like this: + *
+     *     {@code
+     *     m.id = ?  and  m.id = altname.id(+)
+     *     }
+     * 
+ * then, remove the right operand again, the condition become like this: + *
+     *     {@code
+     *     m.id = ?
+     *     }
+     * 
+ */ + public void testColumnInAndOr2(){ + parser.sqltext = "SELECT m.*, \n" + + " altname.last_name last_name_student, \n" + + " altname.first_name first_name_student, \n" + + " ccu.date_joined, \n" + + " ccu.last_login, \n" + + " ccu.photo_id, \n" + + " ccu.last_updated \n" + + "FROM summit.mstr m, \n" + + " summit.alt_name altname, \n" + + " smmtccon.ccn_user ccu \n" + + "WHERE m.id =?\n" + + " AND m.id = altname.id(+) \n" + + " AND m.id = ccu.id(+) \n" + + " AND altname.grad_name_ind(+) = '*'"; + int ret = parser.parse(); + + assertTrue(ret == 0); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TExpression expression = selectSqlStatement.getWhereClause().getCondition(); + + expression.getRightOperand().remove(); + assertTrue(expression.toScript().equalsIgnoreCase("m.id = ? and m.id = altname.id(+) and m.id = ccu.id(+)")); + expression.getRightOperand().remove(); + assertTrue(expression.toScript().equalsIgnoreCase("m.id = ? and m.id = altname.id(+)")); + expression.getRightOperand().remove(); + assertTrue(expression.toScript().equalsIgnoreCase("m.id = ?")); + } + + /** + * Remove those columns from the condition: lst.soort_adres, nat.prs_id, adr.id, prs.id + *
+     *     {@code
+     *   pas.soort_adres = lst.soort_adres
+     *   and prs.id(+) = nat.prs_id
+     *   and adr.id = pas.adr_id
+     *   and prs.id = pas.prs_id
+     *     and lst.persoonssoort = 'PERSOON'
+     *      and pas.einddatumrelatie is null;
+     *     }
+     * 
+ * The result condition is: + *
+     *     {@code
+     *     lst.persoonssoort = 'PERSOON'
+     *            and pas.einddatumrelatie is null"
+     *     }
+     * 
+ */ + public void testColumnInAndOr3(){ + parser.sqltext = "select *\n" + + "from ods_trf_pnb_stuf_lijst_adrsrt2 lst\n" + + "\t\t, ods_stg_pnb_stuf_pers_adr pas\n" + + "\t\t, ods_stg_pnb_stuf_pers_nat nat\n" + + "\t\t, ods_stg_pnb_stuf_adr adr\n" + + "\t\t, ods_stg_pnb_stuf_np prs\n" + + "where \n" + + "\tpas.soort_adres = lst.soort_adres\n" + + "\tand prs.id(+) = nat.prs_id\n" + + "\tand adr.id = pas.adr_id\n" + + "\tand prs.id = pas.prs_id\n" + + " and lst.persoonssoort = 'PERSOON'\n" + + " and pas.einddatumrelatie is null"; + int ret = parser.parse(); + assertTrue(ret == 0); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TExpression expression = selectSqlStatement.getWhereClause().getCondition(); + + TExpressionList resultList = expression.searchColumn("lst.soort_adres"); + assertTrue(resultList.size() == 1); + TExpression expression1 = resultList.getExpression(0); + assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); + expression1.remove(); + + resultList = expression.searchColumn("nat.prs_id"); + assertTrue(resultList.size() == 1); + expression1 = resultList.getExpression(0); + assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); + expression1.remove(); + + resultList = expression.searchColumn("adr.id"); + assertTrue(resultList.size() == 1); + expression1 = resultList.getExpression(0); + assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); + expression1.remove(); + + resultList = expression.searchColumn("prs.id"); + assertTrue(resultList.size() == 1); + expression1 = resultList.getExpression(0); + assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); + expression1.remove(); + + assertTrue(expression.toScript().trim().equalsIgnoreCase("lst.persoonssoort = \'PERSOON\' and pas.einddatumrelatie is null")); + // assertTrue(expression.toScript().equalsIgnoreCase("(pu.jbp_uid = pualr.jbp_uid and pu.username = 'USERID')")); + } + +} diff --git a/src/test/java/scriptWriter/testModifyPGSP.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifyPGSP.java similarity index 97% rename from src/test/java/scriptWriter/testModifyPGSP.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifyPGSP.java index a794f42f..ad053a0a 100644 --- a/src/test/java/scriptWriter/testModifyPGSP.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifyPGSP.java @@ -1,4 +1,4 @@ -package scriptWriter; +package gudusoft.gsqlparser.scriptWriterTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TCustomSqlStatement; diff --git a/src/test/java/scriptWriter/testModifySql.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifySql.java similarity index 97% rename from src/test/java/scriptWriter/testModifySql.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifySql.java index dfa4f07b..318b2627 100644 --- a/src/test/java/scriptWriter/testModifySql.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifySql.java @@ -1,1119 +1,1119 @@ -package scriptWriter; - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.scriptWriter.TScriptGenerator; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import junit.framework.TestCase; - -/** - * Illustrates how to modify SQL clauses. - *

- *
    - *
  • adding/modifying filter condition.
    - * {@link #testAddNewConditionInWhereClause},{@link #testAddNewConditionInWhereClause2},{@link #testAddORConditionInWhereClause}, - * {@link #testAddWhereClause}, {@link #testAddWhereClause2()},{@link #testAddWhereClauseAfterJoin()},{@link #testAddWhereClauseBeforeGrouBy()}, - * {@link #testSetNewWhereCondition()} - * {@link #testRemoveWhereClause()}, - * {@link #testModifyJoinCondition()} - *
  • - *
  • adding/remove new columns in select list.
    - * {@link #testAddResultColumnInSelectList}, {@link #testRemoveResultColumnInSelectList()},{@link #testModifySelectList()} - *
  • - *
  • adding/modify/remove a new join.
    - * {@link #testFromClaueJoinTable()}, {@link #testModifyTableInFromClause()}, {@link #testRemoveJoin()}, - * {@link #testRemoveTableAndAddJoinClause()},{@link #testRemoveTableInFromClauseAndRemoveWhereClause()} - * - *
  • - *
- *

- * - * - * @see http://support.sqlparser.com/tutorials/gsp-howto-script-writer/ - */ -public class testModifySql extends TestCase { - - private TGSqlParser parser = null; - private TScriptGenerator scriptGenerator = null; - - protected void setUp() throws Exception { - super.setUp(); - parser = new TGSqlParser(EDbVendor.dbvoracle); - } - - protected void tearDown() throws Exception { - parser = null; - super.tearDown(); - } - - - public void testAddJoin(){ - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlParser.sqltext = "SELECT count(*), age FROM people\n" + - "GROUP BY people"; - assertTrue(sqlParser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); - TJoinList joinList = select.joins; - TJoinItem joinItem = new TJoinItem(); - joinList.getJoin(0).getJoinItems().addJoinItem(joinItem); - joinItem.setJoinType(EJoinType.inner); - TTable joinTable = new TTable(); - joinItem.setTable(joinTable); - joinTable.setTableName(sqlParser.parseObjectName("otherTable")); - joinItem.setOnCondition(sqlParser.parseExpression("people.id = otherTable.id")); - // System.out.println(select.toScript()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , select.toScript() - , "select \n" + - "count(*),age\n" + - " from \n" + - "people\n" + - " inner join otherTable on people.id = otherTable.id\n" + - " group by people" - )); - } - - public void testSimpleConverter(){ - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; - assertTrue(sqlParser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); - TJoinList joinList = select.joins; - // remove table: t2 - joinList.removeJoin(1); - // remove where clause - select.setWhereClause(null); - // add join condition - TJoinItem joinItem = new TJoinItem(); - joinList.getJoin(0).getJoinItems().addJoinItem(joinItem); - joinItem.setJoinType(EJoinType.left); - TTable joinTable = new TTable(); - joinItem.setTable(joinTable); - joinTable.setTableName(sqlParser.parseObjectName("t2")); - joinItem.setOnCondition(sqlParser.parseExpression("t1.f1=t2.f2")); - // System.out.println(select.toScript()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , select.toScript() - , "SELECT *\n" + - "FROM t1\n" + - " LEFT JOIN t2\n" + - " ON t1.f1 = t2.f2" - )); - } - - -// public void testModifySelectList2(){ -// TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvpostgresql); -// sqlParser.sqltext = "SELECT COL1, \n" + -// "CAST(CO2 AS VARCHAR) x, \n" + -// "COL3 || \"-\" || COL4 y, \n" + -// "MIN(COL5) MIN5\n" + -// "FROM T"; -// assertTrue(sqlParser.parse() == 0); -// -// TSelectSqlStatement select = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); -// TResultColumn resultColumn0 = select.getResultColumnList().getResultColumn(0); -// String column0 = resultColumn0.getExpr().toString(); -// resultColumn0.setExpr(parser.parseExpression("MYUDF("+column0+")")); -// -// TResultColumn resultColumn1 = select.getResultColumnList().getResultColumn(1); -// String column1 = resultColumn1.getExpr().toString(); -// resultColumn1.setExpr(parser.parseExpression("MYUDF2("+column1+")")); -// -// System.out.println(select.toScript()); -// } - - public void testModifySelectList(){ - parser.sqltext = "select t1.f1, t2.f2 as f2 from table1 t1 left join table2 t2 on t1.f1 = t2.f2 "; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - select.getResultColumnList().removeResultColumn(1); - select.getResultColumnList().removeResultColumn(0); - - TResultColumn resultColumn1 = new TResultColumn(); - resultColumn1.setExpr(parser.parseExpression("t1.f3")); - TAliasClause aliasClause1 = new TAliasClause(); - aliasClause1.setAliasName(parser.parseObjectName("f1")); - aliasClause1.setHasAs(true); - resultColumn1.setAliasClause(aliasClause1); - select.getResultColumnList().addResultColumn(resultColumn1); - - TResultColumn resultColumn2 = new TResultColumn(); - resultColumn2.setExpr(parser.parseExpression("t2.f3")); - select.getResultColumnList().addResultColumn(resultColumn2); - // System.out.println(scriptGenerator.generateScript(select,true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , select.toScript() - ,"SELECT t1.f3 AS f1,\n" + - " t2.f3\n" + - "FROM table1 t1\n" + - " LEFT JOIN table2 t2\n" + - " ON t1.f1 = t2.f2" - )); - - } - - public void testFromClaueJoinTable(){ - parser.sqltext = "select table1.col1, table2.col2\n" + - "from table1, table2\n" + - "where table1.foo > table2.foo"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - select.joins.removeJoin(1); - - TJoin join = new TJoin(); - select.joins.addJoin(join); - join.setNestedParen(1); - TTable table1 = new TTable(); - table1.setTableName(parser.parseObjectName("tableX")); - join.setTable(table1); - - TJoinItem joinItem = new TJoinItem(); - join.getJoinItems().addJoinItem(joinItem); - joinItem.setJoinType(EJoinType.join); - TTable table2 = new TTable(); - table2.setTableName(parser.parseObjectName("tableY")); - joinItem.setTable(table2); - - - TObjectNameList usingColumns = new TObjectNameList(); - usingColumns.addObjectName(parser.parseObjectName("id")); - joinItem.setUsingColumns(usingColumns); - - TAliasClause aliasClause = new TAliasClause(); - aliasClause.setAliasName(parser.parseObjectName("table2")); - aliasClause.setHasAs(true); - join.setAliasClause(aliasClause); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT table1.col1,\n" + - " table2.col2\n" + - "FROM table1, (\n" + - " tablex JOIN \n" + - " tabley USING (ID)) AS table2\n" + - "WHERE table1.foo > table2.foo" - )); - - } - - public void testRemoveResultColumnInSelectList(){ - parser.sqltext = "SELECT A as A_Alias, B AS B_Alias FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TResultColumnList columns = select.getResultColumnList(); - columns.removeResultColumn(1); - TResultColumn resultColumn = new TResultColumn(); - resultColumn.setExpr(parser.parseExpression("x")); - columns.addResultColumn(resultColumn); - // System.out.println(scriptGenerator.generateScript(select, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT a AS a_alias,\n" + - " x\n" + - "FROM table_x" - )); - - } - - public void testAddResultColumnInSelectList(){ - parser.sqltext = "SELECT A as A_Alias, B AS B_Alias FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TResultColumnList columns = select.getResultColumnList(); - - TResultColumn resultColumn = new TResultColumn(); - resultColumn.setExpr(parser.parseExpression("d")); - columns.addResultColumn(resultColumn); - TAliasClause aliasClause = new TAliasClause(); - aliasClause.setAliasName(parser.parseObjectName("d_alias")); - aliasClause.setHasAs(true); - resultColumn.setAliasClause(aliasClause); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT a AS a_alias,\n" + - " b AS b_alias,\n" + - " d AS d_alias\n" + - "FROM table_x" - )); - - } - - public void testRemoveTableInFromClauseAndRemoveWhereClause(){ - parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TJoinList joinList = select.joins; - joinList.removeJoin(0); - select.setWhereClause(null); - - // System.out.println(scriptGenerator.generateScript(select, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM t2" - )); - - } - - public void testRemoveTableAndAddJoinClause(){ - parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TJoinList joinList = select.joins; - // let's remove t2 and where clause - joinList.removeJoin(1); - - TJoinItem joinItem = new TJoinItem(); - joinList.getJoin(0).getJoinItems().addJoinItem(joinItem); - joinItem.setJoinType(EJoinType.left); - TTable joinTable = new TTable(); - joinItem.setTable(joinTable); - joinTable.setTableName(parser.parseObjectName("t2")); - joinItem.setOnCondition(parser.parseExpression("t1.f1=t2.f2")); - - // remove where clause - select.setWhereClause(null); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM t1\n" + - " LEFT JOIN t2\n" + - " ON t1.f1 = t2.f2" - )); - } - - - public void testRemoveCTE(){ - parser.sqltext = "with test as (select id from emp)\n" + - "select * from test"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.setCteList(null); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM test" - )); - - - } - - public void testAddNewConditionInWhereClause2(){ - - parser.sqltext = "SELECT * FROM TABLE_X where f > 0"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression1 = parser.parseExpression("c1>1"); - TExpression expression2 = new TExpression(); - expression2.setExpressionType(EExpressionType.logical_and_t); - expression2.setLeftOperand(select.getWhereClause().getCondition()); - expression2.setRightOperand(expression1); - select.getWhereClause().setCondition(expression2); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , select.toScript() - , "SELECT *\n" + - "FROM table_x\n" + - "WHERE f > 0\n" + - " AND c1 > 1" - )); - - } - - public void testAddORConditionInWhereClause(){ - parser.sqltext = "SELECT * FROM TABLE_X where f > 0"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression1 = parser.parseExpression("c1>1"); - TExpression expression2 = new TExpression(); - expression2.setExpressionType(EExpressionType.logical_or_t); - TExpression parensExpr = new TExpression(); - parensExpr.setExpressionType( EExpressionType.parenthesis_t ); - parensExpr.setLeftOperand(select.getWhereClause().getCondition()); - expression2.setLeftOperand(parensExpr); - expression2.setRightOperand(expression1); - - select.getWhereClause().setCondition(expression2); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE ( f > 0 )\n" + - " OR c1 > 1" - )); - } - - public void testAddNewConditionInWhereClause(){ - parser.sqltext = "select count(*) from TableName where NOT a OR NOT b"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression1 = parser.parseExpression("c1=1"); - - - TExpression expression2 = new TExpression(); - expression2.setExpressionType(EExpressionType.logical_and_t); - TExpression parensExpr = new TExpression(); - parensExpr.setExpressionType( EExpressionType.parenthesis_t ); - parensExpr.setLeftOperand(select.getWhereClause().getCondition()); - expression2.setLeftOperand(parensExpr); - expression2.setRightOperand(expression1); - - select.getWhereClause().setCondition(expression2); - - // System.out.println(scriptGenerator.generateScript(select,true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT count(*)\n" + - "FROM tablename\n" + - "WHERE ( NOT a\n" + - " OR NOT b )\n" + - " AND c1 = 1" - )); - - - } - - public void testAddWhereClause2(){ - parser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TWhereClause whereClause = new TWhereClause(); - select.setWhereClause(whereClause); - whereClause.setCondition(parser.parseExpression("c>1")); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE c > 1" - )); - - - } - - public void testAddWhereClauseBeforeGrouBy(){ - parser.sqltext = "SELECT * FROM TABLE_X group by a"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TWhereClause whereClause = new TWhereClause(); - select.setWhereClause(whereClause); - whereClause.setCondition(parser.parseExpression("c>1")); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE c > 1\n" + - "GROUP BY a" - )); - - } - - public void testAddWhereClauseAfterJoin(){ - parser.sqltext = "SELECT tableA.itemA1, tableB.itemB1\n" - + " FROM tableA\n" - + " INNER JOIN tableB\n" - + " ON tableB.itemB2 = tableA.itemA2\n" - + " INNER JOIN (\n" - + " SELECT tableC.itemC1\n" - + " FROM tableC\n" - + " WHERE tableC.itemC3='ABC'\n" - + " GROUP BY tableC.itemC1\n" - + ") unNamedJoin\n" - + " ON unNamedJoin.itemC1 = tableB.itemB2\n"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TJoinList joinList = select.joins; - TJoinItem item = joinList.getJoin( 0 ).getJoinItems( ).getJoinItem( 0 ); - - TExpression expression1 = parser.parseExpression("1=1"); - - TExpression expression2 = new TExpression(); - expression2.setExpressionType(EExpressionType.logical_and_t); - TExpression parensExpr = new TExpression(); - parensExpr.setExpressionType( EExpressionType.parenthesis_t ); - parensExpr.setLeftOperand(item.getOnCondition()); - expression2.setLeftOperand(parensExpr); - expression2.setRightOperand(expression1); - - item.setOnCondition(expression2); - - TWhereClause whereClause = new TWhereClause(); - whereClause.setCondition(parser.parseExpression("c>1")); - select.setWhereClause(whereClause); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT tablea.itema1,\n" + - " tableb.itemb1\n" + - "FROM tablea\n" + - " INNER JOIN tableb\n" + - " ON (tableb.itemb2 = tablea.itema2) AND 1 = 1\n" + - " INNER JOIN ( SELECT tablec.itemc1 FROM tablec WHERE tablec.itemc3 = 'ABC' GROUP BY tablec.itemc1) unnamedjoin\n" + - " ON unnamedjoin.itemc1 = tableb.itemb2\n" + - "WHERE c > 1" - )); - - } - - public void testRemoveWhereClause(){ - parser.sqltext = "SELECT * FROM TABLE_X where a>1 order by a"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.setWhereClause(null); - // System.out.println(scriptGenerator.generateScript(select,true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "ORDER BY a" - )); - - } - - public void testAddOrderByClause(){ - parser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TOrderBy orderBy = new TOrderBy(); - select.setOrderbyClause(orderBy); - TOrderByItem orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.desc); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "ORDER BY a DESC" - )); - - - - parser.sqltext = "SELECT * FROM TABLE_X where a>1"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - orderBy = new TOrderBy(); - select.setOrderbyClause(orderBy); - orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.desc); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE a > 1\n" + - "ORDER BY a DESC" - )); - - - - parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - orderBy = new TOrderBy(); - select.setOrderbyClause(orderBy); - orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.asc); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE a > 1\n" + - "GROUP BY a\n" + - "HAVING count(*) > 1\n" + - "ORDER BY a ASC" - )); - - - parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1 order by c desc"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.asc); - select.getOrderbyClause().getItems().addOrderByItem(orderByItem); - // System.out.println(scriptGenerator.generateScript(select,true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE a > 1\n" + - "GROUP BY a\n" + - "HAVING count(*) > 1\n" + - "ORDER BY c DESC,\n" + - " a ASC" - )); - - - parser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TWhereClause whereClause = new TWhereClause(); - whereClause.setCondition(parser.parseExpression("a>1 and b>2")); - select.setWhereClause(whereClause); - //select.addWhereClause("a>1 and b>2") ; - - orderBy = new TOrderBy(); - select.setOrderbyClause(orderBy); - orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.desc); - - //System.out.println(scriptGenerator.generateScript(select,true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE a > 1\n" + - " AND b > 2\n" + - "ORDER BY a DESC" - )); - - - } - - - public void testRemoveItemInOrderByClause(){ - parser.sqltext = "SELECT * FROM TABLE_X order by a,b"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.getOrderbyClause().getItems().removeItem(1); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "ORDER BY a" - )); - - - select.setOrderbyClause(null); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x" - )); - - - } - - public void testReplaceOrderByItemAndAddSortType(){ - parser.sqltext = "SELECT * FROM TABLE_X order by a"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.getOrderbyClause().getItems().removeElementWithoutSyncTokens(0); - TOrderBy orderBy = select.getOrderbyClause(); - - TOrderByItem orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("b")); - orderByItem.setSortOrder(ESortType.asc); - - orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a1")); - orderByItem.setSortOrder(ESortType.desc); - - - - //System.out.println(scriptGenerator.generateScript(select,true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "ORDER BY b ASC,\n" + - " a1 DESC" - )); - - - } - - public void testRemoveSetClauseInUpdate(){ - parser.sqltext = "UPDATE BLA SET A=2, B=3 WHERE X=5"; - assertTrue(parser.parse() == 0); - - TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)parser.sqlstatements.get(0); - TResultColumnList setClauses = updateSqlStatement.getResultColumnList(); - setClauses.removeResultColumn(0); - // System.out.println(scriptGenerator.generateScript(updateSqlStatement, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,updateSqlStatement.toScript() - ,"UPDATE bla\n" + - "SET b=3\n" + - "WHERE x = 5" - )); - - } - - public void testModifyJoinCondition(){ - parser.sqltext = "select * from t1 inner join t2 on t1.col1 = t2.col2"; - assertTrue(parser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - TJoin join = selectSqlStatement.joins.getJoin(0); - TTable table = join.getTable(); - table.setTableName(parser.parseObjectName("t2")); - TJoinItem joinItem = join.getJoinItems().getJoinItem(0); - table = joinItem.getTable(); - table.setTableName(parser.parseObjectName("t1")); - joinItem.setOnCondition(parser.parseExpression("t1.col3 = t2.col5")); - - // System.out.println(scriptGenerator.generateScript(selectSqlStatement, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,selectSqlStatement.toScript() - ,"SELECT *\n" + - "FROM t2\n" + - " INNER JOIN t1\n" + - " ON t1.col3 = t2.col5" - )); - - - } - - public void testRemoveJoin(){ - - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "SELECT X, Y, Z FROM A JOIN B ON A.X=B.Y"; - assertTrue(sqlParser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); - TJoin join = selectSqlStatement.joins.getJoin(0); - join.getJoinItems().removeElementWithoutSyncTokens(0); - -// System.out.println(scriptGenerator.generateScript(selectSqlStatement, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,selectSqlStatement.toScript() - ,"SELECT x,\n" + - " y,\n" + - " z\n" + - "FROM a" - )); - - - } - - - public void testModifyTableInFromClause(){ - parser.sqltext = "select * from t1"; - assertTrue(parser.parse() == 0); - - TTable table = parser.sqlstatements.get(0).tables.getTable(0); - table.setTableName(parser.parseObjectName("newt")); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,parser.sqlstatements.get(0).toScript() - ,"SELECT *\n" + - "FROM newt" - )); - - } - - public void testAddTableAlias(){ - parser.sqltext = "select * from t1"; - assertTrue(parser.parse() == 0); - - TTable table = parser.sqlstatements.get(0).tables.getTable(0); - TAliasClause aliasClause = new TAliasClause(); - aliasClause.setHasAs(true); - aliasClause.setAliasName(parser.parseObjectName("foo")); - table.setAliasClause(aliasClause); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,parser.sqlstatements.get(0).toScript() - ,"SELECT *\n" + - "FROM t1 AS foo" - )); - //assertTrue(parser.sqlstatements.get(0).toString().trim().equalsIgnoreCase("select * from t1 AS foo")); - - } - - public void testModifyTableInCreateTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvimpala); - sqlparser.sqltext = "create table if not exists campaign_1 ( id int, name string )"; - int ret = sqlparser.parse(); - TCustomSqlStatement stmt = sqlparser.sqlstatements.get(0); - TTable table = stmt.tables.getTable(0); - table.setTableName(parser.parseObjectName("prefix_." + table.getTableName().toString())); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,table.toScript() - ,"prefix_.campaign_1" - )); - - } - - public void testRemoveHavingClause(){ - parser.sqltext = "SELECT\n" + - "c.ID AS \"SMS.ID\"\n" + - "FROM\n" + - "SUMMIT.cntrb_detail c\n" + - "where\n" + - "c.cntrb_date >='$GivingFromDate$'\n" + - "and c.cntrb_date<='$GivingThruDate$'\n" + - "group by c.id\n" + - "having sum(c.amt) >= '$GivingFromAmount$' and sum(c.amt) <= '$GivingThruAmount$'"; - assertTrue(parser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - TGroupBy groupBy = selectSqlStatement.getGroupByClause(); - groupBy.setHavingClause(null); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,selectSqlStatement.toScript() - ,"SELECT c.ID AS \"SMS.ID\"\n" + - "FROM summit.cntrb_detail c\n" + - "WHERE c.cntrb_date >= '$GivingFromDate$'\n" + - " AND c.cntrb_date <= '$GivingThruDate$'\n" + - "GROUP BY c.ID" - )); - - - } - - public void testAlterTable_new(){ - TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); - lcparser.sqltext = "ALTER TABLE P_CAP \n" + - "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + - "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD);"; - assertTrue(lcparser.parse() == 0); - TAlterTableStatement at = (TAlterTableStatement) lcparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = at.getAlterTableOptionList().getAlterTableOption(0); - TConstraint constraint = alterTableOption.getConstraintList().getConstraint(0); - assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); - - constraint.getReferencedColumnList().addObjectName(parser.parseObjectName("CEL_NEWID")); - //System.out.println(scriptGenerator.generateScript(at, true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,at.toScript() - ,"ALTER TABLE p_cap \n" + - " ADD CONSTRAINT fk_p_cap_r_ph_111_p_cel FOREIGN KEY (cap_cel) REFERENCES p_cel(cel_cod,cel_newid)" - )); - } - - public void testAddRefernceColumnInAlterTable2(){ - TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); - lcparser.sqltext = "ALTER TABLE P_CAP \n" + - "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + - "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD);"; - assertTrue(lcparser.parse() == 0); - TAlterTableStatement at = (TAlterTableStatement) lcparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = at.getAlterTableOptionList().getAlterTableOption(0); - TConstraint constraint = alterTableOption.getConstraintList().getConstraint(0); - assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); - - constraint.getReferencedColumnList().insertElementAt(parser.parseObjectName("cel_newid"),0); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,at.toScript() - ,"ALTER TABLE p_cap \n" + - " ADD CONSTRAINT fk_p_cap_r_ph_111_p_cel FOREIGN KEY (cap_cel) REFERENCES p_cel(cel_newid,cel_cod)" - )); - - - } - - public void testAddWhereClause(){ - TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); - lcparser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(lcparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)lcparser.sqlstatements.get(0); - TWhereClause whereClause = new TWhereClause(); - select.setWhereClause(whereClause); - whereClause.setCondition(parser.parseExpression("f > 0")); - //System.out.println(scriptGenerator.generateScript(select,true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE f > 0" - )); - - - } - - public void testRemoveAdditionalParenthesisOfSubquery(){ - TSelectSqlStatement select = null, subquery = null; - parser.sqltext = "select * from ((select * from some_table where some_column < ?)) some_view where a_column = something"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - subquery = select.tables.getTable(0).subquery; - subquery.setParenthesisCount(1); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM (SELECT *\n" + - " FROM some_table\n" + - " WHERE some_column < ?) some_view\n" + - "WHERE a_column = something" - )); - - - - parser.sqltext = "(((select a from b)) order by a)"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.setParenthesisCount(0); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"(( SELECT a\n" + - " FROM b))\n" + - " ORDER BY a" - )); - - - - parser.sqltext = "((((select a from b)) order by a))"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.setParenthesisCount(1); - select.setParenthesisCountBeforeOrder(1); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"(( SELECT a\n" + - " FROM b)\n" + - " ORDER BY a)" - )); - - //assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("( ( select a from b ) order by a )")); - - parser.sqltext = "select * from user_table where ((username like '%admin%'));"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TExpression expression = select.getWhereClause().getCondition(); - select.getWhereClause().setCondition(expression.getLeftOperand()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM user_table\n" + - "WHERE ( username LIKE '%admin%' )" - )); - - } - public void testSetNewWhereCondition(){ - parser.sqltext = "select t1.f1 from table1 t1 where t1.f2 = 2 "; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.getWhereClause().setCondition(parser.parseExpression("t1.f2>2")); - // System.out.println(scriptGenerator.generateScript(select,true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT t1.f1\n" + - "FROM table1 t1\n" + - "WHERE t1.f2 > 2" - )); - } - - public void testModifyHavingClause(){ - TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); - SQLParser.sqltext = "select\n" + - "\n" + - " fiscalyear(cps.receiveDateActual) as \"year\", fiscalquarter(cps.receivedateactual) as \"qtr\",\n" + - "\n" + - " concat(fiscalyear(cps.receiveDateActual),'Q',fiscalquarter(cps.receivedateactual)) as \"yearQtr\",\n" + - "\n" + - " emspartner.name as \"emsPartner\",\n" + - "\n" + - " max(emspartner.sysnotesunid) as \"emsPartnerUnid\",\n" + - "\n" + - " sum(If(Date(cps.ReceiveDateActual) <= Date(lot.EmsDeliveryCommit),1,0)) as \"onTime\",\n" + - "\n" + - " sum(If(Date(cps.ReceiveDateActual) > Date(lot.EmsDeliveryCommit),1,0)) as \"late\",\n" + - "\n" + - " avg(If(Date(cps.ReceiveDateActual) <= Date(lot.EmsDeliveryCommit),0,datediff(cps.ReceiveDateActual,lot.EmsDeliveryCommit))) as \"daysLateAvg\", \n" + - "\n" + - " count(*) as \"total\",\n" + - "\n" + - " lot.sysroles\n" + - "\n" + - "from\n" + - "\n" + - " cerpproductsheet cps\n" + - "\n" + - " join cerplot lot on (lot.sysnotesunid = cps.lotunid)\n" + - "\n" + - " join cerpsysappcode emspartner on (emspartner.sysnotesunid = lot.boardVendorUnid)\n" + - "\n" + - "where\n" + - "\n" + - " lot.emsDeliveryCommit is not null\n" + - "\n" + - " and cps.receivedateactual is not null\n" + - "\n" + - "group by\n" + - "\n" + - " fiscalyear(cps.receiveDateActual) desc, fiscalquarter(cps.receivedateactual) desc, emspartner.name\n" + - "\n" + - "order by\n" + - "\n" + - " year"; - - int iRet = SQLParser.parse(); - TSelectSqlStatement tselect = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); - - TGroupBy groupByClause = tselect.getGroupByClause(); - - TExpression expression = groupByClause.getHavingClause(); - - if (expression == null){ - expression = SQLParser.parseExpression("1=1 and column1>10"); - groupByClause.setHavingClause(expression); - } else { - //expression.addANDCondition(theWhereOrHavingClause); - } - - // System.out.println(tselect.toScript()); - SQLParser = null; - } - - public void test4Having(){ - TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); - SQLParser.sqltext = "select a, b, c, count(*) from mytable group by a, b, c"; - - int iRet = SQLParser.parse(); - TSelectSqlStatement tselect = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); - - TGroupBy groupByClause = tselect.getGroupByClause(); - - TExpression expression = groupByClause.getHavingClause(); - String having = "b='x'"; - if (expression == null){ - - expression = SQLParser.parseExpression(having); - if (expression == null){ - System.out.println("can't parse expression:"+having); - }else{ - groupByClause.setHavingClause(expression); - } - - } else { - //expression.addANDCondition(theWhereOrHavingClause); - } - - SQLParser = null; - } - - public void testOrderByItem(){ - TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); - SQLParser.sqltext = "select a, b, c from mytable order by c"; - - int iRet = SQLParser.parse(); - TSelectSqlStatement select = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); - - TOrderBy orderBy = select.getOrderbyClause(); - - TOrderByItem orderByItem = new TOrderByItem(); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.desc); - - orderBy.getItems().addElement(orderByItem); - //System.out.println(select.toScript()); - - SQLParser = null; - } - - public void testPredicateRegexp(){ - TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); - SQLParser.sqltext = "select a, b, c, count(*) from mytable group by a, b, c having a='X'"; - - int iRet = SQLParser.parse(); - TSelectSqlStatement select = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); - - TGroupBy groupByClause = select.getGroupByClause(); - - TExpression expression = groupByClause.getHavingClause(); - String having = "b regexp 'foo.*'"; - TExpression newExpr = SQLParser.parseExpression(having+" and "+expression.toString()); - if (newExpr == null){ - System.out.println("can't parse expression:"+having); - return; - } - - groupByClause.setHavingClause(newExpr); - //System.out.println(select.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql - ,select.toScript() - ,"select \n" + - "a,b,c,count(*)\n" + - " from \n" + - "mytable\n" + - " group by a,b,c having b regexp 'foo.*' and a = 'X'" - )); - SQLParser = null; - } - - - public void testFunctionGroupConcat(){ - TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); - SQLParser.sqltext = "select a, b, c, count(*), group_concat(distinct d separator ' ') from mytable group by a, b, c"; - - int iRet = SQLParser.parse(); - TSelectSqlStatement select = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); - - TGroupBy groupByClause = select.getGroupByClause(); - - TExpression expression = groupByClause.getHavingClause(); - String having = "b regexp 'foo.*'"; - if (expression != null){ - having = expression.toString() +" and "+ having; - } - TExpression newExpr = SQLParser.parseExpression(having); - if (newExpr == null){ - System.out.println("can't parse expression:"+having); - return; - } - - groupByClause.setHavingClause(newExpr); - // System.out.println(select.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql - ,select.toScript() - ,"select \n" + - "a,b,c,count(*),group_concat( distinct d separator ' ')\n" + - " from \n" + - "mytable\n" + - " group by a,b,c having b regexp 'foo.*'" - )); - SQLParser = null; - } - - -} +package gudusoft.gsqlparser.scriptWriterTest; + + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.scriptWriter.TScriptGenerator; +import gudusoft.gsqlparser.stmt.TAlterTableStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; +import junit.framework.TestCase; + +/** + * Illustrates how to modify SQL clauses. + *

+ *
    + *
  • adding/modifying filter condition.
    + * {@link #testAddNewConditionInWhereClause},{@link #testAddNewConditionInWhereClause2},{@link #testAddORConditionInWhereClause}, + * {@link #testAddWhereClause}, {@link #testAddWhereClause2()},{@link #testAddWhereClauseAfterJoin()},{@link #testAddWhereClauseBeforeGrouBy()}, + * {@link #testSetNewWhereCondition()} + * {@link #testRemoveWhereClause()}, + * {@link #testModifyJoinCondition()} + *
  • + *
  • adding/remove new columns in select list.
    + * {@link #testAddResultColumnInSelectList}, {@link #testRemoveResultColumnInSelectList()},{@link #testModifySelectList()} + *
  • + *
  • adding/modify/remove a new join.
    + * {@link #testFromClaueJoinTable()}, {@link #testModifyTableInFromClause()}, {@link #testRemoveJoin()}, + * {@link #testRemoveTableAndAddJoinClause()},{@link #testRemoveTableInFromClauseAndRemoveWhereClause()} + * + *
  • + *
+ *

+ * + * + * @see http://support.sqlparser.com/tutorials/gsp-howto-script-writer/ + */ +public class testModifySql extends TestCase { + + private TGSqlParser parser = null; + private TScriptGenerator scriptGenerator = null; + + protected void setUp() throws Exception { + super.setUp(); + parser = new TGSqlParser(EDbVendor.dbvoracle); + } + + protected void tearDown() throws Exception { + parser = null; + super.tearDown(); + } + + + public void testAddJoin(){ + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvpostgresql); + sqlParser.sqltext = "SELECT count(*), age FROM people\n" + + "GROUP BY people"; + assertTrue(sqlParser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); + TJoinList joinList = select.joins; + TJoinItem joinItem = new TJoinItem(); + joinList.getJoin(0).getJoinItems().addJoinItem(joinItem); + joinItem.setJoinType(EJoinType.inner); + TTable joinTable = new TTable(); + joinItem.setTable(joinTable); + joinTable.setTableName(sqlParser.parseObjectName("otherTable")); + joinItem.setOnCondition(sqlParser.parseExpression("people.id = otherTable.id")); + // System.out.println(select.toScript()); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + , select.toScript() + , "select \n" + + "count(*),age\n" + + " from \n" + + "people\n" + + " inner join otherTable on people.id = otherTable.id\n" + + " group by people" + )); + } + + public void testSimpleConverter(){ + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + sqlParser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; + assertTrue(sqlParser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); + TJoinList joinList = select.joins; + // remove table: t2 + joinList.removeJoin(1); + // remove where clause + select.setWhereClause(null); + // add join condition + TJoinItem joinItem = new TJoinItem(); + joinList.getJoin(0).getJoinItems().addJoinItem(joinItem); + joinItem.setJoinType(EJoinType.left); + TTable joinTable = new TTable(); + joinItem.setTable(joinTable); + joinTable.setTableName(sqlParser.parseObjectName("t2")); + joinItem.setOnCondition(sqlParser.parseExpression("t1.f1=t2.f2")); + // System.out.println(select.toScript()); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + , select.toScript() + , "SELECT *\n" + + "FROM t1\n" + + " LEFT JOIN t2\n" + + " ON t1.f1 = t2.f2" + )); + } + + +// public void testModifySelectList2(){ +// TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvpostgresql); +// sqlParser.sqltext = "SELECT COL1, \n" + +// "CAST(CO2 AS VARCHAR) x, \n" + +// "COL3 || \"-\" || COL4 y, \n" + +// "MIN(COL5) MIN5\n" + +// "FROM T"; +// assertTrue(sqlParser.parse() == 0); +// +// TSelectSqlStatement select = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); +// TResultColumn resultColumn0 = select.getResultColumnList().getResultColumn(0); +// String column0 = resultColumn0.getExpr().toString(); +// resultColumn0.setExpr(parser.parseExpression("MYUDF("+column0+")")); +// +// TResultColumn resultColumn1 = select.getResultColumnList().getResultColumn(1); +// String column1 = resultColumn1.getExpr().toString(); +// resultColumn1.setExpr(parser.parseExpression("MYUDF2("+column1+")")); +// +// System.out.println(select.toScript()); +// } + + public void testModifySelectList(){ + parser.sqltext = "select t1.f1, t2.f2 as f2 from table1 t1 left join table2 t2 on t1.f1 = t2.f2 "; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + select.getResultColumnList().removeResultColumn(1); + select.getResultColumnList().removeResultColumn(0); + + TResultColumn resultColumn1 = new TResultColumn(); + resultColumn1.setExpr(parser.parseExpression("t1.f3")); + TAliasClause aliasClause1 = new TAliasClause(); + aliasClause1.setAliasName(parser.parseObjectName("f1")); + aliasClause1.setHasAs(true); + resultColumn1.setAliasClause(aliasClause1); + select.getResultColumnList().addResultColumn(resultColumn1); + + TResultColumn resultColumn2 = new TResultColumn(); + resultColumn2.setExpr(parser.parseExpression("t2.f3")); + select.getResultColumnList().addResultColumn(resultColumn2); + // System.out.println(scriptGenerator.generateScript(select,true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + , select.toScript() + ,"SELECT t1.f3 AS f1,\n" + + " t2.f3\n" + + "FROM table1 t1\n" + + " LEFT JOIN table2 t2\n" + + " ON t1.f1 = t2.f2" + )); + + } + + public void testFromClaueJoinTable(){ + parser.sqltext = "select table1.col1, table2.col2\n" + + "from table1, table2\n" + + "where table1.foo > table2.foo"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + select.joins.removeJoin(1); + + TJoin join = new TJoin(); + select.joins.addJoin(join); + join.setNestedParen(1); + TTable table1 = new TTable(); + table1.setTableName(parser.parseObjectName("tableX")); + join.setTable(table1); + + TJoinItem joinItem = new TJoinItem(); + join.getJoinItems().addJoinItem(joinItem); + joinItem.setJoinType(EJoinType.join); + TTable table2 = new TTable(); + table2.setTableName(parser.parseObjectName("tableY")); + joinItem.setTable(table2); + + + TObjectNameList usingColumns = new TObjectNameList(); + usingColumns.addObjectName(parser.parseObjectName("id")); + joinItem.setUsingColumns(usingColumns); + + TAliasClause aliasClause = new TAliasClause(); + aliasClause.setAliasName(parser.parseObjectName("table2")); + aliasClause.setHasAs(true); + join.setAliasClause(aliasClause); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT table1.col1,\n" + + " table2.col2\n" + + "FROM table1, (\n" + + " tablex JOIN \n" + + " tabley USING (ID)) AS table2\n" + + "WHERE table1.foo > table2.foo" + )); + + } + + public void testRemoveResultColumnInSelectList(){ + parser.sqltext = "SELECT A as A_Alias, B AS B_Alias FROM TABLE_X"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TResultColumnList columns = select.getResultColumnList(); + columns.removeResultColumn(1); + TResultColumn resultColumn = new TResultColumn(); + resultColumn.setExpr(parser.parseExpression("x")); + columns.addResultColumn(resultColumn); + // System.out.println(scriptGenerator.generateScript(select, true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT a AS a_alias,\n" + + " x\n" + + "FROM table_x" + )); + + } + + public void testAddResultColumnInSelectList(){ + parser.sqltext = "SELECT A as A_Alias, B AS B_Alias FROM TABLE_X"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TResultColumnList columns = select.getResultColumnList(); + + TResultColumn resultColumn = new TResultColumn(); + resultColumn.setExpr(parser.parseExpression("d")); + columns.addResultColumn(resultColumn); + TAliasClause aliasClause = new TAliasClause(); + aliasClause.setAliasName(parser.parseObjectName("d_alias")); + aliasClause.setHasAs(true); + resultColumn.setAliasClause(aliasClause); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT a AS a_alias,\n" + + " b AS b_alias,\n" + + " d AS d_alias\n" + + "FROM table_x" + )); + + } + + public void testRemoveTableInFromClauseAndRemoveWhereClause(){ + parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TJoinList joinList = select.joins; + joinList.removeJoin(0); + select.setWhereClause(null); + + // System.out.println(scriptGenerator.generateScript(select, true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM t2" + )); + + } + + public void testRemoveTableAndAddJoinClause(){ + parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TJoinList joinList = select.joins; + // let's remove t2 and where clause + joinList.removeJoin(1); + + TJoinItem joinItem = new TJoinItem(); + joinList.getJoin(0).getJoinItems().addJoinItem(joinItem); + joinItem.setJoinType(EJoinType.left); + TTable joinTable = new TTable(); + joinItem.setTable(joinTable); + joinTable.setTableName(parser.parseObjectName("t2")); + joinItem.setOnCondition(parser.parseExpression("t1.f1=t2.f2")); + + // remove where clause + select.setWhereClause(null); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM t1\n" + + " LEFT JOIN t2\n" + + " ON t1.f1 = t2.f2" + )); + } + + + public void testRemoveCTE(){ + parser.sqltext = "with test as (select id from emp)\n" + + "select * from test"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.setCteList(null); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM test" + )); + + + } + + public void testAddNewConditionInWhereClause2(){ + + parser.sqltext = "SELECT * FROM TABLE_X where f > 0"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TExpression expression1 = parser.parseExpression("c1>1"); + TExpression expression2 = new TExpression(); + expression2.setExpressionType(EExpressionType.logical_and_t); + expression2.setLeftOperand(select.getWhereClause().getCondition()); + expression2.setRightOperand(expression1); + select.getWhereClause().setCondition(expression2); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + , select.toScript() + , "SELECT *\n" + + "FROM table_x\n" + + "WHERE f > 0\n" + + " AND c1 > 1" + )); + + } + + public void testAddORConditionInWhereClause(){ + parser.sqltext = "SELECT * FROM TABLE_X where f > 0"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TExpression expression1 = parser.parseExpression("c1>1"); + TExpression expression2 = new TExpression(); + expression2.setExpressionType(EExpressionType.logical_or_t); + TExpression parensExpr = new TExpression(); + parensExpr.setExpressionType( EExpressionType.parenthesis_t ); + parensExpr.setLeftOperand(select.getWhereClause().getCondition()); + expression2.setLeftOperand(parensExpr); + expression2.setRightOperand(expression1); + + select.getWhereClause().setCondition(expression2); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "WHERE ( f > 0 )\n" + + " OR c1 > 1" + )); + } + + public void testAddNewConditionInWhereClause(){ + parser.sqltext = "select count(*) from TableName where NOT a OR NOT b"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TExpression expression1 = parser.parseExpression("c1=1"); + + + TExpression expression2 = new TExpression(); + expression2.setExpressionType(EExpressionType.logical_and_t); + TExpression parensExpr = new TExpression(); + parensExpr.setExpressionType( EExpressionType.parenthesis_t ); + parensExpr.setLeftOperand(select.getWhereClause().getCondition()); + expression2.setLeftOperand(parensExpr); + expression2.setRightOperand(expression1); + + select.getWhereClause().setCondition(expression2); + + // System.out.println(scriptGenerator.generateScript(select,true)); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT count(*)\n" + + "FROM tablename\n" + + "WHERE ( NOT a\n" + + " OR NOT b )\n" + + " AND c1 = 1" + )); + + + } + + public void testAddWhereClause2(){ + parser.sqltext = "SELECT * FROM TABLE_X"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TWhereClause whereClause = new TWhereClause(); + select.setWhereClause(whereClause); + whereClause.setCondition(parser.parseExpression("c>1")); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "WHERE c > 1" + )); + + + } + + public void testAddWhereClauseBeforeGrouBy(){ + parser.sqltext = "SELECT * FROM TABLE_X group by a"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TWhereClause whereClause = new TWhereClause(); + select.setWhereClause(whereClause); + whereClause.setCondition(parser.parseExpression("c>1")); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "WHERE c > 1\n" + + "GROUP BY a" + )); + + } + + public void testAddWhereClauseAfterJoin(){ + parser.sqltext = "SELECT tableA.itemA1, tableB.itemB1\n" + + " FROM tableA\n" + + " INNER JOIN tableB\n" + + " ON tableB.itemB2 = tableA.itemA2\n" + + " INNER JOIN (\n" + + " SELECT tableC.itemC1\n" + + " FROM tableC\n" + + " WHERE tableC.itemC3='ABC'\n" + + " GROUP BY tableC.itemC1\n" + + ") unNamedJoin\n" + + " ON unNamedJoin.itemC1 = tableB.itemB2\n"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TJoinList joinList = select.joins; + TJoinItem item = joinList.getJoin( 0 ).getJoinItems( ).getJoinItem( 0 ); + + TExpression expression1 = parser.parseExpression("1=1"); + + TExpression expression2 = new TExpression(); + expression2.setExpressionType(EExpressionType.logical_and_t); + TExpression parensExpr = new TExpression(); + parensExpr.setExpressionType( EExpressionType.parenthesis_t ); + parensExpr.setLeftOperand(item.getOnCondition()); + expression2.setLeftOperand(parensExpr); + expression2.setRightOperand(expression1); + + item.setOnCondition(expression2); + + TWhereClause whereClause = new TWhereClause(); + whereClause.setCondition(parser.parseExpression("c>1")); + select.setWhereClause(whereClause); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT tablea.itema1,\n" + + " tableb.itemb1\n" + + "FROM tablea\n" + + " INNER JOIN tableb\n" + + " ON (tableb.itemb2 = tablea.itema2) AND 1 = 1\n" + + " INNER JOIN ( SELECT tablec.itemc1 FROM tablec WHERE tablec.itemc3 = 'ABC' GROUP BY tablec.itemc1) unnamedjoin\n" + + " ON unnamedjoin.itemc1 = tableb.itemb2\n" + + "WHERE c > 1" + )); + + } + + public void testRemoveWhereClause(){ + parser.sqltext = "SELECT * FROM TABLE_X where a>1 order by a"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.setWhereClause(null); + // System.out.println(scriptGenerator.generateScript(select,true)); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "ORDER BY a" + )); + + } + + public void testAddOrderByClause(){ + parser.sqltext = "SELECT * FROM TABLE_X"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TOrderBy orderBy = new TOrderBy(); + select.setOrderbyClause(orderBy); + TOrderByItem orderByItem = new TOrderByItem(); + orderBy.getItems().addElement(orderByItem); + orderByItem.setSortKey(parser.parseExpression("a")); + orderByItem.setSortOrder(ESortType.desc); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "ORDER BY a DESC" + )); + + + + parser.sqltext = "SELECT * FROM TABLE_X where a>1"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + orderBy = new TOrderBy(); + select.setOrderbyClause(orderBy); + orderByItem = new TOrderByItem(); + orderBy.getItems().addElement(orderByItem); + orderByItem.setSortKey(parser.parseExpression("a")); + orderByItem.setSortOrder(ESortType.desc); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "WHERE a > 1\n" + + "ORDER BY a DESC" + )); + + + + parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + orderBy = new TOrderBy(); + select.setOrderbyClause(orderBy); + orderByItem = new TOrderByItem(); + orderBy.getItems().addElement(orderByItem); + orderByItem.setSortKey(parser.parseExpression("a")); + orderByItem.setSortOrder(ESortType.asc); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "WHERE a > 1\n" + + "GROUP BY a\n" + + "HAVING count(*) > 1\n" + + "ORDER BY a ASC" + )); + + + parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1 order by c desc"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + orderByItem = new TOrderByItem(); + orderBy.getItems().addElement(orderByItem); + orderByItem.setSortKey(parser.parseExpression("a")); + orderByItem.setSortOrder(ESortType.asc); + select.getOrderbyClause().getItems().addOrderByItem(orderByItem); + // System.out.println(scriptGenerator.generateScript(select,true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "WHERE a > 1\n" + + "GROUP BY a\n" + + "HAVING count(*) > 1\n" + + "ORDER BY c DESC,\n" + + " a ASC" + )); + + + parser.sqltext = "SELECT * FROM TABLE_X"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + + TWhereClause whereClause = new TWhereClause(); + whereClause.setCondition(parser.parseExpression("a>1 and b>2")); + select.setWhereClause(whereClause); + //select.addWhereClause("a>1 and b>2") ; + + orderBy = new TOrderBy(); + select.setOrderbyClause(orderBy); + orderByItem = new TOrderByItem(); + orderBy.getItems().addElement(orderByItem); + orderByItem.setSortKey(parser.parseExpression("a")); + orderByItem.setSortOrder(ESortType.desc); + + //System.out.println(scriptGenerator.generateScript(select,true)); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "WHERE a > 1\n" + + " AND b > 2\n" + + "ORDER BY a DESC" + )); + + + } + + + public void testRemoveItemInOrderByClause(){ + parser.sqltext = "SELECT * FROM TABLE_X order by a,b"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.getOrderbyClause().getItems().removeItem(1); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "ORDER BY a" + )); + + + select.setOrderbyClause(null); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x" + )); + + + } + + public void testReplaceOrderByItemAndAddSortType(){ + parser.sqltext = "SELECT * FROM TABLE_X order by a"; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.getOrderbyClause().getItems().removeElementWithoutSyncTokens(0); + TOrderBy orderBy = select.getOrderbyClause(); + + TOrderByItem orderByItem = new TOrderByItem(); + orderBy.getItems().addElement(orderByItem); + orderByItem.setSortKey(parser.parseExpression("b")); + orderByItem.setSortOrder(ESortType.asc); + + orderByItem = new TOrderByItem(); + orderBy.getItems().addElement(orderByItem); + orderByItem.setSortKey(parser.parseExpression("a1")); + orderByItem.setSortOrder(ESortType.desc); + + + + //System.out.println(scriptGenerator.generateScript(select,true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "ORDER BY b ASC,\n" + + " a1 DESC" + )); + + + } + + public void testRemoveSetClauseInUpdate(){ + parser.sqltext = "UPDATE BLA SET A=2, B=3 WHERE X=5"; + assertTrue(parser.parse() == 0); + + TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)parser.sqlstatements.get(0); + TResultColumnList setClauses = updateSqlStatement.getResultColumnList(); + setClauses.removeResultColumn(0); + // System.out.println(scriptGenerator.generateScript(updateSqlStatement, true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,updateSqlStatement.toScript() + ,"UPDATE bla\n" + + "SET b=3\n" + + "WHERE x = 5" + )); + + } + + public void testModifyJoinCondition(){ + parser.sqltext = "select * from t1 inner join t2 on t1.col1 = t2.col2"; + assertTrue(parser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); + TJoin join = selectSqlStatement.joins.getJoin(0); + TTable table = join.getTable(); + table.setTableName(parser.parseObjectName("t2")); + TJoinItem joinItem = join.getJoinItems().getJoinItem(0); + table = joinItem.getTable(); + table.setTableName(parser.parseObjectName("t1")); + joinItem.setOnCondition(parser.parseExpression("t1.col3 = t2.col5")); + + // System.out.println(scriptGenerator.generateScript(selectSqlStatement, true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,selectSqlStatement.toScript() + ,"SELECT *\n" + + "FROM t2\n" + + " INNER JOIN t1\n" + + " ON t1.col3 = t2.col5" + )); + + + } + + public void testRemoveJoin(){ + + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + sqlParser.sqltext = "SELECT X, Y, Z FROM A JOIN B ON A.X=B.Y"; + assertTrue(sqlParser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); + TJoin join = selectSqlStatement.joins.getJoin(0); + join.getJoinItems().removeElementWithoutSyncTokens(0); + +// System.out.println(scriptGenerator.generateScript(selectSqlStatement, true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,selectSqlStatement.toScript() + ,"SELECT x,\n" + + " y,\n" + + " z\n" + + "FROM a" + )); + + + } + + + public void testModifyTableInFromClause(){ + parser.sqltext = "select * from t1"; + assertTrue(parser.parse() == 0); + + TTable table = parser.sqlstatements.get(0).tables.getTable(0); + table.setTableName(parser.parseObjectName("newt")); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,parser.sqlstatements.get(0).toScript() + ,"SELECT *\n" + + "FROM newt" + )); + + } + + public void testAddTableAlias(){ + parser.sqltext = "select * from t1"; + assertTrue(parser.parse() == 0); + + TTable table = parser.sqlstatements.get(0).tables.getTable(0); + TAliasClause aliasClause = new TAliasClause(); + aliasClause.setHasAs(true); + aliasClause.setAliasName(parser.parseObjectName("foo")); + table.setAliasClause(aliasClause); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,parser.sqlstatements.get(0).toScript() + ,"SELECT *\n" + + "FROM t1 AS foo" + )); + //assertTrue(parser.sqlstatements.get(0).toString().trim().equalsIgnoreCase("select * from t1 AS foo")); + + } + + public void testModifyTableInCreateTable(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvimpala); + sqlparser.sqltext = "create table if not exists campaign_1 ( id int, name string )"; + int ret = sqlparser.parse(); + TCustomSqlStatement stmt = sqlparser.sqlstatements.get(0); + TTable table = stmt.tables.getTable(0); + table.setTableName(parser.parseObjectName("prefix_." + table.getTableName().toString())); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,table.toScript() + ,"prefix_.campaign_1" + )); + + } + + public void testRemoveHavingClause(){ + parser.sqltext = "SELECT\n" + + "c.ID AS \"SMS.ID\"\n" + + "FROM\n" + + "SUMMIT.cntrb_detail c\n" + + "where\n" + + "c.cntrb_date >='$GivingFromDate$'\n" + + "and c.cntrb_date<='$GivingThruDate$'\n" + + "group by c.id\n" + + "having sum(c.amt) >= '$GivingFromAmount$' and sum(c.amt) <= '$GivingThruAmount$'"; + assertTrue(parser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); + TGroupBy groupBy = selectSqlStatement.getGroupByClause(); + groupBy.setHavingClause(null); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,selectSqlStatement.toScript() + ,"SELECT c.ID AS \"SMS.ID\"\n" + + "FROM summit.cntrb_detail c\n" + + "WHERE c.cntrb_date >= '$GivingFromDate$'\n" + + " AND c.cntrb_date <= '$GivingThruDate$'\n" + + "GROUP BY c.ID" + )); + + + } + + public void testAlterTable_new(){ + TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); + lcparser.sqltext = "ALTER TABLE P_CAP \n" + + "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + + "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD);"; + assertTrue(lcparser.parse() == 0); + TAlterTableStatement at = (TAlterTableStatement) lcparser.sqlstatements.get(0); + TAlterTableOption alterTableOption = at.getAlterTableOptionList().getAlterTableOption(0); + TConstraint constraint = alterTableOption.getConstraintList().getConstraint(0); + assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); + + constraint.getReferencedColumnList().addObjectName(parser.parseObjectName("CEL_NEWID")); + //System.out.println(scriptGenerator.generateScript(at, true)); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,at.toScript() + ,"ALTER TABLE p_cap \n" + + " ADD CONSTRAINT fk_p_cap_r_ph_111_p_cel FOREIGN KEY (cap_cel) REFERENCES p_cel(cel_cod,cel_newid)" + )); + } + + public void testAddRefernceColumnInAlterTable2(){ + TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); + lcparser.sqltext = "ALTER TABLE P_CAP \n" + + "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + + "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD);"; + assertTrue(lcparser.parse() == 0); + TAlterTableStatement at = (TAlterTableStatement) lcparser.sqlstatements.get(0); + TAlterTableOption alterTableOption = at.getAlterTableOptionList().getAlterTableOption(0); + TConstraint constraint = alterTableOption.getConstraintList().getConstraint(0); + assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); + + constraint.getReferencedColumnList().insertElementAt(parser.parseObjectName("cel_newid"),0); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,at.toScript() + ,"ALTER TABLE p_cap \n" + + " ADD CONSTRAINT fk_p_cap_r_ph_111_p_cel FOREIGN KEY (cap_cel) REFERENCES p_cel(cel_newid,cel_cod)" + )); + + + } + + public void testAddWhereClause(){ + TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); + lcparser.sqltext = "SELECT * FROM TABLE_X"; + assertTrue(lcparser.parse() == 0); + + TSelectSqlStatement select = (TSelectSqlStatement)lcparser.sqlstatements.get(0); + TWhereClause whereClause = new TWhereClause(); + select.setWhereClause(whereClause); + whereClause.setCondition(parser.parseExpression("f > 0")); + //System.out.println(scriptGenerator.generateScript(select,true)); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM table_x\n" + + "WHERE f > 0" + )); + + + } + + public void testRemoveAdditionalParenthesisOfSubquery(){ + TSelectSqlStatement select = null, subquery = null; + parser.sqltext = "select * from ((select * from some_table where some_column < ?)) some_view where a_column = something"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + subquery = select.tables.getTable(0).subquery; + subquery.setParenthesisCount(1); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM (SELECT *\n" + + " FROM some_table\n" + + " WHERE some_column < ?) some_view\n" + + "WHERE a_column = something" + )); + + + + parser.sqltext = "(((select a from b)) order by a)"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.setParenthesisCount(0); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"(( SELECT a\n" + + " FROM b))\n" + + " ORDER BY a" + )); + + + + parser.sqltext = "((((select a from b)) order by a))"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.setParenthesisCount(1); + select.setParenthesisCountBeforeOrder(1); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"(( SELECT a\n" + + " FROM b)\n" + + " ORDER BY a)" + )); + + //assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("( ( select a from b ) order by a )")); + + parser.sqltext = "select * from user_table where ((username like '%admin%'));"; + assertTrue(parser.parse() == 0); + select = (TSelectSqlStatement)parser.sqlstatements.get(0); + TExpression expression = select.getWhereClause().getCondition(); + select.getWhereClause().setCondition(expression.getLeftOperand()); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT *\n" + + "FROM user_table\n" + + "WHERE ( username LIKE '%admin%' )" + )); + + } + public void testSetNewWhereCondition(){ + parser.sqltext = "select t1.f1 from table1 t1 where t1.f2 = 2 "; + assertTrue(parser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); + select.getWhereClause().setCondition(parser.parseExpression("t1.f2>2")); + // System.out.println(scriptGenerator.generateScript(select,true)); + + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle + ,select.toScript() + ,"SELECT t1.f1\n" + + "FROM table1 t1\n" + + "WHERE t1.f2 > 2" + )); + } + + public void testModifyHavingClause(){ + TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); + SQLParser.sqltext = "select\n" + + "\n" + + " fiscalyear(cps.receiveDateActual) as \"year\", fiscalquarter(cps.receivedateactual) as \"qtr\",\n" + + "\n" + + " concat(fiscalyear(cps.receiveDateActual),'Q',fiscalquarter(cps.receivedateactual)) as \"yearQtr\",\n" + + "\n" + + " emspartner.name as \"emsPartner\",\n" + + "\n" + + " max(emspartner.sysnotesunid) as \"emsPartnerUnid\",\n" + + "\n" + + " sum(If(Date(cps.ReceiveDateActual) <= Date(lot.EmsDeliveryCommit),1,0)) as \"onTime\",\n" + + "\n" + + " sum(If(Date(cps.ReceiveDateActual) > Date(lot.EmsDeliveryCommit),1,0)) as \"late\",\n" + + "\n" + + " avg(If(Date(cps.ReceiveDateActual) <= Date(lot.EmsDeliveryCommit),0,datediff(cps.ReceiveDateActual,lot.EmsDeliveryCommit))) as \"daysLateAvg\", \n" + + "\n" + + " count(*) as \"total\",\n" + + "\n" + + " lot.sysroles\n" + + "\n" + + "from\n" + + "\n" + + " cerpproductsheet cps\n" + + "\n" + + " join cerplot lot on (lot.sysnotesunid = cps.lotunid)\n" + + "\n" + + " join cerpsysappcode emspartner on (emspartner.sysnotesunid = lot.boardVendorUnid)\n" + + "\n" + + "where\n" + + "\n" + + " lot.emsDeliveryCommit is not null\n" + + "\n" + + " and cps.receivedateactual is not null\n" + + "\n" + + "group by\n" + + "\n" + + " fiscalyear(cps.receiveDateActual) desc, fiscalquarter(cps.receivedateactual) desc, emspartner.name\n" + + "\n" + + "order by\n" + + "\n" + + " year"; + + int iRet = SQLParser.parse(); + TSelectSqlStatement tselect = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); + + TGroupBy groupByClause = tselect.getGroupByClause(); + + TExpression expression = groupByClause.getHavingClause(); + + if (expression == null){ + expression = SQLParser.parseExpression("1=1 and column1>10"); + groupByClause.setHavingClause(expression); + } else { + //expression.addANDCondition(theWhereOrHavingClause); + } + + // System.out.println(tselect.toScript()); + SQLParser = null; + } + + public void test4Having(){ + TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); + SQLParser.sqltext = "select a, b, c, count(*) from mytable group by a, b, c"; + + int iRet = SQLParser.parse(); + TSelectSqlStatement tselect = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); + + TGroupBy groupByClause = tselect.getGroupByClause(); + + TExpression expression = groupByClause.getHavingClause(); + String having = "b='x'"; + if (expression == null){ + + expression = SQLParser.parseExpression(having); + if (expression == null){ + System.out.println("can't parse expression:"+having); + }else{ + groupByClause.setHavingClause(expression); + } + + } else { + //expression.addANDCondition(theWhereOrHavingClause); + } + + SQLParser = null; + } + + public void testOrderByItem(){ + TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); + SQLParser.sqltext = "select a, b, c from mytable order by c"; + + int iRet = SQLParser.parse(); + TSelectSqlStatement select = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); + + TOrderBy orderBy = select.getOrderbyClause(); + + TOrderByItem orderByItem = new TOrderByItem(); + orderByItem.setSortKey(parser.parseExpression("a")); + orderByItem.setSortOrder(ESortType.desc); + + orderBy.getItems().addElement(orderByItem); + //System.out.println(select.toScript()); + + SQLParser = null; + } + + public void testPredicateRegexp(){ + TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); + SQLParser.sqltext = "select a, b, c, count(*) from mytable group by a, b, c having a='X'"; + + int iRet = SQLParser.parse(); + TSelectSqlStatement select = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); + + TGroupBy groupByClause = select.getGroupByClause(); + + TExpression expression = groupByClause.getHavingClause(); + String having = "b regexp 'foo.*'"; + TExpression newExpr = SQLParser.parseExpression(having+" and "+expression.toString()); + if (newExpr == null){ + System.out.println("can't parse expression:"+having); + return; + } + + groupByClause.setHavingClause(newExpr); + //System.out.println(select.toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql + ,select.toScript() + ,"select \n" + + "a,b,c,count(*)\n" + + " from \n" + + "mytable\n" + + " group by a,b,c having b regexp 'foo.*' and a = 'X'" + )); + SQLParser = null; + } + + + public void testFunctionGroupConcat(){ + TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); + SQLParser.sqltext = "select a, b, c, count(*), group_concat(distinct d separator ' ') from mytable group by a, b, c"; + + int iRet = SQLParser.parse(); + TSelectSqlStatement select = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); + + TGroupBy groupByClause = select.getGroupByClause(); + + TExpression expression = groupByClause.getHavingClause(); + String having = "b regexp 'foo.*'"; + if (expression != null){ + having = expression.toString() +" and "+ having; + } + TExpression newExpr = SQLParser.parseExpression(having); + if (newExpr == null){ + System.out.println("can't parse expression:"+having); + return; + } + + groupByClause.setHavingClause(newExpr); + // System.out.println(select.toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql + ,select.toScript() + ,"select \n" + + "a,b,c,count(*),group_concat( distinct d separator ' ')\n" + + " from \n" + + "mytable\n" + + " group by a,b,c having b regexp 'foo.*'" + )); + SQLParser = null; + } + + +} diff --git a/src/test/java/scriptWriter/testMySQL.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testMySQL.java similarity index 97% rename from src/test/java/scriptWriter/testMySQL.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testMySQL.java index cbbda0c8..5d5d1785 100644 --- a/src/test/java/scriptWriter/testMySQL.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testMySQL.java @@ -1,126 +1,126 @@ -package scriptWriter; - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testMySQL extends TestCase -{ - public void testSelectModifier1( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select SQL_CALC_FOUND_ROWS concat('1','-','2') from test"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectModifier2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select SQL_CALC_FOUND_ROWS distinct concat('3','-','2') from test "; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectModifier3( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select SQL_CALC_FOUND_ROWS distinct 1 from dual"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectModifier4( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select distinct SQL_CALC_FOUND_ROWS 1 from dual"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCastFunction( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select cast (test.string as json) from test"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testOnduplicate( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "insert into user (id, name, summa) \n" + - "values(104,'Melony',2999) on duplicate key update sum=values(suma)"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testUpdateJoins( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "update user u \n" + - "join user_info ui on u.id=ui.userid\n" + - "set u.summa = 999\n" + - "where u.id=1"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDeleteFrom( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "delete from user \n" + - "where id=1"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testTimeStampDiff( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select TIMESTAMPDIFF(SECOND,lt.loginDate,lt.logoutDate) as temp from table"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSubStringFunction( ) { - String sql = "select SUBSTRING(description,LOCATE('MAC Address:', description) + LENGTH('MAC Address:'), 18) AS MAC_Address from testsuite where tsID = 21"; - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmysql); - sqlParser.sqltext = sql; - int ret = sqlParser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); - String finalSql = select.toScript(); - finalSql = finalSql.replaceAll("\r\n", "").replaceAll("\n", "").replaceAll(" ", "").toUpperCase(); - sql = sql.replaceAll("\r\n", "").replaceAll("\n", "").replaceAll(" ", "").toUpperCase(); - assertTrue(finalSql.equals(sql)); - } -} +package gudusoft.gsqlparser.scriptWriterTest; + + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testMySQL extends TestCase +{ + public void testSelectModifier1( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); + sqlparser.sqltext = "select SQL_CALC_FOUND_ROWS concat('1','-','2') from test"; + + sqlparser.parse( ); + + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSelectModifier2( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); + sqlparser.sqltext = "select SQL_CALC_FOUND_ROWS distinct concat('3','-','2') from test "; + + sqlparser.parse( ); + + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSelectModifier3( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); + sqlparser.sqltext = "select SQL_CALC_FOUND_ROWS distinct 1 from dual"; + + sqlparser.parse( ); + + // System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSelectModifier4( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); + sqlparser.sqltext = "select distinct SQL_CALC_FOUND_ROWS 1 from dual"; + + sqlparser.parse( ); + + // System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); + } + + public void testCastFunction( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); + sqlparser.sqltext = "select cast (test.string as json) from test"; + + sqlparser.parse( ); + + // System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); + } + + public void testOnduplicate( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); + sqlparser.sqltext = "insert into user (id, name, summa) \n" + + "values(104,'Melony',2999) on duplicate key update sum=values(suma)"; + + sqlparser.parse( ); + + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); + } + + public void testUpdateJoins( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); + sqlparser.sqltext = "update user u \n" + + "join user_info ui on u.id=ui.userid\n" + + "set u.summa = 999\n" + + "where u.id=1"; + + sqlparser.parse( ); + + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); + } + + public void testDeleteFrom( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); + sqlparser.sqltext = "delete from user \n" + + "where id=1"; + + sqlparser.parse( ); + + // System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); + } + + public void testTimeStampDiff( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); + sqlparser.sqltext = "select TIMESTAMPDIFF(SECOND,lt.loginDate,lt.logoutDate) as temp from table"; + + sqlparser.parse( ); + + // System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSubStringFunction( ) { + String sql = "select SUBSTRING(description,LOCATE('MAC Address:', description) + LENGTH('MAC Address:'), 18) AS MAC_Address from testsuite where tsID = 21"; + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmysql); + sqlParser.sqltext = sql; + int ret = sqlParser.parse(); + assertTrue(ret == 0); + TSelectSqlStatement select = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); + String finalSql = select.toScript(); + finalSql = finalSql.replaceAll("\r\n", "").replaceAll("\n", "").replaceAll(" ", "").toUpperCase(); + sql = sql.replaceAll("\r\n", "").replaceAll("\n", "").replaceAll(" ", "").toUpperCase(); + assertTrue(finalSql.equals(sql)); + } +} diff --git a/src/test/java/scriptWriter/testOracle.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracle.java similarity index 94% rename from src/test/java/scriptWriter/testOracle.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracle.java index 6abb0a0f..10942aea 100644 --- a/src/test/java/scriptWriter/testOracle.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracle.java @@ -1,4 +1,4 @@ -package scriptWriter; +package gudusoft.gsqlparser.scriptWriterTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/scriptWriter/testOracleDataType.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracleDataType.java similarity index 99% rename from src/test/java/scriptWriter/testOracleDataType.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracleDataType.java index 8a88f669..211414a7 100644 --- a/src/test/java/scriptWriter/testOracleDataType.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracleDataType.java @@ -1,4 +1,4 @@ -package scriptWriter; +package gudusoft.gsqlparser.scriptWriterTest; import gudusoft.gsqlparser.EDataType; diff --git a/src/test/java/scriptWriter/testSQLServer.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServer.java similarity index 93% rename from src/test/java/scriptWriter/testSQLServer.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServer.java index 342304fe..d90a52fe 100644 --- a/src/test/java/scriptWriter/testSQLServer.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServer.java @@ -1,4 +1,4 @@ -package scriptWriter; +package gudusoft.gsqlparser.scriptWriterTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/scriptWriter/testSQLServerDataType.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServerDataType.java similarity index 99% rename from src/test/java/scriptWriter/testSQLServerDataType.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServerDataType.java index 1dd1ed49..d6336972 100644 --- a/src/test/java/scriptWriter/testSQLServerDataType.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServerDataType.java @@ -1,4 +1,4 @@ -package scriptWriter; +package gudusoft.gsqlparser.scriptWriterTest; import gudusoft.gsqlparser.EDataType; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/scriptWriter/testScriptGenerator.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testScriptGenerator.java similarity index 97% rename from src/test/java/scriptWriter/testScriptGenerator.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testScriptGenerator.java index b47abb72..65d922e7 100644 --- a/src/test/java/scriptWriter/testScriptGenerator.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testScriptGenerator.java @@ -1,1360 +1,1360 @@ - -package scriptWriter; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETokenType; -import gudusoft.gsqlparser.TBaseType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.TSourceTokenList; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TCaseOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testScriptGenerator extends TestCase -{ - public void testsqlserverDatetime2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE TABLE test(\n" + - "id int NOT NULL IDENTITY(1,1),\n" + - "ModifiedDate datetime2(0) NOT NULL\n" + - ")"; - - assertTrue(sqlparser.parse( ) == 0); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testsqlserverDatetime( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE TABLE test(\n" + - "id int NOT NULL IDENTITY(1,1),\n" + - "ModifiedDate datetime(0) NOT NULL\n" + - ")"; - - assertTrue(sqlparser.parse( ) == 0); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testsqlserverAlterTableForColumns( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "ALTER TABLE testTable ADD DEFAULT ('') FOR testColumn"; - - assertTrue(sqlparser.parse( ) == 0); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testsqlserverOption( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT * FROM HumanResources.Employee AS e1 UNION SELECT * FROM HumanResources.Employee AS e2 OPTION (MERGE UNION);"; - - assertTrue(sqlparser.parse( ) == 0); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSnwoflakeConcat( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvsnowflake); - sqlparser.sqltext = "select 'a' || 'b'"; - - assertTrue(sqlparser.parse( ) == 0); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvsnowflake,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testOnprimay( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE TABLE [echeckinmedicaldata] ( \n" + - " [id] int NOT NULL\n" + - "IDENTITY(1,1) ,\n" + - " [uid] int NOT NULL CONSTRAINT [DF_echeckinmedicaldata_uid] DEFAULT ((0)) ,\n" + - " [encid] int NOT NULL CONSTRAINT [DF_echeckinmedicaldata_encid] DEFAULT ((0)) ,\n" + - " [surglist] text NULL CONSTRAINT [DF_echeckinmedicaldata_surglist] DEFAULT NULL ,\n" + - " [hosplist] text NULL CONSTRAINT [DF_echeckinmedicaldata_hosplist] DEFAULT NULL ,\n" + - " [medlist] text NULL CONSTRAINT [DF_echeckinmedicaldata_medlist] DEFAULT NULL ,\n" + - " [allergylist] text NULL CONSTRAINT [DF_echeckinmedicaldata_allergylist] DEFAULT NULL ,\n" + - " [datetime] varchar (50) NULL CONSTRAINT [DF_echeckinmedicaldata_datetime] DEFAULT NULL ,\n" + - " [delflag] tinyint NOT NULL DEFAULT ((0)),\n" + - " INDEX idx_echeckinmedicaldata_uid(uid),\n" + - " INDEX idx_echeckinmedicaldata_encid(encid),\n" + - " CONSTRAINT PK_echeckinmedicaldata PRIMARY KEY CLUSTERED ( id ASC ) WITH (IGNORE_DUP_KEY = OFF)\n" + - " ON [PRIMARY]) ON [PRIMARY];"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAtlerTableAddColumn( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "ALTER TABLE ALLERGY_RECIPE_LABS ADD SHOT_FAC_TYPE TINYINT DEFAULT 0, MAILTO_TEL VARCHAR(20);"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testMySQLChar( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); - sqlparser.sqltext = "SELECT CAST(t5.column AS CHAR) AS c1 from xxx t5"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testInterval( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); - sqlparser.sqltext = "SELECT DATE_ADD(DATE(datecol), INTERVAL (-WEEKDAY(DATE(datecol))) DAY) AS finalDate FROM table "; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCastDecimal( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); - sqlparser.sqltext = "SELECT CAST(t5.column AS DECIMAL(20)) AS c1 from t5.xxx;"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - - public void testIntervalConstant( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); - sqlparser.sqltext = " SELECT date_add(last_day (CAST(concat (concat (concat (2019,'-'),12),'-01') AS DATETIME)),INTERVAL 1 DAY) AS firstdayofnextmonth \n" + - " FROM analytics.xxx t19 \n" + - " WHERE t19.date < date_add(last_day(CAST(concat(concat(concat(2019,'-'),12),'-01') AS DATETIME)),INTERVAL 1 DAY)"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testNullsFirst( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvredshift ); - sqlparser.sqltext = "select start_date from datetable order by start_date desc nulls first"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvredshift,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testHiveLimit( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvhive ); - sqlparser.sqltext = "select groupcol, avg(mycolumn) as myalias\n" + - "from mytable\n" + - "group by groupcol\n" + - "limit 4"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvhive,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testPostgresqlAnd( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvpostgresql ); - sqlparser.sqltext = "SELECT * from transmission where position_search && '{3456788}';"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - //assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testMySQLFunctionAddDate( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "SELECT adddate(date, 10*10) as date from program"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testMySQLAssignmentOperator( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select @csum := 0 from dual"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testBindVar( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select emp_id, emp_dept\n" + - "into :b0 :b1,\n" + - ":b2 :b3\n" + - "from T1\n" + - "where rownum < 2;"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - -// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvoracle ); -// scriptGenerator.generateScript( sqlparser.sqlstatements.get( 0 ) ); -// assertTrue( scriptGenerator.verifyScript( sqlparser.sqlstatements.get( 0 ) ) ); - } - - public void testCrossApply( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT d.department_name, v.employee_id, v.last_name\n" - + " FROM departments d CROSS APPLY (SELECT * FROM employees e\n" - + " WHERE e.department_id = d.department_id) v"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - -// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvoracle ); -// scriptGenerator.generateScript( sqlparser.sqlstatements.get( 0 ) ); -// assertTrue( scriptGenerator.verifyScript( sqlparser.sqlstatements.get( 0 ) ) ); - } - - - public void testIsOfType( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select a from b\n" - + "where c is of type(only scott.tn)"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testForeignReferences( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "CREATE TABLE registered_students (\n" - + " student_id NUMBER(5) NOT NULL,\n" - + " department CHAR(3) NOT NULL,\n" - + " course NUMBER(3) NOT NULL,\n" - + " grade CHAR(1),\n" - + " CONSTRAINT rs_grade\n" - + " CHECK (grade IN ('A', 'B', 'C', 'D', 'E')),\n" - + " CONSTRAINT rs_student_id\n" - + " FOREIGN KEY (student_id) REFERENCES students (id),\n" - + " CONSTRAINT rs_department_course\n" - + " FOREIGN KEY (department, course)\n" - + " REFERENCES classes (department, course)\n" - + " )"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle - , sqlparser.sqlstatements.get(0).toString() - , sqlparser.sqlstatements.get(0).toScript())); - } - - public void testForUpdateOf( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select all department_id\n" - + "from employees\n" - + "for update of scott.employees.ename;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDatabaseLink( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select emp.e@usa b from emp"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDatabaseLink2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select user@!, sysdate@! from dual ;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction3( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT last_name, salary, department_id,\n" - + " PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary1 DESC) \n" - + " OVER (PARTITION BY department_id) \"Percentile_Cont\",\n" - + " PERCENT_RANK() \n" - + " OVER (PARTITION BY department_id ORDER BY salary DESC) \n" - + "\"Percent_Rank\"\n" - + "FROM employees WHERE department_id IN (30, 60);"; - - sqlparser.parse(); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction4( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT empno,\n" - + " deptno,\n" - + " sal,\n" - + " MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno) \"Lowest\",\n" - + " MAX(sal) KEEP (DENSE_RANK LAST ORDER BY sal) OVER (PARTITION BY deptno) \"Highest\"\n" - + "FROM emp\n" - + "ORDER BY deptno, sal;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction5( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT empno,\n" - + " deptno,\n" - + " sal,\n" - + " DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal) \"rank\"\n" - + "FROM emp;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction6( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT empno,\n" - + " deptno,\n" - + " sal,\n" - + " RANK() OVER (PARTITION BY deptno ORDER BY sal) \"rank\"\n" - + " FROM emp;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction7( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT empno, deptno, TO_CHAR(hiredate, 'YYYY') YEAR,\n" - + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" - + "ORDER BY hiredate ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) FROM_P3_TO_F1,\n" - + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" - + "ORDER BY hiredate ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM_PU_TO_C,\n" - + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" - + "ORDER BY hiredate ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING) FROM_P2_TO_P1,\n" - + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" - + "ORDER BY hiredate ROWS BETWEEN 1 FOLLOWING AND 3 FOLLOWING) FROM_F1_TO_F3\n" - + "FROM emp\n" - + "ORDER BY hiredate;"; - - sqlparser.parse( ); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testGroupBy1( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT DECODE(GROUPING(department_name), 1, 'All Departments',\n" - + " department_name) AS department_name,\n" - + " DECODE(GROUPING(job_id), 1, 'All Jobs', job_id) AS job_id,\n" - + " COUNT(*) \"Total Empl\", AVG(salary) * 12 \"Average Sal\"\n" - + " FROM employees e, departments d\n" - + " WHERE d.department_id = e.department_id\n" - + " GROUP BY CUBE (department_name, job_id)"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testKeepDenseRank( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT department_id,\n" - + "MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct) \"Worst\",\n" - + "MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct) \"Best\"\n" - + " FROM employees\n" - + " GROUP BY department_id;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDeleteNestedTable( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "DELETE TABLE(SELECT h.people FROM hr_info h\n" - + " WHERE h.department_id = 280) p\n" - + " WHERE p.salary > 1700;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void test11( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT salary FROM employees\n" - + "versions between scn minvalue and maxvalue\n" - + "ORDER BY 1,2;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testOracleJoin2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select a from b \n" - + "where waehrungscode_iso = TO_NUMBER(e.code(+))"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT manager_id, last_name, hire_date, salary,\n" - + " AVG(salary) OVER (PARTITION BY manager_id ORDER BY hire_date \n" - + " ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS c_mavg\n" - + " FROM employees;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - // public void testPivot(){ - // TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - // sqlparser.sqltext = "SELECT * FROM\n" + - // "(SELECT EXTRACT(YEAR FROM order_date) year, order_mode, order_total FROM orders)\n" - // + - // "PIVOT\n" + - // "(SUM(order_total) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));"; - // - // sqlparser.parse(); - // TScriptGenerator scriptGenerator = new - // TScriptGenerator(EDbVendor.dbvoracle); - // System.out.println(scriptGenerator.generateScript(sqlparser.sqlstatements.get(0))); - // // scriptGenerator.generateScript(sqlparser.sqlstatements.get(0)); - // assertTrue(scriptGenerator.verifyScript(sqlparser.sqlstatements.get(0).sourcetokenlist)); - // } - - public void testCreateTableDefault2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "create table myTable (\n" - + "myColumn number default null null \n" - + ");"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCreateTableDefault( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "create table myTable (\n" - + "myColumn number default null not null\n" - + ");"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCreateViewDefault( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "CREATE VIEW vNessusTargetHostExtract \n" - + "AS \n" - + "SELECT LoadKey, vcHost, CASE WHEN iPluginid = 12053 THEN SUBSTRING(vcResult, CHARINDEX('resolves as', vcResult) + 12, (DATALENGTH(vcResult) - 1) \n" - + " - (CHARINDEX('resolves as', vcResult) + 12)) ELSE 'No registered hostname' END AS vcHostName, vcport, LoadedOn, iRecordTypeID, \n" - + " iAgentProcessID, iTableID \n" - + "FROM dbo.vNessusResultExtract;"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - - // public void testMssqlCreateFunction( ) -// { -// TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql ); -// sqlparser.sqltext = "create function dbo.ufnGetStock(@ProductID int )\r\n" -// + " returns int \r\n" -// + " as \r\n" -// + " begin \r\n" -// + " declare @ret int ;\r\n" -// + " select \r\n" -// + "@ret=SUM(p.Quantity)\r\n" -// + " from \r\n" -// + "Production.ProductInventory p\r\n" -// + " where p.ProductID = @ProductID and p.LocationID = '6';\r\n" -// + " if (@ret is null )\r\n" -// + " set @ret=0;\r\n" -// + " return @ret;\r\n" -// + " end "; -// sqlparser.parse( ); -// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvmssql ); -// System.out.println(scriptGenerator.generateScript( sqlparser.sqlstatements.get( 0 ) )); -// assertTrue( scriptGenerator.verifyScript( sqlparser.sqlstatements.get( 0 ).sourcetokenlist ) ); -// } -// - public void testOracleCreateProcedure( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "CREATE PROCEDURE evaluate(my_empno NUMBER) \r\n" - + "AUTHID CURRENT_USER AS \r\n" - + "my_ename VARCHAR2 (15); \r\n" - + "BEGIN \r\n" - + "SELECT ename INTO my_ename FROM emp WHERE empno = my_empno;\r\n" - + "END ;"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDropIndex( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql ); - sqlparser.sqltext = "DROP INDEX IX_SalesPerson_SalesQuota_SalesYTD ON Sales.SalesPerson;"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testUseDatabase( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql ); - sqlparser.sqltext = "USE AdventureWorks;"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDelete( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "delete from department\n" - + "where department_name = 'Finance';"; - - sqlparser.parse( ); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testJoinNested( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select a_join.f1\n" - + "from ((a as a_alias left outer join a1 on a1.f1 = a_alias.f1) ) as a_join\n" - + "join b on a_join.f1 = b.f1;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testJoinNested2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select * \n" - + "FROM (a AS alias_a \n" - + " RIGHT JOIN ((b left outer join f on (b.f1=f.f2)) LEFT JOIN c \n" - + "\t\tON (b.b1 = c.c1) AND (b.b2 = c.c2)) \n" - + "\tON (a.a1 = b.b3) AND (a.a2 = b.b4)) b;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - // public void testHavingGroup(){ - // TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - // sqlparser.sqltext = "select a,c\n" + - // "from b\n" + - // "having avg(c) > 10\n" + - // "group by a"; - // - // sqlparser.parse(); - // TScriptGenerator scriptGenerator = new - // TScriptGenerator(EDbVendor.dbvoracle); - // System.out.println(scriptGenerator.generateScript(sqlparser.sqlstatements.get(0))); - // // scriptGenerator.generateScript(sqlparser.sqlstatements.get(0)); - // assertTrue(scriptGenerator.verifyScript(sqlparser.sqlstatements.get(0).sourcetokenlist)); - // } - - public void testSelectAlias( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select last_name as name ,commission_pct comm,\n" - + "salary*12 \"Annual Salary\"\n" - + "from employees;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testComment( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select a\n" - + "from b --s\n" - + "--ss\n" - + "where a in (1, 1>2 and c>d);"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testForUpdate( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select * from abc order by a for update nowait;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testConcatenate( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT /*+ use_hash(KUO) */\n" - + " C_BANK\n" - + " || '|'\n" - + "from t "; - - sqlparser.parse(); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testInlist( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select ANZ_MA\n" - + "from t \n" - + "WHERE funktionscode IN ('U', 'H') "; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select ROW_NUMBER() OVER \n" - + "\t(PARTITION BY c_mandant, ma_parkey, me_parkey \n" - + "\t\tORDER BY c_mandant, ma_parkey, me_parkey) ANZ_MA\n" - + "from t "; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCase( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select CASE WHEN EXISTS (SELECT 1\n" - + " FROM CDS_H_GRUPPE GRP1\n" - + " WHERE GRP1.c_mandant = c_mandant\n" - + " AND GRP1.hist_datum = ADD_MONTHS(LAST_DAY(TRUNC(SYSDATE)), -1)\n" - + " AND GRP1.funktionscode = 'H'\n" - + " AND GRP1.parkey1 = ma_parkey)\n" - + " THEN 1\n" - + " ELSE NULL\n" - + " END MA_ME\n" - + "from t"; - - sqlparser.parse(); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectPivot( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT * FROM pivot_table\n" - + " UNPIVOT (yearly_total FOR order_mode IN (store AS 'direct', internet AS 'online'))\n" - + " ORDER BY year, order_mode;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectWithParensOfUnion2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "(( \n" - + " select add_months(trunc(sysdate), -1) as dt\n" - + " from dual\n" - + " union all\n" - + " select cte.dt+1 \n" - + " from cte \n" - + " where cte.dt+1 < sysdate\n" - + ") order by 1)\n" - + "\n"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectWithParensOfUnion( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "( \n" - + " select add_months(trunc(sysdate), -1) as dt\n" - + " from dual\n" - + " union all\n" - + " select cte.dt+1 \n" - + " from cte \n" - + " where cte.dt+1 < sysdate\n" - + ") order by 1\n" - + "\n"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectWithParens2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT B.* FROM ((SELECT 2 FROM DUAL) B)"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectWithParens( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "((select a from b\n" - + "where a>c)\n" - + "order by 1)"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCTE( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "with cte (dt) as ( \n" - + " select add_months(trunc(sysdate), -1) as dt\n" - + " from dual\n" - + " union all\n" - + " select cte.dt+1 \n" - + " from cte \n" - + " where cte.dt+1 < sysdate\n" - + ")\n" - + " select * from cte;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSet2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select 'sing' as \"My dream\", 3 a_dummy\n" - + "from dual\n" - + "union\n" - + "select 'I''d like to teach',1\n" - + "from dual\n" - + "union\n" - + "select 'the world to',2\n" - + "from dual\n" - + "order by 2;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSet1( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select employee_id,job_id\n" - + "from employees\n" - + "union\n" - + "select employee_id,job_id\n" - + "from job_history;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testGroupBy( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select department_id,avg(salary)\n" - + "from employees\n" - + "group by department_id\n" - + "having avg(salary) > 8000\n" - + "order by sum(salary);"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testHierarchical( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT employee_id, last_name, manager_id\n" - + " FROM employees\n" - + " CONNECT BY PRIOR employee_id = manager_id;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testJoin3( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select t1.f1\n" - + "from my.table1 t1\n" - + " right outer join (\n" - + " \t\t\t\t\t\t\t(my.table2 t2\n" - + " \t\t\t\t\t\t\t\tleft outer join my.table3 t3\n" - + " \t\t\t\t\t\t\t\t\ton (t2.f1 = t3.f2)\n" - + " \t\t\t\t\t\t\t)\n" - + " \t\t\t\t\t\tleft outer join (my.table4 t4\n" - + " \t\t\t\t\t\t\t\t\t\t\t\t\tfull outer join my.table5 t5\n" - + " \t\t\t\t\t\t\t\t\t\t\t\t\t\ton (t4.f1 = t5.f1)\n" - + " \t\t\t\t\t\t\t\t\t\t\t ) t4alias\n" - + " \t\t\t\t\t\t\ton (t4.b1 = t2.c1)\n" - + " \t\t\t\t\t\t)\n" - + " on (t1.a1 = t3.b3);"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testJoin2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select t1.f1\n" - + "from my.table1 t1\n" - + " join (my.table2 t2\n" - + " left outer join my.table3 t3\n" - + " on t2.f1 = t3.f1) as joinalias1\n" - + " on t1.f1 = t2.f1;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testJoin( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select t1.f1\n" - + "from my.table1 t1\n" - + " join my.table2 t2 on t1.f1 = t2.f1\n" - + " left outer join my.table3 t3 on t2.f1 = t3.f1"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testOracleJoin( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "Select t1.f1\n" - + "from my.table1 t1,my.table2 t2\n" - + "where t1.f1 = t2.f1\t"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void test1( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select fx(1,2)+y from t"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - - static public boolean verifyScript(EDbVendor dbVendor, String src, String target){ - return verifyScript(dbVendor,src,target,0); -// TGSqlParser sourceParser = new TGSqlParser(dbVendor ); -// TGSqlParser targetParser = new TGSqlParser(dbVendor ); -// sourceParser.sqltext = src; -// sourceParser.tokenizeSqltext(); -// -// targetParser.sqltext = target; -// targetParser.tokenizeSqltext(); -// -// return verifyTokens(sourceParser.getSourcetokenlist(),targetParser.getSourcetokenlist(),false); - - } - - static public boolean verifyScript(EDbVendor dbVendor, String src, String target, long lineOffset){ - if ((src == null)||(src.length()==0)) return false; - if ((target == null)||(target.length()==0)) return false; - TGSqlParser sourceParser = new TGSqlParser(dbVendor ); - TGSqlParser targetParser = new TGSqlParser(dbVendor ); - sourceParser.sqltext = src; - sourceParser.tokenizeSqltext(); - - targetParser.sqltext = target; - targetParser.tokenizeSqltext(); - - return verifyTokens(sourceParser.getSourcetokenlist(),targetParser.getSourcetokenlist(),false,lineOffset); - - } - - static private boolean verifyTokens(TSourceTokenList originalTokens, TSourceTokenList targetTokens, boolean partialChecking, long lineOffset){ - boolean result = true; - int old = 0; - boolean startParenthesis = false; - int nestedParenthesis = 0; - - for(int i=0;i 0) nestedParenthesis--; - if ((nestedParenthesis == 0) && startParenthesis){ - result = true; - break; - } - } - } - - result = false; - for(int j=old;j 1000000 AND order_total < 2000000 THEN\n" + - "INTO medium_orders\n" + - "WHEN order_total > 2000000 THEN\n" + - "INTO large_orders\n" + - "SELECT order_id, order_total, sales_rep_id, customer_id\n" + - "FROM orders"; - sqlParser.parse(); - //System.out.println(sqlParser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); - } - - public void testInsertFirst( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "INSERT FIRST\n" + - "WHEN ottl < 100000 THEN\n" + - "INTO small_orders\n" + - "VALUES(oid, ottl, sid, cid)\n" + - "WHEN ottl > 100000 and ottl < 200000 THEN\n" + - "INTO medium_orders\n" + - "VALUES(oid, ottl, sid, cid)\n" + - "WHEN ottl > 290000 THEN\n" + - "INTO special_orders\n" + - "WHEN ottl > 200000 THEN\n" + - "INTO large_orders\n" + - "VALUES(oid, ottl, sid, cid)\n" + - "SELECT o.order_id oid, o.customer_id cid, o.order_total ottl,\n" + - "o.sales_rep_id sid, c.credit_limit cl, c.cust_email cem\n" + - "FROM orders o, customers c\n" + - "WHERE o.customer_id = c.customer_id;"; - sqlParser.parse(); - //System.out.println(sqlParser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); - } - - /** - * support key actions in reference clause. - * see {@link gudusoft.gsqlparser.nodes.TConstraint#getKeyActions()} - */ - public void testOnDeleteCascade( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "create table new_employees\n" + - "(employee_id number not null,\n" + - "hire_date date default sysdate,\n" + - "start_date timestamp(7) references scott.dept(start_date),\n" + - "end_date timestamp(7) references dept.end_date on delete cascade,\n" + - "end_date timestamp(7) references dept.end_date on update set null,\n" + - "check (start_date>end_date),\n" + - "constraint abc unique(a,b),\n" + - "primary key(a),\n" + - "foreign key(a,b) references dept(c,d) on delete set null\n" + - ");"; - sqlParser.parse(); - //System.out.println(sqlParser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); - } - -// public void testMySQLCreateTable( ) -// { -// TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmysql); -// sqlParser.sqltext = "CREATE TABLE `DEPT_MANAGER_TBL` ( \n" + -// " `EMP_NO` INT(4) unsigned zerofill NOT NULL DEFAULT 1000, \n" + -// " `DEPT_NO` CHAR(4) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL, \n" + -// " `TO_DATE` GEOMETRY NOT NULL , `FROM_DATE` DATE NOT NULL, \n" + -// " PRIMARY KEY (`EMP_NO`, `DEPT_NO`)\n" + -// ") COLLATE=utf8_unicode_ci;"; -// sqlParser.parse(); -// System.out.println(sqlParser.sqlstatements.get(0).toScript()); -// //assertTrue(verifyScript(EDbVendor.dbvmysql, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); -// } - + +package gudusoft.gsqlparser.scriptWriterTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ETokenType; +import gudusoft.gsqlparser.TBaseType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.TSourceTokenList; +import gudusoft.gsqlparser.pp.para.GFmtOpt; +import gudusoft.gsqlparser.pp.para.GFmtOptFactory; +import gudusoft.gsqlparser.pp.para.styleenums.TCaseOption; +import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; +import junit.framework.TestCase; + +public class testScriptGenerator extends TestCase +{ + public void testsqlserverDatetime2( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE TABLE test(\n" + + "id int NOT NULL IDENTITY(1,1),\n" + + "ModifiedDate datetime2(0) NOT NULL\n" + + ")"; + + assertTrue(sqlparser.parse( ) == 0); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testsqlserverDatetime( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE TABLE test(\n" + + "id int NOT NULL IDENTITY(1,1),\n" + + "ModifiedDate datetime(0) NOT NULL\n" + + ")"; + + assertTrue(sqlparser.parse( ) == 0); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testsqlserverAlterTableForColumns( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); + sqlparser.sqltext = "ALTER TABLE testTable ADD DEFAULT ('') FOR testColumn"; + + assertTrue(sqlparser.parse( ) == 0); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testsqlserverOption( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); + sqlparser.sqltext = "SELECT * FROM HumanResources.Employee AS e1 UNION SELECT * FROM HumanResources.Employee AS e2 OPTION (MERGE UNION);"; + + assertTrue(sqlparser.parse( ) == 0); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSnwoflakeConcat( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvsnowflake); + sqlparser.sqltext = "select 'a' || 'b'"; + + assertTrue(sqlparser.parse( ) == 0); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvsnowflake,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testOnprimay( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); + sqlparser.sqltext = "CREATE TABLE [echeckinmedicaldata] ( \n" + + " [id] int NOT NULL\n" + + "IDENTITY(1,1) ,\n" + + " [uid] int NOT NULL CONSTRAINT [DF_echeckinmedicaldata_uid] DEFAULT ((0)) ,\n" + + " [encid] int NOT NULL CONSTRAINT [DF_echeckinmedicaldata_encid] DEFAULT ((0)) ,\n" + + " [surglist] text NULL CONSTRAINT [DF_echeckinmedicaldata_surglist] DEFAULT NULL ,\n" + + " [hosplist] text NULL CONSTRAINT [DF_echeckinmedicaldata_hosplist] DEFAULT NULL ,\n" + + " [medlist] text NULL CONSTRAINT [DF_echeckinmedicaldata_medlist] DEFAULT NULL ,\n" + + " [allergylist] text NULL CONSTRAINT [DF_echeckinmedicaldata_allergylist] DEFAULT NULL ,\n" + + " [datetime] varchar (50) NULL CONSTRAINT [DF_echeckinmedicaldata_datetime] DEFAULT NULL ,\n" + + " [delflag] tinyint NOT NULL DEFAULT ((0)),\n" + + " INDEX idx_echeckinmedicaldata_uid(uid),\n" + + " INDEX idx_echeckinmedicaldata_encid(encid),\n" + + " CONSTRAINT PK_echeckinmedicaldata PRIMARY KEY CLUSTERED ( id ASC ) WITH (IGNORE_DUP_KEY = OFF)\n" + + " ON [PRIMARY]) ON [PRIMARY];"; + + sqlparser.parse( ); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testAtlerTableAddColumn( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); + sqlparser.sqltext = "ALTER TABLE ALLERGY_RECIPE_LABS ADD SHOT_FAC_TYPE TINYINT DEFAULT 0, MAILTO_TEL VARCHAR(20);"; + + sqlparser.parse( ); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testMySQLChar( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); + sqlparser.sqltext = "SELECT CAST(t5.column AS CHAR) AS c1 from xxx t5"; + + sqlparser.parse( ); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testInterval( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); + sqlparser.sqltext = "SELECT DATE_ADD(DATE(datecol), INTERVAL (-WEEKDAY(DATE(datecol))) DAY) AS finalDate FROM table "; + + sqlparser.parse( ); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testCastDecimal( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); + sqlparser.sqltext = "SELECT CAST(t5.column AS DECIMAL(20)) AS c1 from t5.xxx;"; + + sqlparser.parse( ); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + + public void testIntervalConstant( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); + sqlparser.sqltext = " SELECT date_add(last_day (CAST(concat (concat (concat (2019,'-'),12),'-01') AS DATETIME)),INTERVAL 1 DAY) AS firstdayofnextmonth \n" + + " FROM analytics.xxx t19 \n" + + " WHERE t19.date < date_add(last_day(CAST(concat(concat(concat(2019,'-'),12),'-01') AS DATETIME)),INTERVAL 1 DAY)"; + + sqlparser.parse( ); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + + } + + public void testNullsFirst( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvredshift ); + sqlparser.sqltext = "select start_date from datetable order by start_date desc nulls first"; + + sqlparser.parse( ); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvredshift,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + + } + + public void testHiveLimit( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvhive ); + sqlparser.sqltext = "select groupcol, avg(mycolumn) as myalias\n" + + "from mytable\n" + + "group by groupcol\n" + + "limit 4"; + + sqlparser.parse( ); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvhive,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + + } + + public void testPostgresqlAnd( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvpostgresql ); + sqlparser.sqltext = "SELECT * from transmission where position_search && '{3456788}';"; + + sqlparser.parse( ); + + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + //assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + + } + + public void testMySQLFunctionAddDate( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); + sqlparser.sqltext = "SELECT adddate(date, 10*10) as date from program"; + + sqlparser.parse( ); + + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + + } + + public void testMySQLAssignmentOperator( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); + sqlparser.sqltext = "select @csum := 0 from dual"; + + sqlparser.parse( ); + + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + + } + + public void testBindVar( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select emp_id, emp_dept\n" + + "into :b0 :b1,\n" + + ":b2 :b3\n" + + "from T1\n" + + "where rownum < 2;"; + + sqlparser.parse( ); + + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + +// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvoracle ); +// scriptGenerator.generateScript( sqlparser.sqlstatements.get( 0 ) ); +// assertTrue( scriptGenerator.verifyScript( sqlparser.sqlstatements.get( 0 ) ) ); + } + + public void testCrossApply( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT d.department_name, v.employee_id, v.last_name\n" + + " FROM departments d CROSS APPLY (SELECT * FROM employees e\n" + + " WHERE e.department_id = d.department_id) v"; + + sqlparser.parse( ); + + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + +// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvoracle ); +// scriptGenerator.generateScript( sqlparser.sqlstatements.get( 0 ) ); +// assertTrue( scriptGenerator.verifyScript( sqlparser.sqlstatements.get( 0 ) ) ); + } + + + public void testIsOfType( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select a from b\n" + + "where c is of type(only scott.tn)"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testForeignReferences( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "CREATE TABLE registered_students (\n" + + " student_id NUMBER(5) NOT NULL,\n" + + " department CHAR(3) NOT NULL,\n" + + " course NUMBER(3) NOT NULL,\n" + + " grade CHAR(1),\n" + + " CONSTRAINT rs_grade\n" + + " CHECK (grade IN ('A', 'B', 'C', 'D', 'E')),\n" + + " CONSTRAINT rs_student_id\n" + + " FOREIGN KEY (student_id) REFERENCES students (id),\n" + + " CONSTRAINT rs_department_course\n" + + " FOREIGN KEY (department, course)\n" + + " REFERENCES classes (department, course)\n" + + " )"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle + , sqlparser.sqlstatements.get(0).toString() + , sqlparser.sqlstatements.get(0).toScript())); + } + + public void testForUpdateOf( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select all department_id\n" + + "from employees\n" + + "for update of scott.employees.ename;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testDatabaseLink( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select emp.e@usa b from emp"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testDatabaseLink2( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select user@!, sysdate@! from dual ;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testAnalyticFunction3( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT last_name, salary, department_id,\n" + + " PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary1 DESC) \n" + + " OVER (PARTITION BY department_id) \"Percentile_Cont\",\n" + + " PERCENT_RANK() \n" + + " OVER (PARTITION BY department_id ORDER BY salary DESC) \n" + + "\"Percent_Rank\"\n" + + "FROM employees WHERE department_id IN (30, 60);"; + + sqlparser.parse(); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testAnalyticFunction4( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT empno,\n" + + " deptno,\n" + + " sal,\n" + + " MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno) \"Lowest\",\n" + + " MAX(sal) KEEP (DENSE_RANK LAST ORDER BY sal) OVER (PARTITION BY deptno) \"Highest\"\n" + + "FROM emp\n" + + "ORDER BY deptno, sal;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testAnalyticFunction5( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT empno,\n" + + " deptno,\n" + + " sal,\n" + + " DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal) \"rank\"\n" + + "FROM emp;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testAnalyticFunction6( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT empno,\n" + + " deptno,\n" + + " sal,\n" + + " RANK() OVER (PARTITION BY deptno ORDER BY sal) \"rank\"\n" + + " FROM emp;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testAnalyticFunction7( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT empno, deptno, TO_CHAR(hiredate, 'YYYY') YEAR,\n" + + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" + + "ORDER BY hiredate ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) FROM_P3_TO_F1,\n" + + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" + + "ORDER BY hiredate ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM_PU_TO_C,\n" + + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" + + "ORDER BY hiredate ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING) FROM_P2_TO_P1,\n" + + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" + + "ORDER BY hiredate ROWS BETWEEN 1 FOLLOWING AND 3 FOLLOWING) FROM_F1_TO_F3\n" + + "FROM emp\n" + + "ORDER BY hiredate;"; + + sqlparser.parse( ); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testGroupBy1( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT DECODE(GROUPING(department_name), 1, 'All Departments',\n" + + " department_name) AS department_name,\n" + + " DECODE(GROUPING(job_id), 1, 'All Jobs', job_id) AS job_id,\n" + + " COUNT(*) \"Total Empl\", AVG(salary) * 12 \"Average Sal\"\n" + + " FROM employees e, departments d\n" + + " WHERE d.department_id = e.department_id\n" + + " GROUP BY CUBE (department_name, job_id)"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testKeepDenseRank( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT department_id,\n" + + "MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct) \"Worst\",\n" + + "MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct) \"Best\"\n" + + " FROM employees\n" + + " GROUP BY department_id;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testDeleteNestedTable( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "DELETE TABLE(SELECT h.people FROM hr_info h\n" + + " WHERE h.department_id = 280) p\n" + + " WHERE p.salary > 1700;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void test11( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT salary FROM employees\n" + + "versions between scn minvalue and maxvalue\n" + + "ORDER BY 1,2;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testOracleJoin2( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select a from b \n" + + "where waehrungscode_iso = TO_NUMBER(e.code(+))"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testAnalyticFunction2( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT manager_id, last_name, hire_date, salary,\n" + + " AVG(salary) OVER (PARTITION BY manager_id ORDER BY hire_date \n" + + " ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS c_mavg\n" + + " FROM employees;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + // public void testPivot(){ + // TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + // sqlparser.sqltext = "SELECT * FROM\n" + + // "(SELECT EXTRACT(YEAR FROM order_date) year, order_mode, order_total FROM orders)\n" + // + + // "PIVOT\n" + + // "(SUM(order_total) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));"; + // + // sqlparser.parse(); + // TScriptGenerator scriptGenerator = new + // TScriptGenerator(EDbVendor.dbvoracle); + // System.out.println(scriptGenerator.generateScript(sqlparser.sqlstatements.get(0))); + // // scriptGenerator.generateScript(sqlparser.sqlstatements.get(0)); + // assertTrue(scriptGenerator.verifyScript(sqlparser.sqlstatements.get(0).sourcetokenlist)); + // } + + public void testCreateTableDefault2( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "create table myTable (\n" + + "myColumn number default null null \n" + + ");"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testCreateTableDefault( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "create table myTable (\n" + + "myColumn number default null not null\n" + + ");"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testCreateViewDefault( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "CREATE VIEW vNessusTargetHostExtract \n" + + "AS \n" + + "SELECT LoadKey, vcHost, CASE WHEN iPluginid = 12053 THEN SUBSTRING(vcResult, CHARINDEX('resolves as', vcResult) + 12, (DATALENGTH(vcResult) - 1) \n" + + " - (CHARINDEX('resolves as', vcResult) + 12)) ELSE 'No registered hostname' END AS vcHostName, vcport, LoadedOn, iRecordTypeID, \n" + + " iAgentProcessID, iTableID \n" + + "FROM dbo.vNessusResultExtract;"; + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + + // public void testMssqlCreateFunction( ) +// { +// TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql ); +// sqlparser.sqltext = "create function dbo.ufnGetStock(@ProductID int )\r\n" +// + " returns int \r\n" +// + " as \r\n" +// + " begin \r\n" +// + " declare @ret int ;\r\n" +// + " select \r\n" +// + "@ret=SUM(p.Quantity)\r\n" +// + " from \r\n" +// + "Production.ProductInventory p\r\n" +// + " where p.ProductID = @ProductID and p.LocationID = '6';\r\n" +// + " if (@ret is null )\r\n" +// + " set @ret=0;\r\n" +// + " return @ret;\r\n" +// + " end "; +// sqlparser.parse( ); +// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvmssql ); +// System.out.println(scriptGenerator.generateScript( sqlparser.sqlstatements.get( 0 ) )); +// assertTrue( scriptGenerator.verifyScript( sqlparser.sqlstatements.get( 0 ).sourcetokenlist ) ); +// } +// + public void testOracleCreateProcedure( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "CREATE PROCEDURE evaluate(my_empno NUMBER) \r\n" + + "AUTHID CURRENT_USER AS \r\n" + + "my_ename VARCHAR2 (15); \r\n" + + "BEGIN \r\n" + + "SELECT ename INTO my_ename FROM emp WHERE empno = my_empno;\r\n" + + "END ;"; + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testDropIndex( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql ); + sqlparser.sqltext = "DROP INDEX IX_SalesPerson_SalesQuota_SalesYTD ON Sales.SalesPerson;"; + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testUseDatabase( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql ); + sqlparser.sqltext = "USE AdventureWorks;"; + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testDelete( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "delete from department\n" + + "where department_name = 'Finance';"; + + sqlparser.parse( ); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testJoinNested( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select a_join.f1\n" + + "from ((a as a_alias left outer join a1 on a1.f1 = a_alias.f1) ) as a_join\n" + + "join b on a_join.f1 = b.f1;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testJoinNested2( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select * \n" + + "FROM (a AS alias_a \n" + + " RIGHT JOIN ((b left outer join f on (b.f1=f.f2)) LEFT JOIN c \n" + + "\t\tON (b.b1 = c.c1) AND (b.b2 = c.c2)) \n" + + "\tON (a.a1 = b.b3) AND (a.a2 = b.b4)) b;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + // public void testHavingGroup(){ + // TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + // sqlparser.sqltext = "select a,c\n" + + // "from b\n" + + // "having avg(c) > 10\n" + + // "group by a"; + // + // sqlparser.parse(); + // TScriptGenerator scriptGenerator = new + // TScriptGenerator(EDbVendor.dbvoracle); + // System.out.println(scriptGenerator.generateScript(sqlparser.sqlstatements.get(0))); + // // scriptGenerator.generateScript(sqlparser.sqlstatements.get(0)); + // assertTrue(scriptGenerator.verifyScript(sqlparser.sqlstatements.get(0).sourcetokenlist)); + // } + + public void testSelectAlias( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select last_name as name ,commission_pct comm,\n" + + "salary*12 \"Annual Salary\"\n" + + "from employees;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testComment( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select a\n" + + "from b --s\n" + + "--ss\n" + + "where a in (1, 1>2 and c>d);"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); + } + + public void testForUpdate( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select * from abc order by a for update nowait;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testConcatenate( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT /*+ use_hash(KUO) */\n" + + " C_BANK\n" + + " || '|'\n" + + "from t "; + + sqlparser.parse(); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(verifyScript(EDbVendor.dbvoracle, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); + } + + public void testInlist( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select ANZ_MA\n" + + "from t \n" + + "WHERE funktionscode IN ('U', 'H') "; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testAnalyticFunction( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select ROW_NUMBER() OVER \n" + + "\t(PARTITION BY c_mandant, ma_parkey, me_parkey \n" + + "\t\tORDER BY c_mandant, ma_parkey, me_parkey) ANZ_MA\n" + + "from t "; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testCase( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select CASE WHEN EXISTS (SELECT 1\n" + + " FROM CDS_H_GRUPPE GRP1\n" + + " WHERE GRP1.c_mandant = c_mandant\n" + + " AND GRP1.hist_datum = ADD_MONTHS(LAST_DAY(TRUNC(SYSDATE)), -1)\n" + + " AND GRP1.funktionscode = 'H'\n" + + " AND GRP1.parkey1 = ma_parkey)\n" + + " THEN 1\n" + + " ELSE NULL\n" + + " END MA_ME\n" + + "from t"; + + sqlparser.parse(); + //System.out.println(sqlparser.sqlstatements.get(0).toScript()); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSelectPivot( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT * FROM pivot_table\n" + + " UNPIVOT (yearly_total FOR order_mode IN (store AS 'direct', internet AS 'online'))\n" + + " ORDER BY year, order_mode;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSelectWithParensOfUnion2( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "(( \n" + + " select add_months(trunc(sysdate), -1) as dt\n" + + " from dual\n" + + " union all\n" + + " select cte.dt+1 \n" + + " from cte \n" + + " where cte.dt+1 < sysdate\n" + + ") order by 1)\n" + + "\n"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSelectWithParensOfUnion( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "( \n" + + " select add_months(trunc(sysdate), -1) as dt\n" + + " from dual\n" + + " union all\n" + + " select cte.dt+1 \n" + + " from cte \n" + + " where cte.dt+1 < sysdate\n" + + ") order by 1\n" + + "\n"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSelectWithParens2( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT B.* FROM ((SELECT 2 FROM DUAL) B)"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSelectWithParens( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "((select a from b\n" + + "where a>c)\n" + + "order by 1)"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testCTE( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "with cte (dt) as ( \n" + + " select add_months(trunc(sysdate), -1) as dt\n" + + " from dual\n" + + " union all\n" + + " select cte.dt+1 \n" + + " from cte \n" + + " where cte.dt+1 < sysdate\n" + + ")\n" + + " select * from cte;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSet2( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select 'sing' as \"My dream\", 3 a_dummy\n" + + "from dual\n" + + "union\n" + + "select 'I''d like to teach',1\n" + + "from dual\n" + + "union\n" + + "select 'the world to',2\n" + + "from dual\n" + + "order by 2;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testSet1( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select employee_id,job_id\n" + + "from employees\n" + + "union\n" + + "select employee_id,job_id\n" + + "from job_history;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testGroupBy( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select department_id,avg(salary)\n" + + "from employees\n" + + "group by department_id\n" + + "having avg(salary) > 8000\n" + + "order by sum(salary);"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testHierarchical( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "SELECT employee_id, last_name, manager_id\n" + + " FROM employees\n" + + " CONNECT BY PRIOR employee_id = manager_id;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testJoin3( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select t1.f1\n" + + "from my.table1 t1\n" + + " right outer join (\n" + + " \t\t\t\t\t\t\t(my.table2 t2\n" + + " \t\t\t\t\t\t\t\tleft outer join my.table3 t3\n" + + " \t\t\t\t\t\t\t\t\ton (t2.f1 = t3.f2)\n" + + " \t\t\t\t\t\t\t)\n" + + " \t\t\t\t\t\tleft outer join (my.table4 t4\n" + + " \t\t\t\t\t\t\t\t\t\t\t\t\tfull outer join my.table5 t5\n" + + " \t\t\t\t\t\t\t\t\t\t\t\t\t\ton (t4.f1 = t5.f1)\n" + + " \t\t\t\t\t\t\t\t\t\t\t ) t4alias\n" + + " \t\t\t\t\t\t\ton (t4.b1 = t2.c1)\n" + + " \t\t\t\t\t\t)\n" + + " on (t1.a1 = t3.b3);"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testJoin2( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select t1.f1\n" + + "from my.table1 t1\n" + + " join (my.table2 t2\n" + + " left outer join my.table3 t3\n" + + " on t2.f1 = t3.f1) as joinalias1\n" + + " on t1.f1 = t2.f1;"; + + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testJoin( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select t1.f1\n" + + "from my.table1 t1\n" + + " join my.table2 t2 on t1.f1 = t2.f1\n" + + " left outer join my.table3 t3 on t2.f1 = t3.f1"; + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void testOracleJoin( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "Select t1.f1\n" + + "from my.table1 t1,my.table2 t2\n" + + "where t1.f1 = t2.f1\t"; + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + public void test1( ) + { + TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); + sqlparser.sqltext = "select fx(1,2)+y from t"; + sqlparser.parse(); + assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); + } + + + static public boolean verifyScript(EDbVendor dbVendor, String src, String target){ + return verifyScript(dbVendor,src,target,0); +// TGSqlParser sourceParser = new TGSqlParser(dbVendor ); +// TGSqlParser targetParser = new TGSqlParser(dbVendor ); +// sourceParser.sqltext = src; +// sourceParser.tokenizeSqltext(); +// +// targetParser.sqltext = target; +// targetParser.tokenizeSqltext(); +// +// return verifyTokens(sourceParser.getSourcetokenlist(),targetParser.getSourcetokenlist(),false); + + } + + static public boolean verifyScript(EDbVendor dbVendor, String src, String target, long lineOffset){ + if ((src == null)||(src.length()==0)) return false; + if ((target == null)||(target.length()==0)) return false; + TGSqlParser sourceParser = new TGSqlParser(dbVendor ); + TGSqlParser targetParser = new TGSqlParser(dbVendor ); + sourceParser.sqltext = src; + sourceParser.tokenizeSqltext(); + + targetParser.sqltext = target; + targetParser.tokenizeSqltext(); + + return verifyTokens(sourceParser.getSourcetokenlist(),targetParser.getSourcetokenlist(),false,lineOffset); + + } + + static private boolean verifyTokens(TSourceTokenList originalTokens, TSourceTokenList targetTokens, boolean partialChecking, long lineOffset){ + boolean result = true; + int old = 0; + boolean startParenthesis = false; + int nestedParenthesis = 0; + + for(int i=0;i 0) nestedParenthesis--; + if ((nestedParenthesis == 0) && startParenthesis){ + result = true; + break; + } + } + } + + result = false; + for(int j=old;j 1000000 AND order_total < 2000000 THEN\n" + + "INTO medium_orders\n" + + "WHEN order_total > 2000000 THEN\n" + + "INTO large_orders\n" + + "SELECT order_id, order_total, sales_rep_id, customer_id\n" + + "FROM orders"; + sqlParser.parse(); + //System.out.println(sqlParser.sqlstatements.get(0).toScript()); + assertTrue(verifyScript(EDbVendor.dbvoracle, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); + } + + public void testInsertFirst( ) + { + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + sqlParser.sqltext = "INSERT FIRST\n" + + "WHEN ottl < 100000 THEN\n" + + "INTO small_orders\n" + + "VALUES(oid, ottl, sid, cid)\n" + + "WHEN ottl > 100000 and ottl < 200000 THEN\n" + + "INTO medium_orders\n" + + "VALUES(oid, ottl, sid, cid)\n" + + "WHEN ottl > 290000 THEN\n" + + "INTO special_orders\n" + + "WHEN ottl > 200000 THEN\n" + + "INTO large_orders\n" + + "VALUES(oid, ottl, sid, cid)\n" + + "SELECT o.order_id oid, o.customer_id cid, o.order_total ottl,\n" + + "o.sales_rep_id sid, c.credit_limit cl, c.cust_email cem\n" + + "FROM orders o, customers c\n" + + "WHERE o.customer_id = c.customer_id;"; + sqlParser.parse(); + //System.out.println(sqlParser.sqlstatements.get(0).toScript()); + assertTrue(verifyScript(EDbVendor.dbvoracle, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); + } + + /** + * support key actions in reference clause. + * see {@link gudusoft.gsqlparser.nodes.TConstraint#getKeyActions()} + */ + public void testOnDeleteCascade( ) + { + TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); + sqlParser.sqltext = "create table new_employees\n" + + "(employee_id number not null,\n" + + "hire_date date default sysdate,\n" + + "start_date timestamp(7) references scott.dept(start_date),\n" + + "end_date timestamp(7) references dept.end_date on delete cascade,\n" + + "end_date timestamp(7) references dept.end_date on update set null,\n" + + "check (start_date>end_date),\n" + + "constraint abc unique(a,b),\n" + + "primary key(a),\n" + + "foreign key(a,b) references dept(c,d) on delete set null\n" + + ");"; + sqlParser.parse(); + //System.out.println(sqlParser.sqlstatements.get(0).toScript()); + assertTrue(verifyScript(EDbVendor.dbvoracle, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); + } + +// public void testMySQLCreateTable( ) +// { +// TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmysql); +// sqlParser.sqltext = "CREATE TABLE `DEPT_MANAGER_TBL` ( \n" + +// " `EMP_NO` INT(4) unsigned zerofill NOT NULL DEFAULT 1000, \n" + +// " `DEPT_NO` CHAR(4) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL, \n" + +// " `TO_DATE` GEOMETRY NOT NULL , `FROM_DATE` DATE NOT NULL, \n" + +// " PRIMARY KEY (`EMP_NO`, `DEPT_NO`)\n" + +// ") COLLATE=utf8_unicode_ci;"; +// sqlParser.parse(); +// System.out.println(sqlParser.sqlstatements.get(0).toScript()); +// //assertTrue(verifyScript(EDbVendor.dbvmysql, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); +// } + } \ No newline at end of file diff --git a/src/test/java/scriptWriter/testSnowflake.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSnowflake.java similarity index 94% rename from src/test/java/scriptWriter/testSnowflake.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSnowflake.java index 78aff2b4..ab844aab 100644 --- a/src/test/java/scriptWriter/testSnowflake.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSnowflake.java @@ -1,4 +1,4 @@ -package scriptWriter; +package gudusoft.gsqlparser.scriptWriterTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/scriptWriter/testTimeStampExpr.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testTimeStampExpr.java similarity index 98% rename from src/test/java/scriptWriter/testTimeStampExpr.java rename to src/test/java/gudusoft/gsqlparser/scriptWriterTest/testTimeStampExpr.java index 5f42db00..90dd2cf8 100644 --- a/src/test/java/scriptWriter/testTimeStampExpr.java +++ b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testTimeStampExpr.java @@ -1,4 +1,4 @@ -package scriptWriter; +package gudusoft.gsqlparser.scriptWriterTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/singletonThread/testSingletonThread.java b/src/test/java/gudusoft/gsqlparser/singletonThreadTest/testSingletonThread.java similarity index 98% rename from src/test/java/singletonThread/testSingletonThread.java rename to src/test/java/gudusoft/gsqlparser/singletonThreadTest/testSingletonThread.java index 733dab6b..09ed153f 100644 --- a/src/test/java/singletonThread/testSingletonThread.java +++ b/src/test/java/gudusoft/gsqlparser/singletonThreadTest/testSingletonThread.java @@ -1,4 +1,4 @@ -package singletonThread; +package gudusoft.gsqlparser.singletonThreadTest; import gudusoft.gsqlparser.EDbObjectType; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/snowflake/TestAlterTable.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/TestAlterTable.java similarity index 97% rename from src/test/java/snowflake/TestAlterTable.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/TestAlterTable.java index a9113508..ba361b01 100644 --- a/src/test/java/snowflake/TestAlterTable.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/TestAlterTable.java @@ -1,49 +1,49 @@ -package snowflake; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TAlterTableOption; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import junit.framework.TestCase; - -public class TestAlterTable extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "ALTER TABLE t ADD COLUMN\n" + - " c1 number,\n" + - " c2 number;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.AddColumn); - assertTrue(alterTableOption.getColumnDefinitionList().size() == 2); - TColumnDefinition columnDefinition = alterTableOption.getColumnDefinitionList().getColumn(1); - assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("c2")); - assertTrue(columnDefinition.getDatatype().getDataType() == EDataType.number_t); - } - - public void testRenameTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "alter table t2 rename to t3;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.RenameTable); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("t2")); - assertTrue(alterTableOption.getNewTableName().toString().equalsIgnoreCase("t3")); - } - - public void testSwapTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "alter table t2 swap with t3;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.swapWith); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("t2")); - assertTrue(alterTableOption.getNewTableName().toString().equalsIgnoreCase("t3")); - } -} +package gudusoft.gsqlparser.snowflakeTest; + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.TAlterTableOption; +import gudusoft.gsqlparser.nodes.TColumnDefinition; +import gudusoft.gsqlparser.stmt.TAlterTableStatement; +import junit.framework.TestCase; + +public class TestAlterTable extends TestCase { + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "ALTER TABLE t ADD COLUMN\n" + + " c1 number,\n" + + " c2 number;"; + assertTrue(sqlparser.parse() == 0); + + TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); + TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); + assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.AddColumn); + assertTrue(alterTableOption.getColumnDefinitionList().size() == 2); + TColumnDefinition columnDefinition = alterTableOption.getColumnDefinitionList().getColumn(1); + assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("c2")); + assertTrue(columnDefinition.getDatatype().getDataType() == EDataType.number_t); + } + + public void testRenameTable(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "alter table t2 rename to t3;"; + assertTrue(sqlparser.parse() == 0); + + TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); + TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); + assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.RenameTable); + assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("t2")); + assertTrue(alterTableOption.getNewTableName().toString().equalsIgnoreCase("t3")); + } + + public void testSwapTable(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "alter table t2 swap with t3;"; + assertTrue(sqlparser.parse() == 0); + + TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); + TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); + assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.swapWith); + assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("t2")); + assertTrue(alterTableOption.getNewTableName().toString().equalsIgnoreCase("t3")); + } +} diff --git a/src/test/java/snowflake/TestCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/TestCreateProcedure.java similarity index 97% rename from src/test/java/snowflake/TestCreateProcedure.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/TestCreateProcedure.java index aeae7879..d25a33f8 100644 --- a/src/test/java/snowflake/TestCreateProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/TestCreateProcedure.java @@ -1,183 +1,183 @@ -package snowflake; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import junit.framework.TestCase; - -public class TestCreateProcedure extends TestCase { - - public void testPlSQL3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE EDM_REFINED_DEV.DW_APPL.sp_GetLData_Hcm_Hires()\n" + - "RETURNS STRING\n" + - "language sql\n" + - "as\n" + - "$$\n" + - "----Create Stage\n" + - "CREATE OR REPLACE STAGE EDM_REFINED_DEV.DW_APPL.HCM_LD_FILE_STAGE\n" + - " storage_integration = STORAGE_absitdsdevwusseddw001\n" + - " url = 'itds-dev-direct-feeds/COE_Diversity/DataIn/'\n" + - " file_format = (type = 'CSV');\n" + - "----Create Stream\n" + - "CREATE OR REPLACE STREAM DM_EAGLE.\"PUBLIC\".EMPLOYEES_STREAM ON\n" + - "TABLE DM_EAGLE.\"PUBLIC\".EMPLOYEES;\n" + - "----Create Pipe\n" + - "CREATE OR REPLACE PIPE database.schema.mypipe as COPY INTO DM_PRODUCT.PUBLIC.PRODUCT_SALES\n" + - "FROM @DM_PRODUCT.PUBLIC.my_ext_stage/tutorials/dataloading/sales.json;\n" + - "SELECT * FROM selectTable;\n" + - "$$;"; - //System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("EDM_REFINED_DEV.DW_APPL.sp_GetLData_Hcm_Hires")); - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("sql")); - assertTrue(createProcedure.getBodyStatements().size() == 4); - - } - - public void testPlSQL1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE COVID19.\"PUBLIC\".INSERT_CDC_DATA()\n" + - "RETURNS NUMBER(38,0)\n" + - "LANGUAGE SQL\n" + - "STRICT\n" + - "EXECUTE AS OWNER\n" + - "AS '\n" + - "insert into COVID19.PUBLIC.CDC_INPATIENT_BEDS_ALL (STATE, DATE, ISO3166_1, LAST_REPORTED_FLAG)\n" + - "values (''A'',\n" + - " ''2021-01-01 00:00:00 +0000'',\n" + - " ''C'',\n" + - " true);\n" + - "';"; - //System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("COVID19.\"PUBLIC\".INSERT_CDC_DATA")); - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("sql")); - assertTrue(createProcedure.getBodyStatements().size() == 1); - assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstinsert); - } - - public void testPlSQL2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE COVID19.\"PUBLIC\".INSERT_CDC_DATA()\n" + - "RETURNS NUMBER(38,0)\n" + - "LANGUAGE SQL\n" + - "STRICT\n" + - "EXECUTE AS OWNER\n" + - "AS $$\n" + - "insert into COVID19.PUBLIC.CDC_INPATIENT_BEDS_ALL (STATE, DATE, ISO3166_1, LAST_REPORTED_FLAG)\n" + - "values ('A',\n" + - " '2021-01-01 00:00:00 +0000',\n" + - " 'C',\n" + - " true);\n" + - "$$;"; - //System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("COVID19.\"PUBLIC\".INSERT_CDC_DATA")); - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("sql")); - assertTrue(createProcedure.getBodyStatements().size() == 1); - assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstinsert); - } - - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE or replace PROCEDURE proc3()\n" + - " RETURNS VARCHAR\n" + - " LANGUAGE javascript\n" + - " AS\n" + - " $$\n" + - " var rs = snowflake.execute( { sqlText:\n" + - " `INSERT INTO table1 (\"column 1\")\n" + - " SELECT 'value 1' AS \"column 1\" ;`\n" + - " } );\n" + - " return 'Done.';\n" + - " $$;\n" + - " ;"; - // System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("proc3")); - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("javascript")); - assertTrue(createProcedure.getRoutineBody().equalsIgnoreCase("$$\n" + - " var rs = snowflake.execute( { sqlText:\n" + - " `INSERT INTO table1 (\"column 1\")\n" + - " SELECT 'value 1' AS \"column 1\" ;`\n" + - " } );\n" + - " return 'Done.';\n" + - " $$")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace procedure get_row_count(table_name VARCHAR)\n" + - " returns float not null\n" + - " language javascript\n" + - " as\n" + - " $$\n" + - " var row_count = 0;\n" + - " // Dynamically compose the SQL statement to execute.\n" + - " var sql_command = \"select count(*) from \" + TABLE_NAME;\n" + - " // Run the statement.\n" + - " var stmt = snowflake.createStatement(\n" + - " {\n" + - " sqlText: sql_command\n" + - " }\n" + - " );\n" + - " var res = stmt.execute();\n" + - " // Get back the row count. Specifically, ...\n" + - " // ... get the first (and in this case only) row from the result set ...\n" + - " res.next();\n" + - " // ... and then get the returned value, which in this case is the number of\n" + - " // rows in the table.\n" + - " row_count = res.getColumnValue(1);\n" + - " return row_count;\n" + - " $$\n" + - " ;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("get_row_count")); - assertTrue(createProcedure.getParameterDeclarations().getParameterDeclarationItem(0).getParameterName().toString().equalsIgnoreCase("table_name")); - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("javascript")); - assertTrue(createProcedure.getRoutineBody().equalsIgnoreCase("$$\n" + - " var row_count = 0;\n" + - " // Dynamically compose the SQL statement to execute.\n" + - " var sql_command = \"select count(*) from \" + TABLE_NAME;\n" + - " // Run the statement.\n" + - " var stmt = snowflake.createStatement(\n" + - " {\n" + - " sqlText: sql_command\n" + - " }\n" + - " );\n" + - " var res = stmt.execute();\n" + - " // Get back the row count. Specifically, ...\n" + - " // ... get the first (and in this case only) row from the result set ...\n" + - " res.next();\n" + - " // ... and then get the returned value, which in this case is the number of\n" + - " // rows in the table.\n" + - " row_count = res.getColumnValue(1);\n" + - " return row_count;\n" + - " $$")); - } - - -} +package gudusoft.gsqlparser.snowflakeTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TCustomSqlStatement; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; +import junit.framework.TestCase; + +public class TestCreateProcedure extends TestCase { + + public void testPlSQL3(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE EDM_REFINED_DEV.DW_APPL.sp_GetLData_Hcm_Hires()\n" + + "RETURNS STRING\n" + + "language sql\n" + + "as\n" + + "$$\n" + + "----Create Stage\n" + + "CREATE OR REPLACE STAGE EDM_REFINED_DEV.DW_APPL.HCM_LD_FILE_STAGE\n" + + " storage_integration = STORAGE_absitdsdevwusseddw001\n" + + " url = 'itds-dev-direct-feeds/COE_Diversity/DataIn/'\n" + + " file_format = (type = 'CSV');\n" + + "----Create Stream\n" + + "CREATE OR REPLACE STREAM DM_EAGLE.\"PUBLIC\".EMPLOYEES_STREAM ON\n" + + "TABLE DM_EAGLE.\"PUBLIC\".EMPLOYEES;\n" + + "----Create Pipe\n" + + "CREATE OR REPLACE PIPE database.schema.mypipe as COPY INTO DM_PRODUCT.PUBLIC.PRODUCT_SALES\n" + + "FROM @DM_PRODUCT.PUBLIC.my_ext_stage/tutorials/dataloading/sales.json;\n" + + "SELECT * FROM selectTable;\n" + + "$$;"; + //System.out.println(sqlparser.sqltext); + + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); + TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("EDM_REFINED_DEV.DW_APPL.sp_GetLData_Hcm_Hires")); + assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("sql")); + assertTrue(createProcedure.getBodyStatements().size() == 4); + + } + + public void testPlSQL1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE COVID19.\"PUBLIC\".INSERT_CDC_DATA()\n" + + "RETURNS NUMBER(38,0)\n" + + "LANGUAGE SQL\n" + + "STRICT\n" + + "EXECUTE AS OWNER\n" + + "AS '\n" + + "insert into COVID19.PUBLIC.CDC_INPATIENT_BEDS_ALL (STATE, DATE, ISO3166_1, LAST_REPORTED_FLAG)\n" + + "values (''A'',\n" + + " ''2021-01-01 00:00:00 +0000'',\n" + + " ''C'',\n" + + " true);\n" + + "';"; + //System.out.println(sqlparser.sqltext); + + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); + TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("COVID19.\"PUBLIC\".INSERT_CDC_DATA")); + assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("sql")); + assertTrue(createProcedure.getBodyStatements().size() == 1); + assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstinsert); + } + + public void testPlSQL2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE COVID19.\"PUBLIC\".INSERT_CDC_DATA()\n" + + "RETURNS NUMBER(38,0)\n" + + "LANGUAGE SQL\n" + + "STRICT\n" + + "EXECUTE AS OWNER\n" + + "AS $$\n" + + "insert into COVID19.PUBLIC.CDC_INPATIENT_BEDS_ALL (STATE, DATE, ISO3166_1, LAST_REPORTED_FLAG)\n" + + "values ('A',\n" + + " '2021-01-01 00:00:00 +0000',\n" + + " 'C',\n" + + " true);\n" + + "$$;"; + //System.out.println(sqlparser.sqltext); + + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); + TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("COVID19.\"PUBLIC\".INSERT_CDC_DATA")); + assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("sql")); + assertTrue(createProcedure.getBodyStatements().size() == 1); + assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstinsert); + } + + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE or replace PROCEDURE proc3()\n" + + " RETURNS VARCHAR\n" + + " LANGUAGE javascript\n" + + " AS\n" + + " $$\n" + + " var rs = snowflake.execute( { sqlText:\n" + + " `INSERT INTO table1 (\"column 1\")\n" + + " SELECT 'value 1' AS \"column 1\" ;`\n" + + " } );\n" + + " return 'Done.';\n" + + " $$;\n" + + " ;"; + // System.out.println(sqlparser.sqltext); + + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); + TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("proc3")); + assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("javascript")); + assertTrue(createProcedure.getRoutineBody().equalsIgnoreCase("$$\n" + + " var rs = snowflake.execute( { sqlText:\n" + + " `INSERT INTO table1 (\"column 1\")\n" + + " SELECT 'value 1' AS \"column 1\" ;`\n" + + " } );\n" + + " return 'Done.';\n" + + " $$")); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace procedure get_row_count(table_name VARCHAR)\n" + + " returns float not null\n" + + " language javascript\n" + + " as\n" + + " $$\n" + + " var row_count = 0;\n" + + " // Dynamically compose the SQL statement to execute.\n" + + " var sql_command = \"select count(*) from \" + TABLE_NAME;\n" + + " // Run the statement.\n" + + " var stmt = snowflake.createStatement(\n" + + " {\n" + + " sqlText: sql_command\n" + + " }\n" + + " );\n" + + " var res = stmt.execute();\n" + + " // Get back the row count. Specifically, ...\n" + + " // ... get the first (and in this case only) row from the result set ...\n" + + " res.next();\n" + + " // ... and then get the returned value, which in this case is the number of\n" + + " // rows in the table.\n" + + " row_count = res.getColumnValue(1);\n" + + " return row_count;\n" + + " $$\n" + + " ;"; + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); + TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; + assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("get_row_count")); + assertTrue(createProcedure.getParameterDeclarations().getParameterDeclarationItem(0).getParameterName().toString().equalsIgnoreCase("table_name")); + assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("javascript")); + assertTrue(createProcedure.getRoutineBody().equalsIgnoreCase("$$\n" + + " var row_count = 0;\n" + + " // Dynamically compose the SQL statement to execute.\n" + + " var sql_command = \"select count(*) from \" + TABLE_NAME;\n" + + " // Run the statement.\n" + + " var stmt = snowflake.createStatement(\n" + + " {\n" + + " sqlText: sql_command\n" + + " }\n" + + " );\n" + + " var res = stmt.execute();\n" + + " // Get back the row count. Specifically, ...\n" + + " // ... get the first (and in this case only) row from the result set ...\n" + + " res.next();\n" + + " // ... and then get the returned value, which in this case is the number of\n" + + " // rows in the table.\n" + + " row_count = res.getColumnValue(1);\n" + + " return row_count;\n" + + " $$")); + } + + +} diff --git a/src/test/java/snowflake/testAlterSchema.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterSchema.java similarity index 95% rename from src/test/java/snowflake/testAlterSchema.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterSchema.java index c20b3965..b1d0ac3c 100644 --- a/src/test/java/snowflake/testAlterSchema.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterSchema.java @@ -1,4 +1,4 @@ -package snowflake; +package gudusoft.gsqlparser.snowflakeTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/snowflake/testAlterTask.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterTask.java similarity index 93% rename from src/test/java/snowflake/testAlterTask.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterTask.java index 26feed0c..7046ec5b 100644 --- a/src/test/java/snowflake/testAlterTask.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterTask.java @@ -1,4 +1,4 @@ -package snowflake; +package gudusoft.gsqlparser.snowflakeTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/snowflake/testCall.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCall.java similarity index 94% rename from src/test/java/snowflake/testCall.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testCall.java index 4ddeef82..c87a5363 100644 --- a/src/test/java/snowflake/testCall.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCall.java @@ -1,21 +1,21 @@ -package snowflake; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCallStatement; -import junit.framework.TestCase; - -public class testCall extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CALL stproc1(SELECT COUNT(*) FROM stproc_test_table1);"; - assertTrue(sqlparser.parse() == 0); - - TCallStatement callStatement = (TCallStatement)sqlparser.sqlstatements.get(0); -// System.out.println(callStatement.getArgs().size()); - assertTrue(callStatement.getArgs().size() == 1); - assertTrue(callStatement.getArgs().getExpression(0).getExpressionType() == EExpressionType.subquery_t); - } -} +package gudusoft.gsqlparser.snowflakeTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCallStatement; +import junit.framework.TestCase; + +public class testCall extends TestCase { + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CALL stproc1(SELECT COUNT(*) FROM stproc_test_table1);"; + assertTrue(sqlparser.parse() == 0); + + TCallStatement callStatement = (TCallStatement)sqlparser.sqlstatements.get(0); +// System.out.println(callStatement.getArgs().size()); + assertTrue(callStatement.getArgs().size() == 1); + assertTrue(callStatement.getArgs().getExpression(0).getExpressionType() == EExpressionType.subquery_t); + } +} diff --git a/src/test/java/snowflake/testClusterBy.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testClusterBy.java similarity index 97% rename from src/test/java/snowflake/testClusterBy.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testClusterBy.java index 9da5e980..541a20bd 100644 --- a/src/test/java/snowflake/testClusterBy.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testClusterBy.java @@ -1,6 +1,5 @@ -package snowflake; +package gudusoft.gsqlparser.snowflakeTest; -import demos.columnInClause; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.*; import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; diff --git a/src/test/java/snowflake/testCopyInto.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCopyInto.java similarity index 98% rename from src/test/java/snowflake/testCopyInto.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testCopyInto.java index b5136566..f2a69943 100644 --- a/src/test/java/snowflake/testCopyInto.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCopyInto.java @@ -1,148 +1,148 @@ -package snowflake; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TStageLocation; -import gudusoft.gsqlparser.stmt.snowflake.TSnowflakeCopyIntoStmt; -import junit.framework.TestCase; - -public class testCopyInto extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into mycsvtable\n" + - " from @my_csv_stage/tutorials/dataloading/contacts1.csv\n" + - " on_error = 'skip_file';"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mycsvtable")); - TStageLocation stageLocation = copyIntoStmt.getStageLocation(); - assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalNamed); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("my_csv_stage")); - assertTrue(stageLocation.getPath().toString().equals("/tutorials/dataloading/contacts1.csv")); - // System.out.println(stageLocation.getPath()); - } - - public void testPattern(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into mycsvtable\n" + - " from @my_csv_stage/tutorials/dataloading/\n" + - " pattern='.*contacts[1-5].csv'\n" + - " on_error = 'skip_file';"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mycsvtable")); - TStageLocation stageLocation = copyIntoStmt.getStageLocation(); - assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalNamed); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("my_csv_stage")); - assertTrue(stageLocation.getPath().toString().equals("/tutorials/dataloading")); - assertTrue(copyIntoStmt.getRegex_pattern().equalsIgnoreCase("'.*contacts[1-5].csv'")); - } - - public void testFileFormat(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into mytable from @~/staged\n" + - "file_format = (format_name = 'mycsv');"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); - TStageLocation stageLocation = copyIntoStmt.getStageLocation(); - assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalUser); - //assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("~")); - assertTrue(stageLocation.getPath().toString().equals("/staged")); - assertTrue(copyIntoStmt.getFileFormatName().equalsIgnoreCase("'mycsv'")); - } - - public void testFileFormatType(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into mytable from @~/staged\n" + - "file_format = (type = csv);"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); - assertTrue(copyIntoStmt.getFileFormatType().equalsIgnoreCase("csv")); - } - - public void testFromS3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into mytable\n" + - " from 's3://mybucket/data/files'\n" + - " storage_integration = myint\n" + - " encryption=(master_key = 'eSxX0jzYfIamtnBKOEOwq80Au6NbSgPH5r4BDDwOaO8=')\n" + - " file_format = (format_name = my_csv_format);"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); - - TStageLocation stageLocation = copyIntoStmt.getStageLocation(); - assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.location); - - - assertTrue(copyIntoStmt.getStageLocation().getExternalLocation().toString().equalsIgnoreCase("'s3://mybucket/data/files'")); - assertTrue(copyIntoStmt.getFileFormatName().equalsIgnoreCase("my_csv_format")); - } - - public void testFromFiles(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into load1 from @%load1/data1/\n" + - " files=('test1.csv', 'test2.csv')\n" + - " force=true;"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("load1")); - TStageLocation stageLocation = copyIntoStmt.getStageLocation(); - assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalTable); - - assertTrue(copyIntoStmt.getStageLocation().getTableName().toString().equalsIgnoreCase("load1")); - assertTrue(copyIntoStmt.getStageLocation().getPath().toString().equalsIgnoreCase("/data1")); - assertTrue(copyIntoStmt.getFileList().size()==2); - assertTrue(copyIntoStmt.getFileList().get(0).equalsIgnoreCase("'test1.csv'")); - assertTrue(copyIntoStmt.getFileList().get(1).equalsIgnoreCase("'test2.csv'")); - } - - public void testIntoLocation(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into 's3://mybucket/unload/'\n" + - " from mytable\n" + - " credentials = (aws_key_id='xxxx' aws_secret_key='xxxxx' aws_token='xxxxxx')\n" + - " file_format = (format_name = my_csv_format);"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_LOCATION); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); - assertTrue(copyIntoStmt.getStageLocation().getExternalLocation().toString().equalsIgnoreCase("'s3://mybucket/unload/'")); - } - - public void testStage(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into \"IT\".\"SHARED_SOURCE\".\"AWS_S3_IT_SHARED_SOURCE_SOURCE_JIRA_RISK\"\n" + - "from\n" + - " (\n" + - " SELECT\n" + - " $1 AS RAW,\n" + - " METADATA$FILENAME AS FILE_NAME,\n" + - " CURRENT_TIMESTAMP() AS ETL_LOAD_TIMESTAMP,\n" + - " METADATA$FILE_LAST_MODIFIED AS S3_ARRIVAL_TIMESTAMP\n" + - " FROM\n" + - " @ \"IT\".\"SHARED_SOURCE\".\"AWS_S3_IT_SHARED_SOURCE_SOURCE_JIRA_RISK\" /\n" + - " ) file_format = (TYPE = JSON COMPRESSION = NONE) pattern = '.*.json'"; - assertTrue(sqlparser.parse() == 0); - - } - - -} +package gudusoft.gsqlparser.snowflakeTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TStageLocation; +import gudusoft.gsqlparser.stmt.snowflake.TSnowflakeCopyIntoStmt; +import junit.framework.TestCase; + +public class testCopyInto extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "copy into mycsvtable\n" + + " from @my_csv_stage/tutorials/dataloading/contacts1.csv\n" + + " on_error = 'skip_file';"; + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); + assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); + assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mycsvtable")); + TStageLocation stageLocation = copyIntoStmt.getStageLocation(); + assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalNamed); + assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("my_csv_stage")); + assertTrue(stageLocation.getPath().toString().equals("/tutorials/dataloading/contacts1.csv")); + // System.out.println(stageLocation.getPath()); + } + + public void testPattern(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "copy into mycsvtable\n" + + " from @my_csv_stage/tutorials/dataloading/\n" + + " pattern='.*contacts[1-5].csv'\n" + + " on_error = 'skip_file';"; + assertTrue(sqlparser.parse() == 0); + + TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); + assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); + assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mycsvtable")); + TStageLocation stageLocation = copyIntoStmt.getStageLocation(); + assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalNamed); + assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("my_csv_stage")); + assertTrue(stageLocation.getPath().toString().equals("/tutorials/dataloading")); + assertTrue(copyIntoStmt.getRegex_pattern().equalsIgnoreCase("'.*contacts[1-5].csv'")); + } + + public void testFileFormat(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "copy into mytable from @~/staged\n" + + "file_format = (format_name = 'mycsv');"; + assertTrue(sqlparser.parse() == 0); + + TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); + assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); + assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); + TStageLocation stageLocation = copyIntoStmt.getStageLocation(); + assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalUser); + //assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("~")); + assertTrue(stageLocation.getPath().toString().equals("/staged")); + assertTrue(copyIntoStmt.getFileFormatName().equalsIgnoreCase("'mycsv'")); + } + + public void testFileFormatType(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "copy into mytable from @~/staged\n" + + "file_format = (type = csv);"; + assertTrue(sqlparser.parse() == 0); + + TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); + assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); + assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); + assertTrue(copyIntoStmt.getFileFormatType().equalsIgnoreCase("csv")); + } + + public void testFromS3(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "copy into mytable\n" + + " from 's3://mybucket/data/files'\n" + + " storage_integration = myint\n" + + " encryption=(master_key = 'eSxX0jzYfIamtnBKOEOwq80Au6NbSgPH5r4BDDwOaO8=')\n" + + " file_format = (format_name = my_csv_format);"; + assertTrue(sqlparser.parse() == 0); + + TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); + assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); + assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); + + TStageLocation stageLocation = copyIntoStmt.getStageLocation(); + assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.location); + + + assertTrue(copyIntoStmt.getStageLocation().getExternalLocation().toString().equalsIgnoreCase("'s3://mybucket/data/files'")); + assertTrue(copyIntoStmt.getFileFormatName().equalsIgnoreCase("my_csv_format")); + } + + public void testFromFiles(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "copy into load1 from @%load1/data1/\n" + + " files=('test1.csv', 'test2.csv')\n" + + " force=true;"; + assertTrue(sqlparser.parse() == 0); + + TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); + assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); + assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("load1")); + TStageLocation stageLocation = copyIntoStmt.getStageLocation(); + assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalTable); + + assertTrue(copyIntoStmt.getStageLocation().getTableName().toString().equalsIgnoreCase("load1")); + assertTrue(copyIntoStmt.getStageLocation().getPath().toString().equalsIgnoreCase("/data1")); + assertTrue(copyIntoStmt.getFileList().size()==2); + assertTrue(copyIntoStmt.getFileList().get(0).equalsIgnoreCase("'test1.csv'")); + assertTrue(copyIntoStmt.getFileList().get(1).equalsIgnoreCase("'test2.csv'")); + } + + public void testIntoLocation(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "copy into 's3://mybucket/unload/'\n" + + " from mytable\n" + + " credentials = (aws_key_id='xxxx' aws_secret_key='xxxxx' aws_token='xxxxxx')\n" + + " file_format = (format_name = my_csv_format);"; + assertTrue(sqlparser.parse() == 0); + + TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); + assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_LOCATION); + assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); + assertTrue(copyIntoStmt.getStageLocation().getExternalLocation().toString().equalsIgnoreCase("'s3://mybucket/unload/'")); + } + + public void testStage(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "copy into \"IT\".\"SHARED_SOURCE\".\"AWS_S3_IT_SHARED_SOURCE_SOURCE_JIRA_RISK\"\n" + + "from\n" + + " (\n" + + " SELECT\n" + + " $1 AS RAW,\n" + + " METADATA$FILENAME AS FILE_NAME,\n" + + " CURRENT_TIMESTAMP() AS ETL_LOAD_TIMESTAMP,\n" + + " METADATA$FILE_LAST_MODIFIED AS S3_ARRIVAL_TIMESTAMP\n" + + " FROM\n" + + " @ \"IT\".\"SHARED_SOURCE\".\"AWS_S3_IT_SHARED_SOURCE_SOURCE_JIRA_RISK\" /\n" + + " ) file_format = (TYPE = JSON COMPRESSION = NONE) pattern = '.*.json'"; + assertTrue(sqlparser.parse() == 0); + + } + + +} diff --git a/src/test/java/snowflake/testCreateExternalTable.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateExternalTable.java similarity index 98% rename from src/test/java/snowflake/testCreateExternalTable.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateExternalTable.java index 22a70bab..509012dc 100644 --- a/src/test/java/snowflake/testCreateExternalTable.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateExternalTable.java @@ -1,128 +1,128 @@ -package snowflake; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TStageLocation; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateExternalTable extends TestCase { - - public void testAmazonS3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace external table ext_twitter_feed\n" + - " with location = @mystage/daily/\n" + - " auto_refresh = true\n" + - " file_format = (type = parquet)\n" + - " pattern='.*sales.*[.]parquet';"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("ext_twitter_feed")); - TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("mystage")); - assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("daily")); - assertTrue(createTableSqlStatement.getRegex_pattern().equalsIgnoreCase("'.*sales.*[.]parquet'")); - assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); - // System.out.println(stageLocation.getStageName().toString()); - } - - public void testMicrosoftAzure(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace external table ext_twitter_feed\n" + - " integration = 'MY_AZURE_INT'\n" + - " with location = @mystage/daily/\n" + - " auto_refresh = true\n" + - " file_format = (type = parquet)\n" + - " pattern='.*sales.*[.]parquet';"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("ext_twitter_feed")); - TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("mystage")); - assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("daily")); - assertTrue(createTableSqlStatement.getRegex_pattern().equalsIgnoreCase("'.*sales.*[.]parquet'")); - assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); - // System.out.println(stageLocation.getStageName().toString()); - } - - public void testAmazonS3partitionedTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create external table exttable_part(\n" + - " date_part date as to_date(split_part(metadata$filename, '/', 3)\n" + - " || '/' || split_part(metadata$filename, '/', 4)\n" + - " || '/' || split_part(metadata$filename, '/', 5), 'YYYY/MM/DD'),\n" + - " timestamp bigint as (value:timestamp::bigint),\n" + - " col2 varchar as (value:col2::varchar))\n" + - " partition by (date_part)\n" + - " location=@exttable_part_stage/logs/\n" + - " auto_refresh = true\n" + - " file_format = (type = parquet);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("exttable_part")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(0).getColumnName().toString().equalsIgnoreCase("date_part")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(1).getColumnName().toString().equalsIgnoreCase("timestamp")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(2).getColumnName().toString().equalsIgnoreCase("col2")); - TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("exttable_part_stage")); - assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("logs")); - assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); - assertTrue(createTableSqlStatement.getPartitionColumnList().getObjectName(0).toString().equalsIgnoreCase("date_part")); - // System.out.println(stageLocation.getStageName().toString()); - } - - public void testMicrosoftAzurepartitionedTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create external table exttable_part(\n" + - " date_part date as to_date(split_part(metadata$filename, '/', 3)\n" + - " || '/' || split_part(metadata$filename, '/', 4)\n" + - " || '/' || split_part(metadata$filename, '/', 5), 'YYYY/MM/DD'),\n" + - " timestamp bigint as (value:timestamp::bigint),\n" + - " col2 varchar as (value:col2::varchar))\n" + - " partition by (date_part)\n" + - " integration = 'MY_INT'\n" + - " location=@exttable_part_stage/logs/\n" + - " auto_refresh = true\n" + - " file_format = (type = parquet);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("exttable_part")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(0).getColumnName().toString().equalsIgnoreCase("date_part")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(1).getColumnName().toString().equalsIgnoreCase("timestamp")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(2).getColumnName().toString().equalsIgnoreCase("col2")); - TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("exttable_part_stage")); - assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("logs")); - assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); - assertTrue(createTableSqlStatement.getPartitionColumnList().getObjectName(0).toString().equalsIgnoreCase("date_part")); - // System.out.println(stageLocation.getStageName().toString()); - } - - public void testAWSJson(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace external table ext_table\n" + - " with location = @mystage/path1/\n" + - " file_format = (type = json)\n" + - " aws_sns_topic = 'arn:aws:sns:us-west-2:001234567890:s3_mybucket';"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("ext_table")); - TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("mystage")); - assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("path1")); - assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("json")); - assertTrue(createTableSqlStatement.getAwsSnsTopic().equalsIgnoreCase("'arn:aws:sns:us-west-2:001234567890:s3_mybucket'")); - // System.out.println(stageLocation.getStageName().toString()); - } - -} +package gudusoft.gsqlparser.snowflakeTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TStageLocation; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; +import junit.framework.TestCase; + +public class testCreateExternalTable extends TestCase { + + public void testAmazonS3(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace external table ext_twitter_feed\n" + + " with location = @mystage/daily/\n" + + " auto_refresh = true\n" + + " file_format = (type = parquet)\n" + + " pattern='.*sales.*[.]parquet';"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTableSqlStatement.isExternal()); + assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("ext_twitter_feed")); + TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); + assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("mystage")); + assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("daily")); + assertTrue(createTableSqlStatement.getRegex_pattern().equalsIgnoreCase("'.*sales.*[.]parquet'")); + assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); + // System.out.println(stageLocation.getStageName().toString()); + } + + public void testMicrosoftAzure(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace external table ext_twitter_feed\n" + + " integration = 'MY_AZURE_INT'\n" + + " with location = @mystage/daily/\n" + + " auto_refresh = true\n" + + " file_format = (type = parquet)\n" + + " pattern='.*sales.*[.]parquet';"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTableSqlStatement.isExternal()); + assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("ext_twitter_feed")); + TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); + assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("mystage")); + assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("daily")); + assertTrue(createTableSqlStatement.getRegex_pattern().equalsIgnoreCase("'.*sales.*[.]parquet'")); + assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); + // System.out.println(stageLocation.getStageName().toString()); + } + + public void testAmazonS3partitionedTable(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create external table exttable_part(\n" + + " date_part date as to_date(split_part(metadata$filename, '/', 3)\n" + + " || '/' || split_part(metadata$filename, '/', 4)\n" + + " || '/' || split_part(metadata$filename, '/', 5), 'YYYY/MM/DD'),\n" + + " timestamp bigint as (value:timestamp::bigint),\n" + + " col2 varchar as (value:col2::varchar))\n" + + " partition by (date_part)\n" + + " location=@exttable_part_stage/logs/\n" + + " auto_refresh = true\n" + + " file_format = (type = parquet);"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTableSqlStatement.isExternal()); + assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("exttable_part")); + assertTrue(createTableSqlStatement.getColumnList().getColumn(0).getColumnName().toString().equalsIgnoreCase("date_part")); + assertTrue(createTableSqlStatement.getColumnList().getColumn(1).getColumnName().toString().equalsIgnoreCase("timestamp")); + assertTrue(createTableSqlStatement.getColumnList().getColumn(2).getColumnName().toString().equalsIgnoreCase("col2")); + TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); + assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("exttable_part_stage")); + assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("logs")); + assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); + assertTrue(createTableSqlStatement.getPartitionColumnList().getObjectName(0).toString().equalsIgnoreCase("date_part")); + // System.out.println(stageLocation.getStageName().toString()); + } + + public void testMicrosoftAzurepartitionedTable(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create external table exttable_part(\n" + + " date_part date as to_date(split_part(metadata$filename, '/', 3)\n" + + " || '/' || split_part(metadata$filename, '/', 4)\n" + + " || '/' || split_part(metadata$filename, '/', 5), 'YYYY/MM/DD'),\n" + + " timestamp bigint as (value:timestamp::bigint),\n" + + " col2 varchar as (value:col2::varchar))\n" + + " partition by (date_part)\n" + + " integration = 'MY_INT'\n" + + " location=@exttable_part_stage/logs/\n" + + " auto_refresh = true\n" + + " file_format = (type = parquet);"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTableSqlStatement.isExternal()); + assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("exttable_part")); + assertTrue(createTableSqlStatement.getColumnList().getColumn(0).getColumnName().toString().equalsIgnoreCase("date_part")); + assertTrue(createTableSqlStatement.getColumnList().getColumn(1).getColumnName().toString().equalsIgnoreCase("timestamp")); + assertTrue(createTableSqlStatement.getColumnList().getColumn(2).getColumnName().toString().equalsIgnoreCase("col2")); + TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); + assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("exttable_part_stage")); + assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("logs")); + assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); + assertTrue(createTableSqlStatement.getPartitionColumnList().getObjectName(0).toString().equalsIgnoreCase("date_part")); + // System.out.println(stageLocation.getStageName().toString()); + } + + public void testAWSJson(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace external table ext_table\n" + + " with location = @mystage/path1/\n" + + " file_format = (type = json)\n" + + " aws_sns_topic = 'arn:aws:sns:us-west-2:001234567890:s3_mybucket';"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTableSqlStatement.isExternal()); + assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("ext_table")); + TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); + assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("mystage")); + assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("path1")); + assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("json")); + assertTrue(createTableSqlStatement.getAwsSnsTopic().equalsIgnoreCase("'arn:aws:sns:us-west-2:001234567890:s3_mybucket'")); + // System.out.println(stageLocation.getStageName().toString()); + } + +} diff --git a/src/test/java/snowflake/testCreateFileFormat.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFileFormat.java similarity index 96% rename from src/test/java/snowflake/testCreateFileFormat.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFileFormat.java index 6078db01..0fd82fea 100644 --- a/src/test/java/snowflake/testCreateFileFormat.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFileFormat.java @@ -1,37 +1,37 @@ -package snowflake; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.snowflake.TCreateFileFormatStmt; -import junit.framework.TestCase; - -public class testCreateFileFormat extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE FILE FORMAT IF NOT EXISTS TestFormat11\n" + - "TYPE = CSV\n" + - "FIELD_DELIMITER = 'c';"; - assertTrue(sqlparser.parse() == 0); - - TCreateFileFormatStmt createFileFormatStmt = (TCreateFileFormatStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFileFormatStmt.getFileFormatName().toString().equalsIgnoreCase("TestFormat11")); - assertTrue(createFileFormatStmt.getFormatOptions().toString().trim().equalsIgnoreCase("TYPE = CSV\n" + - "FIELD_DELIMITER = 'c'")); - assertTrue(createFileFormatStmt.getTypeName().equalsIgnoreCase("CSV")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE FILE FORMAT IF NOT EXISTS TestFormat\n" + - "TYPE = CSV\n" + - "COMMENT = 'Test comment';"; - assertTrue(sqlparser.parse() == 0); - - TCreateFileFormatStmt createFileFormatStmt = (TCreateFileFormatStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFileFormatStmt.getFileFormatName().toString().equalsIgnoreCase("TestFormat")); - assertTrue(createFileFormatStmt.getFormatOptions().toString().trim().equalsIgnoreCase("TYPE = CSV\n" + - "COMMENT = 'Test comment'")); - //System.out.println(createFileFormatStmt.getFormatOptions().toString().trim()); - } -} +package gudusoft.gsqlparser.snowflakeTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.snowflake.TCreateFileFormatStmt; +import junit.framework.TestCase; + +public class testCreateFileFormat extends TestCase { + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE FILE FORMAT IF NOT EXISTS TestFormat11\n" + + "TYPE = CSV\n" + + "FIELD_DELIMITER = 'c';"; + assertTrue(sqlparser.parse() == 0); + + TCreateFileFormatStmt createFileFormatStmt = (TCreateFileFormatStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFileFormatStmt.getFileFormatName().toString().equalsIgnoreCase("TestFormat11")); + assertTrue(createFileFormatStmt.getFormatOptions().toString().trim().equalsIgnoreCase("TYPE = CSV\n" + + "FIELD_DELIMITER = 'c'")); + assertTrue(createFileFormatStmt.getTypeName().equalsIgnoreCase("CSV")); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE FILE FORMAT IF NOT EXISTS TestFormat\n" + + "TYPE = CSV\n" + + "COMMENT = 'Test comment';"; + assertTrue(sqlparser.parse() == 0); + + TCreateFileFormatStmt createFileFormatStmt = (TCreateFileFormatStmt)sqlparser.sqlstatements.get(0); + assertTrue(createFileFormatStmt.getFileFormatName().toString().equalsIgnoreCase("TestFormat")); + assertTrue(createFileFormatStmt.getFormatOptions().toString().trim().equalsIgnoreCase("TYPE = CSV\n" + + "COMMENT = 'Test comment'")); + //System.out.println(createFileFormatStmt.getFormatOptions().toString().trim()); + } +} diff --git a/src/test/java/snowflake/testCreateFunction.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFunction.java similarity index 97% rename from src/test/java/snowflake/testCreateFunction.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFunction.java index 8ebe3ecf..cd7fbb9e 100644 --- a/src/test/java/snowflake/testCreateFunction.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFunction.java @@ -1,154 +1,154 @@ -package snowflake; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.snowflake.TPseudoExprStmt; -import junit.framework.TestCase; - - -public class testCreateFunction extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE or replace FUNCTION function1() RETURNS \n" + - "TABLE (SERIAL_NUM nvarchar, STATUS_CD nvarchar) \n" + - "AS \n" + - "'select SERIAL_NUM, STATUS_CD from s_asset';"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - assertTrue(createFunction.getFunctionDefinition().toString().equalsIgnoreCase("'select SERIAL_NUM, STATUS_CD from s_asset'")); - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("s_asset")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create function profit()\n" + - " returns numeric(11, 2)\n" + - " as\n" + - " $$\n" + - " select sum((retail_price - wholesale_price) * number_sold) from purchases\n" + - " $$\n" + - " ;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("purchases")); - } - - - public void testBodyExpr(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create function pi_udf()\n" + - " returns float\n" + - " as '3.141592654::FLOAT'\n" + - " ;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstSnowflakePseudoExprStmt); - TPseudoExprStmt exprStmt = (TPseudoExprStmt)createFunction.getBodyStatements().get(0); - assertTrue(exprStmt.getExpr().toString().equalsIgnoreCase("3.141592654::FLOAT")); - assertTrue(exprStmt.getExpr().getExpressionType() == EExpressionType.typecast_t); - - } - - public void testJavascript(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace function js_factorial(d double)\n" + - " returns double\n" + - " language javascript\n" + - " strict\n" + - " as '\n" + - " if (D <= 0) {\n" + - " return 1;\n" + - " } else {\n" + - " var result = 1;\n" + - " for (var i = 2; i <= D; i++) {\n" + - " result = result * i;\n" + - " }\n" + - " return result;\n" + - " }\n" + - " ';" + - " ;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("js_factorial")); - assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("javascript")); - assertTrue(createFunction.getRoutineBody().equalsIgnoreCase("'\n" + - " if (D <= 0) {\n" + - " return 1;\n" + - " } else {\n" + - " var result = 1;\n" + - " for (var i = 2; i <= D; i++) {\n" + - " result = result * i;\n" + - " }\n" + - " return result;\n" + - " }\n" + - " '")); - - } - - public void testUnion(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create function simple_table_function ()\n" + - " returns table (x integer, y integer)\n" + - " as\n" + - " $$\n" + - " select 1, 2\n" + - " union all\n" + - " select 3, 4\n" + - " $$\n" + - " ;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - assertTrue(selectSqlStatement.getSetOperatorType() == ESetOperatorType.union); - // assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("purchases")); - } - - public void testLanguageSQL(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE\n" + - "FUNCTION UTIL_DB.PUBLIC.SFWHO() RETURNS TABLE (TS TIMESTAMP_LTZ(9), ACCOUNT VARCHAR(16777216)\n" + - "\t, USER VARCHAR(16777216), ROLE VARCHAR(16777216), DATABASE VARCHAR(16777216), SCHEMA VARCHAR(16777216), WAREHOUSE VARCHAR(16777216)) LANGUAGE SQL AS 'select\n" + - " current_timestamp(),\n" + - " current_account(),\n" + - " current_user(),\n" + - " current_role(),\n" + - " current_database(),\n" + - " current_schema(),\n" + - " current_warehouse()\n" + - " ';"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - assertTrue(selectSqlStatement.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("current_timestamp()")); - } - +package gudusoft.gsqlparser.snowflakeTest; + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import gudusoft.gsqlparser.stmt.snowflake.TPseudoExprStmt; +import junit.framework.TestCase; + + +public class testCreateFunction extends TestCase { + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE or replace FUNCTION function1() RETURNS \n" + + "TABLE (SERIAL_NUM nvarchar, STATUS_CD nvarchar) \n" + + "AS \n" + + "'select SERIAL_NUM, STATUS_CD from s_asset';"; + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; + assertTrue(createFunction.getFunctionDefinition().toString().equalsIgnoreCase("'select SERIAL_NUM, STATUS_CD from s_asset'")); + assertTrue(createFunction.getBodyStatements().size() == 1); + assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); + assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("s_asset")); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create function profit()\n" + + " returns numeric(11, 2)\n" + + " as\n" + + " $$\n" + + " select sum((retail_price - wholesale_price) * number_sold) from purchases\n" + + " $$\n" + + " ;"; + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; + + assertTrue(createFunction.getBodyStatements().size() == 1); + assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); + assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("purchases")); + } + + + public void testBodyExpr(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create function pi_udf()\n" + + " returns float\n" + + " as '3.141592654::FLOAT'\n" + + " ;"; + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; + + assertTrue(createFunction.getBodyStatements().size() == 1); + assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstSnowflakePseudoExprStmt); + TPseudoExprStmt exprStmt = (TPseudoExprStmt)createFunction.getBodyStatements().get(0); + assertTrue(exprStmt.getExpr().toString().equalsIgnoreCase("3.141592654::FLOAT")); + assertTrue(exprStmt.getExpr().getExpressionType() == EExpressionType.typecast_t); + + } + + public void testJavascript(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace function js_factorial(d double)\n" + + " returns double\n" + + " language javascript\n" + + " strict\n" + + " as '\n" + + " if (D <= 0) {\n" + + " return 1;\n" + + " } else {\n" + + " var result = 1;\n" + + " for (var i = 2; i <= D; i++) {\n" + + " result = result * i;\n" + + " }\n" + + " return result;\n" + + " }\n" + + " ';" + + " ;"; + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; + assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("js_factorial")); + assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("javascript")); + assertTrue(createFunction.getRoutineBody().equalsIgnoreCase("'\n" + + " if (D <= 0) {\n" + + " return 1;\n" + + " } else {\n" + + " var result = 1;\n" + + " for (var i = 2; i <= D; i++) {\n" + + " result = result * i;\n" + + " }\n" + + " return result;\n" + + " }\n" + + " '")); + + } + + public void testUnion(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create function simple_table_function ()\n" + + " returns table (x integer, y integer)\n" + + " as\n" + + " $$\n" + + " select 1, 2\n" + + " union all\n" + + " select 3, 4\n" + + " $$\n" + + " ;"; + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; + + assertTrue(createFunction.getBodyStatements().size() == 1); + assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); + assertTrue(selectSqlStatement.getSetOperatorType() == ESetOperatorType.union); + // assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("purchases")); + } + + public void testLanguageSQL(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE OR REPLACE\n" + + "FUNCTION UTIL_DB.PUBLIC.SFWHO() RETURNS TABLE (TS TIMESTAMP_LTZ(9), ACCOUNT VARCHAR(16777216)\n" + + "\t, USER VARCHAR(16777216), ROLE VARCHAR(16777216), DATABASE VARCHAR(16777216), SCHEMA VARCHAR(16777216), WAREHOUSE VARCHAR(16777216)) LANGUAGE SQL AS 'select\n" + + " current_timestamp(),\n" + + " current_account(),\n" + + " current_user(),\n" + + " current_role(),\n" + + " current_database(),\n" + + " current_schema(),\n" + + " current_warehouse()\n" + + " ';"; + assertTrue(sqlparser.parse() == 0); + TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); + assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); + TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; + + assertTrue(createFunction.getBodyStatements().size() == 1); + assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); + assertTrue(selectSqlStatement.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("current_timestamp()")); + } + } \ No newline at end of file diff --git a/src/test/java/snowflake/testCreateMaterializeView.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateMaterializeView.java similarity index 95% rename from src/test/java/snowflake/testCreateMaterializeView.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateMaterializeView.java index 9503707a..3ac94ee3 100644 --- a/src/test/java/snowflake/testCreateMaterializeView.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateMaterializeView.java @@ -1,22 +1,22 @@ -package snowflake; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateMaterializedSqlStatement; -import junit.framework.TestCase; - -public class testCreateMaterializeView extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create materialized view exttable_part_mv\n" + - " as\n" + - " select col2 from exttable_part;"; - assertTrue(sqlparser.parse() == 0); - - TCreateMaterializedSqlStatement createMaterializedSqlStatement = (TCreateMaterializedSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createMaterializedSqlStatement.getViewName().toString().equalsIgnoreCase("exttable_part_mv")); - assertTrue(createMaterializedSqlStatement.getSubquery().getTables().getTable(0).toString().equalsIgnoreCase("exttable_part")); - // System.out.println(stageLocation.getStageName().toString()); - } -} +package gudusoft.gsqlparser.snowflakeTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateMaterializedSqlStatement; +import junit.framework.TestCase; + +public class testCreateMaterializeView extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create materialized view exttable_part_mv\n" + + " as\n" + + " select col2 from exttable_part;"; + assertTrue(sqlparser.parse() == 0); + + TCreateMaterializedSqlStatement createMaterializedSqlStatement = (TCreateMaterializedSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createMaterializedSqlStatement.getViewName().toString().equalsIgnoreCase("exttable_part_mv")); + assertTrue(createMaterializedSqlStatement.getSubquery().getTables().getTable(0).toString().equalsIgnoreCase("exttable_part")); + // System.out.println(stageLocation.getStageName().toString()); + } +} diff --git a/src/test/java/snowflake/testCreateStage.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStage.java similarity index 97% rename from src/test/java/snowflake/testCreateStage.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStage.java index 9c91aad9..769303eb 100644 --- a/src/test/java/snowflake/testCreateStage.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStage.java @@ -1,100 +1,100 @@ -package snowflake; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.snowflake.TCreateStageStmt; -import junit.framework.TestCase; - -public class testCreateStage extends TestCase { - - public void testQualified(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage STAGING.stage_07020728_MOCK_DATA_2"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageNameOnly().equalsIgnoreCase("stage_07020728_MOCK_DATA_2")); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("STAGING.stage_07020728_MOCK_DATA_2")); - assertTrue(createStageStmt.getNameSpace().toString().equalsIgnoreCase("STAGING")); - assertTrue(createStageStmt.getNameSpace().getSchemaToken().toString().equalsIgnoreCase("STAGING")); - } - - public void testQualified2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage DATAMAX_ETL.STAGING.stage_07020728_MOCK_DATA_2"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageNameOnly().equalsIgnoreCase("stage_07020728_MOCK_DATA_2")); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("DATAMAX_ETL.STAGING.stage_07020728_MOCK_DATA_2")); - assertTrue(createStageStmt.getNameSpace().toString().equalsIgnoreCase("DATAMAX_ETL.STAGING")); - assertTrue(createStageStmt.getNameSpace().getDatabaseToken().toString().equalsIgnoreCase("DATAMAX_ETL")); - assertTrue(createStageStmt.getNameSpace().getSchemaToken().toString().equalsIgnoreCase("STAGING")); - } - - public void testAmazonS3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage my_int_stage\n" + - " copy_options = (on_error='skip_file');"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_int_stage")); - // System.out.println(stageLocation.getStageName().toString()); - } - - public void testGoogleCloud(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage my_ext_stage\n" + - " url='gcs://load/files/'\n" + - " storage_integration = myint;"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_ext_stage")); - assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'gcs://load/files/'")); - } - - public void testMicrosoftAzure(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage my_ext_stage\n" + - " url='azure://myaccount.blob.core.windows.net/load/files/'\n" + - " storage_integration = myint;"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_ext_stage")); - assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'azure://myaccount.blob.core.windows.net/load/files/'")); - } - - public void testMicrosoftAzureFileFormat(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage mystage\n" + - " url='azure://myaccount.blob.core.windows.net/mycontainer/files/'\n" + - " credentials=(azure_sas_token='?sv=2016-05-31&ss=b&srt=sco&sp=rwdl&se=2018-06-27T10:05:50Z&st=2017-06-27T02:05:50Z&spr=https,http&sig=bgqQwoXwxzuD2GJfagRg7VOS8hzNr3QLT7rhS8OFRLQ%3D')\n" + - " encryption=(type='AZURE_CSE' master_key = 'kPxX0jzYfIamtnJEUTHwq80Au6NbSgPH5r4BDDwOaO8=')\n" + - " file_format = ( FORMAT_NAME = my_csv_format);"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("mystage")); - assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'azure://myaccount.blob.core.windows.net/mycontainer/files/'")); - assertTrue(createStageStmt.getFileFormatName().equalsIgnoreCase("my_csv_format")); - } - - - public void testAmazonS3FileFormat(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage my_csv_stage\n" + - " file_format = mycsvformat\n" + - " url = 's3://snowflake-docs';"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_csv_stage")); - assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'s3://snowflake-docs'")); - assertTrue(createStageStmt.getFileFormatName().equalsIgnoreCase("mycsvformat")); - // System.out.println(stageLocation.getStageName().toString()); - } - -} +package gudusoft.gsqlparser.snowflakeTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.snowflake.TCreateStageStmt; +import junit.framework.TestCase; + +public class testCreateStage extends TestCase { + + public void testQualified(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace stage STAGING.stage_07020728_MOCK_DATA_2"; + assertTrue(sqlparser.parse() == 0); + + TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); + assertTrue(createStageStmt.getStageNameOnly().equalsIgnoreCase("stage_07020728_MOCK_DATA_2")); + assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("STAGING.stage_07020728_MOCK_DATA_2")); + assertTrue(createStageStmt.getNameSpace().toString().equalsIgnoreCase("STAGING")); + assertTrue(createStageStmt.getNameSpace().getSchemaToken().toString().equalsIgnoreCase("STAGING")); + } + + public void testQualified2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace stage DATAMAX_ETL.STAGING.stage_07020728_MOCK_DATA_2"; + assertTrue(sqlparser.parse() == 0); + + TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); + assertTrue(createStageStmt.getStageNameOnly().equalsIgnoreCase("stage_07020728_MOCK_DATA_2")); + assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("DATAMAX_ETL.STAGING.stage_07020728_MOCK_DATA_2")); + assertTrue(createStageStmt.getNameSpace().toString().equalsIgnoreCase("DATAMAX_ETL.STAGING")); + assertTrue(createStageStmt.getNameSpace().getDatabaseToken().toString().equalsIgnoreCase("DATAMAX_ETL")); + assertTrue(createStageStmt.getNameSpace().getSchemaToken().toString().equalsIgnoreCase("STAGING")); + } + + public void testAmazonS3(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace stage my_int_stage\n" + + " copy_options = (on_error='skip_file');"; + assertTrue(sqlparser.parse() == 0); + + TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); + assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_int_stage")); + // System.out.println(stageLocation.getStageName().toString()); + } + + public void testGoogleCloud(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace stage my_ext_stage\n" + + " url='gcs://load/files/'\n" + + " storage_integration = myint;"; + assertTrue(sqlparser.parse() == 0); + + TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); + assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_ext_stage")); + assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'gcs://load/files/'")); + } + + public void testMicrosoftAzure(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace stage my_ext_stage\n" + + " url='azure://myaccount.blob.core.windows.net/load/files/'\n" + + " storage_integration = myint;"; + assertTrue(sqlparser.parse() == 0); + + TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); + assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_ext_stage")); + assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'azure://myaccount.blob.core.windows.net/load/files/'")); + } + + public void testMicrosoftAzureFileFormat(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace stage mystage\n" + + " url='azure://myaccount.blob.core.windows.net/mycontainer/files/'\n" + + " credentials=(azure_sas_token='?sv=2016-05-31&ss=b&srt=sco&sp=rwdl&se=2018-06-27T10:05:50Z&st=2017-06-27T02:05:50Z&spr=https,http&sig=bgqQwoXwxzuD2GJfagRg7VOS8hzNr3QLT7rhS8OFRLQ%3D')\n" + + " encryption=(type='AZURE_CSE' master_key = 'kPxX0jzYfIamtnJEUTHwq80Au6NbSgPH5r4BDDwOaO8=')\n" + + " file_format = ( FORMAT_NAME = my_csv_format);"; + assertTrue(sqlparser.parse() == 0); + + TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); + assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("mystage")); + assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'azure://myaccount.blob.core.windows.net/mycontainer/files/'")); + assertTrue(createStageStmt.getFileFormatName().equalsIgnoreCase("my_csv_format")); + } + + + public void testAmazonS3FileFormat(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace stage my_csv_stage\n" + + " file_format = mycsvformat\n" + + " url = 's3://snowflake-docs';"; + assertTrue(sqlparser.parse() == 0); + + TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); + assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_csv_stage")); + assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'s3://snowflake-docs'")); + assertTrue(createStageStmt.getFileFormatName().equalsIgnoreCase("mycsvformat")); + // System.out.println(stageLocation.getStageName().toString()); + } + +} diff --git a/src/test/java/snowflake/testCreateStream.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStream.java similarity index 96% rename from src/test/java/snowflake/testCreateStream.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStream.java index 0d9afea1..9baca15f 100644 --- a/src/test/java/snowflake/testCreateStream.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStream.java @@ -1,30 +1,30 @@ -package snowflake; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.snowflake.TCreateStreamStmt; -import junit.framework.TestCase; - -public class testCreateStream extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create stream mystream on table mytable before (timestamp => to_timestamp(40*365*86400));"; - assertTrue(sqlparser.parse() == 0); - - TCreateStreamStmt createStreamStmt = (TCreateStreamStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStreamStmt.getStreamName().toString().equalsIgnoreCase("mystream")); - assertTrue(createStreamStmt.getTableName().toString().equalsIgnoreCase("mytable")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create stream my_ext_table_stream on external table my_ext_table insert_only = true;"; - assertTrue(sqlparser.parse() == 0); - - TCreateStreamStmt createStreamStmt = (TCreateStreamStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStreamStmt.getStreamName().toString().equalsIgnoreCase("my_ext_table_stream")); - assertTrue(createStreamStmt.getTableName().toString().equalsIgnoreCase("my_ext_table")); - } -} - +package gudusoft.gsqlparser.snowflakeTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.snowflake.TCreateStreamStmt; +import junit.framework.TestCase; + +public class testCreateStream extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create stream mystream on table mytable before (timestamp => to_timestamp(40*365*86400));"; + assertTrue(sqlparser.parse() == 0); + + TCreateStreamStmt createStreamStmt = (TCreateStreamStmt)sqlparser.sqlstatements.get(0); + assertTrue(createStreamStmt.getStreamName().toString().equalsIgnoreCase("mystream")); + assertTrue(createStreamStmt.getTableName().toString().equalsIgnoreCase("mytable")); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create stream my_ext_table_stream on external table my_ext_table insert_only = true;"; + assertTrue(sqlparser.parse() == 0); + + TCreateStreamStmt createStreamStmt = (TCreateStreamStmt)sqlparser.sqlstatements.get(0); + assertTrue(createStreamStmt.getStreamName().toString().equalsIgnoreCase("my_ext_table_stream")); + assertTrue(createStreamStmt.getTableName().toString().equalsIgnoreCase("my_ext_table")); + } +} + diff --git a/src/test/java/snowflake/testCreateTask.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateTask.java similarity index 99% rename from src/test/java/snowflake/testCreateTask.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateTask.java index 1a8be0af..ed76f02d 100644 --- a/src/test/java/snowflake/testCreateTask.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateTask.java @@ -1,4 +1,4 @@ -package snowflake; +package gudusoft.gsqlparser.snowflakeTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/snowflake/testCreateView.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateView.java similarity index 97% rename from src/test/java/snowflake/testCreateView.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateView.java index 51ce31ef..b75de2d1 100644 --- a/src/test/java/snowflake/testCreateView.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateView.java @@ -1,230 +1,229 @@ -package snowflake; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TViewAliasItem; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.snowflake.TCreateStreamStmt; -import junit.framework.TestCase; - -public class testCreateView extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE VIEW DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW\n" + - " AS\n" + - " SELECT \n" + - " UNCOLLATED_PHRASE,\n" + - " SUBSTRING(UNCOLLATED_PHRASE,1,2) AS substr_val,\n" + - " HASH(UTF8_PHRASE) AS hash_val,\n" + - " ENGLISH_PHRASE,\n" + - " SPANISH_PHRASE AS sp_phrase\n" + - " FROM COLLATION_DEMO;\n" + - "\n" + - "select\n" + - " t.table_catalog as dbName,\n" + - " t.table_schema as schemaName,\n" + - " t.table_name as tableName,\n" + - " case when t.table_type = 'VIEW' then 'true'\n" + - " when t.table_type = 'BASE TABLE' then 'false'\n" + - " else 'false'\n" + - " end as isView,\n" + - " c.column_name,\n" + - " c.data_type,\n" + - " null as comments\n" + - "from\n" + - " \"DEMO_DB\".information_schema.tables t,\n" + - " \"DEMO_DB\".information_schema.columns c\n" + - "where\n" + - " t.table_catalog = c.table_catalog\n" + - " and t.table_schema = c.table_schema\n" + - " and t.table_name = c.table_name\n" + - " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + - "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + - "\n" + - "use database \"DEMO_DB\" ;\n" + - "use database \"DEMO_DB\" ;\n" + - "USE DATABASE DEMO_DB ;\n" + - "SHOW SCHEMAS ;\n" + - "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + - "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + - "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + - "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + - "use database \"DEMO_DB\" ;\n" + - "select *\n" + - "from table(information_schema.query_history())\n" + - "order by start_time;\n" + - "create table collation_demo_qh (\n" + - " uncollated_phrase varchar, \n" + - " utf8_phrase varchar collate 'utf8',\n" + - " english_phrase varchar collate 'en',\n" + - " spanish_phrase varchar collate 'sp'\n" + - " );\n" + - "SELECT * FROM identifier('\"DEMO_DB\".\"PUBLIC\".\"COLLATION_DEMO_QH\"') LIMIT 100;\n" + - "INSERT INTO collation_demo_qh(uncollated_phrase,utf8_phrase,english_phrase,spanish_phrase)\n" + - "SELECT uncollated_phrase,substr_val,english_phrase,sp_phrase from collation_demo_view ;\n" + - "select\n" + - " t.table_catalog as dbName,\n" + - " t.table_schema as schemaName,\n" + - " t.table_name as tableName,\n" + - " case when t.table_type = 'VIEW' then 'true'\n" + - " when t.table_type = 'BASE TABLE' then 'false'\n" + - " else 'false'\n" + - " end as isView,\n" + - " c.column_name,\n" + - " c.data_type,\n" + - " null as comments\n" + - "from\n" + - " \"DEMO_DB\".information_schema.tables t,\n" + - " \"DEMO_DB\".information_schema.columns c\n" + - "where\n" + - " t.table_catalog = c.table_catalog\n" + - " and t.table_schema = c.table_schema\n" + - " and t.table_name = c.table_name\n" + - " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + - "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + - "\n" + - "use database \"DEMO_DB\" ;\n" + - "use database \"DEMO_DB\" ;\n" + - "USE DATABASE DEMO_DB ;\n" + - "SHOW SCHEMAS ;\n" + - "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + - "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + - "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + - "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + - "use database \"DEMO_DB\" ;\n" + - "select\n" + - " t.table_catalog as dbName,\n" + - " t.table_schema as schemaName,\n" + - " t.table_name as tableName,\n" + - " case when t.table_type = 'VIEW' then 'true'\n" + - " when t.table_type = 'BASE TABLE' then 'false'\n" + - " else 'false'\n" + - " end as isView,\n" + - " c.column_name,\n" + - " c.data_type,\n" + - " null as comments\n" + - "from\n" + - " \"DEMO_DB\".information_schema.tables t,\n" + - " \"DEMO_DB\".information_schema.columns c\n" + - "where\n" + - " t.table_catalog = c.table_catalog\n" + - " and t.table_schema = c.table_schema\n" + - " and t.table_name = c.table_name\n" + - " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + - "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + - "\n" + - "use database \"DEMO_DB\" ;\n" + - "use database \"DEMO_DB\" ;\n" + - "USE DATABASE DEMO_DB ;\n" + - "SHOW SCHEMAS ;\n" + - "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + - "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + - "SHOW PROCEDURESd IN DEMO_DB.PUBLIC ;\n" + - "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + - "use database \"DEMO_DB\" ;\n" + - "select *\n" + - "from table(information_schema.query_history())\n" + - "order by start_time;\n" + - "select *\n" + - "from table(information_schema.query_history())\n" + - "order by start_time desc;\n" + - "INSERT INTO collation_demo_qh(uncollated_phrase,utf8_phrase,english_phrase,spanish_phrase)\n" + - "SELECT uncollated_phrase,substr_val,english_phrase,sp_phrase from collation_demo_view ;\n" + - "select *\n" + - "from table(information_schema.query_history())\n" + - "order by start_time desc;\n" + - "select\n" + - " t.table_catalog as dbName,\n" + - " t.table_schema as schemaName,\n" + - " t.table_name as tableName,\n" + - " case when t.table_type = 'VIEW' then 'true'\n" + - " when t.table_type = 'BASE TABLE' then 'false'\n" + - " else 'false'\n" + - " end as isView,\n" + - " c.column_name,\n" + - " c.data_type,\n" + - " null as comments\n" + - "from\n" + - " \"DEMO_DB\".information_schema.tables t,\n" + - " \"DEMO_DB\".information_schema.columns c\n" + - "where\n" + - " t.table_catalog = c.table_catalog\n" + - " and t.table_schema = c.table_schema\n" + - " and t.table_name = c.table_name\n" + - " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + - "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + - "\n" + - "use database \"DEMO_DB\" ;\n" + - "use database \"DEMO_DB\" ;\n" + - "USE DATABASE DEMO_DB ;\n" + - "SHOW SCHEMAS ;\n" + - "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + - "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + - "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + - "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + - "use database \"DEMO_DB\" ;\n" + - "select *\n" + - "from table(information_schema.query_history())\n" + - "order by start_time desc;\n" + - "USE DATABASE DEMO_DB ;\n" + - "SHOW SCHEMAS ;\n" + - "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + - "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + - "use database \"DEMO_DB\" ;"; - //assertTrue(sqlparser.parse() == 0); - sqlparser.parse(); - assertTrue(sqlparser.sqlstatements.size() == 55); - //System.out.println(sqlparser.sqlstatements.size()); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW")); -// assertTrue(createStreamStmt.getStreamName().toString().equalsIgnoreCase("mystream")); -// assertTrue(createStreamStmt.getTableName().toString().equalsIgnoreCase("mytable")); - } - - - public void test2Comment() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE VIEW defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V comment = 'COMMENT'\n" + - "AS ((select EMPLOYEE_ID,FULL_NAME,FIRST_NAME from defaultdatabase.SF_DML.trimmed_employee_SF_Testing))"; - sqlparser.parse(); - assertTrue(sqlparser.sqlstatements.size() == 1); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V")); - assertTrue(createViewSqlStatement.getComment().toString().equalsIgnoreCase("'COMMENT'")); - } - - public void test3Comment() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE VIEW defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V\n" + - "AS (select EMPLOYEE_ID,FULL_NAME,FIRST_NAME from defaultdatabase.SF_DML.trimmed_employee_SF_Testing) comment = 'COMMENT'"; - sqlparser.parse(); - assertTrue(sqlparser.sqlstatements.size() == 1); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V")); - assertTrue(createViewSqlStatement.getComment().toString().equalsIgnoreCase("'COMMENT'")); - } - - public void test4Comment() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace view defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V\n" + - "( ADMIN1 COMMENT 'COLUMN 1',\n" + - "ADMIN2 COMMENT 'COLUMN 2',\n" + - "ADMIN3 COMMENT 'COLUMN 3') COMMENT='COMMENT'\n" + - "as (select EMPLOYEE_ID,FULL_NAME,FIRST_NAME from defaultdatabase.SF_DML.trimmed_employee_SF_Testing);"; - sqlparser.parse(); - assertTrue(sqlparser.sqlstatements.size() == 1); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V")); - assertTrue(createViewSqlStatement.getComment().toString().equalsIgnoreCase("'COMMENT'")); - - TViewAliasItem viewAliasItem = createViewSqlStatement.getViewAliasClause() - .getViewAliasItemList() - .getViewAliasItem(0); - assertTrue(viewAliasItem.getAlias().toString().equalsIgnoreCase("ADMIN1")); - assertTrue(viewAliasItem.getComment().toString().equalsIgnoreCase("'COLUMN 1'")); - } - -} - - +package gudusoft.gsqlparser.snowflakeTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TViewAliasItem; +import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; +import junit.framework.TestCase; + +public class testCreateView extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE OR REPLACE VIEW DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW\n" + + " AS\n" + + " SELECT \n" + + " UNCOLLATED_PHRASE,\n" + + " SUBSTRING(UNCOLLATED_PHRASE,1,2) AS substr_val,\n" + + " HASH(UTF8_PHRASE) AS hash_val,\n" + + " ENGLISH_PHRASE,\n" + + " SPANISH_PHRASE AS sp_phrase\n" + + " FROM COLLATION_DEMO;\n" + + "\n" + + "select\n" + + " t.table_catalog as dbName,\n" + + " t.table_schema as schemaName,\n" + + " t.table_name as tableName,\n" + + " case when t.table_type = 'VIEW' then 'true'\n" + + " when t.table_type = 'BASE TABLE' then 'false'\n" + + " else 'false'\n" + + " end as isView,\n" + + " c.column_name,\n" + + " c.data_type,\n" + + " null as comments\n" + + "from\n" + + " \"DEMO_DB\".information_schema.tables t,\n" + + " \"DEMO_DB\".information_schema.columns c\n" + + "where\n" + + " t.table_catalog = c.table_catalog\n" + + " and t.table_schema = c.table_schema\n" + + " and t.table_name = c.table_name\n" + + " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + + "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + + "\n" + + "use database \"DEMO_DB\" ;\n" + + "use database \"DEMO_DB\" ;\n" + + "USE DATABASE DEMO_DB ;\n" + + "SHOW SCHEMAS ;\n" + + "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + + "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + + "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + + "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + + "use database \"DEMO_DB\" ;\n" + + "select *\n" + + "from table(information_schema.query_history())\n" + + "order by start_time;\n" + + "create table collation_demo_qh (\n" + + " uncollated_phrase varchar, \n" + + " utf8_phrase varchar collate 'utf8',\n" + + " english_phrase varchar collate 'en',\n" + + " spanish_phrase varchar collate 'sp'\n" + + " );\n" + + "SELECT * FROM identifier('\"DEMO_DB\".\"PUBLIC\".\"COLLATION_DEMO_QH\"') LIMIT 100;\n" + + "INSERT INTO collation_demo_qh(uncollated_phrase,utf8_phrase,english_phrase,spanish_phrase)\n" + + "SELECT uncollated_phrase,substr_val,english_phrase,sp_phrase from collation_demo_view ;\n" + + "select\n" + + " t.table_catalog as dbName,\n" + + " t.table_schema as schemaName,\n" + + " t.table_name as tableName,\n" + + " case when t.table_type = 'VIEW' then 'true'\n" + + " when t.table_type = 'BASE TABLE' then 'false'\n" + + " else 'false'\n" + + " end as isView,\n" + + " c.column_name,\n" + + " c.data_type,\n" + + " null as comments\n" + + "from\n" + + " \"DEMO_DB\".information_schema.tables t,\n" + + " \"DEMO_DB\".information_schema.columns c\n" + + "where\n" + + " t.table_catalog = c.table_catalog\n" + + " and t.table_schema = c.table_schema\n" + + " and t.table_name = c.table_name\n" + + " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + + "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + + "\n" + + "use database \"DEMO_DB\" ;\n" + + "use database \"DEMO_DB\" ;\n" + + "USE DATABASE DEMO_DB ;\n" + + "SHOW SCHEMAS ;\n" + + "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + + "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + + "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + + "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + + "use database \"DEMO_DB\" ;\n" + + "select\n" + + " t.table_catalog as dbName,\n" + + " t.table_schema as schemaName,\n" + + " t.table_name as tableName,\n" + + " case when t.table_type = 'VIEW' then 'true'\n" + + " when t.table_type = 'BASE TABLE' then 'false'\n" + + " else 'false'\n" + + " end as isView,\n" + + " c.column_name,\n" + + " c.data_type,\n" + + " null as comments\n" + + "from\n" + + " \"DEMO_DB\".information_schema.tables t,\n" + + " \"DEMO_DB\".information_schema.columns c\n" + + "where\n" + + " t.table_catalog = c.table_catalog\n" + + " and t.table_schema = c.table_schema\n" + + " and t.table_name = c.table_name\n" + + " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + + "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + + "\n" + + "use database \"DEMO_DB\" ;\n" + + "use database \"DEMO_DB\" ;\n" + + "USE DATABASE DEMO_DB ;\n" + + "SHOW SCHEMAS ;\n" + + "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + + "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + + "SHOW PROCEDURESd IN DEMO_DB.PUBLIC ;\n" + + "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + + "use database \"DEMO_DB\" ;\n" + + "select *\n" + + "from table(information_schema.query_history())\n" + + "order by start_time;\n" + + "select *\n" + + "from table(information_schema.query_history())\n" + + "order by start_time desc;\n" + + "INSERT INTO collation_demo_qh(uncollated_phrase,utf8_phrase,english_phrase,spanish_phrase)\n" + + "SELECT uncollated_phrase,substr_val,english_phrase,sp_phrase from collation_demo_view ;\n" + + "select *\n" + + "from table(information_schema.query_history())\n" + + "order by start_time desc;\n" + + "select\n" + + " t.table_catalog as dbName,\n" + + " t.table_schema as schemaName,\n" + + " t.table_name as tableName,\n" + + " case when t.table_type = 'VIEW' then 'true'\n" + + " when t.table_type = 'BASE TABLE' then 'false'\n" + + " else 'false'\n" + + " end as isView,\n" + + " c.column_name,\n" + + " c.data_type,\n" + + " null as comments\n" + + "from\n" + + " \"DEMO_DB\".information_schema.tables t,\n" + + " \"DEMO_DB\".information_schema.columns c\n" + + "where\n" + + " t.table_catalog = c.table_catalog\n" + + " and t.table_schema = c.table_schema\n" + + " and t.table_name = c.table_name\n" + + " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + + "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + + "\n" + + "use database \"DEMO_DB\" ;\n" + + "use database \"DEMO_DB\" ;\n" + + "USE DATABASE DEMO_DB ;\n" + + "SHOW SCHEMAS ;\n" + + "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + + "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + + "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + + "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + + "use database \"DEMO_DB\" ;\n" + + "select *\n" + + "from table(information_schema.query_history())\n" + + "order by start_time desc;\n" + + "USE DATABASE DEMO_DB ;\n" + + "SHOW SCHEMAS ;\n" + + "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + + "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + + "use database \"DEMO_DB\" ;"; + //assertTrue(sqlparser.parse() == 0); + sqlparser.parse(); + assertTrue(sqlparser.sqlstatements.size() == 55); + //System.out.println(sqlparser.sqlstatements.size()); + TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW")); +// assertTrue(createStreamStmt.getStreamName().toString().equalsIgnoreCase("mystream")); +// assertTrue(createStreamStmt.getTableName().toString().equalsIgnoreCase("mytable")); + } + + + public void test2Comment() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE VIEW defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V comment = 'COMMENT'\n" + + "AS ((select EMPLOYEE_ID,FULL_NAME,FIRST_NAME from defaultdatabase.SF_DML.trimmed_employee_SF_Testing))"; + sqlparser.parse(); + assertTrue(sqlparser.sqlstatements.size() == 1); + TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V")); + assertTrue(createViewSqlStatement.getComment().toString().equalsIgnoreCase("'COMMENT'")); + } + + public void test3Comment() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "CREATE VIEW defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V\n" + + "AS (select EMPLOYEE_ID,FULL_NAME,FIRST_NAME from defaultdatabase.SF_DML.trimmed_employee_SF_Testing) comment = 'COMMENT'"; + sqlparser.parse(); + assertTrue(sqlparser.sqlstatements.size() == 1); + TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V")); + assertTrue(createViewSqlStatement.getComment().toString().equalsIgnoreCase("'COMMENT'")); + } + + public void test4Comment() { + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace view defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V\n" + + "( ADMIN1 COMMENT 'COLUMN 1',\n" + + "ADMIN2 COMMENT 'COLUMN 2',\n" + + "ADMIN3 COMMENT 'COLUMN 3') COMMENT='COMMENT'\n" + + "as (select EMPLOYEE_ID,FULL_NAME,FIRST_NAME from defaultdatabase.SF_DML.trimmed_employee_SF_Testing);"; + sqlparser.parse(); + assertTrue(sqlparser.sqlstatements.size() == 1); + TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V")); + assertTrue(createViewSqlStatement.getComment().toString().equalsIgnoreCase("'COMMENT'")); + + TViewAliasItem viewAliasItem = createViewSqlStatement.getViewAliasClause() + .getViewAliasItemList() + .getViewAliasItem(0); + assertTrue(viewAliasItem.getAlias().toString().equalsIgnoreCase("ADMIN1")); + assertTrue(viewAliasItem.getComment().toString().equalsIgnoreCase("'COLUMN 1'")); + } + +} + + diff --git a/src/test/java/snowflake/testCreateWarehouse.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateWarehouse.java similarity index 95% rename from src/test/java/snowflake/testCreateWarehouse.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateWarehouse.java index 6af40559..a81895de 100644 --- a/src/test/java/snowflake/testCreateWarehouse.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateWarehouse.java @@ -1,22 +1,22 @@ -package snowflake; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.snowflake.TCreateWarehouseStmt; -import junit.framework.TestCase; - -public class testCreateWarehouse extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace warehouse mywarehouse with\n" + - " warehouse_size='X-SMALL'\n" + - " auto_suspend = 120\n" + - " auto_resume = true\n" + - " initially_suspended=true;"; - assertTrue(sqlparser.parse() == 0); - - TCreateWarehouseStmt createWarehouseStmt = (TCreateWarehouseStmt)sqlparser.sqlstatements.get(0); - assertTrue(createWarehouseStmt.getWarehouseName().toString().equalsIgnoreCase("mywarehouse")); - } -} +package gudusoft.gsqlparser.snowflakeTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.snowflake.TCreateWarehouseStmt; +import junit.framework.TestCase; + +public class testCreateWarehouse extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "create or replace warehouse mywarehouse with\n" + + " warehouse_size='X-SMALL'\n" + + " auto_suspend = 120\n" + + " auto_resume = true\n" + + " initially_suspended=true;"; + assertTrue(sqlparser.parse() == 0); + + TCreateWarehouseStmt createWarehouseStmt = (TCreateWarehouseStmt)sqlparser.sqlstatements.get(0); + assertTrue(createWarehouseStmt.getWarehouseName().toString().equalsIgnoreCase("mywarehouse")); + } +} diff --git a/src/test/java/snowflake/testDesc.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testDesc.java similarity index 94% rename from src/test/java/snowflake/testDesc.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testDesc.java index cc7818bf..375308e5 100644 --- a/src/test/java/snowflake/testDesc.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testDesc.java @@ -1,20 +1,20 @@ -package snowflake; - - -import gudusoft.gsqlparser.EDbObjectType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDescribeStmt; -import junit.framework.TestCase; - -public class testDesc extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "desc file format my_csv_format;"; - assertTrue(sqlparser.parse() == 0); - - TDescribeStmt describeStmt = (TDescribeStmt)sqlparser.sqlstatements.get(0); - assertTrue(describeStmt.getDbObjectType() == EDbObjectType.file_format); - assertTrue(describeStmt.getDbObjectName().toString().equalsIgnoreCase("my_csv_format")); - } -} +package gudusoft.gsqlparser.snowflakeTest; + + +import gudusoft.gsqlparser.EDbObjectType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TDescribeStmt; +import junit.framework.TestCase; + +public class testDesc extends TestCase { + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); + sqlparser.sqltext = "desc file format my_csv_format;"; + assertTrue(sqlparser.parse() == 0); + + TDescribeStmt describeStmt = (TDescribeStmt)sqlparser.sqlstatements.get(0); + assertTrue(describeStmt.getDbObjectType() == EDbObjectType.file_format); + assertTrue(describeStmt.getDbObjectName().toString().equalsIgnoreCase("my_csv_format")); + } +} diff --git a/src/test/java/snowflake/testInsert.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testInsert.java similarity index 99% rename from src/test/java/snowflake/testInsert.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testInsert.java index 679a824f..e1e60208 100644 --- a/src/test/java/snowflake/testInsert.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testInsert.java @@ -1,4 +1,4 @@ -package snowflake; +package gudusoft.gsqlparser.snowflakeTest; diff --git a/src/test/java/snowflake/testLateralColumn.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testLateralColumn.java similarity index 70% rename from src/test/java/snowflake/testLateralColumn.java rename to src/test/java/gudusoft/gsqlparser/snowflakeTest/testLateralColumn.java index 1473f45a..db9ec0d6 100644 --- a/src/test/java/snowflake/testLateralColumn.java +++ b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testLateralColumn.java @@ -1,13 +1,14 @@ -package snowflake; +package gudusoft.gsqlparser.snowflakeTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.commonTest.gspCommon; import junit.framework.TestCase; public class testLateralColumn extends TestCase { public void test1(){ TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqlfilename = common.gspCommon.BASE_SQL_DIR_PRIVATE +"java/snowflake/usaa/lateral-column.sql"; + sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE +"java/snowflake/usaa/lateral-column.sql"; assertTrue(sqlparser.parse() == 0); for(int i=0;i 0){ -// TBaseType.log("Above logs is from sql file: "+sqlparser.sqlfilename,TLog.ERROR); -// TBaseType.log("\n\n",TLog.ERROR); -// TBaseType.dumpLogsToFile("c:\\prg\\tmp\\column_reslover_debug.log"); -// TBaseType.clearLogs(); -// } - - }catch (Exception e){ - System.out.println("parsefiles error:"+e.getMessage()+" "+ sqlparser.sqlfilename); - e.printStackTrace(); - } - - } - -// TBaseType.DUMP_RESOLVER_LOG_TO_CONSOLE = dumpResolverLog; -// TLog.REPORT_LEVEL = reportLevel; -} - - - public void testDax(){ - parsefiles(EDbVendor.dbvdax, common.gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"dax"); - } - -// public void testSnowflake(){ -// parsefiles(EDbVendor.dbvsnowflake,common.gspCommon.BASE_SQL_DIR+"snowflake"); -// } - - - -} +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.TBaseType; +import gudusoft.gsqlparser.TLog; +import gudusoft.gsqlparser.commonTest.gspCommon; +import junit.framework.TestCase; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; + +import java.io.File; +import gudusoft.gsqlparser.commonTest.SqlFileList; + +public class parseTest extends TestCase { + String xsdfile = "file:/C:/prg/gsp_java/library/doc/xml/sqlquery.xsd"; + // public static String gspCommon.BASE_SQL_DIR = "c:/prg/gsp_sqlfiles/TestCases/"; + +static void parsefiles(EDbVendor db,String dir){ + + File parent = new File( dir ); + if (!( parent.exists( ) && parent.isDirectory( ))){ + System.out.println("Skip this testcase, directory not exists:"+dir); + return; + } + + boolean dumpResolverLog = TBaseType.DUMP_RESOLVER_LOG_TO_CONSOLE; + int reportLevel = TLog.REPORT_LEVEL; + +// TLog.REPORT_LEVEL = TLog.ERROR; +// TBaseType.DUMP_RESOLVER_LOG_TO_CONSOLE = false; + + TGSqlParser sqlparser = new TGSqlParser(db); + //sqlparser.setSqlCharset("UTF-8"); + SqlFileList sqlfiles = new SqlFileList(dir,true); + for(int k=0;k < sqlfiles.sqlfiles.size();k++){ + sqlparser.sqlfilename = sqlfiles.sqlfiles.get(k).toString(); + //System.out.printf("%s\n",sqlparser.sqlfilename); + // boolean b = sqlparser.parse() == 0; + + // assertTrue(sqlparser.parse() == 0); + + try{ + boolean b = sqlparser.parse() == 0; + assertTrue(sqlparser.sqlfilename+"\n"+sqlparser.getErrormessage(),b); +// if (TBaseType.logSize() > 0){ +// TBaseType.log("Above logs is from sql file: "+sqlparser.sqlfilename,TLog.ERROR); +// TBaseType.log("\n\n",TLog.ERROR); +// TBaseType.dumpLogsToFile("c:\\prg\\tmp\\column_reslover_debug.log"); +// TBaseType.clearLogs(); +// } + + }catch (Exception e){ + System.out.println("parsefiles error:"+e.getMessage()+" "+ sqlparser.sqlfilename); + e.printStackTrace(); + } + + } + +// TBaseType.DUMP_RESOLVER_LOG_TO_CONSOLE = dumpResolverLog; +// TLog.REPORT_LEVEL = reportLevel; +} + + + public void testDax(){ + parsefiles(EDbVendor.dbvdax, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "dax"); + } + +// public void testSnowflake(){ +// parsefiles(EDbVendor.dbvsnowflake,common.gspCommon.BASE_SQL_DIR+"snowflake"); +// } + + + +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testAthenaFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testAthenaFiles.java new file mode 100644 index 00000000..80fb97f2 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testAthenaFiles.java @@ -0,0 +1,15 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testAthenaFiles extends TestCase { + + public void testAthena(){ + parseTest.parsefiles(EDbVendor.dbvathena, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "athena"); + parseTest.parsefiles(EDbVendor.dbvathena, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "athena"); + //parsefiles(EDbVendor.dbvathena, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS +"athena"); + parseTest.parsefiles(EDbVendor.dbvathena, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "athena"); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testBigQueryFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testBigQueryFiles.java new file mode 100644 index 00000000..36890d3b --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testBigQueryFiles.java @@ -0,0 +1,16 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testBigQueryFiles extends TestCase { + + public void testBigquery(){ + parseTest.parsefiles(EDbVendor.dbvbigquery, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "bigquery"); + parseTest.parsefiles(EDbVendor.dbvbigquery, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "bigquery"); + parseTest.parsefiles(EDbVendor.dbvbigquery, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "bigquery"); + } + +} + diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testCouchbaeFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testCouchbaeFiles.java new file mode 100644 index 00000000..7f5838c8 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testCouchbaeFiles.java @@ -0,0 +1,16 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.commonTest.gspCommon; +import junit.framework.TestCase; + +import static gudusoft.gsqlparser.sqlFilesTest.parseTest.parsefiles; + +public class testCouchbaeFiles extends TestCase { + + public void testCouchbase(){ + parsefiles(EDbVendor.dbvcouchbase, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "couchbase"); + } + +} + diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testDB2Files.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testDB2Files.java new file mode 100644 index 00000000..74c8c12b --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testDB2Files.java @@ -0,0 +1,15 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testDB2Files extends TestCase { + public void testDB2(){ + + parseTest.parsefiles(EDbVendor.dbvdb2, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "db2"); + parseTest.parsefiles(EDbVendor.dbvdb2, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "db2"); + parseTest.parsefiles(EDbVendor.dbvdb2, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS + "db2"); + parseTest.parsefiles(EDbVendor.dbvdb2, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "db2"); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testDatabricksFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testDatabricksFiles.java new file mode 100644 index 00000000..5d0b0030 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testDatabricksFiles.java @@ -0,0 +1,12 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testDatabricksFiles extends TestCase { + public void testDatabricksSql(){ + parseTest.parsefiles(EDbVendor.dbvdatabricks, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "databricks"); + parseTest.parsefiles(EDbVendor.dbvdatabricks, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "databricks"); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testGaussDBFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testGaussDBFiles.java new file mode 100644 index 00000000..40dc7be0 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testGaussDBFiles.java @@ -0,0 +1,14 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testGaussDBFiles extends TestCase { + + public void testGaussDB(){ + parseTest.parsefiles(EDbVendor.dbvgaussdb, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "gaussdb"); + parseTest.parsefiles(EDbVendor.dbvgaussdb, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "gaussdb"); + } + +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testGreenplumFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testGreenplumFiles.java new file mode 100644 index 00000000..b9a9a67c --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testGreenplumFiles.java @@ -0,0 +1,14 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testGreenplumFiles extends TestCase { + public void testGreenplum(){ + parseTest.parsefiles(EDbVendor.dbvgreenplum, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "greenplum"); + parseTest.parsefiles(EDbVendor.dbvgreenplum, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS + "greenplum"); + parseTest.parsefiles(EDbVendor.dbvgreenplum, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "greenplum"); + parseTest.parsefiles(EDbVendor.dbvgreenplum, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "greenplum"); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testHanaFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testHanaFiles.java new file mode 100644 index 00000000..e68beac3 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testHanaFiles.java @@ -0,0 +1,14 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testHanaFiles extends TestCase { + public void testHana(){ + parseTest.parsefiles(EDbVendor.dbvhana, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "hana"); + parseTest.parsefiles(EDbVendor.dbvhana, gspCommon.BASE_SQL_DIR_PRIVATE +"java/hana/"); + parseTest.parsefiles(EDbVendor.dbvhana, gspCommon.BASE_SQL_DIR_PUBLIC +"java/hana/"); + } + +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testHiveFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testHiveFiles.java new file mode 100644 index 00000000..8e2f819d --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testHiveFiles.java @@ -0,0 +1,16 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testHiveFiles extends TestCase { + public void testHive(){ + parseTest.parsefiles(EDbVendor.dbvhive, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "hive"); + parseTest.parsefiles(EDbVendor.dbvhive, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "hive"); + parseTest.parsefiles(EDbVendor.dbvhive, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "hive"); + parseTest.parsefiles(EDbVendor.dbvhive, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS + "hive"); + + } +} + diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testImpalaFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testImpalaFiles.java new file mode 100644 index 00000000..080e2aea --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testImpalaFiles.java @@ -0,0 +1,13 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testImpalaFiles extends TestCase { + public void testImpala(){ + parseTest.parsefiles(EDbVendor.dbvimpala, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "impala"); + parseTest.parsefiles(EDbVendor.dbvimpala, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "impala"); + parseTest.parsefiles(EDbVendor.dbvimpala, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "impala"); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testInformixFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testInformixFiles.java new file mode 100644 index 00000000..02bdd388 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testInformixFiles.java @@ -0,0 +1,12 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testInformixFiles extends TestCase { + public void testInformix(){ + parseTest.parsefiles(EDbVendor.dbvinformix, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "informix"); + parseTest.parsefiles(EDbVendor.dbvinformix, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "informix"); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testMDXFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testMDXFiles.java new file mode 100644 index 00000000..13fa58aa --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testMDXFiles.java @@ -0,0 +1,15 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.commonTest.gspCommon; +import junit.framework.TestCase; + +public class testMDXFiles extends TestCase { + + public void testMdx(){ + parseTest.parsefiles(EDbVendor.dbvmdx, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "mdx"); + parseTest.parsefiles(EDbVendor.dbvmdx, gspCommon.BASE_SQL_DIR_PRIVATE +"java/mdx/passed"); + } + +} + diff --git a/src/test/java/testSQLFiles/testMySQLFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testMySQLFiles.java similarity index 74% rename from src/test/java/testSQLFiles/testMySQLFiles.java rename to src/test/java/gudusoft/gsqlparser/sqlFilesTest/testMySQLFiles.java index 41f740c4..d38be3bf 100644 --- a/src/test/java/testSQLFiles/testMySQLFiles.java +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testMySQLFiles.java @@ -1,23 +1,23 @@ -package testSQLFiles; - -import common.gspCommon; -import gudusoft.gsqlparser.EDbVendor; -import junit.framework.TestCase; - -public class testMySQLFiles extends TestCase { - - public void testMySQL(){ - parseTest.parsefiles(EDbVendor.dbvmysql,common.gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"mysql"); - parseTest.parsefiles(EDbVendor.dbvmysql, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA +"mysql"); - parseTest.parsefiles(EDbVendor.dbvmysql, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS +"mysql"); - parseTest.parsefiles(EDbVendor.dbvmysql, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA +"mysql"); -// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\big-ds\\testing"); -// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\big-ds\\training"); -// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\hotelrs-x"); -// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\taskfreak-b"); -// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\wordpress-s"); -// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\theorganizer-s"); - } - - -} +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testMySQLFiles extends TestCase { + + public void testMySQL(){ + parseTest.parsefiles(EDbVendor.dbvmysql, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "mysql"); + parseTest.parsefiles(EDbVendor.dbvmysql, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "mysql"); + parseTest.parsefiles(EDbVendor.dbvmysql, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS + "mysql"); + parseTest.parsefiles(EDbVendor.dbvmysql, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "mysql"); +// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\big-ds\\testing"); +// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\big-ds\\training"); +// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\hotelrs-x"); +// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\taskfreak-b"); +// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\wordpress-s"); +// parsefiles(EDbVendor.dbvmysql,"C:\\prg\\sofia2.0\\sofia\\theorganizer-s"); + } + + +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testNetezzaFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testNetezzaFiles.java new file mode 100644 index 00000000..ca3b4466 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testNetezzaFiles.java @@ -0,0 +1,17 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testNetezzaFiles extends TestCase { + + + public void testNetezza(){ + parseTest.parsefiles(EDbVendor.dbvnetezza, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "netezza"); + parseTest.parsefiles(EDbVendor.dbvnetezza, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "netezza"); + parseTest.parsefiles(EDbVendor.dbvnetezza, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "netezza"); + } + + +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testODBCFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testODBCFiles.java new file mode 100644 index 00000000..302b655a --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testODBCFiles.java @@ -0,0 +1,12 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.commonTest.gspCommon; +import junit.framework.TestCase; + +public class testODBCFiles extends TestCase { + public void testODBC(){ + parseTest.parsefiles(EDbVendor.dbvodbc, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"odbc"); + } + +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testOpenedgeFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testOpenedgeFiles.java new file mode 100644 index 00000000..10d18274 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testOpenedgeFiles.java @@ -0,0 +1,13 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.commonTest.gspCommon; +import junit.framework.TestCase; + +public class testOpenedgeFiles extends TestCase { + public void testOpenedge(){ + parseTest.parsefiles(EDbVendor.dbvopenedge, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"openedge"); + parseTest.parsefiles(EDbVendor.dbvopenedge, gspCommon.BASE_SQL_DIR_PRIVATE +"java/openedge"); + } + +} \ No newline at end of file diff --git a/src/test/java/testSQLFiles/testOracleFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testOracleFiles.java similarity index 70% rename from src/test/java/testSQLFiles/testOracleFiles.java rename to src/test/java/gudusoft/gsqlparser/sqlFilesTest/testOracleFiles.java index 7c4688e3..d98fae19 100644 --- a/src/test/java/testSQLFiles/testOracleFiles.java +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testOracleFiles.java @@ -1,15 +1,15 @@ -package testSQLFiles; - -import common.gspCommon; -import gudusoft.gsqlparser.EDbVendor; -import junit.framework.TestCase; - -public class testOracleFiles extends TestCase { - - public void testOracle(){ - parseTest.parsefiles(EDbVendor.dbvoracle,common.gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"oracle"); - parseTest.parsefiles(EDbVendor.dbvoracle, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA +"oracle"); - parseTest.parsefiles(EDbVendor.dbvoracle, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS +"oracle"); - parseTest.parsefiles(EDbVendor.dbvoracle, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA +"oracle"); - } -} +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testOracleFiles extends TestCase { + + public void testOracle(){ + parseTest.parsefiles(EDbVendor.dbvoracle, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"oracle"); + parseTest.parsefiles(EDbVendor.dbvoracle, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA +"oracle"); + parseTest.parsefiles(EDbVendor.dbvoracle, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS +"oracle"); + parseTest.parsefiles(EDbVendor.dbvoracle, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA +"oracle"); + } +} diff --git a/src/test/java/testSQLFiles/testPostgreSQLFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testPostgreSQLFiles.java similarity index 50% rename from src/test/java/testSQLFiles/testPostgreSQLFiles.java rename to src/test/java/gudusoft/gsqlparser/sqlFilesTest/testPostgreSQLFiles.java index 65ab0e81..1e98f8d9 100644 --- a/src/test/java/testSQLFiles/testPostgreSQLFiles.java +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testPostgreSQLFiles.java @@ -1,15 +1,15 @@ -package testSQLFiles; - -import common.gspCommon; -import gudusoft.gsqlparser.EDbVendor; -import junit.framework.TestCase; - -public class testPostgreSQLFiles extends TestCase { - - public void testPostgresql(){ - parseTest.parsefiles(EDbVendor.dbvpostgresql,common.gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"postgresql/verified"); - parseTest.parsefiles(EDbVendor.dbvpostgresql, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA +"postgresql"); - parseTest.parsefiles(EDbVendor.dbvpostgresql, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA +"postgresql"); - } - -} +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testPostgreSQLFiles extends TestCase { + + public void testPostgresql(){ + parseTest.parsefiles(EDbVendor.dbvpostgresql, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "postgresql/verified"); + parseTest.parsefiles(EDbVendor.dbvpostgresql, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "postgresql"); + parseTest.parsefiles(EDbVendor.dbvpostgresql, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "postgresql"); + } + +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testPrestoFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testPrestoFiles.java new file mode 100644 index 00000000..dfc25597 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testPrestoFiles.java @@ -0,0 +1,11 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.commonTest.gspCommon; +import junit.framework.TestCase; + +public class testPrestoFiles extends TestCase { + public void testPrestosql(){ + parseTest.parsefiles(EDbVendor.dbvpresto, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "presto"); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testRedshiftFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testRedshiftFiles.java new file mode 100644 index 00000000..6f00243c --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testRedshiftFiles.java @@ -0,0 +1,14 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testRedshiftFiles extends TestCase { + public void testRedshift(){ + parseTest.parsefiles(EDbVendor.dbvredshift, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "redshift"); + parseTest.parsefiles(EDbVendor.dbvredshift, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "redshift"); + parseTest.parsefiles(EDbVendor.dbvredshift, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS + "redshift"); + parseTest.parsefiles(EDbVendor.dbvredshift, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "redshift"); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSOQLFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSOQLFiles.java new file mode 100644 index 00000000..ddec0d49 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSOQLFiles.java @@ -0,0 +1,11 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testSOQLFiles extends TestCase { + public void testSoql(){ + parseTest.parsefiles(EDbVendor.dbvsoql, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA +"salesforce_soql"); + } +} \ No newline at end of file diff --git a/src/test/java/testSQLFiles/testSQLServerFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSQLServerFiles.java similarity index 51% rename from src/test/java/testSQLFiles/testSQLServerFiles.java rename to src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSQLServerFiles.java index ebd54e3c..603a5df0 100644 --- a/src/test/java/testSQLFiles/testSQLServerFiles.java +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSQLServerFiles.java @@ -1,16 +1,17 @@ -package testSQLFiles; - -import common.gspCommon; -import gudusoft.gsqlparser.EDbVendor; -import junit.framework.TestCase; - -import static testSQLFiles.parseTest.parsefiles; - -public class testSQLServerFiles extends TestCase { - public void testSQLServer(){ - parsefiles(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS +"mssql"); - parsefiles(EDbVendor.dbvmssql,common.gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"mssql"); - parsefiles(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA +"mssql"); - parsefiles(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA +"mssql"); - } -} +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +import static gudusoft.gsqlparser.sqlFilesTest.parseTest.parsefiles; + +public class testSQLServerFiles extends TestCase { + public void testSQLServer(){ + String db = "mssql"; + parsefiles(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS + db); + parsefiles(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + db); + parsefiles(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + db); + parsefiles(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + db); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSnowflakeFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSnowflakeFiles.java new file mode 100644 index 00000000..78bea24b --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSnowflakeFiles.java @@ -0,0 +1,14 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testSnowflakeFiles extends TestCase { + public void testSnowflake(){ + parseTest.parsefiles(EDbVendor.dbvsnowflake, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "snowflake"); + parseTest.parsefiles(EDbVendor.dbvsnowflake, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "snowflake"); + parseTest.parsefiles(EDbVendor.dbvsnowflake, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS + "snowflake"); + parseTest.parsefiles(EDbVendor.dbvsnowflake, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "snowflake"); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSparksqlFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSparksqlFiles.java new file mode 100644 index 00000000..70162a37 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSparksqlFiles.java @@ -0,0 +1,13 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testSparksqlFiles extends TestCase { + public void testSparksql(){ + parseTest.parsefiles(EDbVendor.dbvsparksql, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + "sparksql"); + parseTest.parsefiles(EDbVendor.dbvsparksql, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS + "sparksql"); + parseTest.parsefiles(EDbVendor.dbvsparksql, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "sparksql"); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSybaseFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSybaseFiles.java new file mode 100644 index 00000000..fa0e6395 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testSybaseFiles.java @@ -0,0 +1,14 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testSybaseFiles extends TestCase { + public void testSybase(){ + String db = "sybase"; + parseTest.parsefiles(EDbVendor.dbvsybase, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + db); + parseTest.parsefiles(EDbVendor.dbvsybase, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + db); + parseTest.parsefiles(EDbVendor.dbvsybase, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + db); + } +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testTeradataFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testTeradataFiles.java new file mode 100644 index 00000000..018b5381 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testTeradataFiles.java @@ -0,0 +1,16 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testTeradataFiles extends TestCase { + public void testTeradata(){ + String db = "teradata"; + parseTest.parsefiles(EDbVendor.dbvteradata, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + db+"/verified"); + parseTest.parsefiles(EDbVendor.dbvteradata, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + db); + parseTest.parsefiles(EDbVendor.dbvteradata, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + db); + parseTest.parsefiles(EDbVendor.dbvteradata, gspCommon.BASE_SQL_DIR_PRIVATE_ALLVERSIONS + db); + } + +} diff --git a/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testVerticaFiles.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testVerticaFiles.java new file mode 100644 index 00000000..e1f9a7be --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/testVerticaFiles.java @@ -0,0 +1,14 @@ +package gudusoft.gsqlparser.sqlFilesTest; + +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.EDbVendor; +import junit.framework.TestCase; + +public class testVerticaFiles extends TestCase { + public void testVertica(){ + String db = "vertica"; + parseTest.parsefiles(EDbVendor.dbvvertica, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS + db); + parseTest.parsefiles(EDbVendor.dbvvertica, gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + db); + parseTest.parsefiles(EDbVendor.dbvvertica, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + db); + } +} \ No newline at end of file diff --git a/src/test/java/sqlenv/TJSONSQLEnv.java b/src/test/java/gudusoft/gsqlparser/sqlenvTest/TJSONSQLEnv.java similarity index 97% rename from src/test/java/sqlenv/TJSONSQLEnv.java rename to src/test/java/gudusoft/gsqlparser/sqlenvTest/TJSONSQLEnv.java index e51c23d8..225634e1 100644 --- a/src/test/java/sqlenv/TJSONSQLEnv.java +++ b/src/test/java/gudusoft/gsqlparser/sqlenvTest/TJSONSQLEnv.java @@ -1,294 +1,297 @@ -package sqlenv; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.sqlenv.*; - -import java.io.*; -import java.nio.charset.Charset; - -class TJSONSQLEnv extends TSQLEnv { - private String jsonfile; - - public TJSONSQLEnv(EDbVendor dbVendor, String jsonfile){ - super(dbVendor); - this.jsonfile = jsonfile; - } - - public void initSQLEnv(){ - String json = SQLUtil.getFileContent(jsonfile); - if (json != null && json.trim().startsWith("{")) { - JSONObject queryObject = JSON.parseObject(json); - - //JSONArray databases = queryObject.getJSONArray("databaseModel"); - JSONObject databaseModel = queryObject.getJSONObject("databaseModel"); - if (databaseModel != null){ - JSONArray databases = databaseModel.getJSONArray("databases"); - if (databases !=null){ - //System.out.println("databases:"+databases.size()); - for(int i=0;i20?20:partOfCode.length()); - if (partOfCode.indexOf("procedure")>0){ - TSQLProcedure procedure = sqlSchema.createProcedure(procedureName); - procedure.setDefinition(sourceCode); - }else{ - // this script is used to create view - TSQLTable table = sqlSchema.createTable(procedureName); - table.setView(true); - table.setDefinition(sourceCode); - - } - // SQLUtil.writeFileContent(new File(targetDir, (i + 1) + ".sql"), sql); - } - } - - } else { - System.out.println(jsonfile + " is not a valid json file."); - } - } -} - -class SQLUtil { - - public static String getFileContent(File file) { - String charset = null; - String sqlfilename = file.getAbsolutePath(); - int read = 0; - try { - FileInputStream fr = new FileInputStream(sqlfilename); - byte[] bom = new byte[4]; - fr.read(bom, 0, bom.length); - - if ((bom[0] == (byte) 0x00) && (bom[1] == (byte) 0x00) && (bom[2] == (byte) 0xFE) - && (bom[3] == (byte) 0xFF)) { - charset = "UTF-32BE"; - read = 4; - } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE) && (bom[2] == (byte) 0x00) - && (bom[3] == (byte) 0x00)) { - charset = "UTF-32LE"; - read = 4; - } else if ((bom[0] == (byte) 0xEF) && (bom[1] == (byte) 0xBB) && (bom[2] == (byte) 0xBF)) { - charset = "UTF-8"; - read = 3; - } else if ((bom[0] == (byte) 0xFE) && (bom[1] == (byte) 0xFF)) { - charset = "UTF-16BE"; - read = 2; - } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE)) { - charset = "UTF-16LE"; - read = 2; - } else { - charset = Charset.defaultCharset().name(); - read = 0; - } - - fr.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - Long filelength = file.length(); - byte[] filecontent = new byte[filelength.intValue()]; - try { - InputStream in = new BufferedInputStream(new FileInputStream(sqlfilename)); - in.read(filecontent); - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - byte[] content = new byte[filelength.intValue() - read]; - System.arraycopy(filecontent, read, content, 0, content.length); - - try { - String fileContent = new String(content, charset == null ? Charset.defaultCharset().name() : charset) - .trim(); - return fileContent; - } catch (UnsupportedEncodingException e) { - System.err - .println("The OS does not support " + charset == null ? Charset.defaultCharset().name() : charset); - return null; - } - } - - public static String getInputStreamContent(InputStream is, boolean close) { - try { - ByteArrayOutputStream out = new ByteArrayOutputStream(4096); - byte[] tmp = new byte[4096]; - while (true) { - int r = is.read(tmp); - if (r == -1) - break; - out.write(tmp, 0, r); - } - byte[] bytes = out.toByteArray(); - if (close) { - is.close(); - } - out.close(); - String content = new String(bytes); - return content.trim(); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - public static String getFileContent(String filePath) { - if (filePath == null) - return ""; - File file = new File(filePath); - if (!file.exists() || file.isDirectory()) - return ""; - return getFileContent(file); - } - - /** - * @param file the filePath - * @return the UTFFileHandler.UnicodeInputStream - * @throws Exception - */ - public static InputStream getInputStreamWithoutBom(String file) throws IOException { - UnicodeInputStream stream = null; - FileInputStream fis = new FileInputStream(file); - stream = new UnicodeInputStream(fis, null); - return stream; - } - - /** - * This inputstream will recognize unicode BOM marks and will skip bytes if - * getEncoding() method is called before any of the read(...) methods. - *

- * Usage pattern: String enc = "ISO-8859-1"; // or NULL to use systemdefault - * FileInputStream fis = new FileInputStream(file); UnicodeInputStream uin = new - * UnicodeInputStream(fis, enc); enc = uin.getEncoding(); // check and skip - * possible BOM bytes InputStreamReader in; if (enc == null) in = new - * InputStreamReader(uin); else in = new InputStreamReader(uin, enc); - */ - public static class UnicodeInputStream extends InputStream { - PushbackInputStream internalIn; - boolean isInited = false; - String defaultEnc; - String encoding; - - private static final int BOM_SIZE = 4; - - public UnicodeInputStream(InputStream in, String defaultEnc) { - internalIn = new PushbackInputStream(in, BOM_SIZE); - this.defaultEnc = defaultEnc; - } - - public String getDefaultEncoding() { - return defaultEnc; - } - - public String getEncoding() { - if (!isInited) { - try { - init(); - } catch (IOException ex) { - IllegalStateException ise = new IllegalStateException("Init method failed."); - ise.initCause(ise); - throw ise; - } - } - return encoding; - } - - /** - * Read-ahead four bytes and check for BOM marks. Extra bytes are unread back to - * the stream, only BOM bytes are skipped. - */ - protected void init() throws IOException { - if (isInited) - return; - - byte bom[] = new byte[BOM_SIZE]; - int n, unread; - n = internalIn.read(bom, 0, bom.length); - - if ((bom[0] == (byte) 0x00) && (bom[1] == (byte) 0x00) && (bom[2] == (byte) 0xFE) - && (bom[3] == (byte) 0xFF)) { - encoding = "UTF-32BE"; - unread = n - 4; - } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE) && (bom[2] == (byte) 0x00) - && (bom[3] == (byte) 0x00)) { - encoding = "UTF-32LE"; - unread = n - 4; - } else if ((bom[0] == (byte) 0xEF) && (bom[1] == (byte) 0xBB) && (bom[2] == (byte) 0xBF)) { - encoding = "UTF-8"; - unread = n - 3; - } else if ((bom[0] == (byte) 0xFE) && (bom[1] == (byte) 0xFF)) { - encoding = "UTF-16BE"; - unread = n - 2; - } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE)) { - encoding = "UTF-16LE"; - unread = n - 2; - } else { - encoding = defaultEnc; - unread = n; - } - - if (unread > 0) - internalIn.unread(bom, (n - unread), unread); - - isInited = true; - } - - public void close() throws IOException { - internalIn.close(); - } - - public int read() throws IOException { - return internalIn.read(); - } - } - - public static void writeFileContent(File file, String sql) { - PrintWriter pw = null; - try { - pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"))); - pw.write(sql); - } catch (Exception e) { - e.printStackTrace(); - } finally { - if (pw != null) { - pw.close(); - } - } - - } +package gudusoft.gsqlparser.sqlenvTest; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.sqlenv.TSQLEnv; +import gudusoft.gsqlparser.sqlenv.TSQLProcedure; +import gudusoft.gsqlparser.sqlenv.TSQLSchema; +import gudusoft.gsqlparser.sqlenv.TSQLTable; + +import java.io.*; +import java.nio.charset.Charset; + +class TJSONSQLEnv extends TSQLEnv { + private String jsonfile; + + public TJSONSQLEnv(EDbVendor dbVendor, String jsonfile){ + super(dbVendor); + this.jsonfile = jsonfile; + } + + public void initSQLEnv(){ + String json = SQLUtil.getFileContent(jsonfile); + if (json != null && json.trim().startsWith("{")) { + JSONObject queryObject = JSON.parseObject(json); + + //JSONArray databases = queryObject.getJSONArray("databaseModel"); + JSONObject databaseModel = queryObject.getJSONObject("databaseModel"); + if (databaseModel != null){ + JSONArray databases = databaseModel.getJSONArray("databases"); + if (databases !=null){ + //System.out.println("databases:"+databases.size()); + for(int i=0;i20?20:partOfCode.length()); + if (partOfCode.indexOf("procedure")>0){ + TSQLProcedure procedure = sqlSchema.createProcedure(procedureName); + procedure.setDefinition(sourceCode); + }else{ + // this script is used to create view + TSQLTable table = sqlSchema.createTable(procedureName); + table.setView(true); + table.setDefinition(sourceCode); + + } + // SQLUtil.writeFileContent(new File(targetDir, (i + 1) + ".sql"), sql); + } + } + + } else { + System.out.println(jsonfile + " is not a valid json file."); + } + } +} + +class SQLUtil { + + public static String getFileContent(File file) { + String charset = null; + String sqlfilename = file.getAbsolutePath(); + int read = 0; + try { + FileInputStream fr = new FileInputStream(sqlfilename); + byte[] bom = new byte[4]; + fr.read(bom, 0, bom.length); + + if ((bom[0] == (byte) 0x00) && (bom[1] == (byte) 0x00) && (bom[2] == (byte) 0xFE) + && (bom[3] == (byte) 0xFF)) { + charset = "UTF-32BE"; + read = 4; + } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE) && (bom[2] == (byte) 0x00) + && (bom[3] == (byte) 0x00)) { + charset = "UTF-32LE"; + read = 4; + } else if ((bom[0] == (byte) 0xEF) && (bom[1] == (byte) 0xBB) && (bom[2] == (byte) 0xBF)) { + charset = "UTF-8"; + read = 3; + } else if ((bom[0] == (byte) 0xFE) && (bom[1] == (byte) 0xFF)) { + charset = "UTF-16BE"; + read = 2; + } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE)) { + charset = "UTF-16LE"; + read = 2; + } else { + charset = Charset.defaultCharset().name(); + read = 0; + } + + fr.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + Long filelength = file.length(); + byte[] filecontent = new byte[filelength.intValue()]; + try { + InputStream in = new BufferedInputStream(new FileInputStream(sqlfilename)); + in.read(filecontent); + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + byte[] content = new byte[filelength.intValue() - read]; + System.arraycopy(filecontent, read, content, 0, content.length); + + try { + String fileContent = new String(content, charset == null ? Charset.defaultCharset().name() : charset) + .trim(); + return fileContent; + } catch (UnsupportedEncodingException e) { + System.err + .println("The OS does not support " + charset == null ? Charset.defaultCharset().name() : charset); + return null; + } + } + + public static String getInputStreamContent(InputStream is, boolean close) { + try { + ByteArrayOutputStream out = new ByteArrayOutputStream(4096); + byte[] tmp = new byte[4096]; + while (true) { + int r = is.read(tmp); + if (r == -1) + break; + out.write(tmp, 0, r); + } + byte[] bytes = out.toByteArray(); + if (close) { + is.close(); + } + out.close(); + String content = new String(bytes); + return content.trim(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + public static String getFileContent(String filePath) { + if (filePath == null) + return ""; + File file = new File(filePath); + if (!file.exists() || file.isDirectory()) + return ""; + return getFileContent(file); + } + + /** + * @param file the filePath + * @return the UTFFileHandler.UnicodeInputStream + * @throws Exception + */ + public static InputStream getInputStreamWithoutBom(String file) throws IOException { + UnicodeInputStream stream = null; + FileInputStream fis = new FileInputStream(file); + stream = new UnicodeInputStream(fis, null); + return stream; + } + + /** + * This inputstream will recognize unicode BOM marks and will skip bytes if + * getEncoding() method is called before any of the read(...) methods. + *

+ * Usage pattern: String enc = "ISO-8859-1"; // or NULL to use systemdefault + * FileInputStream fis = new FileInputStream(file); UnicodeInputStream uin = new + * UnicodeInputStream(fis, enc); enc = uin.getEncoding(); // check and skip + * possible BOM bytes InputStreamReader in; if (enc == null) in = new + * InputStreamReader(uin); else in = new InputStreamReader(uin, enc); + */ + public static class UnicodeInputStream extends InputStream { + PushbackInputStream internalIn; + boolean isInited = false; + String defaultEnc; + String encoding; + + private static final int BOM_SIZE = 4; + + public UnicodeInputStream(InputStream in, String defaultEnc) { + internalIn = new PushbackInputStream(in, BOM_SIZE); + this.defaultEnc = defaultEnc; + } + + public String getDefaultEncoding() { + return defaultEnc; + } + + public String getEncoding() { + if (!isInited) { + try { + init(); + } catch (IOException ex) { + IllegalStateException ise = new IllegalStateException("Init method failed."); + ise.initCause(ise); + throw ise; + } + } + return encoding; + } + + /** + * Read-ahead four bytes and check for BOM marks. Extra bytes are unread back to + * the stream, only BOM bytes are skipped. + */ + protected void init() throws IOException { + if (isInited) + return; + + byte bom[] = new byte[BOM_SIZE]; + int n, unread; + n = internalIn.read(bom, 0, bom.length); + + if ((bom[0] == (byte) 0x00) && (bom[1] == (byte) 0x00) && (bom[2] == (byte) 0xFE) + && (bom[3] == (byte) 0xFF)) { + encoding = "UTF-32BE"; + unread = n - 4; + } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE) && (bom[2] == (byte) 0x00) + && (bom[3] == (byte) 0x00)) { + encoding = "UTF-32LE"; + unread = n - 4; + } else if ((bom[0] == (byte) 0xEF) && (bom[1] == (byte) 0xBB) && (bom[2] == (byte) 0xBF)) { + encoding = "UTF-8"; + unread = n - 3; + } else if ((bom[0] == (byte) 0xFE) && (bom[1] == (byte) 0xFF)) { + encoding = "UTF-16BE"; + unread = n - 2; + } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE)) { + encoding = "UTF-16LE"; + unread = n - 2; + } else { + encoding = defaultEnc; + unread = n; + } + + if (unread > 0) + internalIn.unread(bom, (n - unread), unread); + + isInited = true; + } + + public void close() throws IOException { + internalIn.close(); + } + + public int read() throws IOException { + return internalIn.read(); + } + } + + public static void writeFileContent(File file, String sql) { + PrintWriter pw = null; + try { + pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"))); + pw.write(sql); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (pw != null) { + pw.close(); + } + } + + } } \ No newline at end of file diff --git a/src/test/java/sqlenv/testHelpFunctions.java b/src/test/java/gudusoft/gsqlparser/sqlenvTest/testHelpFunctions.java similarity index 97% rename from src/test/java/sqlenv/testHelpFunctions.java rename to src/test/java/gudusoft/gsqlparser/sqlenvTest/testHelpFunctions.java index ead5fd35..ce57591a 100644 --- a/src/test/java/sqlenv/testHelpFunctions.java +++ b/src/test/java/gudusoft/gsqlparser/sqlenvTest/testHelpFunctions.java @@ -1,4 +1,4 @@ -package sqlenv; +package gudusoft.gsqlparser.sqlenvTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TBaseType; diff --git a/src/test/java/sqlenv/testHiveSQLEnv.java b/src/test/java/gudusoft/gsqlparser/sqlenvTest/testHiveSQLEnv.java similarity index 90% rename from src/test/java/sqlenv/testHiveSQLEnv.java rename to src/test/java/gudusoft/gsqlparser/sqlenvTest/testHiveSQLEnv.java index 43ac8961..a6ac80ea 100644 --- a/src/test/java/sqlenv/testHiveSQLEnv.java +++ b/src/test/java/gudusoft/gsqlparser/sqlenvTest/testHiveSQLEnv.java @@ -1,6 +1,6 @@ -package sqlenv; +package gudusoft.gsqlparser.sqlenvTest; -import common.gspCommon; +import gudusoft.gsqlparser.commonTest.gspCommon; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.sqlenv.TSQLCatalog; @@ -13,7 +13,7 @@ public class testHiveSQLEnv extends TestCase { public void test1() { TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvhive); - sqlParser.setSqlfilename(gspCommon.BASE_SQL_DIR_PRIVATE_JAVA +"hive/prosiebensat1/gsp_orphan_column.sql"); + sqlParser.setSqlfilename(gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "hive/prosiebensat1/gsp_orphan_column.sql"); sqlParser.setSqlEnv(new THiveEnv()); assertTrue(sqlParser.parse() == 0); assertTrue(sqlParser.getSqlstatements().get(0).getSyntaxHints().size() == 0); diff --git a/src/test/java/sqlenv/testJSONEnv.java b/src/test/java/gudusoft/gsqlparser/sqlenvTest/testJSONEnv.java similarity index 93% rename from src/test/java/sqlenv/testJSONEnv.java rename to src/test/java/gudusoft/gsqlparser/sqlenvTest/testJSONEnv.java index 2df981dd..1dde1c0e 100644 --- a/src/test/java/sqlenv/testJSONEnv.java +++ b/src/test/java/gudusoft/gsqlparser/sqlenvTest/testJSONEnv.java @@ -1,106 +1,107 @@ -package sqlenv; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.sqlenv.*; -import junit.framework.TestCase; - -public class testJSONEnv extends TestCase { - - static int objectsInDatabase(TSQLCatalog c, ESQLDataObjectType objectType){ - int result = 0; - for(TSQLSchema s: c.getSchemaList() ) { - for (TSQLSchemaObject o : s.getSchemaObjectList()) { - if (o.getDataObjectType() == objectType) { - result++; - } - } - } - return result; - } - - static int viewsInDatabase(TSQLCatalog c){ - int result = 0; - for(TSQLSchema s: c.getSchemaList() ) { - for (TSQLSchemaObject o : s.getSchemaObjectList()) { - if (o.getDataObjectType() == ESQLDataObjectType.dotTable) { - TSQLTable table = (TSQLTable)o; - if (table.isView()) result++; - } - } - } - return result; - } - - static int tablesInDatabase(TSQLCatalog c){ - int result = 0; - for(TSQLSchema s: c.getSchemaList() ) { - for (TSQLSchemaObject o : s.getSchemaObjectList()) { - if (o.getDataObjectType() == ESQLDataObjectType.dotTable) { - TSQLTable table = (TSQLTable)o; - if (!table.isView()) result++; - } - } - } - return result; - } - TJSONSQLEnv sqlEnv; - - @Override - protected void setUp() throws Exception { - // System.out.println("Setting it up!"); - sqlEnv = new TJSONSQLEnv(EDbVendor.dbvmssql,common.gspCommon.BASE_SQL_DIR_PRIVATE+"/sqlflow/api_json/DBexport20191212.json"); - sqlEnv.initSQLEnv(); - } - @Override - protected void tearDown() throws Exception { - // System.out.println("Running: tearDown"); - } - - public void test1() { - int totalProcedure = 0,totalView = 0; - assertTrue(sqlEnv.getCatalogList().size() == 7); - - for (TSQLCatalog c : sqlEnv.getCatalogList()) { -// System.out.println("Database:" + c.getName() + "(schema:" + c.getSchemaList().size() -// + ",table+view:" + (objectsInDatabase(c, ESQLDataObjectType.dotTable)) -// + ",view:" + (viewsInDatabase(c)) -// + ",procedure:" + objectsInDatabase(c, ESQLDataObjectType.dotProcedure) + ")"); - - totalView = totalView + viewsInDatabase(c); - for (TSQLSchema s : c.getSchemaList()) { - for (TSQLSchemaObject o : s.getSchemaObjectList()) { - if (o.getDataObjectType() == ESQLDataObjectType.dotProcedure) { - totalProcedure++; - } - } - } - } - // System.out.println("total procedure:" + totalProcedure+", total view:"+totalView+", queries:"+(totalProcedure+totalView)); - assertTrue((totalProcedure+totalView) == 549); - - } - - public void testSearch1() { - String tableName = "CrmPoc.SF.LAND_StatusChange"; - TSQLTable sqlTable = sqlEnv.searchTable(tableName); - assertTrue(sqlTable != null); - - TSQLEnv.tableCollationCaseSensitive[EDbVendor.dbvmssql.ordinal()] = true; - tableName = "DataMart.dbo.loaN"; - sqlTable = sqlEnv.searchTable(tableName); - assertTrue(sqlTable == null); - - TSQLEnv.tableCollationCaseSensitive[EDbVendor.dbvmssql.ordinal()] = false; - tableName = "DataMart.dbo.loaN"; - sqlTable = sqlEnv.searchTable(tableName); - assertTrue(sqlTable != null); - - tableName = "DataMart.[SalesForce].[vwAccounts]"; - // tableName = "DataMart.SalesForce.vwAccounts"; - sqlTable = sqlEnv.searchTable(tableName); - assertTrue(sqlTable != null); -// for(TSQLColumn c: sqlTable.getColumnList()){ -// System.out.println(c.getSqlTable().getNameKeepCase()+"."+c.getNameKeepCase()); -// } - } +package gudusoft.gsqlparser.sqlenvTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.sqlenv.*; +import junit.framework.TestCase; + +public class testJSONEnv extends TestCase { + + static int objectsInDatabase(TSQLCatalog c, ESQLDataObjectType objectType){ + int result = 0; + for(TSQLSchema s: c.getSchemaList() ) { + for (TSQLSchemaObject o : s.getSchemaObjectList()) { + if (o.getDataObjectType() == objectType) { + result++; + } + } + } + return result; + } + + static int viewsInDatabase(TSQLCatalog c){ + int result = 0; + for(TSQLSchema s: c.getSchemaList() ) { + for (TSQLSchemaObject o : s.getSchemaObjectList()) { + if (o.getDataObjectType() == ESQLDataObjectType.dotTable) { + TSQLTable table = (TSQLTable)o; + if (table.isView()) result++; + } + } + } + return result; + } + + static int tablesInDatabase(TSQLCatalog c){ + int result = 0; + for(TSQLSchema s: c.getSchemaList() ) { + for (TSQLSchemaObject o : s.getSchemaObjectList()) { + if (o.getDataObjectType() == ESQLDataObjectType.dotTable) { + TSQLTable table = (TSQLTable)o; + if (!table.isView()) result++; + } + } + } + return result; + } + TJSONSQLEnv sqlEnv; + + @Override + protected void setUp() throws Exception { + // System.out.println("Setting it up!"); + sqlEnv = new TJSONSQLEnv(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PRIVATE+"/sqlflow/api_json/DBexport20191212.json"); + sqlEnv.initSQLEnv(); + } + @Override + protected void tearDown() throws Exception { + // System.out.println("Running: tearDown"); + } + + public void test1() { + int totalProcedure = 0,totalView = 0; + assertTrue(sqlEnv.getCatalogList().size() == 7); + + for (TSQLCatalog c : sqlEnv.getCatalogList()) { +// System.out.println("Database:" + c.getName() + "(schema:" + c.getSchemaList().size() +// + ",table+view:" + (objectsInDatabase(c, ESQLDataObjectType.dotTable)) +// + ",view:" + (viewsInDatabase(c)) +// + ",procedure:" + objectsInDatabase(c, ESQLDataObjectType.dotProcedure) + ")"); + + totalView = totalView + viewsInDatabase(c); + for (TSQLSchema s : c.getSchemaList()) { + for (TSQLSchemaObject o : s.getSchemaObjectList()) { + if (o.getDataObjectType() == ESQLDataObjectType.dotProcedure) { + totalProcedure++; + } + } + } + } + // System.out.println("total procedure:" + totalProcedure+", total view:"+totalView+", queries:"+(totalProcedure+totalView)); + assertTrue((totalProcedure+totalView) == 549); + + } + + public void testSearch1() { + String tableName = "CrmPoc.SF.LAND_StatusChange"; + TSQLTable sqlTable = sqlEnv.searchTable(tableName); + assertTrue(sqlTable != null); + + TSQLEnv.tableCollationCaseSensitive[EDbVendor.dbvmssql.ordinal()] = true; + tableName = "DataMart.dbo.loaN"; + sqlTable = sqlEnv.searchTable(tableName); + assertTrue(sqlTable == null); + + TSQLEnv.tableCollationCaseSensitive[EDbVendor.dbvmssql.ordinal()] = false; + tableName = "DataMart.dbo.loaN"; + sqlTable = sqlEnv.searchTable(tableName); + assertTrue(sqlTable != null); + + tableName = "DataMart.[SalesForce].[vwAccounts]"; + // tableName = "DataMart.SalesForce.vwAccounts"; + sqlTable = sqlEnv.searchTable(tableName); + assertTrue(sqlTable != null); +// for(TSQLColumn c: sqlTable.getColumnList()){ +// System.out.println(c.getSqlTable().getNameKeepCase()+"."+c.getNameKeepCase()); +// } + } } \ No newline at end of file diff --git a/src/test/java/sybase/testColumnName.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testColumnName.java similarity index 96% rename from src/test/java/sybase/testColumnName.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testColumnName.java index b683f19d..1a0781e6 100644 --- a/src/test/java/sybase/testColumnName.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testColumnName.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.EExpressionType; diff --git a/src/test/java/sybase/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateProcedure.java similarity index 97% rename from src/test/java/sybase/testCreateProcedure.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateProcedure.java index 3e8c23e6..d35e8782 100644 --- a/src/test/java/sybase/testCreateProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateProcedure.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; /* * Date: 14-6-12 */ diff --git a/src/test/java/sybase/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateTable.java similarity index 96% rename from src/test/java/sybase/testCreateTable.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateTable.java index 2181ee37..44738cba 100644 --- a/src/test/java/sybase/testCreateTable.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateTable.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; /* * Date: 13-8-30 */ diff --git a/src/test/java/sybase/testDeleteStatistics.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testDeleteStatistics.java similarity index 95% rename from src/test/java/sybase/testDeleteStatistics.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testDeleteStatistics.java index 44e3d6f1..f817101e 100644 --- a/src/test/java/sybase/testDeleteStatistics.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testDeleteStatistics.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; /* * Date: 14-11-11 */ diff --git a/src/test/java/sybase/testDumpTran.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testDumpTran.java similarity index 97% rename from src/test/java/sybase/testDumpTran.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testDumpTran.java index d3571554..16ab791d 100644 --- a/src/test/java/sybase/testDumpTran.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testDumpTran.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; /* * Date: 13-9-2 */ diff --git a/src/test/java/sybase/testExecWithNoKeyword.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testExecWithNoKeyword.java similarity index 96% rename from src/test/java/sybase/testExecWithNoKeyword.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testExecWithNoKeyword.java index 6aa50c93..57036d0b 100644 --- a/src/test/java/sybase/testExecWithNoKeyword.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testExecWithNoKeyword.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/sybase/testFunctionTable.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testFunctionTable.java similarity index 97% rename from src/test/java/sybase/testFunctionTable.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testFunctionTable.java index 5b386f5e..8005dbd0 100644 --- a/src/test/java/sybase/testFunctionTable.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testFunctionTable.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/sybase/testHint.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testHint.java similarity index 98% rename from src/test/java/sybase/testHint.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testHint.java index 58a0233b..c71edde2 100644 --- a/src/test/java/sybase/testHint.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testHint.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; /* * Date: 13-9-2 */ diff --git a/src/test/java/sybase/testInsertBulk.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testInsertBulk.java similarity index 94% rename from src/test/java/sybase/testInsertBulk.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testInsertBulk.java index 2edb06b4..ce9f5825 100644 --- a/src/test/java/sybase/testInsertBulk.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testInsertBulk.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; /* * Date: 14-6-12 */ diff --git a/src/test/java/sybase/testIsolation.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testIsolation.java similarity index 95% rename from src/test/java/sybase/testIsolation.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testIsolation.java index 5bfb2a8c..9bb3ffcd 100644 --- a/src/test/java/sybase/testIsolation.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testIsolation.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; /* * Date: 13-8-29 */ diff --git a/src/test/java/sybase/testPartialParsing.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testPartialParsing.java similarity index 98% rename from src/test/java/sybase/testPartialParsing.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testPartialParsing.java index 6b266812..e6ea9218 100644 --- a/src/test/java/sybase/testPartialParsing.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testPartialParsing.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; /* * Date: 12-9-20 */ diff --git a/src/test/java/sybase/testWritetext.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testWritetext.java similarity index 95% rename from src/test/java/sybase/testWritetext.java rename to src/test/java/gudusoft/gsqlparser/sybaseTest/testWritetext.java index 5bbf51af..f7ed3566 100644 --- a/src/test/java/sybase/testWritetext.java +++ b/src/test/java/gudusoft/gsqlparser/sybaseTest/testWritetext.java @@ -1,4 +1,4 @@ -package sybase; +package gudusoft.gsqlparser.sybaseTest; /* * Date: 14-11-11 */ diff --git a/src/test/java/teradata/testAlterConstraint.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterConstraint.java similarity index 95% rename from src/test/java/teradata/testAlterConstraint.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testAlterConstraint.java index 1b8cb7b8..375b4e20 100644 --- a/src/test/java/teradata/testAlterConstraint.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterConstraint.java @@ -1,4 +1,4 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/teradata/testAlterProcedure.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterProcedure.java similarity index 93% rename from src/test/java/teradata/testAlterProcedure.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testAlterProcedure.java index fd77a2bf..dcc99d6a 100644 --- a/src/test/java/teradata/testAlterProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterProcedure.java @@ -1,4 +1,4 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/teradata/testAlterTableAddColumns.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterTableAddColumns.java similarity index 97% rename from src/test/java/teradata/testAlterTableAddColumns.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testAlterTableAddColumns.java index 93f17827..5a278495 100644 --- a/src/test/java/teradata/testAlterTableAddColumns.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterTableAddColumns.java @@ -1,28 +1,28 @@ -package teradata; - -import gudusoft.gsqlparser.EAlterTableOptionType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TAlterTableOption; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import junit.framework.TestCase; - - -public class testAlterTableAddColumns extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "ALTER TABLE DB_STAGE_AKG.T50307_S02_AGL_BAL_3 ADD AGL_BAL_AMT DECIMAL(18,4), ADD NETTING_AGL_BAL_AMT DECIMAL(18,4);"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstaltertable); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getAlterTableOptionList().size() == 2); - TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.AddColumn); - assertTrue(alterTableOption.getColumnDefinitionList().getColumn(0).getColumnName().toString().equalsIgnoreCase("AGL_BAL_AMT")); - alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(1); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.AddColumn); - assertTrue(alterTableOption.getColumnDefinitionList().getColumn(0).getColumnName().toString().equalsIgnoreCase("NETTING_AGL_BAL_AMT")); - } -} +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EAlterTableOptionType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TAlterTableOption; +import gudusoft.gsqlparser.stmt.TAlterTableStatement; +import junit.framework.TestCase; + + +public class testAlterTableAddColumns extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "ALTER TABLE DB_STAGE_AKG.T50307_S02_AGL_BAL_3 ADD AGL_BAL_AMT DECIMAL(18,4), ADD NETTING_AGL_BAL_AMT DECIMAL(18,4);"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstaltertable); + TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); + assertTrue(alterTable.getAlterTableOptionList().size() == 2); + TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); + assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.AddColumn); + assertTrue(alterTableOption.getColumnDefinitionList().getColumn(0).getColumnName().toString().equalsIgnoreCase("AGL_BAL_AMT")); + alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(1); + assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.AddColumn); + assertTrue(alterTableOption.getColumnDefinitionList().getColumn(0).getColumnName().toString().equalsIgnoreCase("NETTING_AGL_BAL_AMT")); + } +} diff --git a/src/test/java/teradata/testAlterZone.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterZone.java similarity index 96% rename from src/test/java/teradata/testAlterZone.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testAlterZone.java index f07e7e43..6f94f235 100644 --- a/src/test/java/teradata/testAlterZone.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterZone.java @@ -1,4 +1,4 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.EDbVendor; diff --git a/src/test/java/teradata/testAnalyticFunction.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testAnalyticFunction.java similarity index 96% rename from src/test/java/teradata/testAnalyticFunction.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testAnalyticFunction.java index 6c7a4c96..c41b38bf 100644 --- a/src/test/java/teradata/testAnalyticFunction.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testAnalyticFunction.java @@ -1,32 +1,32 @@ -package teradata; - - -import gudusoft.gsqlparser.EBoundaryType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ELimitRowType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testAnalyticFunction extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "Select max(employee_id) over (ROWS BETWEEN 1 FOLLOWING AND 2 following) as a from employee;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn rc = select.getResultColumnList().getResultColumn(0); - TExpression e = rc.getExpr(); - TFunctionCall functionCall = e.getFunctionCall(); - TWindowFrame windowFrame = functionCall.getWindowDef().getWindowFrame(); - assertTrue(windowFrame.getLimitRowType() == ELimitRowType.Rows); - TWindowFrameBoundary startBoundary = windowFrame.getStartBoundary(); - assertTrue(startBoundary.getBoundaryType() == EBoundaryType.ebtFollowing); - assertTrue(startBoundary.getBoundaryNumber().toString().equalsIgnoreCase("1")); - TWindowFrameBoundary endBoundary = windowFrame.getEndBoundary(); - assertTrue(endBoundary.getBoundaryType() == EBoundaryType.ebtFollowing); - assertTrue(endBoundary.getBoundaryNumber().toString().equalsIgnoreCase("2")); - } -} +package gudusoft.gsqlparser.teradataTest; + + +import gudusoft.gsqlparser.EBoundaryType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ELimitRowType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testAnalyticFunction extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "Select max(employee_id) over (ROWS BETWEEN 1 FOLLOWING AND 2 following) as a from employee;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn rc = select.getResultColumnList().getResultColumn(0); + TExpression e = rc.getExpr(); + TFunctionCall functionCall = e.getFunctionCall(); + TWindowFrame windowFrame = functionCall.getWindowDef().getWindowFrame(); + assertTrue(windowFrame.getLimitRowType() == ELimitRowType.Rows); + TWindowFrameBoundary startBoundary = windowFrame.getStartBoundary(); + assertTrue(startBoundary.getBoundaryType() == EBoundaryType.ebtFollowing); + assertTrue(startBoundary.getBoundaryNumber().toString().equalsIgnoreCase("1")); + TWindowFrameBoundary endBoundary = windowFrame.getEndBoundary(); + assertTrue(endBoundary.getBoundaryType() == EBoundaryType.ebtFollowing); + assertTrue(endBoundary.getBoundaryNumber().toString().equalsIgnoreCase("2")); + } +} diff --git a/src/test/java/teradata/testBTEQ.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testBTEQ.java similarity index 98% rename from src/test/java/teradata/testBTEQ.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testBTEQ.java index c9c91f99..27e9bf10 100644 --- a/src/test/java/teradata/testBTEQ.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testBTEQ.java @@ -1,4 +1,4 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/teradata/testBeginTrans.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testBeginTrans.java similarity index 91% rename from src/test/java/teradata/testBeginTrans.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testBeginTrans.java index 03004214..89c64fe9 100644 --- a/src/test/java/teradata/testBeginTrans.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testBeginTrans.java @@ -1,18 +1,18 @@ -package teradata; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - - -public class testBeginTrans extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "USING(AA1 int,AA2 int) BT;\n" + - "EXEC insert1(:AA1);\n" + - "EXEC insert2(:AA2);"; - assertTrue(sqlparser.parse() == 0); - - } -} +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import junit.framework.TestCase; + + +public class testBeginTrans extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "USING(AA1 int,AA2 int) BT;\n" + + "EXEC insert1(:AA1);\n" + + "EXEC insert2(:AA2);"; + assertTrue(sqlparser.parse() == 0); + + } +} diff --git a/src/test/java/teradata/testCastDate.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCastDate.java similarity index 97% rename from src/test/java/teradata/testCastDate.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testCastDate.java index a2c9332f..47ea8e79 100644 --- a/src/test/java/teradata/testCastDate.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testCastDate.java @@ -1,94 +1,94 @@ -package teradata; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.ELiteralType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCastDate extends TestCase { - - public void test0(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select (date),f3 (date) from t1"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = resultColumn0.getExpr(); - assertTrue(expression0.getExpressionType() == EExpressionType.parenthesis_t); - assertTrue(expression0.getLeftOperand().getExpressionType() == EExpressionType.function_t); - assertTrue(expression0.getLeftOperand().getFunctionCall().toString().equalsIgnoreCase("date")); - - TResultColumn resultColumn1 = select.getResultColumnList().getResultColumn(1); - TExpression expression1 = resultColumn1.getExpr(); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expression1.getObjectOperand().toString().equalsIgnoreCase("f3")); - assertTrue(expression1.getDataConversions().size() == 1); - - } - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select ydLLdNG_mTzTEMENT_dD\n" + - " ,Col1_DT (date) cust_Dt\n" + - " ,PRORzTE_dND\n" + - " FROM zxxountLevelxhzrgem\n" + - " WHERE ydLL_mTzTEMENT_xHzRGE_zMT > 0"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(1); - assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("cust_Dt")); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(resultColumn.getExpr().getObjectOperand().toString().equalsIgnoreCase("Col1_DT")); - } - - public void test2(){ - // mantisbt/view.php?id=1354 - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select hire_date(DATE) \n" + - "from employee \n" + - "where hire_date(DATE) = DATE '1971-10-18' \n" + - "group by 1\n" + - "having hire_date(DATE) = DATE '1971-10-18' \n" + - "order by hire_date(DATE)"; - - // System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - //System.out.println(resultColumn.getExpr().getExpressionType()); - - TExpression right = select.getWhereClause().getCondition().getRightOperand(); - assertTrue(right.getExpressionType() == EExpressionType.simple_constant_t); - assertTrue(right.getConstantOperand().getLiteralType() == ELiteralType.etDate); - //System.out.println(right.getConstantOperand().getLiteralType()); - - TExpression having = select.getGroupByClause().getHavingClause().getLeftOperand(); - // System.out.println(having.getExpressionType()); - - TExpression order = select.getOrderbyClause().getItems().getOrderByItem(0).getSortKey(); - //System.out.println(order.getExpressionType()); - } - - public void testDateAsColumn(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select \"date\" , col from emp"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); - // System.out.println(resultColumn.getExpr().getExpressionType() ); -// assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); - } - -} +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.ELiteralType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TResultColumn; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testCastDate extends TestCase { + + public void test0(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select (date),f3 (date) from t1"; + + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn0 = select.getResultColumnList().getResultColumn(0); + TExpression expression0 = resultColumn0.getExpr(); + assertTrue(expression0.getExpressionType() == EExpressionType.parenthesis_t); + assertTrue(expression0.getLeftOperand().getExpressionType() == EExpressionType.function_t); + assertTrue(expression0.getLeftOperand().getFunctionCall().toString().equalsIgnoreCase("date")); + + TResultColumn resultColumn1 = select.getResultColumnList().getResultColumn(1); + TExpression expression1 = resultColumn1.getExpr(); + assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(expression1.getObjectOperand().toString().equalsIgnoreCase("f3")); + assertTrue(expression1.getDataConversions().size() == 1); + + } + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select ydLLdNG_mTzTEMENT_dD\n" + + " ,Col1_DT (date) cust_Dt\n" + + " ,PRORzTE_dND\n" + + " FROM zxxountLevelxhzrgem\n" + + " WHERE ydLL_mTzTEMENT_xHzRGE_zMT > 0"; + + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(1); + assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("cust_Dt")); + assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(resultColumn.getExpr().getObjectOperand().toString().equalsIgnoreCase("Col1_DT")); + } + + public void test2(){ + // mantisbt/view.php?id=1354 + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select hire_date(DATE) \n" + + "from employee \n" + + "where hire_date(DATE) = DATE '1971-10-18' \n" + + "group by 1\n" + + "having hire_date(DATE) = DATE '1971-10-18' \n" + + "order by hire_date(DATE)"; + + // System.out.println(sqlparser.sqltext); + + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); + //System.out.println(resultColumn.getExpr().getExpressionType()); + + TExpression right = select.getWhereClause().getCondition().getRightOperand(); + assertTrue(right.getExpressionType() == EExpressionType.simple_constant_t); + assertTrue(right.getConstantOperand().getLiteralType() == ELiteralType.etDate); + //System.out.println(right.getConstantOperand().getLiteralType()); + + TExpression having = select.getGroupByClause().getHavingClause().getLeftOperand(); + // System.out.println(having.getExpressionType()); + + TExpression order = select.getOrderbyClause().getItems().getOrderByItem(0).getSortKey(); + //System.out.println(order.getExpressionType()); + } + + public void testDateAsColumn(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select \"date\" , col from emp"; + + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); + assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); + // System.out.println(resultColumn.getExpr().getExpressionType() ); +// assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); + } + +} diff --git a/src/test/java/teradata/testCheckSourceColumn.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCheckSourceColumn.java similarity index 97% rename from src/test/java/teradata/testCheckSourceColumn.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testCheckSourceColumn.java index b3cefc5c..d397c173 100644 --- a/src/test/java/teradata/testCheckSourceColumn.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testCheckSourceColumn.java @@ -1,11 +1,10 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; import gudusoft.gsqlparser.TGSqlParser; import gudusoft.gsqlparser.nodes.TObjectName; import gudusoft.gsqlparser.stmt.TMergeSqlStatement; -import gudusoft.gsqlparser.stmt.teradata.TAlterConstraintStmt; import gudusoft.gsqlparser.util.THelp; import junit.framework.TestCase; diff --git a/src/test/java/teradata/testCollectStatistics.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCollectStatistics.java similarity index 97% rename from src/test/java/teradata/testCollectStatistics.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testCollectStatistics.java index 397328b6..ad82aef3 100644 --- a/src/test/java/teradata/testCollectStatistics.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testCollectStatistics.java @@ -1,59 +1,59 @@ -package teradata; -/* - * Date: 12-9-26 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.teradata.TCollectColumnIndex; -import gudusoft.gsqlparser.stmt.teradata.TTeradataCollectStatistics; -import junit.framework.TestCase; - -public class testCollectStatistics extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "COLLECT STATS COLUMN (id) on db1.tbl1;"; - assertTrue(sqlparser.parse() == 0); - TTeradataCollectStatistics collectStatistics = (TTeradataCollectStatistics)sqlparser.sqlstatements.get(0); - assertTrue(collectStatistics.getTableName().toString().equalsIgnoreCase("db1.tbl1")); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "Collect stats \n" + - "index(member), \n" + - "column(dateyymmdd)\n" + - "On db.sampletable"; - assertTrue(sqlparser.parse() == 0); - TTeradataCollectStatistics collectStatistics = (TTeradataCollectStatistics)sqlparser.sqlstatements.get(0); - assertTrue(collectStatistics.getTableName().toString().equalsIgnoreCase("db.sampletable")); - assertTrue(collectStatistics.getColumnIndexList().size() == 2); - TCollectColumnIndex collectColumnIndex = collectStatistics.getColumnIndexList().get(0); - assertTrue(collectColumnIndex.isIndex()); - assertTrue(collectColumnIndex.getColumnNameList().getObjectName(0).toString().equalsIgnoreCase("member")); - collectColumnIndex = collectStatistics.getColumnIndexList().get(1); - assertTrue(collectColumnIndex.isColumn()); - assertTrue(collectColumnIndex.getColumnNameList().getObjectName(0).toString().equalsIgnoreCase("dateyymmdd")); - - } - - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "Collect stats dwh.stg_fact_example column(partition);"; - assertTrue(sqlparser.parse() == 0); - TTeradataCollectStatistics collectStatistics = (TTeradataCollectStatistics)sqlparser.sqlstatements.get(0); - assertTrue(collectStatistics.getTableName().toString().equalsIgnoreCase("dwh.stg_fact_example")); - - assertTrue(collectStatistics.getColumnIndexList().size() == 1); - TCollectColumnIndex collectColumnIndex = collectStatistics.getColumnIndexList().get(0); - assertTrue(collectColumnIndex.isColumn()); - assertTrue(collectColumnIndex.getColumnNameList().getObjectName(0).toString().equalsIgnoreCase("partition")); - - - } - - -} +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 12-9-26 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.teradata.TCollectColumnIndex; +import gudusoft.gsqlparser.stmt.teradata.TTeradataCollectStatistics; +import junit.framework.TestCase; + +public class testCollectStatistics extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "COLLECT STATS COLUMN (id) on db1.tbl1;"; + assertTrue(sqlparser.parse() == 0); + TTeradataCollectStatistics collectStatistics = (TTeradataCollectStatistics)sqlparser.sqlstatements.get(0); + assertTrue(collectStatistics.getTableName().toString().equalsIgnoreCase("db1.tbl1")); + + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "Collect stats \n" + + "index(member), \n" + + "column(dateyymmdd)\n" + + "On db.sampletable"; + assertTrue(sqlparser.parse() == 0); + TTeradataCollectStatistics collectStatistics = (TTeradataCollectStatistics)sqlparser.sqlstatements.get(0); + assertTrue(collectStatistics.getTableName().toString().equalsIgnoreCase("db.sampletable")); + assertTrue(collectStatistics.getColumnIndexList().size() == 2); + TCollectColumnIndex collectColumnIndex = collectStatistics.getColumnIndexList().get(0); + assertTrue(collectColumnIndex.isIndex()); + assertTrue(collectColumnIndex.getColumnNameList().getObjectName(0).toString().equalsIgnoreCase("member")); + collectColumnIndex = collectStatistics.getColumnIndexList().get(1); + assertTrue(collectColumnIndex.isColumn()); + assertTrue(collectColumnIndex.getColumnNameList().getObjectName(0).toString().equalsIgnoreCase("dateyymmdd")); + + } + + + public void test3(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "Collect stats dwh.stg_fact_example column(partition);"; + assertTrue(sqlparser.parse() == 0); + TTeradataCollectStatistics collectStatistics = (TTeradataCollectStatistics)sqlparser.sqlstatements.get(0); + assertTrue(collectStatistics.getTableName().toString().equalsIgnoreCase("dwh.stg_fact_example")); + + assertTrue(collectStatistics.getColumnIndexList().size() == 1); + TCollectColumnIndex collectColumnIndex = collectStatistics.getColumnIndexList().get(0); + assertTrue(collectColumnIndex.isColumn()); + assertTrue(collectColumnIndex.getColumnNameList().getObjectName(0).toString().equalsIgnoreCase("partition")); + + + } + + +} diff --git a/src/test/java/teradata/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateProcedure.java similarity index 97% rename from src/test/java/teradata/testCreateProcedure.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testCreateProcedure.java index 07b918f2..0453cdb3 100644 --- a/src/test/java/teradata/testCreateProcedure.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateProcedure.java @@ -1,465 +1,465 @@ -package teradata; - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TDeclareVariable; -import gudusoft.gsqlparser.stmt.*; -import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare; -import gudusoft.gsqlparser.stmt.mssql.TMssqlFetch; -import gudusoft.gsqlparser.stmt.mssql.TMssqlOpen; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.ESqlStatementType.*; - -public class testCreateProcedure extends TestCase { - - public void testMultipleSQLs(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE PROCEDURE EMP_SCHEMA.SAMPLE_PROC ()\n" + - "BEGIN\n" + - " SELECT * FROM ETL_DB.EMPLOYEE;\n" + - "END;\n" + - "SELECT * FROM ETL_DB.EMPLOYEE;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 2); - - - } - - - public void testPrepare(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE PROCEDURE S1.GetEmployeeSalary\n" + - "(IN EmpName VARCHAR(100), OUT Salary DEC(10,2))\n" + - "BEGIN\n" + - "DECLARE SqlStr VARCHAR(1000);\n" + - "DECLARE C1 CURSOR FOR S1;\n" + - "SET SqlStr = 'SELECT Salary FROM EmployeeTable WHERE EmpName = ?';\n" + - "PREPARE S1 FROM SqlStr;\n" + - "OPEN C1 USING EmpName;\n" + - "FETCH C1 INTO Salary;\n" + - "CLOSE C1;\n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("S1.GetEmployeeSalary")); - - assertTrue(cp.getBodyStatements().size() == 7); - - - System.out.println(cp.getBodyStatements().get(3).sqlstatementtype); - assertTrue(cp.getBodyStatements().get(3).sqlstatementtype == sstprepare); - TPrepareStmt prepareStmt =(TPrepareStmt)cp.getBodyStatements().get(3); - assertTrue(prepareStmt.getStmtName().toString().equalsIgnoreCase("S1")); - assertTrue(prepareStmt.getPreparableStmtStr().equalsIgnoreCase("SqlStr")); - } - - public void testFetch(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "REPLACE PROCEDURE S1.CURSOR_PROC(IN SCENARIO VARCHAR(20), OUT RUN_STATUS VARCHAR(20) )\n" + - "BEGIN\n" + - "\n" + - "DECLARE id INTEGER DEFAULT 0;\n" + - "DECLARE desc VARCHAR(50);\n" + - "\n" + - "DECLARE C4 CURSOR FOR\n" + - "select department_id, department_description from foodmart.department;\n" + - "\n" + - "OPEN C4;\n" + - "FETCH C4 INTO id, desc;\n" + - "CLOSE C4;\n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("S1.CURSOR_PROC")); - - assertTrue(cp.getBodyStatements().size() == 6); - - - assertTrue(cp.getBodyStatements().get(4).sqlstatementtype == sstmssqlfetch); - TMssqlFetch fetch =(TMssqlFetch)cp.getBodyStatements().get(4); - assertTrue(fetch.getCursorName().toString().equalsIgnoreCase("C4")); - assertTrue(fetch.getVariableNames().getObjectName(0).toString().equalsIgnoreCase("id")); - assertTrue(fetch.getVariableNames().getObjectName(1).toString().equalsIgnoreCase("desc")); - } - - public void testSet(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "REPLACE PROCEDURE S1.SET_CHECK()\n" + - "BEGIN\n" + - "\tDECLARE A INTEGER DEFAULT 0;\n" + - "\tSET A = 10;\n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("S1.SET_CHECK")); - - assertTrue(cp.getBodyStatements().size() == 2); - - - assertTrue(cp.getBodyStatements().get(1).sqlstatementtype == sstset); - TSetStmt setStmt = (TSetStmt)cp.getBodyStatements().get(1); - assertTrue(setStmt.getVariableName().toString().equalsIgnoreCase("A")); - assertTrue(setStmt.getVariableValue().toString().equalsIgnoreCase("10")); - } - - public void testWhile(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE PROCEDURE proc (\n" + - " IN i INTEGER,\n" + - " IN j INTEGER)\n" + - "BEGIN\n" + - " DECLARE ii integer;\n" + - " set ii=i;\n" + - " while (ii= V_ACT_CNT\n" + - "END REPEAT ;\n" + - "\n" + - "--Close the cursor and commit\n" + - "CLOSE CUR_LOAD_DATE;\n" + - "CALL DBC.SYSEXECSQL('COMMIT;');\n" + - "\n" + - "--Set output parameter values\n" + - "SET OUT_LOAD_DATES = V_LOAD_DATES;\n" + - "SET OUT_LOAD_DATE_CNT = V_LOAD_DATE_CNT ;\n" + - "SET OUT_LOAD_QRY = V_LOAD_QRY; \n" + - "\n" + - "END ;\n"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("EDW1_RBG_APPLOGIC.LOAD_TMDW_SVC_LOAN_H_MSCC")); - - - assertTrue(cp.getBodyStatements().size() == 22); - assertTrue(cp.getBodyStatements().get(9).sqlstatementtype == ESqlStatementType.sstcall); - assertTrue(cp.getBodyStatements().get(10).sqlstatementtype == ESqlStatementType.sstcommit); - assertTrue(cp.getBodyStatements().get(16).sqlstatementtype == ESqlStatementType.sstRepeat); - assertTrue(cp.getBodyStatements().get(17).sqlstatementtype == ESqlStatementType.sst_closestmt); - - - TRepeatStmt repeatStmt = (TRepeatStmt)cp.getBodyStatements().get(16); - assertTrue(repeatStmt.getCondition().toString().equalsIgnoreCase("V_COUNTER >= V_ACT_CNT")); - assertTrue(repeatStmt.getBodyStatements().size() == 7); - - assertTrue(cp.getBodyStatements().get(7).sqlstatementtype == sstmssqldeclare); - TMssqlDeclare declare = (TMssqlDeclare)cp.getBodyStatements().get(7); - assertTrue(declare.getSubquery().getTables().getTable(0).getTableName().toString().equalsIgnoreCase("CTE_REQ_DATE")); - - } - -} +package gudusoft.gsqlparser.teradataTest; + + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.TDeclareVariable; +import gudusoft.gsqlparser.stmt.*; +import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare; +import gudusoft.gsqlparser.stmt.mssql.TMssqlFetch; +import gudusoft.gsqlparser.stmt.mssql.TMssqlOpen; +import junit.framework.TestCase; + +import static gudusoft.gsqlparser.ESqlStatementType.*; + +public class testCreateProcedure extends TestCase { + + public void testMultipleSQLs(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "CREATE PROCEDURE EMP_SCHEMA.SAMPLE_PROC ()\n" + + "BEGIN\n" + + " SELECT * FROM ETL_DB.EMPLOYEE;\n" + + "END;\n" + + "SELECT * FROM ETL_DB.EMPLOYEE;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.size() == 2); + + + } + + + public void testPrepare(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "CREATE PROCEDURE S1.GetEmployeeSalary\n" + + "(IN EmpName VARCHAR(100), OUT Salary DEC(10,2))\n" + + "BEGIN\n" + + "DECLARE SqlStr VARCHAR(1000);\n" + + "DECLARE C1 CURSOR FOR S1;\n" + + "SET SqlStr = 'SELECT Salary FROM EmployeeTable WHERE EmpName = ?';\n" + + "PREPARE S1 FROM SqlStr;\n" + + "OPEN C1 USING EmpName;\n" + + "FETCH C1 INTO Salary;\n" + + "CLOSE C1;\n" + + "END;"; + assertTrue(sqlparser.parse() == 0); + + TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); + assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("S1.GetEmployeeSalary")); + + assertTrue(cp.getBodyStatements().size() == 7); + + + System.out.println(cp.getBodyStatements().get(3).sqlstatementtype); + assertTrue(cp.getBodyStatements().get(3).sqlstatementtype == sstprepare); + TPrepareStmt prepareStmt =(TPrepareStmt)cp.getBodyStatements().get(3); + assertTrue(prepareStmt.getStmtName().toString().equalsIgnoreCase("S1")); + assertTrue(prepareStmt.getPreparableStmtStr().equalsIgnoreCase("SqlStr")); + } + + public void testFetch(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "REPLACE PROCEDURE S1.CURSOR_PROC(IN SCENARIO VARCHAR(20), OUT RUN_STATUS VARCHAR(20) )\n" + + "BEGIN\n" + + "\n" + + "DECLARE id INTEGER DEFAULT 0;\n" + + "DECLARE desc VARCHAR(50);\n" + + "\n" + + "DECLARE C4 CURSOR FOR\n" + + "select department_id, department_description from foodmart.department;\n" + + "\n" + + "OPEN C4;\n" + + "FETCH C4 INTO id, desc;\n" + + "CLOSE C4;\n" + + "END;"; + assertTrue(sqlparser.parse() == 0); + + TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); + assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("S1.CURSOR_PROC")); + + assertTrue(cp.getBodyStatements().size() == 6); + + + assertTrue(cp.getBodyStatements().get(4).sqlstatementtype == sstmssqlfetch); + TMssqlFetch fetch =(TMssqlFetch)cp.getBodyStatements().get(4); + assertTrue(fetch.getCursorName().toString().equalsIgnoreCase("C4")); + assertTrue(fetch.getVariableNames().getObjectName(0).toString().equalsIgnoreCase("id")); + assertTrue(fetch.getVariableNames().getObjectName(1).toString().equalsIgnoreCase("desc")); + } + + public void testSet(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "REPLACE PROCEDURE S1.SET_CHECK()\n" + + "BEGIN\n" + + "\tDECLARE A INTEGER DEFAULT 0;\n" + + "\tSET A = 10;\n" + + "END;"; + assertTrue(sqlparser.parse() == 0); + + TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); + assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("S1.SET_CHECK")); + + assertTrue(cp.getBodyStatements().size() == 2); + + + assertTrue(cp.getBodyStatements().get(1).sqlstatementtype == sstset); + TSetStmt setStmt = (TSetStmt)cp.getBodyStatements().get(1); + assertTrue(setStmt.getVariableName().toString().equalsIgnoreCase("A")); + assertTrue(setStmt.getVariableValue().toString().equalsIgnoreCase("10")); + } + + public void testWhile(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "CREATE PROCEDURE proc (\n" + + " IN i INTEGER,\n" + + " IN j INTEGER)\n" + + "BEGIN\n" + + " DECLARE ii integer;\n" + + " set ii=i;\n" + + " while (ii= V_ACT_CNT\n" + + "END REPEAT ;\n" + + "\n" + + "--Close the cursor and commit\n" + + "CLOSE CUR_LOAD_DATE;\n" + + "CALL DBC.SYSEXECSQL('COMMIT;');\n" + + "\n" + + "--Set output parameter values\n" + + "SET OUT_LOAD_DATES = V_LOAD_DATES;\n" + + "SET OUT_LOAD_DATE_CNT = V_LOAD_DATE_CNT ;\n" + + "SET OUT_LOAD_QRY = V_LOAD_QRY; \n" + + "\n" + + "END ;\n"; + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); + assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("EDW1_RBG_APPLOGIC.LOAD_TMDW_SVC_LOAN_H_MSCC")); + + + assertTrue(cp.getBodyStatements().size() == 22); + assertTrue(cp.getBodyStatements().get(9).sqlstatementtype == ESqlStatementType.sstcall); + assertTrue(cp.getBodyStatements().get(10).sqlstatementtype == ESqlStatementType.sstcommit); + assertTrue(cp.getBodyStatements().get(16).sqlstatementtype == ESqlStatementType.sstRepeat); + assertTrue(cp.getBodyStatements().get(17).sqlstatementtype == ESqlStatementType.sst_closestmt); + + + TRepeatStmt repeatStmt = (TRepeatStmt)cp.getBodyStatements().get(16); + assertTrue(repeatStmt.getCondition().toString().equalsIgnoreCase("V_COUNTER >= V_ACT_CNT")); + assertTrue(repeatStmt.getBodyStatements().size() == 7); + + assertTrue(cp.getBodyStatements().get(7).sqlstatementtype == sstmssqldeclare); + TMssqlDeclare declare = (TMssqlDeclare)cp.getBodyStatements().get(7); + assertTrue(declare.getSubquery().getTables().getTable(0).getTableName().toString().equalsIgnoreCase("CTE_REQ_DATE")); + + } + +} diff --git a/src/test/java/teradata/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTable.java similarity index 97% rename from src/test/java/teradata/testCreateTable.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTable.java index f7e618ec..fe8883b9 100644 --- a/src/test/java/teradata/testCreateTable.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTable.java @@ -1,170 +1,170 @@ -package teradata; -/* - * Date: 13-8-28 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.EFunctionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TCTE; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.functions.TRangeNFunction; -import gudusoft.gsqlparser.nodes.teradata.TIndexDefinition; -import gudusoft.gsqlparser.nodes.teradata.TRangeNFunctionItem; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateTable extends TestCase { - - - public void testIndexDefinitionCaseN(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "create table tst.table(\n" + - " col1 integer,\n" + - " CURR_IND char(1))\n" + - "PRIMARY INDEX BILLG_ACCT_NUPI ( col1 )\n" + - "PARTITION BY CASE_N(\n" + - "CURR_IND = 'Y',\n" + - "CURR_IND = 'N')\n"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("tst.table")); - assertTrue(createTable.getColumnList().size() == 2 ); - - TIndexDefinition indexDefinition = createTable.getIndexDefinitions().get(0); - assertTrue(indexDefinition.isPrimary()); - assertTrue(!indexDefinition.isUnique()); - assertTrue(indexDefinition.getIndexColumns().size() == 1); - assertTrue(indexDefinition.getIndexColumns().getObjectName(0).toString().equalsIgnoreCase("col1")); - - TIndexDefinition indexDefinition1 = createTable.getIndexDefinitions().get(1); - - assertTrue(indexDefinition1.getPartitioningLevels().size() == 1); - TExpression partitionExpr = indexDefinition1.getPartitioningLevels().get(0).getPartitionExpression(); - assertTrue(partitionExpr.getExpressionType() == EExpressionType.function_t); - TFunctionCall functionCall = partitionExpr.getFunctionCall(); - assertTrue(functionCall.getFunctionType() == EFunctionType.case_n_t); - TExpression arg0 = functionCall.getArgs().getExpression(0); - assertTrue(arg0.getLeftOperand().toString().equalsIgnoreCase("CURR_IND")); - assertTrue(arg0.getRightOperand().toString().equalsIgnoreCase("'Y'")); - } - - public void testIndexDefinition(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE TABLE Sales\n" + - "(storeid INTEGER NOT NULL,\n" + - "productid INTEGER NOT NULL,\n" + - "salesdate DATE FORMAT 'yyyy-mm-dd' NOT NULL,\n" + - "totalrevenue DECIMAL(13,2),\n" + - "totalsold INTEGER,\n" + - "note VARCHAR(256))\n" + - "UNIQUE PRIMARY INDEX (storeid, productid, salesdate)\n" + - "PARTITION BY (\n" + - "RANGE_N(salesdate BETWEEN\n" + - "DATE '2002-01-01' AND DATE '2008-12-31'\n" + - "EACH INTERVAL '1' YEAR),\n" + - "RANGE_N(storeid BETWEEN 1 AND 300 EACH 100),\n" + - "RANGE_N(productid BETWEEN 1 AND 400 EACH 100));"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("Sales")); - assertTrue(createTable.getColumnList().size() == 6 ); - - TIndexDefinition indexDefinition = createTable.getIndexDefinitions().get(0); - assertTrue(indexDefinition.isPrimary()); - assertTrue(indexDefinition.isUnique()); - assertTrue(indexDefinition.getIndexColumns().size() == 3); - assertTrue(indexDefinition.getIndexColumns().getObjectName(0).toString().equalsIgnoreCase("storeid")); - - TIndexDefinition indexDefinition1 = createTable.getIndexDefinitions().get(1); - - assertTrue(indexDefinition1.getPartitioningLevels().size() == 3); - //assertTrue(indexDefinition.getPartitionExprList().size() == 3); - TExpression partitionExpr = indexDefinition1.getPartitioningLevels().get(0).getPartitionExpression(); - assertTrue(partitionExpr.getExpressionType() == EExpressionType.function_t); - assertTrue(partitionExpr.getFunctionCall().getFunctionType() == EFunctionType.range_n_t); - TRangeNFunction rangeNFunciton = (TRangeNFunction) partitionExpr.getFunctionCall(); - - TExpression test_expression = rangeNFunciton.getExpr1(); - assertTrue(test_expression.toString().equalsIgnoreCase("salesdate")); - assertTrue(rangeNFunciton.getRangeNFunctionItems().size() == 1); - - TRangeNFunctionItem rangeNFunctionItem = rangeNFunciton.getRangeNFunctionItems().get(0); - assertTrue(rangeNFunctionItem.getStartExpression().toString().equalsIgnoreCase("DATE '2002-01-01'")); - assertTrue(rangeNFunctionItem.getEndExpression().toString().equalsIgnoreCase("DATE '2008-12-31'")); - assertTrue(rangeNFunctionItem.getRangeSize().toString().equalsIgnoreCase("INTERVAL '1' YEAR")); - } - - - public void testSubquery(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE VOLATILE TABLE MYREC_V AS (\n" + - " WITH RECURSIVE MYREC( COL1) AS\n" + - " ( SELECT XX.COL1\n" + - " FROM (\n" + - " SELECT COL1,\n" + - " TRIM(MIN(CAST(CAST(L1_ID AS BIGINT) AS VARCHAR(100)))) AS COL2\n" + - " FROM DB2.TABLE2\n" + - " GROUP BY 1\n" + - " ) XX\n" + - " JOIN DB1.TABLE1 C\n" + - " ON XX.COL2 = C.COL2\n" + - " )\n" + - " SELECT COL1\n" + - " FROM MYREC\n" + - ")WITH DATA PRIMARY INDEX(COL1) ON COMMIT PRESERVE ROWS;"; - - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("MYREC_V")); - - assertTrue(createTable.getSubQuery().getCteList().size() == 1); - TCTE cte = createTable.getSubQuery().getCteList().getCTE(0); - assertTrue(cte.getSubquery().toString().equalsIgnoreCase("( SELECT XX.COL1\n" + - " FROM (\n" + - " SELECT COL1,\n" + - " TRIM(MIN(CAST(CAST(L1_ID AS BIGINT) AS VARCHAR(100)))) AS COL2\n" + - " FROM DB2.TABLE2\n" + - " GROUP BY 1\n" + - " ) XX\n" + - " JOIN DB1.TABLE1 C\n" + - " ON XX.COL2 = C.COL2\n" + - " )")); - - } - - public void testTableKind() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - - sqlparser.sqltext = "create volatile table schema.vt (id int, name varchar(1))"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("schema.vt")); - assertTrue(createTable.getTableKinds().toString().equalsIgnoreCase("[etkVolatile]")); - - sqlparser.sqltext = "create table schema.vt (id int, name varchar(1));"; - assertTrue(sqlparser.parse() == 0); - createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("schema.vt")); - assertTrue(createTable.getTableKinds().size() == 0); - - sqlparser.sqltext = "create multiset volatile table vt (id int, name varchar(1));"; - assertTrue(sqlparser.parse() == 0); - createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("vt")); - assertTrue(createTable.getTableKinds().toString().equalsIgnoreCase("[etkVolatile, etkMultiset]")); - - } - -} - +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 13-8-28 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.EFunctionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TCTE; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TFunctionCall; +import gudusoft.gsqlparser.nodes.functions.TRangeNFunction; +import gudusoft.gsqlparser.nodes.teradata.TIndexDefinition; +import gudusoft.gsqlparser.nodes.teradata.TRangeNFunctionItem; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; +import junit.framework.TestCase; + +public class testCreateTable extends TestCase { + + + public void testIndexDefinitionCaseN(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "create table tst.table(\n" + + " col1 integer,\n" + + " CURR_IND char(1))\n" + + "PRIMARY INDEX BILLG_ACCT_NUPI ( col1 )\n" + + "PARTITION BY CASE_N(\n" + + "CURR_IND = 'Y',\n" + + "CURR_IND = 'N')\n"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("tst.table")); + assertTrue(createTable.getColumnList().size() == 2 ); + + TIndexDefinition indexDefinition = createTable.getIndexDefinitions().get(0); + assertTrue(indexDefinition.isPrimary()); + assertTrue(!indexDefinition.isUnique()); + assertTrue(indexDefinition.getIndexColumns().size() == 1); + assertTrue(indexDefinition.getIndexColumns().getObjectName(0).toString().equalsIgnoreCase("col1")); + + TIndexDefinition indexDefinition1 = createTable.getIndexDefinitions().get(1); + + assertTrue(indexDefinition1.getPartitioningLevels().size() == 1); + TExpression partitionExpr = indexDefinition1.getPartitioningLevels().get(0).getPartitionExpression(); + assertTrue(partitionExpr.getExpressionType() == EExpressionType.function_t); + TFunctionCall functionCall = partitionExpr.getFunctionCall(); + assertTrue(functionCall.getFunctionType() == EFunctionType.case_n_t); + TExpression arg0 = functionCall.getArgs().getExpression(0); + assertTrue(arg0.getLeftOperand().toString().equalsIgnoreCase("CURR_IND")); + assertTrue(arg0.getRightOperand().toString().equalsIgnoreCase("'Y'")); + } + + public void testIndexDefinition(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "CREATE TABLE Sales\n" + + "(storeid INTEGER NOT NULL,\n" + + "productid INTEGER NOT NULL,\n" + + "salesdate DATE FORMAT 'yyyy-mm-dd' NOT NULL,\n" + + "totalrevenue DECIMAL(13,2),\n" + + "totalsold INTEGER,\n" + + "note VARCHAR(256))\n" + + "UNIQUE PRIMARY INDEX (storeid, productid, salesdate)\n" + + "PARTITION BY (\n" + + "RANGE_N(salesdate BETWEEN\n" + + "DATE '2002-01-01' AND DATE '2008-12-31'\n" + + "EACH INTERVAL '1' YEAR),\n" + + "RANGE_N(storeid BETWEEN 1 AND 300 EACH 100),\n" + + "RANGE_N(productid BETWEEN 1 AND 400 EACH 100));"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("Sales")); + assertTrue(createTable.getColumnList().size() == 6 ); + + TIndexDefinition indexDefinition = createTable.getIndexDefinitions().get(0); + assertTrue(indexDefinition.isPrimary()); + assertTrue(indexDefinition.isUnique()); + assertTrue(indexDefinition.getIndexColumns().size() == 3); + assertTrue(indexDefinition.getIndexColumns().getObjectName(0).toString().equalsIgnoreCase("storeid")); + + TIndexDefinition indexDefinition1 = createTable.getIndexDefinitions().get(1); + + assertTrue(indexDefinition1.getPartitioningLevels().size() == 3); + //assertTrue(indexDefinition.getPartitionExprList().size() == 3); + TExpression partitionExpr = indexDefinition1.getPartitioningLevels().get(0).getPartitionExpression(); + assertTrue(partitionExpr.getExpressionType() == EExpressionType.function_t); + assertTrue(partitionExpr.getFunctionCall().getFunctionType() == EFunctionType.range_n_t); + TRangeNFunction rangeNFunciton = (TRangeNFunction) partitionExpr.getFunctionCall(); + + TExpression test_expression = rangeNFunciton.getExpr1(); + assertTrue(test_expression.toString().equalsIgnoreCase("salesdate")); + assertTrue(rangeNFunciton.getRangeNFunctionItems().size() == 1); + + TRangeNFunctionItem rangeNFunctionItem = rangeNFunciton.getRangeNFunctionItems().get(0); + assertTrue(rangeNFunctionItem.getStartExpression().toString().equalsIgnoreCase("DATE '2002-01-01'")); + assertTrue(rangeNFunctionItem.getEndExpression().toString().equalsIgnoreCase("DATE '2008-12-31'")); + assertTrue(rangeNFunctionItem.getRangeSize().toString().equalsIgnoreCase("INTERVAL '1' YEAR")); + } + + + public void testSubquery(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "CREATE VOLATILE TABLE MYREC_V AS (\n" + + " WITH RECURSIVE MYREC( COL1) AS\n" + + " ( SELECT XX.COL1\n" + + " FROM (\n" + + " SELECT COL1,\n" + + " TRIM(MIN(CAST(CAST(L1_ID AS BIGINT) AS VARCHAR(100)))) AS COL2\n" + + " FROM DB2.TABLE2\n" + + " GROUP BY 1\n" + + " ) XX\n" + + " JOIN DB1.TABLE1 C\n" + + " ON XX.COL2 = C.COL2\n" + + " )\n" + + " SELECT COL1\n" + + " FROM MYREC\n" + + ")WITH DATA PRIMARY INDEX(COL1) ON COMMIT PRESERVE ROWS;"; + + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("MYREC_V")); + + assertTrue(createTable.getSubQuery().getCteList().size() == 1); + TCTE cte = createTable.getSubQuery().getCteList().getCTE(0); + assertTrue(cte.getSubquery().toString().equalsIgnoreCase("( SELECT XX.COL1\n" + + " FROM (\n" + + " SELECT COL1,\n" + + " TRIM(MIN(CAST(CAST(L1_ID AS BIGINT) AS VARCHAR(100)))) AS COL2\n" + + " FROM DB2.TABLE2\n" + + " GROUP BY 1\n" + + " ) XX\n" + + " JOIN DB1.TABLE1 C\n" + + " ON XX.COL2 = C.COL2\n" + + " )")); + + } + + public void testTableKind() { + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + + sqlparser.sqltext = "create volatile table schema.vt (id int, name varchar(1))"; + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("schema.vt")); + assertTrue(createTable.getTableKinds().toString().equalsIgnoreCase("[etkVolatile]")); + + sqlparser.sqltext = "create table schema.vt (id int, name varchar(1));"; + assertTrue(sqlparser.parse() == 0); + createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("schema.vt")); + assertTrue(createTable.getTableKinds().size() == 0); + + sqlparser.sqltext = "create multiset volatile table vt (id int, name varchar(1));"; + assertTrue(sqlparser.parse() == 0); + createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); + assertTrue(createTable.getTableName().toString().equalsIgnoreCase("vt")); + assertTrue(createTable.getTableKinds().toString().equalsIgnoreCase("[etkVolatile, etkMultiset]")); + + } + +} + diff --git a/src/test/java/teradata/testCreateTableWithDataIndex.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTableWithDataIndex.java similarity index 98% rename from src/test/java/teradata/testCreateTableWithDataIndex.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTableWithDataIndex.java index 91b603e1..c09cb77c 100644 --- a/src/test/java/teradata/testCreateTableWithDataIndex.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTableWithDataIndex.java @@ -1,8 +1,7 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TCTE; import gudusoft.gsqlparser.nodes.teradata.TIndexDefinition; import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; import junit.framework.TestCase; diff --git a/src/test/java/teradata/testCreateTrigger.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTrigger.java similarity index 97% rename from src/test/java/teradata/testCreateTrigger.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTrigger.java index 1c745884..1bfee61b 100644 --- a/src/test/java/teradata/testCreateTrigger.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTrigger.java @@ -1,175 +1,175 @@ -package teradata; - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TCreateTriggerStmt; -import junit.framework.TestCase; - -public class testCreateTrigger extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "REPLACE TRIGGER IDW_APP_DPR.TR_UPD_WELL_DAILY_OVR AFTER \n" + - "UPDATE ON IDW_APP_DPR.DPRUPDATES\n" + - "REFERENCING NEW AS NEW_WDO\n" + - "FOR EACH ROW\n" + - "(\n" + - "DELETE IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE ALL;\n" + - "\n" + - "INSERT INTO IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE (UWI, UWI_SIDETRACK,\n" + - "ACTIVE_IND, PROD_DATE, OIL_TOTAL, OIL_BLOWCASE, GAS_HP, GAS_LP,\n" + - "EFFECTIVE_DATE, EXPIRY_DATE, PPDM_GUID, SOURCE, ROW_CHANGED_BY,\n" + - "ROW_CHANGED_DATE, ROW_CREATED_BY, ROW_CREATED_DATE,\n" + - "ROW_QUALITY_ID, JOB_RUN_ID, GAS_FUEL, GAS_LIFT) \n" + - "VALUES \n" + - "(\n" + - "NEW_WDO.WELLID, \n" + - "'99', \n" + - "'Y', \n" + - "NEW_WDO.PRODDATE, \n" + - "NEW_WDO.TANKOIL, \n" + - "NEW_WDO.BCOIL,\n" + - "NEW_WDO.HPGAS, \n" + - "NEW_WDO.LPGAS, \n" + - "CURRENT_TIMESTAMP(0), \n" + - "CAST('9999-12-31 00:00:00' AS TIMESTAMP(0)), \n" + - "NULL, \n" + - "'DPR',\n" + - "NEW_WDO.ROW_CHANGED_BY, \n" + - "CURRENT_TIMESTAMP(0), \n" + - "NEW_WDO.ROW_CREATED_BY, \n" + - "NEW_WDO.ROW_CREATED_DATE,\n" + - "'192', \n" + - "CURRENT_TIMESTAMP(FORMAT 'YYYYMMDDHHMISS') (VARCHAR(16)),\n" + - "NEW_WDO.GASFUEL,\n" + - "NEW_WDO.GASLIFT);\n" + - "\n" + - "INSERT INTO IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE (UWI, UWI_SIDETRACK,\n" + - "ACTIVE_IND, PROD_DATE, OIL_TOTAL, OIL_BLOWCASE, GAS_HP, GAS_LP,\n" + - "EFFECTIVE_DATE, EXPIRY_DATE, PPDM_GUID, SOURCE, ROW_CHANGED_BY,\n" + - "ROW_CHANGED_DATE, ROW_CREATED_BY, ROW_CREATED_DATE,\n" + - "ROW_QUALITY_ID, JOB_RUN_ID, GAS_FUEL, GAS_LIFT)\n" + - "SELECT \n" + - "S.UWI, \n" + - "S.UWI_SIDETRACK, \n" + - "S.ACTIVE_IND, \n" + - "S.PROD_DATE, \n" + - "S.OIL_TOTAL, \n" + - "S.OIL_BLOWCASE,\n" + - "S.GAS_HP, \n" + - "S.GAS_LP, \n" + - "S.EFFECTIVE_DATE, \n" + - "S.EXPIRY_DATE, \n" + - "S.PPDM_GUID, \n" + - "S.SOURCE,\n" + - "S.ROW_CHANGED_BY, \n" + - "CURRENT_TIMESTAMP(0), \n" + - "S.ROW_CREATED_BY, \n" + - "S.ROW_CREATED_DATE,\n" + - "S.ROW_QUALITY_ID, \n" + - "CURRENT_TIMESTAMP(FORMAT 'YYYYMMDDHHMISS') (VARCHAR(16)),\n" + - "S.GAS_FUEL, \n" + - "S.GAS_LIFT\n" + - "FROM IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE S\n" + - "INNER JOIN \n" + - "IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE C\n" + - "ON \n" + - "S.UWI = C.UWI\n" + - "AND S.PROD_DATE = C.PROD_DATE\n" + - "AND C.ACTIVE_IND = 'Y'\n" + - "WHERE \n" + - "(\n" + - "CASE WHEN (\n" + - "((S.OIL_TOTAL IS NULL AND C.OIL_TOTAL IS NULL) OR (S.OIL_TOTAL = C.OIL_TOTAL)) \n" + - "AND ((S.OIL_BLOWCASE IS NULL AND C.OIL_BLOWCASE IS NULL) OR (S.OIL_BLOWCASE = C.OIL_BLOWCASE)) \n" + - "AND ((S.GAS_HP IS NULL AND C.GAS_HP IS NULL) OR (S.GAS_HP = C.GAS_HP)) \n" + - "AND ((S.GAS_LP IS NULL AND C.GAS_LP IS NULL) OR (S.GAS_LP = C.GAS_LP)) \n" + - "AND ((S.GAS_FUEL IS NULL AND C.GAS_FUEL IS NULL) OR (S.GAS_FUEL = C.GAS_FUEL))\n" + - "AND ((S.GAS_LIFT IS NULL AND C.GAS_LIFT IS NULL) OR (S.GAS_LIFT = C.GAS_LIFT))\n" + - ") THEN 'N' \n" + - "ELSE 'Y' \n" + - "END ) = 'Y';\n" + - "\n" + - "\n" + - "UPDATE IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE\n" + - "FROM \n" + - "(\n" + - "SELECT \n" + - "UWI, \n" + - "UWI_SIDETRACK, \n" + - "ACTIVE_IND, \n" + - "PROD_DATE, \n" + - "OIL_TOTAL, \n" + - "OIL_BLOWCASE,\n" + - "GAS_HP, \n" + - "GAS_LP, \n" + - "EFFECTIVE_DATE, \n" + - "EXPIRY_DATE, \n" + - "PPDM_GUID, \n" + - "SOURCE,\n" + - "ROW_CHANGED_BY, \n" + - "ROW_CREATED_BY, \n" + - "ROW_CREATED_DATE,\n" + - "ROW_QUALITY_ID,\n" + - "GAS_FUEL,\n" + - "GAS_LIFT\n" + - "FROM IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE) S \n" + - "SET \n" + - "ACTIVE_IND = 'N',\n" + - "EXPIRY_DATE = CURRENT_TIMESTAMP(0),\n" + - "ROW_CHANGED_DATE = CURRENT_TIMESTAMP(0)\n" + - "WHERE \n" + - "S.UWI = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.UWI\n" + - "AND S.PROD_DATE = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.PROD_DATE\n" + - "AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.ACTIVE_IND = 'Y'\n" + - "AND (\n" + - "CASE WHEN (\n" + - "((S.OIL_TOTAL IS NULL \n" + - " AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_TOTAL IS NULL) OR (S.OIL_TOTAL = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_TOTAL)) \n" + - " AND ((S.OIL_BLOWCASE IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_BLOWCASE IS NULL) OR (S.OIL_BLOWCASE = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_BLOWCASE)) \n" + - " AND ((S.GAS_HP IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_HP IS NULL) OR (S.GAS_HP = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_HP)) \n" + - " AND ((S.GAS_LP IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LP IS NULL) OR (S.GAS_LP = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LP)) \n" + - " AND ((S.GAS_FUEL IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_FUEL IS NULL) OR (S.GAS_FUEL = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_FUEL))\n" + - "AND ((S.GAS_LIFT IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LIFT IS NULL) OR (S.GAS_LIFT = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LIFT))\n" + - ") THEN 'N' \n" + - "ELSE 'Y' \n" + - "END ) = 'Y';\n" + - ");"; - - //System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetrigger); - TCreateTriggerStmt createTriggerStmt = (TCreateTriggerStmt)sqlparser.sqlstatements.get(0); - assertTrue(createTriggerStmt.getTriggerName().toString().equalsIgnoreCase("IDW_APP_DPR.TR_UPD_WELL_DAILY_OVR")); - assertTrue(createTriggerStmt.getTables().getTable(0).toString().endsWith("IDW_APP_DPR.DPRUPDATES")); - - // dml trigger - TTriggeringClause triggeringClause = createTriggerStmt.getTriggeringClause(); - assertTrue(triggeringClause instanceof TSimpleDmlTriggerClause); - TSimpleDmlTriggerClause dmlTriggerClause = (TSimpleDmlTriggerClause)triggeringClause; - assertTrue(dmlTriggerClause.getActionTime() == ETriggerActionTime.tatAfter); - assertTrue(dmlTriggerClause.getGranularity() == ETriggerGranularity.forEachRow); - - // dml event clause - TDmlEventClause dmlEventClause = (TDmlEventClause)dmlTriggerClause.getEventClause(); - TDmlEventItem dmlEventItem = (TDmlEventItem)dmlEventClause.getEventItems().get(0); - assertTrue(dmlEventItem.getDmlType() == ESqlStatementType.sstupdate); - assertTrue(dmlEventItem.getEventName().equalsIgnoreCase("update")); - - // referencing clause - TTriggerReferencingClause referencingClause = dmlTriggerClause.getReferencingClause(); - assertTrue(referencingClause.getReferencingItems().size() == 1); - TTriggerReferencingItem referencingItem = referencingClause.getReferencingItems().get(0); - assertTrue(referencingItem.getTriggerReferencingType() == ETriggerReferencingType.rtNew); - assertTrue(referencingItem.getCorrelationName().toString().equalsIgnoreCase("NEW_WDO")); - - assertTrue(createTriggerStmt.getBodyStatements().size() == 4); - assertTrue(createTriggerStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstdelete); - assertTrue(createTriggerStmt.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstinsert); - assertTrue(createTriggerStmt.getBodyStatements().get(2).sqlstatementtype == ESqlStatementType.sstinsert); - assertTrue(createTriggerStmt.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstupdate); - - } -} +package gudusoft.gsqlparser.teradataTest; + + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.stmt.TCreateTriggerStmt; +import junit.framework.TestCase; + +public class testCreateTrigger extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "REPLACE TRIGGER IDW_APP_DPR.TR_UPD_WELL_DAILY_OVR AFTER \n" + + "UPDATE ON IDW_APP_DPR.DPRUPDATES\n" + + "REFERENCING NEW AS NEW_WDO\n" + + "FOR EACH ROW\n" + + "(\n" + + "DELETE IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE ALL;\n" + + "\n" + + "INSERT INTO IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE (UWI, UWI_SIDETRACK,\n" + + "ACTIVE_IND, PROD_DATE, OIL_TOTAL, OIL_BLOWCASE, GAS_HP, GAS_LP,\n" + + "EFFECTIVE_DATE, EXPIRY_DATE, PPDM_GUID, SOURCE, ROW_CHANGED_BY,\n" + + "ROW_CHANGED_DATE, ROW_CREATED_BY, ROW_CREATED_DATE,\n" + + "ROW_QUALITY_ID, JOB_RUN_ID, GAS_FUEL, GAS_LIFT) \n" + + "VALUES \n" + + "(\n" + + "NEW_WDO.WELLID, \n" + + "'99', \n" + + "'Y', \n" + + "NEW_WDO.PRODDATE, \n" + + "NEW_WDO.TANKOIL, \n" + + "NEW_WDO.BCOIL,\n" + + "NEW_WDO.HPGAS, \n" + + "NEW_WDO.LPGAS, \n" + + "CURRENT_TIMESTAMP(0), \n" + + "CAST('9999-12-31 00:00:00' AS TIMESTAMP(0)), \n" + + "NULL, \n" + + "'DPR',\n" + + "NEW_WDO.ROW_CHANGED_BY, \n" + + "CURRENT_TIMESTAMP(0), \n" + + "NEW_WDO.ROW_CREATED_BY, \n" + + "NEW_WDO.ROW_CREATED_DATE,\n" + + "'192', \n" + + "CURRENT_TIMESTAMP(FORMAT 'YYYYMMDDHHMISS') (VARCHAR(16)),\n" + + "NEW_WDO.GASFUEL,\n" + + "NEW_WDO.GASLIFT);\n" + + "\n" + + "INSERT INTO IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE (UWI, UWI_SIDETRACK,\n" + + "ACTIVE_IND, PROD_DATE, OIL_TOTAL, OIL_BLOWCASE, GAS_HP, GAS_LP,\n" + + "EFFECTIVE_DATE, EXPIRY_DATE, PPDM_GUID, SOURCE, ROW_CHANGED_BY,\n" + + "ROW_CHANGED_DATE, ROW_CREATED_BY, ROW_CREATED_DATE,\n" + + "ROW_QUALITY_ID, JOB_RUN_ID, GAS_FUEL, GAS_LIFT)\n" + + "SELECT \n" + + "S.UWI, \n" + + "S.UWI_SIDETRACK, \n" + + "S.ACTIVE_IND, \n" + + "S.PROD_DATE, \n" + + "S.OIL_TOTAL, \n" + + "S.OIL_BLOWCASE,\n" + + "S.GAS_HP, \n" + + "S.GAS_LP, \n" + + "S.EFFECTIVE_DATE, \n" + + "S.EXPIRY_DATE, \n" + + "S.PPDM_GUID, \n" + + "S.SOURCE,\n" + + "S.ROW_CHANGED_BY, \n" + + "CURRENT_TIMESTAMP(0), \n" + + "S.ROW_CREATED_BY, \n" + + "S.ROW_CREATED_DATE,\n" + + "S.ROW_QUALITY_ID, \n" + + "CURRENT_TIMESTAMP(FORMAT 'YYYYMMDDHHMISS') (VARCHAR(16)),\n" + + "S.GAS_FUEL, \n" + + "S.GAS_LIFT\n" + + "FROM IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE S\n" + + "INNER JOIN \n" + + "IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE C\n" + + "ON \n" + + "S.UWI = C.UWI\n" + + "AND S.PROD_DATE = C.PROD_DATE\n" + + "AND C.ACTIVE_IND = 'Y'\n" + + "WHERE \n" + + "(\n" + + "CASE WHEN (\n" + + "((S.OIL_TOTAL IS NULL AND C.OIL_TOTAL IS NULL) OR (S.OIL_TOTAL = C.OIL_TOTAL)) \n" + + "AND ((S.OIL_BLOWCASE IS NULL AND C.OIL_BLOWCASE IS NULL) OR (S.OIL_BLOWCASE = C.OIL_BLOWCASE)) \n" + + "AND ((S.GAS_HP IS NULL AND C.GAS_HP IS NULL) OR (S.GAS_HP = C.GAS_HP)) \n" + + "AND ((S.GAS_LP IS NULL AND C.GAS_LP IS NULL) OR (S.GAS_LP = C.GAS_LP)) \n" + + "AND ((S.GAS_FUEL IS NULL AND C.GAS_FUEL IS NULL) OR (S.GAS_FUEL = C.GAS_FUEL))\n" + + "AND ((S.GAS_LIFT IS NULL AND C.GAS_LIFT IS NULL) OR (S.GAS_LIFT = C.GAS_LIFT))\n" + + ") THEN 'N' \n" + + "ELSE 'Y' \n" + + "END ) = 'Y';\n" + + "\n" + + "\n" + + "UPDATE IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE\n" + + "FROM \n" + + "(\n" + + "SELECT \n" + + "UWI, \n" + + "UWI_SIDETRACK, \n" + + "ACTIVE_IND, \n" + + "PROD_DATE, \n" + + "OIL_TOTAL, \n" + + "OIL_BLOWCASE,\n" + + "GAS_HP, \n" + + "GAS_LP, \n" + + "EFFECTIVE_DATE, \n" + + "EXPIRY_DATE, \n" + + "PPDM_GUID, \n" + + "SOURCE,\n" + + "ROW_CHANGED_BY, \n" + + "ROW_CREATED_BY, \n" + + "ROW_CREATED_DATE,\n" + + "ROW_QUALITY_ID,\n" + + "GAS_FUEL,\n" + + "GAS_LIFT\n" + + "FROM IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE) S \n" + + "SET \n" + + "ACTIVE_IND = 'N',\n" + + "EXPIRY_DATE = CURRENT_TIMESTAMP(0),\n" + + "ROW_CHANGED_DATE = CURRENT_TIMESTAMP(0)\n" + + "WHERE \n" + + "S.UWI = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.UWI\n" + + "AND S.PROD_DATE = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.PROD_DATE\n" + + "AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.ACTIVE_IND = 'Y'\n" + + "AND (\n" + + "CASE WHEN (\n" + + "((S.OIL_TOTAL IS NULL \n" + + " AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_TOTAL IS NULL) OR (S.OIL_TOTAL = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_TOTAL)) \n" + + " AND ((S.OIL_BLOWCASE IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_BLOWCASE IS NULL) OR (S.OIL_BLOWCASE = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_BLOWCASE)) \n" + + " AND ((S.GAS_HP IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_HP IS NULL) OR (S.GAS_HP = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_HP)) \n" + + " AND ((S.GAS_LP IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LP IS NULL) OR (S.GAS_LP = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LP)) \n" + + " AND ((S.GAS_FUEL IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_FUEL IS NULL) OR (S.GAS_FUEL = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_FUEL))\n" + + "AND ((S.GAS_LIFT IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LIFT IS NULL) OR (S.GAS_LIFT = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LIFT))\n" + + ") THEN 'N' \n" + + "ELSE 'Y' \n" + + "END ) = 'Y';\n" + + ");"; + + //System.out.println(sqlparser.sqltext); + + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetrigger); + TCreateTriggerStmt createTriggerStmt = (TCreateTriggerStmt)sqlparser.sqlstatements.get(0); + assertTrue(createTriggerStmt.getTriggerName().toString().equalsIgnoreCase("IDW_APP_DPR.TR_UPD_WELL_DAILY_OVR")); + assertTrue(createTriggerStmt.getTables().getTable(0).toString().endsWith("IDW_APP_DPR.DPRUPDATES")); + + // dml trigger + TTriggeringClause triggeringClause = createTriggerStmt.getTriggeringClause(); + assertTrue(triggeringClause instanceof TSimpleDmlTriggerClause); + TSimpleDmlTriggerClause dmlTriggerClause = (TSimpleDmlTriggerClause)triggeringClause; + assertTrue(dmlTriggerClause.getActionTime() == ETriggerActionTime.tatAfter); + assertTrue(dmlTriggerClause.getGranularity() == ETriggerGranularity.forEachRow); + + // dml event clause + TDmlEventClause dmlEventClause = (TDmlEventClause)dmlTriggerClause.getEventClause(); + TDmlEventItem dmlEventItem = (TDmlEventItem)dmlEventClause.getEventItems().get(0); + assertTrue(dmlEventItem.getDmlType() == ESqlStatementType.sstupdate); + assertTrue(dmlEventItem.getEventName().equalsIgnoreCase("update")); + + // referencing clause + TTriggerReferencingClause referencingClause = dmlTriggerClause.getReferencingClause(); + assertTrue(referencingClause.getReferencingItems().size() == 1); + TTriggerReferencingItem referencingItem = referencingClause.getReferencingItems().get(0); + assertTrue(referencingItem.getTriggerReferencingType() == ETriggerReferencingType.rtNew); + assertTrue(referencingItem.getCorrelationName().toString().equalsIgnoreCase("NEW_WDO")); + + assertTrue(createTriggerStmt.getBodyStatements().size() == 4); + assertTrue(createTriggerStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstdelete); + assertTrue(createTriggerStmt.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstinsert); + assertTrue(createTriggerStmt.getBodyStatements().get(2).sqlstatementtype == ESqlStatementType.sstinsert); + assertTrue(createTriggerStmt.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstupdate); + + } +} diff --git a/src/test/java/teradata/testDataConversion.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testDataConversion.java similarity index 99% rename from src/test/java/teradata/testDataConversion.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testDataConversion.java index 2030c097..0386fb36 100644 --- a/src/test/java/teradata/testDataConversion.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testDataConversion.java @@ -1,4 +1,4 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.*; import gudusoft.gsqlparser.nodes.TDatatypeAttribute; diff --git a/src/test/java/teradata/testDateFunction.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testDateFunction.java similarity index 96% rename from src/test/java/teradata/testDateFunction.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testDateFunction.java index f15c26f2..13ff8c8e 100644 --- a/src/test/java/teradata/testDateFunction.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testDateFunction.java @@ -1,33 +1,33 @@ -package teradata; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.EFunctionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testDateFunction extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT '2020-12-12'(NAMED dt_run), EMPLOYEE_ID\n" + - "FROM foodmart.TRIMMED_EMPLOYEE\n" + - "GROUP BY DATE, EMPLOYEE_ID;"; - - // System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expression = select.getGroupByClause().getItems().getGroupByItem(0).getExpr(); - //System.out.println(select.getGroupByClause().getItems().size()); - assertTrue(expression.toString().equalsIgnoreCase("DATE")); - assertTrue(expression.getExpressionType() == EExpressionType.function_t); - TFunctionCall functionCall = expression.getFunctionCall(); - assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("DATE")); - assertTrue(functionCall.getFunctionType() == EFunctionType.date_t); - } -} +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.EFunctionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TFunctionCall; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testDateFunction extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT '2020-12-12'(NAMED dt_run), EMPLOYEE_ID\n" + + "FROM foodmart.TRIMMED_EMPLOYEE\n" + + "GROUP BY DATE, EMPLOYEE_ID;"; + + // System.out.println(sqlparser.sqltext); + + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TExpression expression = select.getGroupByClause().getItems().getGroupByItem(0).getExpr(); + //System.out.println(select.getGroupByClause().getItems().size()); + assertTrue(expression.toString().equalsIgnoreCase("DATE")); + assertTrue(expression.getExpressionType() == EExpressionType.function_t); + TFunctionCall functionCall = expression.getFunctionCall(); + assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("DATE")); + assertTrue(functionCall.getFunctionType() == EFunctionType.date_t); + } +} diff --git a/src/test/java/teradata/testDropConstraint.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testDropConstraint.java similarity index 94% rename from src/test/java/teradata/testDropConstraint.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testDropConstraint.java index f4e7371d..ce45e780 100644 --- a/src/test/java/teradata/testDropConstraint.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testDropConstraint.java @@ -1,4 +1,4 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/teradata/testExecuteMacro.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testExecuteMacro.java similarity index 96% rename from src/test/java/teradata/testExecuteMacro.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testExecuteMacro.java index 6294c179..86ec9bcf 100644 --- a/src/test/java/teradata/testExecuteMacro.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testExecuteMacro.java @@ -1,44 +1,44 @@ -package teradata; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExecParameter; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.teradata.TTeradataExecute; -import junit.framework.TestCase; - -public class testExecuteMacro extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "EXEC add_log_info('1', CAST('2016-02-23' AS DATE FORMAT 'YYYY-MM-DD'), 'CAD_RK', 'Blad CAD_RK_P_K42', -1);"; - assertTrue(sqlparser.parse() == 0); - TTeradataExecute execute = (TTeradataExecute)sqlparser.sqlstatements.get(0); - - assertTrue(execute.getMacroName().toString().equalsIgnoreCase("add_log_info")); - assertTrue(execute.getParameters().size() == 5); - assertTrue(execute.getParameters().getExecParameter(0).getParameterValue().toString().equalsIgnoreCase("'1'")); - TExpression expr = execute.getParameters().getExecParameter(1).getParameterValue(); - assertTrue(expr.getExpressionType() == EExpressionType.function_t); - assertTrue(expr.getFunctionCall().getFunctionName().toString().equalsIgnoreCase("CAST")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "EXECUTE new_hire (fl_name='Toby Smith', title='Programmer',doh=DATE -1);"; - assertTrue(sqlparser.parse() == 0); - TTeradataExecute execute = (TTeradataExecute)sqlparser.sqlstatements.get(0); - - assertTrue(execute.getMacroName().toString().equalsIgnoreCase("new_hire")); - TExecParameter parameter = execute.getParameters().getExecParameter(0); - assertTrue(parameter.getParameterName().toString().equalsIgnoreCase("fl_name")); - assertTrue(parameter.getParameterValue().toString().equalsIgnoreCase("'Toby Smith'")); - - } - +package gudusoft.gsqlparser.teradataTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExecParameter; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.stmt.teradata.TTeradataExecute; +import junit.framework.TestCase; + +public class testExecuteMacro extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "EXEC add_log_info('1', CAST('2016-02-23' AS DATE FORMAT 'YYYY-MM-DD'), 'CAD_RK', 'Blad CAD_RK_P_K42', -1);"; + assertTrue(sqlparser.parse() == 0); + TTeradataExecute execute = (TTeradataExecute)sqlparser.sqlstatements.get(0); + + assertTrue(execute.getMacroName().toString().equalsIgnoreCase("add_log_info")); + assertTrue(execute.getParameters().size() == 5); + assertTrue(execute.getParameters().getExecParameter(0).getParameterValue().toString().equalsIgnoreCase("'1'")); + TExpression expr = execute.getParameters().getExecParameter(1).getParameterValue(); + assertTrue(expr.getExpressionType() == EExpressionType.function_t); + assertTrue(expr.getFunctionCall().getFunctionName().toString().equalsIgnoreCase("CAST")); + + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "EXECUTE new_hire (fl_name='Toby Smith', title='Programmer',doh=DATE -1);"; + assertTrue(sqlparser.parse() == 0); + TTeradataExecute execute = (TTeradataExecute)sqlparser.sqlstatements.get(0); + + assertTrue(execute.getMacroName().toString().equalsIgnoreCase("new_hire")); + TExecParameter parameter = execute.getParameters().getExecParameter(0); + assertTrue(parameter.getParameterName().toString().equalsIgnoreCase("fl_name")); + assertTrue(parameter.getParameterValue().toString().equalsIgnoreCase("'Toby Smith'")); + + } + } \ No newline at end of file diff --git a/src/test/java/teradata/testExpandOn.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testExpandOn.java similarity index 95% rename from src/test/java/teradata/testExpandOn.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testExpandOn.java index 96736560..442f3976 100644 --- a/src/test/java/teradata/testExpandOn.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testExpandOn.java @@ -1,26 +1,26 @@ -package teradata; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.nodes.teradata.TExpandOnClause; -import junit.framework.TestCase; - -public class testExpandOn extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " SELECT id, BEGIN(bg)\n" + - " FROM tdate\n" + - " EXPAND ON pd AS bg BY ANCHOR MONDAY;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpandOnClause expandOnClause = select.getExpandOnClause(); - assertTrue(expandOnClause.getExpandExpression().toString().equalsIgnoreCase("pd")); - assertTrue(expandOnClause.getExpandColumnAlias().toString().equalsIgnoreCase("bg")); - assertTrue(expandOnClause.getAnchorName().toString().equalsIgnoreCase("MONDAY")); - - } - +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import gudusoft.gsqlparser.nodes.teradata.TExpandOnClause; +import junit.framework.TestCase; + +public class testExpandOn extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = " SELECT id, BEGIN(bg)\n" + + " FROM tdate\n" + + " EXPAND ON pd AS bg BY ANCHOR MONDAY;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TExpandOnClause expandOnClause = select.getExpandOnClause(); + assertTrue(expandOnClause.getExpandExpression().toString().equalsIgnoreCase("pd")); + assertTrue(expandOnClause.getExpandColumnAlias().toString().equalsIgnoreCase("bg")); + assertTrue(expandOnClause.getAnchorName().toString().equalsIgnoreCase("MONDAY")); + + } + } \ No newline at end of file diff --git a/src/test/java/teradata/testExprType.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testExprType.java similarity index 97% rename from src/test/java/teradata/testExprType.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testExprType.java index dca99cf8..5798d773 100644 --- a/src/test/java/teradata/testExprType.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testExprType.java @@ -1,53 +1,53 @@ -package teradata; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testExprType extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT\n" + - " USER_ID\n" + - " ,MAX(CASE WHEN RANK_ID = 1 THEN BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 2 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 3 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 4 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 5 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 6 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 7 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 8 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 9 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 10 THEN ','||BHVR_TXT ELSE '' END) bhvr_txt\n" + - " FROM\n" + - " (\n" + - " SEL slr_id USER_ID\n" + - " ,COALESCE(TRIM(BHVR_ID(FORMAT 'Z(17)9')), '')\n" + - " ||':'\n" + - " ||COALESCE(TRIM(priority(FORMAT 'Z(17)9.99')), '')\n" + - " AS BHVR_TXT\n" + - " ,ROW_NUMBER() OVER(PARTITION BY slr_id ORDER BY priority DESC) rank_id\n" + - " FROM working.b2p_seller_coaching_us clv\n" + - " QUALIFY rank_id<=10\n" + - " ) x\n" + - " GROUP BY 1"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement subquery = select.tables.getTable(0).subquery; - TExpression expr = subquery.getResultColumnList().getResultColumn(1).getExpr(); - expr = expr.getLeftOperand().getLeftOperand(); - TFunctionCall func = expr.getFunctionCall(); - expr = func.getArgs().getExpression(0); - func = expr.getFunctionCall(); - expr = func.getTrimArgument().getStringExpression(); - assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expr.getObjectOperand().toString().equalsIgnoreCase("BHVR_ID")); - } - +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TFunctionCall; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testExprType extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT\n" + + " USER_ID\n" + + " ,MAX(CASE WHEN RANK_ID = 1 THEN BHVR_TXT ELSE '' END)||\n" + + " MAX(CASE WHEN RANK_ID = 2 THEN ','||BHVR_TXT ELSE '' END)||\n" + + " MAX(CASE WHEN RANK_ID = 3 THEN ','||BHVR_TXT ELSE '' END)||\n" + + " MAX(CASE WHEN RANK_ID = 4 THEN ','||BHVR_TXT ELSE '' END)||\n" + + " MAX(CASE WHEN RANK_ID = 5 THEN ','||BHVR_TXT ELSE '' END)||\n" + + " MAX(CASE WHEN RANK_ID = 6 THEN ','||BHVR_TXT ELSE '' END)||\n" + + " MAX(CASE WHEN RANK_ID = 7 THEN ','||BHVR_TXT ELSE '' END)||\n" + + " MAX(CASE WHEN RANK_ID = 8 THEN ','||BHVR_TXT ELSE '' END)||\n" + + " MAX(CASE WHEN RANK_ID = 9 THEN ','||BHVR_TXT ELSE '' END)||\n" + + " MAX(CASE WHEN RANK_ID = 10 THEN ','||BHVR_TXT ELSE '' END) bhvr_txt\n" + + " FROM\n" + + " (\n" + + " SEL slr_id USER_ID\n" + + " ,COALESCE(TRIM(BHVR_ID(FORMAT 'Z(17)9')), '')\n" + + " ||':'\n" + + " ||COALESCE(TRIM(priority(FORMAT 'Z(17)9.99')), '')\n" + + " AS BHVR_TXT\n" + + " ,ROW_NUMBER() OVER(PARTITION BY slr_id ORDER BY priority DESC) rank_id\n" + + " FROM working.b2p_seller_coaching_us clv\n" + + " QUALIFY rank_id<=10\n" + + " ) x\n" + + " GROUP BY 1"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TSelectSqlStatement subquery = select.tables.getTable(0).subquery; + TExpression expr = subquery.getResultColumnList().getResultColumn(1).getExpr(); + expr = expr.getLeftOperand().getLeftOperand(); + TFunctionCall func = expr.getFunctionCall(); + expr = func.getArgs().getExpression(0); + func = expr.getFunctionCall(); + expr = func.getTrimArgument().getStringExpression(); + assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(expr.getObjectOperand().toString().equalsIgnoreCase("BHVR_ID")); + } + } \ No newline at end of file diff --git a/src/test/java/teradata/testExprWithAlias.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testExprWithAlias.java similarity index 97% rename from src/test/java/teradata/testExprWithAlias.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testExprWithAlias.java index 7fa42057..7182ddc3 100644 --- a/src/test/java/teradata/testExprWithAlias.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testExprWithAlias.java @@ -1,56 +1,56 @@ -package teradata; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testExprWithAlias extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " SELECT *\n" + - " FROM test\n" + - " where (\n" + - "COALESCE(SOR_SECR_POOL_ID,'UNKNOWN') AS SOR_SECR_POOL_ID ,\n" + - "COALESCE(SOR_SYS_ID,-999) AS SOR_SYS_ID ,\n" + - "COALESCE(SECR_CNDT_RCV_CO_NO,'UNKNO') AS SECR_CNDT_RCV_CO_NO ,\n" + - "COALESCE(SECR_CNDT_RCV_CC_NO,'UNKNOWN') AS SECR_CNDT_RCV_CC_NO ,\n" + - "COALESCE(SECR_CNDT_RCV_DE,'UNKNOWN') AS SECR_CNDT_RCV_DE ,\n" + - "COALESCE(SECR_PGM_ID,-999) AS SECR_PGM_ID ,\n" + - "COALESCE(SECR_POOL_SEQ_NO,-999) AS SECR_POOL_SEQ_NO\n" + - ")\n" + - "NOT IN\n" + - "(\n" + - "SELECT\n" + - "COALESCE(SOR_SECR_POOL_ID,'UNKNOWN') AS SOR_SECR_POOL_ID ,\n" + - "COALESCE(SOR_SYS_ID,-999) AS SOR_SYS_ID ,\n" + - "COALESCE(SECR_CNDT_RCV_CO_NO,'UNKNO') AS SECR_CNDT_RCV_CO_NO ,\n" + - "COALESCE(SECR_CNDT_RCV_CC_NO,'UNKNOWN') AS SECR_CNDT_RCV_CC_NO ,\n" + - "COALESCE(SECR_CNDT_RCV_DE,'UNKNOWN') AS SECR_CNDT_RCV_DE ,\n" + - "COALESCE(SECR_PGM_ID,-999) AS SECR_PGM_ID ,\n" + - "COALESCE(SECR_POOL_SEQ_NO,-999) AS SECR_POOL_SEQ_NO\n" + - "FROM ENTR.SECR_PGM_POOL_CTL\n" + - "WHERE\n" + - "UPDT_LOAD_BTCH_ID IS NULL\n" + - "AND SSFA_CLTRL_AS_OF_DT IS NOT NULL\n" + - "AND (QUAL_MTG_AMT IS NULL AND UNQUAL_MTG_AMT IS NULL AND NON_MTG_AMT IS NULL)\n" + - ")"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr1 = select.getWhereClause().getCondition(); - //System.out.print(expr1.getExpressionType()); - assertTrue(expr1.getExpressionType() == EExpressionType.in_t); - TExpression leftexpr = expr1.getLeftOperand(); - assertTrue(leftexpr.getExpressionType() == EExpressionType.list_t); - assertTrue(leftexpr.getExprList().size() == 7); - TExpression expr2 = leftexpr.getExprList().getExpression(0); - assertTrue(expr2.getExprAlias().toString().endsWith("SOR_SECR_POOL_ID")); - assertTrue(expr2.getExpressionType() == EExpressionType.function_t); - assertTrue(expr2.getFunctionCall().toString().endsWith("COALESCE(SOR_SECR_POOL_ID,'UNKNOWN')")); - } - -} +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testExprWithAlias extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = " SELECT *\n" + + " FROM test\n" + + " where (\n" + + "COALESCE(SOR_SECR_POOL_ID,'UNKNOWN') AS SOR_SECR_POOL_ID ,\n" + + "COALESCE(SOR_SYS_ID,-999) AS SOR_SYS_ID ,\n" + + "COALESCE(SECR_CNDT_RCV_CO_NO,'UNKNO') AS SECR_CNDT_RCV_CO_NO ,\n" + + "COALESCE(SECR_CNDT_RCV_CC_NO,'UNKNOWN') AS SECR_CNDT_RCV_CC_NO ,\n" + + "COALESCE(SECR_CNDT_RCV_DE,'UNKNOWN') AS SECR_CNDT_RCV_DE ,\n" + + "COALESCE(SECR_PGM_ID,-999) AS SECR_PGM_ID ,\n" + + "COALESCE(SECR_POOL_SEQ_NO,-999) AS SECR_POOL_SEQ_NO\n" + + ")\n" + + "NOT IN\n" + + "(\n" + + "SELECT\n" + + "COALESCE(SOR_SECR_POOL_ID,'UNKNOWN') AS SOR_SECR_POOL_ID ,\n" + + "COALESCE(SOR_SYS_ID,-999) AS SOR_SYS_ID ,\n" + + "COALESCE(SECR_CNDT_RCV_CO_NO,'UNKNO') AS SECR_CNDT_RCV_CO_NO ,\n" + + "COALESCE(SECR_CNDT_RCV_CC_NO,'UNKNOWN') AS SECR_CNDT_RCV_CC_NO ,\n" + + "COALESCE(SECR_CNDT_RCV_DE,'UNKNOWN') AS SECR_CNDT_RCV_DE ,\n" + + "COALESCE(SECR_PGM_ID,-999) AS SECR_PGM_ID ,\n" + + "COALESCE(SECR_POOL_SEQ_NO,-999) AS SECR_POOL_SEQ_NO\n" + + "FROM ENTR.SECR_PGM_POOL_CTL\n" + + "WHERE\n" + + "UPDT_LOAD_BTCH_ID IS NULL\n" + + "AND SSFA_CLTRL_AS_OF_DT IS NOT NULL\n" + + "AND (QUAL_MTG_AMT IS NULL AND UNQUAL_MTG_AMT IS NULL AND NON_MTG_AMT IS NULL)\n" + + ")"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TExpression expr1 = select.getWhereClause().getCondition(); + //System.out.print(expr1.getExpressionType()); + assertTrue(expr1.getExpressionType() == EExpressionType.in_t); + TExpression leftexpr = expr1.getLeftOperand(); + assertTrue(leftexpr.getExpressionType() == EExpressionType.list_t); + assertTrue(leftexpr.getExprList().size() == 7); + TExpression expr2 = leftexpr.getExprList().getExpression(0); + assertTrue(expr2.getExprAlias().toString().endsWith("SOR_SECR_POOL_ID")); + assertTrue(expr2.getExpressionType() == EExpressionType.function_t); + assertTrue(expr2.getFunctionCall().toString().endsWith("COALESCE(SOR_SECR_POOL_ID,'UNKNOWN')")); + } + +} diff --git a/src/test/java/teradata/testFastExportCmd.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testFastExportCmd.java similarity index 91% rename from src/test/java/teradata/testFastExportCmd.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testFastExportCmd.java index e34efe4d..4beb1456 100644 --- a/src/test/java/teradata/testFastExportCmd.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testFastExportCmd.java @@ -1,4 +1,4 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/teradata/testFunctionINResultColumn.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testFunctionINResultColumn.java similarity index 97% rename from src/test/java/teradata/testFunctionINResultColumn.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testFunctionINResultColumn.java index 3ed21c32..cdf5d2e3 100644 --- a/src/test/java/teradata/testFunctionINResultColumn.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testFunctionINResultColumn.java @@ -1,57 +1,57 @@ -package teradata; -/* - * Date: 14-6-16 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.nodes.teradata.TDataConversion; -import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testFunctionINResultColumn extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT a.acc_co_no (SMALLINT)\n" + - "FROM a"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn rc = select.getResultColumnList().getResultColumn(0); - assertTrue(rc.toString().equalsIgnoreCase("a.acc_co_no (SMALLINT)")); - TExpression e = rc.getExpr(); - //System.out.println(e.toString()); - assertTrue(e.toString().equalsIgnoreCase("a.acc_co_no (SMALLINT)")); - assertTrue(e.getObjectOperand().toString().equalsIgnoreCase("a.acc_co_no")); - TDataConversion dataConversion = e.getDataConversions().get(0); - TDataConversionItem dataConversionItem = dataConversion.getDataConversionItems().get(0); - assertTrue(dataConversionItem.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); - assertTrue(dataConversionItem.getDataType().getDataType() == EDataType.smallint_t); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select col1 (DATE), col2 from tab1"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn rc = select.getResultColumnList().getResultColumn(0); - assertTrue(rc.toString().equalsIgnoreCase("col1 (DATE)")); - TExpression e = rc.getExpr(); - // System.out.println(e.getExpressionType()+e.toString()); - assertTrue(e.toString().equalsIgnoreCase("col1 (DATE)")); - assertTrue(e.getObjectOperand().toString().equalsIgnoreCase("col1")); - - TDataConversion dataConversion = e.getDataConversions().get(0); - TDataConversionItem dataConversionItem = dataConversion.getDataConversionItems().get(0); - assertTrue(dataConversionItem.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); - assertTrue(dataConversionItem.getDataType().getDataType() == EDataType.date_t); - - } - -} +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 14-6-16 + */ + +import gudusoft.gsqlparser.EDataType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TResultColumn; +import gudusoft.gsqlparser.nodes.teradata.TDataConversion; +import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testFunctionINResultColumn extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT a.acc_co_no (SMALLINT)\n" + + "FROM a"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn rc = select.getResultColumnList().getResultColumn(0); + assertTrue(rc.toString().equalsIgnoreCase("a.acc_co_no (SMALLINT)")); + TExpression e = rc.getExpr(); + //System.out.println(e.toString()); + assertTrue(e.toString().equalsIgnoreCase("a.acc_co_no (SMALLINT)")); + assertTrue(e.getObjectOperand().toString().equalsIgnoreCase("a.acc_co_no")); + TDataConversion dataConversion = e.getDataConversions().get(0); + TDataConversionItem dataConversionItem = dataConversion.getDataConversionItems().get(0); + assertTrue(dataConversionItem.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); + assertTrue(dataConversionItem.getDataType().getDataType() == EDataType.smallint_t); + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select col1 (DATE), col2 from tab1"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn rc = select.getResultColumnList().getResultColumn(0); + assertTrue(rc.toString().equalsIgnoreCase("col1 (DATE)")); + TExpression e = rc.getExpr(); + // System.out.println(e.getExpressionType()+e.toString()); + assertTrue(e.toString().equalsIgnoreCase("col1 (DATE)")); + assertTrue(e.getObjectOperand().toString().equalsIgnoreCase("col1")); + + TDataConversion dataConversion = e.getDataConversions().get(0); + TDataConversionItem dataConversionItem = dataConversion.getDataConversionItems().get(0); + assertTrue(dataConversionItem.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); + assertTrue(dataConversionItem.getDataType().getDataType() == EDataType.date_t); + + } + +} diff --git a/src/test/java/teradata/testGetDiagnostics.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testGetDiagnostics.java similarity index 92% rename from src/test/java/teradata/testGetDiagnostics.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testGetDiagnostics.java index 27b98e3e..2024cfa3 100644 --- a/src/test/java/teradata/testGetDiagnostics.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testGetDiagnostics.java @@ -1,41 +1,40 @@ -package teradata; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import gudusoft.gsqlparser.stmt.teradata.TTeradataCreateProcedure; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.ESqlStatementType.*; - -public class testGetDiagnostics extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "REPLACE PROCEDURE SIT07_PRES_BLC_PGM.P_BLC_EXECUTEANDLOG\n" + - "\n" + - "MAIN:\n" + - "BEGIN\n" + - "\n" + - "DECLARE EXIT HANDLER FOR SQLEXCEPTION\n" + - "BEGIN\n" + - "\n" + - " SET VSQL_CODE = SQLCODE;\n" + - " SET VSQL_STATE = SQLSTATE;\n" + - " GET DIAGNOSTICS EXCEPTION 1 VERROR_TEXT = MESSAGE_TEXT;\n" + - " SET ORETURN_CODE = 2;\n" + - " EXECUTE VSQL_MSG;\n" + - "END;\n" + - "\n" + - "END MAIN;"; - assertTrue(sqlparser.parse() == 0); - assertTrue (sqlparser.sqlstatements.get(0).sqlstatementtype == sstcreateprocedure); - TCreateProcedureStmt procedure = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(procedure.getProcedureName().toString().equalsIgnoreCase("SIT07_PRES_BLC_PGM.P_BLC_EXECUTEANDLOG")); - assertTrue(procedure.getBodyStatements().size() == 1); - assertTrue(procedure.getBodyStatements().get(0).sqlstatementtype == sstmssqldeclare); - - } - +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; +import junit.framework.TestCase; + +import static gudusoft.gsqlparser.ESqlStatementType.*; + +public class testGetDiagnostics extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "REPLACE PROCEDURE SIT07_PRES_BLC_PGM.P_BLC_EXECUTEANDLOG\n" + + "\n" + + "MAIN:\n" + + "BEGIN\n" + + "\n" + + "DECLARE EXIT HANDLER FOR SQLEXCEPTION\n" + + "BEGIN\n" + + "\n" + + " SET VSQL_CODE = SQLCODE;\n" + + " SET VSQL_STATE = SQLSTATE;\n" + + " GET DIAGNOSTICS EXCEPTION 1 VERROR_TEXT = MESSAGE_TEXT;\n" + + " SET ORETURN_CODE = 2;\n" + + " EXECUTE VSQL_MSG;\n" + + "END;\n" + + "\n" + + "END MAIN;"; + assertTrue(sqlparser.parse() == 0); + assertTrue (sqlparser.sqlstatements.get(0).sqlstatementtype == sstcreateprocedure); + TCreateProcedureStmt procedure = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); + assertTrue(procedure.getProcedureName().toString().equalsIgnoreCase("SIT07_PRES_BLC_PGM.P_BLC_EXECUTEANDLOG")); + assertTrue(procedure.getBodyStatements().size() == 1); + assertTrue(procedure.getBodyStatements().get(0).sqlstatementtype == sstmssqldeclare); + + } + } \ No newline at end of file diff --git a/src/test/java/teradata/testGetRawStatement.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testGetRawStatement.java similarity index 95% rename from src/test/java/teradata/testGetRawStatement.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testGetRawStatement.java index e2aa0282..0162a44f 100644 --- a/src/test/java/teradata/testGetRawStatement.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testGetRawStatement.java @@ -1,31 +1,31 @@ -package teradata; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testGetRawStatement extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = ".SET MAXERROR 4\n" + - ".SET RETRY OFF\n" + - "\n" + - "SELECT c from t WHERE 1=2;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 3); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SET level=value\n" + - "SELECT level, param, 'GMKSA' (TITLE 'OWNER')\n" + - " FROM gmksa\n" + - " WHERE cycle = '03'"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 2); - - } - -} +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import junit.framework.TestCase; + +public class testGetRawStatement extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = ".SET MAXERROR 4\n" + + ".SET RETRY OFF\n" + + "\n" + + "SELECT c from t WHERE 1=2;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.size() == 3); + + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SET level=value\n" + + "SELECT level, param, 'GMKSA' (TITLE 'OWNER')\n" + + " FROM gmksa\n" + + " WHERE cycle = '03'"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.size() == 2); + + } + +} diff --git a/src/test/java/teradata/testGetTableName.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testGetTableName.java similarity index 95% rename from src/test/java/teradata/testGetTableName.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testGetTableName.java index 61b9fa83..cf160d23 100644 --- a/src/test/java/teradata/testGetTableName.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testGetTableName.java @@ -1,24 +1,24 @@ -package teradata; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testGetTableName extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT colX, colY FROM (SELECT * FROM table1, table2) as x"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = select.tables.getTable(0); - assertTrue(table.getName().equalsIgnoreCase("subquery")); - // System.out.println(table.getName()); - } - +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TTable; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + + +public class testGetTableName extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT colX, colY FROM (SELECT * FROM table1, table2) as x"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TTable table = select.tables.getTable(0); + assertTrue(table.getName().equalsIgnoreCase("subquery")); + // System.out.println(table.getName()); + } + } \ No newline at end of file diff --git a/src/test/java/teradata/testGive.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testGive.java similarity index 95% rename from src/test/java/teradata/testGive.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testGive.java index fbb40999..66f5403e 100644 --- a/src/test/java/teradata/testGive.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testGive.java @@ -1,22 +1,22 @@ -package teradata; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.teradata.TTeradataGive; -import junit.framework.TestCase; - -public class testGive extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "GIVE \"perms\" to USERS;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatagive); - TTeradataGive give = (TTeradataGive)sqlparser.sqlstatements.get(0); - assertTrue(give.getDb_or_user_name().toString().equalsIgnoreCase("\"perms\"")); - assertTrue(give.getRecipient_name().toString().equalsIgnoreCase("USERS")); - } - -} +package gudusoft.gsqlparser.teradataTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.teradata.TTeradataGive; +import junit.framework.TestCase; + +public class testGive extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "GIVE \"perms\" to USERS;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatagive); + TTeradataGive give = (TTeradataGive)sqlparser.sqlstatements.get(0); + assertTrue(give.getDb_or_user_name().toString().equalsIgnoreCase("\"perms\"")); + assertTrue(give.getRecipient_name().toString().equalsIgnoreCase("USERS")); + } + +} diff --git a/src/test/java/teradata/testGroupBy.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testGroupBy.java similarity index 95% rename from src/test/java/teradata/testGroupBy.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testGroupBy.java index a5a9899f..1a989b93 100644 --- a/src/test/java/teradata/testGroupBy.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testGroupBy.java @@ -1,91 +1,90 @@ -package teradata; -/* - * Date: 13-2-8 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TGroupBy; -import gudusoft.gsqlparser.nodes.TOrderBy; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testGroupBy extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT\n" + - "\tSECR_EXPSR_ID\n" + - "FROM\n" + - "\tENTR.SECR_EXPSR\n" + - "GROUP BY (1,2,3,4,5,6,7,8,9,10,11,12)\n" + - ";\n" + - ""; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TGroupBy groupBy = select.getGroupByClause(); - assertTrue(groupBy.getItems().size() == 12); - assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("1")); - assertTrue(groupBy.getItems().getGroupByItem(11).getExpr().toString().equalsIgnoreCase("12")); - - } - - public void testHavingAfterOrderBy(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT\n" + - " ANA_Code\n" + - ", Transaction_Date\n" + - ", Transaction_Time\n" + - ", Till_Number\n" + - ", Transaction_Number\n" + - "FROM\n" + - " WT_EPOSAP_Basket_Sales_Final\n" + - "GROUP BY\n" + - " 1,2,3,4,5\n" + - "ORDER BY\n" + - " 1,2,3,4,5\n" + - "HAVING COUNT(*)>1"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TGroupBy groupBy = select.getGroupByClause(); - assertTrue(groupBy.getHavingClause().toString().equalsIgnoreCase("COUNT(*)>1")); - assertTrue(groupBy.getItems().size() == 5); - assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("1")); - TOrderBy orderBy = select.getOrderbyClause(); - assertTrue(orderBy.getItems().size() == 5); - assertTrue(orderBy.getItems().getOrderByItem(1).getSortKey().toString().equalsIgnoreCase("2")); - - } - - - public void testHavingOnly(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT Count(*) \n" + - "FROM ( \n" + - " SELECT Count(DISTINCT location)(decimal(18,4)) AS rbp_cnt \n" + - " FROM vwv0rbp_reclass_bgt_pp_changes) AS rbp, \n" + - " ( \n" + - " SELECT count(DISTINCT location)(decimal(18,4)) AS locs_cnt \n" + - " FROM vwv0locs_location_snapshot) AS locs, \n" + - " ( \n" + - " SELECT min(reclassify_all_pct) AS reclassify_all_pct \n" + - " FROM vwv0rcm_reclass_ref \n" + - " WHERE reclassification_type_code = 'LOC') AS rcm \n" + - "WHERE ( \n" + - " rbp_cnt / locs_cnt * 100) < rcm.reclassify_all_pct \n" + - "HAVING count(*) > 0;"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TGroupBy groupBy = select.getGroupByClause(); - assertTrue(groupBy.getHavingClause().toString().equalsIgnoreCase("count(*) > 0")); - } - -} +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 13-2-8 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TGroupBy; +import gudusoft.gsqlparser.nodes.TOrderBy; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testGroupBy extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT\n" + + "\tSECR_EXPSR_ID\n" + + "FROM\n" + + "\tENTR.SECR_EXPSR\n" + + "GROUP BY (1,2,3,4,5,6,7,8,9,10,11,12)\n" + + ";\n" + + ""; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + TGroupBy groupBy = select.getGroupByClause(); + assertTrue(groupBy.getItems().size() == 12); + assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("1")); + assertTrue(groupBy.getItems().getGroupByItem(11).getExpr().toString().equalsIgnoreCase("12")); + + } + + public void testHavingAfterOrderBy(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT\n" + + " ANA_Code\n" + + ", Transaction_Date\n" + + ", Transaction_Time\n" + + ", Till_Number\n" + + ", Transaction_Number\n" + + "FROM\n" + + " WT_EPOSAP_Basket_Sales_Final\n" + + "GROUP BY\n" + + " 1,2,3,4,5\n" + + "ORDER BY\n" + + " 1,2,3,4,5\n" + + "HAVING COUNT(*)>1"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + TGroupBy groupBy = select.getGroupByClause(); + assertTrue(groupBy.getHavingClause().toString().equalsIgnoreCase("COUNT(*)>1")); + assertTrue(groupBy.getItems().size() == 5); + assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("1")); + TOrderBy orderBy = select.getOrderbyClause(); + assertTrue(orderBy.getItems().size() == 5); + assertTrue(orderBy.getItems().getOrderByItem(1).getSortKey().toString().equalsIgnoreCase("2")); + + } + + + public void testHavingOnly(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT Count(*) \n" + + "FROM ( \n" + + " SELECT Count(DISTINCT location)(decimal(18,4)) AS rbp_cnt \n" + + " FROM vwv0rbp_reclass_bgt_pp_changes) AS rbp, \n" + + " ( \n" + + " SELECT count(DISTINCT location)(decimal(18,4)) AS locs_cnt \n" + + " FROM vwv0locs_location_snapshot) AS locs, \n" + + " ( \n" + + " SELECT min(reclassify_all_pct) AS reclassify_all_pct \n" + + " FROM vwv0rcm_reclass_ref \n" + + " WHERE reclassification_type_code = 'LOC') AS rcm \n" + + "WHERE ( \n" + + " rbp_cnt / locs_cnt * 100) < rcm.reclassify_all_pct \n" + + "HAVING count(*) > 0;"; + + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + TGroupBy groupBy = select.getGroupByClause(); + assertTrue(groupBy.getHavingClause().toString().equalsIgnoreCase("count(*) > 0")); + } + +} diff --git a/src/test/java/teradata/testIntervalPeriodFunction.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testIntervalPeriodFunction.java similarity index 96% rename from src/test/java/teradata/testIntervalPeriodFunction.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testIntervalPeriodFunction.java index ced529ce..a6b14844 100644 --- a/src/test/java/teradata/testIntervalPeriodFunction.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testIntervalPeriodFunction.java @@ -1,34 +1,34 @@ -package teradata; -/* - * Date: 11-10-13 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testIntervalPeriodFunction extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT\n" + - " person_id,\n" + - " INTERVAL(enrolled_period) DAY(4) AS DayCt -- Note that DAY does not work (overflow)\n" + - "FROM person_coaching_period\n" + - "WHERE END(enrolled_period) IS NOT UNTIL_CHANGED -- Only those that are ended\n" + - "ORDER BY person_id, coaching_program, enrolled_period;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(1); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("INTERVAL(enrolled_period) DAY(4)")); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.function_t); - - TFunctionCall functionCall = resultColumn.getExpr().getFunctionCall(); - assertTrue(functionCall.getArgs().getExpression(0).toString().equalsIgnoreCase("enrolled_period")); - } - -} +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 11-10-13 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TFunctionCall; +import gudusoft.gsqlparser.nodes.TResultColumn; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testIntervalPeriodFunction extends TestCase { + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT\n" + + " person_id,\n" + + " INTERVAL(enrolled_period) DAY(4) AS DayCt -- Note that DAY does not work (overflow)\n" + + "FROM person_coaching_period\n" + + "WHERE END(enrolled_period) IS NOT UNTIL_CHANGED -- Only those that are ended\n" + + "ORDER BY person_id, coaching_program, enrolled_period;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(1); + assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("INTERVAL(enrolled_period) DAY(4)")); + assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.function_t); + + TFunctionCall functionCall = resultColumn.getExpr().getFunctionCall(); + assertTrue(functionCall.getArgs().getExpression(0).toString().equalsIgnoreCase("enrolled_period")); + } + +} diff --git a/src/test/java/teradata/testJoins.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testJoins.java similarity index 97% rename from src/test/java/teradata/testJoins.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testJoins.java index 8c59226a..aa86c215 100644 --- a/src/test/java/teradata/testJoins.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testJoins.java @@ -1,64 +1,64 @@ -package teradata; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EJoinType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TJoin; -import gudusoft.gsqlparser.nodes.TJoinItem; -import gudusoft.gsqlparser.nodes.TJoinList; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testJoins extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select *\n" + - "from\n" + - " table1 as t1\n" + - " cross join table2 as t2\n" + - " inner join ttt as s1 on t1.col1 = t2.col2\n" + - " ;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TJoinList joins = selectSqlStatement.joins; - assertTrue(joins.size() == 1); - TJoin join = joins.getJoin(0); - assertTrue(join.getTable().toString().equalsIgnoreCase("table1")); - assertTrue(join.getJoinItems().size() == 2); - TJoinItem joinItem0 = join.getJoinItems().getJoinItem(0); - TJoinItem joinItem1 = join.getJoinItems().getJoinItem(1); - assertTrue(joinItem0.getTable().toString().equalsIgnoreCase("table2")); - assertTrue(joinItem0.getJoinType() == EJoinType.cross); - assertTrue(joinItem1.getTable().toString().equalsIgnoreCase("ttt")); - assertTrue(joinItem1.getJoinType() == EJoinType.inner); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select *\n" + - "from\n" + - " table1 as t1\n" + - " cross join table2 as t2\n" + - " left join ttt as s1 on t1.col1 = t2.col2\n" + - " ;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TJoinList joins = selectSqlStatement.joins; - assertTrue(joins.size() == 1); - TJoin join = joins.getJoin(0); - assertTrue(join.getTable().toString().equalsIgnoreCase("table1")); - assertTrue(join.getJoinItems().size() == 2); - TJoinItem joinItem0 = join.getJoinItems().getJoinItem(0); - TJoinItem joinItem1 = join.getJoinItems().getJoinItem(1); - assertTrue(joinItem0.getTable().toString().equalsIgnoreCase("table2")); - assertTrue(joinItem0.getJoinType() == EJoinType.cross); - assertTrue(joinItem1.getTable().toString().equalsIgnoreCase("ttt")); - assertTrue(joinItem1.getJoinType() == EJoinType.left); - } -} +package gudusoft.gsqlparser.teradataTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EJoinType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TJoin; +import gudusoft.gsqlparser.nodes.TJoinItem; +import gudusoft.gsqlparser.nodes.TJoinList; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testJoins extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select *\n" + + "from\n" + + " table1 as t1\n" + + " cross join table2 as t2\n" + + " inner join ttt as s1 on t1.col1 = t2.col2\n" + + " ;"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + TJoinList joins = selectSqlStatement.joins; + assertTrue(joins.size() == 1); + TJoin join = joins.getJoin(0); + assertTrue(join.getTable().toString().equalsIgnoreCase("table1")); + assertTrue(join.getJoinItems().size() == 2); + TJoinItem joinItem0 = join.getJoinItems().getJoinItem(0); + TJoinItem joinItem1 = join.getJoinItems().getJoinItem(1); + assertTrue(joinItem0.getTable().toString().equalsIgnoreCase("table2")); + assertTrue(joinItem0.getJoinType() == EJoinType.cross); + assertTrue(joinItem1.getTable().toString().equalsIgnoreCase("ttt")); + assertTrue(joinItem1.getJoinType() == EJoinType.inner); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select *\n" + + "from\n" + + " table1 as t1\n" + + " cross join table2 as t2\n" + + " left join ttt as s1 on t1.col1 = t2.col2\n" + + " ;"; + assertTrue(sqlparser.parse() == 0); + + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + TJoinList joins = selectSqlStatement.joins; + assertTrue(joins.size() == 1); + TJoin join = joins.getJoin(0); + assertTrue(join.getTable().toString().equalsIgnoreCase("table1")); + assertTrue(join.getJoinItems().size() == 2); + TJoinItem joinItem0 = join.getJoinItems().getJoinItem(0); + TJoinItem joinItem1 = join.getJoinItems().getJoinItem(1); + assertTrue(joinItem0.getTable().toString().equalsIgnoreCase("table2")); + assertTrue(joinItem0.getJoinType() == EJoinType.cross); + assertTrue(joinItem1.getTable().toString().equalsIgnoreCase("ttt")); + assertTrue(joinItem1.getJoinType() == EJoinType.left); + } +} diff --git a/src/test/java/teradata/testLiteral.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testLiteral.java similarity index 91% rename from src/test/java/teradata/testLiteral.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testLiteral.java index 9ec932a0..c00f30df 100644 --- a/src/test/java/teradata/testLiteral.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testLiteral.java @@ -1,19 +1,19 @@ -package teradata; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - - -public class testLiteral extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "INSERT t1 (TIME '10:44:25.123-08:00',\n" + - "TIMESTAMP '2000-09-20 10:44:25.1234');"; - assertTrue(sqlparser.parse() == 0); - - } - +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import junit.framework.TestCase; + + +public class testLiteral extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "INSERT t1 (TIME '10:44:25.123-08:00',\n" + + "TIMESTAMP '2000-09-20 10:44:25.1234');"; + assertTrue(sqlparser.parse() == 0); + + } + } \ No newline at end of file diff --git a/src/test/java/teradata/testLock.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testLock.java similarity index 97% rename from src/test/java/teradata/testLock.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testLock.java index 411239ef..1f8c0d6a 100644 --- a/src/test/java/teradata/testLock.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testLock.java @@ -1,80 +1,80 @@ -package teradata; -/* - * Date: 13-10-11 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.teradata.TTeradataLockClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.teradata.TTeradataLock; -import junit.framework.TestCase; - -public class testLock extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " LOCKING TABLE dbc.TDWMExceptionLog FOR ACCESS \n" + - " SELECT procId as vprocid, BufferTS, QueryID, UserName, SessionID, RequestNum, \n" + - " LogicalHostID, AcctString, WDID, 0 as WDPeriodId, openvId, sysconId, \n" + - " ClassificationTime, ExceptionTime, ExceptionValue, ExceptionAction, NewWDID, \n" + - " ExceptionCode, ExceptionSubCode, ErrorText, ExtraInfo, ruleid, warningonly, \n" + - " rejectioncat \n" + - " FROM dbc.TDWMExceptionLog \n" + - " WHERE bufferTS > '2013-05-27 14:33:29.83' ORDER BY bufferTS DESC;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); - TTeradataLock lock = (TTeradataLock)sqlparser.sqlstatements.get(0); - TTeradataLockClause lockClause = lock.getLockClauses().get(0); - assertTrue(lockClause.getDatabase_table_view().toString().equalsIgnoreCase("TABLE")); - assertTrue(lockClause.getObjectName().toString().equalsIgnoreCase("dbc.TDWMExceptionLog")); - assertTrue(lockClause.getLockMode().toString().equalsIgnoreCase("ACCESS")); - assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); - assertTrue(select.getResultColumnList().size() == 24); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("dbc.TDWMExceptionLog")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " locking table t1 for access locking table t2 for access select * from t1,t2;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); - TTeradataLock lock = (TTeradataLock)sqlparser.sqlstatements.get(0); - TTeradataLockClause lockClause = lock.getLockClauses().get(0); - assertTrue(lockClause.getDatabase_table_view().toString().equalsIgnoreCase("TABLE")); - assertTrue(lockClause.getObjectName().toString().equalsIgnoreCase("t1")); - assertTrue(lockClause.getLockMode().toString().equalsIgnoreCase("ACCESS")); - assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); - assertTrue(select.getResultColumnList().size() == 1); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("t1")); - - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " LOCKING TABLE schema1.table1 FOR READ\n" + - "LOCKING TABLE schema1.table1 FOR READ\n" + - "LOCKING TABLE schema1.table2 FOR READ\n" + - "LOCKING TABLE schema1.table3 FOR READ\n" + - "Select * from schema1.table1, schema1.table2;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); - TTeradataLock lock = (TTeradataLock)sqlparser.sqlstatements.get(0); - TTeradataLockClause lockClause = lock.getLockClauses().get(0); - assertTrue(lockClause.getDatabase_table_view().toString().equalsIgnoreCase("TABLE")); - assertTrue(lockClause.getObjectName().toString().equalsIgnoreCase("schema1.table1")); - assertTrue(lockClause.getLockMode().toString().equalsIgnoreCase("READ")); - assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); - assertTrue(select.getResultColumnList().size() == 1); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("schema1.table1")); - - } - -} +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 13-10-11 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.teradata.TTeradataLockClause; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import gudusoft.gsqlparser.stmt.teradata.TTeradataLock; +import junit.framework.TestCase; + +public class testLock extends TestCase { + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = " LOCKING TABLE dbc.TDWMExceptionLog FOR ACCESS \n" + + " SELECT procId as vprocid, BufferTS, QueryID, UserName, SessionID, RequestNum, \n" + + " LogicalHostID, AcctString, WDID, 0 as WDPeriodId, openvId, sysconId, \n" + + " ClassificationTime, ExceptionTime, ExceptionValue, ExceptionAction, NewWDID, \n" + + " ExceptionCode, ExceptionSubCode, ErrorText, ExtraInfo, ruleid, warningonly, \n" + + " rejectioncat \n" + + " FROM dbc.TDWMExceptionLog \n" + + " WHERE bufferTS > '2013-05-27 14:33:29.83' ORDER BY bufferTS DESC;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); + TTeradataLock lock = (TTeradataLock)sqlparser.sqlstatements.get(0); + TTeradataLockClause lockClause = lock.getLockClauses().get(0); + assertTrue(lockClause.getDatabase_table_view().toString().equalsIgnoreCase("TABLE")); + assertTrue(lockClause.getObjectName().toString().equalsIgnoreCase("dbc.TDWMExceptionLog")); + assertTrue(lockClause.getLockMode().toString().equalsIgnoreCase("ACCESS")); + assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); + assertTrue(select.getResultColumnList().size() == 24); + assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("dbc.TDWMExceptionLog")); + + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = " locking table t1 for access locking table t2 for access select * from t1,t2;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); + TTeradataLock lock = (TTeradataLock)sqlparser.sqlstatements.get(0); + TTeradataLockClause lockClause = lock.getLockClauses().get(0); + assertTrue(lockClause.getDatabase_table_view().toString().equalsIgnoreCase("TABLE")); + assertTrue(lockClause.getObjectName().toString().equalsIgnoreCase("t1")); + assertTrue(lockClause.getLockMode().toString().equalsIgnoreCase("ACCESS")); + assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); + assertTrue(select.getResultColumnList().size() == 1); + assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("t1")); + + } + + public void test3(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = " LOCKING TABLE schema1.table1 FOR READ\n" + + "LOCKING TABLE schema1.table1 FOR READ\n" + + "LOCKING TABLE schema1.table2 FOR READ\n" + + "LOCKING TABLE schema1.table3 FOR READ\n" + + "Select * from schema1.table1, schema1.table2;"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); + TTeradataLock lock = (TTeradataLock)sqlparser.sqlstatements.get(0); + TTeradataLockClause lockClause = lock.getLockClauses().get(0); + assertTrue(lockClause.getDatabase_table_view().toString().equalsIgnoreCase("TABLE")); + assertTrue(lockClause.getObjectName().toString().equalsIgnoreCase("schema1.table1")); + assertTrue(lockClause.getLockMode().toString().equalsIgnoreCase("READ")); + assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); + assertTrue(select.getResultColumnList().size() == 1); + assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("schema1.table1")); + + } + +} diff --git a/src/test/java/teradata/testMacro.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testMacro.java similarity index 97% rename from src/test/java/teradata/testMacro.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testMacro.java index 56757da7..f00f2bfe 100644 --- a/src/test/java/teradata/testMacro.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testMacro.java @@ -1,39 +1,39 @@ -package teradata; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TCreateMacro; -import gudusoft.gsqlparser.stmt.teradata.TTeradataLock; -import junit.framework.TestCase; - - -public class testMacro extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " REPLACE MACRO macroName (startdt date, enddt date, WLInd char(30))\n" + - "AS\n" + - "(Locking row for access\n" + - "Sel col1,col2,col3 from table1,table2,table3;);"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatacreatemacro); - TCreateMacro createMacro = (TCreateMacro)sqlparser.sqlstatements.get(0); - assertTrue(createMacro.getMacroName().toString().equalsIgnoreCase("macroName")); - assertTrue(createMacro.getParameterDeclarations().size() == 3); - TParameterDeclaration parameterDeclaration = createMacro.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("startdt")); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.date_t); - assertTrue(createMacro.getBodyStatements().size() == 1); - assertTrue(createMacro.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); - TTeradataLock lock = (TTeradataLock)createMacro.getBodyStatements().get(0); - assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("table1")); - - } - -} +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDataType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TParameterDeclaration; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import gudusoft.gsqlparser.stmt.TCreateMacro; +import gudusoft.gsqlparser.stmt.teradata.TTeradataLock; +import junit.framework.TestCase; + + +public class testMacro extends TestCase { + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = " REPLACE MACRO macroName (startdt date, enddt date, WLInd char(30))\n" + + "AS\n" + + "(Locking row for access\n" + + "Sel col1,col2,col3 from table1,table2,table3;);"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatacreatemacro); + TCreateMacro createMacro = (TCreateMacro)sqlparser.sqlstatements.get(0); + assertTrue(createMacro.getMacroName().toString().equalsIgnoreCase("macroName")); + assertTrue(createMacro.getParameterDeclarations().size() == 3); + TParameterDeclaration parameterDeclaration = createMacro.getParameterDeclarations().getParameterDeclarationItem(0); + assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("startdt")); + assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.date_t); + assertTrue(createMacro.getBodyStatements().size() == 1); + assertTrue(createMacro.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); + TTeradataLock lock = (TTeradataLock)createMacro.getBodyStatements().get(0); + assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); + assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("table1")); + + } + +} diff --git a/src/test/java/teradata/testMerge.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testMerge.java similarity index 96% rename from src/test/java/teradata/testMerge.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testMerge.java index 75ef92d4..fc670e0c 100644 --- a/src/test/java/teradata/testMerge.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testMerge.java @@ -1,38 +1,38 @@ -package teradata; -/* - * Date: 14-8-3 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TMergeInsertClause; -import gudusoft.gsqlparser.nodes.TMergeWhenClause; -import gudusoft.gsqlparser.stmt.TMergeSqlStatement; -import junit.framework.TestCase; - -public class testMerge extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "merge into agg_daily_cap_usage t1\n" + - "using vt_stg_cap_usage t2\n" + - "on t1.seat_id=t2.seat_id and t1.date_sk = t2.date_sk\n" + - "when not matched then\n" + - "insert\n" + - "( t2.seat_id, t2.date_sk, t2.login_flag, t2.profile_view, t2.inmail_sent, t2.search_usagelog)\n" + - ";"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmerge); - TMergeSqlStatement merge = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(merge.getWhenClauses().size() == 1); - TMergeWhenClause wc = merge.getWhenClauses().getElement(0); - TMergeInsertClause mic = wc.getInsertClause(); - assertTrue(mic.getValuelist().size() == 6); - assertTrue(mic.getValuelist().getResultColumn(0).getExpr().toString().equalsIgnoreCase("t2.seat_id")); - assertTrue(mic.getValuelist().getResultColumn(5).getExpr().toString().equalsIgnoreCase("t2.search_usagelog")); - - } - - -} +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 14-8-3 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TMergeInsertClause; +import gudusoft.gsqlparser.nodes.TMergeWhenClause; +import gudusoft.gsqlparser.stmt.TMergeSqlStatement; +import junit.framework.TestCase; + +public class testMerge extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "merge into agg_daily_cap_usage t1\n" + + "using vt_stg_cap_usage t2\n" + + "on t1.seat_id=t2.seat_id and t1.date_sk = t2.date_sk\n" + + "when not matched then\n" + + "insert\n" + + "( t2.seat_id, t2.date_sk, t2.login_flag, t2.profile_view, t2.inmail_sent, t2.search_usagelog)\n" + + ";"; + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmerge); + TMergeSqlStatement merge = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(merge.getWhenClauses().size() == 1); + TMergeWhenClause wc = merge.getWhenClauses().getElement(0); + TMergeInsertClause mic = wc.getInsertClause(); + assertTrue(mic.getValuelist().size() == 6); + assertTrue(mic.getValuelist().getResultColumn(0).getExpr().toString().equalsIgnoreCase("t2.seat_id")); + assertTrue(mic.getValuelist().getResultColumn(5).getExpr().toString().equalsIgnoreCase("t2.search_usagelog")); + + } + + +} diff --git a/src/test/java/teradata/testNamedColumn.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testNamedColumn.java similarity index 97% rename from src/test/java/teradata/testNamedColumn.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testNamedColumn.java index 9646ef45..06bfedb2 100644 --- a/src/test/java/teradata/testNamedColumn.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testNamedColumn.java @@ -1,138 +1,138 @@ -package teradata; - - -import gudusoft.gsqlparser.EDataTypeAttribute; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.teradata.TDataConversion; -import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testNamedColumn extends TestCase { - - public void test1(){ - - // The Resolver analyzes this statement as follows: - // 1 Look for X as a column in table T. - // 2 If X is not found, then try to locate column X in view V (the named object). - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE VIEW V AS\n" + - "SELECT a*5+3 (NAMED X), x*2 (NAMED Y)\n" + - "FROM T;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TCreateViewSqlStatement createView = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createView.getSubquery(); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(1); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.arithmetic_times_t); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("x*2 (NAMED Y)")); - // System.out.print(resultColumn.getExpr()..toString()); - TAliasClause a = resultColumn.getAliasClause(); - //System.out.println(a.toString()); - assertTrue(a.getAliasName().toString().equalsIgnoreCase("Y")); - - } - - public void test2(){ - // CREATE TABLE T (a INT, b INT); - // Note that the phrase b (NAMED Y) resolves to T.b. - - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE VIEW V AS\n" + - "SELECT a (NAMED b), b (NAMED y)\n" + - "FROM T;"; - assertTrue(sqlparser.parse() == 0); - TCreateViewSqlStatement createView = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createView.getSubquery(); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(resultColumn.getExpr().getObjectOperand().toString().equalsIgnoreCase("a")); - //System.out.print(resultColumn.getExpr()..toString()); - TAliasClause a = resultColumn.getAliasClause(); - assertTrue(a.getAliasName().toString().equalsIgnoreCase("b")); - - } - - // mantis: #598 - public void test3() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT 'a' || 'b' (NAMED \"x\");"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.concatenate_t); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("'a' || 'b' (NAMED \"x\")")); - TAliasClause a = resultColumn.getAliasClause(); - assertTrue(a.getAliasName().toString().equalsIgnoreCase("\"x\"")); - -// TExpression right = resultColumn.getExpr().getRightOperand(); - // System.out.print(a.getAliasName().toString()); - } - - public void test4() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT x+y (NAMED \"x\");"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - // assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.concatenate_t); -// System.out.print(resultColumn.getExpr().toString()); -// assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("x+y")); - TAliasClause a = resultColumn.getAliasClause(); - assertTrue(a.getAliasName().toString().equalsIgnoreCase("\"x\"")); - - } - - public void test11(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select cast(cal_dt as date) (named cal_dt1) from table1;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("cast(cal_dt as date) (named cal_dt1)")); - TAliasClause a = resultColumn.getAliasClause(); - assertTrue(a.getAliasName().toString().equalsIgnoreCase("cal_dt1")); - - } - - public void test12(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT\n" + - "((lastresptime - starttime) hour(2) to second) (Named ElapsedTime),\n" + - "FROM DBC.DBQLogTbl"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("((lastresptime - starttime) hour(2) to second) (Named ElapsedTime)")); - TDataConversion dataConversion = resultColumn.getExpr().getDataConversions().get(0); - TDataConversionItem dataConversionItem = dataConversion.getDataConversionItems().get(0); - assertTrue(dataConversionItem.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - assertTrue(dataConversionItem.getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.named_t); - assertTrue(dataConversionItem.getDatatypeAttribute().getNamedName().toString().equalsIgnoreCase("ElapsedTime")); - -// TExplicitDataTypeConversion dataTypeConversion = resultColumn.getExpr().getDataTypeConversionList().getElement(0); -// TDatatypeAttribute datatypeAttribute = dataTypeConversion.getDataTypeAttributeList1().getElement(0); -// assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.named_t); -// assertTrue(datatypeAttribute.getValue_identifier().toString().equalsIgnoreCase("ElapsedTime")); - - TExpression expression = resultColumn.getExpr().getLeftOperand(); - - assertTrue(expression.getExpressionType() == EExpressionType.interval_t); - - assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("ElapsedTime")); - assertTrue(resultColumn.getAliasClause().getAliasName().toString().equalsIgnoreCase("ElapsedTime")); - - } - +package gudusoft.gsqlparser.teradataTest; + + +import gudusoft.gsqlparser.EDataTypeAttribute; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.nodes.teradata.TDataConversion; +import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; +import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + + +public class testNamedColumn extends TestCase { + + public void test1(){ + + // The Resolver analyzes this statement as follows: + // 1 Look for X as a column in table T. + // 2 If X is not found, then try to locate column X in view V (the named object). + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "CREATE VIEW V AS\n" + + "SELECT a*5+3 (NAMED X), x*2 (NAMED Y)\n" + + "FROM T;"; + //System.out.println(sqlparser.sqltext); + assertTrue(sqlparser.parse() == 0); + TCreateViewSqlStatement createView = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); + TSelectSqlStatement select = createView.getSubquery(); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(1); + assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.arithmetic_times_t); + assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("x*2 (NAMED Y)")); + // System.out.print(resultColumn.getExpr()..toString()); + TAliasClause a = resultColumn.getAliasClause(); + //System.out.println(a.toString()); + assertTrue(a.getAliasName().toString().equalsIgnoreCase("Y")); + + } + + public void test2(){ + // CREATE TABLE T (a INT, b INT); + // Note that the phrase b (NAMED Y) resolves to T.b. + + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "CREATE VIEW V AS\n" + + "SELECT a (NAMED b), b (NAMED y)\n" + + "FROM T;"; + assertTrue(sqlparser.parse() == 0); + TCreateViewSqlStatement createView = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); + TSelectSqlStatement select = createView.getSubquery(); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); + assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(resultColumn.getExpr().getObjectOperand().toString().equalsIgnoreCase("a")); + //System.out.print(resultColumn.getExpr()..toString()); + TAliasClause a = resultColumn.getAliasClause(); + assertTrue(a.getAliasName().toString().equalsIgnoreCase("b")); + + } + + // mantis: #598 + public void test3() { + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT 'a' || 'b' (NAMED \"x\");"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); + assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.concatenate_t); + assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("'a' || 'b' (NAMED \"x\")")); + TAliasClause a = resultColumn.getAliasClause(); + assertTrue(a.getAliasName().toString().equalsIgnoreCase("\"x\"")); + +// TExpression right = resultColumn.getExpr().getRightOperand(); + // System.out.print(a.getAliasName().toString()); + } + + public void test4() { + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT x+y (NAMED \"x\");"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); + // assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.concatenate_t); +// System.out.print(resultColumn.getExpr().toString()); +// assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("x+y")); + TAliasClause a = resultColumn.getAliasClause(); + assertTrue(a.getAliasName().toString().equalsIgnoreCase("\"x\"")); + + } + + public void test11(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select cast(cal_dt as date) (named cal_dt1) from table1;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); + assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("cast(cal_dt as date) (named cal_dt1)")); + TAliasClause a = resultColumn.getAliasClause(); + assertTrue(a.getAliasName().toString().equalsIgnoreCase("cal_dt1")); + + } + + public void test12(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT\n" + + "((lastresptime - starttime) hour(2) to second) (Named ElapsedTime),\n" + + "FROM DBC.DBQLogTbl"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); + assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("((lastresptime - starttime) hour(2) to second) (Named ElapsedTime)")); + TDataConversion dataConversion = resultColumn.getExpr().getDataConversions().get(0); + TDataConversionItem dataConversionItem = dataConversion.getDataConversionItems().get(0); + assertTrue(dataConversionItem.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); + assertTrue(dataConversionItem.getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.named_t); + assertTrue(dataConversionItem.getDatatypeAttribute().getNamedName().toString().equalsIgnoreCase("ElapsedTime")); + +// TExplicitDataTypeConversion dataTypeConversion = resultColumn.getExpr().getDataTypeConversionList().getElement(0); +// TDatatypeAttribute datatypeAttribute = dataTypeConversion.getDataTypeAttributeList1().getElement(0); +// assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.named_t); +// assertTrue(datatypeAttribute.getValue_identifier().toString().equalsIgnoreCase("ElapsedTime")); + + TExpression expression = resultColumn.getExpr().getLeftOperand(); + + assertTrue(expression.getExpressionType() == EExpressionType.interval_t); + + assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("ElapsedTime")); + assertTrue(resultColumn.getAliasClause().getAliasName().toString().equalsIgnoreCase("ElapsedTime")); + + } + } \ No newline at end of file diff --git a/src/test/java/teradata/testNormalize.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testNormalize.java similarity index 95% rename from src/test/java/teradata/testNormalize.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testNormalize.java index 142329d1..d046d261 100644 --- a/src/test/java/teradata/testNormalize.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testNormalize.java @@ -1,4 +1,4 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/teradata/testQualifyClause.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testQualifyClause.java similarity index 97% rename from src/test/java/teradata/testQualifyClause.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testQualifyClause.java index 37b6cf7c..a51f5d1c 100644 --- a/src/test/java/teradata/testQualifyClause.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testQualifyClause.java @@ -1,37 +1,37 @@ -package teradata; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testQualifyClause extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select department_id, COUNT(department_id) as department_id_number, ROW_NUMBER() OVER (ORDER BY department_id ASC), SUM(department_id_number) OVER (ORDER BY department_id ASC) sum_dept_num\n" + - "from foodmart.trimmed_employee GROUP by department_id qualify sum_dept_num > 0;"; - //System.out.println(sqlparser.sqlstatements.size()); - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getQualifyClause().getSearchConditoin().toString().equalsIgnoreCase("sum_dept_num > 0")); - } - - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT col1,col2 qualify ROW_NUMBER () OVER (PARTITION BY col1 ORDER BY col3 DESC , col4 DESC ) =1\n" + - "FROM database_sample.T_sample_table"; - //System.out.println(sqlparser.sqlstatements.size()); - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getQualifyClause().getSearchConditoin().toString().equalsIgnoreCase("ROW_NUMBER () OVER (PARTITION BY col1 ORDER BY col3 DESC , col4 DESC ) =1")); - //System.out.println(select.getQualifyClause().getSearchConditoin().toString()); - } - -} +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testQualifyClause extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select department_id, COUNT(department_id) as department_id_number, ROW_NUMBER() OVER (ORDER BY department_id ASC), SUM(department_id_number) OVER (ORDER BY department_id ASC) sum_dept_num\n" + + "from foodmart.trimmed_employee GROUP by department_id qualify sum_dept_num > 0;"; + //System.out.println(sqlparser.sqlstatements.size()); + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(select.getQualifyClause().getSearchConditoin().toString().equalsIgnoreCase("sum_dept_num > 0")); + } + + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT col1,col2 qualify ROW_NUMBER () OVER (PARTITION BY col1 ORDER BY col3 DESC , col4 DESC ) =1\n" + + "FROM database_sample.T_sample_table"; + //System.out.println(sqlparser.sqlstatements.size()); + assertTrue(sqlparser.parse() == 0); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(select.getQualifyClause().getSearchConditoin().toString().equalsIgnoreCase("ROW_NUMBER () OVER (PARTITION BY col1 ORDER BY col3 DESC , col4 DESC ) =1")); + //System.out.println(select.getQualifyClause().getSearchConditoin().toString()); + } + +} diff --git a/src/test/java/teradata/testRenameTable.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testRenameTable.java similarity index 94% rename from src/test/java/teradata/testRenameTable.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testRenameTable.java index 1a06f6d0..0677debf 100644 --- a/src/test/java/teradata/testRenameTable.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testRenameTable.java @@ -1,24 +1,24 @@ -package teradata; - -import gudusoft.gsqlparser.EDbObjectType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TRenameStmt; -import junit.framework.TestCase; - - -public class testRenameTable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "RENAME TABLE xyz.tbl1 to xyz.table1"; - assertTrue(sqlparser.parse() == 0); - TRenameStmt renameStmt = (TRenameStmt)sqlparser.sqlstatements.get(0); - assertTrue(renameStmt.getObjectType() == EDbObjectType.table); - assertTrue(renameStmt.getOldName().toString().equalsIgnoreCase("xyz.tbl1")); - assertTrue(renameStmt.getNewName().toString().equalsIgnoreCase("xyz.table1")); - - } - -} +package gudusoft.gsqlparser.teradataTest; + +import gudusoft.gsqlparser.EDbObjectType; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TRenameStmt; +import junit.framework.TestCase; + + +public class testRenameTable extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "RENAME TABLE xyz.tbl1 to xyz.table1"; + assertTrue(sqlparser.parse() == 0); + TRenameStmt renameStmt = (TRenameStmt)sqlparser.sqlstatements.get(0); + assertTrue(renameStmt.getObjectType() == EDbObjectType.table); + assertTrue(renameStmt.getOldName().toString().equalsIgnoreCase("xyz.tbl1")); + assertTrue(renameStmt.getNewName().toString().equalsIgnoreCase("xyz.table1")); + + } + +} diff --git a/src/test/java/teradata/testResultColumn.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testResultColumn.java similarity index 97% rename from src/test/java/teradata/testResultColumn.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testResultColumn.java index 4254efec..1c7dc6d0 100644 --- a/src/test/java/teradata/testResultColumn.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testResultColumn.java @@ -1,61 +1,61 @@ -package teradata; -/* - * Date: 14-7-8 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlClause; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TResultColumnList; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testResultColumn extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT NULL(VARCHAR(512) )," + - "CASE WHEN DATABASENAME <> 'DBC' THEN 'TYPE' ELSE '' END (NAMED TABLE_TYPE), " + - "COMMENTSTRING(VARCHAR(254),NAMED REMARKS) FROM DBC.TABLES"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TResultColumnList columns = select.getResultColumnList(); - assertTrue(columns.getResultColumn(0).toString().equalsIgnoreCase("NULL(VARCHAR(512) )")); - assertTrue(columns.getResultColumn(1).toString().equalsIgnoreCase("CASE WHEN DATABASENAME <> 'DBC' THEN 'TYPE' ELSE '' END (NAMED TABLE_TYPE)")); - assertTrue(columns.getResultColumn(2).toString().equalsIgnoreCase("COMMENTSTRING(VARCHAR(254),NAMED REMARKS)")); - - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE VOLATILE SET TABLE CORR_ADD_SOURCE AS\n" + - "(\n" + - "SELECT\n" + - "\tACCT_NUM\n" + - "\t,CORR_NUMBER\n" + - "FROM DB50_AKG.BASSRNC_CORR_SOURCE\n" + - "GROUP BY 1,2\n" + - ") WITH DATA\n" + - "UNIQUE PRIMARY INDEX (ACCT_NUM)\n" + - "ON COMMIT PRESERVE ROWS"; - - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createTableSqlStatement.getSubQuery(); - - TResultColumnList columns = select.getResultColumnList(); - assertTrue(columns.getResultColumn(0).toString().equalsIgnoreCase("ACCT_NUM")); - - TTable table = createTableSqlStatement.tables.getTable(0); - // System.out.print(table.toString()); - // System.out.print(table.getLinkedColumns().getObjectName(0).toScript()); - assertTrue(table.getLinkedColumns().getObjectName(0).getLocation() == ESqlClause.selectList); - - } -} +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 14-7-8 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlClause; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TResultColumnList; +import gudusoft.gsqlparser.nodes.TTable; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testResultColumn extends TestCase { + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT NULL(VARCHAR(512) )," + + "CASE WHEN DATABASENAME <> 'DBC' THEN 'TYPE' ELSE '' END (NAMED TABLE_TYPE), " + + "COMMENTSTRING(VARCHAR(254),NAMED REMARKS) FROM DBC.TABLES"; + + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + TResultColumnList columns = select.getResultColumnList(); + assertTrue(columns.getResultColumn(0).toString().equalsIgnoreCase("NULL(VARCHAR(512) )")); + assertTrue(columns.getResultColumn(1).toString().equalsIgnoreCase("CASE WHEN DATABASENAME <> 'DBC' THEN 'TYPE' ELSE '' END (NAMED TABLE_TYPE)")); + assertTrue(columns.getResultColumn(2).toString().equalsIgnoreCase("COMMENTSTRING(VARCHAR(254),NAMED REMARKS)")); + + + } + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "CREATE VOLATILE SET TABLE CORR_ADD_SOURCE AS\n" + + "(\n" + + "SELECT\n" + + "\tACCT_NUM\n" + + "\t,CORR_NUMBER\n" + + "FROM DB50_AKG.BASSRNC_CORR_SOURCE\n" + + "GROUP BY 1,2\n" + + ") WITH DATA\n" + + "UNIQUE PRIMARY INDEX (ACCT_NUM)\n" + + "ON COMMIT PRESERVE ROWS"; + + assertTrue(sqlparser.parse() == 0); + TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TSelectSqlStatement select = createTableSqlStatement.getSubQuery(); + + TResultColumnList columns = select.getResultColumnList(); + assertTrue(columns.getResultColumn(0).toString().equalsIgnoreCase("ACCT_NUM")); + + TTable table = createTableSqlStatement.tables.getTable(0); + // System.out.print(table.toString()); + // System.out.print(table.getLinkedColumns().getObjectName(0).toScript()); + assertTrue(table.getLinkedColumns().getObjectName(0).getLocation() == ESqlClause.selectList); + + } +} diff --git a/src/test/java/teradata/testSelectConsume.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testSelectConsume.java similarity index 93% rename from src/test/java/teradata/testSelectConsume.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testSelectConsume.java index f7330beb..5c14753e 100644 --- a/src/test/java/teradata/testSelectConsume.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testSelectConsume.java @@ -1,18 +1,18 @@ -package teradata; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSelectConsume extends TestCase { - public void test1() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select and consume top 1 * from foodmart.fruit"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(selectSqlStatement.isConsume()); - } -} +package gudusoft.gsqlparser.teradataTest; + + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testSelectConsume extends TestCase { + public void test1() { + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select and consume top 1 * from foodmart.fruit"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + assertTrue(selectSqlStatement.isConsume()); + } +} diff --git a/src/test/java/teradata/testSetSession.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testSetSession.java similarity index 98% rename from src/test/java/teradata/testSetSession.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testSetSession.java index 8f6ccfd8..0b8b6647 100644 --- a/src/test/java/teradata/testSetSession.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testSetSession.java @@ -1,4 +1,4 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.ESqlStatementType; diff --git a/src/test/java/teradata/testSubqueryInOnCondition.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testSubqueryInOnCondition.java similarity index 97% rename from src/test/java/teradata/testSubqueryInOnCondition.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testSubqueryInOnCondition.java index f1e8a592..31254347 100644 --- a/src/test/java/teradata/testSubqueryInOnCondition.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testSubqueryInOnCondition.java @@ -1,100 +1,100 @@ -package teradata; -/* - * Date: 13-2-5 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TJoin; -import gudusoft.gsqlparser.nodes.TJoinItem; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSubqueryInOnCondition extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE VIEW AUDEV01_BUS_TRFM_VIEW.VTX_371_DSUBSDM_ICTPSTWR_01 AS\n" + - " SELECT\n" + - " AT_CAI.Subs_ID,\n" + - " BUS_DRVR.Prd_Dt,\n" + - " AT_CAI.Prd_Cvrg_Start_Dt,\n" + - " AT_CAI.Prd_Cvrg_End_Dt,\n" + - " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 ='L1Voice' \n" + - " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Rev_AUD_Amt ) \n" + - " END) AS B_Algn_ICT_Rev_Vc_ExGST_A,\n" + - " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 = 'L1SMS' \n" + - " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Rev_AUD_Amt ) \n" + - " END) AS B_Algn_ICT_Rev_SMS_ExGST_A,\n" + - " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 ='L1Voice' \n" + - " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Cost_AUD_Amt ) \n" + - " END) AS B_Algn_ICT_Cost_Vc_ExGST_A,\n" + - " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 = 'L1SMS' \n" + - " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Cost_AUD_Amt ) \n" + - " END) AS B_Algn_ICT_Cost_SMS_ExGST_A\n" + - " FROM\n" + - " AUDEV01_BUS_VIEW.BUS_MEAS_ICT_RTL AS AT_ICT RIGHT JOIN \n" + - " AUDEV01_PRE_BUS_VIEW.W_SUBS_DRCT_CAI_USG_DTS AS AT_CAI\n" + - " ON\n" + - " (\n" + - " AT_ICT.Subs_Id = AT_CAI.Subs_ID\n" + - " AND AT_ICT.Prd_Dt BETWEEN AT_CAI.Prd_Cvrg_Start_Dt\n" + - " AND AT_CAI.Prd_Cvrg_End_Dt -1\n" + - " AND AT_ICT.INT_ACCT_FLG = 'N'\n" + - " AND AT_ICT.Acct_Type_Cd = 'Postpay'\n" + - " AND AT_ICT.Brnd_Cd = 'Vodafone'\n" + - " ) LEFT JOIN \n" + - " AUDEV01_MODEL_VIEW.GSMSI_USG_CLASS_ASSN AS AT_GUCA\n" + - " ON\n" + - " (\n" + - " AT_ICT.GSMSI_Key = AT_GUCA.GSMSI_Key\n" + - " AND AT_GUCA.GSMSI_Usg_Class_End_Dt = DATE '9999-12-31'\n" + - " AND AT_GUCA.Usg_Class_Key IN (\n" + - " SELECT\n" + - " AT_UC.Usg_Class_Key\n" + - " FROM\n" + - " AUDEV01_MODEL_VIEW.USG_CLASS AS AT_UC\n" + - " WHERE\n" + - " AT_UC.Usg_Class_Type_Cd = 'FINANCE'\n" + - " )\n" + - " ) LEFT JOIN \n" + - " AUDEV01_PRE_BUS_VIEW.W_BUS_TM_DRVR AS BUS_DRVR\n" + - " ON\n" + - " (\n" + - " BUS_DRVR.Prd_Type_Cd = 'MONTH'\n" + - " AND BUS_DRVR.Subj_Area_Cd = 'SDM'\n" + - " ) LEFT JOIN \n" + - " AUDEV01_BUS_VIEW.DIM_USG_HIER AS AT_DUH\n" + - " ON\n" + - " (\n" + - " AT_GUCA.Usg_Class_Key = AT_DUH.Usg_Class_Key\n" + - " )\n" + - " WHERE\n" + - " AT_CAI.Subs_ID IS NOT NULL\n" + - " AND AT_CAI.Subs_ID > 0\n" + - " GROUP BY\n" + - " 1,\n" + - " 2,\n" + - " 3,\n" + - " 4;"; - assertTrue(sqlparser.parse() == 0); - - TCreateViewSqlStatement view = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = view.getSubquery(); - - TJoin join = select.joins.getJoin(0); - TJoinItem joinItem1 = join.getJoinItems().getJoinItem(1); - TExpression expression = joinItem1.getOnCondition(); - assertTrue(expression.getExpressionType() == EExpressionType.parenthesis_t); - TExpression inSideExpr = expression.getLeftOperand(); - assertTrue(inSideExpr.getRightOperand().getRightOperand().getExpressionType() == EExpressionType.subquery_t); - TSelectSqlStatement subQuery = inSideExpr.getRightOperand().getRightOperand().getSubQuery(); - assertTrue(subQuery.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("AT_UC.Usg_Class_Key")); - - } - -} +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 13-2-5 + */ + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.EExpressionType; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.nodes.TExpression; +import gudusoft.gsqlparser.nodes.TJoin; +import gudusoft.gsqlparser.nodes.TJoinItem; +import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import junit.framework.TestCase; + +public class testSubqueryInOnCondition extends TestCase { + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "CREATE VIEW AUDEV01_BUS_TRFM_VIEW.VTX_371_DSUBSDM_ICTPSTWR_01 AS\n" + + " SELECT\n" + + " AT_CAI.Subs_ID,\n" + + " BUS_DRVR.Prd_Dt,\n" + + " AT_CAI.Prd_Cvrg_Start_Dt,\n" + + " AT_CAI.Prd_Cvrg_End_Dt,\n" + + " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 ='L1Voice' \n" + + " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Rev_AUD_Amt ) \n" + + " END) AS B_Algn_ICT_Rev_Vc_ExGST_A,\n" + + " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 = 'L1SMS' \n" + + " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Rev_AUD_Amt ) \n" + + " END) AS B_Algn_ICT_Rev_SMS_ExGST_A,\n" + + " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 ='L1Voice' \n" + + " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Cost_AUD_Amt ) \n" + + " END) AS B_Algn_ICT_Cost_Vc_ExGST_A,\n" + + " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 = 'L1SMS' \n" + + " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Cost_AUD_Amt ) \n" + + " END) AS B_Algn_ICT_Cost_SMS_ExGST_A\n" + + " FROM\n" + + " AUDEV01_BUS_VIEW.BUS_MEAS_ICT_RTL AS AT_ICT RIGHT JOIN \n" + + " AUDEV01_PRE_BUS_VIEW.W_SUBS_DRCT_CAI_USG_DTS AS AT_CAI\n" + + " ON\n" + + " (\n" + + " AT_ICT.Subs_Id = AT_CAI.Subs_ID\n" + + " AND AT_ICT.Prd_Dt BETWEEN AT_CAI.Prd_Cvrg_Start_Dt\n" + + " AND AT_CAI.Prd_Cvrg_End_Dt -1\n" + + " AND AT_ICT.INT_ACCT_FLG = 'N'\n" + + " AND AT_ICT.Acct_Type_Cd = 'Postpay'\n" + + " AND AT_ICT.Brnd_Cd = 'Vodafone'\n" + + " ) LEFT JOIN \n" + + " AUDEV01_MODEL_VIEW.GSMSI_USG_CLASS_ASSN AS AT_GUCA\n" + + " ON\n" + + " (\n" + + " AT_ICT.GSMSI_Key = AT_GUCA.GSMSI_Key\n" + + " AND AT_GUCA.GSMSI_Usg_Class_End_Dt = DATE '9999-12-31'\n" + + " AND AT_GUCA.Usg_Class_Key IN (\n" + + " SELECT\n" + + " AT_UC.Usg_Class_Key\n" + + " FROM\n" + + " AUDEV01_MODEL_VIEW.USG_CLASS AS AT_UC\n" + + " WHERE\n" + + " AT_UC.Usg_Class_Type_Cd = 'FINANCE'\n" + + " )\n" + + " ) LEFT JOIN \n" + + " AUDEV01_PRE_BUS_VIEW.W_BUS_TM_DRVR AS BUS_DRVR\n" + + " ON\n" + + " (\n" + + " BUS_DRVR.Prd_Type_Cd = 'MONTH'\n" + + " AND BUS_DRVR.Subj_Area_Cd = 'SDM'\n" + + " ) LEFT JOIN \n" + + " AUDEV01_BUS_VIEW.DIM_USG_HIER AS AT_DUH\n" + + " ON\n" + + " (\n" + + " AT_GUCA.Usg_Class_Key = AT_DUH.Usg_Class_Key\n" + + " )\n" + + " WHERE\n" + + " AT_CAI.Subs_ID IS NOT NULL\n" + + " AND AT_CAI.Subs_ID > 0\n" + + " GROUP BY\n" + + " 1,\n" + + " 2,\n" + + " 3,\n" + + " 4;"; + assertTrue(sqlparser.parse() == 0); + + TCreateViewSqlStatement view = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); + TSelectSqlStatement select = view.getSubquery(); + + TJoin join = select.joins.getJoin(0); + TJoinItem joinItem1 = join.getJoinItems().getJoinItem(1); + TExpression expression = joinItem1.getOnCondition(); + assertTrue(expression.getExpressionType() == EExpressionType.parenthesis_t); + TExpression inSideExpr = expression.getLeftOperand(); + assertTrue(inSideExpr.getRightOperand().getRightOperand().getExpressionType() == EExpressionType.subquery_t); + TSelectSqlStatement subQuery = inSideExpr.getRightOperand().getRightOperand().getSubQuery(); + assertTrue(subQuery.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("AT_UC.Usg_Class_Key")); + + } + +} diff --git a/src/test/java/teradata/testTableAliasOfSubquery.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTableAliasOfSubquery.java similarity index 95% rename from src/test/java/teradata/testTableAliasOfSubquery.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testTableAliasOfSubquery.java index fa3a55b0..56d44746 100644 --- a/src/test/java/teradata/testTableAliasOfSubquery.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testTableAliasOfSubquery.java @@ -1,4 +1,4 @@ -package teradata; +package gudusoft.gsqlparser.teradataTest; import gudusoft.gsqlparser.EDbVendor; import gudusoft.gsqlparser.TGSqlParser; diff --git a/src/test/java/teradata/testTeradataCaseExpression.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataCaseExpression.java similarity index 63% rename from src/test/java/teradata/testTeradataCaseExpression.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataCaseExpression.java index 34fecc70..1ea5f989 100644 --- a/src/test/java/teradata/testTeradataCaseExpression.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataCaseExpression.java @@ -1,19 +1,20 @@ -package teradata; -/* - * Date: 2010-10-13 - * Time: 16:39:18 - */ - -import junit.framework.TestCase; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.EDbVendor; - -public class testTeradataCaseExpression extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqlfilename = common.gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"teradata\\verified\\case_expression.sql"; - assertTrue(sqlparser.parse() == 0); - } - -} +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 2010-10-13 + * Time: 16:39:18 + */ + +import gudusoft.gsqlparser.commonTest.gspCommon; +import junit.framework.TestCase; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.EDbVendor; + +public class testTeradataCaseExpression extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"teradata\\verified\\case_expression.sql"; + assertTrue(sqlparser.parse() == 0); + } + +} diff --git a/src/test/java/teradata/testTeradataGetRawStatements.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataGetRawStatements.java similarity index 97% rename from src/test/java/teradata/testTeradataGetRawStatements.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataGetRawStatements.java index 310e5783..33528dac 100644 --- a/src/test/java/teradata/testTeradataGetRawStatements.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataGetRawStatements.java @@ -1,324 +1,324 @@ -package teradata; -/* - * Date: 2010-9-17 - * Time: 10:36:52 - */ - -import junit.framework.TestCase; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; - -public class testTeradataGetRawStatements extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "USING (var_1 CHARACTER, var_2 CHARACTER, var_3 CHARACTER)\n" + - "INSERT INTO TestTabU (c1) VALUES (:var_1)\n" + - "; INSERT INTO TestTabU (c1) VALUES (:var_2)\n" + - "; INSERT INTO TestTabU (c1) VALUES (:var_3)\n" + - "; UPDATE TestTabU\n" + - "SET c2 = c1 + 1\n" + - "WHERE c1 = :var_1\n" + - "; UPDATE TestTabU\n" + - "SET c2 = c1 + 1\n" + - "WHERE c1 = :var_2\n" + - "; UPDATE TestTabU\n" + - "SET c2 = c1 + 1\n" + - "WHERE c1 = :var_3 ;\n" + - "\n" + - "USING (zonedec CHARACTER(4))\n" + - "BEGIN TRANSACTION\n" + - "; INSERT INTO Dectest (Colz = :zonedec (DECIMAL(4), FORMAT\n" + - "��9999S��)) ;\n" + - "\n" + - "USING\n" + - "cunicode(CHAR(10))\n" + - ",clatin(CHAR(10))\n" + - ",csjis(CHAR(10))\n" + - ",cgraphic(GRAPHIC(10))\n" + - ",cgraphic2(CHAR(10) CHARACTER SET GRAPHIC))\n" + - "INSERT INTO table_1(:cunicode, :clatin, :csjis, :cgraphic,\n" + - ":cgraphic2);"; - sqlparser.getrawsqlstatements(); - assertTrue(sqlparser.sqlstatements.size() == 9); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatausing); - assertTrue(sqlparser.sqlstatements.get(1).sqlstatementtype == ESqlStatementType.sstinsert); - assertTrue(sqlparser.sqlstatements.get(2).sqlstatementtype == ESqlStatementType.sstinsert); - assertTrue(sqlparser.sqlstatements.get(3).sqlstatementtype == ESqlStatementType.sstupdate); - assertTrue(sqlparser.sqlstatements.get(4).sqlstatementtype == ESqlStatementType.sstupdate); - assertTrue(sqlparser.sqlstatements.get(5).sqlstatementtype == ESqlStatementType.sstupdate); - assertTrue(sqlparser.sqlstatements.get(6).sqlstatementtype == ESqlStatementType.sstteradatausing); - assertTrue(sqlparser.sqlstatements.get(7).sqlstatementtype == ESqlStatementType.sstinsert); - assertTrue(sqlparser.sqlstatements.get(8).sqlstatementtype == ESqlStatementType.sstteradatausing); - } - - public void testnullstatement(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "/* This example shows a comment followed by\n" + - "a semicolon used as a null statement */\n" + - "; UPDATE Pay_Test SET a = c;\n" + - "\n" + - "\n" + - "/* This example shows a semicolon used as a null\n" + - "statement and as a statement separator */\n" + - "; UPDATE Payroll_Test SET Name = 'Wedgewood A'\n" + - "WHERE Name = 'Wedgewood A'\n" + - "; SELECT a from b\n" + - "-- This example shows the use of an ANSI component\n" + - "-- used as a null statement and statement separator ;\n" + - "\n" + - "\n" + - ";DROP TABLE temp_payroll;"; - sqlparser.getrawsqlstatements(); - //System.out.println(sqlparser.sqlstatements.size()); - //System.out.println(sqlparser.sqlstatements.get(0).sqlstatementtype); - //System.out.println(sqlparser.sqlstatements.get(1).sqlstatementtype); - //System.out.println(sqlparser.sqlstatements.get(2).sqlstatementtype); - //System.out.println(sqlparser.sqlstatements.get(3).sqlstatementtype); - assertTrue(sqlparser.sqlstatements.size() == 4); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "/*\n" + - "Valued case expression\n" + - "Searched case expression\n" + - "The two special shorthand variants of case expression:\n" + - "coalesce\n" + - "nullif\n" + - "*/\n" + - "\n" + - "-- valued\n" + - "\n" + - "SELECT SUM(CASE part\n" + - "WHEN '1'\n" + - "THEN cost\n" + - "ELSE 0\n" + - "END\n" + - ")/SUM(cost)\n" + - "FROM t;\n" + - "\n" + - "SELECT prodID, (CASE prodSTATUS\n" + - "WHEN 1\n" + - "THEN 'SENT'\n" + - "ELSE 'BACK ORDER'\n" + - "END) || ' STATUS'\n" + - "FROM t1;\n" + - "\n" + - "SELECT *\n" + - "FROM t\n" + - "WHERE x = CASE y\n" + - "WHEN 2\n" + - "THEN 1001\n" + - "WHEN 5\n" + - "THEN 1002\n" + - "END;\n" + - "\n" + - "-- searched\n" + - "SELECT SUM(CASE\n" + - "WHEN part=��1��\n" + - "THEN cost\n" + - "ELSE 0\n" + - "END\n" + - ") / SUM(cost)\n" + - "FROM t;\n" + - "\n" + - "SELECT *\n" + - "FROM t\n" + - "WHERE x = CASE\n" + - "WHEN y=2\n" + - "THEN 1\n" + - "WHEN (z=3 AND y=5)\n" + - "THEN 2\n" + - "END;\n" + - "\n" + - "SELECT *\n" + - "FROM t\n" + - "WHERE x = CASE\n" + - "WHEN y=2\n" + - "THEN 1\n" + - "ELSE 2\n" + - "END;\n" + - "\n" + - "SELECT MONTH, SUM(CASE\n" + - "WHEN Region=��NE��\n" + - "THEN Revenue\n" + - "ELSE 0\n" + - "END),\n" + - "SUM(CASE\n" + - "WHEN Region=��NW��\n" + - "THEN Revenue\n" + - "ELSE 0\n" + - "END),\n" + - "SUM(CASE\n" + - "WHEN Region LIKE ��N%��\n" + - "THEN Revenue\n" + - "ELSE 0\n" + - "END)\n" + - "AS NorthernExposure, NorthernExposure/SUM(Revenue),\n" + - "SUM(Revenue)\n" + - "FROM SALES\n" + - "GROUP BY MONTH;\n" + - "\n" + - "SELECT CAST(last_name AS CHARACTER(15)),salary_amount (FORMAT\n" + - "'$,$$9,999.99'),(date - hire_date)/365.25 (FORMAT 'Z9.99') AS\n" + - "On_The_Job, CASE\n" + - "WHEN salary_amount < 30000 AND On_The_Job > 8\n" + - "THEN '15% Increase'\n" + - "WHEN salary_amount < 35000 AND On_The_Job > 10\n" + - "THEN '10% Increase'\n" + - "WHEN salary_amount < 40000 AND On_The_Job > 10\n" + - "THEN '05% Increase'\n" + - "ELSE 'Under 8 Years'\n" + - "END AS Plan\n" + - "WHERE salary_amount < 40000\n" + - "FROM employee\n" + - "ORDER BY 4;\n" + - "\n" + - "SELECT prodID, (CASE\n" + - "WHEN prodSTATUS = 1\n" + - "THEN 'SENT'\n" + - "ELSE 'BACK ORDER'\n" + - "END) || ' STATUS'\n" + - "FROM t1;\n" + - "\n" + - "/*\n" + - "In the following query, the CASE expression returns a FLOAT result because its\n" + - "THEN and ELSE clauses contain both INTEGER and DECIMAL values. The\n" + - "result is then cast to DECIMAL using teradata conversion syntax:\n" + - "*/\n" + - "SELECT SUM (CASE\n" + - "WHEN column_2=1\n" + - "THEN column_3 * 6\n" + - "ELSE column_3\n" + - "END (DECIMAL(15,2)))\n" + - "FROM dec15;\n" + - "\n" + - "\n" + - "SELECT SUM (CASE\n" + - "WHEN column_2=100\n" + - "THEN (column_1 (DECIMAL(15,2)))\n" + - "ELSE column_3\n" + - "END )\n" + - "FROM dec15;\n" + - "\n" + - "SELECT i, ((CASE\n" + - "WHEN i=1\n" + - "THEN start_date\n" + - "WHEN i=2\n" + - "THEN end_date\n" + - "END) (FORMAT 'DDBM4BYYYY'))\n" + - "FROM duration\n" + - "ORDER BY 1;\n" + - "\n" + - "SELECT CASE NULL\n" + - "WHEN 10\n" + - "THEN ��TEN��\n" + - "END;\n" + - "\n" + - "SELECT CASE NULL + 1\n" + - "WHEN 10\n" + - "THEN ��TEN��\n" + - "END;\n" + - "\n" + - "SELECT CASE\n" + - "WHEN column_1 IS NULL\n" + - "THEN ��NULL��\n" + - "END\n" + - "FROM table_1;\n" + - "\n" + - "--COALESCE \n" + - "SELECT Name, COALESCE (HomePhone, OfficePhone, MessageService)\n" + - "FROM PhoneDir;\n" + - "\n" + - "SELECT Name\n" + - "FROM Directory\n" + - "WHEN Organization <> COALESCE (Level1, Level2, Level3);\n" + - ""; - sqlparser.getrawsqlstatements(); - assertTrue(sqlparser.sqlstatements.size() == 17); - //System.out.print(sqlparser.sqlstatements.size()); - } - - public void testcreateprocedure(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE PROCEDURE spAccount(OUT p1 CHARACTER(30))\n" + - "L1: BEGIN\n" + - "DECLARE i INTEGER;\n" + - "DECLARE DeptCursor CURSOR FOR\n" + - "SELECT DeptName from Department;\n" + - "DECLARE CONTINUE HANDLER FOR SQLSTATE VALUE '23505'\n" + - "L2: BEGIN\n" + - "SET p1='Failed To Insert Row';\n" + - "END L2;\n" + - "L3: BEGIN\n" + - "INSERT INTO table_1 VALUES(1,10);\n" + - "IF SQLCODE <> 0 THEN LEAVE L1;\n" + - "END L3;\n" + - "INSERT INTO table_2 VALUES(2,20);\n" + - "END L1;\n" + - "/\n" + - "\n" + - "CREATE PROCEDURE spSample1(INOUT IOParam1 INTEGER,\n" + - "OUT OParam2 INTEGER)\n" + - "L1: BEGIN\n" + - "DECLARE K INTEGER DEFAULT 10;\n" + - "L2: BEGIN\n" + - "DECLARE K INTEGER DEFAULT 20;\n" + - "SET OParam2 = K;\n" + - "SET IOParam1 = L1.K;\n" + - "END L2;\n" + - "\n" + - "END L1;\n" + - "/\n" + - "\n" + - "CREATE PROCEDURE spSample3(OUT p1 CHARACTER(80))\n" + - "BEGIN\n" + - "DECLARE i INTEGER DEFAULT 20;\n" + - "DECLARE EXIT HANDLER\n" + - "FOR SQLSTATE '42000'\n" + - "BEGIN\n" + - "DECLARE i INTEGER DEFAULT 10;\n" + - "DECLARE CONTINUE HANDLER\n" + - "FOR SQLEXCEPTION\n" + - "SET p1 = 'Table does not exist';\n" + - "DROP TABLE table1;\n" + - "CREATE TABLE table1 (c1 INTEGER);\n" + - "INSERT INTO table1 (i);\n" + - "END;\n" + - "INSERT INTO table1 VALUES(1000,'aaa');\n" + - "/* table1 does not exist */\n" + - "END;\n" + - "/\n" + - "\n" + - "CREATE PROCEDURE spSample (OUT po1 VARCHAR(50),\n" + - "OUT po2 VARCHAR(50))\n" + - "BEGIN\n" + - "DECLARE i INTEGER DEFAULT 0;\n" + - "L1: BEGIN\n" + - "DECLARE var1 VARCHAR(25) DEFAULT 'ABCD';\n" + - "DECLARE CONTINUE HANDLER FOR SQLSTATE '42000'\n" + - "SET po1 = 'Table does not exist in L1';\n" + - "INSERT INTO tDummy (10, var1);\n" + - "-- Table Does not exist\n" + - "END L1;\n" + - "L2: BEGIN\n" + - "DECLARE var1 VARCHAR(25) DEFAULT 'XYZ';\n" + - "DECLARE CONTINUE HANDLER FOR SQLSTATE '42000'\n" + - "SET po2 = 'Table does not exist in L2';\n" + - "INSERT INTO tDummy (i, var1);\n" + - "-- Table Does not exist\n" + - "END L2;\n" + - "END;"; - sqlparser.getrawsqlstatements(); - //System.out.print(sqlparser.sqlstatements.size()); - //System.out.println(sqlparser.sqlstatements.get(3).toString()); - //System.out.println(sqlparser.sqlstatements.get(1).sqlstatementtype); - //System.out.println(sqlparser.sqlstatements.get(2).sqlstatementtype); - //System.out.println(sqlparser.sqlstatements.get(3).sqlstatementtype); - - assertTrue(sqlparser.sqlstatements.size() == 4); - } - -} +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 2010-9-17 + * Time: 10:36:52 + */ + +import junit.framework.TestCase; +import gudusoft.gsqlparser.TGSqlParser; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.ESqlStatementType; + +public class testTeradataGetRawStatements extends TestCase { + + public void test1(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "USING (var_1 CHARACTER, var_2 CHARACTER, var_3 CHARACTER)\n" + + "INSERT INTO TestTabU (c1) VALUES (:var_1)\n" + + "; INSERT INTO TestTabU (c1) VALUES (:var_2)\n" + + "; INSERT INTO TestTabU (c1) VALUES (:var_3)\n" + + "; UPDATE TestTabU\n" + + "SET c2 = c1 + 1\n" + + "WHERE c1 = :var_1\n" + + "; UPDATE TestTabU\n" + + "SET c2 = c1 + 1\n" + + "WHERE c1 = :var_2\n" + + "; UPDATE TestTabU\n" + + "SET c2 = c1 + 1\n" + + "WHERE c1 = :var_3 ;\n" + + "\n" + + "USING (zonedec CHARACTER(4))\n" + + "BEGIN TRANSACTION\n" + + "; INSERT INTO Dectest (Colz = :zonedec (DECIMAL(4), FORMAT\n" + + "��9999S��)) ;\n" + + "\n" + + "USING\n" + + "cunicode(CHAR(10))\n" + + ",clatin(CHAR(10))\n" + + ",csjis(CHAR(10))\n" + + ",cgraphic(GRAPHIC(10))\n" + + ",cgraphic2(CHAR(10) CHARACTER SET GRAPHIC))\n" + + "INSERT INTO table_1(:cunicode, :clatin, :csjis, :cgraphic,\n" + + ":cgraphic2);"; + sqlparser.getrawsqlstatements(); + assertTrue(sqlparser.sqlstatements.size() == 9); + assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatausing); + assertTrue(sqlparser.sqlstatements.get(1).sqlstatementtype == ESqlStatementType.sstinsert); + assertTrue(sqlparser.sqlstatements.get(2).sqlstatementtype == ESqlStatementType.sstinsert); + assertTrue(sqlparser.sqlstatements.get(3).sqlstatementtype == ESqlStatementType.sstupdate); + assertTrue(sqlparser.sqlstatements.get(4).sqlstatementtype == ESqlStatementType.sstupdate); + assertTrue(sqlparser.sqlstatements.get(5).sqlstatementtype == ESqlStatementType.sstupdate); + assertTrue(sqlparser.sqlstatements.get(6).sqlstatementtype == ESqlStatementType.sstteradatausing); + assertTrue(sqlparser.sqlstatements.get(7).sqlstatementtype == ESqlStatementType.sstinsert); + assertTrue(sqlparser.sqlstatements.get(8).sqlstatementtype == ESqlStatementType.sstteradatausing); + } + + public void testnullstatement(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "/* This example shows a comment followed by\n" + + "a semicolon used as a null statement */\n" + + "; UPDATE Pay_Test SET a = c;\n" + + "\n" + + "\n" + + "/* This example shows a semicolon used as a null\n" + + "statement and as a statement separator */\n" + + "; UPDATE Payroll_Test SET Name = 'Wedgewood A'\n" + + "WHERE Name = 'Wedgewood A'\n" + + "; SELECT a from b\n" + + "-- This example shows the use of an ANSI component\n" + + "-- used as a null statement and statement separator ;\n" + + "\n" + + "\n" + + ";DROP TABLE temp_payroll;"; + sqlparser.getrawsqlstatements(); + //System.out.println(sqlparser.sqlstatements.size()); + //System.out.println(sqlparser.sqlstatements.get(0).sqlstatementtype); + //System.out.println(sqlparser.sqlstatements.get(1).sqlstatementtype); + //System.out.println(sqlparser.sqlstatements.get(2).sqlstatementtype); + //System.out.println(sqlparser.sqlstatements.get(3).sqlstatementtype); + assertTrue(sqlparser.sqlstatements.size() == 4); + } + + public void test2(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "/*\n" + + "Valued case expression\n" + + "Searched case expression\n" + + "The two special shorthand variants of case expression:\n" + + "coalesce\n" + + "nullif\n" + + "*/\n" + + "\n" + + "-- valued\n" + + "\n" + + "SELECT SUM(CASE part\n" + + "WHEN '1'\n" + + "THEN cost\n" + + "ELSE 0\n" + + "END\n" + + ")/SUM(cost)\n" + + "FROM t;\n" + + "\n" + + "SELECT prodID, (CASE prodSTATUS\n" + + "WHEN 1\n" + + "THEN 'SENT'\n" + + "ELSE 'BACK ORDER'\n" + + "END) || ' STATUS'\n" + + "FROM t1;\n" + + "\n" + + "SELECT *\n" + + "FROM t\n" + + "WHERE x = CASE y\n" + + "WHEN 2\n" + + "THEN 1001\n" + + "WHEN 5\n" + + "THEN 1002\n" + + "END;\n" + + "\n" + + "-- searched\n" + + "SELECT SUM(CASE\n" + + "WHEN part=��1��\n" + + "THEN cost\n" + + "ELSE 0\n" + + "END\n" + + ") / SUM(cost)\n" + + "FROM t;\n" + + "\n" + + "SELECT *\n" + + "FROM t\n" + + "WHERE x = CASE\n" + + "WHEN y=2\n" + + "THEN 1\n" + + "WHEN (z=3 AND y=5)\n" + + "THEN 2\n" + + "END;\n" + + "\n" + + "SELECT *\n" + + "FROM t\n" + + "WHERE x = CASE\n" + + "WHEN y=2\n" + + "THEN 1\n" + + "ELSE 2\n" + + "END;\n" + + "\n" + + "SELECT MONTH, SUM(CASE\n" + + "WHEN Region=��NE��\n" + + "THEN Revenue\n" + + "ELSE 0\n" + + "END),\n" + + "SUM(CASE\n" + + "WHEN Region=��NW��\n" + + "THEN Revenue\n" + + "ELSE 0\n" + + "END),\n" + + "SUM(CASE\n" + + "WHEN Region LIKE ��N%��\n" + + "THEN Revenue\n" + + "ELSE 0\n" + + "END)\n" + + "AS NorthernExposure, NorthernExposure/SUM(Revenue),\n" + + "SUM(Revenue)\n" + + "FROM SALES\n" + + "GROUP BY MONTH;\n" + + "\n" + + "SELECT CAST(last_name AS CHARACTER(15)),salary_amount (FORMAT\n" + + "'$,$$9,999.99'),(date - hire_date)/365.25 (FORMAT 'Z9.99') AS\n" + + "On_The_Job, CASE\n" + + "WHEN salary_amount < 30000 AND On_The_Job > 8\n" + + "THEN '15% Increase'\n" + + "WHEN salary_amount < 35000 AND On_The_Job > 10\n" + + "THEN '10% Increase'\n" + + "WHEN salary_amount < 40000 AND On_The_Job > 10\n" + + "THEN '05% Increase'\n" + + "ELSE 'Under 8 Years'\n" + + "END AS Plan\n" + + "WHERE salary_amount < 40000\n" + + "FROM employee\n" + + "ORDER BY 4;\n" + + "\n" + + "SELECT prodID, (CASE\n" + + "WHEN prodSTATUS = 1\n" + + "THEN 'SENT'\n" + + "ELSE 'BACK ORDER'\n" + + "END) || ' STATUS'\n" + + "FROM t1;\n" + + "\n" + + "/*\n" + + "In the following query, the CASE expression returns a FLOAT result because its\n" + + "THEN and ELSE clauses contain both INTEGER and DECIMAL values. The\n" + + "result is then cast to DECIMAL using teradata conversion syntax:\n" + + "*/\n" + + "SELECT SUM (CASE\n" + + "WHEN column_2=1\n" + + "THEN column_3 * 6\n" + + "ELSE column_3\n" + + "END (DECIMAL(15,2)))\n" + + "FROM dec15;\n" + + "\n" + + "\n" + + "SELECT SUM (CASE\n" + + "WHEN column_2=100\n" + + "THEN (column_1 (DECIMAL(15,2)))\n" + + "ELSE column_3\n" + + "END )\n" + + "FROM dec15;\n" + + "\n" + + "SELECT i, ((CASE\n" + + "WHEN i=1\n" + + "THEN start_date\n" + + "WHEN i=2\n" + + "THEN end_date\n" + + "END) (FORMAT 'DDBM4BYYYY'))\n" + + "FROM duration\n" + + "ORDER BY 1;\n" + + "\n" + + "SELECT CASE NULL\n" + + "WHEN 10\n" + + "THEN ��TEN��\n" + + "END;\n" + + "\n" + + "SELECT CASE NULL + 1\n" + + "WHEN 10\n" + + "THEN ��TEN��\n" + + "END;\n" + + "\n" + + "SELECT CASE\n" + + "WHEN column_1 IS NULL\n" + + "THEN ��NULL��\n" + + "END\n" + + "FROM table_1;\n" + + "\n" + + "--COALESCE \n" + + "SELECT Name, COALESCE (HomePhone, OfficePhone, MessageService)\n" + + "FROM PhoneDir;\n" + + "\n" + + "SELECT Name\n" + + "FROM Directory\n" + + "WHEN Organization <> COALESCE (Level1, Level2, Level3);\n" + + ""; + sqlparser.getrawsqlstatements(); + assertTrue(sqlparser.sqlstatements.size() == 17); + //System.out.print(sqlparser.sqlstatements.size()); + } + + public void testcreateprocedure(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "CREATE PROCEDURE spAccount(OUT p1 CHARACTER(30))\n" + + "L1: BEGIN\n" + + "DECLARE i INTEGER;\n" + + "DECLARE DeptCursor CURSOR FOR\n" + + "SELECT DeptName from Department;\n" + + "DECLARE CONTINUE HANDLER FOR SQLSTATE VALUE '23505'\n" + + "L2: BEGIN\n" + + "SET p1='Failed To Insert Row';\n" + + "END L2;\n" + + "L3: BEGIN\n" + + "INSERT INTO table_1 VALUES(1,10);\n" + + "IF SQLCODE <> 0 THEN LEAVE L1;\n" + + "END L3;\n" + + "INSERT INTO table_2 VALUES(2,20);\n" + + "END L1;\n" + + "/\n" + + "\n" + + "CREATE PROCEDURE spSample1(INOUT IOParam1 INTEGER,\n" + + "OUT OParam2 INTEGER)\n" + + "L1: BEGIN\n" + + "DECLARE K INTEGER DEFAULT 10;\n" + + "L2: BEGIN\n" + + "DECLARE K INTEGER DEFAULT 20;\n" + + "SET OParam2 = K;\n" + + "SET IOParam1 = L1.K;\n" + + "END L2;\n" + + "\n" + + "END L1;\n" + + "/\n" + + "\n" + + "CREATE PROCEDURE spSample3(OUT p1 CHARACTER(80))\n" + + "BEGIN\n" + + "DECLARE i INTEGER DEFAULT 20;\n" + + "DECLARE EXIT HANDLER\n" + + "FOR SQLSTATE '42000'\n" + + "BEGIN\n" + + "DECLARE i INTEGER DEFAULT 10;\n" + + "DECLARE CONTINUE HANDLER\n" + + "FOR SQLEXCEPTION\n" + + "SET p1 = 'Table does not exist';\n" + + "DROP TABLE table1;\n" + + "CREATE TABLE table1 (c1 INTEGER);\n" + + "INSERT INTO table1 (i);\n" + + "END;\n" + + "INSERT INTO table1 VALUES(1000,'aaa');\n" + + "/* table1 does not exist */\n" + + "END;\n" + + "/\n" + + "\n" + + "CREATE PROCEDURE spSample (OUT po1 VARCHAR(50),\n" + + "OUT po2 VARCHAR(50))\n" + + "BEGIN\n" + + "DECLARE i INTEGER DEFAULT 0;\n" + + "L1: BEGIN\n" + + "DECLARE var1 VARCHAR(25) DEFAULT 'ABCD';\n" + + "DECLARE CONTINUE HANDLER FOR SQLSTATE '42000'\n" + + "SET po1 = 'Table does not exist in L1';\n" + + "INSERT INTO tDummy (10, var1);\n" + + "-- Table Does not exist\n" + + "END L1;\n" + + "L2: BEGIN\n" + + "DECLARE var1 VARCHAR(25) DEFAULT 'XYZ';\n" + + "DECLARE CONTINUE HANDLER FOR SQLSTATE '42000'\n" + + "SET po2 = 'Table does not exist in L2';\n" + + "INSERT INTO tDummy (i, var1);\n" + + "-- Table Does not exist\n" + + "END L2;\n" + + "END;"; + sqlparser.getrawsqlstatements(); + //System.out.print(sqlparser.sqlstatements.size()); + //System.out.println(sqlparser.sqlstatements.get(3).toString()); + //System.out.println(sqlparser.sqlstatements.get(1).sqlstatementtype); + //System.out.println(sqlparser.sqlstatements.get(2).sqlstatementtype); + //System.out.println(sqlparser.sqlstatements.get(3).sqlstatementtype); + + assertTrue(sqlparser.sqlstatements.size() == 4); + } + +} diff --git a/src/test/java/teradata/testTeradataLiteral.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataLiteral.java similarity index 97% rename from src/test/java/teradata/testTeradataLiteral.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataLiteral.java index 2d872d0e..21e98449 100644 --- a/src/test/java/teradata/testTeradataLiteral.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataLiteral.java @@ -1,117 +1,117 @@ -package teradata; -/* - * Date: 2010-9-25 - * Time: 9:37:10 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.teradata.TDataDefinition; -import junit.framework.TestCase; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; - -public class testTeradataLiteral extends TestCase { - - public void testDatetime(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select TIMESTAMP '1999-07-01 15:00:00-08:00',DATE '1998-06-01',TIME '10:35:00' from dual;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TResultColumn column1 = select.getResultColumnList().getResultColumn(1); - TResultColumn column2 = select.getResultColumnList().getResultColumn(2); - assertTrue(column0.toString().equalsIgnoreCase("TIMESTAMP '1999-07-01 15:00:00-08:00'")); - //System.out.println(column1.getExpr().getExpressionType()); - assertTrue(column1.toString().equalsIgnoreCase("DATE '1998-06-01'")); - assertTrue(column2.toString().equalsIgnoreCase("TIME '10:35:00'")); - } - - public void testInterval(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT INTERVAL - '2' YEAR + CURRENT_DATE;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - //TResultColumn column1 = select.getResultColumnList().getResultColumn(1); - //TResultColumn column2 = select.getResultColumnList().getResultColumn(2); - assertTrue(column0.getExpr().getLeftOperand().getExpressionType() == EExpressionType.simple_constant_t); - assertTrue(column0.getExpr().getLeftOperand().getConstantOperand().toString().equalsIgnoreCase("INTERVAL - '2' YEAR")); - //assertTrue(column1.toString().equalsIgnoreCase("DATE '1998-06-01'")); - //assertTrue(column2.toString().equalsIgnoreCase("TIME '10:35:00'")); - } - - public void testCharacter(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select 'He said ''yes'' to her question'" + - ",''" + - ",G'xxx'" + - ",_Latin'abc'" + - ",_Unicode'cde'" + - ",X'0F'"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - //System.out.println(column0.toString()); - assertTrue(column0.toString().equalsIgnoreCase("'He said ''yes'' to her question'")); - TResultColumn column1 = select.getResultColumnList().getResultColumn(1); - assertTrue(column1.toString().equalsIgnoreCase("''")); - TResultColumn column2 = select.getResultColumnList().getResultColumn(2); - assertTrue(column2.toString().equalsIgnoreCase("G'xxx'")); - TResultColumn column3 = select.getResultColumnList().getResultColumn(3); - assertTrue(column3.toString().equalsIgnoreCase("_Latin'abc'")); - - //System.out.println(column4.toString()); - - TResultColumn column4 = select.getResultColumnList().getResultColumn(4); - assertTrue(column4.toString().equalsIgnoreCase("_Unicode'cde'")); - // System.out.println(column4.toString()); - - TResultColumn column5 = select.getResultColumnList().getResultColumn(5); - assertTrue(column5.toString().equalsIgnoreCase("X'0F'")); - - sqlparser.sqltext = "select * from t where CodeVal = '7879'X"+ - " and codeVal= '55'XBF"; - assertTrue(sqlparser.parse() == 0); - - select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TExpression whereCondition = select.getWhereClause().getCondition(); - - //System.out.println(whereCondition.toString()); - - } - - public void testDatatype(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "create table t(\n" + - "\tSalary DECIMAL(8,2) FORMAT 'ZZZ,ZZ9.99'\n" + - "\tCHECK (Salary BETWEEN 1.00 AND 999000.00),\n" + - "\tid decimal(5,4)\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition column = createTable.getColumnList().getColumn(0); - - TTypeName datatype = column.getDatatype(); - - assertTrue(datatype.getDataType() == EDataType.decimal_t); - - //System.out.println(column.getDataDefinitions().size()); - assertTrue(column.getDataDefinitions().size() == 2); - TDataDefinition dataDefinition = column.getDataDefinitions().get(0); - assertTrue(dataDefinition.getDataDefinitionType() == TDataDefinition.EDataDefinitionType.dataAttribute); - - - TDatatypeAttribute datatypeAttribute = dataDefinition.getDatatypeAttribute(); - assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.format_t); - - //System.out.println(datatypeAttribute.toString()); - assertTrue(datatypeAttribute.toString().equalsIgnoreCase("FORMAT 'ZZZ,ZZ9.99'")); - - assertTrue(column.getConstraints().getConstraint(0).getConstraint_type() == EConstraintType.check); - } - - -} +package gudusoft.gsqlparser.teradataTest; +/* + * Date: 2010-9-25 + * Time: 9:37:10 + */ + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.teradata.TDataDefinition; +import junit.framework.TestCase; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; +import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; + +public class testTeradataLiteral extends TestCase { + + public void testDatetime(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select TIMESTAMP '1999-07-01 15:00:00-08:00',DATE '1998-06-01',TIME '10:35:00' from dual;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn column0 = select.getResultColumnList().getResultColumn(0); + TResultColumn column1 = select.getResultColumnList().getResultColumn(1); + TResultColumn column2 = select.getResultColumnList().getResultColumn(2); + assertTrue(column0.toString().equalsIgnoreCase("TIMESTAMP '1999-07-01 15:00:00-08:00'")); + //System.out.println(column1.getExpr().getExpressionType()); + assertTrue(column1.toString().equalsIgnoreCase("DATE '1998-06-01'")); + assertTrue(column2.toString().equalsIgnoreCase("TIME '10:35:00'")); + } + + public void testInterval(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT INTERVAL - '2' YEAR + CURRENT_DATE;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn column0 = select.getResultColumnList().getResultColumn(0); + //TResultColumn column1 = select.getResultColumnList().getResultColumn(1); + //TResultColumn column2 = select.getResultColumnList().getResultColumn(2); + assertTrue(column0.getExpr().getLeftOperand().getExpressionType() == EExpressionType.simple_constant_t); + assertTrue(column0.getExpr().getLeftOperand().getConstantOperand().toString().equalsIgnoreCase("INTERVAL - '2' YEAR")); + //assertTrue(column1.toString().equalsIgnoreCase("DATE '1998-06-01'")); + //assertTrue(column2.toString().equalsIgnoreCase("TIME '10:35:00'")); + } + + public void testCharacter(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select 'He said ''yes'' to her question'" + + ",''" + + ",G'xxx'" + + ",_Latin'abc'" + + ",_Unicode'cde'" + + ",X'0F'"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn column0 = select.getResultColumnList().getResultColumn(0); + //System.out.println(column0.toString()); + assertTrue(column0.toString().equalsIgnoreCase("'He said ''yes'' to her question'")); + TResultColumn column1 = select.getResultColumnList().getResultColumn(1); + assertTrue(column1.toString().equalsIgnoreCase("''")); + TResultColumn column2 = select.getResultColumnList().getResultColumn(2); + assertTrue(column2.toString().equalsIgnoreCase("G'xxx'")); + TResultColumn column3 = select.getResultColumnList().getResultColumn(3); + assertTrue(column3.toString().equalsIgnoreCase("_Latin'abc'")); + + //System.out.println(column4.toString()); + + TResultColumn column4 = select.getResultColumnList().getResultColumn(4); + assertTrue(column4.toString().equalsIgnoreCase("_Unicode'cde'")); + // System.out.println(column4.toString()); + + TResultColumn column5 = select.getResultColumnList().getResultColumn(5); + assertTrue(column5.toString().equalsIgnoreCase("X'0F'")); + + sqlparser.sqltext = "select * from t where CodeVal = '7879'X"+ + " and codeVal= '55'XBF"; + assertTrue(sqlparser.parse() == 0); + + select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + TExpression whereCondition = select.getWhereClause().getCondition(); + + //System.out.println(whereCondition.toString()); + + } + + public void testDatatype(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "create table t(\n" + + "\tSalary DECIMAL(8,2) FORMAT 'ZZZ,ZZ9.99'\n" + + "\tCHECK (Salary BETWEEN 1.00 AND 999000.00),\n" + + "\tid decimal(5,4)\n" + + ");"; + assertTrue(sqlparser.parse() == 0); + + TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); + TColumnDefinition column = createTable.getColumnList().getColumn(0); + + TTypeName datatype = column.getDatatype(); + + assertTrue(datatype.getDataType() == EDataType.decimal_t); + + //System.out.println(column.getDataDefinitions().size()); + assertTrue(column.getDataDefinitions().size() == 2); + TDataDefinition dataDefinition = column.getDataDefinitions().get(0); + assertTrue(dataDefinition.getDataDefinitionType() == TDataDefinition.EDataDefinitionType.dataAttribute); + + + TDatatypeAttribute datatypeAttribute = dataDefinition.getDatatypeAttribute(); + assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.format_t); + + //System.out.println(datatypeAttribute.toString()); + assertTrue(datatypeAttribute.toString().equalsIgnoreCase("FORMAT 'ZZZ,ZZ9.99'")); + + assertTrue(column.getConstraints().getConstraint(0).getConstraint_type() == EConstraintType.check); + } + + +} diff --git a/src/test/java/teradata/testTeradataOutputFormatPhrase.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataOutputFormatPhrase.java similarity index 97% rename from src/test/java/teradata/testTeradataOutputFormatPhrase.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataOutputFormatPhrase.java index ea793f7e..ca97bff5 100644 --- a/src/test/java/teradata/testTeradataOutputFormatPhrase.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataOutputFormatPhrase.java @@ -1,119 +1,119 @@ -package teradata; - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.teradata.TDataConversion; -import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; -import junit.framework.TestCase; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; - -public class testTeradataOutputFormatPhrase extends TestCase { - - public void test11(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select b.c (FORMAT 'X(30)') (TITLE 'Internal Hex Representation of TableName') from b"; - boolean ret = sqlparser.parse() == 0; - assertTrue(sqlparser.getErrormessage(),ret); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expr = column0.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expr.getObjectOperand().toString().equalsIgnoreCase("b.c")); - - assertTrue(expr.getDataConversions().size() == 2); - TDataConversion dataConversion0 = expr.getDataConversions().get(0); - assertTrue(dataConversion0.getDataConversionItems().size() == 1); - assertTrue(dataConversion0.getDataConversionItems().get(0).getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - assertTrue(dataConversion0.getDataConversionItems().get(0).getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.format_t); - - TDataConversion dataConversion1 = expr.getDataConversions().get(1); - assertTrue(dataConversion1.getDataConversionItems().size() == 1); - assertTrue(dataConversion1.getDataConversionItems().get(0).getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - assertTrue(dataConversion1.getDataConversionItems().get(0).getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.title_t); - } - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT SUM(Salary) (FORMAT '$$99,999.99')\n" + - "FROM Employee;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - sqlparser.sqltext = "SELECT SUM(Salary) (FORMAT '$$99,999.99') as alias1\n" + - "FROM Employee;"; - assertTrue(sqlparser.parse() == 0); - - sqlparser.sqltext = "SELECT Salary (FORMAT '$$99,999.99') as alias1\n" + - "FROM Employee;"; - assertTrue(sqlparser.parse() == 0); - - sqlparser.sqltext = "SELECT Salary (FORMAT '$$99,999.99') (CHAR(12), UC) as alias1\n" + - "FROM Employee;"; - assertTrue(sqlparser.parse() == 0); - - sqlparser.sqltext = "SELECT SUM(Salary)+1 (FORMAT '$$99,999.99') (CHAR(12), UC) as alias1\n" + - "FROM Employee;"; - assertTrue(sqlparser.parse() == 0); - select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expr = column0.getExpr(); -// System.out.println(expr.toString()); -// System.out.println(column0.toString()); - assertTrue(expr.getExpressionType() == EExpressionType.arithmetic_plus_t); - assertTrue(expr.toString().equalsIgnoreCase("SUM(Salary)+1 (FORMAT '$$99,999.99') (CHAR(12), UC)")); - assertTrue(expr.getDataConversions().size() == 2); - - TDataConversion dataConversion0 = expr.getDataConversions().get(0); //(FORMAT '$$99,999.99') - assertTrue(dataConversion0.getDataConversionItems().size() == 1); - TDataConversionItem item = dataConversion0.getDataConversionItems().get(0); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - assertTrue(item.getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.format_t); - - TDataConversion dataConversion1 = expr.getDataConversions().get(1); // (CHAR(12), UC) - assertTrue(dataConversion1.getDataConversionItems().size() == 2); - TDataConversionItem item0 = dataConversion1.getDataConversionItems().get(0); // CHAR(12) - assertTrue(item0.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); - TTypeName dataType = item0.getDataType(); - assertTrue(dataType.getDataType() == EDataType.char_t); - - TDataConversionItem item1 = dataConversion1.getDataConversionItems().get(1); // UC - assertTrue(item1.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - assertTrue(item1.getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.uppercase_t); - - } - - - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT 47.5(FORMAT 'zzzz'), 48.5(FORMAT 'zzzz') ;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT 13451 / 10000.000 (FORMAT 'zz.z');"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - } - - public void test4(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - //Use a statement like the following to display a date in uppercase: - sqlparser.sqltext = "SELECT DATE (FORMAT 'MMMbdd,bYYYY') (CHAR(12), UC);"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - } - - -} +package gudusoft.gsqlparser.teradataTest; + + +import gudusoft.gsqlparser.*; +import gudusoft.gsqlparser.nodes.*; +import gudusoft.gsqlparser.nodes.teradata.TDataConversion; +import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; +import junit.framework.TestCase; +import gudusoft.gsqlparser.stmt.TSelectSqlStatement; + +public class testTeradataOutputFormatPhrase extends TestCase { + + public void test11(){ + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "select b.c (FORMAT 'X(30)') (TITLE 'Internal Hex Representation of TableName') from b"; + boolean ret = sqlparser.parse() == 0; + assertTrue(sqlparser.getErrormessage(),ret); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + TResultColumn column0 = select.getResultColumnList().getResultColumn(0); + TExpression expr = column0.getExpr(); + assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); + assertTrue(expr.getObjectOperand().toString().equalsIgnoreCase("b.c")); + + assertTrue(expr.getDataConversions().size() == 2); + TDataConversion dataConversion0 = expr.getDataConversions().get(0); + assertTrue(dataConversion0.getDataConversionItems().size() == 1); + assertTrue(dataConversion0.getDataConversionItems().get(0).getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); + assertTrue(dataConversion0.getDataConversionItems().get(0).getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.format_t); + + TDataConversion dataConversion1 = expr.getDataConversions().get(1); + assertTrue(dataConversion1.getDataConversionItems().size() == 1); + assertTrue(dataConversion1.getDataConversionItems().get(0).getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); + assertTrue(dataConversion1.getDataConversionItems().get(0).getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.title_t); + } + + public void test1(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT SUM(Salary) (FORMAT '$$99,999.99')\n" + + "FROM Employee;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + sqlparser.sqltext = "SELECT SUM(Salary) (FORMAT '$$99,999.99') as alias1\n" + + "FROM Employee;"; + assertTrue(sqlparser.parse() == 0); + + sqlparser.sqltext = "SELECT Salary (FORMAT '$$99,999.99') as alias1\n" + + "FROM Employee;"; + assertTrue(sqlparser.parse() == 0); + + sqlparser.sqltext = "SELECT Salary (FORMAT '$$99,999.99') (CHAR(12), UC) as alias1\n" + + "FROM Employee;"; + assertTrue(sqlparser.parse() == 0); + + sqlparser.sqltext = "SELECT SUM(Salary)+1 (FORMAT '$$99,999.99') (CHAR(12), UC) as alias1\n" + + "FROM Employee;"; + assertTrue(sqlparser.parse() == 0); + select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + TResultColumn column0 = select.getResultColumnList().getResultColumn(0); + TExpression expr = column0.getExpr(); +// System.out.println(expr.toString()); +// System.out.println(column0.toString()); + assertTrue(expr.getExpressionType() == EExpressionType.arithmetic_plus_t); + assertTrue(expr.toString().equalsIgnoreCase("SUM(Salary)+1 (FORMAT '$$99,999.99') (CHAR(12), UC)")); + assertTrue(expr.getDataConversions().size() == 2); + + TDataConversion dataConversion0 = expr.getDataConversions().get(0); //(FORMAT '$$99,999.99') + assertTrue(dataConversion0.getDataConversionItems().size() == 1); + TDataConversionItem item = dataConversion0.getDataConversionItems().get(0); + assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); + assertTrue(item.getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.format_t); + + TDataConversion dataConversion1 = expr.getDataConversions().get(1); // (CHAR(12), UC) + assertTrue(dataConversion1.getDataConversionItems().size() == 2); + TDataConversionItem item0 = dataConversion1.getDataConversionItems().get(0); // CHAR(12) + assertTrue(item0.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); + TTypeName dataType = item0.getDataType(); + assertTrue(dataType.getDataType() == EDataType.char_t); + + TDataConversionItem item1 = dataConversion1.getDataConversionItems().get(1); // UC + assertTrue(item1.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); + assertTrue(item1.getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.uppercase_t); + + } + + + + public void test2(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT 47.5(FORMAT 'zzzz'), 48.5(FORMAT 'zzzz') ;"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + } + + public void test3(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + sqlparser.sqltext = "SELECT 13451 / 10000.000 (FORMAT 'zz.z');"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + } + + public void test4(){ + + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); + //Use a statement like the following to display a date in uppercase: + sqlparser.sqltext = "SELECT DATE (FORMAT 'MMMbdd,bYYYY') (CHAR(12), UC);"; + assertTrue(sqlparser.parse() == 0); + TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); + + } + + +} diff --git a/src/test/java/teradata/testTeradataTokenize.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataTokenize.java similarity index 96% rename from src/test/java/teradata/testTeradataTokenize.java rename to src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataTokenize.java index 2cce306d..7172ec16 100644 --- a/src/test/java/teradata/testTeradataTokenize.java +++ b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataTokenize.java @@ -1,56 +1,56 @@ -package teradata; -/* - * Date: 2010-9-10 - * Time: 15:05:48 - */ - -import junit.framework.TestCase; -import gudusoft.gsqlparser.*; - -public class testTeradataTokenize extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT col\n" + - "FROM '0E42E342C142C242F10F4B414E'XN;" ; - sqlparser.tokenizeSqltext(); - TSourceToken st = sqlparser.sourcetokenlist.get(0); - assertTrue(st.toString().equalsIgnoreCase("select")); - st = sqlparser.sourcetokenlist.get(2); - assertTrue(st.toString().equalsIgnoreCase("col")); - st = sqlparser.sourcetokenlist.get(4); - assertTrue(st.toString().equalsIgnoreCase("from")); - st = sqlparser.sourcetokenlist.get(6); - assertTrue(st.toString().equalsIgnoreCase("'0E42E342C142C242F10F4B414E'XN")); - st = sqlparser.sourcetokenlist.get(7); - assertTrue(st.toString().equalsIgnoreCase(";")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE PROCEDURE spSample (OUT po1 VARCHAR(50),\n" + - "OUT po2 VARCHAR(50))\n" + - "BEGIN\n" + - "DECLARE i INTEGER DEFAULT 0;\n" + - "L1: BEGIN\n" + - "DECLARE var1 VARCHAR(25) DEFAULT 'ABCD';\n" + - "DECLARE CONTINUE HANDLER FOR SQLSTATE '42000'\n" + - "SET po1 = 'Table does not exist in L1';\n" + - "INSERT INTO tDummy (10, var1);\n" + - "-- Table Does not exist\n" + - "END L1;\n" + - "L2: BEGIN\n" + - "DECLARE var1 VARCHAR(25) DEFAULT 'XYZ';\n" + - "DECLARE CONTINUE HANDLER FOR SQLSTATE '42000'\n" + - "SET po2 = 'Table does not exist in L2';\n" + - "INSERT INTO tDummy (i, var1);\n" + - "-- Table Does not exist\n" + - "END L2;\n" + - "END;"; - sqlparser.tokenizeSqltext(); - // for(int i=0;i Date: Tue, 17 Sep 2024 23:57:40 +0800 Subject: [PATCH 2/4] 2.9.3.7 --- .../TestAcceptChildren.java | 360 ---- .../gsqlparser/acceptChildrenTest/readme.md | 3 - .../athenaTest/testCreateExternal.java | 83 - .../gsqlparser/athenaTest/testExplain.java | 30 - .../gsqlparser/athenaTest/testUnloadStmt.java | 26 - .../gsqlparser/bigqueryTest/testBacktick.java | 128 -- .../bigqueryTest/testCheckSourceColumn.java | 47 - .../bigqueryTest/testCreateExternalTable.java | 196 -- .../bigqueryTest/testCreateFunction.java | 34 - .../bigqueryTest/testCreateProcedure.java | 89 - .../bigqueryTest/testCreateTable.java | 51 - .../bigqueryTest/testCreateTableFunction.java | 57 - .../gsqlparser/bigqueryTest/testDeclare.java | 35 - .../bigqueryTest/testIdentifier.java | 152 -- .../bigqueryTest/testLegacySQL.java | 176 -- .../commonTest/testPivotClause.java | 12 +- .../couchbaseTest/testCreateIndex.java | 30 - .../gsqlparser/couchbaseTest/testExplain.java | 72 - .../gsqlparser/couchbaseTest/testInfer.java | 31 - .../gsqlparser/couchbaseTest/testInsert.java | 65 - .../gsqlparser/couchbaseTest/testUpsert.java | 41 - .../customerTest/dag/testBuiltInFucntion.java | 86 - .../customerTest/dag/testKeepKeyword.java | 22 - .../dag/testMultiSetOperator.java | 19 - .../customerTest/noetix/testViewAlias.java | 237 --- .../testGroupByItemWithParenthesis.java | 49 - .../customerTest/panayainc/testLabelName.java | 66 - .../panayainc/testOracleCustomPackage.java | 21 - .../panayainc/testProcedureInnerStmt.java | 50 - .../panayainc/testUnionWithParenthesis.java | 98 - .../cversionTest/testFileNumbers.java | 20 - .../databricksTest/testDatatypeCast.java | 22 - .../testJsonPathExpression.java | 146 -- .../gsqlparser/databricksTest/testStruct.java | 33 - .../gsqlparser/databricksTest/testUse.java | 68 - .../gsqlparser/dataflowTest/test3360.java | 70 - .../gsqlparser/dataflowTest/testDataflow.java | 72 - .../gsqlparser/dataflowTest/testIAOX42.java | 83 - .../gsqlparser/dataflowTest/testIAQE4Y.java | 63 - .../dataflowTest/testRelationProcess.java | 119 -- .../gsqlparser/daxTest/testEvaluate.java | 41 - .../gsqlparser/db2Tesst/testBlock.java | 24 - .../gsqlparser/db2Tesst/testCall.java | 21 - .../db2Tesst/testCreateDatabase.java | 25 - .../db2Tesst/testCreateProcedure.java | 48 - .../db2Tesst/testCreateTablespace.java | 20 - .../db2Tesst/testCreateVariable.java | 23 - .../gsqlparser/db2Tesst/testIdentifier.java | 12 - .../db2Tesst/testLabeledDuration.java | 32 - .../gsqlparser/db2Tesst/testParameter.java | 26 - .../db2Tesst/testWithCheckOption.java | 28 - .../testPLSQLExecImmediateByVisitor.java | 282 --- .../testSQLServerCreateProcedureExec.java | 116 -- .../dynamicsqlTest/testSQLServerExec.java | 139 -- .../errorsqlTest/testCreateIndex.java | 29 - .../formatsqlTest/formatsqlTest.java | 77 - .../formatsqlTest/formatsqlVerifyTest.java | 109 - .../testAlignAliasInSelectList.java | 66 - .../formatsqlTest/testAlignment.java | 139 -- .../formatsqlTest/testBlankLines.java | 331 --- .../gsqlparser/formatsqlTest/testCTE.java | 44 - .../formatsqlTest/testCapitalisation.java | 103 - .../formatsqlTest/testCaseExpression.java | 86 - .../gsqlparser/formatsqlTest/testComment.java | 279 --- .../formatsqlTest/testCompactMode.java | 41 - .../testCreateFunctionProcedure.java | 680 ------- .../formatsqlTest/testCreateTable.java | 124 -- .../gsqlparser/formatsqlTest/testDeclare.java | 28 - .../gsqlparser/formatsqlTest/testExecute.java | 35 - .../formatsqlTest/testFromClause.java | 140 -- .../formatsqlTest/testFunctionCall.java | 120 -- .../formatsqlTest/testGroupByClause.java | 88 - .../formatsqlTest/testIndentation.java | 330 --- .../formatsqlTest/testInsertList.java | 81 - .../formatsqlTest/testIntoClause.java | 32 - .../gsqlparser/formatsqlTest/testIssues.java | 72 - .../formatsqlTest/testLineNumber.java | 36 - .../formatsqlTest/testOracleCreateView.java | 379 ---- .../formatsqlTest/testOrderByClause.java | 86 - .../gsqlparser/formatsqlTest/testPlsql1.java | 55 - .../formatsqlTest/testSelectList.java | 138 -- .../formatsqlTest/testWhereClause.java | 49 - .../formatsqlTest/testWhitespace.java | 182 -- .../testDeclareCursorSingleStmt.java | 25 - .../gsqlparser/gaussdbTest/testGetStmts.java | 66 - .../greenplumTest/testAlterTable.java | 39 - .../testCreateExternalTable.java | 100 - .../greenplumTest/testCreateFunction.java | 532 ----- .../greenplumTest/testCreateTable.java | 39 - .../greenplumTest/testDeclareBlock.java | 30 - .../greenplumTest/testSetVariable.java | 33 - .../gsqlparser/greenplumTest/testValues.java | 61 - .../testAlterProcedureAndFunction.java | 32 - .../hanaTest/testCreateProcedure.java | 35 - .../gsqlparser/hanaTest/testLateral.java | 18 - .../gsqlparser/hanaTest/testUpsert.java | 82 - .../gsqlparser/hiveTest/testAlias.java | 41 - .../gsqlparser/hiveTest/testAlterTable.java | 48 - .../gsqlparser/hiveTest/testAnalyze.java | 30 - .../gudusoft/gsqlparser/hiveTest/testCTE.java | 48 - .../gsqlparser/hiveTest/testCastFunction.java | 39 - .../hiveTest/testCreateFunction.java | 23 - .../gsqlparser/hiveTest/testCreateIndex.java | 53 - .../gsqlparser/hiveTest/testCreateTable.java | 176 -- .../gsqlparser/hiveTest/testCreateView.java | 28 - .../gsqlparser/hiveTest/testDescribe.java | 48 - .../gsqlparser/hiveTest/testDropIndex.java | 21 - .../gsqlparser/hiveTest/testExplain.java | 51 - .../gsqlparser/hiveTest/testExportTable.java | 40 - .../hiveTest/testFieldExpression.java | 33 - .../gsqlparser/hiveTest/testFromSelect.java | 281 --- .../gsqlparser/hiveTest/testFunction.java | 57 - .../hiveTest/testGetFullTableName.java | 26 - .../gsqlparser/hiveTest/testHint.java | 22 - .../hiveTest/testIdentifierBacktick.java | 26 - .../gsqlparser/hiveTest/testImportTable.java | 39 - .../gsqlparser/hiveTest/testInsert.java | 103 - .../gsqlparser/hiveTest/testJoin.java | 125 -- .../gsqlparser/hiveTest/testLateralView.java | 63 - .../gsqlparser/hiveTest/testLoad.java | 56 - .../gsqlparser/hiveTest/testParse.java | 35 - .../gsqlparser/hiveTest/testSampleClause.java | 116 -- .../gsqlparser/hiveTest/testSelect.java | 119 -- .../gudusoft/gsqlparser/hiveTest/testSet.java | 67 - .../gsqlparser/hiveTest/testShow.java | 25 - .../gsqlparser/hiveTest/testTimestamp.java | 32 - .../gsqlparser/hiveTest/testToString.java | 36 - .../gsqlparser/hiveTest/testUnion.java | 194 -- .../gsqlparser/hiveTest/testWindowClause.java | 161 -- .../gsqlparser/hiveTest/testlexer.java | 114 -- .../gsqlparser/impalaTest/testSubquery.java | 27 - .../informixTest/testAlterObject.java | 23 - .../informixTest/testCreateProcedure.java | 36 - .../informixTest/testDropObject.java | 83 - .../informixTest/testOuterJoin.java | 51 - .../informixTest/testRenameObject.java | 61 - .../gsqlparser/informixTest/testSkip.java | 34 - .../interfaceDemoTest/testITokenHandle.java | 26 - .../interfaceDemoTest/testIgnorePrompt.java | 58 - .../gsqlparser/mdxTest/testAlterCube.java | 19 - .../gsqlparser/mdxTest/testCreateMeasure.java | 29 - .../gsqlparser/mdxTest/testCreateMember.java | 38 - .../gudusoft/gsqlparser/mdxTest/testIIF.java | 33 - .../gsqlparser/mdxTest/testMembers.java | 78 - .../gsqlparser/mdxTest/testRawStatements.java | 53 - .../gsqlparser/mdxTest/testTokenlizer.java | 349 ---- .../mdxTest/testWithMeasureInSelect.java | 33 - .../mssqlTest/testAlterDatabase.java | 25 - .../gsqlparser/mssqlTest/testAlterTable.java | 167 -- .../gsqlparser/mssqlTest/testAssignment.java | 53 - .../gsqlparser/mssqlTest/testCallTarget.java | 64 - .../mssqlTest/testContainsFunction.java | 31 - .../mssqlTest/testCopyIntoStmt.java | 62 - .../mssqlTest/testCreateCredential.java | 39 - .../mssqlTest/testCreateDatabase.java | 35 - .../mssqlTest/testCreateEventSession.java | 29 - .../testCreateExternalDataSource.java | 50 - .../mssqlTest/testCreateExternalLanguage.java | 21 - .../gsqlparser/mssqlTest/testCreateIndex.java | 27 - .../mssqlTest/testCreateMasterKey.java | 18 - .../mssqlTest/testCreateProcedureOption.java | 395 ---- .../mssqlTest/testCreateTrigger.java | 42 - .../gsqlparser/mssqlTest/testDatatype.java | 48 - .../mssqlTest/testDeclareBlock.java | 42 - .../mssqlTest/testDeclareCursor.java | 29 - .../gsqlparser/mssqlTest/testDistinct.java | 21 - .../mssqlTest/testDropDBObject.java | 31 - .../mssqlTest/testExecuteOption.java | 91 - .../mssqlTest/testExternalTable.java | 78 - .../gsqlparser/mssqlTest/testFileFormat.java | 27 - .../gsqlparser/mssqlTest/testOpenjson.java | 121 -- .../mssqlTest/testOutputClause.java | 48 - .../gsqlparser/mssqlTest/testPivot.java | 198 -- .../mssqlTest/testQualifiedName.java | 40 - .../gsqlparser/mssqlTest/testSyntaxHint.java | 23 - .../gsqlparser/mssqlTest/testTableHint.java | 383 ---- .../gsqlparser/mssqlTest/testThrow.java | 31 - .../gsqlparser/mssqlTest/testUse.java | 20 - .../gsqlparser/mssqlTest/testXMLfunction.java | 52 - .../gsqlparser/mysqlTest/testCall.java | 34 - .../gsqlparser/mysqlTest/testComment.java | 26 - .../mysqlTest/testCreateFucntion.java | 70 - .../gsqlparser/mysqlTest/testCreateTable.java | 36 - .../gsqlparser/mysqlTest/testDatatype.java | 69 - .../gsqlparser/mysqlTest/testDate.java | 24 - .../gsqlparser/mysqlTest/testDecimalDot.java | 60 - .../gsqlparser/mysqlTest/testDelete.java | 32 - .../gsqlparser/mysqlTest/testDescribe.java | 34 - .../gsqlparser/mysqlTest/testDropTable.java | 24 - .../gsqlparser/mysqlTest/testExecute.java | 20 - .../mysqlTest/testFromTableList.java | 32 - .../gsqlparser/mysqlTest/testGetTable.java | 91 - .../gsqlparser/mysqlTest/testIdentifier.java | 20 - .../mysqlTest/testIndexStorageType.java | 40 - .../gsqlparser/mysqlTest/testIndexType.java | 44 - .../mysqlTest/testInsertIgnore.java | 18 - .../mysqlTest/testIntDisplayLength.java | 23 - .../mysqlTest/testLeftRightShift.java | 32 - .../gsqlparser/mysqlTest/testLimitClause.java | 34 - .../gsqlparser/mysqlTest/testNullEncoded.java | 24 - .../mysqlTest/testOnDuplicateUpdate.java | 31 - .../gsqlparser/mysqlTest/testPrepareStmt.java | 32 - .../mysqlTest/testQuoteInLiteral.java | 68 - .../mysqlTest/testRollupModifier.java | 24 - .../gsqlparser/mysqlTest/testSPParameter.java | 61 - .../mysqlTest/testSelectModifier.java | 22 - .../gsqlparser/mysqlTest/testSet.java | 88 - .../gsqlparser/mysqlTest/testShowIndex.java | 33 - .../mysqlTest/testTimestampOnUpdate.java | 36 - .../mysqlTest/testTruncateTable.java | 30 - .../mysqlTest/testUpdateTargetTable.java | 42 - .../gsqlparser/mysqlTest/testUseDatabase.java | 22 - .../netezzaTest/testAlterTable.java | 41 - .../netezzaTest/testCTEInCreateView.java | 202 -- .../netezzaTest/testCTEInInsert.java | 28 - .../netezzaTest/testCreateExternalTable.java | 24 - .../netezzaTest/testCreateProcedure.java | 65 - .../netezzaTest/testDropSchema.java | 22 - .../netezzaTest/testExternalTableOption.java | 404 ---- .../netezzaTest/testGenerateStatistics.java | 39 - .../netezzaTest/testGroomTable.java | 48 - .../netezzaTest/testMinusSetToString.java | 29 - .../testSelectFromExternalTable.java | 29 - .../netezzaTest/testSetCatalogStmt.java | 19 - .../netezzaTest/testSetSchemaStmt.java | 19 - .../oracleTest/testAlterMaterializedView.java | 22 - .../gsqlparser/oracleTest/testAlterTable.java | 54 - .../oracleTest/testAlterTrigger.java | 21 - .../gsqlparser/oracleTest/testCall.java | 24 - .../gsqlparser/oracleTest/testCallSpec.java | 69 - .../gsqlparser/oracleTest/testCommentOn.java | 21 - .../oracleTest/testCompoundTrigger.java | 128 -- .../oracleTest/testCreateFunction.java | 39 - .../oracleTest/testCreateLibrary.java | 32 - .../testCreateMaterializedView.java | 53 - .../oracleTest/testCreatePackage.java | 48 - .../testCreateTableResultCache.java | 27 - .../gsqlparser/oracleTest/testCreateView.java | 23 - .../oracleTest/testDatabaseLink.java | 95 - .../gsqlparser/oracleTest/testDatatype.java | 38 - .../oracleTest/testErrorLoggingClause.java | 29 - .../oracleTest/testExecImmediate.java | 74 - .../oracleTest/testExecuteProcedure.java | 27 - .../oracleTest/testExplainPlan.java | 59 - .../oracleTest/testGetRawstatements.java | 29 - .../gsqlparser/oracleTest/testInExpr.java | 49 - .../oracleTest/testInsertMultiTable.java | 122 -- .../oracleTest/testInvokerRights.java | 28 - .../oracleTest/testListAggOverflow.java | 39 - .../oracleTest/testMaterializedView.java | 22 - .../oracleTest/testMergeInPlsql.java | 49 - .../gsqlparser/oracleTest/testMethodCall.java | 44 - .../oracleTest/testNamedParameter.java | 23 - .../oracleTest/testNaturalJoin.java | 29 - .../oracleTest/testNewConstructor.java | 35 - .../oracleTest/testObjectAccess.java | 41 - .../oracleTest/testOffsetClause.java | 24 - .../gsqlparser/oracleTest/testPivot.java | 68 - .../oracleTest/testRDBMSPackageCall.java | 20 - .../oracleTest/testRestrictionClause.java | 32 - .../gsqlparser/oracleTest/testSequence.java | 29 - .../gsqlparser/oracleTest/testSynonym.java | 22 - .../oracleTest/testVariableInProc.java | 132 -- .../oracleTest/testXMLFunction.java | 84 - .../gsqlparser/oracleTest/testXMLTable.java | 41 - .../oracleTest/testplsqldatatype.java | 86 - .../testPartialParseCreateTable.java | 60 - .../testBuiltinFunctions.java | 281 --- .../testInterpreterBase.java | 44 - .../plsqlInterpreterTest/testPostgres.java | 77 - .../plsqlInterpreterTest/testRedshift.java | 34 - .../plsqlInterpreterTest/testTestPutline.java | 448 ----- .../testAggregateExpressions.java | 37 - .../postgresqlTest/testAlterFunction.java | 20 - .../postgresqlTest/testAlterTable.java | 46 - .../postgresqlTest/testArrayConstructor.java | 92 - .../gsqlparser/postgresqlTest/testCTE.java | 51 - .../testCollationExpression.java | 44 - .../postgresqlTest/testConstant.java | 120 -- .../postgresqlTest/testCreateExtension.java | 32 - .../postgresqlTest/testCreateFunction.java | 240 --- .../postgresqlTest/testCreateFunction2.java | 30 - .../postgresqlTest/testCreateIndex.java | 25 - .../postgresqlTest/testCreateProcedure.java | 67 - .../postgresqlTest/testCreateTrigger.java | 30 - .../postgresqlTest/testCreateView.java | 49 - .../postgresqlTest/testDatatype.java | 151 -- .../postgresqlTest/testDeleteStmt.java | 26 - .../gsqlparser/postgresqlTest/testDrop.java | 20 - .../postgresqlTest/testDropTable.java | 22 - .../postgresqlTest/testFieldSelection.java | 73 - .../postgresqlTest/testFunctionCall.java | 27 - .../gsqlparser/postgresqlTest/testJSON.java | 126 -- .../postgresqlTest/testLimitOffset.java | 26 - .../postgresqlTest/testLockingClause.java | 46 - .../testMathematicalOperator.java | 179 -- .../postgresqlTest/testPlpgsql_assign.java | 55 - .../postgresqlTest/testPlpgsql_block.java | 80 - .../postgresqlTest/testPlpgsql_case.java | 120 -- .../postgresqlTest/testPlpgsql_close.java | 82 - .../testPlpgsql_declarestmt.java | 122 -- .../postgresqlTest/testPlpgsql_delete.java | 59 - .../postgresqlTest/testPlpgsql_exception.java | 58 - .../postgresqlTest/testPlpgsql_execute.java | 72 - .../postgresqlTest/testPlpgsql_exit.java | 101 - .../postgresqlTest/testPlpgsql_fetch.java | 48 - .../postgresqlTest/testPlpgsql_forLoop.java | 97 - .../postgresqlTest/testPlpgsql_foreach.java | 48 - .../postgresqlTest/testPlpgsql_getdiag.java | 57 - .../postgresqlTest/testPlpgsql_if.java | 175 -- .../postgresqlTest/testPlpgsql_insert.java | 90 - .../postgresqlTest/testPlpgsql_label.java | 45 - .../postgresqlTest/testPlpgsql_loop.java | 103 - .../postgresqlTest/testPlpgsql_move.java | 46 - .../postgresqlTest/testPlpgsql_null.java | 46 - .../postgresqlTest/testPlpgsql_open.java | 51 - .../postgresqlTest/testPlpgsql_openfor.java | 39 - .../postgresqlTest/testPlpgsql_raise.java | 50 - .../postgresqlTest/testPlpgsql_return.java | 38 - .../postgresqlTest/testPlpgsql_update.java | 87 - .../postgresqlTest/testPlpgsql_while.java | 57 - .../postgresqlTest/testReindex.java | 28 - .../postgresqlTest/testRowConstructor.java | 68 - .../postgresqlTest/testSYMMETRIC.java | 28 - .../gsqlparser/postgresqlTest/testSchema.java | 29 - .../postgresqlTest/testSetSearchPath.java | 22 - .../postgresqlTest/testSetVariable.java | 33 - .../postgresqlTest/testStringConcate.java | 24 - .../postgresqlTest/testSubscript.java | 86 - .../postgresqlTest/testTableStmt.java | 29 - .../postgresqlTest/testTruncate.java | 36 - .../postgresqlTest/testUpdateStmt.java | 123 -- .../gsqlparser/postgresqlTest/testVacuum.java | 37 - .../testValueListInFromClause.java | 45 - .../postgresqlTest/testWindowClause.java | 24 - .../postgresqlTest/testWindowFunctions.java | 97 - .../prestoTest/testCreateTableLike.java | 27 - .../gsqlparser/prestoTest/testExplain.java | 34 - .../gsqlparser/prestoTest/testPrepare.java | 37 - .../gsqlparser/prestoTest/testUnnest.java | 46 - .../redshiftTest/TestCreateFunction.java | 94 - .../redshiftTest/TestCreateProcedure.java | 130 -- .../redshiftTest/testAlterDatabase.java | 31 - .../redshiftTest/testAlterGroup.java | 34 - .../redshiftTest/testAlterSchema.java | 33 - .../redshiftTest/testAlterTable.java | 96 - .../redshiftTest/testAlterUser.java | 18 - .../gsqlparser/redshiftTest/testAnalyze.java | 39 - .../redshiftTest/testAnalyzeCompression.java | 32 - .../gsqlparser/redshiftTest/testCancel.java | 30 - .../gsqlparser/redshiftTest/testClose.java | 18 - .../gsqlparser/redshiftTest/testComment.java | 34 - .../gsqlparser/redshiftTest/testCopy.java | 30 - .../redshiftTest/testCreateDatabase.java | 22 - .../redshiftTest/testCreateGroup.java | 21 - .../redshiftTest/testCreateSchema.java | 32 - .../redshiftTest/testCreateTable.java | 113 -- .../redshiftTest/testCreateUser.java | 20 - .../redshiftTest/testCreateView.java | 25 - .../redshiftTest/testDeallocate.java | 20 - .../gsqlparser/redshiftTest/testDeclare.java | 33 - .../gsqlparser/redshiftTest/testDelete.java | 24 - .../redshiftTest/testDropDatabase.java | 23 - .../redshiftTest/testDropGroup.java | 24 - .../redshiftTest/testDropSchema.java | 23 - .../redshiftTest/testDropTable.java | 23 - .../gsqlparser/redshiftTest/testDropUser.java | 22 - .../gsqlparser/redshiftTest/testDropView.java | 22 - .../gsqlparser/redshiftTest/testExecute.java | 23 - .../gsqlparser/redshiftTest/testExplain.java | 46 - .../redshiftTest/testExpression.java | 175 -- .../redshiftTest/testFetchFrom.java | 21 - .../gsqlparser/redshiftTest/testLock.java | 24 - .../gsqlparser/redshiftTest/testPrepare.java | 30 - .../gsqlparser/redshiftTest/testUnload.java | 29 - .../gsqlparser/redshiftTest/testVaccum.java | 22 - .../scriptWriterTest/testColumnAlias.java | 33 - .../scriptWriterTest/testCreateNode.java | 1791 ----------------- .../scriptWriterTest/testDatabricks.java | 299 --- .../scriptWriterTest/testGenerator.java | 97 - .../scriptWriterTest/testModifyExpr.java | 292 --- .../scriptWriterTest/testModifyPGSP.java | 58 - .../scriptWriterTest/testModifySql.java | 1119 ---------- .../scriptWriterTest/testMySQL.java | 126 -- .../scriptWriterTest/testOracle.java | 20 - .../scriptWriterTest/testOracleDataType.java | 123 -- .../scriptWriterTest/testSQLServer.java | 19 - .../testSQLServerDataType.java | 181 -- .../scriptWriterTest/testScriptGenerator.java | 1360 ------------- .../scriptWriterTest/testSnowflake.java | 21 - .../scriptWriterTest/testTimeStampExpr.java | 77 - .../testSingletonThread.java | 87 - .../snowflakeTest/TestAlterTable.java | 49 - .../snowflakeTest/TestCreateProcedure.java | 183 -- .../snowflakeTest/testAlterSchema.java | 20 - .../snowflakeTest/testAlterTask.java | 18 - .../gsqlparser/snowflakeTest/testCall.java | 21 - .../snowflakeTest/testClusterBy.java | 40 - .../snowflakeTest/testCopyInto.java | 148 -- .../testCreateExternalTable.java | 128 -- .../snowflakeTest/testCreateFileFormat.java | 37 - .../snowflakeTest/testCreateFunction.java | 154 -- .../testCreateMaterializeView.java | 22 - .../snowflakeTest/testCreateStage.java | 100 - .../snowflakeTest/testCreateStream.java | 30 - .../snowflakeTest/testCreateTask.java | 105 - .../snowflakeTest/testCreateView.java | 229 --- .../snowflakeTest/testCreateWarehouse.java | 22 - .../gsqlparser/snowflakeTest/testDesc.java | 20 - .../gsqlparser/snowflakeTest/testInsert.java | 262 --- .../snowflakeTest/testLateralColumn.java | 18 - .../gsqlparser/snowflakeTest/testPut.java | 21 - ...testQueryWithoutIntermediateRecordSet.java | 20 - .../gsqlparser/snowflakeTest/testSetStmt.java | 21 - .../gsqlparser/snowflakeTest/testStage.java | 50 - .../snowflakeTest/testSubqueryFunction.java | 48 - .../snowflakeTest/testUseWarehouse.java | 18 - .../snowflakeTest/testVaraible.java | 37 - .../sparksqlTest/testInsertOverwrite.java | 28 - .../sparksqlTest/testLateralView.java | 77 - .../gsqlparser/sqlenvTest/TJSONSQLEnv.java | 297 --- .../sqlenvTest/testHelpFunctions.java | 32 - .../gsqlparser/sqlenvTest/testHiveSQLEnv.java | 43 - .../gsqlparser/sqlenvTest/testJSONEnv.java | 107 - .../gsqlparser/sybaseTest/testColumnName.java | 26 - .../sybaseTest/testCreateProcedure.java | 46 - .../sybaseTest/testCreateTable.java | 32 - .../sybaseTest/testDeleteStatistics.java | 24 - .../gsqlparser/sybaseTest/testDumpTran.java | 38 - .../sybaseTest/testExecWithNoKeyword.java | 23 - .../sybaseTest/testFunctionTable.java | 41 - .../gsqlparser/sybaseTest/testHint.java | 47 - .../gsqlparser/sybaseTest/testInsertBulk.java | 20 - .../gsqlparser/sybaseTest/testIsolation.java | 24 - .../sybaseTest/testPartialParsing.java | 46 - .../gsqlparser/sybaseTest/testWritetext.java | 24 - .../teradataTest/testAlterConstraint.java | 20 - .../teradataTest/testAlterProcedure.java | 21 - .../testAlterTableAddColumns.java | 28 - .../teradataTest/testAlterZone.java | 31 - .../teradataTest/testAnalyticFunction.java | 32 - .../gsqlparser/teradataTest/testBTEQ.java | 91 - .../teradataTest/testBeginTrans.java | 18 - .../gsqlparser/teradataTest/testCastDate.java | 94 - .../teradataTest/testCheckSourceColumn.java | 49 - .../teradataTest/testCollectStatistics.java | 59 - .../teradataTest/testCreateProcedure.java | 465 ----- .../teradataTest/testCreateTable.java | 170 -- .../testCreateTableWithDataIndex.java | 74 - .../teradataTest/testCreateTrigger.java | 175 -- .../teradataTest/testDataConversion.java | 207 -- .../teradataTest/testDateFunction.java | 33 - .../teradataTest/testDropConstraint.java | 20 - .../teradataTest/testExecuteMacro.java | 44 - .../gsqlparser/teradataTest/testExpandOn.java | 26 - .../gsqlparser/teradataTest/testExprType.java | 53 - .../teradataTest/testExprWithAlias.java | 56 - .../teradataTest/testFastExportCmd.java | 19 - .../testFunctionINResultColumn.java | 57 - .../teradataTest/testGetDiagnostics.java | 40 - .../teradataTest/testGetRawStatement.java | 31 - .../teradataTest/testGetTableName.java | 24 - .../gsqlparser/teradataTest/testGive.java | 22 - .../gsqlparser/teradataTest/testGroupBy.java | 90 - .../testIntervalPeriodFunction.java | 34 - .../gsqlparser/teradataTest/testJoins.java | 64 - .../gsqlparser/teradataTest/testLiteral.java | 19 - .../gsqlparser/teradataTest/testLock.java | 80 - .../gsqlparser/teradataTest/testMacro.java | 39 - .../gsqlparser/teradataTest/testMerge.java | 38 - .../teradataTest/testNamedColumn.java | 138 -- .../teradataTest/testNormalize.java | 20 - .../teradataTest/testQualifyClause.java | 37 - .../teradataTest/testRenameTable.java | 24 - .../teradataTest/testResultColumn.java | 61 - .../teradataTest/testSelectConsume.java | 18 - .../teradataTest/testSetSession.java | 46 - .../testSubqueryInOnCondition.java | 100 - .../testTableAliasOfSubquery.java | 26 - .../testTeradataCaseExpression.java | 20 - .../testTeradataGetRawStatements.java | 324 --- .../teradataTest/testTeradataLiteral.java | 117 -- .../testTeradataOutputFormatPhrase.java | 119 -- .../teradataTest/testTeradataTokenize.java | 56 - .../teradataTest/testTeradataWithClause.java | 37 - .../gsqlparser/teradataTest/testTitle.java | 30 - .../teradataTest/testUntilChanged.java | 31 - .../gsqlparser/teradataTest/testUpsert.java | 24 - .../gsqlparser/teradataTest/testUsing.java | 59 - .../teradataTest/testWithCheckOption.java | 34 - .../gsqlparser/usersTest/testBuindQuery.java | 70 - .../gsqlparser/verticaTest/testProfile.java | 25 - 492 files changed, 6 insertions(+), 37744 deletions(-) delete mode 100644 src/test/java/gudusoft/gsqlparser/acceptChildrenTest/TestAcceptChildren.java delete mode 100644 src/test/java/gudusoft/gsqlparser/acceptChildrenTest/readme.md delete mode 100644 src/test/java/gudusoft/gsqlparser/athenaTest/testCreateExternal.java delete mode 100644 src/test/java/gudusoft/gsqlparser/athenaTest/testExplain.java delete mode 100644 src/test/java/gudusoft/gsqlparser/athenaTest/testUnloadStmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/bigqueryTest/testBacktick.java delete mode 100644 src/test/java/gudusoft/gsqlparser/bigqueryTest/testCheckSourceColumn.java delete mode 100644 src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateExternalTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTableFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/bigqueryTest/testDeclare.java delete mode 100644 src/test/java/gudusoft/gsqlparser/bigqueryTest/testIdentifier.java delete mode 100644 src/test/java/gudusoft/gsqlparser/bigqueryTest/testLegacySQL.java delete mode 100644 src/test/java/gudusoft/gsqlparser/couchbaseTest/testCreateIndex.java delete mode 100644 src/test/java/gudusoft/gsqlparser/couchbaseTest/testExplain.java delete mode 100644 src/test/java/gudusoft/gsqlparser/couchbaseTest/testInfer.java delete mode 100644 src/test/java/gudusoft/gsqlparser/couchbaseTest/testInsert.java delete mode 100644 src/test/java/gudusoft/gsqlparser/couchbaseTest/testUpsert.java delete mode 100644 src/test/java/gudusoft/gsqlparser/customerTest/dag/testBuiltInFucntion.java delete mode 100644 src/test/java/gudusoft/gsqlparser/customerTest/dag/testKeepKeyword.java delete mode 100644 src/test/java/gudusoft/gsqlparser/customerTest/dag/testMultiSetOperator.java delete mode 100644 src/test/java/gudusoft/gsqlparser/customerTest/noetix/testViewAlias.java delete mode 100644 src/test/java/gudusoft/gsqlparser/customerTest/panayainc/testGroupByItemWithParenthesis.java delete mode 100644 src/test/java/gudusoft/gsqlparser/customerTest/panayainc/testLabelName.java delete mode 100644 src/test/java/gudusoft/gsqlparser/customerTest/panayainc/testOracleCustomPackage.java delete mode 100644 src/test/java/gudusoft/gsqlparser/customerTest/panayainc/testProcedureInnerStmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/customerTest/panayainc/testUnionWithParenthesis.java delete mode 100644 src/test/java/gudusoft/gsqlparser/cversionTest/testFileNumbers.java delete mode 100644 src/test/java/gudusoft/gsqlparser/databricksTest/testDatatypeCast.java delete mode 100644 src/test/java/gudusoft/gsqlparser/databricksTest/testJsonPathExpression.java delete mode 100644 src/test/java/gudusoft/gsqlparser/databricksTest/testStruct.java delete mode 100644 src/test/java/gudusoft/gsqlparser/databricksTest/testUse.java delete mode 100644 src/test/java/gudusoft/gsqlparser/dataflowTest/test3360.java delete mode 100644 src/test/java/gudusoft/gsqlparser/dataflowTest/testDataflow.java delete mode 100644 src/test/java/gudusoft/gsqlparser/dataflowTest/testIAOX42.java delete mode 100644 src/test/java/gudusoft/gsqlparser/dataflowTest/testIAQE4Y.java delete mode 100644 src/test/java/gudusoft/gsqlparser/dataflowTest/testRelationProcess.java delete mode 100644 src/test/java/gudusoft/gsqlparser/daxTest/testEvaluate.java delete mode 100644 src/test/java/gudusoft/gsqlparser/db2Tesst/testBlock.java delete mode 100644 src/test/java/gudusoft/gsqlparser/db2Tesst/testCall.java delete mode 100644 src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateDatabase.java delete mode 100644 src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateTablespace.java delete mode 100644 src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateVariable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/db2Tesst/testIdentifier.java delete mode 100644 src/test/java/gudusoft/gsqlparser/db2Tesst/testLabeledDuration.java delete mode 100644 src/test/java/gudusoft/gsqlparser/db2Tesst/testParameter.java delete mode 100644 src/test/java/gudusoft/gsqlparser/db2Tesst/testWithCheckOption.java delete mode 100644 src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testPLSQLExecImmediateByVisitor.java delete mode 100644 src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerCreateProcedureExec.java delete mode 100644 src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerExec.java delete mode 100644 src/test/java/gudusoft/gsqlparser/errorsqlTest/testCreateIndex.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlTest.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlVerifyTest.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignAliasInSelectList.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignment.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testBlankLines.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testCTE.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testCapitalisation.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testCaseExpression.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testComment.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testCompactMode.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateFunctionProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testDeclare.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testExecute.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testFromClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testFunctionCall.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testGroupByClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testIndentation.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testInsertList.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testIntoClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testIssues.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testLineNumber.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testOracleCreateView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testOrderByClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testPlsql1.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testSelectList.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhereClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhitespace.java delete mode 100644 src/test/java/gudusoft/gsqlparser/gaussdbTest/testDeclareCursorSingleStmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/gaussdbTest/testGetStmts.java delete mode 100644 src/test/java/gudusoft/gsqlparser/greenplumTest/testAlterTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateExternalTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/greenplumTest/testDeclareBlock.java delete mode 100644 src/test/java/gudusoft/gsqlparser/greenplumTest/testSetVariable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/greenplumTest/testValues.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hanaTest/testAlterProcedureAndFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hanaTest/testCreateProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hanaTest/testLateral.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hanaTest/testUpsert.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testAlias.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testAlterTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testAnalyze.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testCTE.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testCastFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testCreateFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testCreateIndex.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testCreateTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testCreateView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testDescribe.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testDropIndex.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testExplain.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testExportTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testFieldExpression.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testFromSelect.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testGetFullTableName.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testHint.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testIdentifierBacktick.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testImportTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testInsert.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testJoin.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testLateralView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testLoad.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testParse.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testSampleClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testSelect.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testSet.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testShow.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testTimestamp.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testToString.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testUnion.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testWindowClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/hiveTest/testlexer.java delete mode 100644 src/test/java/gudusoft/gsqlparser/impalaTest/testSubquery.java delete mode 100644 src/test/java/gudusoft/gsqlparser/informixTest/testAlterObject.java delete mode 100644 src/test/java/gudusoft/gsqlparser/informixTest/testCreateProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/informixTest/testDropObject.java delete mode 100644 src/test/java/gudusoft/gsqlparser/informixTest/testOuterJoin.java delete mode 100644 src/test/java/gudusoft/gsqlparser/informixTest/testRenameObject.java delete mode 100644 src/test/java/gudusoft/gsqlparser/informixTest/testSkip.java delete mode 100644 src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testITokenHandle.java delete mode 100644 src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testIgnorePrompt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mdxTest/testAlterCube.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMeasure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMember.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mdxTest/testIIF.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mdxTest/testMembers.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mdxTest/testRawStatements.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mdxTest/testTokenlizer.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mdxTest/testWithMeasureInSelect.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testAlterDatabase.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testAlterTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testAssignment.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testCallTarget.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testContainsFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testCopyIntoStmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateCredential.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateDatabase.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateEventSession.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateExternalDataSource.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateExternalLanguage.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateIndex.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateMasterKey.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateProcedureOption.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testCreateTrigger.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testDatatype.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testDeclareBlock.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testDeclareCursor.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testDistinct.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testDropDBObject.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testExecuteOption.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testExternalTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testFileFormat.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testOpenjson.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testOutputClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testPivot.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testQualifiedName.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testSyntaxHint.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testTableHint.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testThrow.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testUse.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mssqlTest/testXMLfunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testCall.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testComment.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testCreateFucntion.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testCreateTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testDatatype.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testDate.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testDecimalDot.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testDelete.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testDescribe.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testDropTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testExecute.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testFromTableList.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testGetTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testIdentifier.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testIndexStorageType.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testIndexType.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testInsertIgnore.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testIntDisplayLength.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testLeftRightShift.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testLimitClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testNullEncoded.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testOnDuplicateUpdate.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testPrepareStmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testQuoteInLiteral.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testRollupModifier.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testSPParameter.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testSelectModifier.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testSet.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testShowIndex.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testTimestampOnUpdate.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testTruncateTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testUpdateTargetTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/mysqlTest/testUseDatabase.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testAlterTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInCreateView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInInsert.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateExternalTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testDropSchema.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testExternalTableOption.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testGenerateStatistics.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testGroomTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testMinusSetToString.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testSelectFromExternalTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testSetCatalogStmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/netezzaTest/testSetSchemaStmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testAlterMaterializedView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTrigger.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testCall.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testCallSpec.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testCommentOn.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testCompoundTrigger.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testCreateFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testCreateLibrary.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testCreateMaterializedView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testCreatePackage.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testCreateTableResultCache.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testCreateView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testDatabaseLink.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testDatatype.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testErrorLoggingClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testExecImmediate.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testExecuteProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testExplainPlan.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testGetRawstatements.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testInExpr.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testInsertMultiTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testInvokerRights.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testListAggOverflow.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testMaterializedView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testMergeInPlsql.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testMethodCall.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testNamedParameter.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testNaturalJoin.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testNewConstructor.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testObjectAccess.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testOffsetClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testPivot.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testRDBMSPackageCall.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testRestrictionClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testSequence.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testSynonym.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testVariableInProc.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testXMLFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testXMLTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/oracleTest/testplsqldatatype.java delete mode 100644 src/test/java/gudusoft/gsqlparser/partialParseTest/testPartialParseCreateTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testBuiltinFunctions.java delete mode 100644 src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testInterpreterBase.java delete mode 100644 src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testPostgres.java delete mode 100644 src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testRedshift.java delete mode 100644 src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testTestPutline.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testAggregateExpressions.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testAlterFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testAlterTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testArrayConstructor.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testCTE.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testCollationExpression.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testConstant.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateExtension.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateFunction2.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateIndex.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateTrigger.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testDatatype.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testDeleteStmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testDrop.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testDropTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testFieldSelection.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testFunctionCall.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testJSON.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testLimitOffset.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testLockingClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testMathematicalOperator.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_assign.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_block.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_case.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_close.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_declarestmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_delete.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exception.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_execute.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exit.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_fetch.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_forLoop.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_foreach.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_getdiag.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_if.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_insert.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_label.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_loop.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_move.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_null.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_open.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_openfor.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_raise.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_return.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_update.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_while.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testReindex.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testRowConstructor.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testSYMMETRIC.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testSchema.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetSearchPath.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetVariable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testStringConcate.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testSubscript.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testTableStmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testTruncate.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testUpdateStmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testVacuum.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testValueListInFromClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowFunctions.java delete mode 100644 src/test/java/gudusoft/gsqlparser/prestoTest/testCreateTableLike.java delete mode 100644 src/test/java/gudusoft/gsqlparser/prestoTest/testExplain.java delete mode 100644 src/test/java/gudusoft/gsqlparser/prestoTest/testPrepare.java delete mode 100644 src/test/java/gudusoft/gsqlparser/prestoTest/testUnnest.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterDatabase.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterGroup.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterSchema.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterUser.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyze.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyzeCompression.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testCancel.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testClose.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testComment.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testCopy.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateDatabase.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateGroup.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateSchema.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateUser.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testDeallocate.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testDeclare.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testDelete.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testDropDatabase.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testDropGroup.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testDropSchema.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testDropTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testDropUser.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testDropView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testExecute.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testExplain.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testExpression.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testFetchFrom.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testLock.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testPrepare.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testUnload.java delete mode 100644 src/test/java/gudusoft/gsqlparser/redshiftTest/testVaccum.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testColumnAlias.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testCreateNode.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testDatabricks.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testGenerator.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifyExpr.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifyPGSP.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifySql.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testMySQL.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracle.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracleDataType.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServer.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServerDataType.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testScriptGenerator.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSnowflake.java delete mode 100644 src/test/java/gudusoft/gsqlparser/scriptWriterTest/testTimeStampExpr.java delete mode 100644 src/test/java/gudusoft/gsqlparser/singletonThreadTest/testSingletonThread.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/TestAlterTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/TestCreateProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterSchema.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterTask.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testCall.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testClusterBy.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testCopyInto.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateExternalTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFileFormat.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateMaterializeView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStage.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStream.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateTask.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateWarehouse.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testDesc.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testInsert.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testLateralColumn.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testPut.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testQueryWithoutIntermediateRecordSet.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testSetStmt.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testStage.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testSubqueryFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testUseWarehouse.java delete mode 100644 src/test/java/gudusoft/gsqlparser/snowflakeTest/testVaraible.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sparksqlTest/testInsertOverwrite.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sparksqlTest/testLateralView.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sqlenvTest/TJSONSQLEnv.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sqlenvTest/testHelpFunctions.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sqlenvTest/testHiveSQLEnv.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sqlenvTest/testJSONEnv.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testColumnName.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testDeleteStatistics.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testDumpTran.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testExecWithNoKeyword.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testFunctionTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testHint.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testInsertBulk.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testIsolation.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testPartialParsing.java delete mode 100644 src/test/java/gudusoft/gsqlparser/sybaseTest/testWritetext.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testAlterConstraint.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testAlterProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testAlterTableAddColumns.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testAlterZone.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testAnalyticFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testBTEQ.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testBeginTrans.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testCastDate.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testCheckSourceColumn.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testCollectStatistics.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testCreateProcedure.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTableWithDataIndex.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTrigger.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testDataConversion.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testDateFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testDropConstraint.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testExecuteMacro.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testExpandOn.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testExprType.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testExprWithAlias.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testFastExportCmd.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testFunctionINResultColumn.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testGetDiagnostics.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testGetRawStatement.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testGetTableName.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testGive.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testGroupBy.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testIntervalPeriodFunction.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testJoins.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testLiteral.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testLock.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testMacro.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testMerge.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testNamedColumn.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testNormalize.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testQualifyClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testRenameTable.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testResultColumn.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testSelectConsume.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testSetSession.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testSubqueryInOnCondition.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testTableAliasOfSubquery.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataCaseExpression.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataGetRawStatements.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataLiteral.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataOutputFormatPhrase.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataTokenize.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataWithClause.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testTitle.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testUntilChanged.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testUpsert.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testUsing.java delete mode 100644 src/test/java/gudusoft/gsqlparser/teradataTest/testWithCheckOption.java delete mode 100644 src/test/java/gudusoft/gsqlparser/usersTest/testBuindQuery.java delete mode 100644 src/test/java/gudusoft/gsqlparser/verticaTest/testProfile.java diff --git a/src/test/java/gudusoft/gsqlparser/acceptChildrenTest/TestAcceptChildren.java b/src/test/java/gudusoft/gsqlparser/acceptChildrenTest/TestAcceptChildren.java deleted file mode 100644 index 5a9f0a4c..00000000 --- a/src/test/java/gudusoft/gsqlparser/acceptChildrenTest/TestAcceptChildren.java +++ /dev/null @@ -1,360 +0,0 @@ -package gudusoft.gsqlparser.acceptChildrenTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.hive.THiveHintClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; -import org.junit.Assert; - -public class TestAcceptChildren extends TestCase { - - public void testHiveHintClause() { - EDbVendor dbVendor = EDbVendor.dbvhive; - TGSqlParser sqlparser = new TGSqlParser(dbVendor); - - sqlparser.sqltext = "select /*+ MAPJOIN(time_dim) */ count(*) from\n" + - "store_sales join time_dim on (ss_sold_time_sk = t_time_sk);"; - int ret = sqlparser.parse(); - Assert.assertEquals(0, ret); - - TSelectSqlStatement sqlStatement; - for (int i = 0; i < sqlparser.sqlstatements.size(); i++) { - sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(i); - sqlStatement.acceptChildren(new TParseTreeVisitor() { - public void preVisit(THiveHintClause clause) { - Assert.assertEquals(clause.toString(), "/*+ MAPJOIN(time_dim) */"); - } - }); - } - } -// -// public void testTransformClause() { -// EDbVendor dbVendor = EDbVendor.dbvhive; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "SELECT \n" + -// " TRANSFORM (foo, bar) \n" + -// " USING 'python add_mapper.py' \n" + -// " AS (foo string, bar map) \n" + -// "FROM t3; \n"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(THiveTransformClause clause) { -// Assert.assertEquals(clause.toString(), "(foo, bar) \n" + -// " USING 'python add_mapper.py' \n" + -// " AS (foo string, bar map)"); -// } -// }); -// } -// -// public void testIntoClause() { -// EDbVendor dbVendor = EDbVendor.dbvmssql; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "Select * Into new_table_name from old_table_name;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TIntoClause clause) { -// Assert.assertEquals(clause.toString(), "Into new_table_name"); -// } -// }); -// } -// -// // TODO 需改进 -// public void testSelectDistinctClause() { -// EDbVendor dbVendor = EDbVendor.dbvmysql; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "select DISTINCT(c) from t;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TSelectDistinct clause) { -// Assert.assertEquals(clause.toString(), "DISTINCT(c)"); -// } -// }); -// } -// -// public void testJoinsClause() { -// EDbVendor dbVendor = EDbVendor.dbvmysql; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "select a.* from t1 as a inner join t2 as b on a.id = b.id;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TJoin clause) { -// Assert.assertEquals(clause.toString(), "t1 as a inner join t2 as b on a.id = b.id"); -// } -// }); -// } -// -// // TODO 需改进 -// public void testSampleClause() { -// EDbVendor dbVendor = EDbVendor.dbvoracle; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "select count(*) from t1 sample (10);"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// -// Assert.assertNotNull(sqlStatement.getSampleClause()); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TSampleClause clause) { -// Assert.assertEquals(clause.toString(), "sample (10)"); -// } -// }); -// } -// -// // TODO 需改进 -// public void testTeradataWithClause() { -// EDbVendor dbVendor = EDbVendor.dbvteradata; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "with RECURSIVE c(n) as (select 1 union all select n + 1 from c where n < 10) select n from c;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// Assert.assertNotNull(sqlStatement.getTeradataWithClause()); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TTeradataWithClause clause) { -// Assert.assertEquals(clause.toString(), "c(n) as (select 1 union all select n + 1 from c where n < 10)"); -// } -// }); -// } -// -// -// public void testLockingClauses() { -// EDbVendor dbVendor = EDbVendor.dbvpostgresql; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "select empno,ename,job,mgr,sal from emp,dept where emp.deptno=dept.deptno and empno=7369 for update of emp.empno;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TLockingClause clause) { -// Assert.assertEquals(clause.toString(), "for update of emp.empno"); -// } -// }); -// } -// -// public void testSortBy() { -// EDbVendor dbVendor = EDbVendor.dbvhive; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "select * from stu sort by gradedesc;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TSortBy clause) { -// Assert.assertEquals(clause.toString(), "sort by gradedesc"); -// } -// }); -// } -// -// public void testClusterBy() { -// EDbVendor dbVendor = EDbVendor.dbvhive; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "select * from stu cluster by class;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TClusterBy clause) { -// Assert.assertEquals(clause.toString(), "cluster by class"); -// } -// }); -// } -// -// // TODO 需改进 -// public void testWindowClause() { -// EDbVendor dbVendor = EDbVendor.dbvmysql; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "SELECT\n" + -// " DISTINCT year, country,\n" + -// " FIRST_VALUE(year) OVER (w ORDER BY year ASC) AS first,\n" + -// " FIRST_VALUE(year) OVER (w ORDER BY year DESC) AS last\n" + -// "FROM sales\n" + -// "WINDOW w AS (PARTITION BY country);\n"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TWindowClause clause) { -// Assert.assertEquals(clause.toString(), "WINDOW w AS (PARTITION BY country)"); -// } -// }); -// } -// -// // TODO 需改进 -// public void testIntoTableClause() { -// EDbVendor dbVendor = EDbVendor.dbvmssql; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "select * Into new_table_name from old_table_name ;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// Assert.assertNotNull(sqlStatement.getIntoTableClause()); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TIntoTableClause clause) { -// Assert.assertEquals(clause.toString(), "cluster by class"); -// } -// }); -// } -// -// -// public void testDistributeBy() { -// EDbVendor dbVendor = EDbVendor.dbvhive; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "select * from stu distribute by class sort by grade ;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TDistributeBy clause) { -// Assert.assertEquals(clause.toString(), "distribute by class"); -// } -// }); -// } -// -// // TODO 需改进 -// public void testIsolationClause() { -// EDbVendor dbVendor = EDbVendor.dbvmysql; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "select @@global.tx_isolation;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// Assert.assertNotNull(sqlStatement.getIsolationClause()); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TIsolationClause clause) { -// Assert.assertEquals(clause.toString(), "@@global"); -// } -// }); -// } -// -// public void testOptionClause() { -// EDbVendor dbVendor = EDbVendor.dbvmssql; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "SELECT a.keyId,a.info, SUM(a.qty) AS qtyAll \n" + -// "FROM [maomao365.com_A] a \n" + -// "WHERE qty >1 \n" + -// "GROUP BY a.keyId,a.info \n" + -// "ORDER BY a.keyId,a.info\n" + -// "OPTION (HASH GROUP,FAST 10);"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TOptionClause clause) { -// Assert.assertEquals(clause.toString(), "OPTION (HASH GROUP,FAST 10)"); -// } -// }); -// } -// -// // TODO 需改进 -// public void testOffsetClause() { -// EDbVendor dbVendor = EDbVendor.dbvmysql; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "SELECT * from t limit 0 offset 1"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// Assert.assertNotNull(sqlStatement.getOffsetClause()); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TOffsetClause clause) { -// Assert.assertEquals(clause.toString(), "offset 1"); -// } -// }); -// } -// -// // TODO 需改进 -// public void testFetchFirstClause() { -// EDbVendor dbVendor = EDbVendor.dbvpostgresql; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "SELECT *\n" + -// "FROM t\n" + -// "ORDER BY score DESC\n" + -// "FETCH FIRST 2 ROWS ONLY;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// Assert.assertNotNull(sqlStatement.getFetchFirstClause()); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TFetchFirstClause clause) { -// Assert.assertEquals(clause.toString(), "FETCH FIRST 2"); -// } -// }); -// } -// -// // TODO 需改进 -// public void testTimeTravel() { -// EDbVendor dbVendor = EDbVendor.dbvmysql; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "select count(1) from BK_KHXX where DateDiff(dd,CreateTime,getdate())=0"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// Assert.assertNotNull(sqlStatement.getTimeTravel()); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(TTimeTravel clause) { -// Assert.assertEquals(clause.toString(), "DateDiff(dd,CreateTime,getdate())"); -// } -// }); -// } -// -// // TODO 需改进 -// public void testHintClause() { -// EDbVendor dbVendor = EDbVendor.dbvoracle; -// TGSqlParser sqlparser = new TGSqlParser(dbVendor); -// -// sqlparser.sqltext = "SELECT /*+ INDEX_DESC(e emp_name_ix) */ * FROM employees e;"; -// int ret = sqlparser.parse(); -// Assert.assertEquals(0, ret); -// -// TSelectSqlStatement sqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); -// Assert.assertNotNull(sqlStatement.getHintClause()); -// sqlStatement.acceptChildren(new TParseTreeVisitor() { -// public void preVisit(THintClause clause) { -// Assert.assertEquals(clause.toString(), "/*+ INDEX_DESC(e emp_name_ix) */"); -// } -// }); -// } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/acceptChildrenTest/readme.md b/src/test/java/gudusoft/gsqlparser/acceptChildrenTest/readme.md deleted file mode 100644 index 40a3c5ba..00000000 --- a/src/test/java/gudusoft/gsqlparser/acceptChildrenTest/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -Testcases for acceptChildren. - -One unit for each SQL statement, such as testSelectSqlStatement \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/athenaTest/testCreateExternal.java b/src/test/java/gudusoft/gsqlparser/athenaTest/testCreateExternal.java deleted file mode 100644 index 1a3ca8ad..00000000 --- a/src/test/java/gudusoft/gsqlparser/athenaTest/testCreateExternal.java +++ /dev/null @@ -1,83 +0,0 @@ -package gudusoft.gsqlparser.athenaTest; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateExternal extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvathena); - sqlparser.sqltext = "CREATE EXTERNAL TABLE cloudtrail_logs (\n" + - "eventversion STRING,\n" + - "userIdentity STRUCT<\n" + - " type:STRING,\n" + - " principalid:STRING,\n" + - " arn:STRING,\n" + - " accountid:STRING,\n" + - " invokedby:STRING,\n" + - " accesskeyid:STRING,\n" + - " userName:STRING,\n" + - "sessioncontext:STRUCT<\n" + - "attributes:STRUCT<\n" + - " mfaauthenticated:STRING,\n" + - " creationdate:STRING>,\n" + - "sessionIssuer:STRUCT< \n" + - " type:STRING,\n" + - " principalId:STRING,\n" + - " arn:STRING, \n" + - " accountId:STRING,\n" + - " userName:STRING>>>,\n" + - "eventTime STRING,\n" + - "eventSource STRING,\n" + - "eventName STRING,\n" + - "awsRegion STRING,\n" + - "sourceIpAddress STRING,\n" + - "userAgent STRING,\n" + - "errorCode STRING,\n" + - "errorMessage STRING,\n" + - "requestParameters STRING,\n" + - "responseElements STRING,\n" + - "additionalEventData STRING,\n" + - "requestId STRING,\n" + - "eventId STRING,\n" + - "resources ARRAY>,\n" + - "eventType STRING,\n" + - "apiVersion STRING,\n" + - "readOnly STRING,\n" + - "recipientAccountId STRING,\n" + - "serviceEventDetails STRING,\n" + - "sharedEventID STRING,\n" + - "vpcEndpointId STRING\n" + - ")\n" + - "ROW FORMAT SERDE 'com.amazon.emr.hive.serde.CloudTrailSerde'\n" + - "STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'\n" + - "OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'\n" + - "LOCATION 's3://cloudtrail_bucket_name/AWSLogs/Account_ID/';\n"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createtable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createtable.getColumnList().size() == 23); - TColumnDefinition c0 = createtable.getColumnList().getColumn(0); - assertTrue(c0.getColumnName().toString().equalsIgnoreCase("eventversion")); - assertTrue(c0.getDatatype().getDataType() == EDataType.string_t); - - TColumnDefinition c1 = createtable.getColumnList().getColumn(1); - assertTrue(c1.getColumnName().toString().equalsIgnoreCase("userIdentity")); - assertTrue(c1.getDatatype().getDataType() == EDataType.struct_t); - assertTrue(c1.getDatatype().getColumnDefList().size() == 8); - TColumnDefinition c10 = c1.getDatatype().getColumnDefList().getColumn(0); - assertTrue(c10.getColumnName().toString().equalsIgnoreCase("type")); - assertTrue(c10.getDatatype().getDataType() == EDataType.string_t); - TColumnDefinition c17 = c1.getDatatype().getColumnDefList().getColumn(7); - assertTrue(c17.getColumnName().toString().equalsIgnoreCase("sessioncontext")); - assertTrue(c17.getDatatype().getDataType() == EDataType.struct_t); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/athenaTest/testExplain.java b/src/test/java/gudusoft/gsqlparser/athenaTest/testExplain.java deleted file mode 100644 index c86d010a..00000000 --- a/src/test/java/gudusoft/gsqlparser/athenaTest/testExplain.java +++ /dev/null @@ -1,30 +0,0 @@ -package gudusoft.gsqlparser.athenaTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TExplainPlan; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testExplain extends TestCase { - - public void testSelect() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvathena); - sqlparser.sqltext = "EXPLAIN (FORMAT GRAPHVIZ)\n" + - "SELECT \n" + - " c.c_custkey,\n" + - " o.o_orderkey,\n" + - " o.o_orderstatus\n" + - " FROM tpch100.customer c \n" + - " JOIN tpch100.orders o \n" + - " ON c.c_custkey = o.o_custkey \n" + - " WHERE c.c_custkey = 5566684;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstExplain); - TExplainPlan explainPlan = (TExplainPlan) sqlparser.sqlstatements.get(0); - assertTrue(explainPlan.getStatement().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement) explainPlan.getStatement(); - assertTrue(selectSqlStatement.getTables().getTable(0).getTableName().toString().equalsIgnoreCase("tpch100.customer")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/athenaTest/testUnloadStmt.java b/src/test/java/gudusoft/gsqlparser/athenaTest/testUnloadStmt.java deleted file mode 100644 index eb00694f..00000000 --- a/src/test/java/gudusoft/gsqlparser/athenaTest/testUnloadStmt.java +++ /dev/null @@ -1,26 +0,0 @@ -package gudusoft.gsqlparser.athenaTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TUnloadStmt; -import junit.framework.TestCase; - -public class testUnloadStmt extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvathena); - - sqlparser.sqltext = "UNLOAD (SELECT * FROM old_table) \n" + - "TO 's3://DOC-EXAMPLE-BUCKET/unload_test_1/' \n" + - "WITH (format = 'JSON');"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstunload); - TUnloadStmt unloadStmt = (TUnloadStmt)sqlparser.sqlstatements.get(0); - assertTrue(unloadStmt.getSelectSqlStatement().getTables().getTable(0).getTableName().toString().equalsIgnoreCase("old_table")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testBacktick.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testBacktick.java deleted file mode 100644 index 9be4539b..00000000 --- a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testBacktick.java +++ /dev/null @@ -1,128 +0,0 @@ -package gudusoft.gsqlparser.bigqueryTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.TStatementList; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.nodes.TTableList; -import junit.framework.Assert; -import junit.framework.TestCase; - - -public class testBacktick extends TestCase { - - - public void test2600_1() { - String query = "select col1,co2 from `database.schema`.table_name where col>0;"; - - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvbigquery); - sqlParser.setSqlCharset("UTF-8"); - sqlParser.sqltext = query; - int iRet = sqlParser.parse(); - - if (iRet == 0) { - TStatementList statements = sqlParser.sqlstatements; - TTableList tables = statements.get(0).getTables(); - TTable table = tables.getTable(0); - - // table name - Assert.assertEquals("table_name", table.getTableName().getObjectToken().toString()); - // db name - Assert.assertEquals("`database`", table.getTableName().getDatabaseToken().toString()); - // schema name - Assert.assertEquals("`schema`", table.getTableName().getSchemaToken().toString()); - } - } - - public void test2600_2() { - String query = "select col1,co2 from database.`schema.table_name` where col>0;"; - - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvbigquery); - sqlParser.setSqlCharset("UTF-8"); - sqlParser.sqltext = query; - int iRet = sqlParser.parse(); - - if (iRet == 0) { - TStatementList statements = sqlParser.sqlstatements; - TTableList tables = statements.get(0).getTables(); - TTable table = tables.getTable(0); - - // table name - Assert.assertEquals("`table_name`", table.getTableName().getObjectToken().toString()); - // db name - Assert.assertEquals("database", table.getTableName().getDatabaseToken().toString()); - // schema name - Assert.assertEquals("`schema`", table.getTableName().getSchemaToken().toString()); - } - } - - - public void test1() { - String query = "SELECT `table1`.`field1` as `field1` FROM `db_name.schema_name`.`table1` `table1`"; - - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvbigquery); - sqlParser.setSqlCharset("UTF-8"); - sqlParser.sqltext = query; - int iRet = sqlParser.parse(); - - if (iRet == 0) { - TStatementList statements = sqlParser.sqlstatements; - TTableList tables = statements.get(0).getTables(); - TTable table = tables.getTable(0); - - // table name - Assert.assertEquals("`table1`", table.getTableName().getObjectToken().toString()); - // db name - Assert.assertEquals("`db_name`", table.getTableName().getDatabaseToken().toString()); - // schema name - Assert.assertEquals("`schema_name`", table.getTableName().getSchemaToken().toString()); - } - } - - public void testexample2(){ - - String query = "SELECT `table1`.`field1` as `field1` FROM `db_name`.`schema_name`.`table1` `table1`"; - - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvbigquery); - sqlParser.setSqlCharset("UTF-8"); - sqlParser.sqltext = query; - int iRet = sqlParser.parse(); - - if( iRet == 0 ){ - TStatementList statements = sqlParser.sqlstatements; - TTableList tables = statements.get(0).getTables(); - TTable table = tables.getTable(0); - - // table name - Assert.assertEquals("`table1`" , table.getTableName().getObjectToken().toString()); - // db name - Assert.assertEquals("`db_name`" , table.getTableName().getDatabaseToken().toString()); - // schema name - Assert.assertEquals("`schema_name`" , table.getTableName().getSchemaToken().toString()); - } - } - - - public void testexample1(){ - - String query = "SELECT table1.field1 as field1 FROM db_name.schema_name.table1 table1"; - - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvbigquery); - sqlParser.setSqlCharset("UTF-8"); - sqlParser.sqltext = query; - int iRet = sqlParser.parse(); - - if( iRet == 0 ){ - TStatementList statements = sqlParser.sqlstatements; - TTableList tables = statements.get(0).getTables(); - TTable table = tables.getTable(0); - - // table name - Assert.assertEquals("table1" , table.getTableName().getObjectToken().toString()); - // db name - Assert.assertEquals("db_name" , table.getTableName().getDatabaseToken().toString()); - // schema name - Assert.assertEquals("schema_name" , table.getTableName().getSchemaToken().toString()); - } - } -} diff --git a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCheckSourceColumn.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCheckSourceColumn.java deleted file mode 100644 index 6d1dea2f..00000000 --- a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCheckSourceColumn.java +++ /dev/null @@ -1,47 +0,0 @@ -package gudusoft.gsqlparser.bigqueryTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.stmt.TMergeSqlStatement; -import gudusoft.gsqlparser.util.THelp; -import junit.framework.TestCase; - -import java.util.ArrayList; - -public class testCheckSourceColumn extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - sqlparser.sqltext = "MERGE INTO EMP1 D USING (\n" + - " SELECT E2.* FROM EMP2 E2, EMP3 E3 WHERE E3.dept = 'prod'\n" + - ") S\n" + - "ON (D.id = S.id)\n" + - "WHEN MATCHED THEN\n" + - " UPDATE SET joining_date = current_date\n" + - "WHEN NOT MATCHED THEN\n" + - " INSERT (id, name, joining_date) VALUES (id2, TRIM(name2), joining_date2);"; - System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmerge); - TMergeSqlStatement sqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); - ArrayList columns = THelp.getObjectNames(sqlStatement); - for(TObjectName objectName:columns){ - // System.out.println(objectName.toString()); - if (objectName.toString().equalsIgnoreCase("id2") && (objectName.getStartToken().lineNo == 8)){ - //System.out.println(String.format("Source column for %s is %s",objectName.toString(),objectName.getSourceColumn()==null?"N/A":objectName.getSourceColumn().toString())); - assertTrue(objectName.getSourceColumn().toString().equalsIgnoreCase("E2.*")); - } - if (objectName.toString().equalsIgnoreCase("name2") && (objectName.getStartToken().lineNo == 8)){ - //System.out.println(String.format("Source column for %s is %s",objectName.toString(),objectName.getSourceColumn()==null?"N/A":objectName.getSourceColumn().toString())); - assertTrue(objectName.getSourceColumn().toString().equalsIgnoreCase("E2.*")); - } - if (objectName.toString().equalsIgnoreCase("joining_date2") && (objectName.getStartToken().lineNo == 8)){ - //System.out.println(String.format("Source column for %s is %s",objectName.toString(),objectName.getSourceColumn()==null?"N/A":objectName.getSourceColumn().toString())); - assertTrue(objectName.getSourceColumn().toString().equalsIgnoreCase("E2.*")); - } - } - - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateExternalTable.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateExternalTable.java deleted file mode 100644 index c6cd0adb..00000000 --- a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateExternalTable.java +++ /dev/null @@ -1,196 +0,0 @@ -package gudusoft.gsqlparser.bigqueryTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TCreateTableOption; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.ECreateTableOption.etoBigQueryExternal; - -import java.util.Arrays; - -public class testCreateExternalTable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE EXTERNAL TABLE dataset.CsvTable OPTIONS (\n" + - " format = 'CSV',\n" + - " uris = ['gs://bucket/path1.csv', 'gs://bucket/path2.csv']\n" + - ");"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TCreateTableOption createTableOption = createTableSqlStatement.getTableOptions().get(0); - assertTrue(createTableOption.getCreateTableOptionType() == etoBigQueryExternal); - assertTrue(createTableOption.toString().equalsIgnoreCase("OPTIONS (\n" + - " format = 'CSV',\n" + - " uris = ['gs://bucket/path1.csv', 'gs://bucket/path2.csv']\n" + - ")")); - - } - - public void testAvro(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE EXTERNAL TABLE dataset.CsvTable OPTIONS (\n" + - " format = 'AVRO',\n" + - " uris = ['gs://bucket/path1.csv', 'gs://bucket/path2.csv']\n" + - ");"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TCreateTableOption createTableOption = createTableSqlStatement.getTableOptions().get(0); - assertTrue(createTableOption.getCreateTableOptionType() == etoBigQueryExternal); - assertTrue(createTableOption.toString().equalsIgnoreCase("OPTIONS (\n" + - " format = 'AVRO',\n" + - " uris = ['gs://bucket/path1.csv', 'gs://bucket/path2.csv']\n" + - ")")); - - assertTrue(createTableOption.getFormat().equalsIgnoreCase("'AVRO'")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE OR REPLACE EXTERNAL TABLE dataset.CsvTable\n" + - "(\n" + - " x INT64,\n" + - " y STRING\n" + - ")\n" + - "OPTIONS (\n" + - " format = 'CSV',\n" + - " uris = ['gs://bucket/path1.csv'],\n" + - " field_delimiter = '|',\n" + - " max_bad_records = 5\n" + - ");"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TCreateTableOption createTableOption = createTableSqlStatement.getTableOptions().get(0); - assertTrue(createTableOption.getCreateTableOptionType() == etoBigQueryExternal); - assertTrue(createTableOption.toString().equalsIgnoreCase("OPTIONS (\n" + - " format = 'CSV',\n" + - " uris = ['gs://bucket/path1.csv'],\n" + - " field_delimiter = '|',\n" + - " max_bad_records = 5\n" + - ")")); - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE EXTERNAL TABLE dataset.AutoHivePartitionedTable\n" + - "WITH PARTITION COLUMNS\n" + - "OPTIONS (\n" + - " uris=['gs://bucket/path/*'],\n" + - " format=csv,\n" + - " hive_partition_uri_prefix='gs://bucket/path'\n" + - ");"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TCreateTableOption createTableOption = createTableSqlStatement.getTableOptions().get(1); - assertTrue(createTableOption.getCreateTableOptionType() == etoBigQueryExternal); - assertTrue(createTableOption.toString().equalsIgnoreCase("OPTIONS (\n" + - " uris=['gs://bucket/path/*'],\n" + - " format=csv,\n" + - " hive_partition_uri_prefix='gs://bucket/path'\n" + - ")")); - } - - public void test4(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE EXTERNAL TABLE dataset.CustomHivePartitionedTable\n" + - "WITH PARTITION COLUMNS (\n" + - " field_1 STRING, -- column order must match the external path\n" + - " field_2 INT64\n" + - ")\n" + - "OPTIONS (\n" + - " uris=['gs://bucket/path/*'],\n" + - " format=csv,\n" + - " hive_partition_uri_prefix='gs://bucket/path'\n" + - ");"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TCreateTableOption createTableOption = createTableSqlStatement.getTableOptions().get(1); - assertTrue(createTableOption.getCreateTableOptionType() == etoBigQueryExternal); - assertTrue(createTableOption.toString().equalsIgnoreCase("OPTIONS (\n" + - " uris=['gs://bucket/path/*'],\n" + - " format=csv,\n" + - " hive_partition_uri_prefix='gs://bucket/path'\n" + - ")")); - } - - public void test5(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - sqlparser.sqltext = "CREATE EXTERNAL TABLE dataset.CsvTable OPTIONS (\n" + - " format = 'CSV',\n" + - " uris = ['gs://bucket/path1.csv', 'gs://bucket/path2.csv'],\n" + - " field_delimiter = '|',\n" + - " max_bad_records = 5,\n" + - " hive_partition_uri_prefix='gs://bucket/path',\n" + - " expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),\n" + - " description=\"a view that expires in 2 days\",\n" + - " allow_jagged_rows=true,\n" + - " allow_quoted_newlines=true,\n" + - " compression='GZIP',\n" + - " enable_logical_types=true,\n" + - " encoding='UTF8',\n" + - " decimal_target_types=[\"NUMERIC\", \"BIGNUMERIC\"],\n" + - " ignore_unknown_values=true,\n" + - " null_marker='\\0',\n" + - " projection_fields=\"a,b,c\",\n" + - " quote=\"$\",\n" + - " require_hive_partition_filter=true,\n" + - " sheet_range=\"sheet1!A1:B20\",\n" + - " skip_leading_rows=10000,\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("dataset.CsvTable")); - TCreateTableOption tableOption = createTableSqlStatement.getTableOptions().get(0); - assertTrue(tableOption.getFormat().toString().equalsIgnoreCase("'CSV'")); - assertTrue(Arrays.toString(tableOption.getUris().toArray()).equalsIgnoreCase("['gs://bucket/path1.csv', 'gs://bucket/path2.csv']")); - assertTrue(tableOption.getFieldDelimiter().equals("'|'")); - assertTrue(tableOption.getMaxBadRecords() == 5); - assertTrue(tableOption.getHivePartitionUriPrefix().equalsIgnoreCase("'gs://bucket/path'")); - assertTrue(tableOption.getExpirationTimestamp().equalsIgnoreCase("TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR)")); - assertTrue(tableOption.getDescription().equals("\"a view that expires in 2 days\"")); - assertTrue(tableOption.getAllowJaggedRows() == true); - assertTrue(tableOption.getAllowQuotedNewlines() == true); - assertTrue(tableOption.getCompression().equalsIgnoreCase("'GZIP'")); - assertTrue(tableOption.getEnableLogicalTypes() == true); - assertTrue(tableOption.getEncoding().equalsIgnoreCase("'UTF8'")); - assertTrue(Arrays.toString(tableOption.getDecimalTargetTypes().toArray()).equalsIgnoreCase("[\"NUMERIC\", \"BIGNUMERIC\"]")); - assertTrue(tableOption.getIgnoreUnknownValues() == true); - assertTrue(tableOption.getNullMarker().equalsIgnoreCase("'\\0'")); - assertTrue(tableOption.getProjectionFields().equalsIgnoreCase("\"a,b,c\"")); - assertTrue(tableOption.getQuote().equalsIgnoreCase("\"$\"")); - assertTrue(tableOption.getRequireHivePartitionFilter() == true); - assertTrue(tableOption.getSheetRange().equalsIgnoreCase("\"sheet1!A1:B20\"")); - assertTrue(tableOption.getSkipLeadingRows() == 10000); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateFunction.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateFunction.java deleted file mode 100644 index 8969af32..00000000 --- a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateFunction.java +++ /dev/null @@ -1,34 +0,0 @@ -package gudusoft.gsqlparser.bigqueryTest; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; -import junit.framework.TestCase; - -public class testCreateFunction extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE TEMP FUNCTION mydataset.multiplyInputs(x FLOAT64, y FLOAT64)\n" + - "RETURNS FLOAT64\n" + - "LANGUAGE js\n" + - "AS \"\"\"\n" + - " return x*y;\n" + - "\"\"\";"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt functionStmt = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(functionStmt.getFunctionDefinition().toString().equalsIgnoreCase("\"\"\"\n" + - " return x*y;\n" + - "\"\"\"")); - assertTrue(functionStmt.getFunctionName().toString().equalsIgnoreCase("mydataset.multiplyInputs")); - assertTrue(functionStmt.getParameterDeclarations().getParameterDeclarationItem(0).getParameterName().toString().equalsIgnoreCase("x")); - assertTrue(functionStmt.getParameterDeclarations().getParameterDeclarationItem(0).getDataType().getDataType() == EDataType.float64_t); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateProcedure.java deleted file mode 100644 index 1ed2b211..00000000 --- a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateProcedure.java +++ /dev/null @@ -1,89 +0,0 @@ -package gudusoft.gsqlparser.bigqueryTest; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.stmt.TCallStatement; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import junit.framework.TestCase; - -public class testCreateProcedure extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE PROCEDURE `#batch_project_id.subscriber_dtl.prc_subscriber_history`(\n" + - " target_date DATE, OUT rows_added INT64)\n" + - "BEGIN\n" + - " CREATE TEMP TABLE DataForTargetDate AS\n" + - " SELECT t1.id, t1.x, t2.y\n" + - " FROM dataset.partitioned_table1 AS t1\n" + - " JOIN dataset.partitioned_table2 AS t2\n" + - " ON t1.id = t2.id\n" + - " WHERE t1.date = target_date\n" + - " AND t2.date = target_date;\n" + - "\n" + - " SET rows_added = (SELECT COUNT(*) FROM DataForTargetDate);\n" + - "\n" + - " SELECT id, x, y, target_date -- note that target_date is a parameter\n" + - " FROM DataForTargetDate;\n" + - "\n" + - " DROP TABLE DataForTargetDate;\n" + - "END;"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createprocedure = (TCreateProcedureStmt) sqlparser.sqlstatements.get(0); - - TObjectName procedureName = createprocedure.getProcedureName(); - assertTrue(procedureName.toString().equalsIgnoreCase("`#batch_project_id`.`subscriber_dtl`.`prc_subscriber_history`")); - assertTrue(procedureName.getDatabaseString().equalsIgnoreCase("`#batch_project_id`")); - assertTrue(procedureName.getSchemaString().equalsIgnoreCase("`subscriber_dtl`")); - assertTrue(procedureName.getObjectString().equalsIgnoreCase("`prc_subscriber_history`")); - assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getParameterName().toString().equalsIgnoreCase("rows_added")); - assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getDataType().getDataType() == EDataType.int64_t); - assertTrue(createprocedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - assertTrue(createprocedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstset); - assertTrue(createprocedure.getBodyStatements().get(2).sqlstatementtype == ESqlStatementType.sstselect); - assertTrue(createprocedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstdroptable); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "create procedure `sqlflow-connector`.`underscore_dataset`.`testProc3`( id INT64,OUT newId INT64) BEGIN\n" + - " DECLARE oldId INT64 DEFAULT id;\n" + - " set newId = null;\n" + - " WHILE newId IS NOT NULL DO\n" + - " SET newId = oldId + 1;\n" + - " END WHILE;\n" + - " SET newId = (SELECT id FROM underscore_dataset.table1);\n" + - " call underscore_dataset.testProc1(1,newId);\n" + - "END"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createprocedure = (TCreateProcedureStmt) sqlparser.sqlstatements.get(0); - - TObjectName procedureName = createprocedure.getProcedureName(); - assertTrue(procedureName.toString().equalsIgnoreCase("`sqlflow-connector`.`underscore_dataset`.`testProc3`")); - assertTrue(procedureName.getDatabaseString().equalsIgnoreCase("`sqlflow-connector`")); - assertTrue(procedureName.getSchemaString().equalsIgnoreCase("`underscore_dataset`")); - assertTrue(procedureName.getObjectString().equalsIgnoreCase("`testProc3`")); - assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getParameterName().toString().equalsIgnoreCase("newId")); - assertTrue(createprocedure.getParameterDeclarations().getParameterDeclarationItem(1).getDataType().getDataType() == EDataType.int64_t); - assertTrue(createprocedure.getBodyStatements().get(4).sqlstatementtype == ESqlStatementType.sstcall); - TCallStatement callStatement = (TCallStatement)createprocedure.getBodyStatements().get(4); - assertTrue(callStatement.getRoutineName().toString().equalsIgnoreCase("underscore_dataset.testProc1")); -// assertTrue(createprocedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstset); -// assertTrue(createprocedure.getBodyStatements().get(2).sqlstatementtype == ESqlStatementType.sstselect); -// assertTrue(createprocedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstdroptable); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTable.java deleted file mode 100644 index 9a9a11c9..00000000 --- a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTable.java +++ /dev/null @@ -1,51 +0,0 @@ -package gudusoft.gsqlparser.bigqueryTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCreateTable extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE TABLE `myproject.mydataset.mytable`\n" + - "CLONE `myproject.mydataset.mytablesnapshot`\n" + - "OPTIONS(\n" + - " expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 365 DAY),\n" + - " friendly_name=\"my_table\",\n" + - " description=\"A table that expires in 1 year\",\n" + - " labels=[(\"org_unit\", \"development\")]\n" + - ")"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - // System.out.println(createTableSqlStatement.getTableName().toString()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("`myproject`.`mydataset`.`mytable`")); - assertTrue(createTableSqlStatement.getCloneSourceTable().toString().equalsIgnoreCase("`myproject`.`mydataset`.`mytablesnapshot`")); - } - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE TABLE mydataset.newtable\n" + - "LIKE mydataset.sourcetable\n" + - "AS SELECT * FROM mydataset.myothertable;"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("mydataset.newtable")); - assertTrue(createTableSqlStatement.getLikeTableName().toString().equalsIgnoreCase("mydataset.sourcetable")); - TSelectSqlStatement subquery = createTableSqlStatement.getSubQuery(); - assertTrue(subquery.getTables().getTable(0).toString().equalsIgnoreCase("mydataset.myothertable")); - } - -} - diff --git a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTableFunction.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTableFunction.java deleted file mode 100644 index 470f01ec..00000000 --- a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testCreateTableFunction.java +++ /dev/null @@ -1,57 +0,0 @@ -package gudusoft.gsqlparser.bigqueryTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TTypeName; -import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; -import junit.framework.TestCase; - -public class testCreateTableFunction extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE OR REPLACE TABLE FUNCTION mydataset.names_by_year(y INT64)\n" + - " AS\n" + - " SELECT year, name, SUM(number) AS total\n" + - " FROM `usa_names.usa_1910_current`\n" + - " WHERE year = y\n" + - " GROUP BY year, name;"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunctionStmt = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunctionStmt.getFunctionName().toString().equalsIgnoreCase("mydataset.names_by_year")); - assertTrue(createFunctionStmt.getParameterDeclarations().getParameterDeclarationItem(0).getParameterName().toString().equalsIgnoreCase("y")); - assertTrue(createFunctionStmt.getReturnsType() == EFunctionReturnsType.frtInlineTableValue); - assertTrue(createFunctionStmt.getSqlQuery().getResultColumnList().size() ==3); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "CREATE OR REPLACE TABLE FUNCTION mydataset.names_by_year(y INT64)\n" + - "RETURNS TABLE\n" + - "AS\n" + - " SELECT year, name, SUM(number) AS total\n" + - " FROM `bigquery-public-data.usa_names.usa_1910_current`\n" + - " WHERE year = y\n" + - " GROUP BY year, name;"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunctionStmt = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunctionStmt.getFunctionName().toString().equalsIgnoreCase("mydataset.names_by_year")); - assertTrue(createFunctionStmt.getParameterDeclarations().getParameterDeclarationItem(0).getParameterName().toString().equalsIgnoreCase("y")); - assertTrue(createFunctionStmt.getReturnsType() == EFunctionReturnsType.frtInlineTableValue); - assertTrue(createFunctionStmt.getSqlQuery().getResultColumnList().size() ==3); - TTypeName returnType = createFunctionStmt.getReturnDataType(); - assertTrue(returnType.getDataType() == EDataType.table_t); - assertTrue(returnType.getColumnDefList().getColumn(0).getColumnName().toString().equalsIgnoreCase("name")); - assertTrue(returnType.getColumnDefList().getColumn(0).getDatatype().getDataType() == EDataType.string_t); - assertTrue(returnType.getColumnDefList().getColumn(1).getColumnName().toString().equalsIgnoreCase("year")); - assertTrue(returnType.getColumnDefList().getColumn(1).getDatatype().getDataType() == EDataType.int64_t); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testDeclare.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testDeclare.java deleted file mode 100644 index 99731834..00000000 --- a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testDeclare.java +++ /dev/null @@ -1,35 +0,0 @@ -package gudusoft.gsqlparser.bigqueryTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EDeclareType; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare; -import junit.framework.TestCase; - -public class testDeclare extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - - sqlparser.sqltext = "DECLARE prev_execution_date DATE DEFAULT DATE_SUB(CURRENT_DATE(),\n" + - "INTERVAL 1 DAY);\n" + - "\n" + - "DECLARE prev_execution_time TIMESTAMP DEFAULT CAST(CONCAT(\n" + - "DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY),' 23:59:59.999 UTC') as\n" + - "TIMESTAMP);"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqldeclare); - TMssqlDeclare declare = (TMssqlDeclare)sqlparser.sqlstatements.get(0); - - assertTrue(declare.getVariables().getDeclareVariable(0).toString().equalsIgnoreCase("prev_execution_date")); - assertTrue(declare.getDeclareType() == EDeclareType.variable); - assertTrue(declare.getVariables().getDeclareVariable(0).getDefaultValue().toString().equalsIgnoreCase("DATE_SUB(CURRENT_DATE(),\n" + - "INTERVAL 1 DAY)")); - - } -} - diff --git a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testIdentifier.java b/src/test/java/gudusoft/gsqlparser/bigqueryTest/testIdentifier.java deleted file mode 100644 index 61cb694e..00000000 --- a/src/test/java/gudusoft/gsqlparser/bigqueryTest/testIdentifier.java +++ /dev/null @@ -1,152 +0,0 @@ -package gudusoft.gsqlparser.bigqueryTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testIdentifier extends TestCase { - - public void testMultipleParts(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - sqlparser.sqltext = "select * from orbital-eon-20511-3.QLI_AUTOMATION_DO_NOT_TOUCH.books where book_id > 0 ;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = selectSqlStatement.getTables().getTable(0); - TObjectName tableName = table.getTableName(); - assertTrue(tableName.getDatabaseToken().toString().equalsIgnoreCase("orbital-eon-20511-3")); - assertTrue(tableName.getSchemaToken().toString().equalsIgnoreCase("QLI_AUTOMATION_DO_NOT_TOUCH")); - assertTrue(tableName.getTableToken().toString().equalsIgnoreCase("books")); - - } - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - sqlparser.sqltext = "INSERT INTO `solidatus-dev`.JDBC_test.Customers"; - sqlparser.tokenizeSqltext(); - TSourceToken st = sqlparser.sourcetokenlist.get(4); - assertTrue(st.toString().equalsIgnoreCase("`solidatus-dev`")); -// for(int i=0;i'2020-W01'"; - - assertTrue(sqlparser.parse() == 0); - TBaseType.bigquery_legacysql_compatible = false; - } - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - TBaseType.bigquery_legacysql_compatible = true; - sqlparser.sqltext = "-- https://cloud.google.com/bigquery/table-decorators\n" + - "\n" + - "-- \n" + - "\n" + - "#legacySQL\n" + - "SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000];\n" + - "\n" + - "SELECT [0, 1, 1, 2, 3, 5] FROM [PROJECT_ID:DATASET.TABLE@-3600000];\n" + - "\n" + - "\n" + - "-- https://cloud.google.com/bigquery/docs/reference/standard-sql/arrays\n" + - "\n" + - "WITH sequences AS\n" + - " (SELECT 1 AS id, [0, 1, 1, 2, 3, 5] AS some_numbers\n" + - " UNION ALL SELECT 2 AS id, [2, 4, 8, 16, 32] AS some_numbers\n" + - " UNION ALL SELECT 3 AS id, [5, 10] AS some_numbers)\n" + - "SELECT id, flattened_numbers\n" + - "FROM sequences\n" + - "CROSS JOIN UNNEST(sequences.some_numbers) AS flattened_numbers;\n" + - "\n" + - "\n" + - "MERGE dataset.DetailedInventory T\n" + - "USING dataset.Inventory S\n" + - "ON T.product = S.product\n" + - "WHEN NOT MATCHED AND quantity < 20 THEN\n" + - " INSERT(product, quantity, supply_constrained, comments)\n" + - " VALUES(product, quantity, true, ARRAY>[(DATE('2016-01-01'), 'comment1')])\n" + - "WHEN NOT MATCHED THEN\n" + - " INSERT(product, quantity, supply_constrained)\n" + - " VALUES(product, quantity, false)\n" + - ";\n" + - "\n" + - "\n" + - "select \n" + - "Metric,\n" + - "COUNTRY_CODE,\n" + - "WARR_FLAG,\n" + - "DATE,\n" + - "GEO_REGION,\n" + - "SUBREGION_CODE,\n" + - "TAT,\n" + - "WEEK_NUM,\n" + - "SERVICE_ORDER_CID,\n" + - "SERVICE_ORDER_NUMBER,\n" + - "APC_CODE,\n" + - "SERVICE_MACHINE_MODEL,\n" + - "Num_Qty,\n" + - "Denom_Qty\n" + - "\n" + - "from\n" + - "/*\n" + - "(select 'LClaims_3_Days_OTD' as Metric,\n" + - "COUNTRY_CODE as COUNTRY_CODE,\n" + - "WARR_FLAG as WARR_FLAG,\n" + - "HEADER_DATE as DATE,\n" + - "REGION_CODE as GEO_REGION,\n" + - "SUBREGION_CODE as SUBREGION_CODE,\n" + - "TAT as TAT,\n" + - "'Not CID' AS SERVICE_ORDER_CID,\n" + - "WEEK_NUM as WEEK_NUM,\n" + - "CLM_CLAIM_NUMBER AS SERVICE_ORDER_NUMBER,\n" + - "APC_MT_CODE AS APC_CODE,\n" + - "'' AS SERVICE_MACHINE_MODEL,\n" + - "(case when TAT <= 3 then integer(count(unique(CLM_CLAIM_NUMBER))) else 0 end) as NUM_QTY,\n" + - "count(unique(CLM_CLAIM_NUMBER)) AS DENOM_QTY\n" + - "from [motorola.com:dataservices:Service.SVC_DLYOPS_LCLAIMS_TAT] where REGION_CODE ='Europe-East' and Week_Num >='2018-W31' and Week_Num is not Null and REGION_CODE is not null\n" + - "group by 1,2,3,4,5,6,7,8,9,10,11,12\n" + - "order by WEEK_NUM)\n" + - "\n" + - ",*/\n" + - "(select 'Consumer_3_Day_OTD' as Metric,\n" + - "STATION_COUNTRY as COUNTRY_CODE,\n" + - "SERVICE_ORDER_WARRANTY_STATUS as WARR_FLAG,\n" + - "SHIP_DATE as DATE,\n" + - "'North America' as GEO_REGION,\n" + - "' ' as SUBREGION_CODE,\n" + - "TAT_PAUSE as TAT, /* Update NA TAT to TAT_PAUSE on 06/16/2021 */\n" + - "SERVICE_ORDER_CID as SERVICE_ORDER_CID,\n" + - "WEEK_NUM as WEEK_NUM,\n" + - "RNT_REF AS SERVICE_ORDER_NUMBER,\n" + - "APC_CODE AS APC_CODE,\n" + - "SERVICE_MACHINE_MODEL AS SERVICE_MACHINE_MODEL,\n" + - "(case when TAT <= 3 then integer(count(unique(RNT_REF))) else 0 end) as NUM_QTY, \n" + - "count(unique(RNT_REF)) AS DENOM_QTY\n" + - "from [motorola.com:dataservices:Service.SVC_MDS_NA_OTD_VW] where WEEK_NUM >'2019-W01' and WEEK_NUM is not Null\n" + - "group by 1,2,3,4,5,6,7,8,9,10,11,12\n" + - "order by WEEK_NUM)\n" + - ",\n" + - "\n" + - "(select 'MDS_2_Day_OTD' as Metric,\n" + - "STATION_COUNTRY as COUNTRY_CODE,\n" + - "SERVICE_ORDER_WARRANTY_STATUS as WARR_FLAG,\n" + - "SERVICE_ORDER_REPAIR_END_DATETIME as DATE,\n" + - "REGION_DESCRIPTION as GEO_REGION,\n" + - "SUBREGION as SUBREGION_CODE,\n" + - "TAT as TAT,\n" + - "SERVICE_ORDER_CID as SERVICE_ORDER_CID,\n" + - "WEEK_NUM as WEEK_NUM,\n" + - "SERVICE_ORDER_NUMBER AS SERVICE_ORDER_NUMBER,\n" + - "APC_CODE AS APC_CODE,\n" + - "SERVICE_MACHINE_MODEL AS SERVICE_MACHINE_MODEL,\n" + - "(case when TAT <= 2 then integer(count(unique(SERVICE_ORDER_NUMBER))) else 0 end) as NUM_QTY,\n" + - "count(unique(SERVICE_ORDER_NUMBER)) AS DENOM_QTY\n" + - "from [motorola.com:dataservices:Service.MDS_SVC_REPAIR_ORDERS_OTD_VW] where REGION_DESCRIPTION ='Brazil' and Week_Num >'2018-W31' and Week_Num is not Null and REGION_DESCRIPTION is not null\n" + - "group by 1,2,3,4,5,6,7,8,9,10,11,12\n" + - "order by WEEK_NUM)\n" + - ",\n" + - "(select 'MDS_3_Day_OTD' as Metric,\n" + - "STATION_COUNTRY as COUNTRY_CODE,\n" + - "SERVICE_ORDER_WARRANTY_STATUS as WARR_FLAG,\n" + - "SERVICE_ORDER_REPAIR_END_DATETIME as DATE,\n" + - "REGION_DESCRIPTION as GEO_REGION,\n" + - "SUBREGION as SUBREGION_CODE,\n" + - "TAT as TAT,\n" + - "WEEK_NUM as WEEK_NUM,\n" + - "SERVICE_ORDER_CID as SERVICE_ORDER_CID,\n" + - "SERVICE_ORDER_NUMBER AS SERVICE_ORDER_NUMBER,\n" + - "APC_CODE AS APC_CODE,\n" + - "SERVICE_MACHINE_MODEL AS SERVICE_MACHINE_MODEL,\n" + - "(case when TAT <= 3 then integer(count(unique(SERVICE_ORDER_NUMBER))) else 0 end) as NUM_QTY,\n" + - "count(unique(SERVICE_ORDER_NUMBER)) AS DENOM_QTY\n" + - "from [motorola.com:dataservices:Service.MDS_SVC_REPAIR_ORDERS_OTD_VW] where REGION_DESCRIPTION in('LAS','India','West Europe','East Europe','SW Asia') and Week_Num >'2018-W31' and Week_Num is not Null and REGION_DESCRIPTION is not null\n" + - "group by 1,2,3,4,5,6,7,8,9,10,11,12\n" + - "order by WEEK_NUM)\n" + - ",\n" + - "(select 'MDS_5_Day_OTD' as Metric,\n" + - "STATION_COUNTRY as COUNTRY_CODE,\n" + - "SERVICE_ORDER_WARRANTY_STATUS as WARR_FLAG,\n" + - "SERVICE_ORDER_REPAIR_END_DATETIME as DATE,\n" + - "REGION_DESCRIPTION as GEO_REGION,\n" + - "SUBREGION as SUBREGION_CODE,\n" + - "SERVICE_ORDER_CID as SERVICE_ORDER_CID,\n" + - "TAT as TAT,\n" + - "WEEK_NUM as WEEK_NUM,\n" + - "SERVICE_ORDER_NUMBER AS SERVICE_ORDER_NUMBER,\n" + - "APC_CODE AS APC_CODE,\n" + - "SERVICE_MACHINE_MODEL AS SERVICE_MACHINE_MODEL,\n" + - "(case when TAT <= 5 then integer(count(unique(SERVICE_ORDER_NUMBER))) else 0 end) as NUM_QTY,\n" + - "count(unique(SERVICE_ORDER_NUMBER)) AS DENOM_QTY\n" + - "from [motorola.com:dataservices:Service.MDS_SVC_REPAIR_ORDERS_OTD_VW] where REGION_DESCRIPTION in('META','JANZ','Rest of Asia') and Week_Num >'2018-W31' and Week_Num is not Null and REGION_DESCRIPTION is not null\n" + - "group by 1,2,3,4,5,6,7,8,9,10,11,12\n" + - "order by WEEK_NUM)\n" + - "group by 1,2,3,4,5,6,7,8,9,10,11,12,NUM_QTY,DENOM_QTY"; - - assertTrue(sqlparser.parse() == 0); - TBaseType.bigquery_legacysql_compatible = false; - } -} diff --git a/src/test/java/gudusoft/gsqlparser/commonTest/testPivotClause.java b/src/test/java/gudusoft/gsqlparser/commonTest/testPivotClause.java index fc0a5cfe..4af122a5 100644 --- a/src/test/java/gudusoft/gsqlparser/commonTest/testPivotClause.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testPivotClause.java @@ -58,31 +58,31 @@ public void preVisit(TPivotClause node) { ); if (node.getType() == TPivotClause.pivot){ - System.out.println("\n\nColumns in pivot table:"); + //System.out.println("\n\nColumns in pivot table:"); }else{ - System.out.println("\n\nColumns in unpivot table:"); + //System.out.println("\n\nColumns in unpivot table:"); } for(TObjectName objectName:node.getPivotTable().getLinkedColumns()){ System.out.println(objectName.toString()); if (objectName.getSourceColumn() != null){ - System.out.println("\tSource column:"+objectName.getSourceColumn().toString()); + // System.out.println("\tSource column:"+objectName.getSourceColumn().toString()); } } System.out.println("\nColumns in pivot source table:"); for(TObjectName objectName:node.getPivotTable().getSourceTableOfPivot().getLinkedColumns()){ - System.out.println(objectName.toString()); + //System.out.println(objectName.toString()); } if (node.getAliasClause() != null){ if (node.getAliasClause().getAliasName() != null){ - System.out.println("pivot alias:\t"+node.getAliasClause().getAliasName().toString()); + //System.out.println("pivot alias:\t"+node.getAliasClause().getAliasName().toString()); } if (node.getAliasClause().getColumns() != null){ System.out.println("\tcolumns:\t"); for(TObjectName objectName:node.getAliasClause().getColumns()){ - System.out.println("\t\t"+objectName.toString()); + // System.out.println("\t\t"+objectName.toString()); } } } diff --git a/src/test/java/gudusoft/gsqlparser/couchbaseTest/testCreateIndex.java b/src/test/java/gudusoft/gsqlparser/couchbaseTest/testCreateIndex.java deleted file mode 100644 index 096234ae..00000000 --- a/src/test/java/gudusoft/gsqlparser/couchbaseTest/testCreateIndex.java +++ /dev/null @@ -1,30 +0,0 @@ -package gudusoft.gsqlparser.couchbaseTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.couchbase.TKeyspaceRef; -import gudusoft.gsqlparser.stmt.TCreateIndexSqlStatement; -import junit.framework.TestCase; - -public class testCreateIndex extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvcouchbase); - - sqlparser.sqltext = "CREATE INDEX iflight_stops \n" + - " ON `travel-sample` ( stops, DISTINCT ARRAY v.flight FOR v IN schedule END )\n" + - " WHERE type = \"route\" ;"; - - assertTrue(sqlparser.parse() == 0); - TCreateIndexSqlStatement createIndexSqlStatement = (TCreateIndexSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createIndexSqlStatement.getIndexName().toString().equalsIgnoreCase("iflight_stops")); - TKeyspaceRef keyspaceRef = createIndexSqlStatement.getKeyspaceRef(); - assertTrue(keyspaceRef.getKeyspace().toString().equalsIgnoreCase("`travel-sample`")); - assertTrue(createIndexSqlStatement.getIndexTerms().size() == 2); - TExpression indexWhere = createIndexSqlStatement.getIndexWhere(); - assertTrue(indexWhere.toString().equalsIgnoreCase("type = \"route\"")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/couchbaseTest/testExplain.java b/src/test/java/gudusoft/gsqlparser/couchbaseTest/testExplain.java deleted file mode 100644 index bd43d122..00000000 --- a/src/test/java/gudusoft/gsqlparser/couchbaseTest/testExplain.java +++ /dev/null @@ -1,72 +0,0 @@ -package gudusoft.gsqlparser.couchbaseTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TExplainPlan; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import junit.framework.TestCase; - -public class testExplain extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvcouchbase); - - sqlparser.sqltext = "EXPLAIN INSERT INTO `travel-sample` (key UUID(), value _country) \n" + - " SELECT _country FROM `travel-sample` _country \n" + - " WHERE type = \"airport\" AND airportname = \"Heathrow\";"; - - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstExplain); - TExplainPlan explainPlan = (TExplainPlan)sqlparser.sqlstatements.get(0); - assertTrue(explainPlan.getStatement().sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)explainPlan.getStatement(); - assertTrue(insertSqlStatement.getTargetTable().getTableName().toString().equalsIgnoreCase("`travel-sample`")); - - } - - public void testPrepare1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvcouchbase); - - sqlparser.sqltext = "PREPARE \n" + - " INSERT INTO `travel-sample` (KEY, VALUE) \n" + - " VALUES ( $key, \n" + - " { \"type\" : \"airport\", \n" + - " \"tz\" : \"India Standard Time\", \n" + - " \"country\" : \"India\", \n" + - " \"faa\" : $faa_code} ) \n" + - "RETURNING *;"; - - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstprepare); - TExplainPlan explainPlan = (TExplainPlan)sqlparser.sqlstatements.get(0); - assertTrue(explainPlan.getStatement().sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)explainPlan.getStatement(); - assertTrue(insertSqlStatement.getTargetTable().getTableName().toString().equalsIgnoreCase("`travel-sample`")); - - } - - public void testPrepare2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvcouchbase); - - sqlparser.sqltext = "PREPARE ins_india FROM \n" + - " INSERT INTO `travel-sample` (KEY, VALUE) \n" + - " VALUES ( $key, \n" + - " { \"type\" : \"airport\", \n" + - " \"tz\" : \"India Standard Time\", \n" + - " \"country\" : \"India\", \n" + - " \"faa\" : $faa_code} ) \n" + - "RETURNING *;"; - - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstprepare); - TExplainPlan explainPlan = (TExplainPlan)sqlparser.sqlstatements.get(0); - assertTrue(explainPlan.getStatement().sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)explainPlan.getStatement(); - assertTrue(insertSqlStatement.getTargetTable().getTableName().toString().equalsIgnoreCase("`travel-sample`")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/couchbaseTest/testInfer.java b/src/test/java/gudusoft/gsqlparser/couchbaseTest/testInfer.java deleted file mode 100644 index e2fdd00c..00000000 --- a/src/test/java/gudusoft/gsqlparser/couchbaseTest/testInfer.java +++ /dev/null @@ -1,31 +0,0 @@ -package gudusoft.gsqlparser.couchbaseTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.couchbase.TObjectConstruct; -import gudusoft.gsqlparser.stmt.couchbase.TInferKeyspaceStmt; -import junit.framework.TestCase; - - -public class testInfer extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvcouchbase); - - sqlparser.sqltext = "INFER `beer-sample` WITH {\"sample_size\":10000,\"num_sample_values\":1,\"similarity_metric\":0.0};"; - - assertTrue(sqlparser.parse() == 0); - TInferKeyspaceStmt inferKeyspaceStmt = (TInferKeyspaceStmt)sqlparser.sqlstatements.get(0); - assertTrue(inferKeyspaceStmt.getTargetTable().getTableName().toString().equalsIgnoreCase("`beer-sample`")); - TExpression inferWith = inferKeyspaceStmt.getInferWith(); - assertTrue(inferWith.getExpressionType() == EExpressionType.objectConstruct_t); - TObjectConstruct objectConstruct = inferWith.getObjectConstruct(); - assertTrue(objectConstruct.getPairs().size() == 3); - assertTrue(objectConstruct.getPairs().getElement(0).getKeyName().toString().equalsIgnoreCase("\"sample_size\"")); - assertTrue(objectConstruct.getPairs().getElement(0).getKeyValue().toString().equalsIgnoreCase("10000")); - - } -} - diff --git a/src/test/java/gudusoft/gsqlparser/couchbaseTest/testInsert.java b/src/test/java/gudusoft/gsqlparser/couchbaseTest/testInsert.java deleted file mode 100644 index 32544e70..00000000 --- a/src/test/java/gudusoft/gsqlparser/couchbaseTest/testInsert.java +++ /dev/null @@ -1,65 +0,0 @@ -package gudusoft.gsqlparser.couchbaseTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TMultiTarget; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testInsert extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvcouchbase); - - sqlparser.sqltext = "INSERT INTO `travel-sample` (KEY UUID()) \n" + - " SELECT x.name, x.city, \"landmark_hotels\" AS type \n" + - " FROM `travel-sample` x \n" + - " WHERE x.type = \"hotel\" and x.city WITHIN \n" + - " ( SELECT DISTINCT t.city \n" + - " FROM `travel-sample` t \n" + - " WHERE t.type = \"landmark\" ) \n" + - " LIMIT 4 \n" + - "RETURNING *;"; - - assertTrue(sqlparser.parse() == 0); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insertSqlStatement.getTargetTable().toString().equalsIgnoreCase("`travel-sample`")); - TSelectSqlStatement selectSqlStatement = insertSqlStatement.getSubQuery(); - //System.out.println(selectSqlStatement.tables.getTable(0).getTableName()); - assertTrue(selectSqlStatement.tables.getTable(0).getTableName().toString().equalsIgnoreCase("`travel-sample`")); - } - - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvcouchbase); - - sqlparser.sqltext = "INSERT INTO `travel-sample` (KEY,VALUE) \n" + - " VALUES ( \"1025\", \n" + - " { \"callsign\": \"MY-AIR\",\n" + - " \"country\": \"United States\",\n" + - " \"iata\": \"Z1\",\n" + - " \"icao\": \"AQZ\",\n" + - " \"id\": \"1011\",\n" + - " \"name\": \"80-My Air\",\n" + - " \"type\": \"airline\" \n" + - " } ) \n" + - "RETURNING *;"; - - assertTrue(sqlparser.parse() == 0); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insertSqlStatement.getTargetTable().toString().equalsIgnoreCase("`travel-sample`")); - TMultiTarget multiTarget = insertSqlStatement.getValues().getMultiTarget(0); - TResultColumn resultColumn0 = multiTarget.getColumnList().getResultColumn(0); - TResultColumn resultColumn1 = multiTarget.getColumnList().getResultColumn(1); - assertTrue(resultColumn0.getExpr().toString().equalsIgnoreCase("\"1025\"")); - TExpression expression = resultColumn1.getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.objectConstruct_t); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/couchbaseTest/testUpsert.java b/src/test/java/gudusoft/gsqlparser/couchbaseTest/testUpsert.java deleted file mode 100644 index 1899257b..00000000 --- a/src/test/java/gudusoft/gsqlparser/couchbaseTest/testUpsert.java +++ /dev/null @@ -1,41 +0,0 @@ -package gudusoft.gsqlparser.couchbaseTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TMultiTarget; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.nodes.couchbase.TObjectConstruct; -import gudusoft.gsqlparser.nodes.couchbase.TPair; -import gudusoft.gsqlparser.stmt.TUpsertStmt; -import junit.framework.TestCase; - -public class testUpsert extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvcouchbase); - - sqlparser.sqltext = "UPSERT INTO product (KEY, VALUE) VALUES (\"odwalla-juice1\", { \"productId\": \"odwalla-juice1\", \n" + - " \"unitPrice\": 5.40, \"type\": \"product\", \"color\":\"red\"}) RETURNING * ;"; - - assertTrue(sqlparser.parse() == 0); - TUpsertStmt upsertStmt = (TUpsertStmt)sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("product")); - TMultiTarget multiTarget = upsertStmt.getValues().getMultiTarget(0); - TResultColumn resultColumn0 = multiTarget.getColumnList().getResultColumn(0); - TExpression expression0 = resultColumn0.getExpr(); - assertTrue(expression0.toString().equalsIgnoreCase("\"odwalla-juice1\"")); - - TResultColumn resultColumn1 = multiTarget.getColumnList().getResultColumn(1); - TExpression expression1 = resultColumn1.getExpr(); - assertTrue(expression1.getExpressionType() == EExpressionType.objectConstruct_t); - TObjectConstruct objectConstruct = expression1.getObjectConstruct(); - assertTrue(objectConstruct.getPairs().size() == 4); - TPair pair = objectConstruct.getPairs().getElement(0); - assertTrue(pair.getKeyName().toString().equalsIgnoreCase("\"productId\"")); - assertTrue(pair.getKeyValue().toString().equalsIgnoreCase("\"odwalla-juice1\"")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/customerTest/dag/testBuiltInFucntion.java b/src/test/java/gudusoft/gsqlparser/customerTest/dag/testBuiltInFucntion.java deleted file mode 100644 index 5e70934f..00000000 --- a/src/test/java/gudusoft/gsqlparser/customerTest/dag/testBuiltInFucntion.java +++ /dev/null @@ -1,86 +0,0 @@ -package gudusoft.gsqlparser.customerTest.dag; -/* - * Date: 11-4-6 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.EFunctionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.TObjectAccess; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testBuiltInFucntion extends TestCase { - - public static void testExtractXML(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT warehouse_name,\n" + - " EXTRACT(warehouse_spec, '/Warehouse/Docks')\n" + - " \"Number of Docks\"\n" + - " FROM warehouses\n" + - " WHERE warehouse_name = 'San Francisco';"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column = select.getResultColumnList().getResultColumn(1); - TExpression expr = column.getExpr(); - TFunctionCall f = expr.getFunctionCall(); - assertTrue(f.getFunctionType() == EFunctionType.extractxml_t); - assertTrue(f.getXMLType_Instance().toString().equalsIgnoreCase("warehouse_spec")); - assertTrue(f.getXPath_String().toString().equalsIgnoreCase("'/Warehouse/Docks'")); - } - - public static void testTreat(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT name, TREAT(VALUE(p) AS employee_t).salary salary \n" + - " FROM persons p;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column = select.getResultColumnList().getResultColumn(1); - TExpression expr = column.getExpr(); - TFunctionCall f = expr.getFunctionCall(); - assertTrue(expr.getExpressionType() == EExpressionType.object_access_t); - //assertTrue(f.getFuncType() == TFunctionCall.fntTreat); - - } - - public static void testTranslate(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create view wm$all_locks_view as select t.table_owner, t.table_name,\n" + - " decode(sys.lt_ctx_pkg.getltlockinfo(translate(t.info using char_cs),'row_lockmode'), 'e', 'exclusive', 's', 'shared') lock_mode,\n" + - " sys.lt_ctx_pkg.getltlockinfo(translate(t.info using char_cs),'row_lockuser') lock_owner,\n" + - " sys.lt_ctx_pkg.getltlockinfo(translate(t.info using char_cs),'row_lockstate') locking_state\n" + - "from (select table_owner, table_name, info from\n" + - " table( cast(sys.ltadm.get_lock_table() as wm$lock_table_type))) t\n" + - "with read only"; - assertTrue(sqlparser.parse()==0); - } - - public static void testXmlAgg(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT\n" + - " O.OBJECT_ID,\n" + - " '|' || RTRIM (XMLAGG (XMLELEMENT (K, O.KEY_1 || '|')).EXTRACT ('//text()'),\n" + - "'|') || '|' AS TEXT_KEY\n" + - "FROM DAG_OBJECT_FACT O"; - assertTrue(sqlparser.parse()==0); - - TResultColumn rc = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(1); - TExpression expression = rc.getExpr().getLeftOperand().getRightOperand(); - TFunctionCall functionCall = expression.getFunctionCall(); - TExpression xmlaggExpr = functionCall.getArgs().getExpression(0); - assertTrue(xmlaggExpr.getExpressionType() == EExpressionType.object_access_t); - TObjectAccess objectAccess = xmlaggExpr.getObjectAccess(); - TFunctionCall xmlelement = objectAccess.getObjectExpr().getFunctionCall().getArgs().getExpression(0).getFunctionCall(); - //assertTrue(xmlelement.getArgs().size() == 1); - assertTrue(xmlelement.getXMLElementNameExpr().toString().equalsIgnoreCase("K")); - TResultColumn resultColumn = xmlelement.getXMLElementValueExprList().getResultColumn(0); - TExpression expression1 = resultColumn.getExpr(); - assertTrue(expression1.toString().equalsIgnoreCase("O.KEY_1 || '|'")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/customerTest/dag/testKeepKeyword.java b/src/test/java/gudusoft/gsqlparser/customerTest/dag/testKeepKeyword.java deleted file mode 100644 index 5a143455..00000000 --- a/src/test/java/gudusoft/gsqlparser/customerTest/dag/testKeepKeyword.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.customerTest.dag; -/* - * Date: 11-4-6 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testKeepKeyword extends TestCase { - - public static void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create view rc_backup_set\n" + - "as\n" + - "select decode(keep_options, 0, 'no', 'yes') keep\n" + - "from db, bs\n" + - "where db.db_key = bs.db_key"; - assertTrue(sqlparser.parse()==0); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/customerTest/dag/testMultiSetOperator.java b/src/test/java/gudusoft/gsqlparser/customerTest/dag/testMultiSetOperator.java deleted file mode 100644 index 51f21bf4..00000000 --- a/src/test/java/gudusoft/gsqlparser/customerTest/dag/testMultiSetOperator.java +++ /dev/null @@ -1,19 +0,0 @@ -package gudusoft.gsqlparser.customerTest.dag; -/* - * Date: 11-4-8 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testMultiSetOperator extends TestCase { - - public static void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT CAST( MULTISET( SELECT empno, empname FROM emp) AS emp_tab_t ) emptab\n" + - "FROM DUAL;"; - assertTrue(sqlparser.parse()==0); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/customerTest/noetix/testViewAlias.java b/src/test/java/gudusoft/gsqlparser/customerTest/noetix/testViewAlias.java deleted file mode 100644 index 557a7a06..00000000 --- a/src/test/java/gudusoft/gsqlparser/customerTest/noetix/testViewAlias.java +++ /dev/null @@ -1,237 +0,0 @@ -package gudusoft.gsqlparser.customerTest.noetix; -/* - * Date: 11-4-6 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.nodes.TViewAliasClause; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import junit.framework.TestCase; - -public class testViewAlias extends TestCase { - - public static void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE OR REPLACE FORCE VIEW \"DEV_602_MEDIUM_TC\".\"AP20_INVOICE_DISTRIBUTIONS\" (\"A$ACCRUAL_POSTED_FLAG\", \"A$DISTR$ACCOUNT\", \"A$DISTR$COMPANY\", \"A$DISTR$DEPARTMENT\", \"A$DISTR$PRODUCT\", \"A$DISTR$SUB_ACCOUNT\", \"A$EXPENDITURE_ORGANIZATION_NAM\", \"A$GL_DATE\", \"A$INVOICE_DATE\", \"A$INVOICE_NUMBER\", \"A$POSTED_FLAG\", \"A$PROJECT_NAME\", \"A$PROJECT_NUMBER\", \"A$VENDOR_NAME\", \"A$VENDOR_SITE_CODE\", \"A$ZZ__________________________\", \"APLIAB$OPERATIONS_ACCOUNTING_F\", \"ACCRUAL_POSTED_FLAG\", \"AMOUNT\", \"AMOUNT_BASE\", \"ASSETS_ADDITION_CODE\", \"ASSETS_TRACKING_FLAG\", \"BASE_AMOUNT\", \"BASE_CURRENCY_CODE\", \"BASE_INVOICE_PRICE_VARIANCE\", \"BASE_QUANTITY_VARIANCE\", \"DESCRIPTION\", \"DISTR$ACCOUNT\", \"DISTR$COMPANY\", \"DISTR$DEPARTMENT\", \"DISTR$OPERATIONS_ACCOUNTING_FL\", \"DISTR$PRODUCT\", \"DISTR$SUB_ACCOUNT\", \"DISTRIBUTION_CREATION_DATE\", \"DISTRIBUTION_LINE_NUMBER\", \"EARLIEST_SETTLEMENT_DATE\", \"EXCHANGE_DATE\", \"EXCHANGE_RATE\", \"EXCHANGE_RATE_TYPE\", \"EXCHANGE_RATE_VARIANCE\", \"EXPENDITURE_ITEM_DATE\", \"EXPENDITURE_ORGANIZATION_NAME\", \"EXPENDITURE_TYPE\", \"EXPENSE_JUSTIFICATION\", \"FINAL_MATCH_FLAG\", \"GL_DATE\", \"HOLD_MATCH_STATUS\", \"INV$ATTRIBUTE_CATEGORY\", \"INV$MISC_VENDOR_ADDRESS\", \"INV$MISC_VENDOR_CITY\", \"INV$MISC_VENDOR_NAME\", \"INV$MISC_VENDOR_STATE\", \"INV$MISC_VENDOR_ZIP\", \"INCOME_TAX_REGION\", \"INCOME_TAX_TYPE\", \"INVOICE_CURRENCY_CODE\", \"INVOICE_DATE\", \"INVOICE_NUMBER\", \"INVOICE_PAYMENT_STATUS\", \"INVOICE_PRICE_VARIANCE\", \"INVOICE_PRICE_VARIANCE_BASE\", \"INVOICE_SOURCE\", \"INVOICE_TYPE_LOOKUP_CODE\", \"JOURNAL_BATCH_DESCRIPTION\", \"JOURNAL_BATCH_NAME\", \"JOURNAL_BATCH_POSTED_DATE\", \"JOURNAL_BATCH_STATUS\", \"LINE_TYPE_LOOKUP_CODE\", \"PA_ADDITION_FLAG\", \"PA_QUANTITY\", \"PERIOD_NAME\", \"POSTED_AMOUNT\", \"POSTED_AMOUNT_BASE\", \"POSTED_BASE_AMOUNT\", \"POSTED_FLAG\", \"PREPAY_AMOUNT_REMAINING\", \"PREPAY_AMOUNT_REMAINING_BASE\", \"PRICE_VAR$OPERATIONS_ACCOUNTIN\", \"PROJECT_NAME\", \"PROJECT_NUMBER\", \"QUANTITY_INVOICED\", \"QUANTITY_VARIANCE\", \"REVERSAL_FLAG\", \"STAT_AMOUNT\", \"TASK_NAME\", \"TASK_NUMBER\", \"UNIT_PRICE\", \"UNIT_PRICE_BASE\", \"VAT_CODE\", \"VENDOR_EXCHANGE_DATE\", \"VENDOR_EXCHANGE_RATE\", \"VENDOR_EXCHANGE_RATE_TYPE\", \"VENDOR_NAME\", \"VENDOR_PREPAY_AMOUNT\", \"VENDOR_PREPAY_AMOUNT_BASE\", \"VENDOR_SITE_CODE\", \"Z$$_________________________\", \"Z$AP20_INVOICE_DISTRIBUTIONS\", \"Z$AP20_INVOICES\", \"Z$GL_CHART_OF_ACCOUNTS\") AS\n" + - " SELECT\n" + - "/*+ RULE */\n" + - " IDSTR.ACCRUAL_POSTED_FLAG A$Accrual_Posted_Flag,\n" + - " Distr.SEGMENT3 A$Distr$Account,\n" + - " Distr.SEGMENT1 A$Distr$Company,\n" + - " Distr.SEGMENT2 A$Distr$Department,\n" + - " Distr.SEGMENT5 A$Distr$Product,\n" + - " Distr.SEGMENT4 A$Distr$Sub_Account,\n" + - " Expenditure_Organization_Name.NAME A$Expenditure_Organization_Nam,\n" + - " IDSTR.ACCOUNTING_DATE A$Gl_Date,\n" + - " INV.INVOICE_DATE A$Invoice_Date,\n" + - " INV.INVOICE_NUM A$Invoice_Number,\n" + - " IDSTR.POSTED_FLAG A$Posted_Flag,\n" + - " PROJ.NAME A$Project_Name,\n" + - " PROJ.SEGMENT1 A$Project_Number,\n" + - " VEND.VENDOR_NAME A$Vendor_Name,\n" + - " VCODE.VENDOR_SITE_CODE A$Vendor_Site_Code,\n" + - " 'A$ZZ__________________________Copyright Noetix Corporation 1992-2009'\n" + - "A$ZZ__________________________,\n" + - " APLiab.SEGMENT1 ||'-'||APLiab.SEGMENT2 ||'-'||APLiab.SEGMENT3\n" + - "||'-'||APLiab.SEGMENT4 ||'-'||APLiab.SEGMENT5 APLiab$Operations_Accounting_F,\n" + - " IDSTR.ACCRUAL_POSTED_FLAG Accrual_Posted_Flag,\n" + - " NVL(IDSTR.AMOUNT,0) Amount,\n" + - " NVL(IDSTR.BASE_AMOUNT,DECODE(INV.INVOICE_CURRENCY_CODE,\n" + - "BOOK.CURRENCY_CODE,NVL(IDSTR.AMOUNT,0),NULL)) Amount_Base,\n" + - " NVL(IDSTR.ASSETS_ADDITION_FLAG,'N') Assets_Addition_Code,\n" + - " IDSTR.ASSETS_TRACKING_FLAG Assets_Tracking_Flag,\n" + - " NVL(IDSTR.BASE_AMOUNT,DECODE(INV.INVOICE_CURRENCY_CODE,\n" + - "BOOK.CURRENCY_CODE,NVL(IDSTR.AMOUNT,0),NULL)) Base_Amount,\n" + - " BOOK.CURRENCY_CODE Base_Currency_Code,\n" + - " IDSTR.BASE_INVOICE_PRICE_VARIANCE Base_Invoice_Price_Variance,\n" + - " IDSTR.BASE_QUANTITY_VARIANCE Base_Quantity_Variance,\n" + - " IDSTR.DESCRIPTION Description,\n" + - " Distr.SEGMENT3 Distr$Account,\n" + - " Distr.SEGMENT1 Distr$Company,\n" + - " Distr.SEGMENT2 Distr$Department,\n" + - " Distr.SEGMENT1 ||'-'||Distr.SEGMENT2 ||'-'||Distr.SEGMENT3\n" + - "||'-'||Distr.SEGMENT4 ||'-'||Distr.SEGMENT5 Distr$Operations_Accounting_Fl,\n" + - " Distr.SEGMENT5 Distr$Product,\n" + - " Distr.SEGMENT4 Distr$Sub_Account,\n" + - " IDSTR.CREATION_DATE Distribution_Creation_Date,\n" + - " IDSTR.DISTRIBUTION_LINE_NUMBER Distribution_Line_Number,\n" + - " INV.EARLIEST_SETTLEMENT_DATE Earliest_Settlement_Date,\n" + - " IDSTR.EXCHANGE_DATE Exchange_Date,\n" + - " IDSTR.EXCHANGE_RATE Exchange_Rate,\n" + - " IDSTR.EXCHANGE_RATE_TYPE Exchange_Rate_Type,\n" + - " IDSTR.EXCHANGE_RATE_VARIANCE Exchange_Rate_Variance,\n" + - " IDSTR.EXPENDITURE_ITEM_DATE Expenditure_Item_Date,\n" + - " Expenditure_Organization_Name.NAME Expenditure_Organization_Name,\n" + - " IDSTR.EXPENDITURE_TYPE Expenditure_Type,\n" + - " IDSTR.JUSTIFICATION Expense_Justification,\n" + - " NVL(IDSTR.FINAL_MATCH_FLAG,'N') Final_Match_Flag,\n" + - " IDSTR.ACCOUNTING_DATE Gl_Date,\n" + - " SUBSTR (DECODE (IDSTR.MATCH_STATUS_FLAG, 'N', 'Not Tested for Approval',\n" + - "'T', 'Failed Approval Testing', 'A', 'Approved', NULL,\n" + - "'Not Tested for Approval'\n" + - ", 'Undefined Value: ' || IDSTR.MATCH_STATUS_FLAG), 1, 23) Hold_Match_Status,\n" + - " INV.ATTRIBUTE_CATEGORY INV$ATTRIBUTE_CATEGORY,\n" + - " decode(INV.ATTRIBUTE_CATEGORY,\n" + - "'One-Time',INV.ATTRIBUTE4,null) INV$Misc_Vendor_Address,\n" + - " decode(\n" + - "INV.ATTRIBUTE_CATEGORY,'One-Time',INV.ATTRIBUTE5,null) INV$Misc_Vendor_City,\n" + - " decode(\n" + - "INV.ATTRIBUTE_CATEGORY,'One-Time',INV.ATTRIBUTE3,null) INV$Misc_Vendor_Name,\n" + - " decode(\n" + - "INV.ATTRIBUTE_CATEGORY,'One-Time',INV.ATTRIBUTE6,null) INV$Misc_Vendor_State,\n" + - " decode(\n" + - "INV.ATTRIBUTE_CATEGORY,'One-Time',INV.ATTRIBUTE7,null) INV$Misc_Vendor_Zip,\n" + - " IDSTR.INCOME_TAX_REGION Income_Tax_Region,\n" + - " IDSTR.TYPE_1099 Income_Tax_Type,\n" + - " INV.INVOICE_CURRENCY_CODE Invoice_Currency_Code,\n" + - " INV.INVOICE_DATE Invoice_Date,\n" + - " INV.INVOICE_NUM Invoice_Number,\n" + - " DECODE(INV.PAYMENT_STATUS_FLAG,'N'\n" + - ",'No','Y','Yes','P','Partial',INV.PAYMENT_STATUS_FLAG) Invoice_Payment_Status,\n" + - " IDSTR.INVOICE_PRICE_VARIANCE Invoice_Price_Variance,\n" + - " NVL(IDSTR.BASE_INVOICE_PRICE_VARIANCE,DECODE(INV.INVOICE_CURRENCY_CODE,\n" + - "BOOK.CURRENCY_CODE,\n" + - "IDSTR.INVOICE_PRICE_VARIANCE,NULL)) Invoice_Price_Variance_Base,\n" + - " INV.SOURCE Invoice_Source,\n" + - " INV.INVOICE_TYPE_LOOKUP_CODE Invoice_Type_Lookup_Code,\n" + - " GLBTC.DESCRIPTION Journal_Batch_Description,\n" + - " GLBTC.NAME Journal_Batch_Name,\n" + - " GLBTC.POSTED_DATE Journal_Batch_Posted_Date,\n" + - " GLBTC.STATUS Journal_Batch_Status,\n" + - " IDSTR.LINE_TYPE_LOOKUP_CODE Line_Type_Lookup_Code,\n" + - " NVL(IDSTR.PA_ADDITION_FLAG,'Y') Pa_Addition_Flag,\n" + - " NVL(IDSTR.PA_QUANTITY,0) Pa_Quantity,\n" + - " IDSTR.PERIOD_NAME Period_Name,\n" + - " NVL(IDSTR.POSTED_AMOUNT,0) Posted_Amount,\n" + - " NVL(IDSTR.POSTED_BASE_AMOUNT,DECODE(INV.INVOICE_CURRENCY_CODE,\n" + - "BOOK.CURRENCY_CODE,NVL(IDSTR.POSTED_AMOUNT,0),NULL)) Posted_Amount_Base,\n" + - " NVL(IDSTR.POSTED_BASE_AMOUNT,DECODE(INV.INVOICE_CURRENCY_CODE,\n" + - "BOOK.CURRENCY_CODE,NVL(IDSTR.POSTED_AMOUNT,0),NULL)) Posted_Base_Amount,\n" + - " IDSTR.POSTED_FLAG Posted_Flag,\n" + - " NVL (IDSTR.PREPAY_AMOUNT_REMAINING, DECODE (INV.INVOICE_TYPE_LOOKUP_CODE,\n" + - "'PREPAYMENT', DECODE(INV.PAYMENT_STATUS_FLAG,'Y', DECODE(\n" + - "IDSTR.LINE_TYPE_LOOKUP_CODE,\n" + - "'ITEM', IDSTR.AMOUNT,0), 0), 0)) Prepay_Amount_Remaining,\n" + - " (NVL (IDSTR.PREPAY_AMOUNT_REMAINING, DECODE(INV.INVOICE_TYPE_LOOKUP_CODE,\n" + - "'PREPAYMENT', DECODE(INV.PAYMENT_STATUS_FLAG,'Y', DECODE(\n" + - "IDSTR.LINE_TYPE_LOOKUP_CODE,'ITEM', IDSTR.AMOUNT,0), 0), 0)) * NVL (\n" + - "IDSTR.EXCHANGE_RATE, DECODE (INV.INVOICE_CURRENCY_CODE,\n" + - "BOOK.CURRENCY_CODE, 1,NULL))) Prepay_Amount_Remaining_Base,\n" + - " Price_Var.SEGMENT1 ||'-'||Price_Var.SEGMENT2 ||'-'||Price_Var.SEGMENT3 ||\n" + - "'-'\n" + - "||Price_Var.SEGMENT4 ||'-'||Price_Var.SEGMENT5 Price_Var$Operations_Accountin,\n" + - " PROJ.NAME Project_Name,\n" + - " PROJ.SEGMENT1 Project_Number,\n" + - " NVL(IDSTR.QUANTITY_INVOICED,0) Quantity_Invoiced,\n" + - " IDSTR.QUANTITY_VARIANCE Quantity_Variance,\n" + - " NVL(IDSTR.REVERSAL_FLAG,'N') Reversal_Flag,\n" + - " IDSTR.STAT_AMOUNT Stat_Amount,\n" + - " TASK.TASK_NAME Task_Name,\n" + - " TASK.TASK_NUMBER Task_Number,\n" + - " IDSTR.UNIT_PRICE Unit_Price,\n" + - " (IDSTR.UNIT_PRICE)*NVL(IDSTR.EXCHANGE_RATE,\n" + - "DECODE(INV.INVOICE_CURRENCY_CODE,BOOK.CURRENCY_CODE,1,NULL)) Unit_Price_Base,\n" + - " APTXC.NAME Vat_Code,\n" + - " INV.EXCHANGE_DATE Vendor_Exchange_Date,\n" + - " INV.EXCHANGE_RATE Vendor_Exchange_Rate,\n" + - " INV.EXCHANGE_RATE_TYPE Vendor_Exchange_Rate_Type,\n" + - " VEND.VENDOR_NAME Vendor_Name,\n" + - " CASE WHEN IDSTR.LINE_TYPE_LOOKUP_CODE ='PREPAY' OR (\n" + - "IDSTR.LINE_TYPE_LOOKUP_CODE = 'TAX' AND\n" + - "IDSTR.PREPAY_TAX_PARENT_ID\n" + - "IS NOT NULL) THEN IDSTR.AMOUNT ELSE NULL END Vendor_Prepay_Amount,\n" + - " CASE WHEN IDSTR.LINE_TYPE_LOOKUP_CODE ='PREPAY' OR (\n" + - "IDSTR.LINE_TYPE_LOOKUP_CODE = 'TAX' AND\n" + - "IDSTR.PREPAY_TAX_PARENT_ID IS NOT NULL) THEN NVL(IDSTR.BASE_AMOUNT,\n" + - "DECODE(INV.INVOICE_CURRENCY_CODE,BOOK.CURRENCY_CODE,\n" + - "NVL(IDSTR.AMOUNT,0),NULL)) ELSE NULL END Vendor_Prepay_Amount_Base,\n" + - " VCODE.VENDOR_SITE_CODE Vendor_Site_Code,\n" + - " 'Z$$_________________________' Z$$_________________________,\n" + - " IDSTR.rowid Z$AP20_Invoice_Distributions,\n" + - " INV.rowid Z$AP20_Invoices,\n" + - " Distr.rowid Z$GL_Chart_Of_Accounts\n" + - " FROM\n" + - " HR.HR_ALL_ORGANIZATION_UNITS_TL Expenditure_Organization_Name,\n" + - " GL.GL_CODE_COMBINATIONS Price_Var,\n" + - " GL.GL_CODE_COMBINATIONS Distr,\n" + - " GL.GL_CODE_COMBINATIONS APLiab,\n" + - " PO.PO_VENDORS VEND,\n" + - " PO.PO_VENDOR_SITES_ALL VCODE,\n" + - " PA.PA_TASKS TASK,\n" + - " PA.PA_PROJECTS_ALL PROJ,\n" + - " AP.AP_TAX_CODES_ALL APTXC,\n" + - " GL.GL_SETS_OF_BOOKS BOOK,\n" + - " GL.GL_JE_BATCHES GLBTC,\n" + - " GL.GL_JE_HEADERS GLHDR,\n" + - " GL.GL_JE_LINES GLLIN,\n" + - " GL.GL_IMPORT_REFERENCES GLREF,\n" + - " AP.AP_ACCOUNTING_EVENTS_ALL AE,\n" + - " AP.AP_AE_HEADERS_ALL AEH,\n" + - " AP.AP_AE_LINES_ALL AEL,\n" + - " AP.AP_INVOICES_ALL INV,\n" + - " DEV_586_SMALL_DE.AP20_OU_ACL_Map_Base XMAP,\n" + - " AP.AP_INVOICE_DISTRIBUTIONS_ALL IDSTR\n" + - "WHERE 'Copyright Noetix Corporation 1992-2009' is not null\n" + - " AND IDSTR.INVOICE_ID = INV.INVOICE_ID\n" + - " AND NVL (IDSTR.ORG_ID, -9999) = XMAP.ORG_ID\n" + - " AND XMAP.APPLICATION_INSTANCE = '45'\n" + - " /*** SET_OF_BOOKS_ID => 1 ***/\n" + - " /*** CHART_OF_ACCOUNTS_ID => 101 ***/\n" + - " /*** ORG_ID => 204 ***/\n" + - " AND IDSTR.SET_OF_BOOKS_ID = XMAP.SET_OF_BOOKS_ID\n" + - " AND IDSTR.ACCOUNTING_EVENT_ID = AE.ACCOUNTING_EVENT_ID (+)\n" + - " AND AE.SOURCE_TABLE (+)= 'AP_INVOICES'\n" + - " AND (AE.SOURCE_ID IS NULL OR\n" + - " AE.SOURCE_ID = INV.INVOICE_ID)\n" + - " AND AE.ACCOUNTING_EVENT_ID = AEH.ACCOUNTING_EVENT_ID (+)\n" + - " AND IDSTR.INVOICE_DISTRIBUTION_ID = AEL.SOURCE_ID (+)\n" + - " AND IDSTR.DIST_CODE_COMBINATION_ID = AEL.CODE_COMBINATION_ID (+)\n" + - " AND AEL.SOURCE_TABLE (+) = 'AP_INVOICE_DISTRIBUTIONS'\n" + - " AND ( ( AEL.SOURCE_ID IS NULL) OR\n" + - " ( AEL.AE_LINE_ID = ( SELECT MIN(AEL1.AE_LINE_ID)\n" + - " FROM AP.AP_AE_LINES_ALL AEL1\n" + - " WHERE AEL1.AE_HEADER_ID = AEL.AE_HEADER_ID\n" + - " AND AEL1.SOURCE_TABLE = 'AP_INVOICE_DISTRIBUTIONS'\n" + - " AND AEL1.SOURCE_ID = AEL.SOURCE_ID\n" + - " AND AEL1.CODE_COMBINATION_ID = AEL.CODE_COMBINATION_ID)) )\n" + - " AND ((AEL.AE_HEADER_ID IS NULL OR AEH.AE_HEADER_ID IS NULL) OR\n" + - " AEL.AE_HEADER_ID = AEH.AE_HEADER_ID)\n" + - " AND (AEH.AE_HEADER_ID IS NULL OR\n" + - " AEH.SET_OF_BOOKS_ID = IDSTR.SET_OF_BOOKS_ID)\n" + - " AND AEL.GL_SL_LINK_ID = GLREF.GL_SL_LINK_ID (+)\n" + - " AND GLREF.GL_SL_LINK_TABLE (+) = 'APECL'\n" + - " AND GLREF.JE_HEADER_ID = GLLIN.JE_HEADER_ID (+)\n" + - " AND GLREF.JE_LINE_NUM = GLLIN.JE_LINE_NUM (+)\n" + - " AND GLLIN.JE_HEADER_ID = GLHDR.JE_HEADER_ID (+)\n" + - " AND GLHDR.JE_BATCH_ID = GLBTC.JE_BATCH_ID (+)\n" + - " AND IDSTR.TAX_CODE_ID = APTXC.TAX_ID (+)\n" + - " AND BOOK.SET_OF_BOOKS_ID = XMAP.SET_OF_BOOKS_ID\n" + - " AND BOOK.SET_OF_BOOKS_ID +0 = IDSTR.SET_OF_BOOKS_ID\n" + - " AND NVL (AE.ORG_ID(+), IDSTR.ORG_ID) = IDSTR.ORG_ID\n" + - " AND NVL (AEH.ORG_ID, XMAP.ORG_ID) =XMAP.ORG_ID\n" + - " AND NVL (AEL.ORG_ID, XMAP.ORG_ID) =XMAP.ORG_ID\n" + - " AND NVL (APTXC.ORG_ID, XMAP.ORG_ID) =XMAP.ORG_ID\n" + - " AND NVL (INV.ORG_ID, -9999) =XMAP.ORG_ID\n" + - " AND PROJ.PROJECT_ID(+) = IDSTR.PROJECT_ID\n" + - " AND TASK.TASK_ID(+) = IDSTR.TASK_ID\n" + - " AND INV.VENDOR_SITE_ID = VCODE.VENDOR_SITE_ID(+)\n" + - " AND NVL (VCODE.ORG_ID, XMAP.ORG_ID ) = XMAP.ORG_ID\n" + - " AND VEND.VENDOR_ID +0 = INV.VENDOR_ID\n" + - " AND IDSTR.ACCTS_PAY_CODE_COMBINATION_ID = APLiab.CODE_COMBINATION_ID(+)\n" + - " AND IDSTR.DIST_CODE_COMBINATION_ID = Distr.CODE_COMBINATION_ID\n" + - " AND IDSTR.PRICE_VAR_CODE_COMBINATION_ID = Price_Var.CODE_COMBINATION_ID(+)\n" + - " AND IDSTR.EXPENDITURE_ORGANIZATION_ID\n" + - "= Expenditure_Organization_Name.ORGANIZATION_ID(+)\n" + - " AND Expenditure_Organization_Name.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE"; - - assertTrue(sqlparser.parse() == 0); - TCreateViewSqlStatement createView = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - TViewAliasClause va = createView.getViewAliasClause(); - TObjectName o = va.getViewAliasItemList().getViewAliasItem(0).getAlias(); - assertTrue(o.toString().equalsIgnoreCase("\"A$ACCRUAL_POSTED_FLAG\"")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/customerTest/panayainc/testGroupByItemWithParenthesis.java b/src/test/java/gudusoft/gsqlparser/customerTest/panayainc/testGroupByItemWithParenthesis.java deleted file mode 100644 index 0dde108d..00000000 --- a/src/test/java/gudusoft/gsqlparser/customerTest/panayainc/testGroupByItemWithParenthesis.java +++ /dev/null @@ -1,49 +0,0 @@ -package gudusoft.gsqlparser.customerTest.panayainc; -/* - * Date: 12-2-8 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TExpressionList; -import gudusoft.gsqlparser.nodes.TGroupByItemList; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testGroupByItemWithParenthesis extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "select \n" + - " iim.item_no ITEM,\n" + - " sum(gmd.plan_qty-gmd.actual_qty) calc\n" + - " from\n" + - " gme_batch_header gbh,\n" + - " gme_material_details gmd,\n" + - " ic_item_mst_b iim,\n" + - " fm_rout_hdr frh\n" + - " where\n" + - " gbh.batch_type = 0\n" + - " group by (iim.item_no,iim.item_desc1,gbh.plant_code,frh.routing_no)"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TGroupByItemList groupByItemList = selectSqlStatement.getGroupByClause().getItems(); -// for(int i=0;i> \n" + - "\n" + - " NULL;\n" + - "\n" + - " END LOOP; \n" + - "\n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - - for(int i=0;i selectRels = Arrays.stream(dataFlow.getRelationships()) - .filter(r -> r.getEffectType().equals("select")) - .collect(Collectors.toList()); - - assertTrue(!selectRels.isEmpty()); - selectRels.stream().forEach(t->assertTrue(t.getProcedureId()!=null)); - - Schema schema = dataFlow.getDbobjs().getServers().get(0).getDatabases().get(0).getSchemas().get(1); - List procedureIds = schema.getProcedures().stream() - .map(TreeNode::getId) - .collect(Collectors.toList()); - - selectRels.stream().forEach(t->assertTrue(procedureIds.contains(t.getProcedureId()))); - } - - private DataFlowAnalyzer analyseSqlFiles(String path, EDbVendor vendor) throws IOException { - File sqlFiles = new File(path); - - Option option = new Option(); - // Transform will be enabled only if SQL Derivation is enabled - option.setTransform(false); - option.setShowConstantTable(false); - option.setVendor(vendor); - option.setSimpleOutput(true); - - // Enabling Text format avoids saveXML and parsing the dataflow as a text output only - option.setTextFormat(true); - - // Shows lineage for procedures that are top level selects with no specific target output - option.setSimpleShowTopSelectResultSet(true); - option.setSimpleShowVariable(true); - option.setSimpleShowCursor(true); - option.setTraceProcedure(true); - - return new DataFlowAnalyzer(sqlFiles, option); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/dataflowTest/testDataflow.java b/src/test/java/gudusoft/gsqlparser/dataflowTest/testDataflow.java deleted file mode 100644 index 60089314..00000000 --- a/src/test/java/gudusoft/gsqlparser/dataflowTest/testDataflow.java +++ /dev/null @@ -1,72 +0,0 @@ -package gudusoft.gsqlparser.dataflowTest; - -import java.io.File; -import java.io.FileFilter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import gudusoft.gsqlparser.commonTest.gspCommon; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TBaseType; -import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; -import gudusoft.gsqlparser.util.SQLUtil; -import junit.framework.TestCase; - -public class testDataflow extends TestCase { - public void test1() { - File privateDir = new File(gspCommon.BASE_SQL_DIR, "private/dataflow"); - File publicDir = new File(gspCommon.BASE_SQL_DIR, "public/dataflow"); - List sqlDirList = new ArrayList<>(); - if(privateDir.exists() && privateDir.listFiles()!=null){ - sqlDirList.addAll(Arrays.asList(privateDir.listFiles())); - } - if(publicDir.exists() && publicDir.listFiles()!=null){ - sqlDirList.addAll(Arrays.asList(publicDir.listFiles())); - } - - File[] sqlDirs = sqlDirList.toArray(new File[0]); - - for (int i = 0; i < sqlDirs.length; i++) { - File vendorDir = sqlDirs[i]; - if(vendorDir.getName().startsWith(".")) - continue; - EDbVendor vendor = EDbVendor.valueOf("dbv" + vendorDir.getName()); - File[] sqlfiles = vendorDir.listFiles(new FileFilter() { - public boolean accept(File pathname) { - return pathname.getName().endsWith(".sql"); - } - }); - - for (int j = 0; j < sqlfiles.length; j++) { - DataFlowAnalyzer analyzer = new DataFlowAnalyzer(sqlfiles[j], vendor, false); - analyzer.setShowConstantTable(true); - analyzer.getOption().setTraceProcedure(true); - String dataflow = analyzer.generateDataFlow(); - File dataflowFile = new File(sqlfiles[j].getParentFile(), - sqlfiles[j].getName().replace(".sql", ".xml")); - if (!dataflowFile.exists()) - { - try { - SQLUtil.writeToFile(dataflowFile, dataflow.trim()); - } catch (IOException e) { - e.printStackTrace(); - } - } - if(!dataflow.equals( SQLUtil.readFile(dataflowFile))){ - File dataflowFile1 = new File(sqlfiles[j].getParentFile(), - sqlfiles[j].getName().replace(".sql", "1.xml")); - if (!dataflowFile1.exists()) { - try { - SQLUtil.writeToFile(dataflowFile1, dataflow); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - assertTrue(TBaseType.compareStringBuilderToFile(new StringBuilder(dataflow), dataflowFile.getAbsolutePath())); - } - } - } -} diff --git a/src/test/java/gudusoft/gsqlparser/dataflowTest/testIAOX42.java b/src/test/java/gudusoft/gsqlparser/dataflowTest/testIAOX42.java deleted file mode 100644 index 86dffb2f..00000000 --- a/src/test/java/gudusoft/gsqlparser/dataflowTest/testIAOX42.java +++ /dev/null @@ -1,83 +0,0 @@ -package gudusoft.gsqlparser.dataflowTest; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -import gudusoft.gsqlparser.commonTest.gspCommon; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; -import gudusoft.gsqlparser.dlineage.dataflow.model.Option; -import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; -import gudusoft.gsqlparser.dlineage.dataflow.model.json.Relationship; -import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; -import gudusoft.gsqlparser.dlineage.util.XML2Model; -import junit.framework.TestCase; - -public class testIAOX42 extends TestCase{ - - public void testOracleDataFlow() throws IOException { - DataFlowAnalyzer analyzer = analyseSqlFiles(gspCommon.BASE_SQL_DIR_PRIVATE +"sqlscripts/IAOX42/solidatus-schema-minimalist.json"); - - // When we generate the data flow - analyzer.generateDataFlow(); - dataflow df = analyzer.getDataFlow(); - - try { - XML2Model.saveXML(df, new File("D:\\1.xml")); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - Dataflow dataFlow = DataFlowAnalyzer.getSqlflowJSONModel(EDbVendor.dbvoracle, df, false); - - List relationshipsWithRelevantSources = - Arrays.stream(dataFlow.getRelationships()) - .filter(r -> Arrays.stream(r.getSources()) - .filter(s -> !s.getParentName().equalsIgnoreCase("MIS_T_DAL_ACBAL")) - .collect(Collectors.toList()) - .isEmpty()) - .collect(Collectors.toList()); - - assertTrue(relationshipsWithRelevantSources.size() == 556); - - assertTargetAndSourceRelationshipExists(dataFlow, "MIS_T_AC_MSTR", "PRD_TYP_CODE", "MIS_T_DAL_ACBAL", "PRD_TYP_CODE"); - } - - private void assertTargetAndSourceRelationshipExists(Dataflow dataFlow, String targetTable, String targetColumn, - String expectedSourceTable, String expectedSourceColumn) { - Arrays.stream(dataFlow.getRelationships()) - .filter(r -> { - String targetTableName = r.getTarget().getParentName(); - String targetColumnName = r.getTarget().getColumn(); - String sourceTableName = r.getSources()[0].getParentName(); - String sourceColumnName = r.getSources()[0].getColumn(); - - return targetTableName.equals(targetTable) - && targetColumnName.equals(targetColumn) - && sourceTableName.equals(expectedSourceTable) - && sourceColumnName.equals(expectedSourceColumn); - }) - .findFirst() - .orElseThrow(() -> new AssertionError("Relationship not found for target column: " + targetColumn)); - } - - private DataFlowAnalyzer analyseSqlFiles(String path) throws IOException { - File sqlFile = new File(path); - - EDbVendor vendor = EDbVendor.dbvoracle; - DataFlowAnalyzer dataFlowAnalyzer = new DataFlowAnalyzer(sqlFile, vendor, true); - - Option option = new Option(); - option.setTransform(true); - option.setShowConstantTable(true); - option.setVendor(vendor); - option.setSimpleOutput(true); - option.setTextFormat(true); - - return dataFlowAnalyzer; - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/dataflowTest/testIAQE4Y.java b/src/test/java/gudusoft/gsqlparser/dataflowTest/testIAQE4Y.java deleted file mode 100644 index 25141292..00000000 --- a/src/test/java/gudusoft/gsqlparser/dataflowTest/testIAQE4Y.java +++ /dev/null @@ -1,63 +0,0 @@ -package gudusoft.gsqlparser.dataflowTest; - -import static org.junit.Assert.assertThat; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -import gudusoft.gsqlparser.commonTest.gspCommon; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; -import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; -import gudusoft.gsqlparser.dlineage.dataflow.model.json.Relationship; -import gudusoft.gsqlparser.dlineage.dataflow.model.json.Transform; -import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; -import junit.framework.TestCase; - -public class testIAQE4Y extends TestCase { - public void testOracleDataFlow() throws IOException { - DataFlowAnalyzer analyzer = analyseSqlFiles( - gspCommon.BASE_SQL_DIR_PRIVATE + "sqlscripts/IAQE4Y/sqlserverderivationsimpleupdate.sql"); - - // When we generate the data flow - analyzer.generateDataFlow(); - dataflow df = analyzer.getDataFlow(); - Dataflow dataFlow = DataFlowAnalyzer.getSqlflowJSONModel(EDbVendor.dbvmssql, df, false); - - List lineTotalRels = Arrays.stream(dataFlow.getRelationships()) - .filter(r -> r.getTarget().getColumn().equalsIgnoreCase("[LineTotal]")).collect(Collectors.toList()); - - Relationship lineTotalInsertRel = lineTotalRels.stream() - .filter(r -> r.getEffectType().equalsIgnoreCase("insert")).findFirst().get(); - - Relationship lineTotalUpdateRel = lineTotalRels.stream() - .filter(r -> r.getEffectType().equalsIgnoreCase("update")).findFirst().get(); - - assertNotNull(lineTotalInsertRel); - assertNotNull(lineTotalUpdateRel); - - Transform[] insertTransforms = lineTotalInsertRel.getSources()[0].getTransforms(); - assertTrue(insertTransforms.length == 1); - assertTrue(insertTransforms[0].getCode().equals("*")); - - Transform[] updateTransforms = Arrays.stream(lineTotalUpdateRel.getSources()) - .flatMap(s -> Arrays.stream(s.getTransforms())).toArray(Transform[]::new); - assertTrue(updateTransforms.length == 3); - assertTrue(Arrays.stream(updateTransforms) - .allMatch(t -> t.getCode().equalsIgnoreCase("[LineTotal] + [UnitPrice] + [UnitPriceDiscount]"))); - } - - private DataFlowAnalyzer analyseSqlFiles(String path) throws IOException { - File sqlFile = new File(path); - - EDbVendor vendor = EDbVendor.dbvmssql; - DataFlowAnalyzer dataFlowAnalyzer = new DataFlowAnalyzer(sqlFile, vendor, true); - - dataFlowAnalyzer.setTransform(true); - - return dataFlowAnalyzer; - } -} diff --git a/src/test/java/gudusoft/gsqlparser/dataflowTest/testRelationProcess.java b/src/test/java/gudusoft/gsqlparser/dataflowTest/testRelationProcess.java deleted file mode 100644 index 5c9f0a9d..00000000 --- a/src/test/java/gudusoft/gsqlparser/dataflowTest/testRelationProcess.java +++ /dev/null @@ -1,119 +0,0 @@ -package gudusoft.gsqlparser.dataflowTest; - -import gudusoft.gsqlparser.commonTest.gspCommon; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.dlineage.DataFlowAnalyzer; -import gudusoft.gsqlparser.dlineage.dataflow.model.Option; -import gudusoft.gsqlparser.dlineage.dataflow.model.json.Dataflow; -import gudusoft.gsqlparser.dlineage.dataflow.model.json.Relationship; -import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow; -import gudusoft.gsqlparser.dlineage.metadata.Schema; -import junit.framework.TestCase; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -public class testRelationProcess extends TestCase { - - public void testPackageIsParsedCorrectly() throws IOException { - // Given an Oracle SQL metadata with a package containing a procedure emp_dump_by_location - EDbVendor vendor = EDbVendor.dbvoracle; - - String sqlfile = gspCommon.BASE_SQL_DIR_PRIVATE + "dlineage/oracle/hrMetadataJson.json"; - // When the dataflow is generated - DataFlowAnalyzer analyzer = analyseSqlFiles(sqlfile, vendor); - analyzer.generateDataFlow(); - dataflow df = analyzer.getDataFlow(); - Dataflow dataFlow = DataFlowAnalyzer.getSqlflowJSONModel(vendor, df, false); - - Relationship[] insertRels = - Arrays.stream(dataFlow.getRelationships()).filter(r -> r.getEffectType().equals("insert")).collect(Collectors.toList()).toArray(new Relationship[0]); - - Relationship[] updateRels = - Arrays.stream(dataFlow.getRelationships()).filter(r -> r.getEffectType().equals("update")).collect(Collectors.toList()).toArray(new Relationship[0]); - - // Then we receive 11 insert relationships linked with the insert process of the emp_dump_by_location procedure - Schema schema = dataFlow.getDbobjs().getServers().get(0).getDatabases().get(0).getSchemas().get(0); - testEmpDumpByLocation(schema, insertRels); - testRaiseSalary(schema, updateRels); - } - - private void testRaiseSalary(Schema schema, Relationship[] updateRels) { - gudusoft.gsqlparser.dlineage.metadata.Package empAdminPackage = schema.getPackages().get(0); - List empAdminProcs = empAdminPackage.getProcedures(); - // Procedure called emp_dump_by_location - gudusoft.gsqlparser.dlineage.metadata.Procedure empDumpByLocationProc = - empAdminProcs.stream().filter(p -> p.getName().equals("raise_salary")).findFirst().get(); - - List processes = schema.getProcesses(); - List empDumpByLocationProcProcess = - processes.stream().filter(p -> p.getProcedureId() != null && p.getProcedureId().equals(empDumpByLocationProc.getId())).collect(Collectors.toList()); - // emp_dump_by_location Insert-1 process - gudusoft.gsqlparser.dlineage.metadata.Process updateProcess = - empDumpByLocationProcProcess.stream().filter(p -> p.getName().contains("Update")).findFirst().get(); - - Relationship[] updateProcessRels = - Arrays.stream(updateRels).filter(r -> r.getProcessId().equals(updateProcess.getId())).collect(Collectors.toList()).toArray(new Relationship[0]); - - assertTrue(updateProcessRels.length == 1); - - assertRelationshipSourceAndTargetExist(updateProcessRels, "SALARY", "SALARY"); - } - - private void testEmpDumpByLocation(Schema schema, Relationship[] insertRels) { - gudusoft.gsqlparser.dlineage.metadata.Package empAdminPackage = schema.getPackages().get(0); - List empAdminProcs = empAdminPackage.getProcedures(); - // Procedure called emp_dump_by_location - gudusoft.gsqlparser.dlineage.metadata.Procedure empDumpByLocationProc = - empAdminProcs.stream().filter(p -> p.getName().equals("emp_dump_by_location")).findFirst().get(); - - List processes = schema.getProcesses(); - List empDumpByLocationProcProcess = - processes.stream().filter(p -> p.getProcedureId() != null && p.getProcedureId().equals(empDumpByLocationProc.getId())).collect(Collectors.toList()); - // emp_dump_by_location Insert-1 process - gudusoft.gsqlparser.dlineage.metadata.Process insertProcess = - empDumpByLocationProcProcess.stream().filter(p -> p.getName().contains("Insert")).findFirst().get(); - - Relationship[] insertProcessRels = - Arrays.stream(insertRels).filter(r -> r.getProcessId().equals(insertProcess.getId())).collect(Collectors.toList()).toArray(new Relationship[0]); - - assertTrue(insertProcessRels.length == 11); - - assertRelationshipSourceAndTargetExist(insertProcessRels, "EMPLOYEE_ID", "EMPLOYEE_ID"); - assertRelationshipSourceAndTargetExist(insertProcessRels, "FIRST_NAME", "FIRST_NAME"); - assertRelationshipSourceAndTargetExist(insertProcessRels, "LAST_NAME", "LAST_NAME"); - assertRelationshipSourceAndTargetExist(insertProcessRels, "EMAIL", "EMAIL"); - assertRelationshipSourceAndTargetExist(insertProcessRels, "PHONE_NUMBER", "PHONE_NUMBER"); - assertRelationshipSourceAndTargetExist(insertProcessRels, "HIRE_DATE", "HIRE_DATE"); - assertRelationshipSourceAndTargetExist(insertProcessRels, "JOB_ID", "JOB_ID"); - assertRelationshipSourceAndTargetExist(insertProcessRels, "SALARY", "SALARY"); - assertRelationshipSourceAndTargetExist(insertProcessRels, "COMMISSION_PCT", "COMMISSION_PCT"); - assertRelationshipSourceAndTargetExist(insertProcessRels, "MANAGER_ID", "MANAGER_ID"); - assertRelationshipSourceAndTargetExist(insertProcessRels, "DEPARTMENT_ID", "DEPARTMENT_ID"); - } - - void assertRelationshipSourceAndTargetExist(Relationship[] relationships, String sourceColumnName, - String targetColumnName) { - assertTrue(Arrays.stream(relationships).anyMatch(r -> r.getTarget().getColumn().equals(targetColumnName) && Arrays.stream(r.getSources()).anyMatch(s -> s.getColumn().equals(sourceColumnName)))); - } - - - private DataFlowAnalyzer analyseSqlFiles(String path, EDbVendor vendor) throws IOException { - List file = Arrays.asList(new File(path)); - File[] files = file.toArray(new File[0]); - - - Option option = new Option(); - option.setTransform(false); - option.setShowConstantTable(true); - option.setVendor(vendor); - option.setSimpleOutput(true); - - option.setTextFormat(true); - - return new DataFlowAnalyzer(files, option); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/daxTest/testEvaluate.java b/src/test/java/gudusoft/gsqlparser/daxTest/testEvaluate.java deleted file mode 100644 index ebb838c3..00000000 --- a/src/test/java/gudusoft/gsqlparser/daxTest/testEvaluate.java +++ /dev/null @@ -1,41 +0,0 @@ -package gudusoft.gsqlparser.daxTest; - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.stmt.dax.TDaxEvaluateStmt; -import junit.framework.TestCase; - -public class testEvaluate extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdax); - - sqlparser.sqltext = "EVALUATE\n" + - "CALCULATETABLE (\n" + - " ADDCOLUMNS (\n" + - " VAR\n" + - " OnePercentOfSales = [SalesAmount] * 0.01\n" + - " RETURN\n" + - " FILTER (\n" + - " VALUES ( Product[Product Name] ),\n" + - " [SalesAmount] >= OnePercentOfSales\n" + - " ),\n" + - " \"SalesOfProduct\", [SalesAmount]\n" + - " ),\n" + - " Product[Color] = \"Black\"\n" + - ")"; - - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstdaxevaluate); - TDaxEvaluateStmt evaluateStmt = (TDaxEvaluateStmt)sqlparser.sqlstatements.get(0); - TExpression tableExpr = evaluateStmt.getTableExpr(); - assertTrue(tableExpr.getExpressionType() == EExpressionType.function_t); - TFunctionCall calculateTable = tableExpr.getFunctionCall(); - assertTrue(calculateTable.getFunctionType() == EFunctionType.calculatetable_t); - assertTrue(calculateTable.getFunctionName().toString().equalsIgnoreCase("CALCULATETABLE")); - assertTrue(calculateTable.getArgs().size() == 2); - - } - } diff --git a/src/test/java/gudusoft/gsqlparser/db2Tesst/testBlock.java b/src/test/java/gudusoft/gsqlparser/db2Tesst/testBlock.java deleted file mode 100644 index 0790ed44..00000000 --- a/src/test/java/gudusoft/gsqlparser/db2Tesst/testBlock.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.db2Tesst; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCommonBlock; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.ESqlStatementType.sstplsql_nullstmt; - -public class testBlock extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - - sqlparser.sqltext = "BEGIN\n" + - " null;\n" + - "END;"; - - assertTrue(sqlparser.parse() == 0); - TCommonBlock block = (TCommonBlock)sqlparser.getSqlstatements().get(0); - assertTrue(block.getBodyStatements().size() == 1); - assertTrue(block.getBodyStatements().get(0).sqlstatementtype == sstplsql_nullstmt); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/db2Tesst/testCall.java b/src/test/java/gudusoft/gsqlparser/db2Tesst/testCall.java deleted file mode 100644 index 1e213d59..00000000 --- a/src/test/java/gudusoft/gsqlparser/db2Tesst/testCall.java +++ /dev/null @@ -1,21 +0,0 @@ -package gudusoft.gsqlparser.db2Tesst; -/* - * Date: 12-6-11 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testCall extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - - sqlparser.sqltext = "CALL test2()"; - - // System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateDatabase.java b/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateDatabase.java deleted file mode 100644 index 1b33fc03..00000000 --- a/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateDatabase.java +++ /dev/null @@ -1,25 +0,0 @@ -package gudusoft.gsqlparser.db2Tesst; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateDatabaseSqlStatement; -import junit.framework.TestCase; - - -public class testCreateDatabase extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - - sqlparser.sqltext = "CREATE DATABASE MYDB\n" + - " BUFFERPOOL BP1\n" + - " INDEXBP BP2\n" + - " CCSID EBCDIC\n" + - " STOGROUP B0SG0100;"; - - assertTrue(sqlparser.parse() == 0); - - TCreateDatabaseSqlStatement db = (TCreateDatabaseSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(db.getDatabaseName().toString().equalsIgnoreCase("MYDB")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateProcedure.java deleted file mode 100644 index d69d1d4b..00000000 --- a/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateProcedure.java +++ /dev/null @@ -1,48 +0,0 @@ -package gudusoft.gsqlparser.db2Tesst; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import junit.framework.TestCase; - - -public class testCreateProcedure extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - - sqlparser.sqltext = "CREATE PROCEDURE CREATE_T_EMP()\n" + - " LANGUAGE SQL\n" + - "BEGIN\n" + - "DECLARE SQLCODE INT;\n" + - "DECLARE l_sqlcode INT DEFAULT 0;\n" + - "\n" + - " DECLARE CONTINUE HANDLER FOR NOT FOUND\n" + - " SET l_sqlcode = SQLCODE; \n" + - "\n" + - " INSERT INTO PROJECT (PROJNO, PROJNAME, DEPTNO, RESPEMP, PRSTDATE) \n" + - " VALUES('HG0023', 'NEW NETWORK', 'E11', '200280', CURRENT DATE); \n" + - "END"; - - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt procedure = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - // System.out.print(procedure.getBodyStatements().size()); - assertTrue(procedure.getDeclareStatements().size() == 3); - assertTrue(procedure.getDeclareStatements().get(2).toString().equalsIgnoreCase("DECLARE CONTINUE HANDLER FOR NOT FOUND\n" + - " SET l_sqlcode = SQLCODE")); - assertTrue(procedure.getBodyStatements().size() == 1); - - assertTrue(procedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insert = (TInsertSqlStatement)procedure.getBodyStatements().get(0); - // System.out.print(insert.toString()); - // assertTrue(insert.toString() != null); - assertTrue(insert.toString().equalsIgnoreCase("INSERT INTO PROJECT (PROJNO, PROJNAME, DEPTNO, RESPEMP, PRSTDATE) \n" + - " VALUES('HG0023', 'NEW NETWORK', 'E11', '200280', CURRENT DATE)")); - - - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateTablespace.java b/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateTablespace.java deleted file mode 100644 index 99edacd1..00000000 --- a/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateTablespace.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.db2Tesst; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTablespaceStmt; -import junit.framework.TestCase; - -public class testCreateTablespace extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - - sqlparser.sqltext = "CREATE LARGE TABLESPACE T"; - - assertTrue(sqlparser.parse() == 0); - - TCreateTablespaceStmt tablespaceStmt = (TCreateTablespaceStmt)sqlparser.sqlstatements.get(0); - assertTrue(tablespaceStmt.getTablespaceName().toString().equalsIgnoreCase("T")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateVariable.java b/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateVariable.java deleted file mode 100644 index c0cc2c2c..00000000 --- a/src/test/java/gudusoft/gsqlparser/db2Tesst/testCreateVariable.java +++ /dev/null @@ -1,23 +0,0 @@ -package gudusoft.gsqlparser.db2Tesst; - - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.db2.TCreateVariableStmt; -import junit.framework.TestCase; - -public class testCreateVariable extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - - sqlparser.sqltext = "CREATE variable SV_OP_USR_PROFILE_NAME varchar2(256);"; - - assertTrue(sqlparser.parse() == 0); - - TCreateVariableStmt createVariableStmt = (TCreateVariableStmt)sqlparser.sqlstatements.get(0); - assertTrue(createVariableStmt.getVariableName().toString().equalsIgnoreCase("SV_OP_USR_PROFILE_NAME")); - assertTrue(createVariableStmt.getVariableDatatype().getDataType() == EDataType.varchar2_t); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/db2Tesst/testIdentifier.java b/src/test/java/gudusoft/gsqlparser/db2Tesst/testIdentifier.java deleted file mode 100644 index d147ea53..00000000 --- a/src/test/java/gudusoft/gsqlparser/db2Tesst/testIdentifier.java +++ /dev/null @@ -1,12 +0,0 @@ -package gudusoft.gsqlparser.db2Tesst; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.sqlenv.ESQLDataObjectType; -import gudusoft.gsqlparser.sqlenv.TSQLEnv; -import junit.framework.TestCase; - -public class testIdentifier extends TestCase { - public void testQuotedFunction(){ - assertTrue(TSQLEnv.compareIdentifier(EDbVendor.dbvdb2, ESQLDataObjectType.dotFunction,"F_GetRFECustomerName","\"F_GetRFECustomerName\"")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/db2Tesst/testLabeledDuration.java b/src/test/java/gudusoft/gsqlparser/db2Tesst/testLabeledDuration.java deleted file mode 100644 index 09cffc64..00000000 --- a/src/test/java/gudusoft/gsqlparser/db2Tesst/testLabeledDuration.java +++ /dev/null @@ -1,32 +0,0 @@ -package gudusoft.gsqlparser.db2Tesst; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testLabeledDuration extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - sqlparser.sqltext = "SELECT 5 SECONDS FROM TABLE_A"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.toString().contentEquals("5 SECONDS")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - sqlparser.sqltext = "SELECT COLUMN_A, CURRENT TIMESTAMP + 5 SECONDS AS COLUMN_B FROM TABLE_A"; - assertTrue(sqlparser.parse() == 0); -// TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); -// TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); -// assertTrue(expr.toString().contentEquals("5 SECONDS")); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/db2Tesst/testParameter.java b/src/test/java/gudusoft/gsqlparser/db2Tesst/testParameter.java deleted file mode 100644 index e8cca7c7..00000000 --- a/src/test/java/gudusoft/gsqlparser/db2Tesst/testParameter.java +++ /dev/null @@ -1,26 +0,0 @@ -package gudusoft.gsqlparser.db2Tesst; -/* - * Date: 12-6-11 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testParameter extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - - sqlparser.sqltext = "CREATE PROCEDURE \"SA\".\"TEST2\"(parm1 INT DEFAULT -1, parm2 INT DEFAULT -3)\n" + - "BEGIN\n" + - "\tselect a from b;\n" + - "END"; - - // System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/db2Tesst/testWithCheckOption.java b/src/test/java/gudusoft/gsqlparser/db2Tesst/testWithCheckOption.java deleted file mode 100644 index 2f30f429..00000000 --- a/src/test/java/gudusoft/gsqlparser/db2Tesst/testWithCheckOption.java +++ /dev/null @@ -1,28 +0,0 @@ -package gudusoft.gsqlparser.db2Tesst; -/* - * Date: 11-6-7 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ERestrictionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TRestrictionClause; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import junit.framework.TestCase; - -public class testWithCheckOption extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - sqlparser.sqltext = "CREATE VIEW V2 AS SELECT COL1 FROM V1 WITH check option"; - assertTrue(sqlparser.parse() == 0); - TCreateViewSqlStatement createView = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - TRestrictionClause restrictionClause = createView.getRestrictionClause(); - assertTrue(restrictionClause.getRestrictionType() == ERestrictionType.withCheckOption);// TRestrictionClause.with_check_option); - //System.out.println(restrictionClause.toString()); - //TSelectSqlStatement select = createView.getSubquery(); - //System.out.println(select.toString()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testPLSQLExecImmediateByVisitor.java b/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testPLSQLExecImmediateByVisitor.java deleted file mode 100644 index 332eeafc..00000000 --- a/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testPLSQLExecImmediateByVisitor.java +++ /dev/null @@ -1,282 +0,0 @@ -package gudusoft.gsqlparser.dynamicsqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.TStatementList; -import gudusoft.gsqlparser.nodes.TParseTreeVisitor; -import gudusoft.gsqlparser.stmt.TExecImmeStmt; -import junit.framework.TestCase; - -public class testPLSQLExecImmediateByVisitor extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "DECLARE\n" + - " CURSOR C_PERIODO IS\n" + - " SELECT DATE_KEY,DATE_VALUE\n" + - " FROM DWO.DW_C_DATE\n" + - " WHERE TO_DATE(DATE_KEY,'YYYYMMDD') >= TO_DATE('','YYYYMMDD') AND TO_DATE(DATE_KEY,'YYYYMMDD') <= TO_DATE('','YYYYMMDD')\n" + - " ORDER BY DATE_KEY;\n" + - " V_PROCESSDATE DATE;\n" + - " V_PROCESSDATE_S DATE;\n" + - " V_THREAD VARCHAR2(8);\n" + - " V_THREAD_M VARCHAR2(6);\n" + - " FECHA VARCHAR2(16);\n" + - "BEGIN\n" + - " ----------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'P_VAR_SCHEMA_TEMP: USRTEMP','PROCESO INICIADO');\n" + - " ----------------------------------------------------------------\n" + - "\n" + - " FOR I IN C_PERIODO LOOP\n" + - " V_THREAD :=TO_CHAR(I.DATE_VALUE,'YYYYMMDD');\n" + - " V_THREAD_M :=TO_CHAR(I.DATE_VALUE,'YYYYMM');\n" + - "\n" + - " ----------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'P_VAR_SCHEMA_TEMP: USRTEMP','PROCESO INICIADO PARA EL PERIODO '||V_THREAD);\n" + - " ----------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'P_VAR_SCHEMA_TEMP: USRTEMP','INICIANDO DROPEO DE TEMPORALES DE AMBITO LOCAL');\n" + - " ----------------------------------------------------------------\n" + - "\n" + - " BEGIN\n" + - " DM.PKG_MGR_DWO_UTIL.PRC_DROP_TABLE(X_DES_TABLA => 'USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_'||V_THREAD);\n" + - " DM.PKG_MGR_DWO_UTIL.PRC_DROP_TABLE(X_DES_TABLA => 'USRTEMP.T$_DW_T_SALES_POST_DEP_T_'||V_THREAD);\n" + - " END;\n" + - " \n" + - " ----------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'P_VAR_SCHEMA_TEMP: USRTEMP','FINALIZANDO DROPEO DE TEMPORALES DE AMBITO LOCAL');\n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'','Iniciando creacion de la tabla temporal USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_'||V_THREAD);\n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - " \n" + - " EXECUTE IMMEDIATE 'CREATE TABLE USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_'||V_THREAD||' TABLESPACE \n" + - "\tAS\n" + - " SELECT * FROM DWA.AYF_F_D_DEPART_TRAF_POSTPAGO\n" + - " WHERE 1=0'; \n" + - " \n" + - " V_PROCESSDATE := I.DATE_VALUE;\n" + - " V_PROCESSDATE_S := ADD_MONTHS(TO_DATE(TO_CHAR(I.DATE_VALUE,'YYYYMM'),'YYYYMM'),-1)-1;\n" + - " \n" + - " WHILE V_PROCESSDATE>=V_PROCESSDATE_S LOOP \n" + - " \n" + - " BEGIN\n" + - " DM.PKG_MGR_DWO_UTIL.PRC_DROP_TABLE(X_DES_TABLA => 'USRTEMP.T$_DW_M_MTH_LT_POST_T1_'||TO_CHAR(V_PROCESSDATE,'YYYYMMDD')||'_'||V_THREAD);\n" + - " DM.PKG_MGR_DWO_UTIL.PRC_DROP_TABLE(X_DES_TABLA => 'USRTEMP.T$_DW_M_MTH_LT_POST_T2_'||TO_CHAR(V_PROCESSDATE,'YYYYMMDD')||'_'||V_THREAD);\n" + - " END; \n" + - "\n" + - "\t\t\n" + - " EXECUTE IMMEDIATE 'CREATE TABLE USRTEMP.T$_DW_M_MTH_LT_POST_T1_'||TO_CHAR(V_PROCESSDATE,'YYYYMMDD')||'_'||V_THREAD||q'[ AS \n" + - "\t\tSELECT /*+ PARALLEL (20) */\n" + - "\t\tU.MSISDN,\n" + - "\t\tU.LAC_SC,\n" + - "\t\tU.CELL_SC,\n" + - "\t\tNVL(F1.DEPARTAMENTO,NVL(F2.DEPARTAMENTO,F3.DEPARTAMENTO)) DEPARTAMENTO_DES,\n" + - "\t\tU.LAST_TRAFFIC_DATE,\n" + - "\t\tROW_NUMBER() OVER(PARTITION BY U.MSISDN ORDER BY U.LAST_TRAFFIC_DATE DESC) R\n" + - "\t\tFROM DWA.DW_M_MONTH_LASTTRAFFIC PARTITION (P_]'||TO_CHAR(V_PROCESSDATE,'YYYYMMDD')||q'[) U\n" + - "\t\tLEFT JOIN USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_]'||V_THREAD||q'[ D ON U.MSISDN=D.MSISDN\n" + - "\t\tLEFT JOIN DM.CDR_CELDAS_RED F1 ON TRIM(F1.LAC)=TRIM(U.LAC_SC) AND TRIM(F1.CELL_ID)=TRIM(U.CELL_SC) AND UPPER(F1.PROVINCIA)='CALLAO'\n" + - " LEFT JOIN DM.C_LAC_RANGO F2 ON TRIM(F2.INICIO)<=TRIM(U.LAC_SC) AND TRIM(F2.FIN)>=TRIM(U.LAC_SC) AND LENGTH(U.LAC_SC)=4\n" + - " LEFT JOIN DM.CDR_CELDAS_RED F3 ON TRIM(F3.LAC)=TRIM(U.LAC_SC) AND TRIM(F3.CELL_ID)=TRIM(U.CELL_SC) AND UPPER(F3.PROVINCIA)<>'CALLAO' AND LENGTH(U.LAC_SC)=5\n" + - " WHERE\n" + - "\t\tNVL(F1.DEPARTAMENTO,NVL(F2.DEPARTAMENTO,F3.DEPARTAMENTO)) IS NOT NULL AND\n" + - "\t\t(\n" + - "\t\t\t(U.ROUTING_CATEGORY_SC IN ('18', '19', '0400', '0200', '0800')) AND\n" + - "\t\t\tD.MSISDN IS NULL\n" + - " )\n" + - "\t\t]';\n" + - " \n" + - " EXECUTE IMMEDIATE 'CREATE TABLE USRTEMP.T$_DW_M_MTH_LT_POST_T2_'||TO_CHAR(V_PROCESSDATE,'YYYYMMDD')||'_'||V_THREAD||q'[ AS\n" + - " SELECT MSISDN,LAC_SC,CELL_SC,DEPARTAMENTO_DES,TO_CHAR(TRUNC(LAST_TRAFFIC_DATE),'YYYYMMDD') ORIGEN_DES\n" + - " FROM\n" + - " ( \n" + - " SELECT /*+ PARALLEL (20) */\n" + - " U.MSISDN,U.LAC_SC,U.CELL_SC,U.DEPARTAMENTO_DES,U.LAST_TRAFFIC_DATE,ROW_NUMBER() OVER(PARTITION BY U.MSISDN ORDER BY U.LAST_TRAFFIC_DATE DESC) R\n" + - "\t\t FROM USRTEMP.T$_DW_M_MTH_LT_POST_T1_]'||TO_CHAR(V_PROCESSDATE,'YYYYMMDD')||'_'||V_THREAD||q'[ U\n" + - " )\n" + - " WHERE R=1\n" + - " ]';\n" + - " \n" + - " EXECUTE IMMEDIATE 'INSERT INTO USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_'||V_THREAD||q'[\n" + - " SELECT\n" + - " TO_DATE(']'||V_THREAD||q'[','YYYYMMDD') FCH_REGION,\n" + - " MSISDN,\n" + - " DEPARTAMENTO_DES,\n" + - " ORIGEN_DES,\n" + - " SYSDATE,\n" + - " USER\n" + - " FROM\n" + - " USRTEMP.T$_DW_M_MTH_LT_POST_T2_]'||TO_CHAR(V_PROCESSDATE,'YYYYMMDD')||'_'||V_THREAD||q'[ U\n" + - " ]';\n" + - " COMMIT;\n" + - " \n" + - " BEGIN\n" + - " DM.PKG_MGR_DWO_UTIL.PRC_DROP_TABLE(X_DES_TABLA => 'USRTEMP.T$_DW_M_MTH_LT_POST_T1_'||TO_CHAR(V_PROCESSDATE,'YYYYMMDD')||'_'||V_THREAD);\n" + - " DM.PKG_MGR_DWO_UTIL.PRC_DROP_TABLE(X_DES_TABLA => 'USRTEMP.T$_DW_M_MTH_LT_POST_T2_'||TO_CHAR(V_PROCESSDATE,'YYYYMMDD')||'_'||V_THREAD);\n" + - " END; \n" + - " \n" + - " V_PROCESSDATE := TO_DATE(TO_CHAR(V_PROCESSDATE,'YYYYMM'),'YYYYMM')-1;\n" + - "\n" + - " END LOOP;\n" + - " \n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'','Finalizando creacion de la tabla temporal USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_'||V_THREAD);\n" + - " ----------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'','Iniciando creacion de la tabla temporal USRTEMP.T$_DW_T_SALES_POST_DEP_T_'||V_THREAD);\n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - " EXECUTE IMMEDIATE 'CREATE TABLE USRTEMP.T$_DW_T_SALES_POST_DEP_T_'||V_THREAD||q'[ AS\n" + - " SELECT /*+ PARALLEL (20) */\n" + - " PRODUCT_NUMBER MSISDN,\n" + - " DECODE(PDV_DEPARTMENT_DESC,'CALLAO','LIMA',PDV_DEPARTMENT_DESC) DEPARTAMENTO,\n" + - " ROW_NUMBER() OVER (PARTITION BY U.PRODUCT_NUMBER ORDER BY U.PDV_DEPARTMENT_DESC DESC) R\n" + - " FROM DWA.DW_T_SALES PARTITION (P_]'||SUBSTR(V_THREAD,1,6)||q'[) u\n" + - " LEFT JOIN USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_]'||V_THREAD||q'[ D ON U.PRODUCT_NUMBER=D.MSISDN\n" + - " WHERE U.SALES_REASON_DESC='VENTA NORMAL/ALTA'\n" + - " AND U.PDV_DEPARTMENT_DESC IS NOT NULL\n" + - " AND U.PRODUCT_NUMBER LIKE '519%'\n" + - " AND LENGTH(U.PRODUCT_NUMBER)=11\n" + - " AND TRUNC(U.SALE_DATE)<=TO_DATE(]'||V_THREAD||q'[,'YYYYMMDD')\n" + - " AND D.MSISDN IS NULL\n" + - " ]'; \n" + - " ----------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'','Finalizando creacion de la tabla temporal USRTEMP.T$_DW_T_SALES_POST_DEP_T_'||V_THREAD);\n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'','Iniciando Insercion de informacion en la tabla USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_'||V_THREAD);\n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - " EXECUTE IMMEDIATE 'INSERT /*+ APPEND*/ INTO USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_'||V_THREAD||q'[\n" + - " SELECT\n" + - " TO_DATE(']'||V_THREAD||q'[','YYYYMMDD') FCH_REGION,\n" + - " U.MSISDN,\n" + - " U.DEPARTAMENTO,\n" + - " 'DW_T_SALES',\n" + - " SYSDATE,\n" + - " USER\n" + - " FROM\n" + - " USRTEMP.T$_DW_T_SALES_POST_DEP_T_]'||V_THREAD||q'[ U\n" + - " WHERE R=1\n" + - " ]';\n" + - " COMMIT;\n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'','Finzalizando insercion de informacion en la tabla USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_'||V_THREAD);\n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - " \n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'','Iniciando Insercion de informacion en la tabla DWA.AYF_F_D_DEPART_TRAF_POSTPAGO');\n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - "\t\n" + - " EXECUTE IMMEDIATE 'ALTER TABLE DWA.AYF_F_D_DEPART_TRAF_POSTPAGO TRUNCATE PARTITION P_'||V_THREAD||' '; \n" + - "\t\n" + - " EXECUTE IMMEDIATE 'INSERT /*+ APPEND*/ INTO DWA.AYF_F_D_DEPART_TRAF_POSTPAGO \n" + - "\tSELECT \n" + - "\tFCH_REGION,\n" + - "\tMSISDN,\n" + - "\tDEPARTAMENTO_DES,\n" + - "\tORIGEN_DES,\n" + - "\tCREATION_DATE,\n" + - "\tCREATION_USER\n" + - "\tFROM USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_'||V_THREAD||'';\n" + - "\tCOMMIT;\n" + - "\t\n" + - " EXECUTE IMMEDIATE 'ALTER INDEX DWA.IDX1_AYF_F_D_DEPART_TRAF_POSTPAGO REBUILD PARTITION P_'||V_THREAD;\n" + - " \n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'','Finzalizando insercion de informacion en la tabla DWA.AYF_F_D_DEPART_TRAF_POSTPAGO');\n" + - " -------------------------------------------------------------------------------------------------------------------------------------------\n" + - " \n" + - " ----------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'P_VAR_SCHEMA_TEMP: USRTEMP','INICIANDO DROPEO DE TEMPORALES DE AMBITO LOCAL');\n" + - " ----------------------------------------------------------------\n" + - "\n" + - " BEGIN\n" + - " DM.PKG_MGR_DWO_UTIL.PRC_DROP_TABLE(X_DES_TABLA => 'USRTEMP.T$_AYF_F_D_DEP_TRAF_POST_'||V_THREAD);\n" + - " DM.PKG_MGR_DWO_UTIL.PRC_DROP_TABLE(X_DES_TABLA => 'USRTEMP.T$_DW_T_SALES_POST_DEP_T_'||V_THREAD);\n" + - " END;\n" + - " ----------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'P_VAR_SCHEMA_TEMP: USRTEMP','FINALIZANDO DROPEO DE TEMPORALES DE AMBITO LOCAL');\n" + - " ----------------------------------------------------------------\n" + - " ----------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'P_VAR_SCHEMA_TEMP: USRTEMP','PROCESO FINALIZADO PARA EL PERIODO '||V_THREAD);\n" + - " ----------------------------------------------------------------\n" + - " \n" + - " END LOOP; \n" + - " ----------------------------------------------------------------\n" + - " DWO.PKG_FRAME_IDEAS_REPORT.SP_SET_PROCESS_STEP_LOG(999,'P_VAR_SCHEMA_TEMP: USRTEMP','PROCESO FINALIZADO CORRECTAMENTE');\n" + - " ----------------------------------------------------------------\n" + - " \n" + - "END;\n" + - "/"; - - assertTrue(sqlparser.parse() == 0); - - nodeVisitor nodeVisitor = new nodeVisitor(); - // System.out.println(sqlparser.sqlstatements.get(0).getClass().getName()); - sqlparser.sqlstatements.get(0).acceptChildren(nodeVisitor); - //System.out.println(sqlparser.sqltext); - assertTrue(nodeVisitor.stmtCount == 9); - - } - - public void test2() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = " CREATE OR REPLACE FUNCTION fn_test(p1 IN NUMBER, p2 IN DATE, p3 IN VARCHAR2)\n" + - " RETURN VARCHAR2\n" + - " IS\n" + - " \n" + - " s_query_stmt VARCHAR2(1000 CHAR);\n" + - " r1 VARCHAR2(100 CHAR);\n" + - " r2 VARCHAR2(100 CHAR);\n" + - " r3 VARCHAR2(100 CHAR);\n" + - " \n" + - " BEGIN\n" + - " \n" + - " s_query_stmt := 'SELECT\n" + - " c1, c2, c3\n" + - " FROM t\n" + - " WHERE c8 = :x --Note: p1 value should go here!\n" + - " AND c9 = :y --Note: p2 value should go here!\n" + - " AND c1 = ( SELECT cx FROM t2 WHERE cy = :x AND cz = :y )'; \n" + - " \n" + - " EXECUTE IMMEDIATE s_query_stmt INTO r1, r2, r3 USING p1, p2, p1, p2;\n" + - " return 'x';\n" + - " \n" + - " END;"; - - assertTrue(sqlparser.parse() == 0); - - getExecSQLTextVisitor nodeVisitor = new getExecSQLTextVisitor(); - sqlparser.sqlstatements.get(0).acceptChildren(nodeVisitor); - assertTrue(nodeVisitor.sqlText.equalsIgnoreCase("SELECT\n" + - " c1, c2, c3\n" + - " FROM t\n" + - " WHERE c8 = :x --Note: p1 value should go here!\n" + - " AND c9 = :y --Note: p2 value should go here!\n" + - " AND c1 = ( SELECT cx FROM t2 WHERE cy = :x AND cz = :y )")); - - } -} - -class nodeVisitor extends TParseTreeVisitor { - public int stmtCount = 0; - - public void preVisit(TExecImmeStmt node) { - //System.out.println("\n"+(++stmtCount)+" Statement:\t"+node.sqlstatementtype); - //System.out.println(node.getDynamicSQL()); - - TStatementList statements = node.getDynamicStatements(); - if (statements != null){ - stmtCount++; - //System.out.println(statements.get(0).sqlstatementtype); - }else{ - //System.out.println("Not parsed\n"+node.getDynamicSQL()); - } - } -} - -class getExecSQLTextVisitor extends TParseTreeVisitor { - public String sqlText; - - public void preVisit(TExecImmeStmt node) { - sqlText = node.getDynamicSQL(); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerCreateProcedureExec.java b/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerCreateProcedureExec.java deleted file mode 100644 index b3acd879..00000000 --- a/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerCreateProcedureExec.java +++ /dev/null @@ -1,116 +0,0 @@ -package gudusoft.gsqlparser.dynamicsqlTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExecParameter; -import gudusoft.gsqlparser.stmt.mssql.*; -import junit.framework.TestCase; - -public class testSQLServerCreateProcedureExec extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE PROC usp_query (\n" + - " @table NVARCHAR(128)\n" + - ")\n" + - "AS\n" + - "BEGIN\n" + - "\n" + - " DECLARE @sql NVARCHAR(MAX);\n" + - " -- construct SQL\n" + - " SET @sql = N'SELECT * FROM ' + @table;\n" + - " -- execute the SQL\n" + - " EXEC sp_executesql @sql;\n" + - " \n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - - TMssqlCreateProcedure createProcedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(0); - - assertTrue(createProcedure.getBodyStatements().size() == 1); - assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstmssqlblock); - TMssqlBlock block = (TMssqlBlock)createProcedure.getBodyStatements().get(0); - assertTrue(block.getBodyStatements().size() == 3); -// System.out.println(block.getBodyStatements().get(0).sqlstatementtype); -// System.out.println(block.getBodyStatements().get(1).sqlstatementtype); -// System.out.println(block.getBodyStatements().get(2).sqlstatementtype); - TMssqlDeclare declare = (TMssqlDeclare) block.getBodyStatements().get(0); - assertTrue(declare.getVariables().getDeclareVariable(0).getVariableName().getDbObjectType() == EDbObjectType.variable); - - TMssqlSet set = (TMssqlSet) block.getBodyStatements().get(1); - assertTrue(set.getSetType() == TBaseType.mstLocalVar); - assertTrue(set.getVarName().getDbObjectType() == EDbObjectType.variable); - - TMssqlExecute execute = (TMssqlExecute)block.getBodyStatements().get(2); - assertTrue(execute.getModuleName().toString().equalsIgnoreCase("sp_executesql")); - assertTrue(execute.getExecType() == TBaseType.metExecSp); - TExecParameter execParameter = execute.getParameters().getExecParameter(0); - assertTrue(execParameter.getParameterValue().getObjectOperand().getDbObjectType() == EDbObjectType.variable); - } - - public void test_sp_executesql(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - - sqlparser.sqltext = "EXEC usp_query 'production.brands';\n" + - "\n" + - "GO\n" + - "\n" + - "CREATE PROC usp_query (\n" + - " @table NVARCHAR(128)\n" + - ")\n" + - "AS\n" + - "BEGIN\n" + - "\n" + - " DECLARE @sql NVARCHAR(MAX);\n" + - " -- construct SQL\n" + - " SET @sql = N'SELECT * FROM ' + @table;\n" + - " -- execute the SQL\n" + - " EXEC sp_executesql @sql;\n" + - " \n" + - "END;\n"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TMssqlCreateProcedure createProcedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(2); - TMssqlBlock block = (TMssqlBlock)createProcedure.getBodyStatements().get(0); - TMssqlExecute execute = (TMssqlExecute)block.getBodyStatements().get(2); - assertTrue(execute.getModuleName().toString().equalsIgnoreCase("sp_executesql")); - assertTrue(execute.getExecType() == TBaseType.metExecSp); - //System.out.println(execute.getSqlText()); - assertTrue(execute.getSqlText().equalsIgnoreCase("SELECT * FROM production.brands")); - } - - public void test_sp_executesql2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - - sqlparser.sqltext = "EXEC usp_query 'production.brands';\n" + - "\n" + - "GO\n" + - "\n" + - "CREATE PROC usp_query (\n" + - " @table NVARCHAR(128)\n" + - ")\n" + - "AS\n" + - "BEGIN\n" + - "\n" + - " DECLARE @sql NVARCHAR(MAX);\n" + - " -- construct SQL\n" + - " SET @sql = N'SELECT * FROM ' + @table;\n" + - " -- execute the SQL\n" + - " EXEC sp_executesql N'SELECT * FROM production.products';\n" + - " \n" + - "END;\n"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TMssqlCreateProcedure createProcedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(2); - TMssqlBlock block = (TMssqlBlock)createProcedure.getBodyStatements().get(0); - TMssqlExecute execute = (TMssqlExecute)block.getBodyStatements().get(2); - assertTrue(execute.getModuleName().toString().equalsIgnoreCase("sp_executesql")); - assertTrue(execute.getExecType() == TBaseType.metExecSp); - assertTrue(execute.getSqlText().equalsIgnoreCase("SELECT * FROM production.products")); - - } - -} - - diff --git a/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerExec.java b/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerExec.java deleted file mode 100644 index 89b5030a..00000000 --- a/src/test/java/gudusoft/gsqlparser/dynamicsqlTest/testSQLServerExec.java +++ /dev/null @@ -1,139 +0,0 @@ -package gudusoft.gsqlparser.dynamicsqlTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TParseTreeVisitor; -import gudusoft.gsqlparser.stmt.mssql.*; -import junit.framework.TestCase; - -public class testSQLServerExec extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE PROCEDURE [dbo].[usp_SearchProducts] \n" + - "(\n" + - "\t @ProductID\t\t\tNVARCHAR(50) = NULL\t\n" + - "\t ,@Name\t\t\t\t\tNVARCHAR(100) = NULL\t\n" + - "\t ,@ProductNumber NVARCHAR(100) = NULL\t\n" + - "\t ,@Color\t\t\t\tNVARCHAR(100) = NULL\t\n" + - "\t \n" + - "\t\n" + - ")\n" + - "AS \n" + - "BEGIN \n" + - "\tSET NOCOUNT ON; \n" + - " \n" + - "\tDECLARE @SQL\t\t\t\t\t\t\tVARCHAR(MAX)\n" + - "\tDECLARE @ProductIDFilter\t\t\t\tVARCHAR(MAX)\n" + - "\tDECLARE @NameFilter\t\t\t\t\t\tVARCHAR(MAX)\n" + - "\tDECLARE @ProductNumberFilter\t\t\tVARCHAR(MAX)\n" + - "\tDECLARE @ColorFilter\t\t\t\t\tVARCHAR(MAX)\n" + - "\tDECLARE @all VARCHAR(2) = '-1'\n" + - "\t\n" + - " \n" + - "\tSET @ProductIDFilter = CASE WHEN @ProductID IS NULL OR @ProductID = 0 \n" + - "\tTHEN '''' + @all + ''' = ''' + @all + '''' \n" + - "\tELSE 'ProductID = ''' + @ProductID + '''' \n" + - "\tEND\n" + - " \n" + - "\tSET @NameFilter = CASE WHEN @Name IS NULL OR @Name = ''\n" + - "\tTHEN '''' + @all + ''' = ''' + @all + '''' \n" + - "\tELSE 'Name like ''%' + @Name + '%''' \n" + - "\tEND\n" + - " \n" + - "\tSET @ProductNumberFilter = CASE WHEN @ProductNumber IS NULL OR @ProductNumber = ''\n" + - "\tTHEN '''' + @all + ''' = ''' + @all + '''' \n" + - "\tELSE 'ProductNumber like ''%' + @ProductNumber + '%''' \n" + - "\tEND\n" + - " \n" + - "\tSET @ColorFilter = CASE WHEN @Color IS NULL OR @Color = ''\n" + - "\tTHEN '''' + @all + ''' = ''' + @all + '''' \n" + - "\tELSE 'Color like ''' + @Color + '''' \n" + - "\tEND\n" + - " \n" + - "\t\n" + - " \n" + - "\t\t SET @SQL = 'SELECT ProductID\n" + - "\t\t\t\t\t\t,Name\n" + - "\t\t\t\t\t\t,ProductNumber\n" + - "\t\t\t\t\t\t,Color\n" + - "\t\t\t\t\t\t,StandardCost\n" + - "\t\t\t\t\t\t,Size\n" + - "\t\t\t\t\t\t,Weight\n" + - "\t\t\t\t\tFROM SalesLT.Product\n" + - "\t\t\tWHERE ' + @ProductIDFilter\n" + - "\t\t\t+ ' AND ' + @NameFilter + ''\n" + - "\t\t\t+ ' AND ' + @ProductNumberFilter + ''\n" + - "\t\t\t+ ' AND ' + @ColorFilter + ''\n" + - "\t\t\t\n" + - " \n" + - "\t\t\tPRINT (@sql)\n" + - "\t\t\tEXEC(@sql)\n" + - "\t\t\t\n" + - " \n" + - "END"; - assertTrue(sqlparser.parse() == 0); - - TMssqlCreateProcedure createProcedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(0); - - getSQLServerExecSQLTextVisitor nodeVisitor = new getSQLServerExecSQLTextVisitor(); - sqlparser.sqlstatements.get(0).acceptChildren(nodeVisitor); - assertTrue(nodeVisitor.sqlText.equalsIgnoreCase("SELECT ProductID\n" + - "\t\t\t\t\t\t,Name\n" + - "\t\t\t\t\t\t,ProductNumber\n" + - "\t\t\t\t\t\t,Color\n" + - "\t\t\t\t\t\t,StandardCost\n" + - "\t\t\t\t\t\t,Size\n" + - "\t\t\t\t\t\t,Weight\n" + - "\t\t\t\t\tFROM SalesLT.Product\n" + - "\t\t\tWHERE '-1' = '-1' AND '-1' = '-1' AND '-1' = '-1' AND '-1' = '-1'")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "DECLARE @SQL_QUERY NVARCHAR(128)\n" + - "SET @SQL_QUERY = N'SELECT id, name, price FROM Books WHERE price > 4000'\n" + - "EXECUTE sp_executesql @SQL_QUERY"; - assertTrue(sqlparser.parse() == 0); - - getSQLServerExecSQLTextVisitor nodeVisitor = new getSQLServerExecSQLTextVisitor(); - sqlparser.sqlstatements.acceptChildren(nodeVisitor); - assertTrue(nodeVisitor.sqlText.equalsIgnoreCase("SELECT id, name, price FROM Books WHERE price > 4000")); - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE PROCEDURE testschema.TestProcWithResultSet\n" + - " AS\n" + - " begin\n" + - " \n" + - " DECLARE @SQL varchar(8000),@interval INT,@handle UNIQUEIDENTIFIER = NULL,@message_type_name SYSNAME\n" + - " SET @SQL = 'SELECT deptno , [Department Name] from TestCatalog.TestSchema.TestTableDept ttd'\n" + - " EXEC (@SQL)\n" + - " WITH RESULT SETS\n" + - " (\n" + - " ( deptno INT, DepartmentName VARCHAR(150))\n" + - " )\n" + - " \n" + - " SET @handle = 678\n" + - " \n" + - " BEGIN TRANSACTION\n" + - " BEGIN CONVERSATION TIMER (@handle) TIMEOUT = @interval;\n" + - " COMMIT TRANSACTION;\n" + - " end;"; - assertTrue(sqlparser.parse() == 0); - - getSQLServerExecSQLTextVisitor nodeVisitor = new getSQLServerExecSQLTextVisitor(); - sqlparser.sqlstatements.acceptChildren(nodeVisitor); - //System.out.println(nodeVisitor.sqlText); - assertTrue(nodeVisitor.sqlText.equalsIgnoreCase("SELECT deptno , [Department Name] from TestCatalog.TestSchema.TestTableDept ttd")); - } - -} - -class getSQLServerExecSQLTextVisitor extends TParseTreeVisitor { - public String sqlText; - - public void preVisit(TMssqlExecute node) { - sqlText = node.getSqlText(); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/errorsqlTest/testCreateIndex.java b/src/test/java/gudusoft/gsqlparser/errorsqlTest/testCreateIndex.java deleted file mode 100644 index 3f4344f4..00000000 --- a/src/test/java/gudusoft/gsqlparser/errorsqlTest/testCreateIndex.java +++ /dev/null @@ -1,29 +0,0 @@ -package gudusoft.gsqlparser.errorsqlTest; -/* - * Date: 13-3-25 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateIndexSqlStatement; -import junit.framework.TestCase; - -public class testCreateIndex extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - sqlparser.sqltext = "CREATE UNIQUE INDEX \"A\".\"IB\" ON \"A\".\"B\"\n" + - " (\"A\" ASC,\n" + - " \"B\" ASC )\n" + - " ALLOW REVERSE SCANS; --Error"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TCreateIndexSqlStatement createIndexSqlStatement = (TCreateIndexSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createIndexSqlStatement.getIndexName().toString().equalsIgnoreCase("\"A\".\"IB\"")); - assertTrue(createIndexSqlStatement.getTableName().toString().equalsIgnoreCase("\"A\".\"B\"")); - assertTrue(createIndexSqlStatement.getColumnNameList().getOrderByItem(0).getSortKey().toString().equalsIgnoreCase("\"A\"")); - assertTrue(createIndexSqlStatement.getColumnNameList().getOrderByItem(0).getSortType() == 1); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlTest.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlTest.java deleted file mode 100644 index 52a34b28..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlTest.java +++ /dev/null @@ -1,77 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 2010-11-9 - * Time: 9:57:07 - */ - -import junit.framework.TestCase; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; - -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import gudusoft.gsqlparser.commonTest.SqlFileList; - -public class formatsqlTest extends TestCase { - -static int formatFiles(EDbVendor db,String dir) { - - TGSqlParser sqlparser = new TGSqlParser(db); - SqlFileList sqlfiles = new SqlFileList(dir,true); - int i = 0,j = 0; - for(int k=0;k < sqlfiles.sqlfiles.size();k++){ - sqlparser.sqlfilename = sqlfiles.sqlfiles.get(k).toString(); - //System.out.println(sqlparser.sqlfilename); - boolean b = sqlparser.parse() == 0; - assertTrue(sqlparser.sqlfilename+"\n"+sqlparser.getErrormessage(),b); - if (b){ - GFmtOpt option = GFmtOptFactory.newInstance(); - //String result = FormattorFactory.pp(sqlparser, option); - //option.outputFmt = GOutputFmt.ofhtml; - try{ - String result = FormatterFactory.pp(sqlparser, option); - }catch(Exception e){ - System.out.println(sqlparser.sqlfilename+" formatFiles error: "+e.getMessage()); - j++; - } - - } - } - - if (j > 0){ - System.out.println(db.toString()+ ", total files formatted;"+sqlfiles.sqlfiles.size()+", exception:"+j); - } - return j; -} - - public static void testSQLServer(){ - assertTrue(formatFiles(EDbVendor.dbvmssql,"c:/prg/gsqlparser/Test/TestCases/mssql") == 0); - } - - - public static void testTeradata(){ - assertTrue(formatFiles(EDbVendor.dbvteradata,"c:/prg/gsqlparser/Test/TestCases/teradata/verified") == 0); - } - - public static void testPostGreSQL(){ - assertTrue(formatFiles(EDbVendor.dbvpostgresql,"c:/prg/gsqlparser/Test/TestCases/postgresql/verified") == 0); - } - - public static void testMySQL(){ - assertTrue(formatFiles(EDbVendor.dbvmysql,"c:/prg/gsqlparser/Test/TestCases/mysql") == 0); - } - - public static void testDB2(){ - assertTrue(formatFiles(EDbVendor.dbvdb2,"c:/prg/gsqlparser/Test/TestCases/db2") == 0); - } - - public static void testOracle(){ - assertTrue(formatFiles(EDbVendor.dbvoracle,"c:/prg/gsqlparser/Test/TestCases/oracle") == 0); - } - - public static void testNetezza(){ - assertTrue(formatFiles(EDbVendor.dbvnetezza,"c:/prg/gsqlparser/Test/TestCases/netezza") == 0); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlVerifyTest.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlVerifyTest.java deleted file mode 100644 index 94602eab..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/formatsqlVerifyTest.java +++ /dev/null @@ -1,109 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.SqlFormatter; - -import java.io.ByteArrayInputStream; -import java.io.File; - -import junit.framework.TestCase; -import gudusoft.gsqlparser.commonTest.FileUtil; -import gudusoft.gsqlparser.commonTest.SqlFileList; - -public class formatsqlVerifyTest extends TestCase -{ - - public static int formatFiles( EDbVendor db, String dir ) - { - - TGSqlParser sqlparser = new TGSqlParser( db ); - SqlFileList sqlfiles = new SqlFileList( dir, true ); - int i = 0, j = 0; - for ( int k = 0; k < sqlfiles.sqlfiles.size( ); k++ ) - { - sqlparser.sqlfilename = sqlfiles.sqlfiles.get( k ).toString( ); - File sqlFile = new File( sqlparser.sqlfilename ); - String tidyFileName = new File( sqlFile.getParentFile( ), - sqlFile.getName( ).replaceAll( "(?i)\\.sql", ".java.tidy" ) ).getAbsolutePath( ); - boolean b = sqlparser.parse( ) == 0; - if ( b ) - { - GFmtOpt option = GFmtOptFactory.newInstance( ); - try - { - String result = new SqlFormatter( ).format( sqlparser, - option ); - ByteArrayInputStream bis = new ByteArrayInputStream( result.getBytes( ) ); - FileUtil.writeToFile(new File(tidyFileName), bis, true); - } - catch ( Exception e ) - { - System.out.println( sqlparser.sqlfilename - + " formatsqlVerifyTest format error: " - + e.getMessage( ) ); - j++; - } - - } - else - { - System.out.println( sqlparser.sqlfilename - + " formatsqlVerifyTest parse error: " - + sqlparser.getErrormessage( ) ); - i++; - } - } - - if ( j > 0 || i > 0 ) - { - System.err.println( db.toString( ) - + ", total files formatted;" - + sqlfiles.sqlfiles.size( ) - + ", format exception:" - + j - + ", parse exception:" - + +i ); - } - return j; - } - - public static void testSQLServer( ) - { - assertTrue( formatFiles( EDbVendor.dbvmssql, "./TestCases/mssql" ) == 0 ); - } - - public static void testTeradata( ) - { - assertTrue( formatFiles( EDbVendor.dbvteradata, "./TestCases/teradata" ) == 0 ); - } - - public static void testPostGreSQL( ) - { - assertTrue( formatFiles( EDbVendor.dbvpostgresql, - "./TestCases/postgresql" ) == 0 ); - } - - public static void testMySQL( ) - { - assertTrue( formatFiles( EDbVendor.dbvmysql, "./TestCases/mysql" ) == 0 ); - } - - public static void testDB2( ) - { - assertTrue( formatFiles( EDbVendor.dbvdb2, "./TestCases/db2" ) == 0 ); - } - - public static void testOracle( ) - { - assertTrue( formatFiles( EDbVendor.dbvoracle, "./TestCases/oracle" ) == 0 ); - } - - // public static void testAll( ) - // { - // assertTrue( formatFiles( EDbVendor.dbvoracle, "./TestCases" ) == 0 ); - // } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignAliasInSelectList.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignAliasInSelectList.java deleted file mode 100644 index 803349cd..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignAliasInSelectList.java +++ /dev/null @@ -1,66 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 12-1-29 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TLinefeedsCommaOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testAlignAliasInSelectList extends TestCase { - public static void test1() - { - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT\n" + - "col1 AS mycolumn\n" + - ", col2 AS yourcolumn\n" + - ", Sum(col3) AS thesum\n" + - ", CASE\n" + - "WHEN Lower(a) = 23 THEN 'blue'\n" + - "ELSE NULL\n" + - "END AS mycase\n" + - ", Trim(TRAILING FROM col1) AS trim_col\n" + - "FROM\n" + - "table1\n" + - "INNER JOIN table2\n" + - "ON col1=col2 AND col3=col4\n" + - "WHERE col4 > col5\n" + - "AND col6 = 1000"; - - sqlparser.parse(); - - - option.selectColumnlistComma = TLinefeedsCommaOption.LfbeforeCommaWithSpace; - option.fromClauseInNewLine = true; - option.selectItemInNewLine = true; - option.andOrUnderWhere = true; - option.fromClauseInNewLine = true; - option.caseWhenThenInSameLine = true; - - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT\n" + - " col1 AS mycolumn\n" + - " , col2 AS yourcolumn\n" + - " , Sum(col3) AS thesum\n" + - " , CASE\n" + - " WHEN Lower(a) = 23 THEN 'blue'\n" + - " ELSE NULL\n" + - " END AS mycase\n" + - " , Trim(TRAILING FROM col1) AS trim_col\n" + - "FROM \n" + - " table1\n" + - " INNER JOIN table2\n" + - " ON col1 = col2\n"+ - " AND col3 = col4\n" + - "WHERE col4 > col5\n" + - " AND col6 = 1000")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignment.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignment.java deleted file mode 100644 index 505ca31a..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testAlignment.java +++ /dev/null @@ -1,139 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testAlignment extends TestCase { - - public static void testSelect_keywords_alignOption(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "DELETE FROM job_history jh \n" + - "WHERE employee_id = (SELECT employee_id \n" + - "FROM employee e \n" + - "WHERE jh.employee_id = e.employee_id \n" + - "AND start_date = (SELECT Min(start_date) \n" + - "FROM job_history jh \n" + - "WHERE jh.employee_id = e.employee_id) \n" + - "AND 5 > (SELECT Count( * ) \n" + - "FROM job_history jh \n" + - "WHERE jh.employee_id = e.employee_id \n" + - "GROUP BY employee_id \n" + - "HAVING Count( * ) >= 4)); "; - - sqlparser.parse(); - option.selectKeywordsAlignOption = TAlignOption.AloRight; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("DELETE FROM job_history jh\n" + - " WHERE employee_id = (SELECT employee_id\n" + - " FROM employee e\n" + - " WHERE jh.employee_id = e.employee_id\n" + - " AND start_date = (SELECT Min(start_date)\n" + - " FROM job_history jh\n" + - " WHERE jh.employee_id = e.employee_id)\n" + - " AND 5 > ( SELECT Count(*)\n" + - " FROM job_history jh\n" + - " WHERE jh.employee_id = e.employee_id\n" + - " GROUP BY employee_id\n" + - " HAVING Count(*) >= 4));")); -// assertTrue(result.trim().equalsIgnoreCase("DELETE FROM job_history jh\n" + -// " WHERE employee_id = (SELECT employee_id\n" + -// " FROM employee e\n" + -// " WHERE jh.employee_id = e.employee_id\n" + -// " AND start_date = (SELECT Min(start_date)\n" + -// " FROM job_history jh\n" + -// " WHERE jh.employee_id = e.employee_id)\n" + -// " AND 5 > ( SELECT Count(*)\n" + -// " FROM job_history jh\n" + -// " WHERE jh.employee_id = e.employee_id\n" + -// " GROUP BY employee_id HAVING Count(*) >= 4));")); - - // System.out.println(result); - } - - public static void testSelect_keywords_alignOption_delete(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "INSERT INTO employees\n" + - "(employee_id,\n" + - " first_name,\n" + - " last_name,\n" + - " email,\n" + - " phone_number,\n" + - " hire_date,\n" + - " job_id,\n" + - " salary,\n" + - " commission_pct,\n" + - " manager_id,\n" + - " department_id) \n" + - "VALUES(113,\n" + - "'Louis',\n" + - "'Popp',\n" + - "'Ldd',\n" + - "'515.124.222',\n" + - "sysdate,\n" + - "'Ac_account',\n" + - "8900,\n" + - "NULL,\n" + - "205,\n" + - "100)\n" + - " \n" + - " "; - - sqlparser.parse(); - option.selectKeywordsAlignOption = TAlignOption.AloRight; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("INSERT INTO employees\n" + - " (employee_id,\n" + - " first_name,\n" + - " last_name,\n" + - " email,\n" + - " phone_number,\n" + - " hire_date,\n" + - " job_id,\n" + - " salary,\n" + - " commission_pct,\n" + - " manager_id,\n" + - " department_id)\n" + - " VALUES (113,\n" + - " 'Louis',\n" + - " 'Popp',\n" + - " 'Ldd',\n" + - " '515.124.222',\n" + - " sysdate,\n" + - " 'Ac_account',\n" + - " 8900,\n" + - " NULL,\n" + - " 205,\n" + - " 100)")); - //System.out.println(result); - } - - public static void testSelect_keywords_alignOption_update(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "UPDATE employees \n" + - "SET department_id = 70 \n" + - "WHERE employee_id = 113" ; - - sqlparser.parse(); - option.selectKeywordsAlignOption = TAlignOption.AloRight; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("UPDATE employees\n" + - " SET department_id = 70\n" + - " WHERE employee_id = 113")); - //System.out.println(result); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testBlankLines.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testBlankLines.java deleted file mode 100644 index 0b11c6b8..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testBlankLines.java +++ /dev/null @@ -1,331 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TEmptyLinesOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testBlankLines extends TestCase { - - public static void testEmptyLines1(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION dbo.isoweek (@DATE datetime)\n" + - "RETURNS INT\n" + - "WITH EXECUTE AS caller\n" + - "AS\n" + - "BEGIN\n" + - " DECLARE @ISOweek INT\n" + - " \n" + - " \n" + - " SET @ISOweek= datepart(wk,@DATE)+1\n" + - " -datepart(wk,CAST(datepart(yy,@DATE) AS CHAR(4))+'0104')\n" + - " \n" + - "--Special cases: Jan 1-3 may belong to the previous year\n" + - " IF (@ISOweek=0)\n" + - " SET @ISOweek=dbo.isoweek(CAST(datepart(yy,@DATE)-1\n" + - " AS CHAR(4))+'12'+ CAST(24+datepart(DAY,@DATE) AS CHAR(2)))+1\n" + - "--Special case: Dec 29-31 may belong to the next year\n" + - " IF ((datepart(mm,@DATE)=12) AND\n" + - " ((datepart(dd,@DATE)-datepart(dw,@DATE))>= 28))\n" + - " SET @ISOweek=1\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " RETURN(@ISOweek)\n" + - "END;\n" + - "GO "; - - //System.out.println(sqlparser.sqltext); - - sqlparser.parse(); - option.emptyLines = TEmptyLinesOption.EloMergeIntoOne; - option.insertBlankLineInBatchSqls = false; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION dbo.Isoweek (@DATE DATETIME\n" + - ") \n" + - "RETURNS INT WITH EXECUTE AS caller \n" + - "AS \n" + - " BEGIN \n" + - " DECLARE @ISOweek INT \n" + - "\n" + - " SET @ISOweek= Datepart(wk,@DATE) + 1 - Datepart(wk,Cast(Datepart(yy,@DATE) AS CHAR(4)) + '0104') \n" + - "\n" + - "--Special cases: Jan 1-3 may belong to the previous year\n" + - " IF ( @ISOweek = 0 ) SET @ISOweek=dbo.Isoweek(Cast(Datepart(yy,@DATE) - 1 AS CHAR(4)) + '12' + Cast(24 + Datepart(DAY,@DATE) AS CHAR(2))) + 1 \n" + - "\n" + - "--Special case: Dec 29-31 may belong to the next year\n" + - " IF ( ( Datepart(mm,@DATE) = 12 )\n" + - " AND ( ( Datepart(dd,@DATE) - Datepart(dw,@DATE) ) >= 28 ) ) SET @ISOweek=1 \n" + - "\n" + - " RETURN(@ISOweek) \n" + - " END;\n" + - "GO")); -// assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION dbo.Isoweek (@DATE DATETIME\n" + -// ") \n" + -// "RETURNS INT WITH EXECUTE AS caller \n" + -// "AS \n" + -// " BEGIN \n" + -// " DECLARE @ISOweek INT \n" + -// "\n" + -// " SET @ISOweek= Datepart(wk,@DATE) + 1 - Datepart(wk,Cast(Datepart(yy,@DATE) AS CHAR(4))+'0104') \n" + -// "\n" + -// "--Special cases: Jan 1-3 may belong to the previous year \n" + -// " IF ( @ISOweek = 0 ) SET @ISOweek=dbo.Isoweek(Cast(Datepart(yy,@DATE)-1 AS CHAR(4))+'12'+ Cast(24+Datepart(DAY,@DATE) AS CHAR(2))) + 1 \n" + -// "\n" + -// "--Special case: Dec 29-31 may belong to the next year \n" + -// " IF ( ( Datepart(mm,@DATE) = 12 )\n" + -// " AND ( ( Datepart(dd,@DATE) - Datepart(dw,@DATE) ) >= 28 ) ) SET @ISOweek=1 \n" + -// "\n" + -// " RETURN(@ISOweek) \n" + -// " END;\n" + -// "GO")); - // System.out.println(result); - -// System.out.println("CREATE FUNCTION dbo.Isoweek (@DATE DATETIME\n" + -// ") \n" + -// "RETURNS INT WITH EXECUTE AS caller \n" + -// "AS \n" + -// " BEGIN \n" + -// " DECLARE @ISOweek INT \n" + -// "\n" + -// " SET @ISOweek= Datepart(wk,@DATE) + 1 - Datepart(wk,Cast(Datepart(yy,@DATE) AS CHAR(4))+'0104') \n" + -// "\n" + -// "--Special cases: Jan 1-3 may belong to the previous year \n" + -// " IF ( @ISOweek = 0 ) SET @ISOweek=dbo.Isoweek(Cast(Datepart(yy,@DATE)-1 AS CHAR(4))+'12'+ Cast(24+Datepart(DAY,@DATE) AS CHAR(2))) + 1 \n" + -// "\n" + -// "--Special case: Dec 29-31 may belong to the next year \n" + -// " IF ( ( Datepart(mm,@DATE) = 12 )\n" + -// " AND ( ( Datepart(dd,@DATE) - Datepart(dw,@DATE) ) >= 28 ) ) SET @ISOweek=1 \n" + -// "\n" + -// " RETURN(@ISOweek) \n" + -// " END;\n" + -// "GO"); - } - - public static void testEmptyLines2(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION dbo.isoweek (@DATE datetime)\n" + - "RETURNS INT\n" + - "WITH EXECUTE AS caller\n" + - "AS\n" + - "BEGIN\n" + - " DECLARE @ISOweek INT\n" + - " \n" + - " \n" + - " SET @ISOweek= datepart(wk,@DATE)+1\n" + - " -datepart(wk,CAST(datepart(yy,@DATE) AS CHAR(4))+'0104')\n" + - " \n" + - "--Special cases: Jan 1-3 may belong to the previous year\n" + - " IF (@ISOweek=0)\n" + - " SET @ISOweek=dbo.isoweek(CAST(datepart(yy,@DATE)-1\n" + - " AS CHAR(4))+'12'+ CAST(24+datepart(DAY,@DATE) AS CHAR(2)))+1\n" + - "--Special case: Dec 29-31 may belong to the next year\n" + - " IF ((datepart(mm,@DATE)=12) AND\n" + - " ((datepart(dd,@DATE)-datepart(dw,@DATE))>= 28))\n" + - " SET @ISOweek=1\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " RETURN(@ISOweek)\n" + - "END;\n" + - "GO "; - - sqlparser.parse(); - option.emptyLines = TEmptyLinesOption.EloMergeIntoOne; - // option.emptyLines = TEmptyLinesOption.EloPreserve; - option.insertBlankLineInBatchSqls = true; - String result = FormatterFactory.pp(sqlparser, option); - // assertTrue("EmptyLines,insertBlankLineInBatchSqls can't be tested due to format in stored procedure not work",false); - System.out.println("EmptyLines,insertBlankLineInBatchSqls can't be tested due to format in stored procedure not work"); - } - - public static void testEmptyLines3(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION dbo.isoweek (@DATE datetime)\n" + - "RETURNS INT\n" + - "WITH EXECUTE AS caller\n" + - "AS\n" + - "BEGIN\n" + - " DECLARE @ISOweek INT\n" + - " \n" + - " \n" + - " SET @ISOweek= datepart(wk,@DATE)+1\n" + - " -datepart(wk,CAST(datepart(yy,@DATE) AS CHAR(4))+'0104')\n" + - " \n" + - "--Special cases: Jan 1-3 may belong to the previous year\n" + - " IF (@ISOweek=0)\n" + - " SET @ISOweek=dbo.isoweek(CAST(datepart(yy,@DATE)-1\n" + - " AS CHAR(4))+'12'+ CAST(24+datepart(DAY,@DATE) AS CHAR(2)))+1\n" + - "--Special case: Dec 29-31 may belong to the next year\n" + - " IF ((datepart(mm,@DATE)=12) AND\n" + - " ((datepart(dd,@DATE)-datepart(dw,@DATE))>= 28))\n" + - " SET @ISOweek=1\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " RETURN(@ISOweek)\n" + - "END;\n" + - "GO "; - - sqlparser.parse(); - option.emptyLines = TEmptyLinesOption.EloRemove; - option.insertBlankLineInBatchSqls = false; - String result = FormatterFactory.pp(sqlparser, option); -// assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION dbo.Isoweek (@DATE DATETIME\n" + -// ") \n" + -// "RETURNS INT WITH EXECUTE AS caller \n" + -// "AS \n" + -// " BEGIN \n" + -// " DECLARE @ISOweek INT \n" + -// " SET @ISOweek= Datepart(wk,@DATE) + 1 - Datepart(wk,Cast(Datepart(yy,@DATE) AS CHAR(4))+'0104') \n" + -// "--Special cases: Jan 1-3 may belong to the previous year \n" + -// " IF ( @ISOweek = 0 ) SET @ISOweek=dbo.Isoweek(Cast(Datepart(yy,@DATE)-1 AS CHAR(4))+'12'+ Cast(24+Datepart(DAY,@DATE) AS CHAR(2))) + 1 \n" + -// "--Special case: Dec 29-31 may belong to the next year \n" + -// " IF ( ( Datepart(mm,@DATE) = 12 )\n" + -// " AND ( ( Datepart(dd,@DATE) - Datepart(dw,@DATE) ) >= 28 ) ) SET @ISOweek=1 \n" + -// " RETURN(@ISOweek) \n" + -// " END;\n" + -// "GO")); - System.out.println("this is a bug, need to be fixed"); - } - - public static void testEloPreserve(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION dbo.isoweek (@DATE datetime)\n" + - "RETURNS INT\n" + - "WITH EXECUTE AS caller\n" + - "AS\n" + - "BEGIN\n" + - " DECLARE @ISOweek INT\n" + - " \n" + - " \n" + - " SET @ISOweek= datepart(wk,@DATE)+1\n" + - " -datepart(wk,CAST(datepart(yy,@DATE) AS CHAR(4))+'0104')\n" + - " \n" + - "--Special cases: Jan 1-3 may belong to the previous year\n" + - " IF (@ISOweek=0)\n" + - " SET @ISOweek=dbo.isoweek(CAST(datepart(yy,@DATE)-1\n" + - " AS CHAR(4))+'12'+ CAST(24+datepart(DAY,@DATE) AS CHAR(2)))+1\n" + - "--Special case: Dec 29-31 may belong to the next year\n" + - " IF ((datepart(mm,@DATE)=12) AND\n" + - " ((datepart(dd,@DATE)-datepart(dw,@DATE))>= 28))\n" + - " SET @ISOweek=1\n" + - " \n" + - " \n" + - " \n" + - " \n" + - " RETURN(@ISOweek)\n" + - "END;\n" + - "GO "; - - sqlparser.parse(); - option.emptyLines = TEmptyLinesOption.EloPreserve; - //option.insertBlankLineInBatchSqls = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION dbo.Isoweek (@DATE DATETIME\n" + - ") \n" + - "RETURNS INT WITH EXECUTE AS caller \n" + - "AS \n" + - " BEGIN \n" + - " DECLARE @ISOweek INT \n" + - "\n" + - " SET @ISOweek= Datepart(wk,@DATE) + 1 - Datepart(wk,Cast(Datepart(yy,@DATE) AS CHAR(4)) + '0104') \n" + - "\n" + - "--Special cases: Jan 1-3 may belong to the previous year\n" + - " IF ( @ISOweek = 0 ) SET @ISOweek=dbo.Isoweek(Cast(Datepart(yy,@DATE) - 1 AS CHAR(4)) + '12' + Cast(24 + Datepart(DAY,@DATE) AS CHAR(2))) + 1 \n" + - "--Special case: Dec 29-31 may belong to the next year\n" + - " IF ( ( Datepart(mm,@DATE) = 12 )\n" + - " AND ( ( Datepart(dd,@DATE) - Datepart(dw,@DATE) ) >= 28 ) ) SET @ISOweek=1 \n" + - "\n" + - "\n" + - "\n" + - "\n" + - " RETURN(@ISOweek) \n" + - " END;\n" + - "GO")); - // System.out.println(result); - } - - public static void testNoEmptyLinesBetweenMultiSetStmts(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SET @A = @B\n" + - "SET @C = @D\n" + - "SET @E = @F\n\n" + - "SET @G = @H "; - - sqlparser.parse(); - option.emptyLines = TEmptyLinesOption.EloRemove; - option.insertBlankLineInBatchSqls = true; - option.noEmptyLinesBetweenMultiSetStmts = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SET @A = @B \n" + - "SET @C = @D \n" + - "SET @E = @F \n" + - "SET @G = @H")); - // assertTrue("NoEmptyLinesBetweenMultiSetStmts not worked correctly",false); - // System.out.println(result); - } - - public static void testIfElse(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "DECLARE @compareprice money, @cost money \n" + - "EXECUTE Production.uspGetList '%Bikes%', 700, \n" + - " @compareprice OUT, \n" + - " @cost OUTPUT\n" + - "IF @cost <= @compareprice \n" + - "BEGIN\n" + - " PRINT 'These products can be purchased for less than \n" + - " $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.'\n" + - "END\n" + - "ELSE\n" + - " PRINT 'The prices for all products in this category exceed \n" + - " $'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'"; - - sqlparser.parse(); - option.emptyLines = TEmptyLinesOption.EloMergeIntoOne; - option.insertBlankLineInBatchSqls = true; - //option.noEmptyLinesBetweenMultiSetStmts = false; - String result = FormatterFactory.pp(sqlparser, option); - - // System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("DECLARE @compareprice MONEY,\n" + - " @cost MONEY \n" + - "\n" + - "EXECUTE production.uspgetlist \n" + - " '%Bikes%',\n" + - " 700,\n" + - " @compareprice OUT,\n" + - " @cost OUTPUT \n" + - "\n" + - "IF @cost <= @compareprice \n" + - " BEGIN \n" + - " PRINT 'These products can be purchased for less than \n" + - " $'+Rtrim(Cast(@compareprice AS VARCHAR(20)))+'.' \n" + - " END \n" + - "ELSE \n" + - " PRINT 'The prices for all products in this category exceed \n" + - " $'+ Rtrim(Cast(@compareprice AS VARCHAR(20)))+'.'")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCTE.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCTE.java deleted file mode 100644 index 9f44e50c..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCTE.java +++ /dev/null @@ -1,44 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testCTE extends TestCase { - - public static void testCTE_NewlineBeforeAs(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "WITH mycte(x) AS (SELECT x = Convert( VARCHAR(1000), 'hello' ) UNION ALL \n" + - " SELECT Convert( VARCHAR(1000), x + 'a' ) FROM mycte \n" + - " WHERE Len( x ) < 10 UNION ALL SELECT Convert( VARCHAR(1000), x + 'b' ) \n" + - " FROM mycte WHERE Len( x ) < 10)\n" + - "SELECT x FROM mycte ORDER BY Len( x ), x; "; - - sqlparser.parse(); - option.cteNewlineBeforeAs = false; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("WITH mycte(x) AS (SELECT x = Convert(VARCHAR(1000), 'hello')\n" + - " UNION ALL\n" + - " SELECT Convert(VARCHAR(1000), x + 'a')\n" + - " FROM mycte\n" + - " WHERE Len(x) < 10\n" + - " UNION ALL\n" + - " SELECT Convert(VARCHAR(1000), x + 'b')\n" + - " FROM mycte\n" + - " WHERE Len(x) < 10) \n" + - " SELECT x\n" + - " FROM mycte\n" + - " ORDER BY Len(x),\n" + - " x;")); - - // System.out.println(result.trim()); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCapitalisation.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCapitalisation.java deleted file mode 100644 index 6169d920..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCapitalisation.java +++ /dev/null @@ -1,103 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TCaseOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testCapitalisation extends TestCase { - - public static void testDefault(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "select department_id,\n" + - " min( salary ) \n" + - "from employees \n" + - "group by department_id"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT department_id,\n" + - " Min(salary)\n" + - "FROM employees\n" + - "GROUP BY department_id")); - // System.out.println(result); - } - - public static void testAllUpper(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "select department_id,\n" + - " min( salary ) \n" + - "from employees \n" + - "group by department_id"; - - sqlparser.parse(); - option.caseDatatype = TCaseOption.CoUppercase; - option.caseFuncname = TCaseOption.CoUppercase; - option.caseIdentifier = TCaseOption.CoUppercase; - option.caseKeywords = TCaseOption.CoUppercase; - option.caseQuotedIdentifier = TCaseOption.CoUppercase; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT DEPARTMENT_ID,\n" + - " MIN(SALARY)\n" + - "FROM EMPLOYEES\n" + - "GROUP BY DEPARTMENT_ID")); - //System.out.println(result); - } - - public static void testAllLower(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "Select department_id,\n" + - " min( salary ) \n" + - "from employees \n" + - "group by department_id"; - - sqlparser.parse(); - option.caseDatatype = TCaseOption.CoLowercase; - option.caseFuncname = TCaseOption.CoLowercase; - option.caseIdentifier = TCaseOption.CoLowercase; - option.caseKeywords = TCaseOption.CoLowercase; - option.caseQuotedIdentifier = TCaseOption.CoLowercase; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("select department_id,\n" + - " min(salary)\n" + - "from employees\n" + - "group by department_id")); - //System.out.println(result); - } - - public static void testAllUnchanged(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "Select department_id,\n" + - " miN( Salary ) \n" + - "from employees \n" + - "GROUP by department_id"; - - sqlparser.parse(); - option.caseDatatype = TCaseOption.CoNoChange; - option.caseFuncname = TCaseOption.CoNoChange; - option.caseIdentifier = TCaseOption.CoNoChange; - option.caseKeywords = TCaseOption.CoNoChange; - option.caseQuotedIdentifier = TCaseOption.CoNoChange; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("Select department_id,\n" + - " miN(Salary)\n" + - "from employees\n" + - "GROUP by department_id")); - //System.out.println(result); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCaseExpression.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCaseExpression.java deleted file mode 100644 index 41ac192e..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCaseExpression.java +++ /dev/null @@ -1,86 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testCaseExpression extends TestCase { - - public static void testCaseWhenThenInSameLine(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT productnumber,\n" + - " name,\n" + - " 'Price Range' = CASE WHEN listprice = 0 THEN 'Mfg item - not for resale' \n" + - " WHEN listprice < 50 THEN 'Under $50' \n" + - " WHEN listprice >= 50 AND listprice < 250 \n" + - " THEN 'Under $250' WHEN listprice >= 250 \n" + - " AND listprice < 1000 THEN 'Under $1000' ELSE 'Over $1000' END \n" + - "FROM production.product \n" + - "ORDER BY productnumber; "; - - sqlparser.parse(); - option.caseWhenThenInSameLine = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT productnumber,\n" + - " name,\n" + - " 'Price Range' = CASE\n" + - " WHEN listprice = 0 THEN 'Mfg item - not for resale'\n" + - " WHEN listprice < 50 THEN 'Under $50'\n" + - " WHEN listprice >= 50\n" + - " AND listprice < 250 THEN 'Under $250'\n" + - " WHEN listprice >= 250\n" + - " AND listprice < 1000 THEN 'Under $1000'\n" + - " ELSE 'Over $1000'\n" + - " END\n" + - "FROM production.product\n" + - "ORDER BY productnumber;")); - //System.out.println(result); - } - - public static void testIndent_CaseFromSwitch(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT productnumber,\n" + - " name,\n" + - " 'Price Range' = CASE WHEN listprice = 0 THEN 'Mfg item - not for resale' \n" + - " WHEN listprice < 50 THEN 'Under $50' \n" + - " WHEN listprice >= 50 AND listprice < 250 \n" + - " THEN 'Under $250' WHEN listprice >= 250 \n" + - " AND listprice < 1000 THEN 'Under $1000' ELSE 'Over $1000' END \n" + - "FROM production.product \n" + - "ORDER BY productnumber; "; - - sqlparser.parse(); - option.caseWhenThenInSameLine = false; - option.indentCaseFromSwitch = 4; - option.indentCaseThen = 2; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT productnumber,\n" + - " name,\n" + - " 'Price Range' = CASE\n" + - " WHEN listprice = 0\n" + - " THEN 'Mfg item - not for resale'\n" + - " WHEN listprice < 50\n" + - " THEN 'Under $50'\n" + - " WHEN listprice >= 50\n" + - " AND listprice < 250\n" + - " THEN 'Under $250'\n" + - " WHEN listprice >= 250\n" + - " AND listprice < 1000\n" + - " THEN 'Under $1000'\n" + - " ELSE 'Over $1000'\n" + - " END\n" + - "FROM production.product\n" + - "ORDER BY productnumber;")); - //System.out.println(result); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testComment.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testComment.java deleted file mode 100644 index eae94d4b..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testComment.java +++ /dev/null @@ -1,279 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testComment extends TestCase { - - public static void testremove_comment(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - option.removeComment = true; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "select department_id,\n" + - " min( salary ) -- single line comment \n" + - "from employees \n" + - "group by department_id"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT department_id,\n" + - " Min(salary)\n" + - "FROM employees\n" + - "GROUP BY department_id")); - //assertTrue("remove_comment is not supported",false); - // System.out.println(result); - } - - public static void testbegin_no_format(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE PROCEDURE uspnresults\n" + - "AS\n" + - "SELECT COUNT(contactid) FROM person.contact\n" + - "--begin_no_format\n" + - "SELECT COUNT(customerid) FROM\n" + - "sales.customer;\n" + - "--end_no_format\n" + - "GO"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - //System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("CREATE PROCEDURE uspnresults \n" + - "AS \n" + - " SELECT Count(contactid)\n" + - " FROM person.contact \n" + - "--begin_no_format\n" + - "SELECT Count(customerid) FROM\n" + - "sales.customer;\n" + - "--end_no_format \n" + - "GO")); - - } - - public static void testcomma_with_comment(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - option.removeComment = false; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT \n" - + "\n" - + " OWNAMT as OWNAMT1--comment1 \n" - + "\n" - + " , CMPYAMT as CMPYAMT1 --comment2 \n" - + "\n" - + " , INSUAMT as INSUAMT1--comment3 \n" - + "\n" - + " FROM AST.APADGNRL GNRL \n" - + "\n" - + " , AST.APAMACPT ACPT \n" - + "\n" - + " WHERE ACPT.INSTCD = GNRL.INSTCD"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT OWNAMT AS OWNAMT1,--comment1 \n" - + " CMPYAMT AS CMPYAMT1, --comment2 \n" - + " INSUAMT AS INSUAMT1--comment3 \n" - + "FROM AST.APADGNRL GNRL,\n" - + " AST.APAMACPT ACPT\n" - + "WHERE ACPT.INSTCD = GNRL.INSTCD")); - //assertTrue("remove_comment is not supported",false); - // System.out.println(result); - } - - - public static void testComment1() { - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." - + new Exception().getStackTrace()[0].getMethodName()); - option.removeComment = false; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvbigquery); - sqlparser.sqltext = "select /* multi line comment */ * from t;"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT /* multi line comment */ *\nFROM t;")); - } - - public static void testComment2() { - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." - + new Exception().getStackTrace()[0].getMethodName()); - option.removeComment = false; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "select a, f(b, 'c') d, e from Schema.Table where /*guid = 'aaaaaaaaaaaaaaaaaaaa' AND*/ start_dt >= 1140310;"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT a,\n" - + " F(b, 'c') d,\n" - + " e\n" - + "FROM SCHEMA.Table\n" - + "WHERE /*guid = 'aaaaaaaaaaaaaaaaaaaa' AND*/ start_dt >= 1140310;")); - } - - public static void testComment3() { - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." - + new Exception().getStackTrace()[0].getMethodName()); - option.removeComment = false; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace view view_set(RTRACE_HMY, RTRACE_KEY, RTRACE_RIP_FLAG)\n" - + "as (\n" - + "--===================================================\n" - + "--== Resident Tracebility Staging ==\n" - + "-- Created By : Ketan Goel\n" - + "-- Description : This procedure is to create resident\n" - + "-- tracebility union of Transer and non\n" - + "-- transfer tenants and roommates.\n" - + "-- Story : R360-351\n" - + "--===================================================\n" - + "select * from PARSER_AUTOMATION_DO_NOT_TOUCH.PUBLIC.EMPLOYEE1\n" - + "union\n" - + "select * from PARSER_AUTOMATION_DO_NOT_TOUCH.PUBLIC.EMPLOYEE2);"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE OR REPLACE VIEW view_set(RTRACE_HMY,\n" - + " RTRACE_KEY,\n" - + " RTRACE_RIP_FLAG) \n" - + "AS \n" - + " ( \n" - + "--===================================================\n" - + "--== Resident Tracebility Staging ==\n" - + "-- Created By : Ketan Goel\n" - + "-- Description : This procedure is to create resident\n" - + "-- tracebility union of Transer and non\n" - + "-- transfer tenants and roommates.\n" - + "-- Story : R360-351\n" - + "--===================================================\n" - + " SELECT *\n" - + " FROM PARSER_AUTOMATION_DO_NOT_TOUCH.PUBLIC.EMPLOYEE1\n" - + " UNION\n" - + " SELECT *\n" - + " FROM PARSER_AUTOMATION_DO_NOT_TOUCH.PUBLIC.EMPLOYEE2);")); - } - - public static void testComment4() { - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." - + new Exception().getStackTrace()[0].getMethodName()); - option.removeComment = false; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "select /* tt1 */ ss1.ca_county /* tt2 */, /* tt3 */ss1.d_year from source_table ss1"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT /* tt1 */ ss1.ca_county /* tt2 */,/* tt3 */\n" - + " ss1.d_year\n" - + "FROM source_table ss1")); - } - - public static void testComment5() { - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." - + new Exception().getStackTrace()[0].getMethodName()); - option.removeComment = false; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE or REPLACE VIEW GOLDMAN.PUBLIC.testview2 copy grants as (select * from GOLDMAN.PUBLIC.TABLE2) -- single-line comment\n;"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE OR REPLACE VIEW GOLDMAN.PUBLIC.testview2 copy grants AS (SELECT * FROM GOLDMAN.PUBLIC.TABLE2) -- single-line comment\n" - + " ;")); - } - - public static void testComment6() { - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." - + new Exception().getStackTrace()[0].getMethodName()); - option.removeComment = false; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE or REPLACE VIEW GOLDMAN.PUBLIC.testview2 copy grants as (select * from GOLDMAN.PUBLIC.TABLE2) -- single-line comment;"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE OR REPLACE VIEW GOLDMAN.PUBLIC.testview2 copy grants AS (SELECT * FROM GOLDMAN.PUBLIC.TABLE2) -- single-line comment;")); - } - - public static void testComment7() { - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." - + new Exception().getStackTrace()[0].getMethodName()); - option.removeComment = false; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "-- singlie-line at the beginning \n select top 4 col1 --single-line comment in middle \n from testschema.testtable;"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("-- singlie-line at the beginning \n" - + "SELECT top 4 col1 --single-line comment in middle \n" - + " FROM testschema.testtable;")); - } - - public static void testComment8() { - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." - + new Exception().getStackTrace()[0].getMethodName()); - option.removeComment = false; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "with person as ( -- reference query 7\n" - + " select c.id as person_id, c.name as -- reference query 8\n" - + " full_name from hive.extended_comments_test_db_hive2.Contacts as c -- reference query 8\n" - + " where -- reference query 8\n" - + " c.name like -- reference query 8\n" - + " 's%' -- reference query 6\n" - + " and ( -- reference query 8\n" - + " c.age > 18 -- reference query 8\n" - + " or -- reference query 8\n" - + " c.age < 12 -- reference query 8\n" - + " ) and c.id <= 122321213 union all -- reference query 8\n" - + " select l.id -- reference query 8\n" - + " as person_id,-- reference query 8\n" - + " l.name as fullname -- reference query 8\n" - + " from hive.extended_comments_test_db_hive2.Leads as l where l.name like 's%' ) -- reference query 9\n" - + " select person_id, full_name -- reference query 10\n" - + " from person where full_name like 's%' order by full_name; -- reference query 11"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase( - "WITH person\n" - + " AS ( -- reference query 7\n" - + " SELECT c.id AS person_id,\n" - + " c.name AS -- reference query 8\n" - + " full_name\n" - + " FROM hive.extended_comments_test_db_hive2.Contacts AS c -- reference query 8\n" - + " WHERE -- reference query 8\n" - + " c.name LIKE -- reference query 8\n" - + " 's%' -- reference query 6\n" - + " AND ( -- reference query 8\n" - + " c.age > 18 -- reference query 8\n" - + " OR -- reference query 8\n" - + " c.age < 12 ) -- reference query 8\n" - + " AND c.id <= 122321213\n" - + " UNION ALL -- reference query 8\n" - + " SELECT l.id -- reference query 8 \n" - + " AS person_id, -- reference query 8\n" - + " l.name AS fullname -- reference query 8\n" - + " FROM hive.extended_comments_test_db_hive2.Leads AS l\n" - + " WHERE l.name LIKE 's%') -- reference query 9\n" - + " SELECT person_id,\n" - + " full_name -- reference query 10\n" - + " FROM person\n" - + " WHERE full_name LIKE 's%'\n" - + " ORDER BY full_name; -- reference query 11")); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCompactMode.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCompactMode.java deleted file mode 100644 index 12deb1cb..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCompactMode.java +++ /dev/null @@ -1,41 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TCompactMode; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testCompactMode extends TestCase { - - /** - * turn sql into a single line, or multiple lines with a fixed line width - * no need to format this sql - * be careful when there are single line comment in SQL statement. - */ - public static void testSingleLine(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "select department_id,\n" + - " min( salary ) -- single line comment \n" + - "from employees \n" + - "group by department_id"; - - sqlparser.parse(); - option.compactMode = TCompactMode.Cpmugly; - option.lineWidth = 60; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT department_id, Min( salary ) \n" + - "/* -- single line comment */ FROM employees GROUP BY \n" + - "department_id")); - - //System.out.println(result); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateFunctionProcedure.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateFunctionProcedure.java deleted file mode 100644 index 27c881ae..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateFunctionProcedure.java +++ /dev/null @@ -1,680 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignStyle; -import gudusoft.gsqlparser.pp.para.styleenums.TLinefeedsCommaOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testCreateFunctionProcedure extends TestCase { - - public static void testBEStyle_Function_leftBEOnNewline(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION dbo.Fn_gettoporders(@custid AS INT, @n AS INT, @test AS CHAR) RETURNS TABLE \n" + - "AS \n" + - " RETURN SELECT TOP(@n) * FROM sales.salesorderheader WHERE customerid = @custid \n" + - " ORDER BY totaldue DESC "; - - sqlparser.parse(); - option.beStyleFunctionLeftBEOnNewline = true; - option.beStyleFunctionLeftBEIndentSize = 3; - option.beStyleBlockIndentSize = 3; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION dbo.Fn_gettoporders\n" + - " (@custid AS INT,\n" + - " @n AS INT,\n" + - " @test AS CHAR\n" + - ") \n" + - "RETURNS TABLE \n" + - "AS \n" + - " RETURN \n" + - " SELECT TOP(@n) *\n" + - " FROM sales.salesorderheader\n" + - " WHERE customerid = @custid\n" + - " ORDER BY totaldue DESC")); - // System.out.println(result); - } - - public static void testBEStyle_Function_rightBEOnNewline(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION dbo.Fn_gettoporders(@custid AS INT, @n AS INT, @test AS CHAR) RETURNS TABLE \n" + - "AS \n" + - " RETURN SELECT TOP(@n) * FROM sales.salesorderheader WHERE customerid = @custid \n" + - " ORDER BY totaldue DESC "; - - sqlparser.parse(); - option.beStyleFunctionLeftBEOnNewline = true; - option.beStyleFunctionLeftBEIndentSize = 4; - option.beStyleFunctionRightBEOnNewline = true; - option.beStyleFunctionRightBEIndentSize = 2; - String result = FormatterFactory.pp(sqlparser, option); - - //System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION dbo.Fn_gettoporders\n" + - " (@custid AS INT,\n" + - " @n AS INT,\n" + - " @test AS CHAR\n" + - " ) \n" + - "RETURNS TABLE \n" + - "AS \n" + - " RETURN \n" + - " SELECT TOP(@n) *\n" + - " FROM sales.salesorderheader\n" + - " WHERE customerid = @custid\n" + - " ORDER BY totaldue DESC")); - } - - - - - public static void testBEStyle_Function_FirstParamInNewline(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION dbo.Fn_gettoporders(@custid AS INT, @n AS INT, @test AS CHAR) RETURNS TABLE \n" + - "AS \n" + - " RETURN SELECT TOP(@n) * FROM sales.salesorderheader WHERE customerid = @custid \n" + - " ORDER BY totaldue DESC "; - - sqlparser.parse(); - option.beStyleFunctionLeftBEOnNewline = true; - option.beStyleFunctionLeftBEIndentSize = 4; - option.beStyleFunctionRightBEOnNewline = true; - option.beStyleFunctionRightBEIndentSize = 2; - option.beStyleFunctionFirstParamInNewline = true; - String result = FormatterFactory.pp(sqlparser, option); - - // System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION dbo.Fn_gettoporders\n" + - " (\n" + - " @custid AS INT,\n" + - " @n AS INT,\n" + - " @test AS CHAR\n" + - " ) \n" + - "RETURNS TABLE \n" + - "AS \n" + - " RETURN \n" + - " SELECT TOP(@n) *\n" + - " FROM sales.salesorderheader\n" + - " WHERE customerid = @custid\n" + - " ORDER BY totaldue DESC")); - - } - - public static void testParameters_Style(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION dbo.Fn_gettoporders(@custid AS INT, @n AS INT, @test AS CHAR) RETURNS TABLE \n" + - "AS \n" + - " RETURN SELECT TOP(@n) * FROM sales.salesorderheader WHERE customerid = @custid \n" + - " ORDER BY totaldue DESC "; - - sqlparser.parse(); - option.parametersStyle = TAlignStyle.AsWrapped; - option.beStyleFunctionRightBEOnNewline = false; - - String result = FormatterFactory.pp(sqlparser, option); - //System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION dbo.Fn_gettoporders(@custid AS INT, @n AS INT, @test AS CHAR) \n" + - "RETURNS TABLE \n" + - "AS \n" + - " RETURN \n" + - " SELECT TOP(@n) *\n" + - " FROM sales.salesorderheader\n" + - " WHERE customerid = @custid\n" + - " ORDER BY totaldue DESC")); - } - - public static void testParameters_Comma(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION dbo.Fn_gettoporders(@custid AS INT, @n AS INT, @test AS CHAR) RETURNS TABLE \n" + - "AS \n" + - " RETURN SELECT TOP(@n) * FROM sales.salesorderheader WHERE customerid = @custid \n" + - " ORDER BY totaldue DESC "; - - sqlparser.parse(); - option.parametersStyle = TAlignStyle.AsStacked; - option.parametersComma = TLinefeedsCommaOption.LfbeforeCommaWithSpace; - option.beStyleFunctionRightBEOnNewline = false; - String result = FormatterFactory.pp(sqlparser, option); - //System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION dbo.Fn_gettoporders(@custid AS INT\n" + - " , @n AS INT\n" + - " , @test AS CHAR) \n" + - "RETURNS TABLE \n" + - "AS \n" + - " RETURN \n" + - " SELECT TOP(@n) *\n" + - " FROM sales.salesorderheader\n" + - " WHERE customerid = @custid\n" + - " ORDER BY totaldue DESC")); - } - - public static void testMultiStatements(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION dbo.fn_FindReports (@InEmpID INTEGER)\n" + - "RETURNS @retFindReports TABLE \n" + - "(\n" + - " EmployeeID int primary key NOT NULL,\n" + - " Name nvarchar(255) NOT NULL,\n" + - " Title nvarchar(50) NOT NULL,\n" + - " EmployeeLevel int NOT NULL,\n" + - " Sort nvarchar (255) NOT NULL\n" + - ")\n" + - "--Returns a result set that lists all the employees who report to the \n" + - "--specific employee directly or indirectly.*/\n" + - "AS\n" + - "BEGIN\n" + - " WITH DirectReports(Name, Title, EmployeeID, EmployeeLevel, Sort) AS\n" + - " (SELECT CONVERT(Varchar(255), c.FirstName + ' ' + c.LastName),\n" + - " e.Title,\n" + - " e.EmployeeID,\n" + - " 1,\n" + - " CONVERT(Varchar(255), c.FirstName + ' ' + c.LastName)\n" + - " FROM HumanResources.Employee AS e\n" + - " JOIN Person.Contact AS c ON e.ContactID = c.ContactID \n" + - " WHERE e.EmployeeID = @InEmpID\n" + - " UNION ALL\n" + - " SELECT CONVERT(Varchar(255), REPLICATE ('| ' , EmployeeLevel) +\n" + - " c.FirstName + ' ' + c.LastName),\n" + - " e.Title,\n" + - " e.EmployeeID,\n" + - " EmployeeLevel + 1,\n" + - " CONVERT (Varchar(255), RTRIM(Sort) + '| ' + FirstName + ' ' + \n" + - " LastName)\n" + - " FROM HumanResources.Employee as e\n" + - " JOIN Person.Contact AS c ON e.ContactID = c.ContactID\n" + - " JOIN DirectReports AS d ON e.ManagerID = d.EmployeeID\n" + - " )\n" + - "-- copy the required columns to the result of the function \n" + - " INSERT @retFindReports\n" + - " SELECT EmployeeID, Name, Title, EmployeeLevel, Sort\n" + - " FROM DirectReports \n" + - " RETURN\n" + - "END;\n" + - "GO\n" + - "-- Example invocation\n" + - "SELECT EmployeeID, Name, Title, EmployeeLevel\n" + - "FROM dbo.fn_FindReports(109)\n" + - "ORDER BY Sort;"; - - sqlparser.parse(); - option.parametersStyle = TAlignStyle.AsStacked; - option.parametersComma = TLinefeedsCommaOption.LfbeforeCommaWithSpace; - option.beStyleFunctionRightBEOnNewline = false; - String result = FormatterFactory.pp(sqlparser, option); - //System.out.println("sql statements inside stored procedure not format correctly"); - //assertTrue("sql statements inside stored procedure not format correctly",false); - } - - public static void testCreateProcedure_includes_create_index(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE PROCEDURE [dbo].[GenerateTempBondDetail]\n" + - "AS\n" + - "BEGIN\n" + - " CREATE CLUSTERED INDEX ##PK_BondDetail2\n" + - " ON dbo.##BondDetail2( Index )\n" + - " ON [PRIMARY]\n" + - "END"; - - sqlparser.parse(); - option.parametersStyle = TAlignStyle.AsStacked; - option.parametersComma = TLinefeedsCommaOption.LfbeforeCommaWithSpace; - option.beStyleFunctionRightBEOnNewline = false; - String result = FormatterFactory.pp(sqlparser, option); - //System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("CREATE PROCEDURE [dbo].[GenerateTempBondDetail] \n" + - "AS \n" + - " BEGIN \n" + - " CREATE CLUSTERED INDEX ##pk_bonddetail2 ON dbo.##bonddetail2( index ) ON [PRIMARY] \n" + - " END")); - } - - - public static void testBigScript(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "create procedure MSupdatescdata\n" + - " @logical_record_parent_nickname int,\n" + - " @logical_record_parent_rowguid uniqueidentifier,\n" + - " @replnick binary(6),\n" + - " @parent_row_inserted bit output\n" + - "as\n" + - " declare @logical_record_parent_oldmaxversion int,\n" + - " @logical_record_lineage varbinary(311),\n" + - " @logical_record_parent_regular_lineage varbinary(311),\n" + - " @logical_record_parent_gencur bigint,\n" + - " @rows_updated int,\n" + - " @error int,\n" + - " @logical_record_parent_pubid uniqueidentifier,\n" + - " @logical_record_parent_objid int\n" + - "\n" + - " select top 1 @logical_record_parent_pubid = pubid, @logical_record_parent_objid = objid\n" + - " from dbo.sysmergearticles\n" + - " where nickname = @logical_record_parent_nickname\n" + - " if (isnull(permissions(@logical_record_parent_objid), 0) & 0x1b = 0 and {fn ISPALUSER(@logical_record_parent_pubid)} <> 1)\n" + - " begin\n" + - " raiserror(15247, 11, -1)\n" + - " return 1\n" + - " end\n" + - " \n" + - " select @parent_row_inserted = 0\n" + - " \n" + - " if @logical_record_parent_rowguid is null\n" + - " return 0\n" + - " \n" + - " select top 1 @logical_record_parent_oldmaxversion = maxversion_at_cleanup\n" + - " from dbo.sysmergearticles\n" + - " where nickname = @logical_record_parent_nickname\n" + - "\n" + - " exec sys.sp_MSmerge_getgencur @logical_record_parent_nickname, 1, @logical_record_parent_gencur output\n" + - " \n" + - " update dbo.MSmerge_tombstone\n" + - " set logical_record_lineage = { fn UPDATELINEAGE(logical_record_lineage, @replnick, @logical_record_parent_oldmaxversion+1) }\n" + - " where tablenick = @logical_record_parent_nickname\n" + - " and rowguid = @logical_record_parent_rowguid\n" + - " select @rows_updated = @@rowcount, @error = @@error\n" + - " \n" + - " if @error <> 0\n" + - " return 1\n" + - " \n" + - " if @rows_updated = 1\n" + - " return 0 -- no need to insert tombstone if rows_updated = 0. This proc is never called to insert a parent's tombstone.\n" + - " \n" + - " update dbo.MSmerge_contents\n" + - " set logical_record_lineage = { fn UPDATELINEAGE(logical_record_lineage, @replnick, @logical_record_parent_oldmaxversion+1) }\n" + - " where tablenick = @logical_record_parent_nickname\n" + - " and rowguid = @logical_record_parent_rowguid\n" + - " select @rows_updated = @@rowcount, @error = @@error\n" + - " \n" + - " if @error <> 0\n" + - " return 1\n" + - " \n" + - " if @rows_updated = 0\n" + - " begin\n" + - " select @logical_record_lineage = { fn UPDATELINEAGE(0x0, @replnick, @logical_record_parent_oldmaxversion+1) }\n" + - " \n" + - " -- if no cleanup done yet, use 1 as the version.\n" + - " if @logical_record_parent_oldmaxversion = 1\n" + - " select @logical_record_parent_regular_lineage = { fn UPDATELINEAGE(0x0, @replnick, 1) }\n" + - " else\n" + - " select @logical_record_parent_regular_lineage = @logical_record_lineage\n" + - " \n" + - " insert into dbo.MSmerge_contents (tablenick, rowguid, lineage, colv1, generation, partchangegen, \n" + - " logical_record_parent_rowguid, logical_record_lineage)\n" + - " values (@logical_record_parent_nickname, @logical_record_parent_rowguid, @logical_record_parent_regular_lineage,\n" + - " 0x00, @logical_record_parent_gencur, NULL, @logical_record_parent_rowguid, @logical_record_lineage)\n" + - " if @@error <> 0\n" + - " return 1\n" + - " \n" + - " select @parent_row_inserted = 1\n" + - " end\n" + - " \n" + - " return 0\n" + - "\n" + - "\n" + - "\n" + - "create procedure cainfo\n" + - " (@publisher sysname,\n" + - " @publisher_db sysname,\n" + - " @publication sysname,\n" + - " @datasource_type int = 0, \n" + - " @server_name sysname = NULL, \n" + - " @db_name sysname = NULL, \n" + - " @datasource_path nvarchar(255) = NULL, \n" + - " @compatlevel int = 10) \n" + - " \n" + - "as\n" + - " declare @retcode int\n" + - " declare @repid uniqueidentifier\n" + - " declare @pubid uniqueidentifier\n" + - " declare @schemaguid uniqueidentifier\n" + - " declare @replnick binary(6)\n" + - " declare @subscription_type int\n" + - " declare @validation_level int\n" + - " declare @reptype int\n" + - " declare @priority real\n" + - " declare @schversion int\n" + - " declare @status int\n" + - " declare @resync_gen bigint\n" + - " declare @replicastate uniqueidentifier\n" + - " declare @sync_type tinyint\n" + - " declare @description nvarchar(255)\n" + - " declare @dynamic_snapshot_received int\n" + - " declare @distributor sysname\n" + - " declare @dometadata_cleanup int\n" + - " declare @REPLICA_STATUS_Deleted tinyint\n" + - " declare @REPLICA_STATUS_BeforeRestore tinyint\n" + - " declare @REPLICA_STATUS_AttachFailed tinyint\n" + - " declare @retention_period_unit tinyint\n" + - " declare @islocalpubid bit, @islocalsubid bit, @cleanedup_unsent_changes bit\n" + - " declare @last_sync_time datetime, @num_time_units_since_last_sync int\n" + - " declare @supportability_mode int\n" + - "\n" + - " select @publisher_db = RTRIM(@publisher_db)\n" + - " select @db_name = RTRIM(@db_name)\n" + - " \n" + - " exec @retcode = sys.sp_MSmerge_validate_publication_presence @publication, @publisher_db, @publisher, @pubid output\n" + - " if @retcode <> 0 or @@error <> 0\n" + - " return 1\n" + - "\n" + - " set @REPLICA_STATUS_Deleted= 2\n" + - " set @REPLICA_STATUS_BeforeRestore= 7\n" + - " set @REPLICA_STATUS_AttachFailed= 6\n" + - "\n" + - " if (@server_name is NULL)\n" + - " SET @server_name = publishingservername()\n" + - "\n" + - " if (@db_name is NULL)\n" + - " set @db_name = db_name()\n" + - " \n" + - " select @retention_period_unit = retention_period_unit from dbo.sysmergepublications\n" + - " where pubid = @pubid\n" + - "\n" + - " SELECT @repid = subid, @replnick = replnickname, @priority = priority, @reptype = subscriber_type,\n" + - " @subscription_type = subscription_type , @status = status, @replicastate = replicastate,\n" + - " @schversion = schemaversion, @schemaguid = schemaguid,\n" + - " @sync_type = sync_type, @description = description, @priority = priority,\n" + - " @dometadata_cleanup = case when sys.fn_add_units_to_date(-1, @retention_period_unit, getdate()) > metadatacleanuptime then 1\n" + - " else 0\n" + - " end,\n" + - " @last_sync_time = last_sync_date,\n" + - " @supportability_mode = supportability_mode\n" + - " FROM dbo.sysmergesubscriptions\n" + - " WHERE UPPER(subscriber_server) collate database_default = UPPER(@server_name) collate database_default\n" + - " and db_name = @db_name and pubid = @pubid\n" + - " and status <> @REPLICA_STATUS_Deleted\n" + - " and status <> @REPLICA_STATUS_BeforeRestore\n" + - " and status <> @REPLICA_STATUS_AttachFailed\n" + - " if @repid is NULL\n" + - " begin\n" + - " RAISERROR(20021, 16, -1)\n" + - " return (1)\n" + - " end\n" + - "\n" + - " select @validation_level=validation_level, @resync_gen=resync_gen\n" + - " from dbo.MSmerge_replinfo\n" + - " where repid = @repid\n" + - "\n" + - " select @distributor = NULL\n" + - " select @publication = NULL\n" + - " if @repid = @pubid\n" + - " begin\n" + - " select @publication = name, @distributor = distributor from dbo.sysmergepublications\n" + - " where pubid = @pubid\n" + - " end\n" + - " \n" + - " select @num_time_units_since_last_sync = sys.fn_datediff_units(@retention_period_unit, getdate(), @last_sync_time)\n" + - "\n" + - " if @repid <> @pubid\n" + - " begin\n" + - " update s\n" + - " set s.application_name = p.program_name\n" + - " from sys.dm_exec_sessions p, dbo.sysmergesubscriptions s where p.session_id = @@spid and s.subid = @repid\n" + - " if @@error<>0\n" + - " return 1\n" + - " end\n" + - "\n" + - " if @compatlevel >= 90\n" + - " begin\n" + - " select @islocalpubid = sys.fn_MSmerge_islocalpubid(@pubid),\n" + - " @islocalsubid = sys.fn_MSmerge_islocalsubid(@repid),\n" + - " @cleanedup_unsent_changes = 0\n" + - " \n" + - " if @islocalsubid = 0\n" + - " select @cleanedup_unsent_changes = cleanedup_unsent_changes\n" + - " from dbo.sysmergesubscriptions\n" + - " where subid = @repid -- right replica row\n" + - " else\n" + - " begin\n" + - " if @islocalpubid = 0\n" + - " select @cleanedup_unsent_changes = cleanedup_unsent_changes\n" + - " from dbo.sysmergesubscriptions\n" + - " where pubid = @pubid\n" + - " and subid = @pubid -- we are interested in the cleanedup_unsent_changes bit from the publisher replica row\n" + - " else\n" + - " select @cleanedup_unsent_changes = 0 -- no way to tell which subscriber we are syncing with\n" + - " end\n" + - " \n" + - " select @repid, @replnick,\n" + - " @reptype, @subscription_type, @priority, @schversion, @schemaguid, @status, @replicastate,\n" + - " @sync_type, @description, @publication, @distributor, @validation_level, @resync_gen, @dometadata_cleanup,\n" + - " @pubid, @cleanedup_unsent_changes, @num_time_units_since_last_sync, @supportability_mode\n" + - " end\n" + - " else\n" + - " begin\n" + - " select @repid, {fn REPLNICK_90_TO_80(@replnick)},\n" + - " @reptype, @subscription_type, @priority, @schversion, @schemaguid, @status, @pubid,\n" + - " @sync_type, @description, @publication, @distributor, @validation_level, @resync_gen, @dometadata_cleanup\n" + - "\n" + - " end\n" + - "\n" + - " return (0)\n" + - "\n" + - "\n" + - "create procedure MSgrdata\n" + - " (@tablenick int,\n" + - " @rowguid uniqueidentifier,\n" + - " @lineage varbinary(311) output,\n" + - " @colv varbinary(2953) output,\n" + - " @pubid uniqueidentifier = NULL,\n" + - " @compatlevel int = 10)\n" + - "as\n" + - " begin\n" + - " if @compatlevel < 90\n" + - " begin\n" + - " declare @iscoltracked int\n" + - " declare @cCols int\n" + - " set @iscoltracked= sys.fn_fIsColTracked(@tablenick)\n" + - " if @iscoltracked = 1\n" + - " begin\n" + - " set @cCols= sys.fn_cColvEntries_80(@pubid, @tablenick)\n" + - " end\n" + - " end\n" + - " select\n" + - " @lineage= case when @compatlevel >= 90 then lineage else {fn LINEAGE_90_TO_80(lineage)} end,\n" + - " @colv= case when @compatlevel >= 90 or @iscoltracked = 0 then colv1 else {fn COLV_90_TO_80(colv1, @cCols)} end\n" + - " from dbo.MSmerge_contents\n" + - " with (serializable)\n" + - " where tablenick = @tablenick and rowguid = @rowguid\n" + - " end\n" + - "\n" + - "create procedure sp_MSpttweight\n" + - " @tablenick int,\n" + - " @rowguid uniqueidentifier,\n" + - " @acknowledge_only bit,\n" + - " @rowvector varbinary(11)= null\n" + - "as\n" + - " set nocount on\n" + - " \n" + - " declare @METADATA_TYPE_DeleteLightweight tinyint\n" + - " declare @METADATA_TYPE_DeleteLightweightProcessed tinyint\n" + - " declare @pubnick tinyint \n" + - " declare @removefrompartialvector binary(1)\n" + - " declare @versionzerovector binary(11) \n" + - " update dbo.MSmerge_rowtrack\n" + - " set rowvector= case @acknowledge_only\n" + - " when 1 then rowvector -- For a simple acknowledge, leave the vector alone.\n" + - " else @rowvector\n" + - " end,\n" + - " changed= sys.fn_MSdayasnumber(getdate()) \n" + - " where\n" + - " tablenick = @tablenick and\n" + - " rowguid = @rowguid and\n" + - " sync_cookie = @pubnick and\n" + - " (\n" + - " 1=@acknowledge_only or\n" + - " (\n" + - " {fn GETMAXVERSION(\n" + - " case\n" + - " when rowvector is null then @versionzerovector\n" + - " when rowvector = @removefrompartialvector then @versionzerovector\n" + - " else rowvector\n" + - " end)}\n" + - " <= {fn GETMAXVERSION(isnull(@rowvector, @versionzerovector))}\n" + - " )\n" + - " )\n" + - "\n" + - " begin\n" + - " update dbo.MSmerge_rowtrack\n" + - " set sync_cookie= null,\n" + - " changetype= case changetype\n" + - " when @METADATA_TYPE_DeleteLightweight then @METADATA_TYPE_DeleteLightweightProcessed\n" + - " else changetype\n" + - " end,\n" + - " changed= sys.fn_MSdayasnumber(getdate())\n" + - " where\n" + - " sync_cookie = @pubnick\n" + - " begin\n" + - " update dbo.MSmerge_rowtrack\n" + - " set rowvector= @rowvector\n" + - " where\n" + - " tablenick = @tablenick and\n" + - " (\n" + - " {fn GETMAXVERSION(\n" + - " case\n" + - " when rowvector is null then @versionzerovector\n" + - " else rowvector\n" + - " end)}\n" + - " <= {fn GETMAXVERSION(isnull(@rowvector, @versionzerovector))}\n" + - " )\n" + - "\n" + - " end\n" + - " end\n" + - "\n" + - "\n" + - "create procedure sp_setap\n" + - " @rolename sysname, -- name app role\n" + - " @fCreateCookie bit = 0\n" + - "as\n" + - " set nocount on\n" + - " if (@fCreateCookie = 1)\n" + - " setuser @rolename \n" + - " else\n" + - " setuser @rolename \n" + - " if (@@error <> 0)\n" + - " return (1)\n" + - " \n" + - "return (0) \n" + - "\n" + - "\n" + - "create procedure MSrepl_b_s\n" + - "as\n" + - " declare @sync_bit int\n" + - " declare @dist_bit int\n" + - " \n" + - " begin\n" + - " update MSrepl_backup_lsns set next_xact_id = t2.xact_id, next_xact_seqno = m.xact_seqno from\n" + - " (select tm.publisher_database_id, max(tm.xact_seqno) from \n" + - " ((select t.publisher_database_id, max(substring(t.xact_seqno, 1, 10)) from\n" + - " MSrepl_transactions t where\n" + - " not t.xact_id = 0x0\n" + - " group by t.publisher_database_id, substring(t.xact_seqno, 1, 10)\n" + - " having count(t.xact_seqno) < 2)\n" + - " union \n" + - " (select t.publisher_database_id, max(substring(xact_seqno, 1, 10)) from\n" + - " MSrepl_transactions t where\n" + - " not t.xact_id = 0x0\n" + - " and t.xact_id = substring(t.xact_seqno, 1, 10)\n" + - " group by t.publisher_database_id )\n" + - " )as tm(publisher_database_id, xact_seqno)\n" + - " group by tm.publisher_database_id\n" + - " )as m(publisher_database_id, xact_seqno),\n" + - " MSrepl_transactions t2 \n" + - " \n" + - " end\n" + - " \n" + - " return 0\n" + - "\n" + - "\n" + - "create procedure MSrestorefk(\n" + - " @program_name sysname = null\n" + - ")as\n" + - "begin\n" + - " set nocount on\n" + - " declare @retcode int,\n" + - " @parent_name sysname,\n" + - " @parent_schema sysname,\n" + - " @referenced_object_id int\n" + - " begin\n" + - " select key_constraints.name\n" + - " from sys.index_columns index_columns\n" + - " inner join sys.key_constraints key_constraints\n" + - " on indexes.name = key_constraints.name\n" + - " where indexes.object_id = @referenced_object_id and indexes.index_id not in\n" + - " (select index_columns.index_id\n" + - " from sys.index_columns index_columns\n" + - " left join\n" + - " (select referenced_column_name, constraint_column_id\n" + - " from dbo.MSsavedforeignkeycolumns\n" + - " where program_name = @program_name\n" + - " and parent_schema = @parent_schema) foreignkeycolumns (referenced_column_name, constraint_column_id)\n" + - " on columns.name = foreignkeycolumns.referenced_column_name\n" + - " and index_columns.key_ordinal = foreignkeycolumns.constraint_column_id\n" + - " where index_columns.object_id = @referenced_object_id\n" + - " and foreignkeycolumns.referenced_column_name is null\n" + - " )\n" + - " \n" + - " \n" + - " end\n" + - "end\n" + - "\n" + - "\n" + - "CREATE PROCEDURE MSindex\n" + - " @tablename nvarchar(517), @index_name nvarchar(258) = NULL\n" + - "AS\n" + - "BEGIN\n" + - " DECLARE @table_id int\n" + - " DECLARE @pagesize int\n" + - " \n" + - " SELECT @table_id = id\n" + - " FROM dbo.sysobjects\n" + - " WHERE (id = object_id(@tablename))\n" + - " AND ((OBJECTPROPERTY(id, N'IsTable') = 1) OR (OBJECTPROPERTY(id, N'IsView') = 1))\n" + - " CHECKPOINT\n" + - " \n" + - "\n" + - "END\n" + - "\n" + - "\n" + - "create procedure vupgrade\n" + - "as\n" + - " begin\n" + - " alter table dbo.sysmergearticles add default 0 for compensate_for_errors\n" + - " end \n" + - " begin\n" + - " alter table dbo.MSmerge_errorlineage alter column lineage varbinary(311) not null\n" + - " update dbo.MSmerge_errorlineage set lineage= {fn LINEAGE_80_TO_90(lineage)}\n" + - " end\n" + - "\n" + - "CREATE UNIQUE CLUSTERED INDEX ucMSrepl_transactions ON dbo.MSrepl_transactions\n" + - " (publisher_database_id, xact_seqno)\n" + - " WITH STATISTICS_NORECOMPUTE\n" + - " \n" + - " "; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - // System.out.println("not formatted correctly"); - //assertTrue("not formatted correctly",false); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateTable.java deleted file mode 100644 index f5adc81e..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testCreateTable.java +++ /dev/null @@ -1,124 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignOption; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignStyle; -import gudusoft.gsqlparser.pp.para.styleenums.TLinefeedsCommaOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testCreateTable extends TestCase { - - public static void testBEStyle_createtable_leftBEOnNewline(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE TABLE dept(deptno NUMBER(2),\n" + - " dname VARCHAR2(14),\n" + - " loc VARCHAR2(13)) "; - - sqlparser.parse(); - option.beStyleCreatetableLeftBEOnNewline = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE TABLE dept\n" + - " (deptno NUMBER(2),\n" + - " dname VARCHAR2(14),\n" + - " loc VARCHAR2(13))")); - //System.out.println(result); - } - - public static void testBEStyle_createtable_rightBEOnNewline(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE TABLE dept(deptno NUMBER(2),\n" + - " dname VARCHAR2(14),\n" + - " loc VARCHAR2(13)) "; - - sqlparser.parse(); - option.beStyleCreatetableRightBEOnNewline = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE TABLE dept(deptno NUMBER(2),\n" + - " dname VARCHAR2(14),\n" + - " loc VARCHAR2(13)\n" + - ")")); - //System.out.println(result); - } - - public static void testCreatetable_ListitemInNewLine(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE TABLE dept(deptno NUMBER(2),\n" + - " dname VARCHAR2(14),\n" + - " loc VARCHAR2(13)) "; - - sqlparser.parse(); - option.createtableListitemInNewLine = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE TABLE dept(\n" + - " deptno NUMBER(2),\n" + - " dname VARCHAR2(14),\n" + - " loc VARCHAR2(13))")); - //System.out.println(result); - } - - public static void testCreatetable_Fieldlist_Align_option(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE TABLE dept(deptno NUMBER(2),\n" + - " dname VARCHAR2(14),\n" + - " loc VARCHAR2(13)) "; - - sqlparser.parse(); - option.createtableFieldlistAlignOption = TAlignOption.AloRight; - option.beStyleCreatetableLeftBEOnNewline = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE TABLE dept\n" + - " (deptno NUMBER(2),\n" + - " dname VARCHAR2(14),\n" + - " loc VARCHAR2(13))")); - //System.out.println(result); - } - - public static void testDefaultAligntype(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE TABLE dept(deptno NUMBER(2),\n" + - " dname VARCHAR2(14),\n" + - " loc VARCHAR2(13)) "; - - sqlparser.parse(); - option.defaultAligntype = TAlignStyle.AsWrapped; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE TABLE dept(deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13))")); - //System.out.println(result); - } - - public static void testDefaultCommaOption(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE TABLE dept(deptno NUMBER(2),\n" + - " dname VARCHAR2(14),\n" + - " loc VARCHAR2(13)) "; - - sqlparser.parse(); - option.defaultAligntype = TAlignStyle.AsStacked; - option.defaultCommaOption = TLinefeedsCommaOption.LfbeforeCommaWithSpace; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE TABLE dept(deptno NUMBER(2)\n" + - " , dname VARCHAR2(14)\n" + - " , loc VARCHAR2(13))")); - //System.out.println(result); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testDeclare.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testDeclare.java deleted file mode 100644 index 5763b1ea..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testDeclare.java +++ /dev/null @@ -1,28 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - - -public class testDeclare extends TestCase { - - public static void testLinebreakAfterDeclare(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "DECLARE @s VARCHAR(1000), @s2 VARCHAR(10)"; - - sqlparser.parse(); - option.linebreakAfterDeclare = true; - option.indentLen = 2; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.equalsIgnoreCase("DECLARE\n" + - " @s VARCHAR(1000),\n" + - " @s2 VARCHAR(10)")); - //System.out.println(result); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testExecute.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testExecute.java deleted file mode 100644 index 5325e040..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testExecute.java +++ /dev/null @@ -1,35 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testExecute extends TestCase { - - public static void testLinebreakBeforeParamInExec(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "EXEC Sptrackmember @p_member_id, '2.2', @p_weeknum "; - - sqlparser.parse(); - option.linebreakBeforeParamInExec = false; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("EXEC sptrackmember @p_member_id, '2.2', @p_weeknum")); - - sqlparser.parse(); - option.linebreakBeforeParamInExec = true; - result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("EXEC sptrackmember \n" + - " @p_member_id,\n" + - " '2.2',\n" + - " @p_weeknum")); - //System.out.println(result); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testFromClause.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testFromClause.java deleted file mode 100644 index d6afc429..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testFromClause.java +++ /dev/null @@ -1,140 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignStyle; -import gudusoft.gsqlparser.pp.para.styleenums.TLinefeedsCommaOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testFromClause extends TestCase { - - public static void testSelect_fromclause_Style(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - - sqlparser.sqltext = "SELECT last_name,\n" + - " department_name dept_name \n" + - "FROM employees,\n" + - " departments; "; - - sqlparser.parse(); - option.selectFromclauseStyle = TAlignStyle.AsWrapped; - String result = FormatterFactory.pp(sqlparser, option); - // System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("SELECT last_name,\n" + - " department_name dept_name\n" + - "FROM employees, departments;")); - } - - public static void testSelect_fromclause_Comma(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - - sqlparser.sqltext = "SELECT last_name,\n" + - " department_name dept_name \n" + - "FROM employees,\n" + - " departments; "; - - - sqlparser.parse(); - option.selectFromclauseComma = TLinefeedsCommaOption.LfbeforeCommaWithSpace; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT last_name,\n" + - " department_name dept_name\n" + - "FROM employees\n" + - " , departments;")); - //System.out.println(result); - } - - public static void testFromClauseInNewLine(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - - sqlparser.sqltext = "SELECT last_name,\n" + - " department_name dept_name \n" + - "FROM employees,\n" + - " departments; "; - - - sqlparser.parse(); - option.fromClauseInNewLine = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT last_name,\n" + - " department_name dept_name\n" + - "FROM \n" + - " employees,\n" + - " departments;")); - //System.out.println(result); - - } - - public static void testSelect_FromclauseJoinOnInNewline(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - - sqlparser.sqltext = "SELECT p.name AS product,\n" + - " p.listprice AS 'List Price',\n" + - " p.discount AS 'discount' \n" + - "FROM \n" + - " production.product p \n" + - " JOIN production.productsubcategory s \n" + - " ON p.productsubcategoryid = s.productsubcategoryid \n" + - "WHERE s.name LIKE @product \n" + - " AND p.listprice < @maxprice;"; - - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - option.selectFromclauseJoinOnInNewline = false; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT p.name AS product,\n" + - " p.listprice AS 'List Price',\n" + - " p.discount AS 'discount'\n" + - "FROM production.product p\n" + - " JOIN production.productsubcategory s ON p.productsubcategoryid = s.productsubcategoryid\n" + - "WHERE s.name LIKE @product\n" + - " AND p.listprice < @maxprice;")); - - - } - - public static void testAlignJoinWithFromKeyword(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - - sqlparser.sqltext = "SELECT p.name AS product,\n" + - " p.listprice AS 'List Price',\n" + - " p.discount AS 'discount' \n" + - "FROM \n" + - " production.product p \n" + - " JOIN production.productsubcategory s \n" + - " ON p.productsubcategoryid = s.productsubcategoryid \n" + - "WHERE s.name LIKE @product \n" + - " AND p.listprice < @maxprice;"; - - - assertTrue(sqlparser.parse() == 0); - option.alignJoinWithFromKeyword = true; - String result = FormatterFactory.pp(sqlparser, option); - //System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("SELECT p.name AS product,\n" + - " p.listprice AS 'List Price',\n" + - " p.discount AS 'discount'\n" + - "FROM production.product p\n" + - "JOIN production.productsubcategory s\n" + - " ON p.productsubcategoryid = s.productsubcategoryid\n" + - "WHERE s.name LIKE @product\n" + - " AND p.listprice < @maxprice;")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testFunctionCall.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testFunctionCall.java deleted file mode 100644 index e96a1d59..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testFunctionCall.java +++ /dev/null @@ -1,120 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignStyle; -import gudusoft.gsqlparser.pp.para.styleenums.TCaseOption; -import gudusoft.gsqlparser.pp.para.styleenums.TLinefeedsCommaOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testFunctionCall extends TestCase { - - public static void testCurrentDate1() { - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." - + new Exception().getStackTrace()[0].getMethodName()); - option.alignAliasInSelectList = false; - option.caseKeywords = TCaseOption.CoUppercase; - option.caseIdentifier = TCaseOption.CoNoChange; - option.caseFuncname = TCaseOption.CoUppercase; - option.caseDatatype = TCaseOption.CoUppercase; - option.caseWhenThenInSameLine = true; - // http://www.dpriver.com/ppv3/whitespace_padding.php - option.wsPaddingOperatorArithmetic = true; - option.wsPaddingParenthesesInFunction = false; - option.wsPaddingParenthesesInFunctionCall = false; - option.wsPaddingParenthesesOfSubQuery = false; - option.beStyleCreatetableLeftBEOnNewline = true; - option.beStyleBlockIndentSize = 0; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "SELECT case when CURRENT_DATE()> current_date then TRUE else FALSE end as status"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT CASE\n" - + " WHEN CURRENT_DATE() > CURRENT_DATE THEN TRUE\n" - + " ELSE FALSE\n" - + " END AS status")); - // System.out.println(result); - } - - public static void testCurrentDate2() { - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." - + new Exception().getStackTrace()[0].getMethodName()); - option.alignAliasInSelectList = false; - option.caseKeywords = TCaseOption.CoUppercase; - option.caseIdentifier = TCaseOption.CoNoChange; - option.caseFuncname = TCaseOption.CoUppercase; - option.caseDatatype = TCaseOption.CoUppercase; - option.caseWhenThenInSameLine = true; - // http://www.dpriver.com/ppv3/whitespace_padding.php - option.wsPaddingOperatorArithmetic = true; - option.wsPaddingParenthesesInFunction = false; - option.wsPaddingParenthesesInFunctionCall = false; - option.wsPaddingParenthesesOfSubQuery = false; - option.beStyleCreatetableLeftBEOnNewline = true; - option.beStyleBlockIndentSize = 0; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "SELECT case when current_date> CURRENT_DATE() then TRUE else FALSE end as status"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT CASE\n" - + " WHEN CURRENT_DATE > CURRENT_DATE() THEN TRUE\n" - + " ELSE FALSE\n" - + " END AS status")); - // System.out.println(result); - } - - public static void testParameters(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - option.functionCallParametersStyle = TAlignStyle.AsStacked; - option.functionCallParametersComma = TLinefeedsCommaOption.LfBeforeComma; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SET @a = dbo.Func1(@param1, @param2, @param3 + 1,\n" + - " @param4) "; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SET @a = dbo.Func1(@param1\n" + - " ,@param2\n" + - " ,@param3 + 1\n" + - " ,@param4)")); - //System.out.println(result); - } - - public static void testDecode(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - option.functionCallParametersStyle = TAlignStyle.AsStacked; - option.functionCallParametersComma = TLinefeedsCommaOption.LfbeforeCommaWithSpace; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT last_name,\n" + - " DECODE(job_id, 'It_prog', 1.10 * salary, 'st_clerk', 1.15 * salary, 'sa_rep', 1.20 * salary,\n" + - " salary) revised_salary\n" + - "FROM employees;"; - - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT last_name,\n" + - " Decode(job_id\n" + - " , 'It_prog'\n" + - " , 1.10 * salary\n" + - " , 'st_clerk'\n" + - " , 1.15 * salary\n" + - " , 'sa_rep'\n" + - " , 1.20 * salary\n" + - " , salary) revised_salary\n" + - "FROM employees;")); - // System.out.println(result); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testGroupByClause.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testGroupByClause.java deleted file mode 100644 index ab369250..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testGroupByClause.java +++ /dev/null @@ -1,88 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignStyle; -import gudusoft.gsqlparser.pp.para.styleenums.TLinefeedsCommaOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testGroupByClause extends TestCase { - - public static void testSelect_Groupby_Style(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT e.employee_id,\n" + - " d.locatioin_id \n" + - "FROM employees e,departments d \n" + - "group by e.employee_id,d.locatioin_id,d.locatioin_id2 "; - - sqlparser.parse(); - option.selectColumnlistStyle = TAlignStyle.AsStacked; - String result = FormatterFactory.pp(sqlparser, option); - - assertTrue(result.trim().equalsIgnoreCase("SELECT e.employee_id,\n" + - " d.locatioin_id\n" + - "FROM employees e,\n" + - " departments d\n" + - "GROUP BY e.employee_id,\n" + - " d.locatioin_id,\n" + - " d.locatioin_id2")); - //System.out.println(result); - } - - public static void testSelect_Columnlist_Comma(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT e.employee_id,\n" + - " d.locatioin_id \n" + - "FROM employees e,departments d \n" + - "group by e.employee_id,d.locatioin_id,d.locatioin_id2 "; - - sqlparser.parse(); - option.selectColumnlistStyle = TAlignStyle.AsStacked; - option.selectColumnlistComma = TLinefeedsCommaOption.LfbeforeCommaWithSpace; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT e.employee_id\n" + - " , d.locatioin_id\n" + - "FROM employees e,\n" + - " departments d\n" + - "GROUP BY e.employee_id\n" + - " , d.locatioin_id\n" + - " , d.locatioin_id2")); - - //System.out.println(result); - } - - public static void testSelectItemInNewLine(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT e.employee_id,\n" + - " d.locatioin_id \n" + - "FROM employees e,departments d \n" + - "group by e.employee_id,d.locatioin_id,d.locatioin_id2 "; - - sqlparser.parse(); - option.selectItemInNewLine = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT \n" + - " e.employee_id,\n" + - " d.locatioin_id\n" + - "FROM employees e,\n" + - " departments d\n" + - "GROUP BY\n" + - " e.employee_id,\n" + - " d.locatioin_id,\n" + - " d.locatioin_id2")); - //System.out.println(result); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIndentation.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIndentation.java deleted file mode 100644 index 6c24939d..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIndentation.java +++ /dev/null @@ -1,330 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testIndentation extends TestCase { - - public static void testIndentLen(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "DECLARE @s VARCHAR(1000), @s2 VARCHAR(10)"; - - sqlparser.parse(); - option.linebreakAfterDeclare = true; - option.indentLen = 3; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("DECLARE\n" + - " @s VARCHAR(1000),\n" + - " @s2 VARCHAR(10)")); - //System.out.println(result); - } - - public static void testUseTab(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "DECLARE @s VARCHAR(1000), @s2 VARCHAR(10)"; - - sqlparser.parse(); - option.linebreakAfterDeclare = true; - option.indentLen = 2; - option.useTab = true; - option.tabSize = 3; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("DECLARE\n" + - " @s VARCHAR(1000),\n" + - " @s2 VARCHAR(10)")); - //System.out.println(result); - } - - /** - * don't use BEStyle_Function_BodyIndent, replace it by beStyleBlockIndentSize - */ - public static void testBEStyle_Function_BodyIndent(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE PROCEDURE humanresources.Uspgetallemployees \n" + - "AS \n" + - "SELECT lastname,\n" + - "firstname,\n" + - "jobtitle,\n" + - "department \n" + - "FROM humanresources.vemployeedepartment; \n"; - - sqlparser.parse(); - option.beStyleBlockIndentSize = 3; - - String result = FormatterFactory.pp(sqlparser, option); - //System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("CREATE PROCEDURE humanresources.uspgetallemployees \n" + - "AS \n" + - " SELECT lastname,\n" + - " firstname,\n" + - " jobtitle,\n" + - " department\n" + - " FROM humanresources.vemployeedepartment;")); - } - - public static void testBEStyle_Block_leftBEIndentSize(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE PROCEDURE humanresources.Uspgetallemployees \n" + - "AS \n" + - "BEGIN \n" + - "SELECT lastname,\n" + - "firstname,\n" + - "jobtitle,\n" + - "department \n" + - "FROM humanresources.vemployeedepartment; \n" + - "END \n"; - - sqlparser.parse(); - option.beStyleBlockLeftBEOnNewline = true; // begin keyword in new line - option.beStyleBlockLeftBEIndentSize = 2; // offset of begin keyword - option.beStyleBlockIndentSize = 1; // code indentation inside begin/end block - - String result = FormatterFactory.pp(sqlparser, option); - //System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("CREATE PROCEDURE humanresources.uspgetallemployees \n" + - "AS \n" + - " BEGIN \n" + - " SELECT lastname,\n" + - " firstname,\n" + - " jobtitle,\n" + - " department\n" + - " FROM humanresources.vemployeedepartment; \n" + - " END")); - } - - public static void testBEStyle_Block_leftBEOnNewline(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "IF @cost <= @compareprice \n" + - "BEGIN \n" + - "PRINT 'These products can be purchased for less than ' \n" + - "END \n" + - "ELSE \n" + - "PRINT 'The prices for all products in this category exceed '"; - - sqlparser.parse(); - option.beStyleBlockLeftBEOnNewline = false; // begin keyword not in a new line - option.beStyleBlockRightBEIndentSize = 0; // used in indent end keyword, valid only when beStyleBlockLeftBEOnNewline = false, otherwise, use beStyleBlockLeftBEIndentSize to indent begin and end keyword - option.beStyleBlockIndentSize = 2; - option.beStyleIfElseSingleStmtIndentSize = 4; - - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("IF @cost <= @compareprice BEGIN \n" + - " PRINT 'These products can be purchased for less than ' \n" + - "END \n" + - "ELSE \n" + - " PRINT 'The prices for all products in this category exceed '")); - //assertTrue("beStyleBlockLeftBEOnNewline,beStyleBlockLeftBEIndentSize,beStyleBlockIndentSize,beStyleIfElseSingleStmtIndentSize not implemented",false); - // System.out.println(result); - } - - public static void testBEStyle_Block_leftBEOnNewline2(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "IF @cost <= @compareprice \n" + - "BEGIN \n" + - "PRINT 'These products can be purchased for less than ' \n" + - "END \n" + - "ELSE \n" + - "PRINT 'The prices for all products in this category exceed '"; - - sqlparser.parse(); - option.beStyleBlockLeftBEOnNewline = false; - option.beStyleBlockRightBEIndentSize = 2; - option.beStyleBlockIndentSize = 0; - option.beStyleIfElseSingleStmtIndentSize = 2; - - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("IF @cost <= @compareprice BEGIN \n" + - " PRINT 'These products can be purchased for less than ' \n" + - " END \n" + - "ELSE \n" + - " PRINT 'The prices for all products in this category exceed '")); - // System.out.println(result); - } - - public static void testBEStyle_Block_leftBEOnNewline3(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "IF @cost <= @compareprice \n" + - "BEGIN \n" + - "PRINT 'These products can be purchased for less than ' \n" + - "END \n" + - "ELSE \n" + - "PRINT 'The prices for all products in this category exceed '"; - - sqlparser.parse(); - option.beStyleBlockLeftBEOnNewline = true; - option.beStyleBlockLeftBEIndentSize = 0; // used to indent both begin and end keyword - option.beStyleBlockIndentSize = 2; - option.beStyleIfElseSingleStmtIndentSize = 2; - - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("IF @cost <= @compareprice \n" + - "BEGIN \n" + - " PRINT 'These products can be purchased for less than ' \n" + - "END \n" + - "ELSE \n" + - " PRINT 'The prices for all products in this category exceed '")); - // System.out.println(result); - } - - public static void testBEStyle_Block_leftBEOnNewline4(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "IF @cost <= @compareprice \n" + - "BEGIN \n" + - "PRINT 'These products can be purchased for less than ' \n" + - "END \n" + - "ELSE \n" + - "PRINT 'The prices for all products in this category exceed '"; - - sqlparser.parse(); - option.beStyleBlockLeftBEOnNewline = true; - option.beStyleBlockLeftBEIndentSize = 2; - option.beStyleBlockIndentSize = 2; - option.beStyleIfElseSingleStmtIndentSize = 2; - - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("IF @cost <= @compareprice \n" + - " BEGIN \n" + - " PRINT 'These products can be purchased for less than ' \n" + - " END \n" + - "ELSE \n" + - " PRINT 'The prices for all products in this category exceed '")); - // System.out.println(result); - } - - public static void testMssqlCreateFunction_ReturnStmt(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION Sales.fn_SalesByStore (@storeid int)\n" + - "RETURNS TABLE\n" + - "AS\n" + - "RETURN \n" + - "(\n" + - " SELECT P.ProductID, P.Name, SUM(SD.LineTotal) AS 'YTD Total'\n" + - " FROM Production.Product AS P \n" + - " JOIN Sales.SalesOrderDetail AS SD ON SD.ProductID = P.ProductID\n" + - " JOIN Sales.SalesOrderHeader AS SH ON SH.SalesOrderID = SD.SalesOrderID\n" + - " WHERE SH.CustomerID = @storeid\n" + - " GROUP BY P.ProductID, P.Name\n" + - "); "; - - sqlparser.parse(); - option.beStyleBlockIndentSize = 3; - String result = FormatterFactory.pp(sqlparser, option); - - // System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION sales.Fn_salesbystore (@storeid INT\n" + - ") \n" + - "RETURNS TABLE \n" + - "AS \n" + - " RETURN \n" + - " (\n" + - " SELECT p.productid,\n" + - " p.name,\n" + - " Sum(sd.linetotal) AS 'YTD Total'\n" + - " FROM production.product AS p\n" + - " JOIN sales.salesorderdetail AS sd\n" + - " ON sd.productid = p.productid\n" + - " JOIN sales.salesorderheader AS sh\n" + - " ON sh.salesorderid = sd.salesorderid\n" + - " WHERE sh.customerid = @storeid\n" + - " GROUP BY p.productid,\n" + - " p.name\n" + - " );")); - } - - public static void testMssqlCreateFunction_BlockStmt(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "create function infFKfrom(@tbID int, @colID smallint) returns varchar(2000) as \n" + - "begin declare @r varchar(2000), @a varchar(200)\n" + - "select @r='', @a=''\n" + - "DECLARE cs CURSOR FOR\n" + - " select FKfrom=convert(varchar(200),object_name(rkeyid)+'.'+r.[name])\n" + - " from sysforeignkeys c join syscolumns f on c.fkeyid=f.[id] and c.fkey=f.colID\n" + - "join syscolumns r on c.rkeyid=r.[id] and c.rkey=r.colID where fkeyID=@tbID and fkey=@colID\n" + - " order by keyNo\n" + - "\n" + - "OPEN cs\n" + - " FETCH NEXT FROM cs INTO @a\n" + - "WHILE @@FETCH_STATUS = 0 BEGIN\n" + - "select @r=@r+case when len(@r)>0 then ', ' else '' end+@a\n" + - "FETCH NEXT FROM cs INTO @a\n" + - "END\n" + - " CLOSE cs\n" + - " DEALLOCATE cs\n" + - " return(@r)\n" + - "end\n" + - "GO"; - - sqlparser.parse(); - option.beStyleBlockLeftBEOnNewline = true; - option.beStyleBlockLeftBEIndentSize = 2; - option.beStyleBlockIndentSize = 3; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION Inffkfrom(@tbID INT,\n" + - " @colID SMALLINT\n" + - ") \n" + - "RETURNS VARCHAR(2000) \n" + - "AS \n" + - " BEGIN \n" + - " DECLARE @r VARCHAR(2000),\n" + - " @a VARCHAR(200) \n" + - " SELECT @r = '',\n" + - " @a = '' \n" + - " DECLARE cs CURSOR FOR SELECT FKfrom = Convert(VARCHAR(200),Object_name(rkeyid) + '.' + r.[name])\n" + - " FROM sysforeignkeys c\n" + - " JOIN syscolumns f\n" + - " ON c.fkeyid = f.[id]\n"+ - " AND c.fkey = f.colid\n" + - " JOIN syscolumns r\n" + - " ON c.rkeyid = r.[id]\n"+ - " AND c.rkey = r.colid\n" + - " WHERE fkeyID = @tbID\n" + - " AND fkey = @colID\n" + - " ORDER BY keyNo \n" + - "\n" + - " OPEN cs \n" + - " FETCH NEXT FROM cs INTO @a \n" + - " WHILE @@FETCH_STATUS = 0 \n" + - " BEGIN \n" + - " SELECT @r = @r + CASE\n" + - " WHEN Len(@r) > 0\n" + - " THEN ', '\n" + - " ELSE ''\n" + - " END + @a \n" + - " FETCH NEXT FROM cs INTO @a \n" + - " END \n" + - " CLOSE cs \n" + - " DEALLOCATE cs \n" + - " RETURN(@r) \n" + - " END\n" + - "GO")); - //System.out.println(result); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testInsertList.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testInsertList.java deleted file mode 100644 index 852ae440..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testInsertList.java +++ /dev/null @@ -1,81 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignStyle; -import gudusoft.gsqlparser.pp.para.styleenums.TLinefeedsCommaOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testInsertList extends TestCase { - - public static void testInsert_Columnlist_Style(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - - sqlparser.sqltext = "INSERT INTO employees\n" + - " (employee_id,\n" + - " first_name,\n" + - " department_id) VALUES (113, NULL, 100);"; - - option.insertColumnlistStyle = TAlignStyle.AsWrapped; - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("INSERT INTO employees\n" + - " (employee_id, first_name, department_id)\n" + - "VALUES (113,\n" + - " NULL,\n" + - " 100);")); - //System.out.println(result); - } - - public static void testInsert_Valuelist_Style(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - - sqlparser.sqltext = "INSERT INTO employees\n" + - " (employee_id,\n" + - " first_name,\n" + - " department_id) VALUES (113, NULL, 100);"; - - option.insertValuelistStyle = TAlignStyle.AsWrapped; - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("INSERT INTO employees\n" + - " (employee_id,\n" + - " first_name,\n" + - " department_id)\n" + - "VALUES (113, NULL, 100);")); - //System.out.println(result); - } - - public static void testDefaultCommaOption(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - - sqlparser.sqltext = "INSERT INTO employees\n" + - " (employee_id,\n" + - " first_name,\n" + - " department_id) VALUES (113, NULL, 100);"; - - option.defaultCommaOption = TLinefeedsCommaOption.LfbeforeCommaWithSpace; - option.insertColumnlistStyle = TAlignStyle.AsStacked; - option.insertValuelistStyle = TAlignStyle.AsStacked; - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("INSERT INTO employees\n" + - " (employee_id\n" + - " , first_name\n" + - " , department_id)\n" + - "VALUES (113\n" + - " , NULL\n" + - " , 100);")); - // System.out.println(result); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIntoClause.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIntoClause.java deleted file mode 100644 index 6a001cfb..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIntoClause.java +++ /dev/null @@ -1,32 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testIntoClause extends TestCase { - - /** - * gFmtOpt.IntoClauseInNewline not implemented - * No need to implement in this version as it not in document before. - */ - public static void testSelectIntoClause(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "select col1, col2,sum(col3) INTO Persons_backup from table1"; - sqlparser.parse(); - - String result = FormatterFactory.pp(sqlparser, option); - //assertTrue("gFmtOpt.IntoClauseInNewline not implemented",false); - // System.out.println("gFmtOpt.IntoClauseInNewline not implemented"); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIssues.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIssues.java deleted file mode 100644 index 90afce0b..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testIssues.java +++ /dev/null @@ -1,72 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TCaseOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testIssues extends TestCase { - - public static void testI7L1MP(){ - String statement = "select * from isb-cgc-cbq.TARGET_versioned.vcf_hg38_gdc_r22;"; - // Another sample query - SELECT * FROM ostk-gcp-ostkedwviews-prod.opd_views.item_daily_juice_fix where ostk_full_sku = '41053812-000-000' and partner_num = 96824; - TGSqlParser gsp = new TGSqlParser(EDbVendor.dbvbigquery); - gsp.setSqltext(statement); - int errorCode = gsp.parse(); - - GFmtOpt option = GFmtOptFactory.newInstance(); - option.alignAliasInSelectList = false; - option.caseKeywords = TCaseOption.CoUppercase; - option.caseIdentifier = TCaseOption.CoNoChange; - option.caseFuncname = TCaseOption.CoUppercase; - option.caseDatatype = TCaseOption.CoUppercase; - option.caseWhenThenInSameLine = true; - // http://www.dpriver.com/ppv3/whitespace_padding.php - option.wsPaddingOperatorArithmetic = true; - option.wsPaddingParenthesesInFunction = false; - option.wsPaddingParenthesesInFunctionCall = false; - option.wsPaddingParenthesesOfSubQuery = false; - option.beStyleCreatetableLeftBEOnNewline = true; - option.beStyleBlockIndentSize = 0; - - String result = FormatterFactory.pp(gsp, option); - - assertTrue(result.trim().equalsIgnoreCase("SELECT *\n" - + "FROM isb-cgc-cbq.TARGET_versioned.vcf_hg38_gdc_r22;")); - } - - public static void testI7ODIZ(){ - String statement = "SELECT * FROM test_query_ingestion.test1 WHERE test1_col3 > sysdate-2000;"; - // Another sample query for db type = dbvansi - create table valib.paylist (IdNum char(4), Gender char(1), Jobcode char(3), Salary num, Birth num); - TGSqlParser gsp = new TGSqlParser(EDbVendor.dbvoracle); - gsp.setSqltext(statement); - int errorCode = gsp.parse(); - - GFmtOpt option = GFmtOptFactory.newInstance(); - option.alignAliasInSelectList = false; - option.caseKeywords = TCaseOption.CoUppercase; - option.caseIdentifier = TCaseOption.CoNoChange; - option.caseFuncname = TCaseOption.CoUppercase; - option.caseDatatype = TCaseOption.CoUppercase; - option.caseWhenThenInSameLine = true; - // http://www.dpriver.com/ppv3/whitespace_padding.php - option.wsPaddingOperatorArithmetic = true; - option.wsPaddingParenthesesInFunction = false; - option.wsPaddingParenthesesInFunctionCall = false; - option.wsPaddingParenthesesOfSubQuery = false; - option.beStyleCreatetableLeftBEOnNewline = true; - option.beStyleBlockIndentSize = 0; - - String result = FormatterFactory.pp(gsp, option); - - assertTrue(result.trim().equalsIgnoreCase("SELECT *\n" - + "FROM test_query_ingestion.test1\n" - + "WHERE test1_col3 > SYSDATE - 2000;")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testLineNumber.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testLineNumber.java deleted file mode 100644 index 0fbec4d0..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testLineNumber.java +++ /dev/null @@ -1,36 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testLineNumber extends TestCase { - - public static void testlinenumber_enabled(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "select department_id,\n" + - " min( salary ) -- single line comment \n" + - "from employees \n" + - "group by department_id"; - - sqlparser.parse(); - option.linenumberEnabled = true; - option.linenumberLeftMargin = 1; - option.linenumberRightMargin = 4; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.equalsIgnoreCase(" 1 SELECT department_id,\n" + - " 2 Min(salary) -- single line comment \n" + - " 3 FROM employees\n" + - " 4 GROUP BY department_id")); -// System.out.println(result); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testOracleCreateView.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testOracleCreateView.java deleted file mode 100644 index be4a62f3..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testOracleCreateView.java +++ /dev/null @@ -1,379 +0,0 @@ - -package gudusoft.gsqlparser.formatsqlTest; - -/* - * Date: 11-4-6 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testOracleCreateView extends TestCase -{ - - public static void test1( ) - { - GFmtOpt option = GFmtOptFactory.newInstance( new Exception( ).getStackTrace( )[0].getClassName( ) - + "." - + new Exception( ).getStackTrace( )[0].getMethodName( ) ); - option.maxSelectListColumn = Integer.MAX_VALUE; - - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "CREATE OR REPLACE FORCE VIEW \"POTC_PO_LINES\" (\"A$CHART_OF_ACCOUNTS_NAME\", \"A$CONTRACT_NUMBER\", \"A$HAZARD_CLASS\", \"A$ITEM_DESCRIPTION\", \"A$JOB_NAME\", \"A$LEDGER_NAME\", \"A$LINE_CREATION_DATE\", \"A$LINE_TYPE\", \"A$OPERATING_UNIT_NAME\", \"A$PO_NUMBER\", \"A$TERMS\", \"A$UN_HAZARD_MATL_NUMBER\", \"A$VENDOR_NAME\", \"A$VENDOR_NUMBER\", \"A$VENDOR_PRODUCT_NUMBER\", \"A$ZZ__________________________\", \"ALLOW_PRICE_OVERRIDE_FLAG\", \"AMOUNT\", \"AUCTION_DISPLAY_NUMBER\", \"AUCTION_LINE_NUMBER\", \"AUTHORIZATION_STATUS\", \"BASE_CURRENCY_CODE\", \"BID_LINE_NUMBER\", \"BID_NUMBER\", \"CANCEL_DATE\", \"CANCEL_FLAG\", \"CANCEL_REASON\", \"CAPITAL_EXPENSE_FLAG\", \"CHART_OF_ACCOUNTS_NAME\", \"CLOSED_CODE\", \"CLOSED_DATE\", \"CLOSED_REASON\", \"CONSIGNED_CONSUMPTION_FLAG\", \"CONTRACT_NUMBER\", \"CONTRACTOR_ASSIGN_END_DATE\", \"CONTRACTOR_ASSIGN_START_DATE\", \"CONTRACTOR_FIRST_NAME\", \"CONTRACTOR_LAST_NAME\", \"CURRENCY\", \"HAZARD_CLASS\", \"INCOME_TAX_TYPE\", \"ITEM$INVENTORY_ITEM_ID\", \"ITEM$ORGANIZATION_ID\", \"ITEM$SV$ITEM\", \"ITEMCAT$CV$ITEM_CATEGORY_KFF\", \"ITEMCAT$CATEGORY_ID\", \"ITEM_DESCRIPTION\", \"ITEM_REVISION\", \"JOB_NAME\", \"LEDGER_NAME\", \"LINE_CREATION_DATE\", \"LINE_TYPE\", \"LIST_PRICE_PER_UNIT\", \"LIST_PRICE_PER_UNIT_BASE\", \"MANUAL_PRICE_CHANGE_FLAG\", \"MARKET_PRICE\", \"MARKET_PRICE_BASE\", \"MATCHING_BASIS\", \"NEGOTIATED_BY_PREPARER_FLAG\", \"NOTE_TO_VENDOR\", \"OPEN_FLAG\", \"OPERATING_UNIT_NAME\", \"OVER_TOLERANCE_ERROR_FLAG\", \"POLIN$ATTRIBUTE_CATEGORY\", \"POLIN$ATTRIBUTE_13\", \"POLIN$ORDER_SEQUENCE\", \"PO_LINE_NUMBER\", \"PO_NUMBER\", \"PRICE_TYPE\", \"PRICE_TYPE_LOOKUP_CODE\", \"PURCHASE_BASIS\", \"QTY_RECEIVED_TOLERANCE_PCT\", \"QUANTITY\", \"RATE\", \"RATE_DATE\", \"RATE_TYPE\", \"SET_OF_BOOKS_NAME\", \"SHIPMENT_LINE_NUMBER\", \"SHIPMENT_LINE_STATUS\", \"SHIPMENT_QUANTITY\", \"TAXABLE_FLAG\", \"TERMS\", \"TRANSACTION_REASON_CODE\", \"UN_HAZARD_MATL_NUMBER\", \"UNIT_OF_MEASURE\", \"UNIT_PRICE\", \"UNIT_PRICE_BASE\", \"UNORDERED_FLAG\", \"VEND$SUPPLIER_HOME_PAGE\", \"VENDOR_NAME\", \"VENDOR_NUMBER\", \"VENDOR_PRODUCT_NUMBER\", \"Z$$_________________________\", \"Z$POTC_PO_LINES\") AS SELECT XMAP.CHART_OF_ACCOUNTS_NAME A$Chart_Of_Accounts_Name, Contract_Number.SEGMENT1 A$Contract_Number, Hazard_Class.HAZARD_CLASS A$Hazard_Class, POLIN.ITEM_DESCRIPTION A$Item_Description, Job_Name.NAME A$Job_Name, XMAP.LEDGER_NAME A$Ledger_Name, POLIN.CREATION_DATE A$Line_Creation_Date, Line_Type.LINE_TYPE A$Line_Type, XMAP.OPERATING_UNIT_NAME A$Operating_Unit_Name, POHDR.SEGMENT1 A$PO_Number, Terms.NAME A$Terms, UN_Hazard_Matl_Number.UN_NUMBER A$UN_Hazard_Matl_Number, VEND.VENDOR_NAME A$Vendor_Name, VEND.SEGMENT1 A$Vendor_Number, POLIN.VENDOR_PRODUCT_NUM A$Vendor_Product_Number, 'A$ZZ__________________________Copyright Noetix Corporation 1992-2010' A$ZZ__________________________, NVL(POLIN.ALLOW_PRICE_OVERRIDE_FLAG,'Y') Allow_Price_Override_Flag, NVL(POLIN.AMOUNT,0) Amount, POLIN.AUCTION_DISPLAY_NUMBER Auction_Display_Number, POLIN.AUCTION_LINE_NUMBER Auction_Line_Number, Authorization_Status.MEANING Authorization_Status, GLSOB.CURRENCY_CODE Base_Currency_Code, POLIN.BID_LINE_NUMBER Bid_Line_Number, POLIN.BID_NUMBER Bid_Number, POLIN.CANCEL_DATE Cancel_Date, NVL(POLIN.CANCEL_FLAG,'N') Cancel_Flag, POLIN.CANCEL_REASON Cancel_Reason, NVL(POLIN.CAPITAL_EXPENSE_FLAG,'N') Capital_Expense_Flag, XMAP.CHART_OF_ACCOUNTS_NAME Chart_Of_Accounts_Name, NVL(POLIN.CLOSED_CODE,'OPEN') Closed_Code, POLIN.CLOSED_DATE Closed_Date, POLIN.CLOSED_REASON Closed_Reason, NVL(POHDR.CONSIGNED_CONSUMPTION_FLAG,'N') Consigned_Consumption_Flag, Contract_Number.SEGMENT1 Contract_Number, POLIN.EXPIRATION_DATE Contractor_Assign_End_Date, POLIN.START_DATE Contractor_Assign_Start_Date, POLIN.CONTRACTOR_FIRST_NAME Contractor_First_Name, POLIN.CONTRACTOR_LAST_NAME Contractor_Last_Name, POHDR.CURRENCY_CODE Currency, Hazard_Class.HAZARD_CLASS Hazard_Class, POLIN.TYPE_1099 Income_Tax_Type, MSTK1.INVENTORY_ITEM_ID Item$Inventory_Item_Id, MSTK1.ORGANIZATION_ID Item$Organization_Id, MSTK1.SV$Item Item$SV$Item, ItemCat.CV$Item_Category_KFF ItemCat$CV$Item_Category_KFF, ItemCat.CATEGORY_ID ItemCat$Category_Id, POLIN.ITEM_DESCRIPTION Item_Description, POLIN.ITEM_REVISION Item_Revision, Job_Name.NAME Job_Name, XMAP.LEDGER_NAME Ledger_Name, POLIN.CREATION_DATE Line_Creation_Date, Line_Type.LINE_TYPE Line_Type, POLIN.LIST_PRICE_PER_UNIT List_Price_Per_Unit, POLIN.LIST_PRICE_PER_UNIT * NVL(POHDR.RATE, DECODE(POHDR.CURRENCY_CODE,GLSOB.CURRENCY_CODE,1,NULL)) List_Price_Per_Unit_Base, NVL(POLIN.MANUAL_PRICE_CHANGE_FLAG,'N') Manual_Price_Change_Flag, POLIN.MARKET_PRICE Market_Price, POLIN.MARKET_PRICE * NVL(POHDR.RATE, DECODE(POHDR.CURRENCY_CODE,GLSOB.CURRENCY_CODE,1,NULL)) Market_Price_Base, Matching_Basis.MEANING Matching_Basis, NVL(POLIN.NEGOTIATED_BY_PREPARER_FLAG,'N') Negotiated_By_Preparer_Flag, POLIN.NOTE_TO_VENDOR Note_To_Vendor, DECODE(NVL(POLIN.CLOSED_CODE,'OPEN')||NVL(POLIN.CANCEL_FLAG,'N'),'OPENN','Y','N') Open_Flag, XMAP.OPERATING_UNIT_NAME Operating_Unit_Name, NVL(POLIN.OVER_TOLERANCE_ERROR_FLAG,'N') Over_Tolerance_Error_Flag, POLIN.ATTRIBUTE_CATEGORY POLIN$ATTRIBUTE_CATEGORY, POLIN.ATTRIBUTE13 POLIN$Attribute_13, decode(POLIN.ATTRIBUTE_CATEGORY,'2052',POLIN.ATTRIBUTE1,null) POLIN$Order_Sequence, POLIN.LINE_NUM PO_Line_Number, POHDR.SEGMENT1 PO_Number, Price_Type.MEANING Price_Type, POLIN.PRICE_TYPE_LOOKUP_CODE Price_Type_Lookup_Code, Purchase_Basis.MEANING Purchase_Basis, POLIN.QTY_RCV_TOLERANCE Qty_Received_Tolerance_Pct, NVL(POLIN.QUANTITY,0) Quantity, POHDR.RATE Rate, POHDR.RATE_DATE Rate_Date, POHDR.RATE_TYPE Rate_Type, TO_CHAR(NULL) Set_Of_Books_Name, TO_NUMBER(NULL) Shipment_Line_Number, TO_CHAR(NULL) Shipment_Line_Status, TO_NUMBER(NULL) Shipment_Quantity, NVL(POLIN.TAXABLE_FLAG,'N') Taxable_Flag, Terms.NAME Terms, POLIN.TRANSACTION_REASON_CODE Transaction_Reason_Code, UN_Hazard_Matl_Number.UN_NUMBER UN_Hazard_Matl_Number, Unit_Of_Measure.DESCRIPTION Unit_Of_Measure, POLIN.UNIT_PRICE Unit_Price, POLIN.UNIT_PRICE * NVL(POHDR.RATE, DECODE(POHDR.CURRENCY_CODE,GLSOB.CURRENCY_CODE,1,NULL)) Unit_Price_Base, NVL(POLIN.UNORDERED_FLAG,'N') Unordered_Flag, VEND.ATTRIBUTE14 VEND$Supplier_Home_Page, VEND.VENDOR_NAME Vendor_Name, VEND.SEGMENT1 Vendor_Number, POLIN.VENDOR_PRODUCT_NUM Vendor_Product_Number, 'Z$$_________________________' Z$$_________________________, POLIN.rowid Z$POTC_PO_Lines FROM PO.PO_HEADERS_ALL Contract_Number, dev_602_medium_tc.XXK_Mtl_Cat_S2 ItemCat, HR.PER_JOBS Job_Name, PO.PO_UN_NUMBERS_TL UN_Hazard_Matl_Number, PO.PO_HAZARD_CLASSES_TL Hazard_Class, PO.PO_LINE_TYPES_TL Line_Type, INV.MTL_UNITS_OF_MEASURE_TL Unit_Of_Measure, AP.AP_TERMS_TL Terms, dev_602_medium_tc.N_PO_LOOKUPS_VL Matching_Basis, dev_602_medium_tc.N_PO_LOOKUPS_VL Purchase_Basis, dev_602_medium_tc.N_PO_LOOKUPS_VL Price_Type, dev_602_medium_tc.N_PO_LOOKUPS_VL Authorization_Status, dev_602_medium_tc.XXK_Sys_Item MSTK1, INV.MTL_SYSTEM_ITEMS_B ITEM, GL.GL_LEDGERS GLSOB, AP.FINANCIALS_SYSTEM_PARAMS_ALL FIN, AP.AP_SUPPLIERS VEND, PO.PO_HEADERS_ALL POHDR, dev_602_medium_tc.POTC_OU_ACL_Map_Base XMAP, PO.PO_LINES_ALL POLIN WHERE 'Copyright Noetix Corporation 1992-2010' is not null AND POLIN.PO_HEADER_ID = POHDR.PO_HEADER_ID AND NVL(POLIN.ORG_ID,-9999) = XMAP.ORG_ID AND POHDR.VENDOR_ID = VEND.VENDOR_ID AND POHDR.TYPE_LOOKUP_CODE = 'STANDARD' AND POLIN.ITEM_ID = ITEM.INVENTORY_ITEM_ID(+) AND NVL(ITEM.ORGANIZATION_ID,FIN.INVENTORY_ORGANIZATION_ID) = FIN.INVENTORY_ORGANIZATION_ID AND NVL(POHDR.ORG_ID,-9999) = NVL(FIN.ORG_ID,-9999) AND FIN.SET_OF_BOOKS_ID = GLSOB.LEDGER_ID AND POHDR.AUTHORIZATION_STATUS = Authorization_Status.LOOKUP_CODE(+) AND Authorization_Status.LOOKUP_TYPE(+) = 'AUTHORIZATION STATUS' AND Authorization_Status.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND Authorization_Status.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.LOOKUP_SECURITY_GROUP (Authorization_Status.LOOKUP_TYPE(+),Authorization_Status.VIEW_APPLICATION_ID(+)) AND POLIN.PRICE_TYPE_LOOKUP_CODE = Price_Type.LOOKUP_CODE(+) AND Price_Type.LOOKUP_TYPE(+) = 'PRICE TYPE' AND Price_Type.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND Price_Type.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.LOOKUP_SECURITY_GROUP (Price_Type.LOOKUP_TYPE(+),Price_Type.VIEW_APPLICATION_ID(+)) AND POLIN.PURCHASE_BASIS = Purchase_Basis.LOOKUP_CODE(+) AND Purchase_Basis.LOOKUP_TYPE(+) = 'PURCHASE BASIS' AND Purchase_Basis.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND Purchase_Basis.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.LOOKUP_SECURITY_GROUP (Purchase_Basis.LOOKUP_TYPE(+),Purchase_Basis.VIEW_APPLICATION_ID(+)) AND POLIN.MATCHING_BASIS = Matching_Basis.LOOKUP_CODE(+) AND Matching_Basis.LOOKUP_TYPE(+) = 'MATCHING BASIS' AND Matching_Basis.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND Matching_Basis.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.LOOKUP_SECURITY_GROUP (Matching_Basis.LOOKUP_TYPE(+),Matching_Basis.VIEW_APPLICATION_ID(+)) AND POHDR.TERMS_ID = Terms.TERM_ID(+) AND Terms.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND POLIN.UNIT_MEAS_LOOKUP_CODE = Unit_Of_Measure.UNIT_OF_MEASURE(+) AND Unit_Of_Measure.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND POLIN.LINE_TYPE_ID = Line_Type.LINE_TYPE_ID(+) AND Line_Type.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND POLIN.HAZARD_CLASS_ID = Hazard_Class.HAZARD_CLASS_ID(+) AND Hazard_Class.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND POLIN.UN_NUMBER_ID = UN_Hazard_Matl_Number.UN_NUMBER_ID(+) AND UN_Hazard_Matl_Number.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND POLIN.JOB_ID = Job_Name.JOB_ID(+) AND POLIN.CATEGORY_ID = ItemCat.CATEGORY_ID(+) AND POLIN.CONTRACT_ID = Contract_Number.PO_HEADER_ID(+) AND ITEM.INVENTORY_ITEM_ID = MSTK1.INVENTORY_ITEM_ID (+) AND ITEM.ORGANIZATION_ID = MSTK1.ORGANIZATION_ID (+)"; - - // System.out.println(sqlparser.sqltext); - assertTrue( sqlparser.parse( ) == 0 ); - String result = FormatterFactory.pp( sqlparser, option ); - String leftExpr = result.trim( ); - //System.out.println(leftExpr); - - String rightExpr = "CREATE OR REPLACE FORCE VIEW \"POTC_PO_LINES\" (\"A$CHART_OF_ACCOUNTS_NAME\",\n" - + " \"A$CONTRACT_NUMBER\",\n" - + " \"A$HAZARD_CLASS\",\n" - + " \"A$ITEM_DESCRIPTION\",\n" - + " \"A$JOB_NAME\",\n" - + " \"A$LEDGER_NAME\",\n" - + " \"A$LINE_CREATION_DATE\",\n" - + " \"A$LINE_TYPE\",\n" - + " \"A$OPERATING_UNIT_NAME\",\n" - + " \"A$PO_NUMBER\",\n" - + " \"A$TERMS\",\n" - + " \"A$UN_HAZARD_MATL_NUMBER\",\n" - + " \"A$VENDOR_NAME\",\n" - + " \"A$VENDOR_NUMBER\",\n" - + " \"A$VENDOR_PRODUCT_NUMBER\",\n" - + " \"A$ZZ__________________________\",\n" - + " \"ALLOW_PRICE_OVERRIDE_FLAG\",\n" - + " \"AMOUNT\",\n" - + " \"AUCTION_DISPLAY_NUMBER\",\n" - + " \"AUCTION_LINE_NUMBER\",\n" - + " \"AUTHORIZATION_STATUS\",\n" - + " \"BASE_CURRENCY_CODE\",\n" - + " \"BID_LINE_NUMBER\",\n" - + " \"BID_NUMBER\",\n" - + " \"CANCEL_DATE\",\n" - + " \"CANCEL_FLAG\",\n" - + " \"CANCEL_REASON\",\n" - + " \"CAPITAL_EXPENSE_FLAG\",\n" - + " \"CHART_OF_ACCOUNTS_NAME\",\n" - + " \"CLOSED_CODE\",\n" - + " \"CLOSED_DATE\",\n" - + " \"CLOSED_REASON\",\n" - + " \"CONSIGNED_CONSUMPTION_FLAG\",\n" - + " \"CONTRACT_NUMBER\",\n" - + " \"CONTRACTOR_ASSIGN_END_DATE\",\n" - + " \"CONTRACTOR_ASSIGN_START_DATE\",\n" - + " \"CONTRACTOR_FIRST_NAME\",\n" - + " \"CONTRACTOR_LAST_NAME\",\n" - + " \"CURRENCY\",\n" - + " \"HAZARD_CLASS\",\n" - + " \"INCOME_TAX_TYPE\",\n" - + " \"ITEM$INVENTORY_ITEM_ID\",\n" - + " \"ITEM$ORGANIZATION_ID\",\n" - + " \"ITEM$SV$ITEM\",\n" - + " \"ITEMCAT$CV$ITEM_CATEGORY_KFF\",\n" - + " \"ITEMCAT$CATEGORY_ID\",\n" - + " \"ITEM_DESCRIPTION\",\n" - + " \"ITEM_REVISION\",\n" - + " \"JOB_NAME\",\n" - + " \"LEDGER_NAME\",\n" - + " \"LINE_CREATION_DATE\",\n" - + " \"LINE_TYPE\",\n" - + " \"LIST_PRICE_PER_UNIT\",\n" - + " \"LIST_PRICE_PER_UNIT_BASE\",\n" - + " \"MANUAL_PRICE_CHANGE_FLAG\",\n" - + " \"MARKET_PRICE\",\n" - + " \"MARKET_PRICE_BASE\",\n" - + " \"MATCHING_BASIS\",\n" - + " \"NEGOTIATED_BY_PREPARER_FLAG\",\n" - + " \"NOTE_TO_VENDOR\",\n" - + " \"OPEN_FLAG\",\n" - + " \"OPERATING_UNIT_NAME\",\n" - + " \"OVER_TOLERANCE_ERROR_FLAG\",\n" - + " \"POLIN$ATTRIBUTE_CATEGORY\",\n" - + " \"POLIN$ATTRIBUTE_13\",\n" - + " \"POLIN$ORDER_SEQUENCE\",\n" - + " \"PO_LINE_NUMBER\",\n" - + " \"PO_NUMBER\",\n" - + " \"PRICE_TYPE\",\n" - + " \"PRICE_TYPE_LOOKUP_CODE\",\n" - + " \"PURCHASE_BASIS\",\n" - + " \"QTY_RECEIVED_TOLERANCE_PCT\",\n" - + " \"QUANTITY\",\n" - + " \"RATE\",\n" - + " \"RATE_DATE\",\n" - + " \"RATE_TYPE\",\n" - + " \"SET_OF_BOOKS_NAME\",\n" - + " \"SHIPMENT_LINE_NUMBER\",\n" - + " \"SHIPMENT_LINE_STATUS\",\n" - + " \"SHIPMENT_QUANTITY\",\n" - + " \"TAXABLE_FLAG\",\n" - + " \"TERMS\",\n" - + " \"TRANSACTION_REASON_CODE\",\n" - + " \"UN_HAZARD_MATL_NUMBER\",\n" - + " \"UNIT_OF_MEASURE\",\n" - + " \"UNIT_PRICE\",\n" - + " \"UNIT_PRICE_BASE\",\n" - + " \"UNORDERED_FLAG\",\n" - + " \"VEND$SUPPLIER_HOME_PAGE\",\n" - + " \"VENDOR_NAME\",\n" - + " \"VENDOR_NUMBER\",\n" - + " \"VENDOR_PRODUCT_NUMBER\",\n" - + " \"Z$$_________________________\",\n" - + " \"Z$POTC_PO_LINES\") \n" - + "AS \n" - + " SELECT xmap.chart_of_accounts_name a$chart_of_accounts_name,\n" - + " contract_number.segment1 a$contract_number,\n" - + " hazard_class.hazard_class a$hazard_class,\n" - + " polin.item_description a$item_description,\n" - + " job_name.NAME a$job_name,\n" - + " xmap.ledger_name a$ledger_name,\n" - + " polin.creation_date a$line_creation_date,\n" - + " line_type.line_type a$line_type,\n" - + " xmap.operating_unit_name a$operating_unit_name,\n" - + " pohdr.segment1 a$po_number,\n" - + " terms.NAME a$terms,\n" - + " un_hazard_matl_number.un_number a$un_hazard_matl_number,\n" - + " vend.vendor_name a$vendor_name,\n" - + " vend.segment1 a$vendor_number,\n" - + " polin.vendor_product_num a$vendor_product_number,\n" - + " 'A$ZZ__________________________Copyright Noetix Corporation 1992-2010' a$zz__________________________,\n" - + " Nvl(polin.allow_price_override_flag,'Y') allow_price_override_flag,\n" - + " Nvl(polin.amount,0) amount,\n" - + " polin.auction_display_number auction_display_number,\n" - + " polin.auction_line_number auction_line_number,\n" - + " authorization_status.meaning authorization_status,\n" - + " glsob.currency_code base_currency_code,\n" - + " polin.bid_line_number bid_line_number,\n" - + " polin.bid_number bid_number,\n" - + " polin.cancel_date cancel_date,\n" - + " Nvl(polin.cancel_flag,'N') cancel_flag,\n" - + " polin.cancel_reason cancel_reason,\n" - + " Nvl(polin.capital_expense_flag,'N') capital_expense_flag,\n" - + " xmap.chart_of_accounts_name chart_of_accounts_name,\n" - + " Nvl(polin.closed_code,'OPEN') closed_code,\n" - + " polin.closed_date closed_date,\n" - + " polin.closed_reason closed_reason,\n" - + " Nvl(pohdr.consigned_consumption_flag,'N') consigned_consumption_flag,\n" - + " contract_number.segment1 contract_number,\n" - + " polin.expiration_date contractor_assign_end_date,\n" - + " polin.start_date contractor_assign_start_date,\n" - + " polin.contractor_first_name contractor_first_name,\n" - + " polin.contractor_last_name contractor_last_name,\n" - + " pohdr.currency_code currency,\n" - + " hazard_class.hazard_class hazard_class,\n" - + " polin.type_1099 income_tax_type,\n" - + " mstk1.inventory_item_id item$inventory_item_id,\n" - + " mstk1.organization_id item$organization_id,\n" - + " mstk1.sv$item item$sv$item,\n" - + " itemcat.cv$item_category_kff itemcat$cv$item_category_kff,\n" - + " itemcat.category_id itemcat$category_id,\n" - + " polin.item_description item_description,\n" - + " polin.item_revision item_revision,\n" - + " job_name.NAME job_name,\n" - + " xmap.ledger_name ledger_name,\n" - + " polin.creation_date line_creation_date,\n" - + " line_type.line_type line_type,\n" - + " polin.list_price_per_unit list_price_per_unit,\n" - + " polin.list_price_per_unit * Nvl(pohdr.rate, Decode(pohdr.currency_code,glsob.currency_code,1,NULL)) list_price_per_unit_base,\n" - + " Nvl(polin.manual_price_change_flag,'N') manual_price_change_flag,\n" - + " polin.market_price market_price,\n" - + " polin.market_price * Nvl(pohdr.rate, Decode(pohdr.currency_code,glsob.currency_code,1,NULL)) market_price_base,\n" - + " matching_basis.meaning matching_basis,\n" - + " Nvl(polin.negotiated_by_preparer_flag,'N') negotiated_by_preparer_flag,\n" - + " polin.note_to_vendor note_to_vendor,\n" - + " Decode(Nvl(polin.closed_code,'OPEN')\n" - + " ||Nvl(polin.cancel_flag,'N'),'OPENN','Y','N') open_flag,\n" - + " xmap.operating_unit_name operating_unit_name,\n" - + " Nvl(polin.over_tolerance_error_flag,'N') over_tolerance_error_flag,\n" - + " polin.attribute_category polin$attribute_category,\n" - + " polin.attribute13 polin$attribute_13,\n" - + " Decode(polin.attribute_category,'2052',polin.attribute1,NULL) polin$order_sequence,\n" - + " polin.line_num po_line_number,\n" - + " pohdr.segment1 po_number,\n" - + " price_type.meaning price_type,\n" - + " polin.price_type_lookup_code price_type_lookup_code,\n" - + " purchase_basis.meaning purchase_basis,\n" - + " polin.qty_rcv_tolerance qty_received_tolerance_pct,\n" - + " Nvl(polin.quantity,0) quantity,\n" - + " pohdr.rate rate,\n" - + " pohdr.rate_date rate_date,\n" - + " pohdr.rate_type rate_type,\n" - + " To_char(NULL) set_of_books_name,\n" - + " To_number(NULL) shipment_line_number,\n" - + " To_char(NULL) shipment_line_status,\n" - + " To_number(NULL) shipment_quantity,\n" - + " Nvl(polin.taxable_flag,'N') taxable_flag,\n" - + " terms.NAME terms,\n" - + " polin.transaction_reason_code transaction_reason_code,\n" - + " un_hazard_matl_number.un_number un_hazard_matl_number,\n" - + " unit_of_measure.description unit_of_measure,\n" - + " polin.unit_price unit_price,\n" - + " polin.unit_price * Nvl(pohdr.rate, Decode(pohdr.currency_code,glsob.currency_code,1,NULL)) unit_price_base,\n" - + " Nvl(polin.unordered_flag,'N') unordered_flag,\n" - + " vend.attribute14 vend$supplier_home_page,\n" - + " vend.vendor_name vendor_name,\n" - + " vend.segment1 vendor_number,\n" - + " polin.vendor_product_num vendor_product_number,\n" - + " 'Z$$_________________________' z$$_________________________,\n" - + " polin.ROWID z$potc_po_lines\n" - + " FROM po.po_headers_all contract_number,\n" - + " dev_602_medium_tc.xxk_mtl_cat_s2 itemcat,\n" - + " hr.per_jobs job_name,\n" - + " po.po_un_numbers_tl un_hazard_matl_number,\n" - + " po.po_hazard_classes_tl hazard_class,\n" - + " po.po_line_types_tl line_type,\n" - + " inv.mtl_units_of_measure_tl unit_of_measure,\n" - + " ap.ap_terms_tl terms,\n" - + " dev_602_medium_tc.n_po_lookups_vl matching_basis,\n" - + " dev_602_medium_tc.n_po_lookups_vl purchase_basis,\n" - + " dev_602_medium_tc.n_po_lookups_vl price_type,\n" - + " dev_602_medium_tc.n_po_lookups_vl authorization_status,\n" - + " dev_602_medium_tc.xxk_sys_item mstk1,\n" - + " inv.mtl_system_items_b item,\n" - + " gl.gl_ledgers glsob,\n" - + " ap.financials_system_params_all fin,\n" - + " ap.ap_suppliers vend,\n" - + " po.po_headers_all pohdr,\n" - + " dev_602_medium_tc.potc_ou_acl_map_base xmap,\n" - + " po.po_lines_all polin\n" - + " WHERE 'Copyright Noetix Corporation 1992-2010' IS NOT NULL\n" - + " AND polin.po_header_id = pohdr.po_header_id\n" - + " AND Nvl(polin.org_id,-9999) = xmap.org_id\n" - + " AND pohdr.vendor_id = vend.vendor_id\n" - + " AND pohdr.type_lookup_code = 'STANDARD'\n" - + " AND polin.item_id = item.inventory_item_id(+)\n" - + " AND Nvl(item.organization_id,fin.inventory_organization_id) = fin.inventory_organization_id\n" - + " AND Nvl(pohdr.org_id,-9999) = Nvl(fin.org_id,-9999)\n" - + " AND fin.set_of_books_id = glsob.ledger_id\n" - + " AND pohdr.authorization_status = authorization_status.lookup_code(+)\n" - + " AND authorization_status.lookup_type(+) = 'AUTHORIZATION STATUS'\n" - + " AND authorization_status.LANGUAGE (+) = noetix_env_pkg.get_language\n" - + " AND authorization_status.security_group_id(+) = noetix_apps_security_pkg.Lookup_security_group (authorization_status.lookup_type(+),authorization_status.view_application_id(+))\n" - + " AND polin.price_type_lookup_code = price_type.lookup_code(+)\n" - + " AND price_type.lookup_type(+) = 'PRICE TYPE'\n" - + " AND price_type.LANGUAGE (+) = noetix_env_pkg.get_language\n" - + " AND price_type.security_group_id(+) = noetix_apps_security_pkg.Lookup_security_group (price_type.lookup_type(+),price_type.view_application_id(+))\n" - + " AND polin.purchase_basis = purchase_basis.lookup_code(+)\n" - + " AND purchase_basis.lookup_type(+) = 'PURCHASE BASIS'\n" - + " AND purchase_basis.LANGUAGE (+) = noetix_env_pkg.get_language\n" - + " AND purchase_basis.security_group_id(+) = noetix_apps_security_pkg.Lookup_security_group (purchase_basis.lookup_type(+),purchase_basis.view_application_id(+))\n" - + " AND polin.matching_basis = matching_basis.lookup_code(+)\n" - + " AND matching_basis.lookup_type(+) = 'MATCHING BASIS'\n" - + " AND matching_basis.LANGUAGE (+) = noetix_env_pkg.get_language\n" - + " AND matching_basis.security_group_id(+) = noetix_apps_security_pkg.Lookup_security_group (matching_basis.lookup_type(+),matching_basis.view_application_id(+))\n" - + " AND pohdr.terms_id = terms.term_id(+)\n" - + " AND terms.LANGUAGE (+) = noetix_env_pkg.get_language\n" - + " AND polin.unit_meas_lookup_code = unit_of_measure.unit_of_measure(+)\n" - + " AND unit_of_measure.LANGUAGE (+) = noetix_env_pkg.get_language\n" - + " AND polin.line_type_id = line_type.line_type_id(+)\n" - + " AND line_type.LANGUAGE (+) = noetix_env_pkg.get_language\n" - + " AND polin.hazard_class_id = hazard_class.hazard_class_id(+)\n" - + " AND hazard_class.LANGUAGE (+) = noetix_env_pkg.get_language\n" - + " AND polin.un_number_id = un_hazard_matl_number.un_number_id(+)\n" - + " AND un_hazard_matl_number.LANGUAGE (+) = noetix_env_pkg.get_language\n" - + " AND polin.job_id = job_name.job_id(+)\n" - + " AND polin.category_id = itemcat.category_id(+)\n" - + " AND polin.contract_id = contract_number.po_header_id(+)\n" - + " AND item.inventory_item_id = mstk1.inventory_item_id (+)\n" - + " AND item.organization_id = mstk1.organization_id (+)"; - - //System.out.println(rightExpr); - assertTrue( leftExpr.equalsIgnoreCase( rightExpr ) ); - // System.out.println(result); - } - - public static void test2( ) - { - GFmtOpt option = GFmtOptFactory.newInstance( new Exception( ).getStackTrace( )[0].getClassName( ) - + "." - + new Exception( ).getStackTrace( )[0].getMethodName( ) ); - - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "CREATE OR REPLACE FORCE VIEW \"POTC_PO_LINES\" (\"A$CHART_OF_ACCOUNTS_NAME\", \"A$CONTRACT_NUMBER\", \"A$HAZARD_CLASS\", \"A$ITEM_DESCRIPTION\", \"A$JOB_NAME\", \"A$LEDGER_NAME\", \"A$LINE_CREATION_DATE\", \"A$LINE_TYPE\", \"A$OPERATING_UNIT_NAME\", \"A$PO_NUMBER\", \"A$TERMS\", \"A$UN_HAZARD_MATL_NUMBER\", \"A$VENDOR_NAME\", \"A$VENDOR_NUMBER\", \"A$VENDOR_PRODUCT_NUMBER\", \"A$ZZ__________________________\", \"ALLOW_PRICE_OVERRIDE_FLAG\", \"AMOUNT\", \"AUCTION_DISPLAY_NUMBER\", \"AUCTION_LINE_NUMBER\", \"AUTHORIZATION_STATUS\", \"BASE_CURRENCY_CODE\", \"BID_LINE_NUMBER\", \"BID_NUMBER\", \"CANCEL_DATE\", \"CANCEL_FLAG\", \"CANCEL_REASON\", \"CAPITAL_EXPENSE_FLAG\", \"CHART_OF_ACCOUNTS_NAME\", \"CLOSED_CODE\", \"CLOSED_DATE\", \"CLOSED_REASON\", \"CONSIGNED_CONSUMPTION_FLAG\", \"CONTRACT_NUMBER\", \"CONTRACTOR_ASSIGN_END_DATE\", \"CONTRACTOR_ASSIGN_START_DATE\", \"CONTRACTOR_FIRST_NAME\", \"CONTRACTOR_LAST_NAME\", \"CURRENCY\", \"HAZARD_CLASS\", \"INCOME_TAX_TYPE\", \"ITEM$INVENTORY_ITEM_ID\", \"ITEM$ORGANIZATION_ID\", \"ITEM$SV$ITEM\", \"ITEMCAT$CV$ITEM_CATEGORY_KFF\", \"ITEMCAT$CATEGORY_ID\", \"ITEM_DESCRIPTION\", \"ITEM_REVISION\", \"JOB_NAME\", \"LEDGER_NAME\", \"LINE_CREATION_DATE\", \"LINE_TYPE\", \"LIST_PRICE_PER_UNIT\", \"LIST_PRICE_PER_UNIT_BASE\", \"MANUAL_PRICE_CHANGE_FLAG\", \"MARKET_PRICE\", \"MARKET_PRICE_BASE\", \"MATCHING_BASIS\", \"NEGOTIATED_BY_PREPARER_FLAG\", \"NOTE_TO_VENDOR\", \"OPEN_FLAG\", \"OPERATING_UNIT_NAME\", \"OVER_TOLERANCE_ERROR_FLAG\", \"POLIN$ATTRIBUTE_CATEGORY\", \"POLIN$ATTRIBUTE_13\", \"POLIN$ORDER_SEQUENCE\", \"PO_LINE_NUMBER\", \"PO_NUMBER\", \"PRICE_TYPE\", \"PRICE_TYPE_LOOKUP_CODE\", \"PURCHASE_BASIS\", \"QTY_RECEIVED_TOLERANCE_PCT\", \"QUANTITY\", \"RATE\", \"RATE_DATE\", \"RATE_TYPE\", \"SET_OF_BOOKS_NAME\", \"SHIPMENT_LINE_NUMBER\", \"SHIPMENT_LINE_STATUS\", \"SHIPMENT_QUANTITY\", \"TAXABLE_FLAG\", \"TERMS\", \"TRANSACTION_REASON_CODE\", \"UN_HAZARD_MATL_NUMBER\", \"UNIT_OF_MEASURE\", \"UNIT_PRICE\", \"UNIT_PRICE_BASE\", \"UNORDERED_FLAG\", \"VEND$SUPPLIER_HOME_PAGE\", \"VENDOR_NAME\", \"VENDOR_NUMBER\", \"VENDOR_PRODUCT_NUMBER\", \"Z$$_________________________\", \"Z$POTC_PO_LINES\") AS SELECT XMAP.CHART_OF_ACCOUNTS_NAME A$Chart_Of_Accounts_Name, Contract_Number.SEGMENT1 A$Contract_Number, Hazard_Class.HAZARD_CLASS A$Hazard_Class, POLIN.ITEM_DESCRIPTION A$Item_Description, Job_Name.NAME A$Job_Name, XMAP.LEDGER_NAME A$Ledger_Name, POLIN.CREATION_DATE A$Line_Creation_Date, Line_Type.LINE_TYPE A$Line_Type, XMAP.OPERATING_UNIT_NAME A$Operating_Unit_Name, POHDR.SEGMENT1 A$PO_Number, Terms.NAME A$Terms, UN_Hazard_Matl_Number.UN_NUMBER A$UN_Hazard_Matl_Number, VEND.VENDOR_NAME A$Vendor_Name, VEND.SEGMENT1 A$Vendor_Number, POLIN.VENDOR_PRODUCT_NUM A$Vendor_Product_Number, 'A$ZZ__________________________Copyright Noetix Corporation 1992-2010' A$ZZ__________________________, NVL(POLIN.ALLOW_PRICE_OVERRIDE_FLAG,'Y') Allow_Price_Override_Flag, NVL(POLIN.AMOUNT,0) Amount, POLIN.AUCTION_DISPLAY_NUMBER Auction_Display_Number, POLIN.AUCTION_LINE_NUMBER Auction_Line_Number, Authorization_Status.MEANING Authorization_Status, GLSOB.CURRENCY_CODE Base_Currency_Code, POLIN.BID_LINE_NUMBER Bid_Line_Number, POLIN.BID_NUMBER Bid_Number, POLIN.CANCEL_DATE Cancel_Date, NVL(POLIN.CANCEL_FLAG,'N') Cancel_Flag, POLIN.CANCEL_REASON Cancel_Reason, NVL(POLIN.CAPITAL_EXPENSE_FLAG,'N') Capital_Expense_Flag, XMAP.CHART_OF_ACCOUNTS_NAME Chart_Of_Accounts_Name, NVL(POLIN.CLOSED_CODE,'OPEN') Closed_Code, POLIN.CLOSED_DATE Closed_Date, POLIN.CLOSED_REASON Closed_Reason, NVL(POHDR.CONSIGNED_CONSUMPTION_FLAG,'N') Consigned_Consumption_Flag, Contract_Number.SEGMENT1 Contract_Number, POLIN.EXPIRATION_DATE Contractor_Assign_End_Date, POLIN.START_DATE Contractor_Assign_Start_Date, POLIN.CONTRACTOR_FIRST_NAME Contractor_First_Name, POLIN.CONTRACTOR_LAST_NAME Contractor_Last_Name, POHDR.CURRENCY_CODE Currency, Hazard_Class.HAZARD_CLASS Hazard_Class, POLIN.TYPE_1099 Income_Tax_Type, MSTK1.INVENTORY_ITEM_ID Item$Inventory_Item_Id, MSTK1.ORGANIZATION_ID Item$Organization_Id, MSTK1.SV$Item Item$SV$Item, ItemCat.CV$Item_Category_KFF ItemCat$CV$Item_Category_KFF, ItemCat.CATEGORY_ID ItemCat$Category_Id, POLIN.ITEM_DESCRIPTION Item_Description, POLIN.ITEM_REVISION Item_Revision, Job_Name.NAME Job_Name, XMAP.LEDGER_NAME Ledger_Name, POLIN.CREATION_DATE Line_Creation_Date, Line_Type.LINE_TYPE Line_Type, POLIN.LIST_PRICE_PER_UNIT List_Price_Per_Unit, POLIN.LIST_PRICE_PER_UNIT * NVL(POHDR.RATE, DECODE(POHDR.CURRENCY_CODE,GLSOB.CURRENCY_CODE,1,NULL)) List_Price_Per_Unit_Base, NVL(POLIN.MANUAL_PRICE_CHANGE_FLAG,'N') Manual_Price_Change_Flag, POLIN.MARKET_PRICE Market_Price, POLIN.MARKET_PRICE * NVL(POHDR.RATE, DECODE(POHDR.CURRENCY_CODE,GLSOB.CURRENCY_CODE,1,NULL)) Market_Price_Base, Matching_Basis.MEANING Matching_Basis, NVL(POLIN.NEGOTIATED_BY_PREPARER_FLAG,'N') Negotiated_By_Preparer_Flag, POLIN.NOTE_TO_VENDOR Note_To_Vendor, DECODE(NVL(POLIN.CLOSED_CODE,'OPEN')||NVL(POLIN.CANCEL_FLAG,'N'),'OPENN','Y','N') Open_Flag, XMAP.OPERATING_UNIT_NAME Operating_Unit_Name, NVL(POLIN.OVER_TOLERANCE_ERROR_FLAG,'N') Over_Tolerance_Error_Flag, POLIN.ATTRIBUTE_CATEGORY POLIN$ATTRIBUTE_CATEGORY, POLIN.ATTRIBUTE13 POLIN$Attribute_13, decode(POLIN.ATTRIBUTE_CATEGORY,'2052',POLIN.ATTRIBUTE1,null) POLIN$Order_Sequence, POLIN.LINE_NUM PO_Line_Number, POHDR.SEGMENT1 PO_Number, Price_Type.MEANING Price_Type, POLIN.PRICE_TYPE_LOOKUP_CODE Price_Type_Lookup_Code, Purchase_Basis.MEANING Purchase_Basis, POLIN.QTY_RCV_TOLERANCE Qty_Received_Tolerance_Pct, NVL(POLIN.QUANTITY,0) Quantity, POHDR.RATE Rate, POHDR.RATE_DATE Rate_Date, POHDR.RATE_TYPE Rate_Type, TO_CHAR(NULL) Set_Of_Books_Name, TO_NUMBER(NULL) Shipment_Line_Number, TO_CHAR(NULL) Shipment_Line_Status, TO_NUMBER(NULL) Shipment_Quantity, NVL(POLIN.TAXABLE_FLAG,'N') Taxable_Flag, Terms.NAME Terms, POLIN.TRANSACTION_REASON_CODE Transaction_Reason_Code, UN_Hazard_Matl_Number.UN_NUMBER UN_Hazard_Matl_Number, Unit_Of_Measure.DESCRIPTION Unit_Of_Measure, POLIN.UNIT_PRICE Unit_Price, POLIN.UNIT_PRICE * NVL(POHDR.RATE, DECODE(POHDR.CURRENCY_CODE,GLSOB.CURRENCY_CODE,1,NULL)) Unit_Price_Base, NVL(POLIN.UNORDERED_FLAG,'N') Unordered_Flag, VEND.ATTRIBUTE14 VEND$Supplier_Home_Page, VEND.VENDOR_NAME Vendor_Name, VEND.SEGMENT1 Vendor_Number, POLIN.VENDOR_PRODUCT_NUM Vendor_Product_Number, 'Z$$_________________________' Z$$_________________________, POLIN.rowid Z$POTC_PO_Lines FROM PO.PO_HEADERS_ALL Contract_Number, dev_602_medium_tc.XXK_Mtl_Cat_S2 ItemCat, HR.PER_JOBS Job_Name, PO.PO_UN_NUMBERS_TL UN_Hazard_Matl_Number, PO.PO_HAZARD_CLASSES_TL Hazard_Class, PO.PO_LINE_TYPES_TL Line_Type, INV.MTL_UNITS_OF_MEASURE_TL Unit_Of_Measure, AP.AP_TERMS_TL Terms, dev_602_medium_tc.N_PO_LOOKUPS_VL Matching_Basis, dev_602_medium_tc.N_PO_LOOKUPS_VL Purchase_Basis, dev_602_medium_tc.N_PO_LOOKUPS_VL Price_Type, dev_602_medium_tc.N_PO_LOOKUPS_VL Authorization_Status, dev_602_medium_tc.XXK_Sys_Item MSTK1, INV.MTL_SYSTEM_ITEMS_B ITEM, GL.GL_LEDGERS GLSOB, AP.FINANCIALS_SYSTEM_PARAMS_ALL FIN, AP.AP_SUPPLIERS VEND, PO.PO_HEADERS_ALL POHDR, dev_602_medium_tc.POTC_OU_ACL_Map_Base XMAP, PO.PO_LINES_ALL POLIN WHERE 'Copyright Noetix Corporation 1992-2010' is not null AND POLIN.PO_HEADER_ID = POHDR.PO_HEADER_ID AND NVL(POLIN.ORG_ID,-9999) = XMAP.ORG_ID AND POHDR.VENDOR_ID = VEND.VENDOR_ID AND POHDR.TYPE_LOOKUP_CODE = 'STANDARD' AND POLIN.ITEM_ID = ITEM.INVENTORY_ITEM_ID(+) AND NVL(ITEM.ORGANIZATION_ID,FIN.INVENTORY_ORGANIZATION_ID) = FIN.INVENTORY_ORGANIZATION_ID AND NVL(POHDR.ORG_ID,-9999) = NVL(FIN.ORG_ID,-9999) AND FIN.SET_OF_BOOKS_ID = GLSOB.LEDGER_ID AND POHDR.AUTHORIZATION_STATUS = Authorization_Status.LOOKUP_CODE(+) AND Authorization_Status.LOOKUP_TYPE(+) = 'AUTHORIZATION STATUS' AND Authorization_Status.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND Authorization_Status.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.LOOKUP_SECURITY_GROUP (Authorization_Status.LOOKUP_TYPE(+),Authorization_Status.VIEW_APPLICATION_ID(+)) AND POLIN.PRICE_TYPE_LOOKUP_CODE = Price_Type.LOOKUP_CODE(+) AND Price_Type.LOOKUP_TYPE(+) = 'PRICE TYPE' AND Price_Type.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND Price_Type.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.LOOKUP_SECURITY_GROUP (Price_Type.LOOKUP_TYPE(+),Price_Type.VIEW_APPLICATION_ID(+)) AND POLIN.PURCHASE_BASIS = Purchase_Basis.LOOKUP_CODE(+) AND Purchase_Basis.LOOKUP_TYPE(+) = 'PURCHASE BASIS' AND Purchase_Basis.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND Purchase_Basis.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.LOOKUP_SECURITY_GROUP (Purchase_Basis.LOOKUP_TYPE(+),Purchase_Basis.VIEW_APPLICATION_ID(+)) AND POLIN.MATCHING_BASIS = Matching_Basis.LOOKUP_CODE(+) AND Matching_Basis.LOOKUP_TYPE(+) = 'MATCHING BASIS' AND Matching_Basis.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND Matching_Basis.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.LOOKUP_SECURITY_GROUP (Matching_Basis.LOOKUP_TYPE(+),Matching_Basis.VIEW_APPLICATION_ID(+)) AND POHDR.TERMS_ID = Terms.TERM_ID(+) AND Terms.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND POLIN.UNIT_MEAS_LOOKUP_CODE = Unit_Of_Measure.UNIT_OF_MEASURE(+) AND Unit_Of_Measure.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND POLIN.LINE_TYPE_ID = Line_Type.LINE_TYPE_ID(+) AND Line_Type.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND POLIN.HAZARD_CLASS_ID = Hazard_Class.HAZARD_CLASS_ID(+) AND Hazard_Class.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND POLIN.UN_NUMBER_ID = UN_Hazard_Matl_Number.UN_NUMBER_ID(+) AND UN_Hazard_Matl_Number.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE AND POLIN.JOB_ID = Job_Name.JOB_ID(+) AND POLIN.CATEGORY_ID = ItemCat.CATEGORY_ID(+) AND POLIN.CONTRACT_ID = Contract_Number.PO_HEADER_ID(+) AND ITEM.INVENTORY_ITEM_ID = MSTK1.INVENTORY_ITEM_ID (+) AND ITEM.ORGANIZATION_ID = MSTK1.ORGANIZATION_ID (+)"; - - // System.out.println(sqlparser.sqltext); - assertTrue( sqlparser.parse( ) == 0 ); - String result = FormatterFactory.pp( sqlparser, option ); - String leftExpr = result.trim( ); - String rightExpr = "CREATE OR REPLACE FORCE VIEW \"POTC_PO_LINES\" (\"A$CHART_OF_ACCOUNTS_NAME\", \"A$CONTRACT_NUMBER\", \"A$HAZARD_CLASS\", \"A$ITEM_DESCRIPTION\", \"A$JOB_NAME\", \"A$LEDGER_NAME\", \"A$LINE_CREATION_DATE\", \"A$LINE_TYPE\", \"A$OPERATING_UNIT_NAME\", \"A$PO_NUMBER\", \"A$TERMS\", \"A$UN_HAZARD_MATL_NUMBER\", \"A$VENDOR_NAME\", \"A$VENDOR_NUMBER\", \"A$VENDOR_PRODUCT_NUMBER\", \"A$ZZ__________________________\", \"ALLOW_PRICE_OVERRIDE_FLAG\", \"AMOUNT\", \"AUCTION_DISPLAY_NUMBER\", \"AUCTION_LINE_NUMBER\",\n" + - " \"AUTHORIZATION_STATUS\", \"BASE_CURRENCY_CODE\", \"BID_LINE_NUMBER\", \"BID_NUMBER\", \"CANCEL_DATE\", \"CANCEL_FLAG\", \"CANCEL_REASON\", \"CAPITAL_EXPENSE_FLAG\", \"CHART_OF_ACCOUNTS_NAME\", \"CLOSED_CODE\", \"CLOSED_DATE\", \"CLOSED_REASON\", \"CONSIGNED_CONSUMPTION_FLAG\", \"CONTRACT_NUMBER\", \"CONTRACTOR_ASSIGN_END_DATE\", \"CONTRACTOR_ASSIGN_START_DATE\", \"CONTRACTOR_FIRST_NAME\", \"CONTRACTOR_LAST_NAME\", \"CURRENCY\", \"HAZARD_CLASS\",\n" + - " \"INCOME_TAX_TYPE\", \"ITEM$INVENTORY_ITEM_ID\", \"ITEM$ORGANIZATION_ID\", \"ITEM$SV$ITEM\", \"ITEMCAT$CV$ITEM_CATEGORY_KFF\", \"ITEMCAT$CATEGORY_ID\", \"ITEM_DESCRIPTION\", \"ITEM_REVISION\", \"JOB_NAME\", \"LEDGER_NAME\", \"LINE_CREATION_DATE\", \"LINE_TYPE\", \"LIST_PRICE_PER_UNIT\", \"LIST_PRICE_PER_UNIT_BASE\", \"MANUAL_PRICE_CHANGE_FLAG\", \"MARKET_PRICE\", \"MARKET_PRICE_BASE\", \"MATCHING_BASIS\", \"NEGOTIATED_BY_PREPARER_FLAG\", \"NOTE_TO_VENDOR\",\n" + - " \"OPEN_FLAG\", \"OPERATING_UNIT_NAME\", \"OVER_TOLERANCE_ERROR_FLAG\", \"POLIN$ATTRIBUTE_CATEGORY\", \"POLIN$ATTRIBUTE_13\", \"POLIN$ORDER_SEQUENCE\", \"PO_LINE_NUMBER\", \"PO_NUMBER\", \"PRICE_TYPE\", \"PRICE_TYPE_LOOKUP_CODE\", \"PURCHASE_BASIS\", \"QTY_RECEIVED_TOLERANCE_PCT\", \"QUANTITY\", \"RATE\", \"RATE_DATE\", \"RATE_TYPE\", \"SET_OF_BOOKS_NAME\", \"SHIPMENT_LINE_NUMBER\", \"SHIPMENT_LINE_STATUS\", \"SHIPMENT_QUANTITY\",\n" + - " \"TAXABLE_FLAG\", \"TERMS\", \"TRANSACTION_REASON_CODE\", \"UN_HAZARD_MATL_NUMBER\", \"UNIT_OF_MEASURE\", \"UNIT_PRICE\", \"UNIT_PRICE_BASE\", \"UNORDERED_FLAG\", \"VEND$SUPPLIER_HOME_PAGE\", \"VENDOR_NAME\", \"VENDOR_NUMBER\", \"VENDOR_PRODUCT_NUMBER\", \"Z$$_________________________\", \"Z$POTC_PO_LINES\") \n" + - "AS \n" + - " SELECT XMAP.CHART_OF_ACCOUNTS_NAME A$Chart_Of_Accounts_Name, Contract_Number.SEGMENT1 A$Contract_Number, Hazard_Class.HAZARD_CLASS A$Hazard_Class, POLIN.ITEM_DESCRIPTION A$Item_Description, Job_Name.NAME A$Job_Name, XMAP.LEDGER_NAME A$Ledger_Name, POLIN.CREATION_DATE A$Line_Creation_Date, Line_Type.LINE_TYPE A$Line_Type, XMAP.OPERATING_UNIT_NAME A$Operating_Unit_Name, POHDR.SEGMENT1 A$PO_Number, Terms.NAME A$Terms, UN_Hazard_Matl_Number.UN_NUMBER A$UN_Hazard_Matl_Number, VEND.VENDOR_NAME A$Vendor_Name, VEND.SEGMENT1 A$Vendor_Number, POLIN.VENDOR_PRODUCT_NUM A$Vendor_Product_Number, 'A$ZZ__________________________Copyright Noetix Corporation 1992-2010' A$ZZ__________________________, Nvl(POLIN.ALLOW_PRICE_OVERRIDE_FLAG,'Y') Allow_Price_Override_Flag, Nvl(POLIN.AMOUNT,0) Amount, POLIN.AUCTION_DISPLAY_NUMBER Auction_Display_Number, POLIN.AUCTION_LINE_NUMBER Auction_Line_Number,\n" + - " Authorization_Status.MEANING Authorization_Status, GLSOB.CURRENCY_CODE Base_Currency_Code, POLIN.BID_LINE_NUMBER Bid_Line_Number, POLIN.BID_NUMBER Bid_Number, POLIN.CANCEL_DATE Cancel_Date, Nvl(POLIN.CANCEL_FLAG,'N') Cancel_Flag, POLIN.CANCEL_REASON Cancel_Reason, Nvl(POLIN.CAPITAL_EXPENSE_FLAG,'N') Capital_Expense_Flag, XMAP.CHART_OF_ACCOUNTS_NAME Chart_Of_Accounts_Name, Nvl(POLIN.CLOSED_CODE,'OPEN') Closed_Code, POLIN.CLOSED_DATE Closed_Date, POLIN.CLOSED_REASON Closed_Reason, Nvl(POHDR.CONSIGNED_CONSUMPTION_FLAG,'N') Consigned_Consumption_Flag, Contract_Number.SEGMENT1 Contract_Number, POLIN.EXPIRATION_DATE Contractor_Assign_End_Date, POLIN.START_DATE Contractor_Assign_Start_Date, POLIN.CONTRACTOR_FIRST_NAME Contractor_First_Name, POLIN.CONTRACTOR_LAST_NAME Contractor_Last_Name, POHDR.CURRENCY_CODE Currency, Hazard_Class.HAZARD_CLASS Hazard_Class,\n" + - " POLIN.TYPE_1099 Income_Tax_Type, MSTK1.INVENTORY_ITEM_ID Item$Inventory_Item_Id, MSTK1.ORGANIZATION_ID Item$Organization_Id, MSTK1.SV$Item Item$SV$Item, ItemCat.CV$Item_Category_KFF ItemCat$CV$Item_Category_KFF, ItemCat.CATEGORY_ID ItemCat$Category_Id, POLIN.ITEM_DESCRIPTION Item_Description, POLIN.ITEM_REVISION Item_Revision, Job_Name.NAME Job_Name, XMAP.LEDGER_NAME Ledger_Name, POLIN.CREATION_DATE Line_Creation_Date, Line_Type.LINE_TYPE Line_Type, POLIN.LIST_PRICE_PER_UNIT List_Price_Per_Unit, POLIN.LIST_PRICE_PER_UNIT * Nvl(POHDR.RATE, Decode(POHDR.CURRENCY_CODE,GLSOB.CURRENCY_CODE,1,NULL)) List_Price_Per_Unit_Base, Nvl(POLIN.MANUAL_PRICE_CHANGE_FLAG,'N') Manual_Price_Change_Flag, POLIN.MARKET_PRICE Market_Price, POLIN.MARKET_PRICE * Nvl(POHDR.RATE, Decode(POHDR.CURRENCY_CODE,GLSOB.CURRENCY_CODE,1,NULL)) Market_Price_Base, Matching_Basis.MEANING Matching_Basis, Nvl(POLIN.NEGOTIATED_BY_PREPARER_FLAG,'N') Negotiated_By_Preparer_Flag, POLIN.NOTE_TO_VENDOR Note_To_Vendor,\n" + - " Decode(Nvl(POLIN.CLOSED_CODE,'OPEN')\n" + - " ||Nvl(POLIN.CANCEL_FLAG,'N'),'OPENN','Y','N') Open_Flag, XMAP.OPERATING_UNIT_NAME Operating_Unit_Name, Nvl(POLIN.OVER_TOLERANCE_ERROR_FLAG,'N') Over_Tolerance_Error_Flag, POLIN.ATTRIBUTE_CATEGORY POLIN$ATTRIBUTE_CATEGORY, POLIN.ATTRIBUTE13 POLIN$Attribute_13, Decode(POLIN.ATTRIBUTE_CATEGORY,'2052',POLIN.ATTRIBUTE1,NULL) POLIN$Order_Sequence, POLIN.LINE_NUM PO_Line_Number, POHDR.SEGMENT1 PO_Number, Price_Type.MEANING Price_Type, POLIN.PRICE_TYPE_LOOKUP_CODE Price_Type_Lookup_Code, Purchase_Basis.MEANING Purchase_Basis, POLIN.QTY_RCV_TOLERANCE Qty_Received_Tolerance_Pct, Nvl(POLIN.QUANTITY,0) Quantity, POHDR.RATE Rate, POHDR.RATE_DATE Rate_Date, POHDR.RATE_TYPE Rate_Type, To_char(NULL) Set_Of_Books_Name, To_number(NULL) Shipment_Line_Number, To_char(NULL) Shipment_Line_Status, To_number(NULL) Shipment_Quantity,\n" + - " Nvl(POLIN.TAXABLE_FLAG,'N') Taxable_Flag, Terms.NAME Terms, POLIN.TRANSACTION_REASON_CODE Transaction_Reason_Code, UN_Hazard_Matl_Number.UN_NUMBER UN_Hazard_Matl_Number, Unit_Of_Measure.DESCRIPTION Unit_Of_Measure, POLIN.UNIT_PRICE Unit_Price, POLIN.UNIT_PRICE * Nvl(POHDR.RATE, Decode(POHDR.CURRENCY_CODE,GLSOB.CURRENCY_CODE,1,NULL)) Unit_Price_Base, Nvl(POLIN.UNORDERED_FLAG,'N') Unordered_Flag, VEND.ATTRIBUTE14 VEND$Supplier_Home_Page, VEND.VENDOR_NAME Vendor_Name, VEND.SEGMENT1 Vendor_Number, POLIN.VENDOR_PRODUCT_NUM Vendor_Product_Number, 'Z$$_________________________' Z$$_________________________, POLIN.ROWID Z$POTC_PO_Lines\n" + - " FROM PO.PO_HEADERS_ALL Contract_Number,\n" + - " dev_602_medium_tc.XXK_Mtl_Cat_S2 ItemCat,\n" + - " HR.PER_JOBS Job_Name,\n" + - " PO.PO_UN_NUMBERS_TL UN_Hazard_Matl_Number,\n" + - " PO.PO_HAZARD_CLASSES_TL Hazard_Class,\n" + - " PO.PO_LINE_TYPES_TL Line_Type,\n" + - " INV.MTL_UNITS_OF_MEASURE_TL Unit_Of_Measure,\n" + - " AP.AP_TERMS_TL Terms,\n" + - " dev_602_medium_tc.N_PO_LOOKUPS_VL Matching_Basis,\n" + - " dev_602_medium_tc.N_PO_LOOKUPS_VL Purchase_Basis,\n" + - " dev_602_medium_tc.N_PO_LOOKUPS_VL Price_Type,\n" + - " dev_602_medium_tc.N_PO_LOOKUPS_VL Authorization_Status,\n" + - " dev_602_medium_tc.XXK_Sys_Item MSTK1,\n" + - " INV.MTL_SYSTEM_ITEMS_B ITEM,\n" + - " GL.GL_LEDGERS GLSOB,\n" + - " AP.FINANCIALS_SYSTEM_PARAMS_ALL FIN,\n" + - " AP.AP_SUPPLIERS VEND,\n" + - " PO.PO_HEADERS_ALL POHDR,\n" + - " dev_602_medium_tc.POTC_OU_ACL_Map_Base XMAP,\n" + - " PO.PO_LINES_ALL POLIN\n" + - " WHERE 'Copyright Noetix Corporation 1992-2010' IS NOT NULL\n" + - " AND POLIN.PO_HEADER_ID = POHDR.PO_HEADER_ID\n" + - " AND Nvl(POLIN.ORG_ID,-9999) = XMAP.ORG_ID\n" + - " AND POHDR.VENDOR_ID = VEND.VENDOR_ID\n" + - " AND POHDR.TYPE_LOOKUP_CODE = 'STANDARD'\n" + - " AND POLIN.ITEM_ID = ITEM.INVENTORY_ITEM_ID(+)\n" + - " AND Nvl(ITEM.ORGANIZATION_ID,FIN.INVENTORY_ORGANIZATION_ID) = FIN.INVENTORY_ORGANIZATION_ID\n" + - " AND Nvl(POHDR.ORG_ID,-9999) = Nvl(FIN.ORG_ID,-9999)\n" + - " AND FIN.SET_OF_BOOKS_ID = GLSOB.LEDGER_ID\n" + - " AND POHDR.AUTHORIZATION_STATUS = Authorization_Status.LOOKUP_CODE(+)\n" + - " AND Authorization_Status.LOOKUP_TYPE(+) = 'AUTHORIZATION STATUS'\n" + - " AND Authorization_Status.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE\n" + - " AND Authorization_Status.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.Lookup_security_group (Authorization_Status.LOOKUP_TYPE(+),Authorization_Status.VIEW_APPLICATION_ID(+))\n" + - " AND POLIN.PRICE_TYPE_LOOKUP_CODE = Price_Type.LOOKUP_CODE(+)\n" + - " AND Price_Type.LOOKUP_TYPE(+) = 'PRICE TYPE'\n" + - " AND Price_Type.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE\n" + - " AND Price_Type.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.Lookup_security_group (Price_Type.LOOKUP_TYPE(+),Price_Type.VIEW_APPLICATION_ID(+))\n" + - " AND POLIN.PURCHASE_BASIS = Purchase_Basis.LOOKUP_CODE(+)\n" + - " AND Purchase_Basis.LOOKUP_TYPE(+) = 'PURCHASE BASIS'\n" + - " AND Purchase_Basis.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE\n" + - " AND Purchase_Basis.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.Lookup_security_group (Purchase_Basis.LOOKUP_TYPE(+),Purchase_Basis.VIEW_APPLICATION_ID(+))\n" + - " AND POLIN.MATCHING_BASIS = Matching_Basis.LOOKUP_CODE(+)\n" + - " AND Matching_Basis.LOOKUP_TYPE(+) = 'MATCHING BASIS'\n" + - " AND Matching_Basis.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE\n" + - " AND Matching_Basis.SECURITY_GROUP_ID(+) = NOETIX_APPS_SECURITY_PKG.Lookup_security_group (Matching_Basis.LOOKUP_TYPE(+),Matching_Basis.VIEW_APPLICATION_ID(+))\n" + - " AND POHDR.TERMS_ID = Terms.TERM_ID(+)\n" + - " AND Terms.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE\n" + - " AND POLIN.UNIT_MEAS_LOOKUP_CODE = Unit_Of_Measure.UNIT_OF_MEASURE(+)\n" + - " AND Unit_Of_Measure.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE\n" + - " AND POLIN.LINE_TYPE_ID = Line_Type.LINE_TYPE_ID(+)\n" + - " AND Line_Type.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE\n" + - " AND POLIN.HAZARD_CLASS_ID = Hazard_Class.HAZARD_CLASS_ID(+)\n" + - " AND Hazard_Class.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE\n" + - " AND POLIN.UN_NUMBER_ID = UN_Hazard_Matl_Number.UN_NUMBER_ID(+)\n" + - " AND UN_Hazard_Matl_Number.LANGUAGE (+) = NOETIX_ENV_PKG.GET_LANGUAGE\n" + - " AND POLIN.JOB_ID = Job_Name.JOB_ID(+)\n" + - " AND POLIN.CATEGORY_ID = ItemCat.CATEGORY_ID(+)\n" + - " AND POLIN.CONTRACT_ID = Contract_Number.PO_HEADER_ID(+)\n" + - " AND ITEM.INVENTORY_ITEM_ID = MSTK1.INVENTORY_ITEM_ID (+)\n" + - " AND ITEM.ORGANIZATION_ID = MSTK1.ORGANIZATION_ID (+)"; - // System.out.println(leftExpr); - assertTrue( leftExpr.equalsIgnoreCase( rightExpr ) ); - // System.out.println(result); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testOrderByClause.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testOrderByClause.java deleted file mode 100644 index 80db4d20..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testOrderByClause.java +++ /dev/null @@ -1,86 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignStyle; -import gudusoft.gsqlparser.pp.para.styleenums.TLinefeedsCommaOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testOrderByClause extends TestCase { - public static void testSelect_Groupby_Style(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT e.employee_id,\n" + - " d.locatioin_id \n" + - "FROM employees e,departments d \n" + - "order by e.employee_id,d.locatioin_id,d.locatioin_id2 "; - - sqlparser.parse(); - option.selectColumnlistStyle = TAlignStyle.AsStacked; - String result = FormatterFactory.pp(sqlparser, option); - - assertTrue(result.trim().equalsIgnoreCase("SELECT e.employee_id,\n" + - " d.locatioin_id\n" + - "FROM employees e,\n" + - " departments d\n" + - "ORDER BY e.employee_id,\n" + - " d.locatioin_id,\n" + - " d.locatioin_id2")); - //System.out.println(result); - } - - public static void testSelect_Columnlist_Comma(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT e.employee_id,\n" + - " d.locatioin_id \n" + - "FROM employees e,departments d \n" + - "order by e.employee_id,d.locatioin_id,d.locatioin_id2 "; - - sqlparser.parse(); - option.selectColumnlistStyle = TAlignStyle.AsStacked; - option.selectColumnlistComma = TLinefeedsCommaOption.LfbeforeCommaWithSpace; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT e.employee_id\n" + - " , d.locatioin_id\n" + - "FROM employees e,\n" + - " departments d\n" + - "ORDER BY e.employee_id\n" + - " , d.locatioin_id\n" + - " , d.locatioin_id2")); - - //System.out.println(result); - } - - public static void testSelectItemInNewLine(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT e.employee_id,\n" + - " d.locatioin_id \n" + - "FROM employees e,departments d \n" + - "order by e.employee_id,d.locatioin_id,d.locatioin_id2 "; - - sqlparser.parse(); - option.selectItemInNewLine = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT \n" + - " e.employee_id,\n" + - " d.locatioin_id\n" + - "FROM employees e,\n" + - " departments d\n" + - "ORDER BY\n" + - " e.employee_id,\n" + - " d.locatioin_id,\n" + - " d.locatioin_id2")); - //System.out.println(result); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testPlsql1.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testPlsql1.java deleted file mode 100644 index aaf90473..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testPlsql1.java +++ /dev/null @@ -1,55 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 13-2-8 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignOption; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignStyle; -import gudusoft.gsqlparser.pp.para.styleenums.TLinefeedsCommaOption; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; -import junit.framework.TestCase; - -public class testPlsql1 extends TestCase { - public static void test1(){ - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser - .setSqltext("CREATE OR REPLACE PROCEDURE RULE14002TESTPROC1( A1 IN NUMBER )\n" - + "IS\n" - + "PROCEDURE INPROC1 (A1 NUMBER); -- Declaration\n" - + "PROCEDURE INPROC2 (A1 NUMBER) -- Definition\n" - + "IS\n" - + "BEGIN\n" - + "INSERT INTO T1 VALUES(1, A1);\n" - + "END;\n" - + "BEGIN\n" - + "INPROC1(TEMP1.M1);\n" - + "END;\n" - + "/"); - int ret = sqlParser.parse(); - if (ret != 0) - { - System.out.println(sqlParser.getErrormessage()); - } - - TPlsqlCreateProcedure stmt = (TPlsqlCreateProcedure) sqlParser.getSqlstatements().get(0); - - GFmtOpt sqlFormatOption = GFmtOptFactory.newInstance(); - sqlFormatOption.beStyleCreatetableLeftBEOnNewline = false; - sqlFormatOption.beStyleCreatetableRightBEOnNewline = false; - sqlFormatOption.createtableListitemInNewLine = false; - sqlFormatOption.createtableFieldlistAlignOption = TAlignOption.AloLeft; - sqlFormatOption.defaultAligntype = TAlignStyle.AsStacked; - sqlFormatOption.defaultCommaOption = TLinefeedsCommaOption.LfAfterComma; - sqlFormatOption.cteNewlineBeforeAs = true; - sqlFormatOption.linebreakBeforeParamInExec = true; - sqlFormatOption.linebreakAfterDeclare = true; - sqlFormatOption.beStyleFunctionFirstParamInNewline = true; - - //System.out.println(stmt.toString()); - //System.out.println(FormatterFactory.pp(sqlParser, sqlFormatOption)); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testSelectList.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testSelectList.java deleted file mode 100644 index 14236d08..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testSelectList.java +++ /dev/null @@ -1,138 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TAlignStyle; -import gudusoft.gsqlparser.pp.para.styleenums.TLinefeedsCommaOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testSelectList extends TestCase { - - public static void testSelect_Columnlist_Style(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - - sqlparser.sqltext = "select col1, col2,sum(col3) from table1"; - - int ret = sqlparser.parse(); - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName()+"."+new Exception().getStackTrace()[0].getMethodName()); - - option.selectColumnlistStyle = TAlignStyle.AsWrapped; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.equalsIgnoreCase("SELECT col1, col2,Sum(col3)\n" + - "FROM table1")); - - sqlparser.parse(); - option.selectColumnlistStyle = TAlignStyle.AsStacked; - result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.equalsIgnoreCase("SELECT col1,\n" + - " col2,\n" + - " Sum(col3)\n" + - "FROM table1")); - } - - public static void testSelect_Columnlist_Comma(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - - sqlparser.sqltext = "select col1, col2,sum(col3) from table1"; - - sqlparser.parse(); - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName()+"."+new Exception().getStackTrace()[0].getMethodName()); - - option.selectColumnlistComma = TLinefeedsCommaOption.LfbeforeCommaWithSpace; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.equalsIgnoreCase("SELECT col1\n" + - " , col2\n" + - " , Sum(col3)\n" + - "FROM table1")); - - // System.out.println(result); - - } - - public static void testSelectItemInNewLine(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - - sqlparser.sqltext = "select col1, col2,sum(col3) from table1"; - - sqlparser.parse(); - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName()+"."+new Exception().getStackTrace()[0].getMethodName()); - - option.selectItemInNewLine = true; - String result = FormatterFactory.pp(sqlparser, option); - // System.out.println(result); - assertTrue(result.equalsIgnoreCase("SELECT\n" + - " col1,\n" + - " col2,\n" + - " Sum(col3)\n" + - "FROM table1")); - - TGSqlParser sqlparser2 = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser2.sqltext = "select top 10 col1 as b, col2222 as c,sum(col3) as d from table1"; - option.selectItemInNewLine = true; - option.alignAliasInSelectList = true; - sqlparser2.parse(); - result = FormatterFactory.pp(sqlparser2, option); - - //System.out.println(result); - assertTrue("selectItemInNewLine not work",result.equalsIgnoreCase("SELECT top 10\n" + - " col1 AS b,\n" + - " col2222 AS c,\n" + - " Sum(col3) AS d\n" + - "FROM table1")); - } - - public static void testAlignAliasInSelectList(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - - sqlparser.sqltext = "select col1 as b, col2222 as c,sum(col3) as d from table1"; - - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName()+"."+new Exception().getStackTrace()[0].getMethodName()); - - option.alignAliasInSelectList = false; - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.equalsIgnoreCase("SELECT col1 AS b,\n" + - " col2222 AS c,\n" + - " Sum(col3) AS d\n" + - "FROM table1")); - - sqlparser.parse(); - option.alignAliasInSelectList = true; - - result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.equalsIgnoreCase("SELECT col1 AS b,\n" + - " col2222 AS c,\n" + - " Sum(col3) AS d\n" + - "FROM table1")); - //System.out.println(result); - - } - - /** - * Not support option.treatDistinctAsVirtualColumn yet - */ - public static void testTreatDistinctAsVirtualColumn(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName()+"."+new Exception().getStackTrace()[0].getMethodName()); - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - - sqlparser.sqltext = "select distinct col1 as b, col2222 as c,sum(col3) as d from table1"; - - option.treatDistinctAsVirtualColumn = true; - sqlparser.parse(); - String result = FormatterFactory.pp(sqlparser, option); - // System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("SELECT DISTINCT \n" + - " col1 AS b,\n" + - " col2222 AS c,\n" + - " Sum(col3) AS d\n" + - "FROM table1")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhereClause.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhereClause.java deleted file mode 100644 index 3a1bf044..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhereClause.java +++ /dev/null @@ -1,49 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testWhereClause extends TestCase { - - public static void testAndOrUnderWhere(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT e.employee_id,\n" + - " d.locatioin_id\n" + - "FROM employees e,\n" + - " departments d\n" + - "WHERE e.department_id = d.department_id\n" + - " AND e.last_name = 'Matos' and exists(\n" + - "\t\t\t\tSELECT e.employee_id\n" + - "\t\t\t\tFROM employees e,\n" + - "\t\t\t\t departments d\n" + - "\t\t\t\tWHERE e.department_id = d.department_id\n" + - "\t\t\t\t AND e.last_name \n" + - " );"; - - sqlparser.parse(); - option.andOrUnderWhere = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT e.employee_id,\n" + - " d.locatioin_id\n" + - "FROM employees e,\n" + - " departments d\n" + - "WHERE e.department_id = d.department_id\n" + - " AND e.last_name = 'Matos'\n" + - " AND EXISTS( SELECT e.employee_id\n" + - " FROM employees e,\n" + - " departments d\n" + - " WHERE e.department_id = d.department_id\n" + - " AND e.last_name );")); - // System.out.println(result); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhitespace.java b/src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhitespace.java deleted file mode 100644 index 6a55ac60..00000000 --- a/src/test/java/gudusoft/gsqlparser/formatsqlTest/testWhitespace.java +++ /dev/null @@ -1,182 +0,0 @@ -package gudusoft.gsqlparser.formatsqlTest; -/* - * Date: 11-3-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testWhitespace extends TestCase { - - public static void testWSPadding_OperatorArithmetic(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT * \n" + - "FROM dual \n" + - "WHERE 1=-1 \n" + - " AND(1!=2 \n" + - " OR 2^=3) \n" + - " AND 3<>4 \n" + - " AND 4>+5; "; - sqlparser.parse(); - option.wsPaddingOperatorArithmetic = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue("-1 shouldn't be - 1, +5 shouldn't be + 5, should be a space before 3",result.trim().equalsIgnoreCase("SELECT *\n" + - "FROM dual\n" + - "WHERE 1 = -1\n" + - " AND ( 1 != 2\n" + - " OR 2 ^= 3 )\n" + - " AND 3 <> 4\n" + - " AND 4 > +5;")); - // System.out.println(result); - } - - public static void testWSPadding_ParenthesesInFunction(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE FUNCTION sales.Fn_salesbystore\n" + - " ( @storeid INT) \n" + - "RETURNS TABLE \n" + - "AS \n" + - " RETURN 0;"; - sqlparser.parse(); - option.wsPaddingParenthesesInFunction = true; - option.beStyleFunctionRightBEOnNewline = false; - String result = FormatterFactory.pp(sqlparser, option); - //System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION sales.Fn_salesbystore ( @storeid INT ) \n" + - "RETURNS TABLE \n" + - "AS \n" + - " RETURN 0;")); - - sqlparser.parse(); - option.wsPaddingParenthesesInFunction = false; - option.beStyleFunctionRightBEOnNewline = false; - result = FormatterFactory.pp(sqlparser, option); - // System.out.println(result); - assertTrue(result.trim().equalsIgnoreCase("CREATE FUNCTION sales.Fn_salesbystore (@storeid INT) \n" + - "RETURNS TABLE \n" + - "AS \n" + - " RETURN 0;")); - } - - public static void testWSPadding_ParenthesesInExpression(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT ( ( ( a - b) - c)) FROM t "; - sqlparser.parse(); - option.wsPaddingParenthesesInExpression = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT ( ( ( a - b ) - c ) )\n" + - "FROM t")); - - //System.out.println(result); - - sqlparser.parse(); - option.wsPaddingParenthesesInExpression = false; - result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT (((a - b) - c))\n" + - "FROM t")); - - // System.out.println(result); - } - - public static void testWSPadding_ParenthesesOfSubQuery(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT last_name \n" + - "FROM employees \n" + - "WHERE salary > ( SELECT salary \n" + - " FROM employees \n" + - " WHERE last_name = 'Abel');"; - sqlparser.parse(); - option.wsPaddingParenthesesOfSubQuery = true; - - String result = FormatterFactory.pp(sqlparser, option); - - assertTrue(result.trim().equalsIgnoreCase("SELECT last_name\n" + - "FROM employees\n" + - "WHERE salary > ( SELECT salary\n" + - " FROM employees\n" + - " WHERE last_name = 'Abel' );")); - - //System.out.println(result); - - sqlparser.parse(); - option.wsPaddingParenthesesOfSubQuery = false; - result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT last_name\n" + - "FROM employees\n" + - "WHERE salary > (SELECT salary\n" + - " FROM employees\n" + - " WHERE last_name = 'Abel');")); - //System.out.println(result); - } - - public static void testWSPadding_ParenthesesInFunctionCall(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT department_id,\n" + - " Min( salary) \n" + - "FROM employees \n" + - "GROUP BY department_id"; - sqlparser.parse(); - - option.wsPaddingParenthesesInFunctionCall = true; - String result = FormatterFactory.pp(sqlparser, option); - - assertTrue(result.trim().equalsIgnoreCase("SELECT department_id,\n" + - " Min( salary )\n" + - "FROM employees\n" + - "GROUP BY department_id")); - //System.out.println(result); - - sqlparser.parse(); - option.wsPaddingParenthesesInFunctionCall = false; - result = FormatterFactory.pp(sqlparser, option); - assertTrue(result.trim().equalsIgnoreCase("SELECT department_id,\n" + - " Min(salary)\n" + - "FROM employees\n" + - "GROUP BY department_id")); - - //System.out.println(result); - } - - public static void testWSPadding_ParenthesesOfTypename(){ - GFmtOpt option = GFmtOptFactory.newInstance(new Exception().getStackTrace()[0].getClassName() + "." + new Exception().getStackTrace()[0].getMethodName()); - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE TABLE datatype \n" + - " (fld0 GENERICTYPE,\n" + - " fld1 CHAR( 2),\n" + - " fld3 NCHAR( 1)); "; - - sqlparser.parse(); - - option.wsPaddingParenthesesOfTypename = true; - String result = FormatterFactory.pp(sqlparser, option); - assertTrue("wsPaddingParenthesesOfTypename = true not work",result.trim().equalsIgnoreCase("CREATE TABLE datatype(fld0 GENERICTYPE,\n" + - " fld1 CHAR( 2 ),\n" + - " fld3 NCHAR( 1 ));")); - //System.out.println(result); - - sqlparser.parse(); - option.wsPaddingParenthesesOfTypename = false; - result = FormatterFactory.pp(sqlparser, option); - - assertTrue("wsPaddingParenthesesOfTypename = false not work",result.trim().equalsIgnoreCase("CREATE TABLE datatype(fld0 GENERICTYPE,\n" + - " fld1 CHAR(2),\n" + - " fld3 NCHAR(1));")); - //System.out.println(result); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/gaussdbTest/testDeclareCursorSingleStmt.java b/src/test/java/gudusoft/gsqlparser/gaussdbTest/testDeclareCursorSingleStmt.java deleted file mode 100644 index ba8bc244..00000000 --- a/src/test/java/gudusoft/gsqlparser/gaussdbTest/testDeclareCursorSingleStmt.java +++ /dev/null @@ -1,25 +0,0 @@ -package gudusoft.gsqlparser.gaussdbTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDeclareCursorStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testDeclareCursorSingleStmt extends TestCase { - - public void testCreateFunction(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgaussdb); - sqlparser.sqltext = "DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2;"; - - assertTrue(sqlparser.parse() == 0); - TDeclareCursorStmt stmt = (TDeclareCursorStmt) sqlparser.sqlstatements.get(0); - assertTrue(stmt.getCursorName().toString().equalsIgnoreCase("foo")); - TSelectSqlStatement subQuery = stmt.getSubQuery(); - assertTrue(subQuery.isCombinedQuery()); - assertTrue(subQuery.getLeftStmt().getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("1")); - assertTrue(subQuery.getRightStmt().getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("2")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/gaussdbTest/testGetStmts.java b/src/test/java/gudusoft/gsqlparser/gaussdbTest/testGetStmts.java deleted file mode 100644 index dfa9af29..00000000 --- a/src/test/java/gudusoft/gsqlparser/gaussdbTest/testGetStmts.java +++ /dev/null @@ -1,66 +0,0 @@ -package gudusoft.gsqlparser.gaussdbTest; - -import gudusoft.gsqlparser.commonTest.gspCommon; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.*; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreatePackage; -import junit.framework.TestCase; - -public class testGetStmts extends TestCase { - - public void testCreateFunction(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgaussdb); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "gaussdb/sql grammar/CREATE FUNCTION.sql"; - assertTrue(sqlparser.getrawsqlstatements() == 0); - assertTrue(sqlparser.getSqlstatements().size() == 29); - assertTrue(sqlparser.sqlstatements.get(1) instanceof TCreateFunctionStmt); - assertTrue(sqlparser.sqlstatements.get(1).getStartToken().lineNo == 13); - assertTrue(sqlparser.sqlstatements.get(23) instanceof TCreateFunctionStmt); - assertTrue(sqlparser.sqlstatements.get(23).getStartToken().lineNo == 104); - assertTrue(sqlparser.sqlstatements.get(28) instanceof TCommonBlock); - assertTrue(sqlparser.sqlstatements.get(28).getStartToken().lineNo == 162); - } - - public void testCreatePackage(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgaussdb); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "gaussdb/sql grammar/CREATE PACKAGE.sql"; - assertTrue(sqlparser.getrawsqlstatements() == 0); - assertTrue(sqlparser.getSqlstatements().size() == 9); - assertTrue(sqlparser.sqlstatements.get(1) instanceof TPlsqlCreatePackage); - assertTrue(sqlparser.sqlstatements.get(1).getStartToken().lineNo == 7); - assertTrue(sqlparser.sqlstatements.get(3) instanceof TPlsqlCreatePackage); - assertTrue(sqlparser.sqlstatements.get(3).getStartToken().lineNo == 14); - assertTrue(sqlparser.sqlstatements.get(7) instanceof TCommonBlock); - assertTrue(sqlparser.sqlstatements.get(7).getStartToken().lineNo == 36); - } - - public void testCreateProcedure(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgaussdb); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "gaussdb/sql grammar/CREATE PROCEDURE.sql"; - assertTrue(sqlparser.getrawsqlstatements() == 0); - assertTrue(sqlparser.getSqlstatements().size() == 16); - assertTrue(sqlparser.sqlstatements.get(0) instanceof TCreateProcedureStmt); - assertTrue(sqlparser.sqlstatements.get(0).getStartToken().lineNo == 6); - assertTrue(sqlparser.sqlstatements.get(7) instanceof TCreateProcedureStmt); - assertTrue(sqlparser.sqlstatements.get(7).getStartToken().lineNo == 34); - assertTrue(sqlparser.sqlstatements.get(10) instanceof TCreateProcedureStmt); - assertTrue(sqlparser.sqlstatements.get(10).getStartToken().lineNo == 46); - } - - public void testCreateTrigger(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgaussdb); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_JAVA + "gaussdb/sql grammar/CREATE TRIGGER.sql"; - assertTrue(sqlparser.getrawsqlstatements() == 0); - assertTrue(sqlparser.getSqlstatements().size() == 23); - assertTrue(sqlparser.sqlstatements.get(2) instanceof TCreateFunctionStmt); - assertTrue(sqlparser.sqlstatements.get(2).getStartToken().lineNo == 11); - assertTrue(sqlparser.sqlstatements.get(5) instanceof TCreateTriggerStmt); - assertTrue(sqlparser.sqlstatements.get(5).getStartToken().lineNo == 39); - assertTrue(sqlparser.sqlstatements.get(7) instanceof TCreateTriggerStmt); - assertTrue(sqlparser.sqlstatements.get(7).getStartToken().lineNo == 51); - assertTrue(sqlparser.sqlstatements.get(22) instanceof TDropTriggerSqlStatement); - assertTrue(sqlparser.sqlstatements.get(22).getStartToken().lineNo == 83); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/greenplumTest/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testAlterTable.java deleted file mode 100644 index ef0e1340..00000000 --- a/src/test/java/gudusoft/gsqlparser/greenplumTest/testAlterTable.java +++ /dev/null @@ -1,39 +0,0 @@ -package gudusoft.gsqlparser.greenplumTest; -/* - * Date: 13-12-26 - */ - -import gudusoft.gsqlparser.EAlterTableOptionType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TAlterTableOption; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import junit.framework.TestCase; - -public class testAlterTable extends TestCase { - - public void testRenameColumn(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "ALTER TABLE distributors RENAME COLUMN address TO city;"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("distributors")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.RenameColumn); - assertTrue(ato.getColumnName().toString().equalsIgnoreCase("address")); - assertTrue(ato.getNewColumnName().toString().equalsIgnoreCase("city")); - } - - public void testSetSchema(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "ALTER TABLE myschema.distributors SET SCHEMA yourschema;"; - assertTrue(sqlparser.parse() == 0); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("myschema.distributors")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.setSchema); - assertTrue(ato.getSchemaName().toString().equalsIgnoreCase("yourschema")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateExternalTable.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateExternalTable.java deleted file mode 100644 index 02a6122d..00000000 --- a/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateExternalTable.java +++ /dev/null @@ -1,100 +0,0 @@ -package gudusoft.gsqlparser.greenplumTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateExternalTable extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "CREATE EXTERNAL TABLE ext_customer\n" + - " (id int, name text, sponsor text) \n" + - " LOCATION ( 'gpfdist://filehost:8081/*.txt' ) \n" + - " FORMAT 'TEXT' ( DELIMITER '|' NULL ' ')\n" + - " LOG ERRORS SEGMENT REJECT LIMIT 5;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("ext_customer")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(0).getColumnName().toString().equalsIgnoreCase("id")); - assertTrue(createTableSqlStatement.getLocationFiles().size() == 1); - assertTrue(createTableSqlStatement.getLocationFiles().get(0).toString().equalsIgnoreCase("'gpfdist://filehost:8081/*.txt'")); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "CREATE EXTERNAL TABLE ext_expenses (name text, date date, \n" + - "amount float4, category text, description text) \n" + - "LOCATION ( \n" + - "'file://seghost1/dbfast/external/expenses1.csv',\n" + - "'file://seghost1/dbfast/external/expenses2.csv',\n" + - "'file://seghost2/dbfast/external/expenses3.csv',\n" + - "'file://seghost2/dbfast/external/expenses4.csv',\n" + - "'file://seghost3/dbfast/external/expenses5.csv',\n" + - "'file://seghost3/dbfast/external/expenses6.csv' \n" + - ")\n" + - "FORMAT 'CSV' ( HEADER );"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("ext_expenses")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(0).getColumnName().toString().equalsIgnoreCase("name")); - assertTrue(createTableSqlStatement.getLocationFiles().size() == 6); - assertTrue(createTableSqlStatement.getLocationFiles().get(5).toString().equalsIgnoreCase("'file://seghost3/dbfast/external/expenses6.csv'")); - - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "CREATE EXTERNAL WEB TABLE log_output (linenum int, message \n" + - "text) EXECUTE '/var/load_scripts/get_log_data.sh' ON HOST \n" + - " FORMAT 'TEXT' (DELIMITER '|');"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.isWebTable()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("log_output")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(0).getColumnName().toString().equalsIgnoreCase("linenum")); - assertTrue(createTableSqlStatement.getExecuteCmd().toString().equalsIgnoreCase("'/var/load_scripts/get_log_data.sh'")); - } - - public void test4(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "CREATE WRITABLE EXTERNAL TABLE sales_out (LIKE sales) \n" + - " LOCATION ('gpfdist://etl1:8081/sales.out')\n" + - " FORMAT 'TEXT' ( DELIMITER '|' NULL ' ')\n" + - " DISTRIBUTED BY (txn_id);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.isWritable()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("sales_out")); - assertTrue(createTableSqlStatement.getLocationFiles().size() == 1); - assertTrue(createTableSqlStatement.getLocationFiles().get(0).toString().equalsIgnoreCase("'gpfdist://etl1:8081/sales.out'")); - assertTrue(createTableSqlStatement.getLikeTableName().toString().equalsIgnoreCase("sales")); - } - - public void test5(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "CREATE WRITABLE EXTERNAL WEB TABLE campaign_out \n" + - "(LIKE campaign) \n" + - " EXECUTE '/var/unload_scripts/to_adreport_etl.sh'\n" + - " FORMAT 'TEXT' (DELIMITER '|');"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.isWritable()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("campaign_out")); - assertTrue(createTableSqlStatement.getLikeTableName().toString().equalsIgnoreCase("campaign")); - assertTrue(createTableSqlStatement.getExecuteCmd().toString().equalsIgnoreCase("'/var/unload_scripts/to_adreport_etl.sh'")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateFunction.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateFunction.java deleted file mode 100644 index b22f76eb..00000000 --- a/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateFunction.java +++ /dev/null @@ -1,532 +0,0 @@ -package gudusoft.gsqlparser.greenplumTest; -/* - * Date: 13-12-26 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testCreateFunction extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "CREATE FUNCTION complex_add(complex, complex)\n" + - "RETURNS complex\n" + - "AS 'filename', 'complex_add'\n" + - "LANGUAGE C IMMUTABLE STRICT;"; - // System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("complex_add")); - assertTrue(createFunction.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.generic_t); - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.generic_t); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("C")); - assertTrue(createFunction.getObjfile().toString().equalsIgnoreCase("'filename'")); - assertTrue(createFunction.getLinkSymbol().toString().equalsIgnoreCase("'complex_add'")); - } - - - public void testplpgsql(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "--==============================================================================\n" + - "\n" + - "-- DBMS Name : Greenplum\n" + - "\n" + - "-- Script Name : update_wrk_bdw_gz_account_rollup_AFS_facility\n" + - "\n" + - "-- Description : Update the Stage table wrk_bdw_gz_account_rollup_AFS_facility\n" + - "\n" + - "-- Generated by : WhereScape RED Version 6.8.3.4 (build 150604-150128 RC)\n" + - "\n" + - "-- Generated for : Union Bank\n" + - "\n" + - "-- Generated on : Tuesday, March 15, 2016 at 13:17:50\n" + - "\n" + - "-- Author : xu82760\n" + - "\n" + - "--==============================================================================\n" + - "\n" + - "-- Notes / History\n" + - "\n" + - "--\n" + - "\n" + - "\n" + - "\n" + - "CREATE OR REPLACE FUNCTION FUNCTIONOWNER.update_wrk_bdw_gz_account_rollup_AFS_facility\n" + - "\n" + - " (\n" + - "\n" + - " p_sequence IN integer,\n" + - "\n" + - " p_job_name IN varchar(256),\n" + - "\n" + - " p_task_name IN varchar(256),\n" + - "\n" + - " p_job_id IN integer,\n" + - "\n" + - " p_task_id IN integer,\n" + - "\n" + - " p_parameters INOUT varchar[][],\n" + - "\n" + - " p_return_msg INOUT varchar(256),\n" + - "\n" + - " p_status INOUT integer\n" + - "\n" + - " )\n" + - "\n" + - "RETURNS RECORD\n" + - "\n" + - "AS $BODY$\n" + - "\n" + - "DECLARE\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- Control variables used in most programs\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " v_msgtext varchar(255); -- Text for audit_trail\n" + - "\n" + - " v_sql varchar(255); -- Text for SQL statements\n" + - "\n" + - " v_set integer; -- commit set\n" + - "\n" + - " v_analyze_flag integer; -- analyze flag\n" + - "\n" + - " v_step integer; -- return code\n" + - "\n" + - " v_insert_count integer; -- no of records inserted\n" + - "\n" + - " v_count integer; -- General counter\n" + - "\n" + - " v_sql_code integer; -- SQL Error Code for Audit Trail\n" + - "\n" + - " v_sql_error varchar(255); -- SQL Error Code for Audit Trail as varchar\n" + - "\n" + - " v_msg_type varchar(10); -- Message Type for WsWrkError Calls\n" + - "\n" + - "\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- General Variables\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " v_return_status integer; -- Update result status\n" + - "\n" + - " v_row_count integer; -- General row count\n" + - "\n" + - " v_status integer; -- General status field\n" + - "\n" + - " v_current_timestamp timestamp; -- Used for create/update dates\n" + - "\n" + - " v_current_datetime date ; -- Used for create/update dates\n" + - "\n" + - " v_current_date date; -- Current Date used for start and end dates\n" + - "\n" + - "\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- Main\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " BEGIN\n" + - "\n" + - " v_step := 100;\n" + - "\n" + - " v_row_count := 0;\n" + - "\n" + - " v_insert_count := 0;\n" + - "\n" + - " v_current_timestamp := CURRENT_TIMESTAMP;\n" + - "\n" + - " v_current_datetime := NOW();\n" + - "\n" + - " v_current_date := CURRENT_DATE;\n" + - "\n" + - "\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- Delete any records that we will be replacing\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " TRUNCATE TABLEOWNER.wrk_bdw_gz_account_rollup_AFS_facility;\n" + - "\n" + - "\n" + - "\n" + - " v_step := 200;\n" + - "\n" + - "\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- Insert new records\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " BEGIN\n" + - "\n" + - " v_row_count := 0;\n" + - "\n" + - "\n" + - "\n" + - " INSERT INTO TABLEOWNER.wrk_bdw_gz_account_rollup_AFS_facility\n" + - "\n" + - " ( account_number\n" + - "\n" + - " , as_of_date\n" + - "\n" + - " , source_system_code\n" + - "\n" + - " , committed_ult_parent_account_number\n" + - "\n" + - " , cif_number\n" + - "\n" + - " , source_system_customer_number\n" + - "\n" + - " , booking_office_responsible_center\n" + - "\n" + - " , account_opening_date\n" + - "\n" + - " , account_type_code\n" + - "\n" + - " , account_schedule_code\n" + - "\n" + - " , commitment_type_code\n" + - "\n" + - " , open_closed_ind\n" + - "\n" + - " , closed_date\n" + - "\n" + - " , closed_in_prev_period_indicator\n" + - "\n" + - " , commitment_amount\n" + - "\n" + - " , commitment_alloc_amount\n" + - "\n" + - " , commitment_unalloc_amount\n" + - "\n" + - " , part_commitment_amount\n" + - "\n" + - " , outstanding_balance\n" + - "\n" + - " , part_out_balance\n" + - "\n" + - " , run_identifier\n" + - "\n" + - " , population_timestamp\n" + - "\n" + - " )\n" + - "\n" + - " SELECT\n" + - "\n" + - " afsoblig_foc03_data.foc03_fc_oblg_mc010 || afsoblig_foc03_data.foc03_fc_obln_mc015\n" + - "\n" + - " , afsoblig_foc03_data.period_dt\n" + - "\n" + - " , 'AFS'\n" + - "\n" + - " , afsoblig_foc03_data.foc03_fc_oblg_mc010 || afsoblig_foc03_data.foc03_fc_obln_mc015\n" + - "\n" + - " , CAST(gz_customer_xref.btmu_cif_number AS varchar(8))\n" + - "\n" + - " , afsoblig_foc03_data.foc03_fc_oblg_mc010\n" + - "\n" + - " , afsoblig_foc03_data.foc03_fc_serv_unit_mc080\n" + - "\n" + - " , afsoblig_foc03_data.foc03_fc_eff_date_mc044::date\n" + - "\n" + - " , 'CF'\n" + - "\n" + - " , string_to_array('03a',',')\n" + - "\n" + - " , 'C'\n" + - "\n" + - " , Case\n" + - "\n" + - "\twhen lpad(afsoblig_foc03_data.foc03_fc_assgn_unit_mc081,5,'0')\n" + - "\n" + - "\t\tin ('17808', '17908','84300','96405','99042') then 'N'\n" + - "\n" + - "\twhen lpad(afsoblig_foc03_data.foc03_fc_assgn_unit_mc081,5,'0')\n" + - "\n" + - "\t\tnot in ('17808', '17908','84300','96405','99042') and afsoblig_foc03_data.foc03_fc_curr_prin_mc061 = 0.00 and afsoblig_foc03_data.foc03_fc_prin_bld_npd_mc151 = 0.00 then 'N'\n" + - "\n" + - "\twhen lpad(afsoblig_foc03_data.foc03_fc_assgn_unit_mc081,5,'0')\n" + - "\n" + - "\t\tnot in ('17808', '17908','84300','96405','99042') and (afsoblig_foc03_data.foc03_fc_curr_prin_mc061 <> 0.00 or afsoblig_foc03_data.foc03_fc_prin_bld_npd_mc151 <> 0.00) then 'Y'\n" + - "\n" + - "\telse ''\n" + - "\n" + - "end\n" + - "\n" + - " , afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048::date\n" + - "\n" + - " , CASE\n" + - "\n" + - "WHEN\n" + - "\n" + - "(\n" + - "\n" + - "CASE\n" + - "\n" + - " WHEN afsoblig_foc03_data.foc03_f_commt_bal_mc066 = 0.00\n" + - "\n" + - " AND afsoblig_foc03_data.foc03_fc_dt_out_dbt_mc050 = afsoblig_foc03_data.foc03_fc_dt_lst_activ\n" + - "\n" + - " AND afsoblig_foc03_data.foc03_fc_close_ind_mc574>'0'\n" + - "\n" + - " THEN 'N'\n" + - "\n" + - " ELSE 'Y'\n" + - "\n" + - "END\n" + - "\n" + - ") = 'Y'\n" + - "\n" + - "THEN 'N'\n" + - "\n" + - "WHEN\n" + - "\n" + - "(\n" + - "\n" + - "CASE\n" + - "\n" + - " WHEN afsoblig_foc03_data.foc03_f_commt_bal_mc066 = 0.00\n" + - "\n" + - " AND afsoblig_foc03_data.foc03_fc_dt_out_dbt_mc050 = afsoblig_foc03_data.foc03_fc_dt_lst_activ\n" + - "\n" + - " AND afsoblig_foc03_data.foc03_fc_close_ind_mc574> '0'\n" + - "\n" + - " THEN 'N'\n" + - "\n" + - " ELSE 'Y'\n" + - "\n" + - "END\n" + - "\n" + - ") = 'N'\n" + - "\n" + - "THEN CASE\n" + - "\n" + - "WHEN (\n" + - "\n" + - "date_part('year', afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048) = date_part('year', afsoblig_foc03_data.period_dt)\n" + - "\n" + - "AND date_part('month', afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048) < date_part('month', afsoblig_foc03_data.period_dt)\n" + - "\n" + - ")\n" + - "\n" + - "OR date_part('year', afsoblig_foc03_data.foc03_fc_legal_mat_dt_mc048) < date_part('year', afsoblig_foc03_data.period_dt)\n" + - "\n" + - "THEN 'Y'\n" + - "\n" + - "ELSE 'N'\n" + - "\n" + - "END\n" + - "\n" + - "END\n" + - "\n" + - " , afsoblig_foc03_data.foc03_f_commt_bal_mc066::numeric\n" + - "\n" + - " , afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + - "\n" + - " , CAST(afsoblig_foc03_data.FOC03_F_COMMT_BAL_MC066::numeric - afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + - "\n" + - " AS NUMERIC)\n" + - "\n" + - " , CAST(afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric * afsoblig_foc03_data.foc03_FC_TOT_PART_PCT_MC736::numeric\n" + - "\n" + - " AS numeric)\n" + - "\n" + - " , CAST (CASE WHEN afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric >= 0\n" + - "\n" + - " THEN afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + - "\n" + - " ELSE afsoblig_foc03_data.foc03_f_commt_bal_mc066::numeric + afsoblig_foc03_data.foc03_f_prin_amt_takendown::numeric\n" + - "\n" + - "END AS numeric)\n" + - "\n" + - " , afsoblig_foc03_data.FOC03_FC_T_PART_AMT_MC732::numeric\n" + - "\n" + - " , p_sequence\n" + - "\n" + - " , current_timestamp\n" + - "\n" + - " FROM\n" + - "\n" + - " (\n" + - "\n" + - " SELECT\n" + - "\n" + - " a.period_dt\n" + - "\n" + - " ,a.foc03_fc_oblg_mc010\n" + - "\n" + - " ,a.foc03_fc_obln_mc015\n" + - "\n" + - " ,a.foc03_fc_proc_type_mc038\n" + - "\n" + - " ,a.foc03_fc_gl_code_mc083\n" + - "\n" + - " ,a.foc03_fc_type_mc043\n" + - "\n" + - " ,coalesce(b.foc03_fc_curr_prin_mc061, a.foc03_fc_curr_prin_mc061) foc03_fc_curr_prin_mc061\n" + - "\n" + - " ,coalesce(b.foc03_fc_assgn_unit_mc081, a.foc03_fc_assgn_unit_mc081) foc03_fc_assgn_unit_mc081\n" + - "\n" + - " ,coalesce(b.foc03_fc_prin_bld_npd_mc151, a.foc03_fc_prin_bld_npd_mc151) foc03_fc_prin_bld_npd_mc151\n" + - "\n" + - " ,coalesce(b.foc03_fc_payoff_rsn_cd_mc618, a.foc03_fc_payoff_rsn_cd_mc618) foc03_fc_payoff_rsn_cd_mc618\n" + - "\n" + - " ,coalesce(b.foc03_fc_legal_mat_dt_mc048, a.foc03_fc_legal_mat_dt_mc048) foc03_fc_legal_mat_dt_mc048\n" + - "\n" + - " ,coalesce(b.foc03_f_commt_bal_mc066, a.foc03_f_commt_bal_mc066) foc03_f_commt_bal_mc066\n" + - "\n" + - " ,coalesce(b.foc03_fc_serv_unit_mc080, a.foc03_fc_serv_unit_mc080) foc03_fc_serv_unit_mc080\n" + - "\n" + - " ,coalesce(b.foc03_fc_eff_date_mc044, a.foc03_fc_eff_date_mc044) foc03_fc_eff_date_mc044\n" + - "\n" + - " ,coalesce(b.FOC03_FC_EST_MAT_DT_MC049, a.FOC03_FC_EST_MAT_DT_MC049) FOC03_FC_EST_MAT_DT_MC049\n" + - "\n" + - " ,coalesce(b.foc03_f_prin_amt_takendown, a.foc03_f_prin_amt_takendown) foc03_f_prin_amt_takendown\n" + - "\n" + - " ,coalesce(b.foc03_fc_tot_part_pct_mc736, a.foc03_fc_tot_part_pct_mc736) foc03_fc_tot_part_pct_mc736\n" + - "\n" + - " ,coalesce(b.FOC03_FC_BK_ASSET_BAL_MC904, a.FOC03_FC_BK_ASSET_BAL_MC904) FOC03_FC_BK_ASSET_BAL_MC904\n" + - "\n" + - " ,coalesce(b.FOC03_FC_T_PART_AMT_MC732, a.FOC03_FC_T_PART_AMT_MC732) FOC03_FC_T_PART_AMT_MC732\n" + - "\n" + - " ,coalesce(b.foc03_fc_dt_out_dbt_mc050, a.foc03_fc_dt_out_dbt_mc050) foc03_fc_dt_out_dbt_mc050\n" + - "\n" + - " ,coalesce(b.foc03_fc_dt_lst_activ, a.foc03_fc_dt_lst_activ) foc03_fc_dt_lst_activ\n" + - "\n" + - " ,coalesce(b.foc03_fc_close_ind_mc574, a.foc03_fc_close_ind_mc574) foc03_fc_close_ind_mc574\n" + - "\n" + - " ,coalesce(b.foc03_fc_intern_comm_mc039, a.foc03_fc_intern_comm_mc039) foc03_fc_intern_comm_mc039\n" + - "\n" + - " FROM TABLEOWNER.afsoblig_foc03_data a\n" + - "\n" + - " LEFT JOIN TABLEOWNER.afsoblig_foc03_data_swp b\n" + - "\n" + - " ON a.foc03_fc_oblg_mc010 = b.foc03_fc_oblg_mc010\n" + - "\n" + - " AND a.foc03_fc_obln_mc015 = b.foc03_fc_obln_mc015\n" + - "\n" + - " AND b.period_dt = udw_ops_cmn.get_udw_cntrl_param_value ('BDW','BDW_PROCESS_DATE')::date\n" + - "\n" + - " WHERE a.period_Dt = udw_ops_cmn.get_udw_cntrl_param_value ('BDW','BDW_PROCESS_DATE')::date\n" + - "\n" + - " ) afsoblig_foc03_data\n" + - "\n" + - " LEFT OUTER JOIN udw_gz_extract_pres.gz_customer_xref gz_customer_xref\n" + - "\n" + - " ON afsoblig_foc03_data.foc03_fc_oblg_mc010 = substring(gz_customer_xref.account_number from 9 for 10)\n" + - "\n" + - " AND gz_customer_xref.source_system='AFS'\n" + - "\n" + - " AND gz_customer_xref.primary_customer_indicator ='Y'\n" + - "\n" + - " AND afsoblig_foc03_data.period_dt=gz_customer_xref.as_of_date\n" + - "\n" + - " WHERE afsoblig_foc03_data.period_dt = udw_ops_cmn.get_udw_cntrl_param_value ('BDW','BDW_PROCESS_DATE')::date\n" + - "\n" + - " AND Substring(afsoblig_foc03_data.foc03_fc_proc_type_mc038, 1, 1) in ('0','1')\n" + - "\n" + - " AND Substring(afsoblig_foc03_data.foc03_fc_proc_type_mc038, 3, 2) <> ('02')\n" + - "\n" + - " ;\n" + - "\n" + - "\n" + - "\n" + - " GET DIAGNOSTICS v_row_count = row_count;\n" + - "\n" + - "\n" + - "\n" + - " END;\n" + - "\n" + - "\n" + - "\n" + - " v_insert_count := v_insert_count + v_row_count;\n" + - "\n" + - "\n" + - "\n" + - "\n" + - "\n" + - " v_step := 300;\n" + - "\n" + - "\n" + - "\n" + - " --============================================================================\n" + - "\n" + - " -- Final settings\n" + - "\n" + - " --============================================================================\n" + - "\n" + - "\n" + - "\n" + - " -- Work out the return message\n" + - "\n" + - "\n" + - "\n" + - " p_status := 1;\n" + - "\n" + - " p_return_msg := 'wrk_bdw_gz_account_rollup_AFS_facility truncated and updated. '\n" + - "\n" + - " || CAST(v_insert_count AS VARCHAR(64)) || ' records added. ';\n" + - "\n" + - "RETURN;\n" + - "\n" + - "\n" + - "\n" + - "EXCEPTION\n" + - "\n" + - "WHEN OTHERS THEN\n" + - "\n" + - " v_sql_code := 0;\n" + - "\n" + - " v_sql_error := SQLERRM;\n" + - "\n" + - " p_return_msg := 'Unhandled Exception in update_wrk_bdw_gz_account_rollup_AFS_facility. '||\n" + - "\n" + - " ' Step ' ||v_step;\n" + - "\n" + - " RAISE NOTICE 'WsWrkAudit:F|%|%|%|%|%|%|%|%|',p_job_name, p_task_name, p_sequence,\n" + - "\n" + - " p_return_msg,v_sql_code,v_sql_error,p_task_id, p_job_id;\n" + - "\n" + - " p_status := -3;\n" + - "\n" + - "\n" + - "\n" + - "RETURN;\n" + - "\n" + - "\n" + - "\n" + - "END;\n" + - "\n" + - "$BODY$ LANGUAGE plpgsql;\n" + - "\n" + - "\n"; - // - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("FUNCTIONOWNER.update_wrk_bdw_gz_account_rollup_AFS_facility")); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); - assertTrue(createFunction.getBodyStatements().size()==14); - //System.out.println(createFunction.getBodyStatements().size()); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateTable.java deleted file mode 100644 index 67508d6d..00000000 --- a/src/test/java/gudusoft/gsqlparser/greenplumTest/testCreateTable.java +++ /dev/null @@ -1,39 +0,0 @@ -package gudusoft.gsqlparser.greenplumTest; -/* - * Date: 13-12-26 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TExecuteSqlStatement; -import junit.framework.TestCase; - -public class testCreateTable extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "CREATE TEMP TABLE films_recent WITH (OIDS) ON COMMIT DROP AS \n" + - "EXECUTE recentfilms('2007-01-01');"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TExecuteSqlStatement executePreparedStatement = createTableSqlStatement.getExecutePreparedStatement(); - assertTrue(executePreparedStatement.getStatementName().toString().equalsIgnoreCase("recentfilms")); - assertTrue(executePreparedStatement.getParameters().getExpression(0).toString().equalsIgnoreCase("'2007-01-01'")); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "create table t_key_event_file_student_101 (like t_key_event_file_student)"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("t_key_event_file_student_101")); - assertTrue(createTableSqlStatement.getLikeTableName().toString().equalsIgnoreCase("t_key_event_file_student")); - //System.out.println(createTableSqlStatement.getLikeTableName().toString()); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/greenplumTest/testDeclareBlock.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testDeclareBlock.java deleted file mode 100644 index 6b03271a..00000000 --- a/src/test/java/gudusoft/gsqlparser/greenplumTest/testDeclareBlock.java +++ /dev/null @@ -1,30 +0,0 @@ -package gudusoft.gsqlparser.greenplumTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.commonTest.gspCommon; -import gudusoft.gsqlparser.stmt.TCommonBlock; -import junit.framework.TestCase; - -public class testDeclareBlock extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.setSqlfilename(gspCommon.BASE_SQL_DIR_PRIVATE +"java/greenplum/timewalking/declare_block.sql"); - assertTrue(sqlparser.parse() == 0); - - TCommonBlock block = (TCommonBlock)sqlparser.sqlstatements.get(0); - assertTrue(block.getBodyStatements().size()==127); - assertTrue(block.getDeclareStatements().size() == 37); -// int i = 0; -// for(TCustomSqlStatement sql:block.getBodyStatements()){ -// i++; -// System.out.println(i+":\t"+sql.sqlstatementtype); -// if ((sql.getStartToken()==null)||(sql.getEndToken()==null)){ -// System.out.println("\t"+i); -// } -// } - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/greenplumTest/testSetVariable.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testSetVariable.java deleted file mode 100644 index f0f7e3fc..00000000 --- a/src/test/java/gudusoft/gsqlparser/greenplumTest/testSetVariable.java +++ /dev/null @@ -1,33 +0,0 @@ -package gudusoft.gsqlparser.greenplumTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESetStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSetStmt; -import junit.framework.TestCase; - -public class testSetVariable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "SET statement_timeout = 0;"; - assertTrue(sqlparser.parse() == 0); - TSetStmt setStmt = (TSetStmt)sqlparser.sqlstatements.get(0); - assertTrue(setStmt.getSetStatementType() == ESetStatementType.variable); - assertTrue(setStmt.getVariableName().toString().equalsIgnoreCase("statement_timeout")); - assertTrue(setStmt.getVariableValue().toString().equalsIgnoreCase("0")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "SET search_path = dwd, pg_catalog;"; - assertTrue(sqlparser.parse() == 0); - TSetStmt setStmt = (TSetStmt)sqlparser.sqlstatements.get(0); - assertTrue(setStmt.getSetStatementType() == ESetStatementType.variable); - assertTrue(setStmt.getVariableName().toString().equalsIgnoreCase("search_path")); - assertTrue(setStmt.getVariableValueList().getExpression(0).toString().equalsIgnoreCase("dwd")); - assertTrue(setStmt.getVariableValueList().getExpression(1).toString().equalsIgnoreCase("pg_catalog")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/greenplumTest/testValues.java b/src/test/java/gudusoft/gsqlparser/greenplumTest/testValues.java deleted file mode 100644 index ac4c38d6..00000000 --- a/src/test/java/gudusoft/gsqlparser/greenplumTest/testValues.java +++ /dev/null @@ -1,61 +0,0 @@ -package gudusoft.gsqlparser.greenplumTest; -/* - * Date: 13-12-26 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testValues extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "VALUES (1, 'one'), (2, 'two'), (3, 'three');"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TValueClause valueClause = select.getValueClause(); - assertTrue(valueClause.getRows().size() == 3); - TResultColumnList row0 = valueClause.getRows().get(0); - assertTrue(row0.getResultColumn(0).toString().equalsIgnoreCase("1")); - assertTrue(row0.getResultColumn(1).toString().equalsIgnoreCase("'one'")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvgreenplum); - sqlparser.sqltext = "SELECT f.* FROM films f, (VALUES('MGM', 'Horror'), ('UA', \n" + - "'Sci-Fi')) AS t (studio, kind) WHERE f.studio = t.studio AND \n" + - "f.kind = t.kind;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.joins.size() == 2 ); - TTable table2 = select.joins.getJoin(1).getTable(); - //System.out.println(table2.getTableType()); - assertTrue(table2.getTableType() == ETableSource.subquery); -// TValueClause valueClause = table2.getSubquery().getValueClause(); - assertTrue(table2.getAliasClause().getAliasName().toString().equalsIgnoreCase("t")); - assertTrue(table2.getAliasClause().getColumns().getObjectName(0).toString().equalsIgnoreCase("studio")); - - //select = table2.getSubquery(); - - TTable valueTable = select.getTables().getTable(1); - TValueClause valueClause = valueTable.getSubquery().getValueClause(); - - assertTrue(valueTable.getAliasClause().getColumns().size() == 2); - assertTrue(valueTable.getAliasClause().getColumns().getObjectName(0).toString().equalsIgnoreCase("studio")); - assertTrue(valueClause.getRows().size() == 2); - - TResultColumnList row0 = valueClause.getRows().get(0); - TResultColumnList row1 = valueClause.getRows().get(1); - assertTrue(row0.getResultColumn(0).toString().equalsIgnoreCase("'MGM'")); - assertTrue(row0.getResultColumn(1).toString().equalsIgnoreCase("'Horror'")); - assertTrue(row1.getResultColumn(0).toString().equalsIgnoreCase("'UA'")); - assertTrue(row1.getResultColumn(1).toString().toString().equalsIgnoreCase("'Sci-Fi'")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hanaTest/testAlterProcedureAndFunction.java b/src/test/java/gudusoft/gsqlparser/hanaTest/testAlterProcedureAndFunction.java deleted file mode 100644 index a6a9c4c9..00000000 --- a/src/test/java/gudusoft/gsqlparser/hanaTest/testAlterProcedureAndFunction.java +++ /dev/null @@ -1,32 +0,0 @@ -package gudusoft.gsqlparser.hanaTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAlterFunctionStmt; -import gudusoft.gsqlparser.stmt.TAlterProcedureStmt; -import junit.framework.TestCase; - -public class testAlterProcedureAndFunction extends TestCase { - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "ALTER PROCEDURE p3 RECOMPILE;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstalterprocedure); - TAlterProcedureStmt alterProcedureStmt = (TAlterProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(alterProcedureStmt.getProcedureName().toString().equalsIgnoreCase("p3")); - assertTrue(alterProcedureStmt.getAlterType() == TAlterProcedureStmt.AlterType.recompile); - - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "ALTER FUNCTION Scale1 ADD STATIC CACHE RETENTION 10;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstalterfunction); - TAlterFunctionStmt alterFunctionStmt = (TAlterFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(alterFunctionStmt.getFunctionName().toString().equalsIgnoreCase("Scale1")); - assertTrue(alterFunctionStmt.getAlterType() == TAlterFunctionStmt.AlterType.addDrop); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hanaTest/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/hanaTest/testCreateProcedure.java deleted file mode 100644 index 30776d8a..00000000 --- a/src/test/java/gudusoft/gsqlparser/hanaTest/testCreateProcedure.java +++ /dev/null @@ -1,35 +0,0 @@ -package gudusoft.gsqlparser.hanaTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import junit.framework.TestCase; - -public class testCreateProcedure extends TestCase { - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "CREATE PROCEDURE upsert_proc (IN v_isbn VARCHAR(20))\n" + - "LANGUAGE SQLSCRIPT AS\n" + - "BEGIN\n" + - " DECLARE found INT = 1;\n" + - " SELECT count(*) INTO found FROM books WHERE isbn = :v_isbn;\n" + - " IF :found = 0\n" + - " THEN\n" + - " INSERT INTO books\n" + - " VALUES (:v_isbn, 'In-Memory Data Management', 1, 1,\n" + - " '2011', 42.75, 'EUR');\n" + - " ELSE\n" + - " UPDATE books SET price = 42.75 WHERE isbn =:v_isbn;\n" + - " END IF;\n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedureStmt = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(createProcedureStmt.getBodyStatements().size() == 3); - for(TCustomSqlStatement sqlStatement: createProcedureStmt.getBodyStatements()){ - // System.out.println(sqlStatement.sqlstatementtype); - } - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hanaTest/testLateral.java b/src/test/java/gudusoft/gsqlparser/hanaTest/testLateral.java deleted file mode 100644 index 7eca1b9f..00000000 --- a/src/test/java/gudusoft/gsqlparser/hanaTest/testLateral.java +++ /dev/null @@ -1,18 +0,0 @@ -package gudusoft.gsqlparser.hanaTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testLateral extends TestCase { - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "SELECT TA.a1, TB.b1 FROM TA, LATERAL (SELECT b1, b2 FROM TB WHERE b3 = TA.a3) TB WHERE TA.a2 = TB.b2;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(selectSqlStatement.getSyntaxHints().size() == 0); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hanaTest/testUpsert.java b/src/test/java/gudusoft/gsqlparser/hanaTest/testUpsert.java deleted file mode 100644 index b5a2f793..00000000 --- a/src/test/java/gudusoft/gsqlparser/hanaTest/testUpsert.java +++ /dev/null @@ -1,82 +0,0 @@ -package gudusoft.gsqlparser.hanaTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TMultiTarget; -import gudusoft.gsqlparser.nodes.TResultColumnList; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TUpsertStmt; -import junit.framework.TestCase; - -public class testUpsert extends TestCase { - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T VALUES (1, 1);"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); - TMultiTarget multiTarget = upsertStmt.getValues().getMultiTarget(0); - TResultColumnList columnList = multiTarget.getColumnList(); - assertTrue(columnList.getResultColumn(0).toString().equalsIgnoreCase("1")); - assertTrue(columnList.getResultColumn(1).toString().equalsIgnoreCase("1")); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T VALUES (1, 9) WHERE KEY = 1;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); - TMultiTarget multiTarget = upsertStmt.getValues().getMultiTarget(0); - TResultColumnList columnList = multiTarget.getColumnList(); - assertTrue(columnList.getResultColumn(0).toString().equalsIgnoreCase("1")); - assertTrue(columnList.getResultColumn(1).toString().equalsIgnoreCase("9")); - assertTrue(upsertStmt.getWhereClause().getCondition().toString().equalsIgnoreCase("KEY = 1")); - } - - public void test3() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T VALUES (1, 8) WITH PRIMARY KEY;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); - TMultiTarget multiTarget = upsertStmt.getValues().getMultiTarget(0); - TResultColumnList columnList = multiTarget.getColumnList(); - assertTrue(columnList.getResultColumn(0).toString().equalsIgnoreCase("1")); - assertTrue(columnList.getResultColumn(1).toString().equalsIgnoreCase("8")); - } - - public void test4() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T SELECT KEY + 2, VAL FROM T;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T")); - TSelectSqlStatement select = upsertStmt.getSubQuery(); - assertTrue(select.getTables().getTable(0).toString().equalsIgnoreCase("T")); - } - - public void test5() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T1 VALUES ( 1, ARRAY ( 21, 22, 23, 24 ) ) WHERE ID = 1;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T1")); - } - - public void test6() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhana); - sqlparser.sqltext = "UPSERT T1 VALUES ( 1, ARRAY ( SELECT C1 FROM T0 ) ) WHERE ID = 1;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstupsert); - TUpsertStmt upsertStmt = (TUpsertStmt) sqlparser.sqlstatements.get(0); - assertTrue(upsertStmt.getTargetTable().toString().equalsIgnoreCase("T1")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testAlias.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testAlias.java deleted file mode 100644 index 7aed411c..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testAlias.java +++ /dev/null @@ -1,41 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-12 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TAliasClause; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.nodes.hive.THiveTransformClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testAlias extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "SELECT TRANSFORM(stuff) \n" + - " USING 'script'\n" + - " AS (thing1 INT, thing2 INT) from b;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - THiveTransformClause transformClause = select.getTransformClause(); - assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettSelect); - assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'script'")); - - TAliasClause aliasClause = transformClause.getAliasClause(); - assertTrue(aliasClause.getColumnNameTypeList().size() == 2); - TColumnDefinition cd1 = aliasClause.getColumnNameTypeList().getColumn(0); - assertTrue(cd1.getColumnName().toString().equalsIgnoreCase("thing1")); - assertTrue(cd1.getDatatype().getDataType() == EDataType.int_t); - TColumnDefinition cd2 = aliasClause.getColumnNameTypeList().getColumn(1); - assertTrue(cd2.getColumnName().toString().equalsIgnoreCase("thing2")); - assertTrue(cd2.getDatatype().getDataType() == EDataType.int_t); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testAlterTable.java deleted file mode 100644 index 2217270f..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testAlterTable.java +++ /dev/null @@ -1,48 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.EAlterTableOptionType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TAlterTableOption; -import gudusoft.gsqlparser.nodes.TPartitionExtensionClause; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import junit.framework.TestCase; - -/** - * Created by IntelliJ IDEA. - * User: tako - * Date: 13-8-18 - * Time: 上午8:57 - * To change this template use File | Settings | File Templates. - */ -public class testAlterTable extends TestCase { - - public void testSerde(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "alter table decimal_1 set serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe';"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("decimal_1")); - - TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.serde); - assertTrue(alterTableOption.getSerdeName().toString().equalsIgnoreCase("'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'")); - } - - public void testArchive(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "ALTER TABLE srcpart UNARCHIVE PARTITION(ds='2008-04-08', hr='12');"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("srcpart")); - - TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.unArchive); - assertTrue(alterTableOption.getPartitionSpecList().size() == 1); - TPartitionExtensionClause partitionSpec = alterTableOption.getPartitionSpecList().get(0); - assertTrue(partitionSpec.getKeyValues().getExpression(0).toString().equalsIgnoreCase("ds='2008-04-08'")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testAnalyze.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testAnalyze.java deleted file mode 100644 index de2316a0..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testAnalyze.java +++ /dev/null @@ -1,30 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-16 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TPartitionExtensionClause; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TAnalyzeStmt; -import junit.framework.TestCase; - -public class testAnalyze extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "ANALYZE TABLE Table1 PARTITION(ds='2008-04-09', hr) COMPUTE STATISTICS noscan;"; - assertTrue(sqlparser.parse() == 0); - - TAnalyzeStmt analyzeTable = (TAnalyzeStmt)sqlparser.sqlstatements.get(0); - assertTrue(analyzeTable.getTable().getFullName().equalsIgnoreCase("Table1")); - TTable table = analyzeTable.getTable(); - TPartitionExtensionClause partition = table.getPartitionExtensionClause(); - assertTrue(partition.getKeyValues().size() == 2); - assertTrue(partition.getKeyValues().getExpression(0).getLeftOperand().toString().equalsIgnoreCase("ds")); - assertTrue(partition.getKeyValues().getExpression(0).getRightOperand().toString().equalsIgnoreCase("'2008-04-09'")); - assertTrue(partition.getKeyValues().getExpression(1).getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(partition.getKeyValues().getExpression(1).getObjectOperand().toString().equalsIgnoreCase("hr")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testCTE.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCTE.java deleted file mode 100644 index b2035024..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testCTE.java +++ /dev/null @@ -1,48 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TCTE; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testCTE extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "with q1 as ( select key from src where key = '5')\n" + - "select *\n" + - "from q1;\n"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("q1")); - assertTrue(select.getCteList().size() == 1); - TCTE cte = select.getCteList().getCTE(0); - assertTrue(cte.getTableName().toString().equalsIgnoreCase("q1")); - TSelectSqlStatement s1 = cte.getSubquery(); - assertTrue(s1.tables.getTable(0).toString().equalsIgnoreCase("src")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "with q1 as (select * from src where key= '5')\n" + - "from q1\n" + - "select *;"; - assertTrue(sqlparser.parse() == 0); - - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement fromQuery = (TSelectSqlStatement)sqlStatement; - - - assertTrue(fromQuery.tables.getTable(0).toString().equalsIgnoreCase("q1")); - assertTrue(fromQuery.getCteList().size() == 1); - TCTE cte = fromQuery.getCteList().getCTE(0); - assertTrue(cte.getTableName().toString().equalsIgnoreCase("q1")); - TSelectSqlStatement s1 = cte.getSubquery(); - assertTrue(s1.tables.getTable(0).toString().equalsIgnoreCase("src")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testCastFunction.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCastFunction.java deleted file mode 100644 index 04de8735..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testCastFunction.java +++ /dev/null @@ -1,39 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCastFunction extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "create table nikesh.tournament_base_registration as\n" + - "select distinct process_date,cast(userid as bigint) as user_id,\n" + - "cast(channelid as int) as reg_channel_id,\n" + - "cast(str2['ptype'] as int) as ptype,\n" + - "cast(str2['pkr'] as int) as pkr,\n" + - "cast(str4['tid'] as bigint) as tid,\n" + - "str4['trnmnt_name'] as trnmnt_name,\n" + - "cast(str5['join_via'] as int) as join_via,\n" + - "cast(from_unixtime(unix_timestamp(timestamp,'yyyy-MM-dd hh:mm:ss')) as timestamp) as time_of_reg,\n" + - "\n" + - "case when str5['join_type'] = 'Join' then 0\n" + - " when str5['join_type'] = 'Waitlist' then 1 end as wait_list_ind\n" + - "\n" + - "from taxonomy.gameplay a , nikesh.tournament_base b\n" + - "where cast(str4['tid'] as bigint) = b.id and process_date between date_sub('##v_start_date',60) and '##v_end_date'\n" + - "and event in ('join_click_response') and str5['response_type'] = 'Success';"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createTableSqlStatement.getSubQuery(); - assertTrue(select.getResultColumnList().getResultColumn(2).toString().equalsIgnoreCase("cast(channelid as int)")); - assertTrue(select.getResultColumnList().getResultColumn(2).getAliasClause().toString().equalsIgnoreCase("reg_channel_id")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateFunction.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateFunction.java deleted file mode 100644 index b2aace0a..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateFunction.java +++ /dev/null @@ -1,23 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-16 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.hive.THiveCreateFunction; -import junit.framework.TestCase; - -public class testCreateFunction extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "CREATE TEMPORARY FUNCTION function_name AS 'class_name';"; - assertTrue(sqlparser.parse() == 0); - - THiveCreateFunction createFunction = (THiveCreateFunction)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("function_name")); - assertTrue(createFunction.getAsName().toString().equalsIgnoreCase("'class_name'")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateIndex.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateIndex.java deleted file mode 100644 index 306c4471..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateIndex.java +++ /dev/null @@ -1,53 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-16 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TOrderByItemList; -import gudusoft.gsqlparser.nodes.hive.THiveIndexProperties; -import gudusoft.gsqlparser.nodes.hive.THiveTableProperties; -import gudusoft.gsqlparser.stmt.TCreateIndexSqlStatement; -import junit.framework.TestCase; - -public class testCreateIndex extends TestCase { - - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "CREATE INDEX table02_index ON TABLE table02 (column3) AS 'COMPACT' WITH DEFERRED REBUILD;"; - assertTrue(sqlparser.parse() == 0); - - TCreateIndexSqlStatement createIndex = (TCreateIndexSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createIndex.getIndexName().toString().equalsIgnoreCase("table02_index")); - assertTrue(createIndex.getTableName().toString().equalsIgnoreCase("table02")); - TOrderByItemList viewColumns = createIndex.getColumnNameList(); - assertTrue(viewColumns.size() == 1); - assertTrue(viewColumns.getOrderByItem(0).getSortKey().toString().equalsIgnoreCase("column3")); - assertTrue(createIndex.getAsTypeName().toString().equalsIgnoreCase("'COMPACT'")); - assertTrue(createIndex.isDeferredRebuildIndex()); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "CREATE INDEX table08_index ON TABLE table08 (column9) AS 'COMPACT' TBLPROPERTIES (\"prop3\"=\"value3\", \"prop4\"=\"value4\");"; - assertTrue(sqlparser.parse() == 0); - - TCreateIndexSqlStatement createIndex = (TCreateIndexSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createIndex.getIndexName().toString().equalsIgnoreCase("table08_index")); - assertTrue(createIndex.getTableName().toString().equalsIgnoreCase("table08")); - TOrderByItemList viewColumns = createIndex.getColumnNameList(); - assertTrue(viewColumns.size() == 1); - assertTrue(viewColumns.getOrderByItem(0).getSortKey().toString().equalsIgnoreCase("column9")); - assertTrue(createIndex.getAsTypeName().toString().equalsIgnoreCase("'COMPACT'")); - assertTrue(!createIndex.isDeferredRebuildIndex()); - - THiveIndexProperties indexProperties = createIndex.getIndexProperties(); - assertTrue(indexProperties == null); - - THiveTableProperties tableProperties = createIndex.getTableProperties(); - assertTrue(tableProperties.getTableProperties().size() == 2); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateTable.java deleted file mode 100644 index 58ad2487..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateTable.java +++ /dev/null @@ -1,176 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-15 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EFileFormat; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.nodes.TTypeName; -import gudusoft.gsqlparser.nodes.hive.*; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCreateTable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "create table Addresses (\n" + - " name string,\n" + - " street string,\n" + - " city string,\n" + - " state string,\n" + - " zip int\n" + - ") stored as orc tblproperties (\"orc.compress\"=\"NONE\");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("Addresses")); - assertTrue(createTable.getColumnList().size() == 5 ); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("name")); - assertTrue(cd.getDatatype().getDataType() == EDataType.string_t); - cd = createTable.getColumnList().getColumn(4); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("zip")); - assertTrue(cd.getDatatype().getDataType() == EDataType.int_t); - - THiveTableFileFormat tff = createTable.getHiveTableFileFormat(); - assertTrue(tff.getFileFormat() == EFileFormat.sffFILEFORMAT_GENERIC); - assertTrue(tff.getGenericSpec().toString().equalsIgnoreCase("orc")); - - THiveTableProperties tp = createTable.getHiveTableProperties(); - assertTrue(tp.getTableProperties().size() == 1); - THiveKeyValueProperty kv = tp.getTableProperties().getElement(0); - assertTrue(kv.getKeyString().toString().equalsIgnoreCase("\"orc.compress\"")); - assertTrue(kv.getValueString().toString().equalsIgnoreCase("\"NONE\"")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "CREATE TABLE union_test(foo UNIONTYPE, struct>);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("union_test")); - assertTrue(createTable.getColumnList().size() == 1 ); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("foo")); - assertTrue(cd.getDatatype().getDataType() == EDataType.unionType_t); - - assertTrue(cd.getDatatype().getColTypeList().size() == 4); - TTypeName dataType = cd.getDatatype().getColTypeList().getElement(0); - assertTrue(dataType.getDataType() == EDataType.int_t); - - dataType = cd.getDatatype().getColTypeList().getElement(1); - assertTrue(dataType.getDataType() == EDataType.double_t); - - dataType = cd.getDatatype().getColTypeList().getElement(2); - assertTrue(dataType.getDataType() == EDataType.listType_t); - assertTrue(dataType.getTypeOfList().getDataType() == EDataType.string_t); - - dataType = cd.getDatatype().getColTypeList().getElement(3); - assertTrue(dataType.getDataType() == EDataType.struct_t); - assertTrue(dataType.getColumnDefList().size() == 2); - TColumnDefinition cd1 = dataType.getColumnDefList().getColumn(0); - assertTrue(cd1.getColumnName().toString().equalsIgnoreCase("a")); - assertTrue(cd1.getDatatype().getDataType() == EDataType.int_t); - TColumnDefinition cd2 = dataType.getColumnDefList().getColumn(1); - assertTrue(cd2.getColumnName().toString().equalsIgnoreCase("b")); - assertTrue(cd2.getDatatype().getDataType() == EDataType.string_t); - - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "CREATE TABLE complex_json (\n" + - " DocId string,\n" + - " User struct,\n" + - " Orders:array>>\n" + - ")\n" + - "ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe';"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("complex_json")); - assertTrue(createTable.getColumnList().size() == 2 ); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("DocId")); - assertTrue(cd.getDatatype().getDataType() == EDataType.string_t); - - cd = createTable.getColumnList().getColumn(1); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("User")); - assertTrue(cd.getDatatype().getDataType() == EDataType.struct_t); - assertTrue(cd.getDatatype().getColumnDefList().size() == 5); - - THiveRowFormat rowFormat = createTable.getHiveRowFormat(); - assertTrue(rowFormat.getRowFormatType() == THiveRowFormat.ERowFormatType.serde); - assertTrue(rowFormat.getRowFormatName().toString().equalsIgnoreCase("'org.openx.data.jsonserde.JsonSerDe'")); - - } - - public void test4(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "CREATE TABLE page_view(viewTime INT, userid BIGINT,\n" + - "page_url STRING, referrer_url STRING,\n" + - "ip STRING COMMENT 'IP Address of the User')\n" + - "COMMENT 'This is the page view table'\n" + - "PARTITIONED BY(dt STRING, country STRING)\n" + - "ROW FORMAT DELIMITED\n" + - "FIELDS TERMINATED BY '1'\n" + - "STORED AS SEQUENCEFILE;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("page_view")); - TColumnDefinition cd = createTable.getColumnList().getColumn(4); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("ip")); - assertTrue(cd.getDatatype().getDataType() == EDataType.string_t); - assertTrue(cd.getComment().toString().equalsIgnoreCase("'IP Address of the User'")); - - assertTrue(createTable.getTableComment().toString().equalsIgnoreCase("'This is the page view table'")); - THiveTablePartition tp = createTable.getHiveTablePartition(); - assertTrue(tp.getColumnDefList().size() == 2); - assertTrue(tp.getColumnDefList().getColumn(0).getColumnName().toString().equalsIgnoreCase("dt")); - assertTrue(tp.getColumnDefList().getColumn(1).getDatatype().getDataType() == EDataType.string_t); - - THiveRowFormat rowFormat = createTable.getHiveRowFormat(); - assertTrue(rowFormat.getRowFormatType() == THiveRowFormat.ERowFormatType.delimited); - assertTrue(rowFormat.getTableRowFormatFieldIdentifier().getTerminateString().toString().equalsIgnoreCase("'1'")); - - THiveTableFileFormat tff = createTable.getHiveTableFileFormat(); - assertTrue(tff.getFileFormat() == EFileFormat.sffTBLSEQUENCEFILE); - - - } - - public void testSubquery(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "create table test.concat \n" + - "as select concat(heroes.name,' vs. ',villains.name) as battle \n" + - "from heroes \n" + - "join villains \n" + - "where heroes.era = villains.era and heroes.planet = villains.planet"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createTable.getSubQuery(); - System.out.println(select.toString()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateView.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateView.java deleted file mode 100644 index 70d645ba..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testCreateView.java +++ /dev/null @@ -1,28 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-16 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCreateView extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "CREATE VIEW V4 AS\n" + - " SELECT src1.key, src2.value as value1, src3.value as value2\n" + - " FROM V1 src1 JOIN V2 src2 on src1.key = src2.key JOIN src src3 ON src2.key = src3.key;"; - assertTrue(sqlparser.parse() == 0); - - TCreateViewSqlStatement createView = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createView.getViewName().toString().equalsIgnoreCase("V4")); - - TSelectSqlStatement select = createView.getSubquery(); - assertTrue(select.getResultColumnList().size() == 3); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testDescribe.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testDescribe.java deleted file mode 100644 index 4ede1aa9..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testDescribe.java +++ /dev/null @@ -1,48 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-16 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TPartitionExtensionClause; -import gudusoft.gsqlparser.nodes.hive.EHiveDescOption; -import gudusoft.gsqlparser.nodes.hive.EHiveDescribleType; -import gudusoft.gsqlparser.nodes.hive.THiveDescTablePartition; -import gudusoft.gsqlparser.stmt.hive.THiveDescribe; -import junit.framework.TestCase; - -public class testDescribe extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "DESCRIBE EXTENDED TABLE1;"; - assertTrue(sqlparser.parse() == 0); - - THiveDescribe describe = (THiveDescribe)sqlparser.sqlstatements.get(0); - assertTrue(describe.getDescribleType() == EHiveDescribleType.dtTablePartition); - assertTrue(describe.getDescOption() == EHiveDescOption.doExtended); - THiveDescTablePartition tablePartition = describe.getTablePartition(); - assertTrue(tablePartition.getPartition() == null); - assertTrue(tablePartition.getDescTabType().toString().equalsIgnoreCase("TABLE1")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "DESCRIBE EXTENDED TABLE1 PARTITION(ds='2008-04-09', hr=11);"; - assertTrue(sqlparser.parse() == 0); - - THiveDescribe describe = (THiveDescribe)sqlparser.sqlstatements.get(0); - assertTrue(describe.getDescribleType() == EHiveDescribleType.dtTablePartition); - assertTrue(describe.getDescOption() == EHiveDescOption.doExtended); - THiveDescTablePartition tablePartition = describe.getTablePartition(); - TPartitionExtensionClause partition = tablePartition.getPartition(); - assertTrue(partition.getKeyValues().size() == 2); - assertTrue(partition.getKeyValues().getExpression(0).getLeftOperand().toString().equalsIgnoreCase("ds")); - assertTrue(partition.getKeyValues().getExpression(0).getRightOperand().toString().equalsIgnoreCase("'2008-04-09'")); - assertTrue(partition.getKeyValues().getExpression(1).getLeftOperand().toString().equalsIgnoreCase("hr")); - assertTrue(partition.getKeyValues().getExpression(1).getRightOperand().toString().equalsIgnoreCase("11")); - assertTrue(tablePartition.getDescTabType().toString().equalsIgnoreCase("TABLE1")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testDropIndex.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testDropIndex.java deleted file mode 100644 index df0b8e15..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testDropIndex.java +++ /dev/null @@ -1,21 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-16 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropIndexSqlStatement; -import junit.framework.TestCase; - -public class testDropIndex extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "DROP INDEX table02_index ON table02;"; - assertTrue(sqlparser.parse() == 0); - - TDropIndexSqlStatement dropIndex = (TDropIndexSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(dropIndex.getIndexName().toString().equalsIgnoreCase("table02_index")); - assertTrue(dropIndex.getTableName().toString().equalsIgnoreCase("table02")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testExplain.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testExplain.java deleted file mode 100644 index 4d22b9cf..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testExplain.java +++ /dev/null @@ -1,51 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TGroupBy; -import gudusoft.gsqlparser.nodes.EHiveInsertType; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.hive.THiveExplain; -import junit.framework.TestCase; - - -public class testExplain extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "EXPLAIN\n" + - "FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key;"; - assertTrue(sqlparser.parse() == 0); - - THiveExplain explain = (THiveExplain)sqlparser.sqlstatements.get(0); - assertTrue(explain.getStmt().sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insert = (TInsertSqlStatement)explain.getStmt(); -// TInsertSqlStatement insert = (TInsertSqlStatement)fromQuery.getHiveBodyList().get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insert.getTargetTable().getTableName().toString().equalsIgnoreCase("dest_g1")); - TSelectSqlStatement fromQuery = insert.getSubQuery(); - - assertTrue(fromQuery.tables.getTable(0).getTableName().toString().equalsIgnoreCase("src")); -// assertTrue(fromQuery.getHiveBodyList().size() == 1); -// TSelectSqlStatement select = (TSelectSqlStatement)insert.getSubQuery(); - TGroupBy groupBy = fromQuery.getGroupByClause(); - assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("src.key")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "EXPLAIN DEPENDENCY\n" + - " SELECT key, count(1) FROM srcpart WHERE ds IS NOT NULL GROUP BY key;"; - assertTrue(sqlparser.parse() == 0); - - THiveExplain explain = (THiveExplain)sqlparser.sqlstatements.get(0); - assertTrue(explain.getStmt().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)explain.getStmt(); - assertTrue(select.getResultColumnList().size() == 2); - assertTrue(select.tables.getTable(0).getTableName().toString().equalsIgnoreCase("srcpart")); - assertTrue(select.getWhereClause().getCondition().toString().equalsIgnoreCase("ds IS NOT NULL")); - TGroupBy groupBy = select.getGroupByClause(); - assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("key")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testExportTable.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testExportTable.java deleted file mode 100644 index 575c007f..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testExportTable.java +++ /dev/null @@ -1,40 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-15 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TPartitionExtensionClause; -import gudusoft.gsqlparser.stmt.hive.THiveExportTable; -import junit.framework.TestCase; - -public class testExportTable extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "export table department to 'hdfs_exports_location/department';"; - assertTrue(sqlparser.parse() == 0); - - THiveExportTable export = (THiveExportTable)sqlparser.sqlstatements.get(0); - assertTrue(export.getTable().toString().equalsIgnoreCase("department")); - assertTrue(export.getPath().toString().equalsIgnoreCase("'hdfs_exports_location/department'")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "export table employee partition (emp_country=\"in\", emp_state=\"ka\") to 'hdfs_exports_location/employee';"; - assertTrue(sqlparser.parse() == 0); - - THiveExportTable export = (THiveExportTable)sqlparser.sqlstatements.get(0); - assertTrue(export.getTable().getTableName().toString().equalsIgnoreCase("employee")); - TPartitionExtensionClause p = export.getTable().getPartitionExtensionClause(); - assertTrue(p.getKeyValues().size() == 2); - assertTrue(p.getKeyValues().getExpression(0).getLeftOperand().toString().equalsIgnoreCase("emp_country")); - assertTrue(p.getKeyValues().getExpression(0).getRightOperand().toString().equalsIgnoreCase("\"in\"")); - assertTrue(p.getKeyValues().getExpression(1).getLeftOperand().toString().equalsIgnoreCase("emp_state")); - assertTrue(p.getKeyValues().getExpression(1).getRightOperand().toString().equalsIgnoreCase("\"ka\"")); - assertTrue(export.getPath().toString().equalsIgnoreCase("'hdfs_exports_location/employee'")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testFieldExpression.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testFieldExpression.java deleted file mode 100644 index 14d5c9b1..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testFieldExpression.java +++ /dev/null @@ -1,33 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-12 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testFieldExpression extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "SELECT v['code'], COUNT(1) FROM www_access GROUP BY v['code'];"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.array_access_expr_t); - assertTrue(expr.toString().equalsIgnoreCase("v['code']")); - assertTrue(expr.getLeftOperand().getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expr.getLeftOperand().toString().equalsIgnoreCase("v")); - assertTrue(expr.getRightOperand().getExpressionType() == EExpressionType.simple_constant_t); - assertTrue(expr.getRightOperand().toString().equalsIgnoreCase("'code'")); - - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testFromSelect.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testFromSelect.java deleted file mode 100644 index 797149d0..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testFromSelect.java +++ /dev/null @@ -1,281 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.hive.*; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testFromSelect extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="FROM pv_users \n" + - "INSERT OVERWRITE TABLE pv_gender_sum\n" + - " SELECT pv_users.gender, count(DISTINCT pv_users.userid) \n" + - " GROUP BY pv_users.gender \n" + - "INSERT OVERWRITE DIRECTORY '/user/facebook/tmp/pv_age_sum'\n" + - " SELECT pv_users.age, count(DISTINCT pv_users.userid) \n" + - " GROUP BY pv_users.age; \n" + - " "; - // System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insertSqlStatement.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insertSqlStatement.getTargetTable().getFullName().equalsIgnoreCase("pv_gender_sum")); - - TSelectSqlStatement select = insertSqlStatement.getSubQuery(); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - assertTrue(join.getTable().getFullName().equalsIgnoreCase("pv_users")); - assertTrue(select.getGroupByClause().getItems().getGroupByItem(0).toString().equalsIgnoreCase("pv_users.gender")); - - - TInsertSqlStatement insertSqlStatement2 = insertSqlStatement.getMultiInsertStatements().get(0); - assertTrue(insertSqlStatement2.getHiveInsertType() == EHiveInsertType.overwriteDirectory); - assertTrue(insertSqlStatement2.getDirectoryName().toString().equalsIgnoreCase("'/user/facebook/tmp/pv_age_sum'")); - - select = insertSqlStatement2.getSubQuery(); - join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - assertTrue(join.getTable().getFullName().equalsIgnoreCase("pv_users")); - assertTrue(select.getGroupByClause().getItems().getGroupByItem(0).toString().equalsIgnoreCase("pv_users.age")); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext =" FROM (\n" + - " FROM pv_users\n" + - " MAP ( pv_users.userid, pv_users.date )\n" + - " USING 'map_script'\n" + - " AS c1, c2, c3\n" + - " DISTRIBUTE BY c2\n" + - " SORT BY c2, c1) map_output\n" + - " INSERT OVERWRITE TABLE pv_users_reduced\n" + - " REDUCE ( map_output.c1, map_output.c2, map_output.c3 )\n" + - " USING 'reduce_script'\n" + - " AS date, count;" ; - - - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insert.tables.getTable(0).toString().equalsIgnoreCase("pv_users_reduced")); - - TSelectSqlStatement reduceSelect = insert.getSubQuery(); - assertTrue(reduceSelect.getTransformClause() != null); - THiveTransformClause transformClause = reduceSelect.getTransformClause(); - assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettReduce); - assertTrue(transformClause.getExpressionList().size() == 3); - assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("map_output.c1")); - assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("map_output.c2")); - assertTrue(transformClause.getExpressionList().getExpression(2).toString().equalsIgnoreCase("map_output.c3")); - assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'reduce_script'")); - - TAliasClause aliasClause = transformClause.getAliasClause(); - assertTrue(aliasClause.getColumns().size() == 2); - assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("date")); - assertTrue(aliasClause.getColumns().getObjectName(1).toString().equalsIgnoreCase("count")); - - - -// FROM ( -// FROM pv_users -// MAP ( pv_users.userid, pv_users.date ) -// USING 'map_script' -// AS c1, c2, c3 -// DISTRIBUTE BY c2 -// SORT BY c2, c1) map_output - - // table is type of subquery of the above sql - TTable table = reduceSelect.tables.getTable(0); - assertTrue(table.getAliasClause().toString().equalsIgnoreCase("map_output")); - - assertTrue(table.getTableType() == ETableSource.subquery); - TSelectSqlStatement select1 = table.getSubquery(); - TTable table1 = select1.tables.getTable(0); - assertTrue(table1.getTableName().toString().equalsIgnoreCase("pv_users")); - - - assertTrue(select1.getTransformClause() != null); - transformClause = select1.getTransformClause(); - assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettMap); - - assertTrue(transformClause.getExpressionList().size() == 2); - assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("pv_users.userid")); - assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("pv_users.date")); - assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'map_script'")); - - aliasClause = transformClause.getAliasClause(); - assertTrue(aliasClause.getColumns().size() == 3); - assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("c1")); - assertTrue(aliasClause.getColumns().getObjectName(1).toString().equalsIgnoreCase("c2")); - assertTrue(aliasClause.getColumns().getObjectName(2).toString().equalsIgnoreCase("c3")); - - TDistributeBy distributeBy = select1.getDistributeBy(); - assertTrue(distributeBy.getExpressionList().size() == 1); - assertTrue(distributeBy.getExpressionList().getExpression(0).toString().equalsIgnoreCase("c2")); - - TSortBy sortBy = select1.getSortBy(); - assertTrue(sortBy.getItems().size() == 2); - assertTrue(sortBy.getItems().getOrderByItem(0).getSortKey().toString().equalsIgnoreCase("c2")); - assertTrue(sortBy.getItems().getOrderByItem(0).getSortType() == TBaseType.srtNone); - assertTrue(sortBy.getItems().getOrderByItem(1).getSortKey().toString().equalsIgnoreCase("c1")); - assertTrue(sortBy.getItems().getOrderByItem(0).getSortType() == TBaseType.srtNone); - - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = " FROM (\n" + - " FROM pv_users\n" + - " MAP pv_users.userid, pv_users.date\n" + - " USING 'map_script'\n" + - " AS dt, uid\n" + - " CLUSTER BY dt) map_output\n" + - " INSERT OVERWRITE TABLE pv_users_reduced\n" + - " REDUCE map_output.dt, map_output.uid\n" + - " USING 'reduce_script'\n" + - " AS date, count;\n"; - - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insert.tables.getTable(0).toString().equalsIgnoreCase("pv_users_reduced")); - TSelectSqlStatement subquery = insert.getSubQuery(); - - - TTable table = subquery.tables.getTable(0); - assertTrue(table.getAliasClause().toString().equalsIgnoreCase("map_output")); - - - assertTrue(subquery.getTransformClause() != null); - - THiveTransformClause transformClause = subquery.getTransformClause(); - assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettReduce); - assertTrue(transformClause.getExpressionList().size() == 2); - assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("map_output.dt")); - assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("map_output.uid")); - assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'reduce_script'")); - - TAliasClause aliasClause = transformClause.getAliasClause(); - assertTrue(aliasClause.getColumns().size() ==2 ); - assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("date")); - assertTrue(aliasClause.getColumns().getObjectName(1).toString().equalsIgnoreCase("count")); - } - - public void test4(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "FROM (\n" + - " FROM src\n" + - " SELECT TRANSFORM(src.KEY, src.value) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'\n" + - " USING '/bin/cat'\n" + - " AS (tkey, tvalue) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'\n" + - " RECORDREADER 'org.apache.hadoop.hive.ql.exec.TypedBytesRecordReader'\n" + - " ) tmap\n" + - " INSERT OVERWRITE TABLE dest1 SELECT tkey, tvalue;"; - - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - //TInsertSqlStatement insert = (TInsertSqlStatement)select.getHiveBodyList().get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insert.tables.getTable(0).toString().equalsIgnoreCase("dest1")); - TSelectSqlStatement subquery = insert.getSubQuery(); - assertTrue(subquery.getResultColumnList().size() == 2); - assertTrue(subquery.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("tkey")); - assertTrue(subquery.getResultColumnList().getResultColumn(1).toString().equalsIgnoreCase("tvalue")); - - - TTable table = subquery.tables.getTable(0); - assertTrue(table.getAliasClause().toString().equalsIgnoreCase("tmap")); - - - assertTrue(table.getTableType() == ETableSource.subquery); - TSelectSqlStatement subquery1 = table.getSubquery(); - assertTrue(subquery1.tables.getTable(0).toString().equalsIgnoreCase("src")); - - TSelectSqlStatement select1 = subquery1; - - assertTrue(select1.getTransformClause() != null); - THiveTransformClause transformClause = select1.getTransformClause(); - assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettSelect); - assertTrue(transformClause.getExpressionList().size() == 2); - assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("src.KEY")); - assertTrue(transformClause.getExpressionList().getExpression(1).toString().equalsIgnoreCase("src.value")); - - THiveRowFormat inrf = transformClause.getInRowFormat(); - assertTrue(inrf.getRowFormatType() == THiveRowFormat.ERowFormatType.serde); - assertTrue(inrf.getRowFormatName().toString().equalsIgnoreCase("'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'")); - - THiveRowFormat outrf = transformClause.getOutRowFormat(); - assertTrue(outrf.getRowFormatType() == THiveRowFormat.ERowFormatType.serde); - assertTrue(outrf.getRowFormatName().toString().equalsIgnoreCase("'org.apache.hadoop.hive.contrib.serde2.TypedBytesSerDe'")); - - THiveRecordReader outrr = transformClause.getOutRecordReader(); - assertTrue(outrr.getStringLiteral().toString().equalsIgnoreCase("'org.apache.hadoop.hive.ql.exec.TypedBytesRecordReader'")); - - TAliasClause aliasClause = transformClause.getAliasClause(); - assertTrue(aliasClause.getColumns().size() == 2); - assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("tkey")); - - assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'/bin/cat'")); - } - - - public void test5(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "FROM page_view_stg pvs\n" + - "INSERT OVERWRITE TABLE page_view PARTITION(dt='2008-06-08', country)\n" + - "SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, null, null, pvs.ip, pvs.country"; - - assertTrue(sqlparser.parse() == 0); - - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - TTable table = insert.getTargetTable(); - TPartitionExtensionClause partition = table.getPartitionExtensionClause(); - - assertTrue(table.getTableName().toString().equalsIgnoreCase("page_view")); - assertTrue(partition.getKeyValues().getExpression(0).getLeftOperand().toString().equalsIgnoreCase("dt")); - - TSelectSqlStatement subquery = insert.getSubQuery(); - assertTrue(subquery.getResultColumnList().size() == 8); - - //TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(subquery.tables.getTable(0).getTableName().toString().equalsIgnoreCase("page_view_stg")); - - } - - public void test6(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "FROM pv_users\n" + - "MAP pv_users.userid, pv_users.date\n" + - "USING 'map_script'\n" + - "AS dt, uid\n" + - "CLUSTER BY dt;"; - - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement mapSelect = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(mapSelect.tables.getTable(0).getTableName().toString().equalsIgnoreCase("pv_users")); - assertTrue(mapSelect.getTransformClause() != null); - THiveTransformClause transformClause = mapSelect.getTransformClause(); - assertTrue(transformClause.getTransformType() == THiveTransformClause.ETransformType.ettMap); - assertTrue(transformClause.getExpressionList().getExpression(0).toString().equalsIgnoreCase("pv_users.userid")); - assertTrue(transformClause.getUsingString().toString().equalsIgnoreCase("'map_script'")); - assertTrue(mapSelect.getClusterBy().getExpressionList().getExpression(0).toString().equalsIgnoreCase("dt")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testFunction.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testFunction.java deleted file mode 100644 index 2119e22e..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testFunction.java +++ /dev/null @@ -1,57 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -/** - * Created by IntelliJ IDEA. - * User: tako - * Date: 13-8-11 - * Time: 下午5:59 - * To change this template use File | Settings | File Templates. - */ -public class testFunction extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "SELECT create_union(0, key), " + - "create_union(if(key<100, 0, 1), 2.0, value), " + - "create_union(1, \"a\", struct(2, \"b\")) FROM src LIMIT 2;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr0 = select.getResultColumnList().getResultColumn(0).getExpr(); - TExpression expr1 = select.getResultColumnList().getResultColumn(1).getExpr(); - TExpression expr2 = select.getResultColumnList().getResultColumn(2).getExpr(); - - assertTrue(expr0.getExpressionType() == EExpressionType.function_t); - assertTrue(expr1.getFunctionCall().getFunctionName().toString().equalsIgnoreCase("create_union")); - - TExpression arg = expr1.getFunctionCall().getArgs().getExpression(0); - assertTrue(arg.toString().equalsIgnoreCase("if(key<100, 0, 1)")); - TFunctionCall iff = arg.getFunctionCall(); - assertTrue(iff.getFunctionName().toString().equalsIgnoreCase("if")); - assertTrue(iff.getArgs().size() == 3); - TExpression argofarg = iff.getArgs().getExpression(0); - assertTrue(argofarg.getExpressionType() == EExpressionType.simple_comparison_t); - - - } - - public void testCast(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "select cast(t as boolean) from decimal_2;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr0 = select.getResultColumnList().getResultColumn(0).getExpr(); - TFunctionCall f = expr0.getFunctionCall(); - assertTrue(f.getFunctionType() == EFunctionType.cast_t ); - assertTrue(f.getExpr1().toString().equalsIgnoreCase("t")); - assertTrue(f.getTypename().getDataType() == EDataType.boolean_t); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testGetFullTableName.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testGetFullTableName.java deleted file mode 100644 index d7bf54b4..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testGetFullTableName.java +++ /dev/null @@ -1,26 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 14-1-29 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testGetFullTableName extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "INSERT OVERWRITE LOCAL DIRECTORY '/tmp/ttt' SELECT * from (select * from a) c"; - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = insertSqlStatement.getSubQuery(); - TTable table = select.tables.getTable(0); - // System.out.println(table.getFullName()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testHint.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testHint.java deleted file mode 100644 index 3a765b8a..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testHint.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.hive.THiveHintClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testHint extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "SELECT /*+ STREAMTABLE(a) */ a.val, b.val, c.val FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key1);"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - THiveHintClause hint = select.getHiveHintClause(); - assertTrue(hint.getHintList().getElement(0).getHintName().toString().equalsIgnoreCase("STREAMTABLE")); - assertTrue(hint.getHintList().getElement(0).getHintArgs().getObjectName(0).toString().equalsIgnoreCase("a")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testIdentifierBacktick.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testIdentifierBacktick.java deleted file mode 100644 index cda261a0..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testIdentifierBacktick.java +++ /dev/null @@ -1,26 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testIdentifierBacktick extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "CREATE TABLE Hive.`default`.ct622_date5 as SELECT to_date(hive.read_date) as `to_date(hive.default.``read_date``)` from ct622"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("Hive.`default`.ct622_date5")); - - TSelectSqlStatement select = createTableSqlStatement.getSubQuery(); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("to_date(hive.read_date)")); - assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("`to_date(hive`.`default`.```read_date``)`")); - //System.out.println(resultColumn.getAliasClause().toString()); - } - -} - diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testImportTable.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testImportTable.java deleted file mode 100644 index 56ebda09..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testImportTable.java +++ /dev/null @@ -1,39 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-15 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; - -import gudusoft.gsqlparser.stmt.hive.THiveImportTable; -import junit.framework.TestCase; - -public class testImportTable extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "import table department from 'hdfs_exports_location/department' \n" + - " location 'import_target_location/department';"; - assertTrue(sqlparser.parse() == 0); - - THiveImportTable importTable = (THiveImportTable)sqlparser.sqlstatements.get(0); - assertTrue(!importTable.isExternal()); - assertTrue(importTable.getTable().toString().equalsIgnoreCase("department")); - assertTrue(importTable.getPath().toString().equalsIgnoreCase("'hdfs_exports_location/department'")); - assertTrue(importTable.getTableLocation().toString().equalsIgnoreCase("'import_target_location/department'")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "import from 'hdfs_exports_location/department';"; - assertTrue(sqlparser.parse() == 0); - - THiveImportTable importTable = (THiveImportTable)sqlparser.sqlstatements.get(0); - assertTrue(!importTable.isExternal()); - assertTrue(importTable.getTable() == null); - assertTrue(importTable.getPath().toString().equalsIgnoreCase("'hdfs_exports_location/department'")); - assertTrue(importTable.getTableLocation() == null); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testInsert.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testInsert.java deleted file mode 100644 index 57789c3b..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testInsert.java +++ /dev/null @@ -1,103 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-12 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EJoinType; -import gudusoft.gsqlparser.TBaseType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TJoin; -import gudusoft.gsqlparser.nodes.TJoinItem; -import gudusoft.gsqlparser.nodes.EHiveInsertType; -import gudusoft.gsqlparser.nodes.TMultiTarget; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testInsert extends TestCase { - - public void test0(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = " insert into TABLE empTableName values (1, 'Angel', 10000, 'F', '1990-12-30', TIMESTAMP '1990-12-30 00:00:00');"; - assertTrue(sqlparser.parse() == 0); - - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - TMultiTarget multiTarget = insert.getValues().getMultiTarget(0); - assertTrue(multiTarget.getColumnList().size() == 6); - } - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "INSERT OVERWRITE DIRECTORY 's3://bucketname/path/subpath/' SELECT * \n" + - "FROM hiveTableName;"; - assertTrue(sqlparser.parse() == 0); - - // System.out.println(sqlparser.sqlstatements.get(0).sqlstatementtype); - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteDirectory); - assertTrue(insert.getDirectoryName().toString().equalsIgnoreCase("'s3://bucketname/path/subpath/'")); - - TSelectSqlStatement select = insert.getSubQuery(); - assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("*")); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("hiveTableName")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "INSERT OVERWRITE TABLE hiveTableName SELECT * FROM s3_import;"; - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insert.tables.getTable(0).toString().equalsIgnoreCase("hiveTableName")); - - TSelectSqlStatement select = insert.getSubQuery(); - assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("*")); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("s3_import")); - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "INSERT OVERWRITE TABLE pv_users\n" + - "SELECT pv.*, u.gender, u.age\n" + - "FROM user FULL OUTER JOIN page_view pv ON (pv.userid = u.id)\n"+ - "WHERE pv.date = '2008-03-03';"; - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteTable); - assertTrue(insert.tables.getTable(0).toString().equalsIgnoreCase("pv_users")); - - TSelectSqlStatement select = insert.getSubQuery(); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_table); - assertTrue(join.getTable().getTableName().toString().equalsIgnoreCase("user")); - assertTrue(select.toString().equalsIgnoreCase("SELECT pv.*, u.gender, u.age\n" + - "FROM user FULL OUTER JOIN page_view pv ON (pv.userid = u.id)\n" + - "WHERE pv.date = '2008-03-03'")); - TJoinItem joinItem = join.getJoinItems().getJoinItem(0); - assertTrue(joinItem.getJoinType() == EJoinType.fullouter); - assertTrue(joinItem.getTable().toString().equalsIgnoreCase("page_view")); - assertTrue(joinItem.getOnCondition().toString().equalsIgnoreCase("(pv.userid = u.id)")); - } - - public void test4(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "INSERT OVERWRITE LOCAL DIRECTORY '/tmp/pv_gender_sum'\n" + - "SELECT pv_gender_sum.*\n" + - "FROM pv_gender_sum;"; - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insert.getHiveInsertType() == EHiveInsertType.overwriteLocalDirectory); - // System.out.println(insert.getHiveInsertType()); - assertTrue(insert.getDirectoryName().toString().equalsIgnoreCase("'/tmp/pv_gender_sum'")); - - TSelectSqlStatement select = insert.getSubQuery(); - assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("pv_gender_sum.*")); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("pv_gender_sum")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testJoin.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testJoin.java deleted file mode 100644 index e7d9f779..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testJoin.java +++ /dev/null @@ -1,125 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.hive.THiveHintClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testJoin extends TestCase { - - public void testJoin(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT page_views.*\n" + - "FROM page_views JOIN dim_users\n" + - " ON (page_views.user_id = dim_users.id AND page_views.date >= '2008-03-01' AND page_views.date <= '2008-03-31')"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_table); - assertTrue(join.getTable().toString().equalsIgnoreCase("page_views")); - TJoinItem joinItem = join.getJoinItems().getJoinItem(0); - assertTrue(joinItem.getJoinType() == EJoinType.join); - assertTrue(joinItem.getTable().toString().equalsIgnoreCase("dim_users")); - TExpression joinCondition = joinItem.getOnCondition(); - assertTrue(joinCondition.getExpressionType() == EExpressionType.parenthesis_t); - joinCondition = joinCondition.getLeftOperand(); - assertTrue(joinCondition.getExpressionType() == EExpressionType.logical_and_t); - //System.out.println(joinCondition.toString()); - } - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "SELECT a.val, b.val, c.val FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key2);"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_table); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.objectname); - assertTrue(table.getFullName().equalsIgnoreCase("a")); - - assertTrue(join.getJoinItems().size() == 2); - TJoinItem joinItem = join.getJoinItems().getJoinItem(0); - assertTrue(joinItem.getTable().toString().equalsIgnoreCase("b")); - TJoinItem joinItem2 = join.getJoinItems().getJoinItem(1); - assertTrue(joinItem2.getJoinType() == EJoinType.join); - TExpression joinCondition = joinItem2.getOnCondition(); - assertTrue(joinCondition.getExpressionType() == EExpressionType.parenthesis_t); - assertTrue(joinCondition.getLeftOperand().toString().equalsIgnoreCase("c.key = b.key2")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "select /*+MAPJOIN(smallTableTwo)*/ idOne, idTwo, value FROM\n" + - " ( select /*+MAPJOIN(smallTableOne)*/ idOne, idTwo, value FROM\n" + - " bigTable JOIN smallTableOne on (bigTable.idOne = smallTableOne.idOne) \n" + - " ) firstjoin \n" + - " JOIN \n" + - " smallTableTwo on (firstjoin.idTwo = smallTableTwo.idTwo) ;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_table); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.subquery); - TJoinItem joinItem = join.getJoinItems().getJoinItem(0); - assertTrue(joinItem.getJoinType() == EJoinType.join); - assertTrue(joinItem.getTable().getFullName().equalsIgnoreCase("smallTableTwo")); - // assertTrue(table.getFullName().equalsIgnoreCase("a")); - - TSelectSqlStatement subquery = table.getSubquery(); - THiveHintClause hintClause = subquery.getHiveHintClause(); - assertTrue(hintClause.getHintList().getElement(0).getHintName().toString().equalsIgnoreCase("MAPJOIN")); - - join = subquery.joins.getJoin(0); - assertTrue(join.getTable().getFullName().equalsIgnoreCase("bigTable")); - } - - public void testLeftJoin(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT a.val1, a.val2, b.val, c.val\n" + - " FROM a\n" + - " JOIN b ON (a.KEY = b.KEY)\n" + - " LEFT OUTER JOIN c ON (a.KEY = c.KEY);"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 4); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_table); - assertTrue(join.getTable().toString().equalsIgnoreCase("a")); - TJoinItem joinItem = join.getJoinItems().getJoinItem(0); - assertTrue(joinItem.getJoinType() == EJoinType.join); - assertTrue(joinItem.getTable().toString().equalsIgnoreCase("b")); - TExpression joinCondition = joinItem.getOnCondition(); - assertTrue(joinCondition.getExpressionType() == EExpressionType.parenthesis_t); - assertTrue(joinCondition.toString().equalsIgnoreCase("(a.KEY = b.KEY)")); - joinCondition = joinCondition.getLeftOperand(); - assertTrue(joinCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(joinCondition.toString().equalsIgnoreCase("a.KEY = b.KEY")); - - - joinItem = join.getJoinItems().getJoinItem(1); - assertTrue(joinItem.getJoinType() == EJoinType.leftouter); - assertTrue(joinItem.getTable().toString().equalsIgnoreCase("c")); - joinCondition = joinItem.getOnCondition(); - assertTrue(joinCondition.getExpressionType() == EExpressionType.parenthesis_t); - joinCondition = joinCondition.getLeftOperand(); - assertTrue(joinCondition.getExpressionType() == EExpressionType.simple_comparison_t); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testLateralView.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testLateralView.java deleted file mode 100644 index 310e633d..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testLateralView.java +++ /dev/null @@ -1,63 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-12 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.nodes.TLateralView; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testLateralView extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "SELECT * FROM exampleTable\n" + - " LATERAL VIEW explode(col1) myTable1 AS myCol1\n" + - " LATERAL VIEW explode(myCol1) myTable2 AS myCol2;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TTable table = select.tables.getTable(0); - assertTrue(table.getTableType() == ETableSource.objectname); - assertTrue(table.getTableName().toString().equalsIgnoreCase("exampleTable")); - assertTrue(table.getLateralViewList().size() == 2); - - TLateralView view = table.getLateralViewList().get(0); - TFunctionCall call = view.getUdtf(); - assertTrue(call.getFunctionName().toString().equalsIgnoreCase("explode")); - assertTrue(call.getArgs().getExpression(0).toString().equalsIgnoreCase("col1")); - assertTrue(view.getTableAlias().getAliasName().toString().equalsIgnoreCase("myTable1")); - assertTrue(view.getColumnAliasList().size() == 1); - assertTrue(view.getColumnAliasList().getObjectName(0).toString().equalsIgnoreCase("myCol1")); - - view = table.getLateralViewList().get(1); - call = view.getUdtf(); - assertTrue(call.getFunctionName().toString().equalsIgnoreCase("explode")); - assertTrue(call.getArgs().getExpression(0).toString().equalsIgnoreCase("myCol1")); - assertTrue(view.getTableAlias().getAliasName().toString().equalsIgnoreCase("myTable2")); - assertTrue(view.getColumnAliasList().size() == 1); - assertTrue(view.getColumnAliasList().getObjectName(0).toString().equalsIgnoreCase("myCol2")); - - } - - public void test2() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "select full_name, t.* from foodmart.trimmed_employee\n" + - "lateral view json_tuple('{\"email\":\"amy@only_for_json_udf_test.net\", \"owner\":123}','owner','email') t as owner,email;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(select.joins.size() == 1); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testLoad.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testLoad.java deleted file mode 100644 index 0646e87b..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testLoad.java +++ /dev/null @@ -1,56 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-15 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TPartitionExtensionClause; -import gudusoft.gsqlparser.stmt.hive.THiveLoad; -import junit.framework.TestCase; - -public class testLoad extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "LOAD DATA LOCAL INPATH '/tmp/simple.json' INTO TABLE json_table;"; - assertTrue(sqlparser.parse() == 0); - - THiveLoad load = (THiveLoad)sqlparser.sqlstatements.get(0); - assertTrue(load.isIslocal()); - assertTrue(!load.isIsoverwrite()); - assertTrue(load.getPath().toString().equalsIgnoreCase("'/tmp/simple.json'")); - assertTrue(load.getTable().toString().equalsIgnoreCase("json_table")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "LOAD DATA LOCAL INPATH '/tmp/pv_2008-06-08_us.txt' INTO TABLE page_view PARTITION(date='2008-06-08', country='US');"; - assertTrue(sqlparser.parse() == 0); - - THiveLoad load = (THiveLoad)sqlparser.sqlstatements.get(0); - assertTrue(load.isIslocal()); - assertTrue(!load.isIsoverwrite()); - assertTrue(load.getPath().toString().equalsIgnoreCase("'/tmp/pv_2008-06-08_us.txt'")); - assertTrue(load.getTable().getTableName().toString().equalsIgnoreCase("page_view")); - TPartitionExtensionClause p = load.getTable().getPartitionExtensionClause(); - assertTrue(p.getKeyValues().size() == 2); - assertTrue(p.getKeyValues().getExpression(0).getLeftOperand().toString().equalsIgnoreCase("date")); - assertTrue(p.getKeyValues().getExpression(0).getRightOperand().toString().equalsIgnoreCase("'2008-06-08'")); - assertTrue(p.getKeyValues().getExpression(1).getLeftOperand().toString().equalsIgnoreCase("country")); - assertTrue(p.getKeyValues().getExpression(1).getRightOperand().toString().equalsIgnoreCase("'US'")); - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "LOAD DATA LOCAL INPATH /tmp/pv_2008-06-08_us.txt INTO TABLE page_view PARTITION(date='2008-06-08', country='US')"; - assertTrue(sqlparser.parse() == 0); - - THiveLoad load = (THiveLoad)sqlparser.sqlstatements.get(0); - assertTrue(load.isIslocal()); - assertTrue(!load.isIsoverwrite()); - assertTrue(load.getPath().toString().trim().equalsIgnoreCase("/tmp/pv_2008-06-08_us.txt")); - assertTrue(load.getTable().getTableName().toString().equalsIgnoreCase("page_view")); - // System.out.println(load.getPath().toString()); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testParse.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testParse.java deleted file mode 100644 index 6a0d2474..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testParse.java +++ /dev/null @@ -1,35 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -/** - * Created by IntelliJ IDEA. - * User: tako - * Date: 13-7-21 - * Time: 下午10:43 - * To change this template use File | Settings | File Templates. - */ - - -public class testParse extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "INSERT OVERWRITE TABLE pv_gender_sum\n" + - " SELECT pv_users.gender, count (DISTINCT pv_users.userid)\n" + - " FROM pv_users\n" + - " GROUP BY pv_users.gender;"; - assertTrue(sqlparser.parse() == 0); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = - " SELECT pv_users.gender, count (DISTINCT pv_users.userid)\n" + - " FROM pv_users\n" + - " GROUP BY pv_users.gender;"; - assertTrue(sqlparser.parse() == 0); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testSampleClause.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testSampleClause.java deleted file mode 100644 index 1cc2c752..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testSampleClause.java +++ /dev/null @@ -1,116 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-12 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TBaseType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TAliasClause; -import gudusoft.gsqlparser.nodes.TJoin; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.nodes.TTableSample; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSampleClause extends TestCase { - - public void testSampling(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT *\n" + - "FROM source TABLESAMPLE(BUCKET 3 OUT OF 32 ON rand()) s;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.objectname); - TAliasClause aliasClause = table.getAliasClause(); - assertTrue(aliasClause.getAliasName().toString().equalsIgnoreCase("s")); - - TTableSample tableSample = table.getTableSample(); - assertTrue(tableSample.getBucketNumber().toString().equalsIgnoreCase("3")); - assertTrue(tableSample.getOutofNumber().toString().equalsIgnoreCase("32")); - assertTrue(tableSample.getOnExprList().size() == 1); - assertTrue(tableSample.getOnExprList().getExpression(0).toString().equalsIgnoreCase("rand()")); - //System.out.println(tableSample.toString()); - } - - public void testSampling2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT *\n" + - "FROM source TABLESAMPLE(0.1 PERCENT) s;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.objectname); - TAliasClause aliasClause = table.getAliasClause(); - assertTrue(aliasClause.getAliasName().toString().equalsIgnoreCase("s")); - - TTableSample tableSample = table.getTableSample(); - assertTrue(tableSample.getNumerator().toString().equalsIgnoreCase("0.1")); - assertTrue(tableSample.getPercent().toString().equalsIgnoreCase("PERCENT")); - //System.out.println(tableSample.toString()); - } - - public void testSampling3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT *\n" + - "FROM source TABLESAMPLE(100M) s;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.objectname); - TAliasClause aliasClause = table.getAliasClause(); - assertTrue(aliasClause.getAliasName().toString().equalsIgnoreCase("s")); - - TTableSample tableSample = table.getTableSample(); - assertTrue(tableSample.getNumerator().toString().equalsIgnoreCase("100M")); - assertTrue(tableSample.getPercent() == null); - //System.out.println(tableSample.toString()); - } - - public void testSampling4(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT * FROM source TABLESAMPLE(10 ROWS);"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.objectname); - - - TTableSample tableSample = table.getTableSample(); - assertTrue(tableSample.getNumerator().toString().equalsIgnoreCase("10")); - assertTrue(tableSample.getPercent().toString().equalsIgnoreCase("ROWS")); - //System.out.println(tableSample.toString()); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testSelect.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testSelect.java deleted file mode 100644 index 0df13744..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testSelect.java +++ /dev/null @@ -1,119 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-9 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.TSortBy; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSelect extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT page_views.*\n" + - "FROM page_views\n" + - "WHERE page_views.date >= '2008-03-01' AND page_views.date <= '2008-03-31'"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - TExpression expr = resultColumn.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); - TObjectName objectName = expr.getObjectOperand(); - assertTrue(objectName.toString().equalsIgnoreCase("page_views.*")); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - assertTrue(join.getTable().toString().equalsIgnoreCase("page_views")); - - TWhereClause whereClause = select.getWhereClause(); - TExpression condition = whereClause.getCondition(); - assertTrue(condition.getExpressionType() == EExpressionType.logical_and_t); - assertTrue(condition.toString().equalsIgnoreCase("page_views.date >= '2008-03-01' AND page_views.date <= '2008-03-31'")); - TExpression left = condition.getLeftOperand(); - assertTrue(left.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(left.getComparisonOperator().toString().equalsIgnoreCase(">=")); - assertTrue(left.getComparisonOperator().tokencode == TBaseType.great_equal); - TExpression right = condition.getRightOperand(); - //System.out.println(left.getComparisonOperator().tokencode); - } - - - public void testGroupBy(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT col1 FROM t1 GROUP BY col1 HAVING SUM(col2) > 10;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - TGroupBy groupBy = select.getGroupByClause(); - assertTrue(groupBy.getItems().size() == 1); - TGroupByItem groupByItem = groupBy.getItems().getGroupByItem(0); - assertTrue(groupByItem.getExpr().toString().equalsIgnoreCase("col1")); - TExpression havingCondition = groupBy.getHavingClause(); - assertTrue(havingCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(havingCondition.toString().equalsIgnoreCase("SUM(col2) > 10")); - TExpression left = havingCondition.getLeftOperand(); - TExpression right = havingCondition.getRightOperand(); - assertTrue(left.getExpressionType() == EExpressionType.function_t); - TFunctionCall functionCall = left.getFunctionCall(); - assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("SUM")); - assertTrue(functionCall.getArgs().getExpression(0).toString().equalsIgnoreCase("col2")); - assertTrue(right.getExpressionType() == EExpressionType.simple_constant_t); - } - - public void testSubqueryInFromClause(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT col1 FROM (SELECT col11, SUM(col2) AS col2sum FROM t1 GROUP BY col1) t2 WHERE t2.col2sum > 10"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.subquery); - - TSelectSqlStatement subquery = table.getSubquery(); - assertTrue(subquery.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("col11")); - - } - - public void testLimitClause(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT * FROM t1 LIMIT 5;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - - TLimitClause limitClause = select.getLimitClause(); - //System.out.println(limitClause.getOffset().toString()); - assertTrue(limitClause.getOffset().toString().equalsIgnoreCase("5")); - - } - - public void testSortBy(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT * FROM sales SORT BY amount DESC LIMIT 5;;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - - TSortBy sortBy = select.getSortBy(); - assertTrue(sortBy.getItems().getOrderByItem(0).getSortKey().toString().equalsIgnoreCase("amount")); - assertTrue(sortBy.getItems().getOrderByItem(0).getSortType() == TBaseType.srtDesc); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testSet.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testSet.java deleted file mode 100644 index 3e1f1b3a..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testSet.java +++ /dev/null @@ -1,67 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-15 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; - -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.hive.THiveVariable; -import gudusoft.gsqlparser.stmt.hive.THiveSet; -import junit.framework.TestCase; - -public class testSet extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "set system:xxx=5;"; - assertTrue(sqlparser.parse() == 0); - - THiveSet set = (THiveSet)sqlparser.sqlstatements.get(0); - TExpression expression = set.getExpr(); - assertTrue(expression.getLeftOperand().toString().equalsIgnoreCase("system:xxx")); - assertTrue(expression.getRightOperand().toString().equalsIgnoreCase("5")); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "set system:yyy=${system:xxx};"; - assertTrue(sqlparser.parse() == 0); - - THiveSet set = (THiveSet)sqlparser.sqlstatements.get(0); - TExpression expression = set.getExpr(); - assertTrue(expression.getLeftOperand().toString().equalsIgnoreCase("system:yyy")); - assertTrue(expression.getRightOperand().toString().equalsIgnoreCase("${system:xxx}")); - - TExpression right = expression.getRightOperand(); - assertTrue(right.getExpressionType() == EExpressionType.hive_variable_t); - THiveVariable v = right.getHive_variable(); - assertTrue(v.getVarName().toString().equalsIgnoreCase("system")); - assertTrue(v.getVarProperty().toString().equalsIgnoreCase("xxx")); - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "set c=${hiveconf:${hiveconf:b}};"; - assertTrue(sqlparser.parse() == 0); - - THiveSet set = (THiveSet)sqlparser.sqlstatements.get(0); - TExpression expression = set.getExpr(); - assertTrue(expression.getLeftOperand().toString().equalsIgnoreCase("c")); - assertTrue(expression.getRightOperand().toString().equalsIgnoreCase("${hiveconf:${hiveconf:b}}")); - TExpression right = expression.getRightOperand(); - assertTrue(right.getExpressionType() == EExpressionType.hive_variable_t); - THiveVariable v = right.getHive_variable(); - assertTrue(v.getVarName().toString().equalsIgnoreCase("hiveconf")); - assertTrue(v.getVarProperty() == null); - assertTrue(v.getNestedVar().toString().equalsIgnoreCase("${hiveconf:b}")); - v = v.getNestedVar(); - assertTrue(v.getVarName().toString().equalsIgnoreCase("hiveconf")); - assertTrue(v.getVarProperty().toString().equalsIgnoreCase("b")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testShow.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testShow.java deleted file mode 100644 index 1cdaaaeb..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testShow.java +++ /dev/null @@ -1,25 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-16 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.hive.EHiveDescOption; -import gudusoft.gsqlparser.nodes.hive.EHiveShowType; -import gudusoft.gsqlparser.stmt.hive.THiveShow; -import junit.framework.TestCase; - -public class testShow extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "SHOW FORMATTED INDEX ON table03;"; - assertTrue(sqlparser.parse() == 0); - - THiveShow show = (THiveShow)sqlparser.sqlstatements.get(0); - assertTrue(show.getShowType() == EHiveShowType.stIndexes); - assertTrue(show.getShowOptions() == EHiveDescOption.doFormatted); - assertTrue(show.getTableName().toString().equalsIgnoreCase("table03")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testTimestamp.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testTimestamp.java deleted file mode 100644 index f5501d02..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testTimestamp.java +++ /dev/null @@ -1,32 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testTimestamp extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT CURRENT_TIMESTAMP() , CURRENT_TIMESTAMP,CURRENT_DATE,CURRENT_DATE()"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TResultColumn resultColumn0 = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn0.getExpr().getExpressionType() == EExpressionType.function_t); - - TResultColumn resultColumn1 = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn1.getExpr().getExpressionType() == EExpressionType.function_t); - - TResultColumn resultColumn2 = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn2.getExpr().getExpressionType() == EExpressionType.function_t); - - TResultColumn resultColumn3 = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn3.getExpr().getExpressionType() == EExpressionType.function_t); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testToString.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testToString.java deleted file mode 100644 index f7534043..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testToString.java +++ /dev/null @@ -1,36 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testToString extends TestCase { - - public void testGroupBy(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "select * from t1 group by c1 with rollup"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getGroupByClause().toString().equalsIgnoreCase("group by c1 with rollup")); - // System.out.println(select.getGroupByClause().toString()); - - } - - public void testFromClause(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "select * from t1 join t2 on t1.c1 = t2.c2"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - //System.out.println(select.joins); - assertTrue(select.joins.toString().equalsIgnoreCase("t1 join t2 on t1.c1 = t2.c2")); - //assertTrue(select.getGroupByClause().toString().equalsIgnoreCase("group by c1")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testUnion.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testUnion.java deleted file mode 100644 index 79d54c6d..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testUnion.java +++ /dev/null @@ -1,194 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -/** - * Created by IntelliJ IDEA. - * User: tako - * Date: 13-8-11 - * Time: 下午6:32 - * To change this template use File | Settings | File Templates. - */ -public class testUnion extends TestCase { - - public void testUnionInSubquery(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT t3.col\n" + - "FROM (\n" + - " SELECT a+b AS col\n" + - " FROM t1\n" + - " UNION ALL\n" + - " SELECT c-d AS col\n" + - " FROM t2\n" + - ") t3;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.subquery); - - TSelectSqlStatement subquery = table.getSubquery(); - assertTrue(subquery.isCombinedQuery()); - TSelectSqlStatement left = subquery.getLeftStmt(); - TSelectSqlStatement right = subquery.getRightStmt(); - - TResultColumn rs = left.getResultColumnList().getResultColumn(0); - TExpression expr = rs.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.arithmetic_plus_t); - - TAliasClause aliasClause = rs.getAliasClause(); - // System.out.println(aliasClause.getAliasName().toString()); - assertTrue(aliasClause.getAliasName().toString().equalsIgnoreCase("col")); - - rs = right.getResultColumnList().getResultColumn(0); - expr = rs.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.arithmetic_minus_t); - - - } - - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "SELECT u.id, actions.date\n" + - "FROM (\n" + - " SELECT av.uid AS uid \n" + - " FROM action_video av \n" + - " WHERE av.date = '2008-06-03'\n" + - " UNION ALL \n" + - " SELECT ac.uid AS uid \n" + - " FROM action_comment ac \n" + - " WHERE ac.date = '2008-06-03'\n" + - " ) actions JOIN users u ON (u.id = actions.uid) ;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_table); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.subquery); - TJoinItem joinItem = join.getJoinItems().getJoinItem(0); - assertTrue(joinItem.getJoinType() == EJoinType.join); - assertTrue(joinItem.getTable().getFullName().equalsIgnoreCase("users")); - - TSelectSqlStatement subquery = table.getSubquery(); - assertTrue(subquery.isCombinedQuery()); - - TSelectSqlStatement left = subquery.getLeftStmt(); - TSelectSqlStatement right = subquery.getRightStmt(); - - TResultColumn rs = left.getResultColumnList().getResultColumn(0); - TExpression expr = rs.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expr.toString().equalsIgnoreCase("av.uid")); - assertTrue(rs.getAliasClause().getAliasName().toString().equalsIgnoreCase("uid")); - - rs = right.getResultColumnList().getResultColumn(0); - expr = rs.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expr.toString().equalsIgnoreCase("ac.uid")); - assertTrue(rs.getAliasClause().getAliasName().toString().equalsIgnoreCase("uid")); - - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "FROM (\n" + - " FROM (\n" + - " FROM action_video av\n" + - " SELECT av.uid AS uid, av.id AS id, av.date AS date\n" + - " \n" + - " UNION ALL\n" + - " \n" + - " FROM action_comment ac\n" + - " SELECT ac.uid AS uid, ac.id AS id, ac.date AS date\n" + - " ) union_actions\n" + - " SELECT union_actions.uid, union_actions.id, union_actions.date\n" + - " CLUSTER BY union_actions.uid) map;"; - // System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement fromQuery = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = fromQuery.tables.getTable(0); - assertTrue(table.getTableType() == ETableSource.subquery); - - assertTrue(table.getAliasClause().getAliasName().toString().equalsIgnoreCase("map")); - - //assertTrue(fromQuery.getHiveBodyList().size() == 0); - - TSelectSqlStatement select = table.getSubquery(); - //TSelectSqlStatement select = (TSelectSqlStatement)fromQuery.getHiveBodyList().get(0); - assertTrue(select.getResultColumnList().size() == 3); - TClusterBy clusterBy = select.getClusterBy(); - assertTrue(clusterBy.getExpressionList().getExpression(0).toString().equalsIgnoreCase("union_actions.uid")); - - table = select.tables.getTable(0); - assertTrue(table.getTableType() == ETableSource.subquery); - assertTrue(table.getAliasClause().getAliasName().toString().equalsIgnoreCase("union_actions")); - select = table.getSubquery(); - assertTrue(select.isCombinedQuery()); - assertTrue(select.getSetOperator() == TSelectSqlStatement.setOperator_unionall); - // hive from query: from...select will be translated into select statement in union operation - TSelectSqlStatement left = select.getLeftStmt(); - assertTrue(left.tables.getTable(0).getTableName().toString().equalsIgnoreCase("action_video")); - assertTrue(left.tables.getTable(0).getAliasClause().getAliasName().toString().equalsIgnoreCase("av")); - - // hive from query: from...select will be translated into select statement in union operation - TSelectSqlStatement right = select.getRightStmt(); - assertTrue(right.tables.getTable(0).getTableName().toString().equalsIgnoreCase("action_comment")); - assertTrue(right.tables.getTable(0).getAliasClause().getAliasName().toString().equalsIgnoreCase("ac")); - - //assertTrue(fromQuery.getHiveBodyList().size() == 0); - - } - - public void testSelectUnion(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE VIEW SAMPLE_JOIN AS SELECT \n" + - " P_DATE,\n" + - " SAMPLE_DT NAME ,\n" + - " SAMPLE_ADV_AM ADVANCE_AMOUNT,\n" + - " 'ACTIVE' AS SMPLE_STATUS\n" + - " FROM SAMPLE_TABLE SAMP,\n" + - " (SELECT 'A' DELTA_BYTE FROM DUAL\n" + - " UNION ALL\n" + - " SELECT 'C' DELTA_BYTE FROM DUAL\n" + - " UNION ALL\n" + - " SELECT 'D' DELTA_BYTE FROM DUAL\n" + - "\t\t ) BYTE_TAB\n" + - " WHERE P_DATE =\n" + - " (SELECT MAX (P_DATE)\n" + - " FROM SAMPLE_LKUP\n" + - " WHERE STATUS = 'COMPLETED')\n" + - " AND SAMP.DELTA_FILE_BYTE = BYTE_TAB.DELTA_BYTE"; - assertTrue(sqlparser.parse() == 0); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select =createViewSqlStatement.getSubquery(); - TSelectSqlStatement subquery = select.joins.getJoin(1).getTable().getSubquery(); - TSelectSqlStatement right = subquery.getLeftStmt().getRightStmt(); - assertTrue(right.toString().equalsIgnoreCase("SELECT 'C' DELTA_BYTE FROM DUAL")); - assertTrue(right.getParentStmt().toString().equalsIgnoreCase("(SELECT 'A' DELTA_BYTE FROM DUAL\n" + - " UNION ALL\n" + - " SELECT 'C' DELTA_BYTE FROM DUAL\n" + - " UNION ALL\n" + - " SELECT 'D' DELTA_BYTE FROM DUAL\n" + - "\t\t )")); - //assertTrue(select.joins.getStartToken().toString().equalsIgnoreCase("skills")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testWindowClause.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testWindowClause.java deleted file mode 100644 index 0cf2e766..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testWindowClause.java +++ /dev/null @@ -1,161 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; -/* - * Date: 13-8-12 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testWindowClause extends TestCase { - - public void testWindowing(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT a, COUNT(b) OVER (PARTITION BY c)\n" + - "FROM T;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 2); - - TExpression expression = select.getResultColumnList().getResultColumn(1).getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.function_t); - - assertTrue(select.getResultColumnList().getResultColumn(1).toString().equalsIgnoreCase("COUNT(b) OVER (PARTITION BY c)")); - TFunctionCall functionCall = expression.getFunctionCall(); - assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("COUNT")); - - TWindowDef windowDef = functionCall.getWindowDef(); - assertTrue(windowDef.getPartitionClause().getExpressionList().size() == 1); - assertTrue(windowDef.getPartitionClause().getExpressionList().getExpression(0).toString().equalsIgnoreCase("c")); - - //System.out.println(windowSpecification.toString()); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.objectname); - - } - - public void testWindowing2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT a, SUM(b) OVER (PARTITION BY c ORDER BY d ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)\n" + - "FROM T;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 2); - - TExpression expression = select.getResultColumnList().getResultColumn(1).getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.function_t); - - TFunctionCall functionCall = expression.getFunctionCall(); - assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("SUM")); - - TWindowDef windowDef = functionCall.getWindowDef(); - assertTrue(windowDef.getPartitionClause().getExpressionList().size() == 1); - assertTrue(windowDef.getPartitionClause().getExpressionList().getExpression(0).toString().equalsIgnoreCase("c")); - - TOrderByItem orderByItem = windowDef.getOrderBy().getItems().getOrderByItem(0); - assertTrue(orderByItem.toString().equalsIgnoreCase("d")); - - TWindowFrame windowFrame = windowDef.getWindowFrame(); - assertTrue(windowFrame.getLimitRowType() == ELimitRowType.Rows); - TWindowFrameBoundary start = windowFrame.getStartBoundary(); - TWindowFrameBoundary end = windowFrame.getEndBoundary(); - assertTrue(start.getBoundaryType() == EBoundaryType.ebtUnboundedPreceding); - assertTrue(end.getBoundaryType() == EBoundaryType.ebtCurrentRow); - //System.out.println(windowSpecification.toString()); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.objectname); - - } - - public void testWindowing3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT a, AVG(b) OVER (PARTITION BY c ORDER BY d ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING)\n" + - "FROM T;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 2); - - TExpression expression = select.getResultColumnList().getResultColumn(1).getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.function_t); - - TFunctionCall functionCall = expression.getFunctionCall(); - assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("AVG")); - - TWindowDef windowSpecification = functionCall.getWindowDef(); - assertTrue(windowSpecification.getPartitionClause().getExpressionList().size() == 1); - assertTrue(windowSpecification.getPartitionClause().getExpressionList().getExpression(0).toString().equalsIgnoreCase("c")); - - TOrderByItem orderByItem = windowSpecification.getOrderBy().getItems().getOrderByItem(0); - assertTrue(orderByItem.toString().equalsIgnoreCase("d")); - - TWindowFrame windowFrame = windowSpecification.getWindowFrame(); - assertTrue(windowFrame.getLimitRowType() == ELimitRowType.Rows); - TWindowFrameBoundary start = windowFrame.getStartBoundary(); - TWindowFrameBoundary end = windowFrame.getEndBoundary(); - assertTrue(start.getBoundaryType() == EBoundaryType.ebtPreceding); - assertTrue(start.getBoundaryNumber().toString().equalsIgnoreCase("3")); - assertTrue(end.getBoundaryType() == EBoundaryType.ebtFollowing); - assertTrue(end.getBoundaryNumber().toString().equalsIgnoreCase("3")); - //System.out.println(windowSpecification.toString()); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.objectname); - - } - public void testWindowing4(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext ="SELECT a, SUM(b) OVER w\n" + - "FROM T\n" + - "WINDOW w AS (PARTITION BY c ORDER BY d ROWS UNBOUNDED PRECEDING)"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 2); - - TExpression expression = select.getResultColumnList().getResultColumn(1).getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.function_t); - - TFunctionCall functionCall = expression.getFunctionCall(); - assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("SUM")); - - TWindowDef windowSpecification = functionCall.getWindowDef(); - assertTrue(windowSpecification.getName().toString().equalsIgnoreCase("w")); - //System.out.println(windowSpecification.toString()); - - TWindowClause windowClause = select.getWindowClause(); - assertTrue(windowClause.getWindowDefs().size() == 1); - TWindowDef windowDefinition = windowClause.getWindowDefs().getElement(0); - // assertTrue(windowDefinition.getName().toString().equalsIgnoreCase("w")); - // TWindowDef windowSpecification2 = windowDefinition.getWindowSpecification(); - assertTrue(windowDefinition.getPartitionClause().getExpressionList().getExpression(0).toString().equalsIgnoreCase("c")); - assertTrue(windowDefinition.getWindowFrame().getLimitRowType() == ELimitRowType.Rows); - assertTrue(windowDefinition.getWindowFrame().getStartBoundary().getBoundaryType() == EBoundaryType.ebtUnboundedPreceding); - - assertTrue(select.joins.size() == 1); - TJoin join = select.joins.getJoin(0); - assertTrue(join.getKind() == TBaseType.join_source_fake); - - TTable table = join.getTable(); - assertTrue(table.getTableType() == ETableSource.objectname); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/hiveTest/testlexer.java b/src/test/java/gudusoft/gsqlparser/hiveTest/testlexer.java deleted file mode 100644 index 086696ac..00000000 --- a/src/test/java/gudusoft/gsqlparser/hiveTest/testlexer.java +++ /dev/null @@ -1,114 +0,0 @@ -package gudusoft.gsqlparser.hiveTest; - -import gudusoft.gsqlparser.*; -import junit.framework.TestCase; - -/** - * Created by IntelliJ IDEA. - * User: tako - * Date: 13-7-21 - * Time: 下午12:16 - * To change this template use File | Settings | File Templates. - */ - - -public class testlexer extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive); - sqlparser.sqltext = "A=B"; - sqlparser.tokenizeSqltext(); - assertTrue(sqlparser.sourcetokenlist.get(1).tokencode == TBaseType.hive_equal); - assertTrue(sqlparser.sourcetokenlist.get(1).toString().equalsIgnoreCase("=")); - - sqlparser.sqltext = "A==B"; - sqlparser.tokenizeSqltext(); - assertTrue(sqlparser.sourcetokenlist.get(1).tokencode == TBaseType.hive_equal); - assertTrue(sqlparser.sourcetokenlist.get(1).toString().equalsIgnoreCase("==")); - - sqlparser.sqltext = "A<=>B"; - sqlparser.tokenizeSqltext(); - assertTrue(sqlparser.sourcetokenlist.get(1).tokencode == TBaseType.safe_equal); - assertTrue(sqlparser.sourcetokenlist.get(1).toString().equalsIgnoreCase("<=>")); - - sqlparser.sqltext = "123L=123S=123Y"; //big/small/tiny int - sqlparser.tokenizeSqltext(); - assertTrue(sqlparser.sourcetokenlist.get(0).toString().equalsIgnoreCase("123L")); - assertTrue(sqlparser.sourcetokenlist.get(0).tokencode == TBaseType.hive_BigintLiteral); - assertTrue(sqlparser.sourcetokenlist.get(2).toString().equalsIgnoreCase("123S")); - assertTrue(sqlparser.sourcetokenlist.get(2).tokencode == TBaseType.hive_SmallintLiteral); - assertTrue(sqlparser.sourcetokenlist.get(4).toString().equalsIgnoreCase("123Y")); - assertTrue(sqlparser.sourcetokenlist.get(4).tokencode == TBaseType.hive_TinyintLiteral); - - sqlparser.sqltext = "12.3BD=1.23e-10=10E+2"; //big/small/tiny int - sqlparser.tokenizeSqltext(); - assertTrue(sqlparser.sourcetokenlist.get(0).toString().equalsIgnoreCase("12.3BD")); - assertTrue(sqlparser.sourcetokenlist.get(0).tokencode == TBaseType.hive_DecimalLiteral); - assertTrue(sqlparser.sourcetokenlist.get(2).toString().equalsIgnoreCase("1.23e-10")); - assertTrue(sqlparser.sourcetokenlist.get(2).tokencode== TBaseType.hive_number); - assertTrue(sqlparser.sourcetokenlist.get(4).toString().equalsIgnoreCase("10E+2")); - assertTrue(sqlparser.sourcetokenlist.get(4).tokencode== TBaseType.hive_number); - -// - sqlparser.sqltext = "12B=123b=10K"; //big/small/tiny int - sqlparser.tokenizeSqltext(); - assertTrue(sqlparser.sourcetokenlist.get(0).toString().equalsIgnoreCase("12B")); - assertTrue(sqlparser.sourcetokenlist.get(0).tokencode == TBaseType.hive_ByteLengthLiteral); - assertTrue(sqlparser.sourcetokenlist.get(2).toString().equalsIgnoreCase("123b")); - assertTrue(sqlparser.sourcetokenlist.get(2).tokencode== TBaseType.hive_ByteLengthLiteral); - assertTrue(sqlparser.sourcetokenlist.get(4).toString().equalsIgnoreCase("10K")); - assertTrue(sqlparser.sourcetokenlist.get(4).tokencode== TBaseType.hive_ByteLengthLiteral); -// -// - sqlparser.sqltext = "`abc*`"; - sqlparser.tokenizeSqltext(); - assertTrue(sqlparser.sourcetokenlist.get(0).toString().equalsIgnoreCase("`abc*`")); - assertTrue(sqlparser.sourcetokenlist.get(0).tokencode == TBaseType.ident); -// - sqlparser.sqltext = "0XA9F7"; - sqlparser.tokenizeSqltext(); - assertTrue(sqlparser.sourcetokenlist.get(0).toString().equalsIgnoreCase("0XA9F7")); - assertTrue(sqlparser.sourcetokenlist.get(0).tokencode == TBaseType.hive_CharSetLiteral); -// - sqlparser.sqltext = "'a\\'b'";//"'a\\'b"+""+"'"; - sqlparser.tokenizeSqltext(); - // System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.sourcetokenlist.get(0).toString().equalsIgnoreCase("'a\\'b'")); - assertTrue(sqlparser.sourcetokenlist.get(0).tokencode == TBaseType.hive_StringLiteral); -// - sqlparser.sqltext = "\"a\\\"'b\"";//"a\"'b" - sqlparser.tokenizeSqltext(); - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.sourcetokenlist.get(0).toString().equalsIgnoreCase("\"a\\\"'b\"")); - assertTrue(sqlparser.sourcetokenlist.get(0).tokencode == TBaseType.hive_StringLiteral); -// - sqlparser.sqltext = "_as-._:k"; - sqlparser.tokenizeSqltext(); - //System.out.println(sqlparser.sqltext); - //System.out.println(sqlparser.sourcetokenlist.get(0).toString()); - //System.out.println(sqlparser.sourcetokenlist.get(1).toString()); - assertTrue(sqlparser.sourcetokenlist.get(0).toString().equalsIgnoreCase("_as-._:k")); - assertTrue(sqlparser.sourcetokenlist.get(0).tokencode == TBaseType.hive_CharSetName); -// - sqlparser.sqltext = "asme=9ss=ax_x_"; - sqlparser.tokenizeSqltext(); - assertTrue(sqlparser.sourcetokenlist.get(0).toString().equalsIgnoreCase("asme")); - assertTrue(sqlparser.sourcetokenlist.get(0).tokencode == TBaseType.ident); - assertTrue(sqlparser.sourcetokenlist.get(2).toString().equalsIgnoreCase("9ss")); - assertTrue(sqlparser.sourcetokenlist.get(2).tokencode == TBaseType.ident); - assertTrue(sqlparser.sourcetokenlist.get(4).toString().equalsIgnoreCase("ax_x_")); - assertTrue(sqlparser.sourcetokenlist.get(4).tokencode == TBaseType.ident); -// - sqlparser.sqltext = "where"; - sqlparser.tokenizeSqltext(); - assertTrue(sqlparser.sourcetokenlist.get(0).toString().equalsIgnoreCase("where")); - assertTrue(sqlparser.sourcetokenlist.get(0).tokencode == TBaseType.rrw_where); -// - sqlparser.sqltext = "-- where"; - sqlparser.tokenizeSqltext(); - assertTrue(sqlparser.sourcetokenlist.get(0).toString().equalsIgnoreCase("-- where")); - assertTrue(sqlparser.sourcetokenlist.get(0).tokencode == TBaseType.cmtdoublehyphen); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/impalaTest/testSubquery.java b/src/test/java/gudusoft/gsqlparser/impalaTest/testSubquery.java deleted file mode 100644 index 3895a91c..00000000 --- a/src/test/java/gudusoft/gsqlparser/impalaTest/testSubquery.java +++ /dev/null @@ -1,27 +0,0 @@ -package gudusoft.gsqlparser.impalaTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSubquery extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvimpala); - sqlparser.sqltext = "create table test.concat \n" + - "as select concat(heroes.name,' vs. ',villains.name) as battle \n" + - "from heroes \n" + - "join villains \n" + - "where heroes.era = villains.era and heroes.planet = villains.planet"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createTable.getSubQuery(); - System.out.println(select.toString()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/informixTest/testAlterObject.java b/src/test/java/gudusoft/gsqlparser/informixTest/testAlterObject.java deleted file mode 100644 index 5d9e9dca..00000000 --- a/src/test/java/gudusoft/gsqlparser/informixTest/testAlterObject.java +++ /dev/null @@ -1,23 +0,0 @@ -package gudusoft.gsqlparser.informixTest; -/* - * Date: 13-1-25 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAlterIndexStmt; -import junit.framework.TestCase; - -public class testAlterObject extends TestCase { - - public void testIndex(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "ALTER INDEX ix_cust TO NOT CLUSTER;"; - assertTrue(sqlparser.parse() == 0); - - TAlterIndexStmt stmt = (TAlterIndexStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getIndexName().toString().equalsIgnoreCase("ix_cust")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/informixTest/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/informixTest/testCreateProcedure.java deleted file mode 100644 index 3b6c6a48..00000000 --- a/src/test/java/gudusoft/gsqlparser/informixTest/testCreateProcedure.java +++ /dev/null @@ -1,36 +0,0 @@ -package gudusoft.gsqlparser.informixTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.informix.TInformixCreateProcedure; -import junit.framework.TestCase; - -public class testCreateProcedure extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "create procedure procCustomersAccounts ()\n" + - "INSERT INTO CUSTOMERACCOUNTS\n" + - " SELECT a.C_ID\n" + - " , a.C_NAME\n" + - " , a.c_NUMBER\n" + - " , b.C_ACCOUNT_TYPE\n" + - " , b.C_ACCOUNT_DURATION\n" + - " , a.C_BALANCE\n" + - " FROM CARDSDATA A\n" + - " JOIN CUSTOMERDATA B\n" + - " ON (A.C_ID = B.C_ID);\n" + - "end procedure "; - assertTrue(sqlparser.parse() == 0); - - TInformixCreateProcedure stmt = (TInformixCreateProcedure)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getProcedureName().toString().equalsIgnoreCase("procCustomersAccounts")); - assertTrue(stmt.getBodyStatements().size() == 1); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)stmt.getBodyStatements().get(0); - assertTrue(insertSqlStatement.getTargetTable().toString().equalsIgnoreCase("CUSTOMERACCOUNTS")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/informixTest/testDropObject.java b/src/test/java/gudusoft/gsqlparser/informixTest/testDropObject.java deleted file mode 100644 index edb7ee24..00000000 --- a/src/test/java/gudusoft/gsqlparser/informixTest/testDropObject.java +++ /dev/null @@ -1,83 +0,0 @@ -package gudusoft.gsqlparser.informixTest; -/* - * Date: 13-1-24 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.*; -import gudusoft.gsqlparser.stmt.informix.TInformixDropRowTypeStmt; -import junit.framework.TestCase; - -public class testDropObject extends TestCase { - - - public void testRowType(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "DROP ROW TYPE employee_t RESTRICT"; - assertTrue(sqlparser.parse() == 0); - - TInformixDropRowTypeStmt stmt = (TInformixDropRowTypeStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getRowTypeName().toString().equalsIgnoreCase("employee_t")); - - } - - public void testSequence(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "DROP SEQUENCE Invoice_Numbers;"; - assertTrue(sqlparser.parse() == 0); - - TDropSequenceStmt stmt = (TDropSequenceStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getSequenceName().toString().equalsIgnoreCase("Invoice_Numbers")); - - } - - public void testSynonym(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "DROP SYNONYM cathyg.nj_cust;"; - assertTrue(sqlparser.parse() == 0); - - TDropSynonymStmt stmt = (TDropSynonymStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getSynonymName().toString().equalsIgnoreCase("cathyg.nj_cust")); - - } - - public void testIndex(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "DROP INDEX stores_demo:joed.o_num_ix;"; - assertTrue(sqlparser.parse() == 0); - - TDropIndexSqlStatement stmt = (TDropIndexSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getIndexName().toString().equalsIgnoreCase("stores_demo:joed.o_num_ix")); - - } - - public void testTable(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "DROP TABLE stores_demo@accntg:joed.state;"; - assertTrue(sqlparser.parse() == 0); - - TDropTableSqlStatement stmt = (TDropTableSqlStatement)sqlparser.sqlstatements.get(0); - - assertTrue(stmt.getTableName().toString().equalsIgnoreCase("stores_demo@accntg:joed.state")); - - } - - public void testView(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "DROP VIEW cust1"; - assertTrue(sqlparser.parse() == 0); - - TDropViewSqlStatement stmt = (TDropViewSqlStatement)sqlparser.sqlstatements.get(0); - - assertTrue(stmt.getViewName().toString().equalsIgnoreCase("cust1")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/informixTest/testOuterJoin.java b/src/test/java/gudusoft/gsqlparser/informixTest/testOuterJoin.java deleted file mode 100644 index 5518bd12..00000000 --- a/src/test/java/gudusoft/gsqlparser/informixTest/testOuterJoin.java +++ /dev/null @@ -1,51 +0,0 @@ -package gudusoft.gsqlparser.informixTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TInformixOuterClause; -import gudusoft.gsqlparser.nodes.TJoin; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testOuterJoin extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "SELECT c.company, o.order_date, i.total_price, m.manu_name\n" + - " FROM customer c, \n" + - " OUTER (orders o, OUTER (items i, OUTER manufact m))\n" + - " WHERE c.customer_num = o.customer_num\n" + - " AND o.order_num = i.order_num \n" + - " AND i.manu_code = m.manu_code;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement stmt = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getJoins().size() == 2); - TJoin join0 = stmt.getJoins().getJoin(0); - assertTrue(join0.getTable().toString().equalsIgnoreCase("customer")); - - TJoin join1 = stmt.getJoins().getJoin(1); - assertTrue(join1.getTable().getTableType() == ETableSource.informixOuter); - TInformixOuterClause outerClause = join1.getTable().getOuterClause(); - assertTrue(outerClause.getTableList().size() == 2); - TTable table0 = outerClause.getTableList().getTable(0); - assertTrue(table0.toString().equalsIgnoreCase("orders")); - - TTable table1 = outerClause.getTableList().getTable(1); - assertTrue(table1.getTableType() == ETableSource.informixOuter); - outerClause = table1.getOuterClause(); - assertTrue(outerClause.getTableList().size() == 2); - table0 = outerClause.getTableList().getTable(0); - assertTrue(table0.toString().equalsIgnoreCase("items")); - table1 = outerClause.getTableList().getTable(1); - assertTrue(table1.getTableType() == ETableSource.informixOuter); - outerClause = table1.getOuterClause(); - assertTrue(outerClause.getTableList().size() == 1); - table0 = outerClause.getTableList().getTable(0); - assertTrue(table0.toString().equalsIgnoreCase("manufact")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/informixTest/testRenameObject.java b/src/test/java/gudusoft/gsqlparser/informixTest/testRenameObject.java deleted file mode 100644 index e61e91ac..00000000 --- a/src/test/java/gudusoft/gsqlparser/informixTest/testRenameObject.java +++ /dev/null @@ -1,61 +0,0 @@ -package gudusoft.gsqlparser.informixTest; -/* - * Date: 13-1-25 - */ - -import gudusoft.gsqlparser.EDbObjectType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TRenameStmt; -import junit.framework.TestCase; - -public class testRenameObject extends TestCase { - - public void testColumn(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "RENAME COLUMN customer.customer_num TO c_num;"; - assertTrue(sqlparser.parse() == 0); - - TRenameStmt stmt = (TRenameStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getOldName().toString().equalsIgnoreCase("customer.customer_num")); - assertTrue(stmt.getNewName().toString().equalsIgnoreCase("c_num")); - assertTrue(stmt.getObjectType() == EDbObjectType.column); - } - - public void testIndex(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "RENAME index customer.customer_num TO c_num;"; - assertTrue(sqlparser.parse() == 0); - - TRenameStmt stmt = (TRenameStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getOldName().toString().equalsIgnoreCase("customer.customer_num")); - assertTrue(stmt.getNewName().toString().equalsIgnoreCase("c_num")); - assertTrue(stmt.getObjectType() == EDbObjectType.index); - } - - public void testSequence(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "RENAME sequence customer.customer_num TO c_num;"; - assertTrue(sqlparser.parse() == 0); - - TRenameStmt stmt = (TRenameStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getOldName().toString().equalsIgnoreCase("customer.customer_num")); - assertTrue(stmt.getNewName().toString().equalsIgnoreCase("c_num")); - assertTrue(stmt.getObjectType() == EDbObjectType.sequence); - } - - public void testTable(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "RENAME TABLE new_table TO items;"; - assertTrue(sqlparser.parse() == 0); - - TRenameStmt stmt = (TRenameStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getOldName().toString().equalsIgnoreCase("new_table")); - assertTrue(stmt.getNewName().toString().equalsIgnoreCase("items")); - assertTrue(stmt.getObjectType() == EDbObjectType.table); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/informixTest/testSkip.java b/src/test/java/gudusoft/gsqlparser/informixTest/testSkip.java deleted file mode 100644 index e4a031f2..00000000 --- a/src/test/java/gudusoft/gsqlparser/informixTest/testSkip.java +++ /dev/null @@ -1,34 +0,0 @@ -package gudusoft.gsqlparser.informixTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; - -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSkip extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "SELECT SKIP 2 FIRST 8 col1 FROM tab1 WHERE col1 > 50"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement stmt = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getLimitClause().getOffset().toString().equalsIgnoreCase("2")); - assertTrue(stmt.getLimitClause().getSelectFetchFirstValue().toString().equalsIgnoreCase("8")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvinformix); - sqlparser.sqltext = "SELECT SKIP 28 col1 FROM tab1 WHERE col1 > 50"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement stmt = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getLimitClause().getOffset().toString().equalsIgnoreCase("28")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testITokenHandle.java b/src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testITokenHandle.java deleted file mode 100644 index ea1e91eb..00000000 --- a/src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testITokenHandle.java +++ /dev/null @@ -1,26 +0,0 @@ -package gudusoft.gsqlparser.interfaceDemoTest; - -import gudusoft.gsqlparser.*; -import junit.framework.TestCase; - -class myTokenHandle implements ITokenHandle{ - public boolean processToken(TSourceToken st){ - - if (st.toString().equalsIgnoreCase("limit")){ - st.tokencode = TBaseType.cmtslashstar;//treat this token as a comment - } - return true; - } -} - -public class testITokenHandle extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "select * from dual limit"; - sqlparser.setTokenHandle(new myTokenHandle()); - - assertTrue(sqlparser.parse() == 0); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testIgnorePrompt.java b/src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testIgnorePrompt.java deleted file mode 100644 index 972b6a9e..00000000 --- a/src/test/java/gudusoft/gsqlparser/interfaceDemoTest/testIgnorePrompt.java +++ /dev/null @@ -1,58 +0,0 @@ -package gudusoft.gsqlparser.interfaceDemoTest; - - -import gudusoft.gsqlparser.*; -import junit.framework.TestCase; - - -class ignorePrompt implements ITokenHandle { - boolean commentToken = false; - int nested = 0; - TSourceToken prevSt = null; - - public boolean processToken(TSourceToken st){ - - if (commentToken){ - if (st.tokencode == '(') nested++; - if (st.tokencode == ')'){ - nested--; - if (nested == 0){ - commentToken = false; - } - } - st.tokencode = TBaseType.lexspace; - } - -// if (st.tokentype == ETokenType.ttsqlvar){ -// if (st.toString().equalsIgnoreCase("@Prompt")){ -// commentToken = true; -// } -// } - - if (st.toString().equalsIgnoreCase("prompt")){ - if ((prevSt != null)&&(prevSt.tokencode == '@')){ - prevSt.tokencode = TBaseType.lexspace; - commentToken = true; - } - } - - prevSt = st; - return true; - } -} - -public class testIgnorePrompt extends TestCase { - - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT Count (Distinct PREMIUM_RECEIPT.MEMBER_NUMBER) \n" + - "FROM PREMIUM_RECEIPT \n" + - "WHERE EDW_PREMIUM_RECEIPT.PREM_PAID_DATE BETWEEN @Prompt('Enter Start Date:','D',,Mono,Free,,'01/01/2000') \n" + - "AND @Prompt('Enter End Date:','D',,Mono,Free,,'01/01/2003'); "; - sqlparser.setTokenHandle(new ignorePrompt()); - - assertTrue(sqlparser.parse() == 0); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/mdxTest/testAlterCube.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testAlterCube.java deleted file mode 100644 index d2895ec1..00000000 --- a/src/test/java/gudusoft/gsqlparser/mdxTest/testAlterCube.java +++ /dev/null @@ -1,19 +0,0 @@ -package gudusoft.gsqlparser.mdxTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.mdx.TMdxAlterCube; -import junit.framework.TestCase; - -public class testAlterCube extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmdx); - sqlparser.sqltext = "ALTER CUBE CURRENTCUBE UPDATE DIMENSION Measures, Default_Member = [__No measures defined]"; - int i = sqlparser.parse(); - assertTrue( i== 0); - TMdxAlterCube alterCube = (TMdxAlterCube)sqlparser.sqlstatements.get(0); - assertTrue(alterCube.isCurrentCube()); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMeasure.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMeasure.java deleted file mode 100644 index 982e3ceb..00000000 --- a/src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMeasure.java +++ /dev/null @@ -1,29 +0,0 @@ -package gudusoft.gsqlparser.mdxTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.EFunctionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.stmt.mdx.TMdxCreateMeasure; -import junit.framework.TestCase; - -public class testCreateMeasure extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmdx); - sqlparser.sqltext = "CREATE MEASURE 'Advances'[Dec Notional]\n" + - "\t=SUMX(FILTER('Advances',Format([CalendarDate],\"MM/DD/YYYY\") =Format( \"12/31/2015\", \"MM/DD/YYYY\")), [Notional Outstanding]);\n"; - int i = sqlparser.parse(); - assertTrue( i== 0); - TMdxCreateMeasure createMeasure = (TMdxCreateMeasure)sqlparser.sqlstatements.get(0); - assertTrue(createMeasure.getTableName().equalsIgnoreCase("'Advances'")); - assertTrue(createMeasure.getMeasureName().equalsIgnoreCase("[Dec Notional]")); - TExpression daxExpression = createMeasure.getDaxExpression(); - assertTrue(daxExpression.getExpressionType() == EExpressionType.function_t); - TFunctionCall functionCall = daxExpression.getFunctionCall(); - assertTrue(functionCall.getFunctionType() == EFunctionType.sumx_t); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMember.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMember.java deleted file mode 100644 index 5328905c..00000000 --- a/src/test/java/gudusoft/gsqlparser/mdxTest/testCreateMember.java +++ /dev/null @@ -1,38 +0,0 @@ -package gudusoft.gsqlparser.mdxTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TBaseType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.mdx.TMdxAxisNode; -import gudusoft.gsqlparser.nodes.mdx.TMdxCaseNode; -import gudusoft.gsqlparser.nodes.mdx.TMdxWithMemberNode; -import gudusoft.gsqlparser.stmt.mdx.TMdxCreateMember; -import gudusoft.gsqlparser.stmt.mdx.TMdxSelect; -import junit.framework.TestCase; - - -public class testCreateMember extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmdx); - sqlparser.sqltext = "CREATE MEMBER CURRENTCUBE.Measures.[_Internet Current Quarter Sales Performance Status] \n" + - "AS 'Case When IsEmpty(KpiValue(\"Internet Current Quarter Sales Performance\")) Then Null When KpiValue(\"Internet Current Quarter Sales Performance\") < 1 Then -1 When KpiValue(\"Internet Current Quarter Sales Performance\") >= 1 And KpiValue(\"Internet Current Quarter Sales Performance\") < 1.07 Then 0 Else 1 End', \n" + - "ASSOCIATED_MEASURE_GROUP = 'Internet Sales';"; - int i = sqlparser.parse(); - assertTrue( i== 0); - TMdxCreateMember createMember = (TMdxCreateMember)sqlparser.sqlstatements.get(0); - TMdxWithMemberNode withMemberNode = createMember.getSpecification(); - - String newQuery = "select "+TBaseType.getStringInsideLiteral(withMemberNode.getExprNode().toString())+" on 1 from t"; - sqlparser.sqltext = newQuery; - i = sqlparser.parse(); - assertTrue( i== 0); - //System.out.println(sqlparser.sqlstatements.get(0).sqlstatementtype); - TMdxSelect select = (TMdxSelect)sqlparser.sqlstatements.get(0); - TMdxAxisNode axisNode = select.getAxes().getElement(0); - TMdxCaseNode caseNode = (TMdxCaseNode)axisNode.getExpNode(); - - assertTrue(caseNode.getWhenList().size() == 3); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/mdxTest/testIIF.java b/src/test/java/gudusoft/gsqlparser/mdxTest/testIIF.java deleted file mode 100644 index 9c775eac..00000000 --- a/src/test/java/gudusoft/gsqlparser/mdxTest/testIIF.java +++ /dev/null @@ -1,33 +0,0 @@ -package gudusoft.gsqlparser.mdxTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.mdx.*; -import gudusoft.gsqlparser.stmt.mdx.TMdxSelect; -import junit.framework.TestCase; - - -public class testIIF extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmdx); - sqlparser.sqltext = "select \n" + - "iif([Measures].[Orders Count]<>0, \n" + - " [Measures].[Unit Price BAD],\n" + - " 0) on 1\n" + - "from t"; - int i = sqlparser.parse(); - assertTrue( i== 0); - - TMdxSelect select = (TMdxSelect)sqlparser.sqlstatements.get(0); - TMdxAxisNode axisNode = select.getAxes().getElement(0); - TMdxFunctionNode functionNode = (TMdxFunctionNode)axisNode.getExpNode(); - assertTrue(functionNode.getArguments().size() == 3); - for(int j=0;j= 1\n" + - ";"; - - sqlparser.tokenizeSqltext(); - String outstr=""; - for(int i=0;i=,type:ttmulticharoperator,code:293\n" + - " ,type:ttwhitespace,code:259\n" + - "1,type:ttnumber,code:263\n" + - "linebreak,type:ttreturn,code:260\n" + - ";,type:ttsemicolon,code:59")); - - } - - public void test5(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmdx); - sqlparser.sqltext = "// This member returns the gross profit margin for product types\n" + - "// and reseller types crossjoined by year.\n" + - "SELECT \n" + - " [Date].[Calendar Time].[Calendar Year].Members *\n" + - " [Reseller].[Reseller Type].Children ON 0,\n" + - " [Product].[Category].[Category].Members ON 1\n" + - "FROM // Select from the Adventure Works cube.\n" + - " [Adventure Works]\n" + - "WHERE\n" + - " [Measures].[Gross Profit Margin]\n" + - ";"; - - sqlparser.tokenizeSqltext(); - String outstr=""; - for(int i=0;i\n" + - "500 Internal Server Error\n" + - "\n" + - "

Internal Server Error

\n" + - "The server encountered an internal error or\n" + - "misconfiguration and was unable to complete\n" + - "your request.

\n" + - "Please contact the server administrator to inform of the time the error occurred\n" + - "and of anything you might have done that may have\n" + - "caused the error.

\n" + - "More information about this error may be available\n" + - "in the server error log.

\n" + - "


\n" + - "
\n" + - "Web Server at website.com\n" + - "
\n" + - "\n" + - "\n" + - "\n" + - "\n" + - "')"; - - assertTrue(sqlparser.parse() == 0); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "INSERT INTO umResponse (reservationId, timestamp, cmd, response)" - + " VALUES ('1234'," - + " 20120221171116," - + " 'ADD'," - + " '\n\n500 Internal Server Error\n\n

Internal Server Error

\nThe server encountered an internal error or\nmisconfiguration and was unable to complete\nyour request.

\nPlease contact the server administrator to inform of the time the error occurred\nand of anything you might have done that may have\ncaused the error.

\nMore information about this error may be available\nin the server error log.

\n


\n
\nWeb Server at website.com\n
\n\n\n\n\n')"; - - assertTrue(sqlparser.parse() == 0); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/mysqlTest/testRollupModifier.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testRollupModifier.java deleted file mode 100644 index 033d182e..00000000 --- a/src/test/java/gudusoft/gsqlparser/mysqlTest/testRollupModifier.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.mysqlTest; -/* - * Date: 13-10-29 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TGroupBy; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testRollupModifier extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "SELECT year, SUM(profit) FROM sales GROUP BY year WITH ROLLUP;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TGroupBy groupBy = selectSqlStatement.getGroupByClause(); - assertTrue(groupBy.isRollupModifier()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/mysqlTest/testSPParameter.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testSPParameter.java deleted file mode 100644 index 707a1566..00000000 --- a/src/test/java/gudusoft/gsqlparser/mysqlTest/testSPParameter.java +++ /dev/null @@ -1,61 +0,0 @@ -package gudusoft.gsqlparser.mysqlTest; -/* - * Date: 12-5-7 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import junit.framework.TestCase; - -public class testSPParameter extends TestCase { - - public void test1(){ - //System.out.println(TBaseType.versionid); - //System.out.println(TBaseType.releaseDate); - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "CREATE DEFINER=`sa`@`%` PROCEDURE `test2`(IN `in` VARCHAR(255), OUT `out` tinyint, INOUT `inout` tinyint) BEGIN SELECT city, phone FROM offices WHERE country = `in`; END"; - -// sqlparser.sqltext = "CREATE PROCEDURE `test2`(IN `in` VARCHAR(255), OUT `out` tinyint, INOUT `inout` tinyint) \n" + -// "BEGIN \n" + -// "SELECT city, phone FROM offices WHERE country = `in`; \n" + -// "END"; - - int ret = sqlparser.parse(); - if (ret == 0) { - TCustomSqlStatement sql = sqlparser.sqlstatements.get(0); - //System.out.println("SQL Statement: " + sql.sqlstatementtype); - assertTrue(sql.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - - TCreateProcedureStmt procedure = (TCreateProcedureStmt) sql; - //System.out.println("Procedure name: " + procedure.getProcedureName().toString()); - //System.out.println("Parameters:"); - - TParameterDeclaration param0 = procedure.getParameterDeclarations().getParameterDeclarationItem(0); - TParameterDeclaration param1 = procedure.getParameterDeclarations().getParameterDeclarationItem(1); - TParameterDeclaration param2 = procedure.getParameterDeclarations().getParameterDeclarationItem(2); - assertTrue(param0.getParameterName().toString().equalsIgnoreCase("`in`")); - assertTrue(param0.getDataType().toString().equalsIgnoreCase("VARCHAR(255)")); - assertTrue(param0.getMode() == 1); - - assertTrue(param1.getParameterName().toString().equalsIgnoreCase("`out`")); - assertTrue(param1.getDataType().toString().equalsIgnoreCase("tinyint")); - assertTrue(param1.getMode() == 2); - - assertTrue(param2.getParameterName().toString().equalsIgnoreCase("`inout`")); - assertTrue(param2.getDataType().toString().equalsIgnoreCase("tinyint")); - assertTrue(param2.getMode() == 3); - - TParameterDeclaration param = null; - for (int i = 0; i < procedure.getParameterDeclarations().size(); i++) { - param = procedure.getParameterDeclarations().getParameterDeclarationItem(i); -// System.out.println("\tName:" + param.getParameterName().toString()); -// System.out.println("\tDatatype:" + param.getDataType().toString()); -// System.out.println("\tIN/OUT:" + param.getMode()); - } - } else { - System.out.println(sqlparser.getErrormessage()); - } - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/mysqlTest/testSelectModifier.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testSelectModifier.java deleted file mode 100644 index eed9bf37..00000000 --- a/src/test/java/gudusoft/gsqlparser/mysqlTest/testSelectModifier.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.mysqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSelectModifier extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "select all high_priority straight_join sql_small_result sql_big_result sql_buffer_result sql_no_cache sql_calc_found_rows name from t5;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().size() == 1); - assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("name")); - assertTrue(select.getTables().getTable(0).toString().equalsIgnoreCase("t5")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/mysqlTest/testSet.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testSet.java deleted file mode 100644 index 2ed1ac49..00000000 --- a/src/test/java/gudusoft/gsqlparser/mysqlTest/testSet.java +++ /dev/null @@ -1,88 +0,0 @@ -package gudusoft.gsqlparser.mysqlTest; -/* - * Date: 13-10-25 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TSetAssignment; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import gudusoft.gsqlparser.stmt.TSetStmt; -import gudusoft.gsqlparser.stmt.mysql.TMySQLIfStmt; -import junit.framework.TestCase; - -public class testSet extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "SET sort_buffer_size=10000;"; - assertTrue(sqlparser.parse() == 0); - - TSetStmt set = (TSetStmt)sqlparser.sqlstatements.get(0); - assertTrue(set.getAssignments().getElement(0).getParameterName().toString().equalsIgnoreCase("sort_buffer_size")); - assertTrue(set.getAssignments().getElement(0).getParameterValue().toString().equalsIgnoreCase("10000")); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000;"; - assertTrue(sqlparser.parse() == 0); - - TSetStmt set = (TSetStmt)sqlparser.sqlstatements.get(0); - assertTrue(set.getSetStatementType() == ESetStatementType.variable); - TSetAssignment assignment = set.getAssignments().getElement(0); - assertTrue(assignment.getSetScope() == ESetScope.global); - assignment = set.getAssignments().getElement(1); - assertTrue(assignment.getSetScope() == ESetScope.session); - - assertTrue(set.getAssignments().getElement(0).getParameterName().toString().equalsIgnoreCase("sort_buffer_size")); - assertTrue(set.getAssignments().getElement(0).getParameterValue().toString().equalsIgnoreCase("1000000")); - - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "SET PASSWORD FOR 'bob'@'%.example.org' = PASSWORD('cleartext password');"; - assertTrue(sqlparser.parse() == 0); - - TSetStmt set = (TSetStmt)sqlparser.sqlstatements.get(0); - assertTrue(set.getSetStatementType() == ESetStatementType.password); - - assertTrue(set.getUserName().toString().equalsIgnoreCase("'bob'@'%.example.org'")); - assertTrue(set.getPassword().toString().equalsIgnoreCase("'cleartext password'")); - } - - public void test4(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "CREATE PROCEDURE proc1(p1 INT)\n" + - " READS SQL DATA\n" + - " DETERMINISTIC\n" + - "BEGIN\n" + - "IF p1 = -1 THEN\n" + - " SET p1 = 10;\n" + - "END IF;\n" + - "END;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(createProcedure.getBodyStatements().size() == 1); - assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstmysqlifstmt); - TMySQLIfStmt ifStmt = (TMySQLIfStmt)createProcedure.getBodyStatements().get(0); - assertTrue(ifStmt.getCondition().toString().equalsIgnoreCase("p1 = -1")); - TSetStmt set = (TSetStmt)ifStmt.getThenStmts().get(0); - assertTrue(set.getSetStatementType() == ESetStatementType.variable); -// TSetAssignment setAssignment = set.getAssignments().getElement(0); -// -// TExpression expression = setAssignment.getExpression(); -// assertTrue(expression.getExpressionType() == EExpressionType.assignment_t); -// assertTrue(expression.getLeftOperand().toString().equalsIgnoreCase("p1")); -// assertTrue(expression.getRightOperand().toString().equalsIgnoreCase("10")); - - assertTrue(set.getAssignments().getElement(0).getParameterName().toString().equalsIgnoreCase("p1")); - assertTrue(set.getAssignments().getElement(0).getParameterValue().toString().equalsIgnoreCase("10")); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/mysqlTest/testShowIndex.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testShowIndex.java deleted file mode 100644 index fe881166..00000000 --- a/src/test/java/gudusoft/gsqlparser/mysqlTest/testShowIndex.java +++ /dev/null @@ -1,33 +0,0 @@ -package gudusoft.gsqlparser.mysqlTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.mysql.TShowIndexStmt; -import junit.framework.TestCase; - -public class testShowIndex extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "SHOW INDEXES FROM pet WHERE key_name = \"test_index\";"; - assertTrue(sqlparser.parse() == 0); - - TShowIndexStmt showIndexStmt = (TShowIndexStmt)sqlparser.sqlstatements.get(0); - assertTrue(showIndexStmt.getTableName().toString().equalsIgnoreCase("pet")); - assertTrue(showIndexStmt.getWhereCondition().toString().equalsIgnoreCase("key_name = \"test_index\"")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "SHOW INDEX FROM mytable FROM mydb"; - assertTrue(sqlparser.parse() == 0); - - TShowIndexStmt showIndexStmt = (TShowIndexStmt)sqlparser.sqlstatements.get(0); - assertTrue(showIndexStmt.getTableName().toString().equalsIgnoreCase("mytable")); - assertTrue(showIndexStmt.getDbName().toString().equalsIgnoreCase("mydb")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/mysqlTest/testTimestampOnUpdate.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testTimestampOnUpdate.java deleted file mode 100644 index ce52b7ed..00000000 --- a/src/test/java/gudusoft/gsqlparser/mysqlTest/testTimestampOnUpdate.java +++ /dev/null @@ -1,36 +0,0 @@ -package gudusoft.gsqlparser.mysqlTest; -/* - * Date: 12-3-30 - */ - -import gudusoft.gsqlparser.EConstraintType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testTimestampOnUpdate extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "CREATE TABLE test_table (pk_id bigint(10) unsigned NOT NULL auto_increment, \n" + - "last_update timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, \n" + - "PRIMARY KEY (pk_id)) ENGINE=InnoDB"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition columnDefinition = createTableSqlStatement.getColumnList().getColumn(1); - assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("last_update")); - assertTrue(columnDefinition.getConstraints().getConstraint(0).toString().equalsIgnoreCase("NOT NULL")); - TConstraint constraint = columnDefinition.getConstraints().getConstraint(1); - assertTrue(constraint.getConstraint_type() == EConstraintType.default_value); - assertTrue(constraint.getDefaultExpression().toString().equalsIgnoreCase("CURRENT_TIMESTAMP")); - TAutomaticProperty automaticProperty0 = constraint.getAutomaticProperties().getElement(0); -// assertTrue(automaticProperty0.toString().equalsIgnoreCase("CURRENT_TIMESTAMP")); -// TAutomaticProperty automaticProperty1 = constraint.getAutomaticProperties().getElement(1); - assertTrue(automaticProperty0.toString().equalsIgnoreCase("on update CURRENT_TIMESTAMP")); - - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/mysqlTest/testTruncateTable.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testTruncateTable.java deleted file mode 100644 index 0fa8e2a8..00000000 --- a/src/test/java/gudusoft/gsqlparser/mysqlTest/testTruncateTable.java +++ /dev/null @@ -1,30 +0,0 @@ -package gudusoft.gsqlparser.mysqlTest; -/* - * Date: 13-3-25 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TTruncateStatement; -import junit.framework.TestCase; - -public class testTruncateTable extends TestCase { - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "truncate table a;"; - assertTrue(sqlparser.parse() == 0); - - TTruncateStatement statement = (TTruncateStatement)sqlparser.sqlstatements.get(0); - assertTrue(statement.getTableName().toString().equalsIgnoreCase("a")); - - sqlparser.sqltext = "TRUNCATE tbl_overridedescriptionrule;"; - assertTrue(sqlparser.parse() == 0); - - statement = (TTruncateStatement)sqlparser.sqlstatements.get(0); - assertTrue(statement.getTableName().toString().equalsIgnoreCase("tbl_overridedescriptionrule")); - //assertTrue(statement.getTargetTable().toString().equalsIgnoreCase("a")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/mysqlTest/testUpdateTargetTable.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testUpdateTargetTable.java deleted file mode 100644 index ff095362..00000000 --- a/src/test/java/gudusoft/gsqlparser/mysqlTest/testUpdateTargetTable.java +++ /dev/null @@ -1,42 +0,0 @@ -package gudusoft.gsqlparser.mysqlTest; -/* - * Date: 12-3-9 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TJoinItem; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import junit.framework.TestCase; - -public class testUpdateTargetTable extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "UPDATE table1 a\n" + - " INNER JOIN table2 b ON(a.field0=b.field0)\n" + - " SET a.field1 = 20120221\n" + - " WHERE b.field1 = 'D'\n" + - " AND b.field2 BETWEEN 20120217 and 20120219\n" + - " AND b.field3 != 0"; - assertTrue(sqlparser.parse() == 0); - - TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(updateSqlStatement.getTargetTable().getFullName().equalsIgnoreCase("table1")); - TJoinItem joinItem = updateSqlStatement.joins.getJoin(0).getJoinItems().getJoinItem(0); - assertTrue(joinItem.getJoinType().toString().equalsIgnoreCase("inner")); - assertTrue(joinItem.getTable().toString().equalsIgnoreCase("table2")); - assertTrue(joinItem.getOnCondition().toString().equalsIgnoreCase("(a.field0=b.field0)")); - } - - public void testModifier(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "update low_priority ignore t5 set name='B' where id=1"; - assertTrue(sqlparser.parse() == 0); - - TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(updateSqlStatement.getTargetTable().getFullName().equalsIgnoreCase("t5")); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/mysqlTest/testUseDatabase.java b/src/test/java/gudusoft/gsqlparser/mysqlTest/testUseDatabase.java deleted file mode 100644 index d6de31e8..00000000 --- a/src/test/java/gudusoft/gsqlparser/mysqlTest/testUseDatabase.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.mysqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TUseDatabase; -import junit.framework.TestCase; - - -public class testUseDatabase extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql); - sqlparser.sqltext = "use dbname"; - assertTrue(sqlparser.parse() == 0); - - TUseDatabase use = (TUseDatabase)sqlparser.sqlstatements.get(0); - assertTrue(use.getDatabaseName().toString().equalsIgnoreCase("dbname")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testAlterTable.java deleted file mode 100644 index 48bcd5f4..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testAlterTable.java +++ /dev/null @@ -1,41 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; -/* - * Date: 14-7-29 - */ - -import gudusoft.gsqlparser.EAlterTableOptionType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TAlterTableOption; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import junit.framework.TestCase; - -public class testAlterTable extends TestCase { - - public void testRenameTable(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "ALTER TABLE X RENAME TO Y;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("X")); - - TAlterTableOption ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.RenameTable); - assertTrue(ato.getNewTableName().toString().equalsIgnoreCase("Y")); - - sqlparser.sqltext = "ALTER TABLE EVRST_HIST_NK..CLC_D_ACCOUNT_STATUS_HIER RENAME TO EVRST_HIST_NK..CLC_D_ACCOUNT_STATUS_HIER_ARCH"; - assertTrue(sqlparser.parse() == 0); - - alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("EVRST_HIST_NK..CLC_D_ACCOUNT_STATUS_HIER")); - - ato = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(ato.getOptionType() == EAlterTableOptionType.RenameTable); - assertTrue(ato.getNewTableName().toString().equalsIgnoreCase("EVRST_HIST_NK..CLC_D_ACCOUNT_STATUS_HIER_ARCH")); - - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInCreateView.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInCreateView.java deleted file mode 100644 index 596a0b81..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInCreateView.java +++ /dev/null @@ -1,202 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; -/* - * Date: 14-10-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCTEInCreateView extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE OR REPLACE VIEW FCT_PI_CLAIM_EVENTS_IMPACT_SUMMARY_INSIGHT AS \n" + - "\n" + - "WITH CLAIM_LODGEMENT AS (\n" + - "\n" + - " SELECT CLAIM_ID\n" + - "\t , EVENT_TS AS LODGEMENT_TIMESTAMP\n" + - " FROM (\t\n" + - "\t \n" + - " SELECT \n" + - " CCR_CC_HISTORY.CLAIMID AS CLAIM_ID\n" + - " , CCR_CC_HISTORY.EVENTTIMESTAMP AS EVENT_TS \n" + - "\t , ROW_NUMBER() OVER (PARTITION BY CLAIMID \n" + - "\t ORDER BY CCR_CC_HISTORY.EVENTTIMESTAMP DESC\n" + - "\t\t\t\t\t\t\t , CCR_CC_HISTORY.ID DESC)\n" + - "\t\t\t\t\t\t\t AS OPEN_EVENT_DESC_SEQ\t \n" + - " FROM CCR_CC_HISTORY CCR_CC_HISTORY\n" + - " \n" + - " LEFT JOIN (\n" + - " \tSELECT CCR_CC_TRANSACTION.CLAIMID AS CLAIM_ID\n" + - " , MIN(CCR_CC_TRANSACTION.CREATETIME) AS ACTIVATION_DATETIME\n" + - " FROM CCR_CC_TRANSACTION CCR_CC_TRANSACTION \n" + - " GROUP BY CCR_CC_TRANSACTION.CLAIMID \t\t\t\t\t \n" + - "\t ) CLAIM_ACTIVATION\n" + - "\t\t \n" + - " ON CLAIM_ACTIVATION.CLAIM_ID\t = CCR_CC_HISTORY.CLAIMID\n" + - " \n" + - " JOIN CCR_CCTL_HISTORYTYPE CCR_CCTL_HISTORYTYPE\n" + - " ON CCR_CCTL_HISTORYTYPE.ID = CCR_CC_HISTORY.\"xxxx\"\n" + - " AND CCR_CCTL_HISTORYTYPE.NAME IN ('xxxx', 'xxxx') \n" + - " AND CCR_CC_HISTORY.EXPOSUREID IS NULL \n" + - "\n" + - " WHERE CCR_CC_HISTORY.EVENTTIMESTAMP <= COALESCE(ACTIVATION_DATETIME, CCR_CC_HISTORY.EVENTTIMESTAMP) \n" + - "\t \n" + - ") AS OPEN_REOPEN_DATES\n" + - "\n" + - " WHERE OPEN_EVENT_DESC_SEQ = 1\n" + - "\n" + - ")\n" + - ", TRANSACTION_SUMMARY AS (\n" + - "\n" + - "SELECT *\n" + - "FROM INT_PI_CLAIM_FINANCIALS_LIVE\n" + - "\n" + - ")\n" + - " SELECT \n" + - " CCR_CC_CLAIM.ID AS CLAIM_ID\n" + - "\t\t, CCR_CC_CLAIM.CLAIMNUMBER AS CLAIM_NUMBER\n" + - "\t\t, CCR_CC_POLICY.POLICYNUMBER AS POLICY_NUMBER\n" + - "\t\t\n" + - "\t\t \n" + - "\t\t, CCR_CCTL_SC_BRAND.NAME AS BRAND\n" + - "\t\t, CCR_CC_CATASTROPHE.NAME AS CATASTROPHE_NAME \n" + - " , CCR_CC_CATASTROPHE.CATASTROPHENUMBER AS CATASTROPHE_CODE\n" + - "\t , CCR_CCTL_SC_CLAIMTYPE.NAME AS CLAIM_TYPE\t\n" + - "\t\t, DATE(CCR_CC_CLAIM.CLOSEDATE) AS CLOSED_DATE\t \n" + - "\t\t, INT_PI_CLAIM_EVENT.EVENT_NAME AS EVENT_NAME\n" + - "\t , CCR_CCTL_SC_CLAIMPRIORITY.NAME AS HOME_CLAIM_CATEGORY\n" + - " , DATE(CLAIM_LODGEMENT.LODGEMENT_TIMESTAMP) AS LODGEMENT_DATE\n" + - "\t\t, DATE(CLAIM_LODGEMENT.LODGEMENT_TIMESTAMP) AS LODGEMENT_TIME\t\t\n" + - "\t\t, COALESCE(CCR_CCTL_SC_LOSSCAUSE.NAME, CCR_CCTL_LOSSCAUSE.NAME)\n" + - "\t\t AS LOSS_CAUSE\t\t\n" + - "\t\t, DATE(CCR_CC_CLAIM.LOSSDATE) AS LOSS_DATE\n" + - "\n" + - "\t , CCR_CC_ADDRESS_LOSS.POSTALCODE AS LOSS_POSTCODE\n" + - "\t , CCR_CCX_SC_PAFPOSTCODES.LOCALITY AS LOSS_POSTCODE_LABEL\t \n" + - "\t , UPPER(CCR_CC_ADDRESS_LOSS.CITY) AS LOSS_SUBURB\n" + - "\t , CCR_CCTL_STATE_LOSS.NAME AS LOSS_STATE\n" + - "\t , CASE WHEN CCR_CCTL_LOSSTYPE.NAME = 'xxxx' \n" + - "\t\t THEN 'Home' \n" + - "\t\t\t ELSE CCR_CCTL_LOSSTYPE.NAME \n" + - "\t\t END AS LOSS_TYPE\n" + - "\t , CAST(CASE WHEN CCR_CCTL_LOSSTYPE.TYPECODE = 'xxxx' \n" + - "\t AND CCR_CCTL_SC_BRAND.TYPECODE = 'xxxx' \n" + - "\t\t \t THEN 'xxxx'\n" + - "\t WHEN CCR_CCTL_LOSSTYPE.TYPECODE = 'xxxx' \n" + - "\t\t\t AND CCR_CCTL_VEHICLESTYLE.TYPECODE IN ('xxxx','xxxx','xxxx','xxxx') \n" + - "\t\t\t THEN 'xxxx'\n" + - "\t\t\t ELSE 'xxxx'\n" + - "\t END AS CHAR(1)) AS SPECIALIST_CLAIM_FLAG\t\n" + - "\t , CAST(CASE WHEN CCR_CC_INCIDENT.VEHICLEOPERABLE = 0 \n" + - "\t THEN 'xxxx' \n" + - "\t\t\t ELSE 'xxxx' \n" + - "\t\t END AS CHAR(1)) AS VEHICLE_DRIVABLE_FLAG\n" + - "\t \t\t \n" + - "\n" + - " \n" + - "\t , CAST(1 AS INTEGER) AS CLAIM_VOLUME\n" + - "\t , TRANSACTION_SUMMARY.NET_INCURRED_EX_GST \n" + - "\t , TRANSACTION_SUMMARY.NET_INCURRED AS SYSTEM_COST\t\t\n" + - "\t \n" + - "\t \n" + - "\t , CCR_CC_CLAIM_MAXTS.MAX_COMMIT_TIMESTAMP\n" + - " \n" + - " FROM CCR_CC_CLAIM CCR_CC_CLAIM\n" + - "\t \n" + - "\t JOIN TRANSACTION_SUMMARY TRANSACTION_SUMMARY\n" + - "\t ON TRANSACTION_SUMMARY.CLAIM_ID = CCR_CC_CLAIM.ID\n" + - "\t\t \n" + - " JOIN CCR_CC_POLICY CCR_CC_POLICY\n" + - " ON CCR_CC_CLAIM.POLICYID = CCR_CC_POLICY.ID\n" + - " \n" + - " JOIN CCR_CCTL_SC_BRAND CCR_CCTL_SC_BRAND\n" + - " ON CCR_CCTL_SC_BRAND.ID = CCR_CC_POLICY.SC_BRAND \t \n" + - "\t \n" + - " JOIN CCR_CCTL_LOSSTYPE CCR_CCTL_LOSSTYPE\n" + - " ON CCR_CC_CLAIM.LOSSTYPE = CCR_CCTL_LOSSTYPE.ID\t \n" + - "\t \n" + - " JOIN CCR_CC_ADDRESS CCR_CC_ADDRESS_LOSS\n" + - " ON CCR_CC_ADDRESS_LOSS.ID = CCR_CC_CLAIM.LOSSLOCATIONID \n" + - "\t \n" + - " JOIN CCR_CCTL_STATE CCR_CCTL_STATE_LOSS\n" + - " ON CCR_CC_ADDRESS_LOSS.STATE = CCR_CCTL_STATE_LOSS.ID\t \n" + - "\t \n" + - "\t \n" + - " JOIN (\n" + - "\t SELECT POSTCODE\n" + - "\t\t , LOCALITY\n" + - "\t\t\t , ROW_NUMBER() OVER (PARTITION BY POSTCODE \n" + - "\t\t\t ORDER BY LOCALITY) \n" + - "\t\t\t\t\t\t\t\t\t\t AS ALPHA_ORDER \n" + - "\t FROM CCR_CCX_SC_PAFPOSTCODES\n" + - "\t\t ) CCR_CCX_SC_PAFPOSTCODES\n" + - "\t\t \n" + - " ON CCR_CCX_SC_PAFPOSTCODES.POSTCODE = CCR_CC_ADDRESS_LOSS.POSTALCODE\n" + - " AND CCR_CCX_SC_PAFPOSTCODES.ALPHA_ORDER = 1 \t \n" + - "\t \n" + - " JOIN (SELECT MAX(COMMIT_TIMESTAMP) AS MAX_COMMIT_TIMESTAMP FROM CCR_CC_CLAIM) CCR_CC_CLAIM_MAXTS\n" + - "\t ON 1=1\n" + - "\t \n" + - "LEFT JOIN CCR_CCTL_LOSSCAUSE CCR_CCTL_SC_LOSSCAUSE\n" + - " ON CCR_CCTL_SC_LOSSCAUSE.ID = CCR_CC_CLAIM.SC_LOSSCAUSE \n" + - "\t \n" + - "LEFT JOIN CCR_CCTL_LOSSCAUSE CCR_CCTL_LOSSCAUSE\n" + - " ON CCR_CCTL_LOSSCAUSE.ID = CCR_CC_CLAIM.LOSSCAUSE \n" + - " \n" + - "LEFT JOIN CCR_CCTL_SC_YESNOONLY CCR_CCTL_SC_YESNOONLY\n" + - " ON CCR_CCTL_SC_YESNOONLY.ID = CCR_CC_CLAIM.SC_INCIDENTREPORT\n" + - "\t \n" + - "LEFT JOIN CLAIM_LODGEMENT CLAIM_LODGEMENT\t\t \n" + - " ON CLAIM_LODGEMENT.CLAIM_ID = CCR_CC_CLAIM.ID\n" + - "\t\t\n" + - "LEFT JOIN CCR_CC_CATASTROPHE CCR_CC_CATASTROPHE\n" + - " ON CCR_CC_CATASTROPHE.ID = CCR_CC_CLAIM.CATASTROPHEID \t\n" + - "\t \n" + - "LEFT JOIN INT_PI_CLAIM_EVENT INT_PI_CLAIM_EVENT\n" + - " ON INT_PI_CLAIM_EVENT.CLAIM_ID = CCR_CC_CLAIM.ID\n" + - "\t \n" + - "LEFT JOIN CCR_CC_INCIDENT CCR_CC_INCIDENT\n" + - " ON CCR_CC_INCIDENT.CLAIMID = CCR_CC_CLAIM.ID\n" + - "\n" + - "LEFT JOIN CCR_CCTL_LOSSPARTYTYPE CCR_CCTL_LOSSPARTYTYPE_PR\n" + - " ON CCR_CCTL_LOSSPARTYTYPE_PR.ID = CCR_CC_INCIDENT.SC_LOSSPARTY\n" + - "\t \n" + - "LEFT JOIN CCR_CCTL_LOSSPARTYTYPE CCR_CCTL_LOSSPARTYTYPE_AUTO\n" + - " ON CCR_CCTL_LOSSPARTYTYPE_AUTO.ID = CCR_CC_INCIDENT.VEHICLELOSSPARTY\t \n" + - "\t \n" + - "LEFT JOIN CCR_CC_VEHICLE CCR_CC_VEHICLE\n" + - " ON CCR_CC_VEHICLE.ID = CCR_CC_INCIDENT.VEHICLEID\n" + - "\t \n" + - "LEFT JOIN CCR_CCTL_VEHICLESTYLE CCR_CCTL_VEHICLESTYLE\n" + - " ON CCR_CCTL_VEHICLESTYLE.ID = CCR_CC_VEHICLE.STYLE \t \n" + - "\t \n" + - "LEFT JOIN CCR_CCTL_SC_CLAIMPRIORITY CCR_CCTL_SC_CLAIMPRIORITY\n" + - " ON CCR_CCTL_SC_CLAIMPRIORITY.ID = CCR_CC_CLAIM.SC_USERCLAIMPRIORITY\n" + - "\n" + - "LEFT JOIN CCR_CCTL_SC_CLAIMTYPE CCR_CCTL_SC_CLAIMTYPE\n" + - " ON CCR_CCTL_SC_CLAIMTYPE.ID\t = CCR_CC_CLAIM.SC_CLAIMTYPE \t \t \n" + - "\n" + - " WHERE CCR_CC_CLAIM.RETIRED = 0\n" + - " AND CCR_CC_POLICY.RETIRED = 0\n" + - "\t \n" + - "\t AND COALESCE(CCR_CCTL_SC_YESNOONLY.NAME,'xxxx') <> 'xxxx'\n" + - "\t \n" + - "\t AND ( CCR_CCTL_LOSSTYPE.TYPECODE = 'xxxx' \n" + - "\t OR ( CCR_CCTL_LOSSPARTYTYPE_AUTO.TYPECODE = 'xxxx' AND CCR_CCTL_LOSSTYPE.TYPECODE = 'xxxx')\n" + - "\t\t )\n" + - "\t\t \t \n" + - ";"; - assertTrue(sqlparser.parse() == 0); - TCreateViewSqlStatement viewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(viewSqlStatement.getViewName().toString().equalsIgnoreCase("FCT_PI_CLAIM_EVENTS_IMPACT_SUMMARY_INSIGHT")); - TSelectSqlStatement select = viewSqlStatement.getSubquery(); - assertTrue(select.getCteList().size() == 2); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInInsert.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInInsert.java deleted file mode 100644 index 22562676..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testCTEInInsert.java +++ /dev/null @@ -1,28 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TCTE; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCTEInInsert extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "INSERT INTO NZ_FOODMART.ADMIN.Test5(id, name, bool_data)\n" + - " WITH NewCTE as (SELECT 1 as employee_id, 'dm' as first_name, true as bool_data)\n" + - " select employee_id, first_name, bool_data from NewCTE;"; - assertTrue(sqlparser.parse() == 0); - TInsertSqlStatement tInsertSqlStatement = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = tInsertSqlStatement.getSubQuery(); - assertTrue(select.getCteList().size() == 1); - TCTE cte = select.getCteList().getCTE(0); - assertTrue(cte.getTableName().toString().equalsIgnoreCase("NewCTE")); - assertTrue(cte.getSubquery().getStartToken().toString().equalsIgnoreCase("SELECT")); - assertTrue(cte.getSubquery().getEndToken().toString().equalsIgnoreCase("bool_data")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateExternalTable.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateExternalTable.java deleted file mode 100644 index 9840a20d..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateExternalTable.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateExternalTable extends TestCase { - - public void testCreateTable1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (delimiter ',') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("'/export/home/nz/student.csv'")); - assertTrue(createTableSqlStatement.getSubQuery().getTables().getTable(0).getTableName().toString().equalsIgnoreCase("student")); - assertTrue(createTableSqlStatement.getExternalTableOption().getOptionText().equalsIgnoreCase("USING (delimiter ',')")); - } - -} - diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateProcedure.java deleted file mode 100644 index 3e9a73b5..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testCreateProcedure.java +++ /dev/null @@ -1,65 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import junit.framework.TestCase; - -public class testCreateProcedure extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_p() RETURNS INT4 LANGUAGE NZPLSQL AS\n" + - " BEGIN_PROC\n" + - " DECLARE\n" + - " words varchar;\n" + - " BEGIN\n" + - " words := 'This string is quoted';\n" + - " -- This comment is the match for below BEGIN_PROC\n" + - " insert into va values ('END_PROC');\n" + - " END;\n" + - " END_PROC;"; - - assertTrue(sqlparser.parse() == 0); - TCreateProcedureStmt createProcedureStmt = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(createProcedureStmt.getProcedureName().toString().equalsIgnoreCase("test_p")); - assertTrue(createProcedureStmt.getReturnDataType().getDataType() == EDataType.int4_t); - assertTrue(createProcedureStmt.getBodyStatements().size() == 2); - assertTrue(createProcedureStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sst_assignstmt); - assertTrue(createProcedureStmt.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstinsert); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE exec_nzplsql_block(text) RETURNS BOOLEAN\n" + - "LANGUAGE NZPLSQL AS\n" + - "BEGIN_PROC\n" + - " DECLARE lRet BOOLEAN;\n" + - " DECLARE sid INTEGER;\n" + - " DECLARE nm varchar;\n" + - " DECLARE cr varchar;\n" + - "BEGIN\n" + - " sid := current_sid;\n" + - " nm := 'any_block' || sid || '()';\n" + - " cr = 'CREATE OR REPLACE PROCEDURE ' || nm ||\n" + - " ' RETURNS BOOL LANGUAGE NZPLSQL AS BEGIN_PROC '\n" + - " || \\$1 || ' END_PROC';\n" + - " EXECUTE IMMEDIATE cr;\n" + - " EXECUTE IMMEDIATE 'SELECT ' || nm;\n" + - " EXECUTE IMMEDIATE 'DROP PROCEDURE ' || nm;\n" + - " RETURN TRUE;\n" + - "END;\n" + - "END_PROC;"; - assertTrue(sqlparser.parse() == 0); - TCreateProcedureStmt createProcedureStmt = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(createProcedureStmt.getProcedureName().toString().equalsIgnoreCase("exec_nzplsql_block")); - assertTrue(createProcedureStmt.getReturnDataType().getDataType() == EDataType.bool_t); - //System.out.println(createProcedureStmt.getReturnDataType().getDataType()); - assertTrue(createProcedureStmt.getBodyStatements().size() == 7); - assertTrue(createProcedureStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sst_assignstmt); - assertTrue(createProcedureStmt.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstplsql_execimmestmt); - //System.out.println(createProcedureStmt.getBodyStatements().get(3).sqlstatementtype); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testDropSchema.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testDropSchema.java deleted file mode 100644 index b0eee23a..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testDropSchema.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropSchemaSqlStatement; -import junit.framework.TestCase; - -public class testDropSchema extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "drop schema temp_schema cascade;"; - assertTrue(sqlparser.parse() == 0); - TDropSchemaSqlStatement dropSchemaSqlStatement = (TDropSchemaSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(dropSchemaSqlStatement.getSchemaName().toString().equalsIgnoreCase("temp_schema")); - if (dropSchemaSqlStatement.getDropBehavior() != null){ - assertTrue(dropSchemaSqlStatement.getDropBehavior().toString().equalsIgnoreCase("cascade")); - } - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testExternalTableOption.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testExternalTableOption.java deleted file mode 100644 index 31fa1727..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testExternalTableOption.java +++ /dev/null @@ -1,404 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.netezza.TExternalTableOption; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testExternalTableOption extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (delimiter ',') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDelimiter().equals(",")); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE ext_orders (ord_num INT, ord_dt TIMESTAMP) USING(dataobject('/tmp/order.tbl') \n DELIMITER '|');"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDelimiter().equals("|")); - } - - public void test3() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "create external table EXTERNALTABLENAMEHERE (\n" + - " tbl_id bigint, \n" + - " date_entered timestamp,\n" + - " name_of_stuff varchar(100),\n" + - " spend_amt numeric(16,2)\n" + - " )\n" + - "USING (\n" + - " DATAOBJECT('C:\\Data Sources\\some_random_file.txt') \n" + - " REMOTESOURCE 'odbc'\n" + - " DELIMITER '~'\n" + - " SKIPROWS 1\n" + - " MAXERRORS 1000\n" + - " LOGDIR 'C:\\\\' );\n"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDelimiter().equals("~")); - } - - public void test4() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "create external table EXTERNALTABLENAMEHERE (\n" + - " tbl_id bigint, \n" + - " date_entered timestamp,\n" + - " name_of_stuff varchar(100),\n" + - " spend_amt numeric(16,2)\n" + - " )\n" + - "USING (\n" + - " DATAOBJECT('C:\\Data Sources\\some_random_file.txt') \n" + - " REMOTESOURCE 'odbc'\n" + - " DELIMITER '\''\n" + - " SKIPROWS 1\n" + - " MAXERRORS 1000\n" + - " LOGDIR 'C:\\\\' );\n"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDelimiter().equals("'")); - } - - public void test5() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "create external table EXTERNALTABLENAMEHERE (\n" + - " tbl_id bigint, \n" + - " date_entered timestamp,\n" + - " name_of_stuff varchar(100),\n" + - " spend_amt numeric(16,2)\n" + - " )\n" + - "USING (\n" + - " DATAOBJECT('C:\\Data Sources\\some_random_file.txt') \n" + - " REMOTESOURCE 'odbc'\n" + - " DELIMITER '\"'\n" + - " SKIPROWS 1\n" + - " MAXERRORS 1000\n" + - " LOGDIR 'C:\\\\' );\n"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDelimiter().equals("\"")); - } - - public void test6() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "create external table EXTERNALTABLENAMEHERE (\n" + - " tbl_id bigint, \n" + - " date_entered timestamp,\n" + - " name_of_stuff varchar(100),\n" + - " spend_amt numeric(16,2)\n" + - " )\n" + - "USING (\n" + - " DATAOBJECT('C:\\Data Sources\\some_random_file.txt') \n" + - " REMOTESOURCE 'odbc'\n" + - " DELIMITER '\t'\n" + - " SKIPROWS 1\n" + - " MAXERRORS 1000\n" + - " LOGDIR 'C:\\\\' );\n"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDelimiter().equals("\t")); - } - - public void test7() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "create external table EXTERNALTABLENAMEHERE (\n" + - " tbl_id bigint, \n" + - " date_entered timestamp,\n" + - " name_of_stuff varchar(100),\n" + - " spend_amt numeric(16,2)\n" + - " )\n" + - "USING (\n" + - " DATAOBJECT('C:\\Data Sources\\some_random_file.txt') \n" + - " REMOTESOURCE 'odbc'\n" + - " DELIMITER '\n'\n" + - " SKIPROWS 1\n" + - " MAXERRORS 1000\n" + - " LOGDIR 'C:\\\\' );\n"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDelimiter().equals("\n")); - } - - public void test8() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "create external table EXTERNALTABLENAMEHERE (\n" + - " tbl_id bigint, \n" + - " date_entered timestamp,\n" + - " name_of_stuff varchar(100),\n" + - " spend_amt numeric(16,2)\n" + - " )\n" + - "USING (\n" + - " DATAOBJECT('C:\\Data Sources\\some_random_file.txt') \n" + - " REMOTESOURCE 'odbc'\n" + - " DELIMITER 124\n" + - " SKIPROWS 1\n" + - " MAXERRORS 1000\n" + - " LOGDIR 'C:\\\\' );\n"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDelimiter().equals("124")); - } - - public void test9() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "create external table EXTERNALTABLENAMEHERE (\n" + - " tbl_id bigint, \n" + - " date_entered timestamp,\n" + - " name_of_stuff varchar(100),\n" + - " spend_amt numeric(16,2)\n" + - " )\n" + - "USING (\n" + - " DATAOBJECT('C:\\Data Sources\\some_random_file.txt') \n" + - " REMOTESOURCE 'odbc'\n" + - " DELIMITER 0xef\n" + - " SKIPROWS 1\n" + - " MAXERRORS 1000\n" + - " LOGDIR 'C:\\\\' );\n"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDelimiter().equals("0xef")); - } - - public void test10() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE ext_orders (ord_num INT, ord_dt TIMESTAMP) USING(dataobject('/tmp/order.tbl') DELIMITER '|' DATEDELIM ' ');"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDateDelim().equals(" ")); - } - - public void test11() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE ext_orders (ord_num INT, ord_dt TIMESTAMP) USING(dataobject('/tmp/order.tbl') DELIMITER '|' DATEDELIM '-');"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDateDelim().equals("-")); - } - - public void test12() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE ext_orders (ord_num INT, ord_dt TIMESTAMP) USING(dataobject('/tmp/order.tbl') \n DELIMITER '|' DATEDELIM '/');"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDateDelim().equals("/")); - } - - public void test13() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE ext_orders (ord_num INT, ord_dt TIMESTAMP) USING(dataobject('/tmp/order.tbl') DELIMITER '|' DATEDELIM ' 12');"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDateDelim().equals(" 12")); - } - - public void test14() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE ext_orders (ord_num INT, ord_dt TIMESTAMP) USING(dataobject('/tmp/order.tbl') DELIMITER '|' DATEDELIM ' 12' LOGDIR '/data/data/HAGDEMO/temp/' RecordDelim '\n\r');"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getRecordDelim().equals("\n\r")); - } - - public void test15() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE ext_orders (ord_num INT, ord_dt TIMESTAMP) USING(dataobject('/tmp/order.tbl') DELIMITER '|' DATEDELIM ' 12' LOGDIR '/data/data/HAGDEMO/temp/' RecordDelim '\r\n');"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getRecordDelim().equals("\r\n")); - } - - public void test16() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE ext_orders (ord_num INT, ord_dt TIMESTAMP) USING(dataobject('/tmp/order.tbl') DELIMITER '|' DATEDELIM ' 12' LOGDIR '/data/data/HAGDEMO/temp/' RecordDelim '\r\n' timeDelim ':');"; - assertEquals(0, sqlparser.parse()); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertEquals(":", tExternalTableOption.getTimeDelim()); - } - - public void test17() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (delimiter 'A') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDelimiter().equals("A")); - } - - public void test18() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (delimiter 'a') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDelimiter().equals("a")); - } - - public void test19() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING ( compress 'zlib' delimiter 'a') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getCompress().equals("zlib")); - } - - public void test20() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (compress true delimiter 'a') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getCompress().equals("true")); - } - - public void test21() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (CRinString 'true' delimiter 'a') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getcRinString()); - } - - public void test22() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (CRinString 'on' delimiter 'a') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getcRinString()); - } - - public void test23() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (CRinString False delimiter 'a') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertFalse(tExternalTableOption.getcRinString()); - } - - public void test24() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (DATAOBJECT ('/var/tmp/test.txt') CRinString False delimiter 'a') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getDataObject().equals("/var/tmp/test.txt")); - } - - - public void test25() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (DATAOBJECT ('/var/tmp/test.txt') " + - " format 'fixed'" + - "layout (\n" + - "Col01 DATE YMD '' bytes 8 nullif &='99991231',\n" + - "Col09 BOOL Y_N bytes 1 nullif &=' ',\n" + - "FILLER CHAR(1) Bytes 1, /* Was col10 space */\n" + - "Col11 TIMESTAMP YMD '' 24HOUR '' bytes 14 nullif &='99991231000000',\n" + - "Col26 CHAR(15) bytes 15 nullif &=' ', /* 15 spaces */\n" + - "Col38 CHAR(13) bytes 13 nullif &='****NULL*****' ,\n" + - "Col48 CHAR(2) bytes 2 nullif &='##' ,\n" + - "Col50 INT4 bytes 5 nullif &='00000' ,\n" + - "Col56 CHAR(10) bytes 10 nullif &='0000000000',\n" + - "Col67 CHAR(3) bytes 3 /* Cannot load this directly, so insert-select statement used */\n" + - ") delimiter 'a') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getFormat().equals("fixed")); - } - - public void test26() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (DATAOBJECT ('/var/tmp/test.txt') " + - " format 'fixed' maxErrors 147 " + - "layout (\n" + - "Col01 DATE YMD '' bytes 8 nullif &='99991231',\n" + - "Col09 BOOL Y_N bytes 1 nullif &=' ',\n" + - "FILLER CHAR(1) Bytes 1, /* Was col10 space */\n" + - "Col11 TIMESTAMP YMD '' 24HOUR '' bytes 14 nullif &='99991231000000',\n" + - "Col26 CHAR(15) bytes 15 nullif &=' ', /* 15 spaces */\n" + - "Col38 CHAR(13) bytes 13 nullif &='****NULL*****' ,\n" + - "Col48 CHAR(2) bytes 2 nullif &='##' ,\n" + - "Col50 INT4 bytes 5 nullif &='00000' ,\n" + - "Col56 CHAR(10) bytes 10 nullif &='0000000000',\n" + - "Col67 CHAR(3) bytes 3 /* Cannot load this directly, so insert-select statement used */\n" + - ") delimiter 'a') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getMaxErrors() == 147); - } - - public void test27() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE EXTERNAL TABLE '/export/home/nz/student.csv' USING (DATAOBJECT ('/var/tmp/test.txt') " + - " format 'fixed' maxErrors 147 skipRows 100 " + - "layout (\n" + - "Col01 DATE YMD '' bytes 8 nullif &='99991231',\n" + - "Col09 BOOL Y_N bytes 1 nullif &=' ',\n" + - "FILLER CHAR(1) Bytes 1, /* Was col10 space */\n" + - "Col11 TIMESTAMP YMD '' 24HOUR '' bytes 14 nullif &='99991231000000',\n" + - "Col26 CHAR(15) bytes 15 nullif &=' ', /* 15 spaces */\n" + - "Col38 CHAR(13) bytes 13 nullif &='****NULL*****' ,\n" + - "Col48 CHAR(2) bytes 2 nullif &='##' ,\n" + - "Col50 INT4 bytes 5 nullif &='00000' ,\n" + - "Col56 CHAR(10) bytes 10 nullif &='0000000000',\n" + - "Col67 CHAR(3) bytes 3 /* Cannot load this directly, so insert-select statement used */\n" + - ") delimiter 'a') AS SELECT * FROM student;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - TExternalTableOption tExternalTableOption = createTableSqlStatement.getExternalTableOption(); - assertTrue(tExternalTableOption.getSkipRows() == 100); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testGenerateStatistics.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testGenerateStatistics.java deleted file mode 100644 index 1d0cc9e2..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testGenerateStatistics.java +++ /dev/null @@ -1,39 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; -/* - * Date: 13-11-25 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.netezza.TNetezzaGenerateStatistics; -import junit.framework.TestCase; - -public class testGenerateStatistics extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "GENERATE STATISTICS ON X;"; - assertTrue(sqlparser.parse() == 0); - TNetezzaGenerateStatistics getStatistics = (TNetezzaGenerateStatistics)sqlparser.sqlstatements.get(0); - assertTrue(getStatistics.getTableName().toString().equalsIgnoreCase("X")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "GENERATE STATISTICS ON cows (cnumber)"; - assertTrue(sqlparser.parse() == 0); - TNetezzaGenerateStatistics getStatistics = (TNetezzaGenerateStatistics)sqlparser.sqlstatements.get(0); - assertTrue(getStatistics.getTableName().toString().equalsIgnoreCase("cows")); - assertTrue(getStatistics.getColumns().getObjectName(0).toString().equalsIgnoreCase("cnumber")); - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "GENERATE EXPRESS STATISTICS ON cows"; - assertTrue(sqlparser.parse() == 0); - TNetezzaGenerateStatistics getStatistics = (TNetezzaGenerateStatistics)sqlparser.sqlstatements.get(0); - assertTrue(getStatistics.getTableName().toString().equalsIgnoreCase("cows")); - assertTrue(getStatistics.isExpress()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testGroomTable.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testGroomTable.java deleted file mode 100644 index b5b0917f..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testGroomTable.java +++ /dev/null @@ -1,48 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; -/* - * Date: 13-11-25 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.netezza.EModeChoice; -import gudusoft.gsqlparser.nodes.netezza.TModeChoice; -import gudusoft.gsqlparser.stmt.netezza.TNetezzaGroomTable; -import junit.framework.TestCase; - -public class testGroomTable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "GROOM TABLE table_name VERSIONS"; - assertTrue(sqlparser.parse() == 0); - TNetezzaGroomTable groomTable = (TNetezzaGroomTable)sqlparser.sqlstatements.get(0); - assertTrue(groomTable.getTableName().toString().equalsIgnoreCase("table_name")); - TModeChoice modeChoice = groomTable.getModeChoice(); - assertTrue(modeChoice.getModeChoice() == EModeChoice.versions); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "GROOM TABLE X;"; - assertTrue(sqlparser.parse() == 0); - TNetezzaGroomTable groomTable = (TNetezzaGroomTable)sqlparser.sqlstatements.get(0); - assertTrue(groomTable.getTableName().toString().equalsIgnoreCase("x")); - - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "GROOM TABLE table_name PAGES ALL"; - assertTrue(sqlparser.parse() == 0); - TNetezzaGroomTable groomTable = (TNetezzaGroomTable)sqlparser.sqlstatements.get(0); - assertTrue(groomTable.getTableName().toString().equalsIgnoreCase("table_name")); - TModeChoice modeChoice = groomTable.getModeChoice(); - assertTrue(modeChoice.getModeChoice() == EModeChoice.pagesAll); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testMinusSetToString.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testMinusSetToString.java deleted file mode 100644 index 087719bd..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testMinusSetToString.java +++ /dev/null @@ -1,29 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; -/* - * Date: 14-1-8 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testMinusSetToString extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "CREATE TABLE X AS \n" + - "SELECT A FROM B\n" + - "minus\n" + - "SELECT A FROM C"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement ct = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = ct.getSubQuery(); - assertTrue(select.toString() != null); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testSelectFromExternalTable.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testSelectFromExternalTable.java deleted file mode 100644 index 4c72c62e..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testSelectFromExternalTable.java +++ /dev/null @@ -1,29 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; -/* - * Date: 14-2-17 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSelectFromExternalTable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "insert into \"$hist_column_access_1\"(npsid, npsinstanceid, opid, logentryid, seqid, sessionid, dbid, dbname, schemaid, schemaname, tableid, tablename, columnid, columnname, usage) select 1, * from external '/nz/data.1.0/hist/loading/alc_20140215_151309.473439/alc_co_20140215_151309.473439' (npsinstanceid int, opid bigint, logentryid bigint, seqid integer, sessionid bigint, dbid int, dbname nvarchar (128), schemaid int , schemaname nvarchar (128), tableid int, tablename nvarchar (128), columnid int, columnname nvarchar (128), usage int) using( logdir '/nz/data.1.0/hist/loading/alc_20140215_151309.473439' encoding 'internal' escapechar '\\' fillrecord true ctrlchars true crinstring true)"; - assertTrue(sqlparser.parse() == 0); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = insertSqlStatement.tables.getTable(0); - assertTrue(table.getTableName().toString().equalsIgnoreCase("\"$hist_column_access_1\"")); - TSelectSqlStatement select = (TSelectSqlStatement)insertSqlStatement.getSubQuery(); - table = select.tables.getTable(0); - assertTrue(table.getTableName().toString().equalsIgnoreCase("'/nz/data.1.0/hist/loading/alc_20140215_151309.473439/alc_co_20140215_151309.473439'")); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testSetCatalogStmt.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testSetCatalogStmt.java deleted file mode 100644 index 38f19120..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testSetCatalogStmt.java +++ /dev/null @@ -1,19 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSetCatalogStmt; -import junit.framework.TestCase; - -public class testSetCatalogStmt extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "SET CATALOG \"netschema\";"; - assertTrue(sqlparser.parse() == 0); - TSetCatalogStmt setCatalogStmt = (TSetCatalogStmt)sqlparser.sqlstatements.get(0); - assertTrue(setCatalogStmt.getCatalogName().toString().equalsIgnoreCase("\"netschema\"")); - - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/netezzaTest/testSetSchemaStmt.java b/src/test/java/gudusoft/gsqlparser/netezzaTest/testSetSchemaStmt.java deleted file mode 100644 index 70a019a3..00000000 --- a/src/test/java/gudusoft/gsqlparser/netezzaTest/testSetSchemaStmt.java +++ /dev/null @@ -1,19 +0,0 @@ -package gudusoft.gsqlparser.netezzaTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSetSchemaStmt; -import junit.framework.TestCase; - -public class testSetSchemaStmt extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvnetezza); - sqlparser.sqltext = "SET SCHEMA \"netschema\""; - assertTrue(sqlparser.parse() == 0); - TSetSchemaStmt setCatalogStmt = (TSetSchemaStmt)sqlparser.sqlstatements.get(0); - assertTrue(setCatalogStmt.getSchemaName().toString().equalsIgnoreCase("\"netschema\"")); - - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterMaterializedView.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterMaterializedView.java deleted file mode 100644 index 220def10..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterMaterializedView.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAlterMaterializedViewStmt; - -import junit.framework.TestCase; - -public class testAlterMaterializedView extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "ALTER MATERIALIZED VIEW s1_mv1 REFRESH COMPLETE START WITH sysdate NEXT SYSDATE + 1/24;"; - assertTrue(sqlparser.parse() == 0); - - TAlterMaterializedViewStmt alterMaterializedViewStmt = (TAlterMaterializedViewStmt)sqlparser.sqlstatements.get(0); - assertTrue(alterMaterializedViewStmt.getMaterializedViewName().toString().equalsIgnoreCase("s1_mv1")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTable.java deleted file mode 100644 index bedd793c..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTable.java +++ /dev/null @@ -1,54 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 12-1-19 - */ - -import gudusoft.gsqlparser.EAlterTableOptionType; -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TAlterTableOption; -import gudusoft.gsqlparser.nodes.TAlterTableOptionList; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import junit.framework.TestCase; - -public class testAlterTable extends TestCase { - - public void testRename(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "ALTER TABLE FOO RENAME TO BAR"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTableStatement = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - - assertTrue(alterTableStatement.getTableName().toString().equalsIgnoreCase("foo")); - - TAlterTableOptionList l = alterTableStatement.getAlterTableOptionList(); - TAlterTableOption o = l.getAlterTableOption(0); - assertTrue(o.getOptionType() == EAlterTableOptionType.RenameTable); - assertTrue(o.getNewTableName().toString().equalsIgnoreCase("bar")); - - } - - public void testAddColumn(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "ALTER TABLE TS_TRS_SVS ADD TA_PRT_TRS_COR_TRS number(10)"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTableStatement = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - - assertTrue(alterTableStatement.getTableName().toString().equalsIgnoreCase("TS_TRS_SVS")); - - TAlterTableOptionList l = alterTableStatement.getAlterTableOptionList(); - TAlterTableOption o = l.getAlterTableOption(0); - assertTrue(o.getOptionType() == EAlterTableOptionType.AddColumn); - TColumnDefinition columnDefinition = o.getColumnDefinitionList().getColumn(0); - assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("TA_PRT_TRS_COR_TRS")); - assertTrue(columnDefinition.getDatatype().getDataType() == EDataType.number_t); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTrigger.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTrigger.java deleted file mode 100644 index ba059ef3..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testAlterTrigger.java +++ /dev/null @@ -1,21 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EAlterTriggerOption; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAlterTriggerStmt; -import junit.framework.TestCase; - -public class testAlterTrigger extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "ALTER TRIGGER \"ADMORA\".\"GA_ACT_EST_AUT\" ENABLE"; - assertTrue(sqlparser.parse() == 0); - - TAlterTriggerStmt alterTriggerStmt = (TAlterTriggerStmt)sqlparser.sqlstatements.get(0); - assertTrue(alterTriggerStmt.getTriggerName().toString().equalsIgnoreCase("\"ADMORA\".\"GA_ACT_EST_AUT\"")); - assertTrue(alterTriggerStmt.getAlterTriggerOption() == EAlterTriggerOption.enable - ); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testCall.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCall.java deleted file mode 100644 index 1251d8ec..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testCall.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 13-10-31 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCallStatement; -import junit.framework.TestCase; - -public class testCall extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CALL dbms_java.set_output(2000)"; - assertTrue(sqlparser.parse() == 0); - TCallStatement callStatement = (TCallStatement)sqlparser.sqlstatements.get(0); - assertTrue(callStatement.getRoutineName().toString().equalsIgnoreCase("dbms_java.set_output")); - assertTrue(callStatement.getArgs().getExpression(0).toString().equalsIgnoreCase("2000")); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testCallSpec.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCallSpec.java deleted file mode 100644 index 86d51624..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testCallSpec.java +++ /dev/null @@ -1,69 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TCallSpec; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateFunction; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; -import junit.framework.TestCase; - -public class testCallSpec extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE PROCEDURE plsToC_insertIntoEmpTab_proc (\n" + - " empno PLS_INTEGER)\n" + - "AS LANGUAGE C\n" + - " NAME \"C_insertEmpTab\"\n" + - " LIBRARY insert_lib\n" + - " PARAMETERS (\n" + - " CONTEXT, \n" + - " empno);"; - // System.out.print(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateProcedure f = (TPlsqlCreateProcedure)sqlparser.sqlstatements.get(0); - assertTrue(f.getProcedureName().toString().equalsIgnoreCase("plsToC_insertIntoEmpTab_proc")); - TCallSpec spec = f.getCallSpec(); - assertTrue(spec.getLang().equalsIgnoreCase("C")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION func1 RETURN VARCHAR2\n" + - "AS LANGUAGE C NAME \"func1\" LIBRARY lib1\n" + - "WITH CONTEXT PARAMETERS(CONTEXT, x INT, y STRING, z OCIDATE);"; - // System.out.print(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateFunction f = (TPlsqlCreateFunction)sqlparser.sqlstatements.get(0); - assertTrue(f.getFunctionName().toString().equalsIgnoreCase("func1")); - TCallSpec spec = f.getCallSpec(); - assertTrue(spec.getLang().equalsIgnoreCase("C")); - assertTrue(spec.getDeclaration().equalsIgnoreCase("\"func1\"")); - assertTrue(spec.getLibName().equalsIgnoreCase("lib1")); - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION func1 RETURN VARCHAR2\n" + - "AS LANGUAGE C NAME \"func1\" LIBRARY lib1\n" + - "WITH CONTEXT PARAMETERS(CONTEXT, x INT, y STRING, z OCIDATE);"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateFunction f = (TPlsqlCreateFunction)sqlparser.sqlstatements.get(0); - assertTrue(f.getFunctionName().toString().equalsIgnoreCase("func1")); - TCallSpec spec = f.getCallSpec(); - -// for (int i=spec.getStartToken().posinlist;i :NEW.EMP_ID)\n" + - " OR (:OLD.EMP_ID IS NULL AND :NEW.EMP_ID IS NOT NULL)\n" + - " OR (:OLD.EMP_ID IS NOT NULL AND :NEW.EMP_ID IS NULL)\n" + - " )\n" + - " THEN\n" + - " v_index := v_index + 1;\n" + - " v_emp_changes(v_index).upd_dt := SYSDATE;\n" + - " v_emp_changes(v_index).upd_by := SYS_CONTEXT ('USERENV', 'SESSION_USER');\n" + - " v_emp_changes(v_index).emp_id := :NEW.emp_id;\n" + - " v_emp_changes(v_index).field := 'EMP_ID';\n" + - " v_emp_changes(v_index).from_value := to_char(:OLD.EMP_ID);\n" + - " v_emp_changes(v_index).to_value := to_char(:NEW.EMP_ID);\n" + - " v_emp_changes(v_index).action := 'Update';\n" + - " END IF;\n" + - " \n" + - " IF ( (:OLD.NAME <> :NEW.NAME)\n" + - " OR (:OLD.NAME IS NULL AND :NEW.NAME IS NOT NULL)\n" + - " OR (:OLD.NAME IS NOT NULL AND :NEW.NAME IS NULL)\n" + - " )\n" + - " THEN\n" + - " v_index := v_index + 1;\n" + - " v_emp_changes(v_index).upd_dt := SYSDATE;\n" + - " v_emp_changes(v_index).upd_by := SYS_CONTEXT ('USERENV', 'SESSION_USER');\n" + - " v_emp_changes(v_index).emp_id := :NEW.emp_id;\n" + - " v_emp_changes(v_index).field := 'NAME';\n" + - " v_emp_changes(v_index).from_value := to_char(:OLD.NAME);\n" + - " v_emp_changes(v_index).to_value := to_char(:NEW.NAME);\n" + - " v_emp_changes(v_index).action := 'Update';\n" + - " END IF;\n" + - " \n" + - " IF ( (:OLD.SALARY <> :NEW.SALARY)\n" + - " OR (:OLD.SALARY IS NULL AND :NEW.SALARY IS NOT NULL)\n" + - " OR (:OLD.SALARY IS NOT NULL AND :NEW.SALARY IS NULL)\n" + - " )\n" + - " THEN\n" + - " v_index := v_index + 1;\n" + - " v_emp_changes(v_index).upd_dt := SYSDATE;\n" + - " v_emp_changes(v_index).upd_by := SYS_CONTEXT ('USERENV', 'SESSION_USER');\n" + - " v_emp_changes(v_index).emp_id := :NEW.emp_id;\n" + - " v_emp_changes(v_index).field := 'SALARY';\n" + - " v_emp_changes(v_index).from_value := to_char(:OLD.SALARY);\n" + - " v_emp_changes(v_index).to_value := to_char(:NEW.SALARY);\n" + - " v_emp_changes(v_index).action := 'Update';\n" + - " END IF;\n" + - " \n" + - " END IF;\n" + - " \n" + - " IF v_index >= v_threshhold THEN\n" + - " flush_logs();\n" + - " END IF;\n" + - " \n" + - " END AFTER EACH ROW;\n" + - " \n" + - " -- AFTER STATEMENT Section:\n" + - " AFTER STATEMENT IS\n" + - " BEGIN\n" + - " flush_logs();\n" + - " END AFTER STATEMENT;\n" + - " \n" + - "END aud_emp;\n" + - "/"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateTrigger createTrigger = (TPlsqlCreateTrigger)sqlparser.sqlstatements.get(0); - assertTrue(createTrigger.getTriggerName().toString().equalsIgnoreCase("aud_emp")); - TCompoundTriggerBody compoundTriggerBody = (TCompoundTriggerBody)createTrigger.getTriggerBody(); - //System.out.println(compoundTriggerBody.getDeclareStatements().size()); - //System.out.println(compoundTriggerBody.getTimingPointList().size()); - assertTrue(compoundTriggerBody.getDeclareStatements().size() == 6); - assertTrue(compoundTriggerBody.getTimingPointList().size() == 2); - //assertTrue(); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateFunction.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateFunction.java deleted file mode 100644 index 4e14539d..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateFunction.java +++ /dev/null @@ -1,39 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 13-3-27 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateFunction; -import junit.framework.TestCase; - -public class testCreateFunction extends TestCase { - - public void testAggregate(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE FUNCTION SecondMax (input NUMBER) RETURN NUMBER\n" + - " PARALLEL_ENABLE AGGREGATE USING SecondMaxImpl;"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateFunction f = (TPlsqlCreateFunction)sqlparser.sqlstatements.get(0); - assertTrue(f.getFunctionName().toString().equalsIgnoreCase("SecondMax")); - assertTrue(f.getImplementionType().toString().equalsIgnoreCase("SecondMaxImpl")); - - } - - public void testImplementionType(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create or replace function \"USER1\".\"FUNC1\" ( \"I1\" in \"T1\".\"C1\"%TYPE )\n" + - "return INTEGER\n" + - "aggregate using \"T1\";"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateFunction f = (TPlsqlCreateFunction)sqlparser.sqlstatements.get(0); - assertTrue(f.getFunctionName().toString().equalsIgnoreCase("\"USER1\".\"FUNC1\"")); - assertTrue(f.getImplementionType().toString().equalsIgnoreCase("\"T1\"")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateLibrary.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateLibrary.java deleted file mode 100644 index 5fd7cd71..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateLibrary.java +++ /dev/null @@ -1,32 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.stmt.oracle.TOracleCreateLibraryStmt; -import junit.framework.TestCase; - -public class testCreateLibrary extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE LIBRARY app_lib as '${ORACLE_HOME}/lib/app_lib.so' AGENT 'sales.hq.acme.example.com';"; - assertTrue(sqlparser.parse() == 0); - - TOracleCreateLibraryStmt libraryStmt = (TOracleCreateLibraryStmt)sqlparser.sqlstatements.get(0); - assertTrue(libraryStmt.getLibraryName().toString().equalsIgnoreCase("app_lib")); - assertTrue(libraryStmt.getFileName().toString().equalsIgnoreCase("'${ORACLE_HOME}/lib/app_lib.so'")); - assertTrue(libraryStmt.getDbLink().toString().equalsIgnoreCase("'sales.hq.acme.example.com'")); - } - - public void testGetSchemaName(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create library USER1.\"app_lib\" as '${ORACLE_HOME}/lib/app_lib.so' agent 'sales.hq.acme.example.com';"; - assertTrue(sqlparser.parse() == 0); - - TOracleCreateLibraryStmt libraryStmt = (TOracleCreateLibraryStmt)sqlparser.sqlstatements.get(0); - TObjectName libraryName = libraryStmt.getLibraryName(); - assertTrue(libraryName.toString().equalsIgnoreCase("USER1.\"app_lib\"")); - assertTrue(libraryName.getSchemaToken().toString().equalsIgnoreCase("USER1")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateMaterializedView.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateMaterializedView.java deleted file mode 100644 index bfb90d7a..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateMaterializedView.java +++ /dev/null @@ -1,53 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.oracle.*; - -import gudusoft.gsqlparser.stmt.TCreateMaterializedSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCreateMaterializedView extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE MATERIALIZED VIEW sales_mv\n" + - " BUILD IMMEDIATE\n" + - " REFRESH FAST ON COMMIT\n" + - " AS SELECT t.calendar_year, p.prod_id, \n" + - " SUM(s.amount_sold) AS sum_sales\n" + - " FROM times t, products p, sales s\n" + - " WHERE t.time_id = s.time_id AND p.prod_id = s.prod_id\n" + - " GROUP BY t.calendar_year, p.prod_id;"; - assertTrue(sqlparser.parse() == 0); - - TCreateMaterializedSqlStatement createMaterializedViewStmt = (TCreateMaterializedSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createMaterializedViewStmt.getViewName().toString().equalsIgnoreCase("sales_mv")); - TSelectSqlStatement subquery = createMaterializedViewStmt.getSubquery(); - assertTrue(subquery.getTables().getTable(0).toString().equalsIgnoreCase("times")); - TMaterializedViewProps materializedViewProps = createMaterializedViewStmt.getMaterializedViewProps(); - TOracleBuildClause buildClause = materializedViewProps.getBuildClause(); - assertTrue(buildClause.getBuildType() == EOracleBuildType.obtImmediate); - TOracleCreateMvRefresh mvRefresh = createMaterializedViewStmt.getMvRefresh(); - assertTrue(mvRefresh.getRefreshOptions().size() == 2); - TOracleCreateMvRefreshOption refreshOption = mvRefresh.getRefreshOptions().getElement(0); - assertTrue(refreshOption.getRefreshType() == EMvRefreshType.mrtRefreshFast); - refreshOption = mvRefresh.getRefreshOptions().getElement(1); - assertTrue(refreshOption.getRefreshType() == EMvRefreshType.mrtRefreshOnCommit); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE MATERIALIZED VIEW rule15004_1(c1, c2) AS SELECT * FROM t1;"; - assertTrue(sqlparser.parse() == 0); - - TCreateMaterializedSqlStatement createMaterializedViewStmt = (TCreateMaterializedSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createMaterializedViewStmt.getViewName().toString().equalsIgnoreCase("rule15004_1")); - TSelectSqlStatement subquery = createMaterializedViewStmt.getSubquery(); - assertTrue(subquery.getTables().getTable(0).toString().equalsIgnoreCase("t1")); - assertTrue(createMaterializedViewStmt.getViewAliasClause().getViewAliasItemList().getViewAliasItem(0).toString().equalsIgnoreCase("c1")); - } -} - diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreatePackage.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreatePackage.java deleted file mode 100644 index d51a549a..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreatePackage.java +++ /dev/null @@ -1,48 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateFunction; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreatePackage; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; -import junit.framework.TestCase; - -public class testCreatePackage extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create package pack as \n" + - " PROCEDURE proc1 (\n" + - " p_Typ IN char,\n" + - " p_ent IN dw_k_mel.enr%type default 0,\n" + - " p_deh IN dw_k_mel.meld_nr%type default -1\n" + - " );\n" + - " \n" + - " PROCEDURE proc2 (\n" + - " p_Typ IN char,\n" + - " p_Text IN varchar2\n" + - " );\n" + - " \n" + - " FUNCTION fun return dw_k_mel.en%type;\n" + - " \n" + - " PROCEDURE proc3 (\n" + - " p_ent IN number\n" + - " );\n" + - " \n" + - " END pack;"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreatePackage createPackage = (TPlsqlCreatePackage)sqlparser.sqlstatements.get(0); - assertTrue(createPackage.getPackageName().toString().equalsIgnoreCase("pack")); - assertTrue(createPackage.getDeclareStatements().size() == 4); - TPlsqlCreateProcedure p0 = (TPlsqlCreateProcedure)createPackage.getDeclareStatements().get(0); - - assertTrue(p0.toString().equalsIgnoreCase("PROCEDURE proc1 (\n" + - " p_Typ IN char,\n" + - " p_ent IN dw_k_mel.enr%type default 0,\n" + - " p_deh IN dw_k_mel.meld_nr%type default -1\n" + - " )")); - TPlsqlCreateFunction p2 = (TPlsqlCreateFunction) createPackage.getDeclareStatements().get(2);; - assertTrue(p2.toString().equalsIgnoreCase("FUNCTION fun return dw_k_mel.en%type")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateTableResultCache.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateTableResultCache.java deleted file mode 100644 index 82177602..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateTableResultCache.java +++ /dev/null @@ -1,27 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateTableResultCache extends TestCase { - - public void testCreateTableLike(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE TABLE \"BIDU_E1\".\"TIPO_COMUNICACAO\"\n" + - "( \"TICO_CD_TIPO_COMUNICACAO\" NUMBER(*,0) NOT NULL ENABLE,\n" + - "\"TICO_DS_TIPO_COMUNICACAO\" VARCHAR2(30),\n" + - " SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS,\n" + - " SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS,\n" + - " SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS,\n" + - " SUPPLEMENTAL LOG GROUP \"GGS_538033\" (\"TICO_CD_TIPO_COMUNICACAO\") ALWAYS\n" + - ")\n" + - "RESULT_CACHE(MODE FORCE) ;"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("\"BIDU_E1\".\"TIPO_COMUNICACAO\"")); - assertTrue(createTable.getColumnList().size() == 2); - assertTrue(createTable.getColumnList().getColumn(0).getColumnName().toString().equalsIgnoreCase("\"TICO_CD_TIPO_COMUNICACAO\"")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateView.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateView.java deleted file mode 100644 index dc5eed7b..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testCreateView.java +++ /dev/null @@ -1,23 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ERestrictionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TRestrictionClause; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import junit.framework.TestCase; - -public class testCreateView extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE OR REPLACE VIEW rule11001_1 AS SELECT * FROM t1 WITH READ ONLY"; - assertTrue(sqlparser.parse() == 0); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement )sqlparser.sqlstatements.get(0); - assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("rule11001_1")); - - TRestrictionClause restrictClause = createViewSqlStatement.getRestrictionClause(); - assertTrue(restrictClause.getRestrictionType() == ERestrictionType.withReadOnly); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testDatabaseLink.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testDatabaseLink.java deleted file mode 100644 index dba857df..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testDatabaseLink.java +++ /dev/null @@ -1,95 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.stmt.TCreateDatabaseLinkStmt; -import gudusoft.gsqlparser.stmt.TDropDatabaseLinkStmt; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; -import junit.framework.TestCase; - - -public class testDatabaseLink extends TestCase { - - public void testDrop(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "DROP PUBLIC DATABASE LINK remote"; - assertTrue(sqlparser.parse() == 0); - - TDropDatabaseLinkStmt databaseLinkStmt = (TDropDatabaseLinkStmt)sqlparser.sqlstatements.get(0); - assertTrue(databaseLinkStmt.getDatabaseLinkName().toString().equalsIgnoreCase("remote")); - } - - public void testCreate(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE DATABASE LINK chicago\n" + - " CONNECT TO admin IDENTIFIED BY 'mypassword'\n" + - " USING oci '//127.0.0.1/acctg';"; - assertTrue(sqlparser.parse() == 0); - - TCreateDatabaseLinkStmt databaseLinkStmt = (TCreateDatabaseLinkStmt)sqlparser.sqlstatements.get(0); - assertTrue(databaseLinkStmt.getDatabaseLinkName().toString().equalsIgnoreCase("chicago")); - } - - public void testDatabase(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "select REGION_ID, COUNTRY_NAME from\n" + - " \"ORCLPDB2.LOCALDOMAIN\".\"PUBLIC\".\"HR_COUNTRIES\"@LD_PDB1_SOL.LOCALDOMAIN;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.getSqlstatements().get(0); - TObjectName table = selectSqlStatement.getTables().getTable(0).getTableName(); - assertTrue(table.getDatabaseString().equalsIgnoreCase("\"ORCLPDB2.LOCALDOMAIN\"")); - assertTrue(table.getSchemaString().equalsIgnoreCase("\"PUBLIC\"")); - assertTrue(table.getTableString().equalsIgnoreCase("\"HR_COUNTRIES\"")); - - assertTrue(table.getDblink().toString().equalsIgnoreCase("LD_PDB1_SOL.LOCALDOMAIN")); - } - - public void testDatabaseInProc(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create procedure CARS_HR_COUNTRIES\n" + - " is\n" + - "begin\n" + - "select REGION_ID, COUNTRY_NAME from\n" + - "\t\t\"ORCLPDB2.LOCALDOMAIN\".\"PUBLIC\".\"HR_COUNTRIES\"@LD_PDB1_SOL.LOCALDOMAIN;\n" + - "end;"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateProcedure createProcedure = (TPlsqlCreateProcedure)sqlparser.getSqlstatements().get(0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createProcedure.getBodyStatements().get(0); - TObjectName table = selectSqlStatement.getTables().getTable(0).getTableName(); - assertTrue(table.getDatabaseString().equalsIgnoreCase("\"ORCLPDB2.LOCALDOMAIN\"")); - assertTrue(table.getSchemaString().equalsIgnoreCase("\"PUBLIC\"")); - assertTrue(table.getTableString().equalsIgnoreCase("\"HR_COUNTRIES\"")); - assertTrue(table.getDblink().toString().equalsIgnoreCase("LD_PDB1_SOL.LOCALDOMAIN")); - } - - public void testDatabaseInProc2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create procedure CARS_HR_COUNTRIES\n" + - " is\n" + - "begin\n" + - " insert into CARS (id, name)\n" + - " select REGION_ID, COUNTRY_NAME from\n" + - " PUBLIC.HR_COUNTRIES@LD_PDB1_SOL.LOCALDOMAIN;\n" + - "end;"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateProcedure createProcedure = (TPlsqlCreateProcedure)sqlparser.getSqlstatements().get(0); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)createProcedure.getBodyStatements().get(0); - - TSelectSqlStatement selectSqlStatement = insertSqlStatement.getSubQuery(); - TObjectName table = selectSqlStatement.getTables().getTable(0).getTableName(); - assertTrue(table.getSchemaString().equalsIgnoreCase("PUBLIC")); - assertTrue(table.getTableString().equalsIgnoreCase("HR_COUNTRIES")); - assertTrue(table.getDblink().toString().equalsIgnoreCase("LD_PDB1_SOL.LOCALDOMAIN")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testDatatype.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testDatatype.java deleted file mode 100644 index 952ecf96..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testDatatype.java +++ /dev/null @@ -1,38 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 13-9-3 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateFunction; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlRecordTypeDefStmt; -import junit.framework.TestCase; - -public class testDatatype extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create or replace function FUNC0\n" + - "return simple_integer\n" + - "is\n" + - "M_SIMPLE_INTEGER simple_integer := 2147483645;\n" + - "type TYP11 is record ( M1 simple_integer );\n" + - "begin\n" + - "return M_SIMPLE_INTEGER;\n" + - "end;"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateFunction function = (TPlsqlCreateFunction)sqlparser.sqlstatements.get(0); - assertTrue(function.getDeclareStatements().size() == 2); - TPlsqlRecordTypeDefStmt recordTypeDefStmt = (TPlsqlRecordTypeDefStmt)function.getDeclareStatements().get(1); - assertTrue(recordTypeDefStmt.getTypeName().toString().equalsIgnoreCase("TYP11")); - TParameterDeclaration pd = recordTypeDefStmt.getFieldDeclarations().getParameterDeclarationItem(0); - assertTrue(pd.getParameterName().toString().equalsIgnoreCase("M1")); - // System.out.println(pd.getDataType().getDataType()); - assertTrue(pd.getDataType().getDataType() == EDataType.simple_integer_t); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testErrorLoggingClause.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testErrorLoggingClause.java deleted file mode 100644 index 31fc0f5c..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testErrorLoggingClause.java +++ /dev/null @@ -1,29 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.oracle.TErrorLoggingClause; -import gudusoft.gsqlparser.stmt.TMergeSqlStatement; -import junit.framework.TestCase; - -public class testErrorLoggingClause extends TestCase { - - public void testMerge(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "merge into table1\n" + - "using (select a, b from table2)\n" + - "on (table1.a = table2.a)\n" + - "when matched then update set table1.b = table2.p\n" + - "LOG ERRORS INTO table3 (a) REJECT LIMIT 50 ;"; - assertTrue(sqlparser.parse() == 0); - - TMergeSqlStatement mergeSqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); - TErrorLoggingClause errorLoggingClause = mergeSqlStatement.getErrorLoggingClause(); - assertTrue(errorLoggingClause.getTableName().toString().equalsIgnoreCase("table3")); - assertTrue(errorLoggingClause.getSimpleExpression().getLeftOperand().toString().equalsIgnoreCase("a")); - assertTrue(errorLoggingClause.getRejectLimitToken().toString().equalsIgnoreCase("50")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testExecImmediate.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testExecImmediate.java deleted file mode 100644 index a7b489d8..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testExecImmediate.java +++ /dev/null @@ -1,74 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 14-6-20 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAlterViewStatement; -import gudusoft.gsqlparser.stmt.TExecImmeStmt; -import junit.framework.TestCase; - -public class testExecImmediate extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "EXECUTE IMMEDIATE \n" + - "\t'SELECT /*+ PARALLEL 4 */ count(1) FROM SCHEMA.TABLE_SAMPLE (P'||TO_CHAR(v_processDt,'YYYYMMDD')||')'\n" + - " INTO var;"; - assertTrue(sqlparser.parse() == 0); - - //System.out.println(sqlparser.sqlstatements.get(0).sqlstatementtype); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstplsql_execimmestmt); - TExecImmeStmt execImmeStmt = (TExecImmeStmt)sqlparser.sqlstatements.get(0); - assertTrue(execImmeStmt.getIntoVariables().getExpression(0).toString().equalsIgnoreCase("var")); - // assertTrue(execImmeStmt.getDynamicStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - //TSelectSqlStatement select = (TSelectSqlStatement)execImmeStmt.getDynamicStatements().get(0); - //System.out.println(select.toString()); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - // sqlparser.sqltext = "EXECUTE IMMEDIATE q'[alter view SCHEMATEMP.vls_master_d compile ]';--' "; - sqlparser.sqltext = "EXECUTE IMMEDIATE 'alter view SCHEMATEMP.vls_master_d compile ';--' "; - assertTrue(sqlparser.parse() == 0); - - //System.out.println(sqlparser.sqlstatements.get(0).sqlstatementtype); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstplsql_execimmestmt); - TExecImmeStmt execImmeStmt = (TExecImmeStmt)sqlparser.sqlstatements.get(0); - //System.out.println(execImmeStmt.getDynamicStatements().get(0).toString()); - //assertTrue(execImmeStmt.getIntoVariables().getExpression(0).toString().equalsIgnoreCase("var")); - assertTrue(execImmeStmt.getDynamicStatements().get(0).sqlstatementtype == ESqlStatementType.sstalterview); - TAlterViewStatement cv = (TAlterViewStatement)execImmeStmt.getDynamicStatements().get(0); - //System.out.println(cv.getViewName().toString()); - assertTrue(cv.getViewName().toString().equalsIgnoreCase("SCHEMATEMP.vls_master_d")); - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "EXECUTE IMMEDIATE 'INSERT INTO XXX VALUES (''AA'', ''BB'')';"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstplsql_execimmestmt); - TExecImmeStmt execImmeStmt = (TExecImmeStmt) sqlparser.sqlstatements.get(0); - //System.out.println(execImmeStmt.getDynamicSQL().toString()); - assertTrue(execImmeStmt.getDynamicSQL().toString().equalsIgnoreCase("INSERT INTO XXX VALUES ('AA', 'BB')")); - } - - public void test4(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "EXECUTE IMMEDIATE Q'[INSERT INTO XXX VALUES ('AA', 'BB')]';"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstplsql_execimmestmt); - TExecImmeStmt execImmeStmt = (TExecImmeStmt) sqlparser.sqlstatements.get(0); - //System.out.println(execImmeStmt.getDynamicSQL().toString()); - assertTrue(execImmeStmt.getDynamicSQL().toString().equalsIgnoreCase("INSERT INTO XXX VALUES ('AA', 'BB')")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testExecuteProcedure.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testExecuteProcedure.java deleted file mode 100644 index 4df700c8..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testExecuteProcedure.java +++ /dev/null @@ -1,27 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 12-5-6 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.stmt.oracle.TOracleExecuteProcedure; -import junit.framework.TestCase; - -public class testExecuteProcedure extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE TABLE a (a VARCHAR2(10));\n" + - "EXECUTE some_package.some_proc('ARG')"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - assertTrue(sqlparser.sqlstatements.get(1).sqlstatementtype == ESqlStatementType.sstoracleexecuteprocedure); - - TOracleExecuteProcedure executeProcedure = (TOracleExecuteProcedure)sqlparser.sqlstatements.get(1); - assertTrue(executeProcedure.getProcedureName().toString().equalsIgnoreCase("some_package.some_proc")); - assertTrue(executeProcedure.getProcedureParameters().getExpression(0).toString().equalsIgnoreCase("'ARG'")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testExplainPlan.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testExplainPlan.java deleted file mode 100644 index 7d4e2208..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testExplainPlan.java +++ /dev/null @@ -1,59 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 13-2-1 - */ - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import gudusoft.gsqlparser.stmt.TExplainPlan; -import junit.framework.TestCase; - -public class testExplainPlan extends TestCase { - - public void testSelect(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "explain plan for select * from dual;"; - assertTrue(sqlparser.parse() == 0); - TExplainPlan explainPlan = (TExplainPlan)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = (TSelectSqlStatement)explainPlan.getStatement(); - assertTrue(select.toString().equalsIgnoreCase("select * from dual")); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.toString().equalsIgnoreCase("*")); - - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("dual")); - } - - public void testUpdate(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "EXPLAIN PLAN\n" + - "SET STATEMENT_ID = 'Raise in Tokyo'\n" + - "INTO plan_table\n" + - "FOR UPDATE employees\n" + - "SET salary = salary * 1.10\n" + - "WHERE department_id =\n" + - "(SELECT department_id FROM departments\n" + - "WHERE location_id = 1200);"; - assertTrue(sqlparser.parse() == 0); - TExplainPlan explainPlan = (TExplainPlan)sqlparser.sqlstatements.get(0); - TUpdateSqlStatement update = (TUpdateSqlStatement)explainPlan.getStatement(); - assertTrue(update.getTargetTable().toString().equalsIgnoreCase("employees")); - - TResultColumn resultColumn = update.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.toString().equalsIgnoreCase("salary = salary * 1.10")); - - TExpression expression = update.getWhereClause().getCondition(); - assertTrue(expression.getRightOperand().getExpressionType() == EExpressionType.subquery_t); - - TSelectSqlStatement select = expression.getRightOperand().getSubQuery(); - assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("department_id")); - - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testGetRawstatements.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testGetRawstatements.java deleted file mode 100644 index 6853f2be..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testGetRawstatements.java +++ /dev/null @@ -1,29 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testGetRawstatements extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE TABLE myTable\n" + - "(\n" + - " Col1 int\n" + - ")\n" + - "\n" + - "INSERT INTO myTable (Col1)\n" + - "SELECT Something\n" + - " FROM Somewhere;\n" + - "\n" + - "SELECT Col1\n" + - " FROM myTable\n"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 3); - } - - -} - diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testInExpr.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testInExpr.java deleted file mode 100644 index 77d269d8..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testInExpr.java +++ /dev/null @@ -1,49 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 11-7-10 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testInExpr extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "select * from dual\n" + - "where AS_OF_DATE IN Last_Day(Add_Months(('1'),-1))"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expression = select.getWhereClause().getCondition(); - assertTrue(expression.getExpressionType() == EExpressionType.in_t); - TExpression func_expr = expression.getRightOperand(); - assertTrue(func_expr.getFunctionCall().toString().equalsIgnoreCase("Last_Day(Add_Months(('1'),-1))")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "select * from dual where (dummy,dummy) in (:b3,:b2);"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expression = select.getWhereClause().getCondition(); - assertTrue(expression.getExpressionType() == EExpressionType.in_t); - TExpression rexpr = expression.getRightOperand(); - assertTrue(rexpr.getExpressionType() == EExpressionType.list_t); - TExpression e0 = rexpr.getExprList().getExpression(0); - assertTrue(e0.getExpressionType() == EExpressionType.simple_object_name_t); - - TExpression e1 = rexpr.getExprList().getExpression(1); - assertTrue(e1.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(e1.getObjectOperand().toString().equalsIgnoreCase(":b2")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testInsertMultiTable.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testInsertMultiTable.java deleted file mode 100644 index 1673baa4..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testInsertMultiTable.java +++ /dev/null @@ -1,122 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 12-5-11 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testInsertMultiTable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "INSERT ALL\n" + - "INTO sales (prod_id, cust_id, time_id, amount)\n" + - "VALUES (product_id, customer_id, weekly_start_date, sales_sun)\n" + - "INTO sales (prod_id, cust_id, time_id, amount)\n" + - "VALUES (product_id, customer_id, weekly_start_date+1, sales_mon)\n" + - "INTO sales (prod_id, cust_id, time_id, amount)\n" + - "VALUES (product_id, customer_id, weekly_start_date+2, sales_tue)\n" + - "INTO sales (prod_id, cust_id, time_id, amount)\n" + - "VALUES (product_id, customer_id, weekly_start_date+3, sales_wed)\n" + - "INTO sales (prod_id, cust_id, time_id, amount)\n" + - "VALUES (product_id, customer_id, weekly_start_date+4, sales_thu)\n" + - "INTO sales (prod_id, cust_id, time_id, amount)\n" + - "VALUES (product_id, customer_id, weekly_start_date+5, sales_fri)\n" + - "INTO sales (prod_id, cust_id, time_id, amount)\n" + - "VALUES (product_id, customer_id, weekly_start_date+6, sales_sat)\n" + - "SELECT product_id, customer_id, weekly_start_date, sales_sun,\n" + - "sales_mon, sales_tue, sales_wed, sales_thu, sales_fri, sales_sat\n" + - "FROM sales_input_table;"; - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insert.getInsertIntoValues().size() == 7); - TInsertIntoValue insertIntoValue = insert.getInsertIntoValues().getElement(6); - assertTrue(insertIntoValue.getTable().toString().equalsIgnoreCase("sales")); - assertTrue(insertIntoValue.getColumnList().getObjectName(0).toString().equalsIgnoreCase("prod_id")); - assertTrue(insertIntoValue.getColumnList().getObjectName(3).toString().equalsIgnoreCase("amount")); - - assertTrue(insertIntoValue.getTargetList().getMultiTarget(0).getColumnList().getResultColumn(0).toString().equalsIgnoreCase("product_id")); - assertTrue(insertIntoValue.getTargetList().getMultiTarget(0).getColumnList().getResultColumn(3).toString().equalsIgnoreCase("sales_sat")); - // System.out.println(insertIntoValue.getTargetList().size()); - - TSelectSqlStatement select = insert.getSubQuery(); - assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("product_id")); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("sales_input_table")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "INSERT ALL\n" + - "WHEN order_total < 1000000 THEN\n" + - "INTO small_orders\n" + - "WHEN order_total > 1000000 AND order_total < 2000000 THEN\n" + - "INTO medium_orders\n" + - "WHEN order_total > 2000000 THEN\n" + - "INTO large_orders\n" + - "SELECT order_id, order_total, sales_rep_id, customer_id\n" + - "FROM orders;"; - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - - assertTrue(insert.getInsertConditions().size() == 3); - TInsertCondition condition = insert.getInsertConditions().getElement(0); - - assertTrue(condition.getCondition().getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(condition.getCondition().toString().equalsIgnoreCase("order_total < 1000000")); - - TInsertIntoValue intoValue = condition.getInsertIntoValues().getElement(0); - assertTrue(intoValue.getTable().toString().equalsIgnoreCase("small_orders")); - - TSelectSqlStatement select = insert.getSubQuery(); - assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("order_id")); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("orders")); - - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "INSERT ALL\n" + - "WHEN order_total < 100000 THEN\n" + - "INTO small_orders\n" + - "WHEN order_total > 100000 AND order_total < 200000 THEN\n" + - "INTO medium_orders\n" + - "ELSE\n" + - "INTO large_orders\n" + - "SELECT order_id, order_total, sales_rep_id, customer_id\n" + - "FROM orders;"; - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - - assertTrue(insert.getInsertConditions().size() == 2); - TInsertCondition condition = insert.getInsertConditions().getElement(0); - - assertTrue(condition.getCondition().getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(condition.getCondition().toString().equalsIgnoreCase("order_total < 100000")); - - TInsertIntoValue intoValue = condition.getInsertIntoValues().getElement(0); - assertTrue(intoValue.getTable().toString().equalsIgnoreCase("small_orders")); - - - TInsertIntoValue elseIntoValue = insert.getElseIntoValues().getElement(0); - assertTrue(elseIntoValue.getTable().toString().equalsIgnoreCase("large_orders")); - - TSelectSqlStatement select = insert.getSubQuery(); - assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("order_id")); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("orders")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testInvokerRights.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testInvokerRights.java deleted file mode 100644 index c9b78ba5..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testInvokerRights.java +++ /dev/null @@ -1,28 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 13-2-8 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateFunction; -import junit.framework.TestCase; - -public class testInvokerRights extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION RULE13014TESTFUNC1( A1 IN NUMBER )\n" + - "RETURN NUMBER AUTHID CURRENT_USER\n" + - "AS\n" + - "BEGIN\n" + - "NULL;\n" + - "END;\n" + - "/"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateFunction function = (TPlsqlCreateFunction)sqlparser.sqlstatements.get(0); - assertTrue(function.getInvokerRightsClause().getDefiner().toString().equalsIgnoreCase("CURRENT_USER")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testListAggOverflow.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testListAggOverflow.java deleted file mode 100644 index 992c6f09..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testListAggOverflow.java +++ /dev/null @@ -1,39 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.TParseTreeVisitor; -import gudusoft.gsqlparser.nodes.oracle.TListaggOverflow; -import junit.framework.TestCase; - -public class testListAggOverflow extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT department_id \"Dept.\",\n" + - " LISTAGG(last_name, '; ' ON OVERFLOW TRUNCATE '...')\n" + - " WITHIN GROUP (ORDER BY hire_date) \"Employees\"\n" + - " FROM employees"; - assertTrue(sqlparser.parse() == 0); - - functionVisitor fv = new functionVisitor(); - sqlparser.sqlstatements.get(0).acceptChildren(fv); - - } - - class functionVisitor extends TParseTreeVisitor { - - public void preVisit(TFunctionCall functionCall) { - if (functionCall.getFunctionName().toString().equalsIgnoreCase("LISTAGG")) { - TListaggOverflow listaggOverflow = functionCall.getListaggOverflow(); - assertTrue(listaggOverflow.getOn_overflow_type() == TListaggOverflow.ON_OVERFLOW_TRUNCATE); - assertTrue(listaggOverflow.getTruncation_indicator().toString().equalsIgnoreCase("'...'")); - assertTrue(!listaggOverflow.isWithCount()); - assertTrue(!listaggOverflow.isWithoutCount()); - - } - } - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testMaterializedView.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testMaterializedView.java deleted file mode 100644 index 21aea9e5..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testMaterializedView.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropMaterializedViewStmt; -import junit.framework.TestCase; - - -public class testMaterializedView extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "DROP MATERIALIZED VIEW schema1.sampleView PRESERVE TABLE;"; - assertTrue(sqlparser.parse() == 0); - - TDropMaterializedViewStmt dropMaterializedView = (TDropMaterializedViewStmt)sqlparser.sqlstatements.get(0); - assertTrue(dropMaterializedView.getViewName().toString().equalsIgnoreCase("schema1.sampleView")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testMergeInPlsql.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testMergeInPlsql.java deleted file mode 100644 index a4bc1411..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testMergeInPlsql.java +++ /dev/null @@ -1,49 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 13-1-16 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TMergeSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; -import junit.framework.TestCase; - -public class testMergeInPlsql extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "PROCEDURE load_bank_file ()\n" + - "IS\n" + - "BEGIN\n" + - "\n" + - "MERGE INTO ap_bank_branches apb\n" + - "USING (SELECT xbl.bank_num\n" + - "FROM xxuom_bank_load xbl\n" + - "WHERE\t xbl.status = cn_status_bank_num_match) bnk_load\n" + - "ON (apb.bank_num = bnk_load.bank_num)\n" + - "WHEN MATCHED\n" + - "THEN\n" + - "UPDATE SET\n" + - "apb.bank_name = SUBSTR (bnk_load.bank_name, 1, 60)\n" + - "WHEN NOT MATCHED\n" + - "THEN\n" + - "INSERT\t (address_line1)\n" + - "VALUES (NULL);\n" + - "COMMIT;\n" + - "\n" + - "END load_bank_file"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateProcedure createProcedure = (TPlsqlCreateProcedure)sqlparser.sqlstatements.get(0); - TMergeSqlStatement merge = (TMergeSqlStatement)createProcedure.getBodyStatements().get(0); - assertTrue(merge.getTargetTable().toString().equalsIgnoreCase("ap_bank_branches")); - - TSelectSqlStatement select = merge.getUsingTable().getSubquery(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("xxuom_bank_load")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testMethodCall.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testMethodCall.java deleted file mode 100644 index a1297cd8..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testMethodCall.java +++ /dev/null @@ -1,44 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.stmt.TAssignStmt; -import gudusoft.gsqlparser.stmt.TCommonBlock; -import gudusoft.gsqlparser.stmt.oracle.TBasicStmt; -import junit.framework.TestCase; - -public class testMethodCall extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = " BEGIN\n" + - " g_aansprakenSet(p_aanspraak.klantnummer_gerechtigde)(l_datum_ingang).aansprakentabel := p_aanspraak;\n" + - " END addToSet;"; - assertTrue(sqlparser.parse() == 0); - TCommonBlock block = (TCommonBlock)sqlparser.sqlstatements.get(0); - TAssignStmt assignment = (TAssignStmt)block.getBodyStatements().get(0); - TExpression left = assignment.getLeft(); - assertTrue(left.getExpressionType() == EExpressionType.arrayaccess_t); - // TFunctionCall f = basicStmt.getExpr().getFunctionCall(); - // assertTrue(f.getArgs().getExpression(0).toString().equalsIgnoreCase("a => b")); - } - - public void testMethodName(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = " BEGIN \n" + - "schema1.proc1; \n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - TCommonBlock block = (TCommonBlock)sqlparser.sqlstatements.get(0); - TBasicStmt basicStmt = (TBasicStmt)block.getBodyStatements().get(0); - assertTrue(basicStmt.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); - TObjectName proc = basicStmt.getExpr().getObjectOperand(); - assertTrue(proc.getSchemaString().equalsIgnoreCase("schema1")); - assertTrue(proc.getObjectString().equalsIgnoreCase("proc1")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testNamedParameter.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testNamedParameter.java deleted file mode 100644 index 0a044dcd..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testNamedParameter.java +++ /dev/null @@ -1,23 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.stmt.oracle.TBasicStmt; -import gudusoft.gsqlparser.stmt.TCommonBlock; -import junit.framework.TestCase; - -public class testNamedParameter extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "begin\t\n" + - "\ttest_function_call(a => b, c => d);\n" + - "end;"; - assertTrue(sqlparser.parse() == 0); - TCommonBlock block = (TCommonBlock)sqlparser.sqlstatements.get(0); - TBasicStmt basicStmt = (TBasicStmt)block.getBodyStatements().get(0); - TFunctionCall f = basicStmt.getExpr().getFunctionCall(); - assertTrue(f.getArgs().getExpression(0).toString().equalsIgnoreCase("a => b")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testNaturalJoin.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testNaturalJoin.java deleted file mode 100644 index 27a625e5..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testNaturalJoin.java +++ /dev/null @@ -1,29 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EJoinType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TJoin; -import gudusoft.gsqlparser.nodes.TJoinItem; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testNaturalJoin extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT times.time_id, product, quantity FROM inventory NATURAL LEFT OUTER JOIN t1;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TJoin lcJoin = select.joins.getJoin(0); - - TJoinItem lcitem = lcJoin.getJoinItems().getJoinItem(0); - assertTrue(lcitem.getJoinType() == EJoinType.natural_leftouter); - - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testNewConstructor.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testNewConstructor.java deleted file mode 100644 index 9f880a17..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testNewConstructor.java +++ /dev/null @@ -1,35 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TReturnStmt; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateFunction; -import junit.framework.TestCase; - - -public class testNewConstructor extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = " function LogPerformance(\n" + - " pCodStatoElaborazione in varchar2,\n" + - " pDataInizio in timestamp,\n" + - " pDataFine in timestamp default null) return GOL_AGGREGATORI.AGGO_LOG_Performance\n" + - " is\n" + - " begin\n" + - " return new\n" + - " GOL_AGGREGATORI.AGGO_LOG_Performance(\n" + - " pCodStatoElaborazione,\n" + - " pDataInizio,\n" + - " pDataFine);\n" + - " end LogPerformance;"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateFunction function = (TPlsqlCreateFunction)sqlparser.sqlstatements.get(0); - TReturnStmt returnStmt = (TReturnStmt)function.getBodyStatements().get(0); - assertTrue(returnStmt.getExpression().getExpressionType() == EExpressionType.type_constructor_t); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testObjectAccess.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testObjectAccess.java deleted file mode 100644 index c7e311a6..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testObjectAccess.java +++ /dev/null @@ -1,41 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 12-11-1 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testObjectAccess extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT\n" + - " O.OBJECT_ID,\n" + - " XMLAGG (XMLELEMENT (K, O.KEY_1 || '|')).EXTRACT ('//text()') AS TEXT_KEY\n" + - "FROM DAG_OBJECT_FACT O"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(1); - TExpression expression = resultColumn.getExpr(); - TObjectAccess objectAccess = expression.getObjectAccess(); - TExpression objectExpr = objectAccess.getObjectExpr(); - assertTrue(objectExpr.getExpressionType() == EExpressionType.function_t); - TFunctionCall functionCall1 = objectExpr.getFunctionCall(); - TExpression arg1 = functionCall1.getArgs().getExpression(0); - assertTrue(arg1.getExpressionType() ==EExpressionType.function_t ); -// TFunctionCall functionCall2 = arg1.getFunctionCall(); -// assertTrue(functionCall2.getArgs().getExpression(0).toString().equalsIgnoreCase("K")); -// assertTrue(functionCall2.getArgs().getExpression(1).getExpressionType() == EExpressionType.concatenate_t); - TFunctionCall functionCall = objectAccess.getMethod(); - assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("EXTRACT")); - assertTrue(functionCall.getArgs().getExpression(0).toString().equalsIgnoreCase("'//text()'")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testOffsetClause.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testOffsetClause.java deleted file mode 100644 index 54cc9175..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testOffsetClause.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TFetchFirstClause; -import gudusoft.gsqlparser.nodes.TOffsetClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - public class testOffsetClause extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT name FROM Temp_Test\n" + - "ORDER BY name\n" + - "OFFSET 2 ROWS FETCH NEXT 4 ROWS ONLY;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TOffsetClause offsetClause = select.getOffsetClause(); - assertTrue(offsetClause.getSelectOffsetValue().toString().equalsIgnoreCase("2")); - TFetchFirstClause fetchFirstClause = select.getFetchFirstClause(); - assertTrue(fetchFirstClause.getFetchValue().toString().equalsIgnoreCase("4")); - } - } diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testPivot.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testPivot.java deleted file mode 100644 index 91135926..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testPivot.java +++ /dev/null @@ -1,68 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 13-1-12 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testPivot extends TestCase { - - public void testOracle1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT * FROM pivot_table\n" + - " UNPIVOT (yearly_total FOR order_mode IN (store AS 'direct', internet AS 'online'))\n" + - " ORDER BY year, order_mode;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getTargetTable().getTableType() == ETableSource.pivoted_table); - TTable table = select.tables.getTable(0); - assertTrue(table.toString().equalsIgnoreCase("pivot_table")); - - TPivotedTable pivotedTable = select.getTargetTable().getPivotedTable(); - - TPivotClause pivotClause = pivotedTable.getPivotClauseList().getElement(0) ; - assertTrue(pivotClause.getType() == TPivotClause.unpivot); - assertTrue(pivotClause.getValueColumnList().getObjectName(0).toString().equalsIgnoreCase("yearly_total")); - assertTrue(pivotClause.getPivotColumnList().getObjectName(0).toString().equalsIgnoreCase("order_mode")); - - TUnpivotInClause inClause = pivotClause.getUnpivotInClause(); - TUnpivotInClauseItem item0 = inClause.getItems().getElement(0); - assertTrue(item0.getColumn().toString().equalsIgnoreCase("store")); - assertTrue(item0.getConstant().toString().equalsIgnoreCase("'direct'")); - - TUnpivotInClauseItem item1 = inClause.getItems().getElement(1); - assertTrue(item1.getColumn().toString().equalsIgnoreCase("internet")); - assertTrue(item1.getConstant().toString().equalsIgnoreCase("'online'")); - - } - - public void testOracle2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT * FROM orders\n" + - "PIVOT(SUM(order_total) \n" + - "\t\tFOR order_mode IN (SELECT 'direct' AS Store, 'online' AS Internet FROM orders));"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getTargetTable().getTableType() == ETableSource.pivoted_table); - TTable table = select.tables.getTable(0); - assertTrue(table.toString().equalsIgnoreCase("orders")); - TPivotedTable pivotedTable = select.getTargetTable().getPivotedTable(); - TPivotClause pivotClause = pivotedTable.getPivotClauseList().getElement(0); - assertTrue(pivotClause.getType() == TPivotClause.pivot); - - TPivotInClause inClause = pivotClause.getPivotInClause(); - select = inClause.getSubQuery(); - assertTrue(select.getResultColumnList().size() == 2); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("orders")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testRDBMSPackageCall.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testRDBMSPackageCall.java deleted file mode 100644 index e7a204c7..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testRDBMSPackageCall.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testRDBMSPackageCall extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT DBMS_RANDOM.RANDOM FROM dual;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement) sqlparser.getSqlstatements().get(0); - TFunctionCall functionCall = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr().getFunctionCall(); - assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("DBMS_RANDOM.RANDOM")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testRestrictionClause.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testRestrictionClause.java deleted file mode 100644 index 40acd646..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testRestrictionClause.java +++ /dev/null @@ -1,32 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 13-5-16 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ERestrictionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TRestrictionClause; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import junit.framework.TestCase; - -public class testRestrictionClause extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE OR REPLACE VIEW v1(v_c1, v_c2, v_c3) AS SELECT C1, C2, C3 FROM T1\n" + - "WITH CHECK OPTION CONSTRAINT SYS_Cn;"; - assertTrue(sqlparser.parse() == 0); - - TCreateViewSqlStatement viewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(viewSqlStatement.getViewName().toString().equalsIgnoreCase("v1")); - - TRestrictionClause r = viewSqlStatement.getRestrictionClause(); -// assertTrue(r.getType() == TRestrictionClause.with_check_option); - assertTrue(r.getRestrictionType() == ERestrictionType.withCheckOption); - assertTrue(r.getConstraintName().toString().equalsIgnoreCase("SYS_Cn")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testSequence.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testSequence.java deleted file mode 100644 index 9a35d67e..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testSequence.java +++ /dev/null @@ -1,29 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 11-6-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TSequenceOption; -import gudusoft.gsqlparser.stmt.TCreateSequenceStmt; -import junit.framework.TestCase; - -public class testSequence extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE SEQUENCE SOME_SEQ increment by 1 start with 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE NOCACHE NOORDER;"; - assertTrue(sqlparser.parse() == 0); - - TCreateSequenceStmt sequenceStmt = (TCreateSequenceStmt)sqlparser.sqlstatements.get(0); - assertTrue(sequenceStmt.getSequenceName().toString().equalsIgnoreCase("SOME_SEQ")); - for(int i=0;i 0 THEN\n" + - " SELECT m.id INTO instrumentID\n" + - " FROM instrument_mastersecurity m\n" + - " WHERE m.cusip = theCusip;\n" + - " END IF;\n" + - "\n" + - " INSERT INTO MARKETDATA_TRADE_2 VALUES(tradeID, instrumentID, chappyDataID);\n" + - "\n" + - "END persistTrade;"; - - assertTrue(sqlparser.parse() == 0); - TPlsqlCreateProcedure procedure = (TPlsqlCreateProcedure) sqlparser.sqlstatements.get(3); - TCustomSqlStatement sqlStatement = procedure.getBodyStatements().get(3); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insert = (TInsertSqlStatement) sqlStatement; - TResultColumn value0 = insert.getValues().getMultiTarget(0).getColumnList().getResultColumn(0); - TObjectName variable0 = value0.getExpr().getObjectOperand(); - assertTrue (variable0.getDbObjectType() == EDbObjectType.variable); - assertTrue(variable0.getSourceTable() == null); - - } - - public void test2(){ - String sql = "CREATE TABLE MARKETDATA_TRADE\n" + - "(\n" + - " tradeID NUMBER,\n" + - " chappyDataID VARCHAR2,\n" + - " strumentID NUMBER\n" + - ");\n" + - "\n" + - "CREATE TABLE MARKETDATA_TRADE_2\n" + - "(\n" + - " tradeID NUMBER,\n" + - " chappyDataID VARCHAR2,\n" + - " strumentID NUMBER\n" + - ");\n" + - "\n" + - "CREATE PROCEDURE doSomething\n" + - "AS\n" + - " v_row MARKETDATA_TRADE%ROWTYPE;\n" + - "BEGIN\n" + - "\n" + - " SELECT * INTO v_row FROM MARKETDATA_TRADE WHERE tradeID = 1;\n" + - "\n" + - " persistTrade(v_row.tradeID, v_row.chappyDataID, v_row.strumentID);\n" + - "\n" + - "END doSomething;\n" + - "\n" + - "CREATE PROCEDURE persistTrade(tradeID OUT NUMBER, chappyDataID IN VARCHAR2, instrumentID OUT NUMBER)\n" + - "AS\n" + - " instrumentCount NUMBER;\n" + - "BEGIN\n" + - " SELECT MARKETDATA_TRADE_SEQ.NEXTVAL INTO tradeID FROM dual;\n" + - "\n" + - " SELECT COUNT(*) INTO instrumentCount\n" + - " FROM instrument_mastersecurity m\n" + - " WHERE m.cusip = theCusip;\n" + - "\n" + - " IF instrumentCount > 0 THEN\n" + - " SELECT m.id INTO instrumentID\n" + - " FROM instrument_mastersecurity m\n" + - " WHERE m.cusip = theCusip;\n" + - " END IF;\n" + - "\n" + - " INSERT INTO MARKETDATA_TRADE_2 VALUES(tradeID, instrumentID, chappyDataID);\n" + - "\n" + - "END persistTrade;"; - TDDLSQLEnv ddlSQLEnv = new TDDLSQLEnv(null, null, null, null, EDbVendor.dbvoracle, sql); - ddlSQLEnv.initSQLEnv(); - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = sql; - sqlparser.setSqlEnv(ddlSQLEnv); - assertTrue(sqlparser.parse() == 0); - TPlsqlCreateProcedure procedure = (TPlsqlCreateProcedure) sqlparser.sqlstatements.get(3); - TCustomSqlStatement sqlStatement = procedure.getBodyStatements().get(3); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insert = (TInsertSqlStatement) sqlStatement; - TResultColumn value0 = insert.getValues().getMultiTarget(0).getColumnList().getResultColumn(0); - TObjectName variable0 = value0.getExpr().getObjectOperand(); - assertTrue (variable0.getDbObjectType() == EDbObjectType.variable); - assertTrue(variable0.getSourceTable() == null); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testXMLFunction.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testXMLFunction.java deleted file mode 100644 index 019d3c35..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testXMLFunction.java +++ /dev/null @@ -1,84 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.EFunctionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.nodes.TXMLAttributesClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testXMLFunction extends TestCase { - - public static void testXMLElement(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "select\n" + - " column_a,\n" + - " xmlelement(\"ns1:item\",\n" + - " xmlelement(\"ns2:item1\",\n" + - " xmlattributes(\n" + - " attr1 \"attribute\",\n" + - " nvl((select code from mapping where code = 'Default'),'0') \"code\"\n" + - " ),\n" + - " xmlelement(\"ns2:item2\",\n" + - " xmlattributes('type' \"type\"),\n" + - " xmlagg(factor order by name)))) sample_item\n" + - "from TABLE_ABC"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column = select.getResultColumnList().getResultColumn(1); - TExpression expr = column.getExpr(); - TFunctionCall f = expr.getFunctionCall(); - assertTrue(f.getFunctionType() == EFunctionType.xmlelement_t); - assertTrue(f.getXMLElementNameExpr().toString().endsWith("\"ns1:item\"")); - assertTrue(f.getXMLElementValueExprList().size() == 1); - TExpression expr1 = f.getXMLElementValueExprList().getResultColumn(0).getExpr(); - assertTrue(expr1.getExpressionType() == EExpressionType.function_t); - f = expr1.getFunctionCall(); - assertTrue(f.getFunctionType() == EFunctionType.xmlelement_t); - assertTrue(f.getXMLElementNameExpr().toString().endsWith("\"ns2:item1\"")); - TXMLAttributesClause xmlac = f.getXMLAttributesClause(); - assertTrue(xmlac.getValueExprList().size() == 2); - assertTrue(xmlac.getValueExprList().getResultColumn(0).getExpr().toString().endsWith("attr1")); - assertTrue(xmlac.getValueExprList().getResultColumn(0).getAliasClause().toString().endsWith("\"attribute\"")); - assertTrue(xmlac.getValueExprList().getResultColumn(1).getAliasClause().toString().endsWith("\"code\"")); - expr1 = xmlac.getValueExprList().getResultColumn(1).getExpr(); - assertTrue(expr1.getExpressionType() == EExpressionType.function_t); - f = expr1.getFunctionCall(); - assertTrue(f.getFunctionName().toString().endsWith("nvl")); - assertTrue(f.getArgs().getExpression(0).getExpressionType() == EExpressionType.subquery_t); - TSelectSqlStatement subquery = f.getArgs().getExpression(0).getSubQuery(); - assertTrue(subquery.getWhereClause().toString().endsWith("code = 'Default'")); - - } - - public static void testXMLSERIALIZE(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT columna,\n" + - " XMLSERIALIZE(CONTENT DECODE(position_moniker, NULL, NULL, (SELECT DECODE(COUNT(*), 0, NULL, XMLELEMENT(\"Item\", XMLAGG(xml)))\n" + - " from generic_item gi\n" + - " WHERE gi.item_id = 10)) AS CLOB) items,\n" + - " columnc\n" + - " FROM TABLE_A"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column = select.getResultColumnList().getResultColumn(1); - TExpression expr = column.getExpr(); - TFunctionCall f = expr.getFunctionCall(); - assertTrue(f.getFunctionType() == EFunctionType.xmlserialize_t); - expr = f.getExpr1(); - assertTrue(expr.getExpressionType() == EExpressionType.function_t); - f = expr.getFunctionCall(); - assertTrue(f.getFunctionName().toString().equalsIgnoreCase("decode")); - assertTrue(f.getArgs().size() == 4); - assertTrue(f.getArgs().getExpression(3).getExpressionType() == EExpressionType.subquery_t); - TSelectSqlStatement subquery = f.getArgs().getExpression(3).getSubQuery(); - assertTrue(subquery.tables.getTable(0).toString().equalsIgnoreCase("generic_item")); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testXMLTable.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testXMLTable.java deleted file mode 100644 index f9edf546..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testXMLTable.java +++ /dev/null @@ -1,41 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.TXMLPassingClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testXMLTable extends TestCase { - - public static void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "SELECT warehouse_name warehouse,\n" + - " warehouse2.\"Water\", warehouse2.\"Rail\"\n" + - " FROM warehouses,\n" + - " XMLTABLE('/Warehouse'\n" + - " PASSING warehouses.warehouse_spec\n" + - " COLUMNS\n" + - " \"Water\" varchar2(6) PATH '/Warehouse/WaterAccess',\n" + - " \"Rail\" varchar2(6) PATH '/Warehouse/RailAccess') warehouse2;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable Table1 = select.tables.getTable(1); - assertTrue(Table1.getTableType() == ETableSource.xmltable); - TXmlTable xmlTable = Table1.getXmlTable(); - TXmlTableParameter parameter = xmlTable.getArg(); - assertTrue(parameter.getXQueryString().toString().equalsIgnoreCase("'/Warehouse'")); - TXMLPassingClause passingClause = parameter.getXmlPassingClause(); - assertTrue(passingClause.getPassingList().getResultColumn(0).toString().equalsIgnoreCase("warehouses.warehouse_spec")); - assertTrue(parameter.getXmlTableColumns().size() == 2); - TColumnDefinition columnDefinition = parameter.getXmlTableColumns().getColumn(0); - assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("\"Water\"")); - assertTrue(columnDefinition.getDatatype().toString().equalsIgnoreCase("varchar2(6)")); - assertTrue(columnDefinition.getXmlTableColumnPath().toString().equalsIgnoreCase("'/Warehouse/WaterAccess'")); - columnDefinition = parameter.getXmlTableColumns().getColumn(1); - assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("\"Rail\"")); - assertTrue(columnDefinition.getDatatype().toString().equalsIgnoreCase("varchar2(6)")); - assertTrue(columnDefinition.getXmlTableColumnPath().toString().equalsIgnoreCase("'/Warehouse/RailAccess'")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/oracleTest/testplsqldatatype.java b/src/test/java/gudusoft/gsqlparser/oracleTest/testplsqldatatype.java deleted file mode 100644 index cbf9b7fa..00000000 --- a/src/test/java/gudusoft/gsqlparser/oracleTest/testplsqldatatype.java +++ /dev/null @@ -1,86 +0,0 @@ -package gudusoft.gsqlparser.oracleTest; -/* - * Date: 13-1-14 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.TStatementList; -import gudusoft.gsqlparser.stmt.TVarDeclStmt; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlTableTypeDefStmt; -import junit.framework.TestCase; - -public class testplsqldatatype extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE \"PROC4\"( \"A1\" IN NUMBER, \"A2\" NUMBER ) IS\n" + - "\tf0 NATURAL;\n" + - "\tg1 NATURALN;\n" + - "\th2 POSITIVE;\n" + - "\ti3 POSITIVEN;\n" + - "\tj4 SIGNTYPE;\n" + - "\tk5 SIMPLE_INTEGER := 2147483645;\n" + - "\tab6 ROWID;\n" + - "\tac7 UROWID;\n" + - "\taf8 STRING(10);\n" + - "\tag9 BOOLEAN;\n" + - "\tah10 DATE;\n" + - "\tah11 NVARCHAR(10);\n" + - "\tam INTERVAL DAY(3) TO SECOND(3);\n" + - "BEGIN\n" + - " NULL;\n" + - "END;\n" + - "/"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateProcedure createProcedure = (TPlsqlCreateProcedure)sqlparser.sqlstatements.get(0); - TStatementList declares = createProcedure.getDeclareStatements(); - //System.out.println(declares.get(0).sqlstatementtype); - TVarDeclStmt varDeclStmt0 = (TVarDeclStmt)declares.get(0); - TVarDeclStmt varDeclStmt1 = (TVarDeclStmt)declares.get(1); - TVarDeclStmt varDeclStmt2 = (TVarDeclStmt)declares.get(2); - TVarDeclStmt varDeclStmt3 = (TVarDeclStmt)declares.get(3); - TVarDeclStmt varDeclStmt4 = (TVarDeclStmt)declares.get(4); - TVarDeclStmt varDeclStmt5 = (TVarDeclStmt)declares.get(5); - TVarDeclStmt varDeclStmt6 = (TVarDeclStmt)declares.get(6); - TVarDeclStmt varDeclStmt7 = (TVarDeclStmt)declares.get(7); - TVarDeclStmt varDeclStmt8 = (TVarDeclStmt)declares.get(8); - TVarDeclStmt varDeclStmt9 = (TVarDeclStmt)declares.get(9); - TVarDeclStmt varDeclStmt10 = (TVarDeclStmt)declares.get(10); - TVarDeclStmt varDeclStmt11 = (TVarDeclStmt)declares.get(11); - assertTrue(varDeclStmt0.getDataType().getDataType() == EDataType.natural_t); - assertTrue(varDeclStmt1.getDataType().getDataType() == EDataType.naturaln_t); - assertTrue(varDeclStmt2.getDataType().getDataType() == EDataType.positive_t); - assertTrue(varDeclStmt3.getDataType().getDataType() == EDataType.positiven_t); - assertTrue(varDeclStmt4.getDataType().getDataType() == EDataType.signtype_t); - assertTrue(varDeclStmt5.getDataType().getDataType() == EDataType.simple_integer_t); - assertTrue(varDeclStmt6.getDataType().getDataType() == EDataType.rowid_t); - assertTrue(varDeclStmt7.getDataType().getDataType() == EDataType.urowid_t); - assertTrue(varDeclStmt8.getDataType().getDataType() == EDataType.string_t); - assertTrue(varDeclStmt9.getDataType().getDataType() == EDataType.boolean_t); - assertTrue(varDeclStmt10.getDataType().getDataType() == EDataType.date_t); - assertTrue(varDeclStmt11.getDataType().getDataType() == EDataType.nvarchar_t); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE TESTPROC1( A1 NUMBER )\n" + - "IS\n" + - "TYPE TYP1 IS TABLE OF PLS_INTEGER INDEX BY VARCHAR2(64);\n" + - "BEGIN\n" + - "NULL;\n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - - TPlsqlCreateProcedure createProcedure = (TPlsqlCreateProcedure)sqlparser.sqlstatements.get(0); - TStatementList declares = createProcedure.getDeclareStatements(); - TPlsqlTableTypeDefStmt varDeclStmt0 = (TPlsqlTableTypeDefStmt)declares.get(0); - assertTrue(varDeclStmt0.getIndexByDataType().getDataType() == EDataType.varchar2_t); - //System.out.println(varDeclStmt0.getIndexByDataType().getDataType()); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/partialParseTest/testPartialParseCreateTable.java b/src/test/java/gudusoft/gsqlparser/partialParseTest/testPartialParseCreateTable.java deleted file mode 100644 index 9474612a..00000000 --- a/src/test/java/gudusoft/gsqlparser/partialParseTest/testPartialParseCreateTable.java +++ /dev/null @@ -1,60 +0,0 @@ -package gudusoft.gsqlparser.partialParseTest; -/* - * Date: 12-11-2 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testPartialParseCreateTable extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - sqlparser.sqltext = "create table COURT \n" + - "(\n" + - "COURT_CODE VARCHAR2(1) not null,\n" + - "COURT_DESC VARCHAR2(255) default 'XNA' not null,\n" + - "SOURCE_SYSTEM VARCHAR2(10) not null,\n" + - "DW_DELETED_FLAG CHAR not null,\n" + - "DW_CURRENT_FLAG CHAR not null\n" + - ")\n" + - "pctfree 5\n" + - "partition by range\n" + - "(DW_CURRENT_FLAG)\n" + - "(\n" + - "partition PARTITION_HISTORY values less than ('Y')\n" + - ",partition PARTITION_CURRENT values less than (maxvalue)\n" + - ")\n" + - "enable row movement;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition columnDefinition = createTableSqlStatement.getColumnList().getColumn(1); - assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("COURT_DESC")); - assertTrue(columnDefinition.getDatatype().toString().equalsIgnoreCase("VARCHAR2(255)")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); - sqlparser.sqltext = "CREATE TABLE \"USA\".\"PAY_BEHV_LKUP_S\" ( \"MAX_ACT_FINAL_SCORE\",\n" + - "\"MAX_FLAT_REV_SCORE\", \"MIN_ACT_FINAL_SCORE\", \"MIN_FLAT_REV_SCORE\",\n" + - "\"PAY_BHAV_CD\" ) AS ( SELECT * FROM USA.PAY_BEHV_LKUP) DATA INITIALLY DEFERRED\n" + - "REFRESH DEFERRED ENABLE QUERY OPTIMIZATION MAINTAINED BY SYSTEM DATA CAPTURE\n" + - "NONE IN CONUSA_B1692 PARTITIONING KEY ( MAX_ACT_FINAL_SCORE ) USING HASHING"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.getColumnList().getColumn(0).toString().equalsIgnoreCase("\"MAX_ACT_FINAL_SCORE\"")); - TSelectSqlStatement select = createTableSqlStatement.getSubQuery(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("USA.PAY_BEHV_LKUP")); - // TColumnDefinition columnDefinition = createTableSqlStatement.getColumnList().getColumn(1); - // assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("COURT_DESC")); - // assertTrue(columnDefinition.getDatatype().toString().equalsIgnoreCase("VARCHAR2(255)")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testBuiltinFunctions.java b/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testBuiltinFunctions.java deleted file mode 100644 index 4b1ef941..00000000 --- a/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testBuiltinFunctions.java +++ /dev/null @@ -1,281 +0,0 @@ -package gudusoft.gsqlparser.plsqlInterpreterTest; - -import gudusoft.gsqlparser.EDbVendor; - -public class testBuiltinFunctions extends testInterpreterBase { - public void testABS() { - String expectedValue = "100"; - String inputSQL = "DECLARE\n" + - "a INTEGER := -100;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(ABS(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "100.543"; - inputSQL = "DECLARE\n" + - "a NUMBER(8,3) := -100.543;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(ABS(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "6"; - inputSQL = "DECLARE\n" + - "a INTEGER := 6;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(ABS(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "0"; - inputSQL = "DECLARE\n" + - "a INTEGER := 0;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(ABS(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testACOS() { - String expectedValue = "1.2661036727794992"; - String inputSQL = "DECLARE\n" + - "a NUMBER := .3;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(ACOS(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testSIN() { - String expectedValue = "0.5000000000000299"; - String inputSQL = "DECLARE\n" + - "a NUMBER := 30 * 3.14159265359/180;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(SIN(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testSUBSTR() { - String expectedValue = "CDEF"; - String inputSQL = "DECLARE\n" + - " a VARCHAR(25) := 'ABCDEFG';\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(SUBSTR(a,3,4));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - inputSQL = "DECLARE\n" + - " a VARCHAR(25) := 'ABCDEFG';\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(SUBSTR(a,-5,4));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "ABCD"; - inputSQL = "DECLARE\n" + - " a VARCHAR(25) := 'ABCDEFG';\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(SUBSTR(a,1,4));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - inputSQL = "DECLARE\n" + - " a VARCHAR(25) := 'ABCDEFG';\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(SUBSTR(a,0,4));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "CDEFG"; - inputSQL = "DECLARE\n" + - " a VARCHAR(25) := 'ABCDEFG';\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(SUBSTR(a,3));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - inputSQL = "DECLARE\n" + - " a VARCHAR(25) := 'ABCDEFG';\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(SUBSTR(a,-5));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testTRIM() { - String expectedValue = "AB CD"; - String inputSQL = "DECLARE\n" + - "a VARCHAR(25) := ' AB CD ';\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(TRIM(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testUPPER() { - String expectedValue = "ABCD"; - String inputSQL = "DECLARE\n" + - "a VARCHAR(25) := 'abcD';\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(UPPER(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testLOWER() { - String expectedValue = "mr. scott mcmillan"; - String inputSQL = "DECLARE\n" + - "a VARCHAR(25) := 'MR. SCOTT MCMILLAN';\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(LOWER(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testMOD() { - String expectedValue = "3"; - String inputSQL = "DECLARE\n" + - "a INTEGER := 11;\n" + - "b INTEGER := 4;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(MOD(a, b));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "11"; - inputSQL = "DECLARE\n" + - "a INTEGER := 11;\n" + - "b INTEGER := 0;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(MOD(a, b));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - //REPLACE - public void testREPLACE() { - String expectedValue = "BLACK and BLUE"; - String inputSQL = "DECLARE\n" + - "a VARCHAR(25) := 'JACK and JUE';\n" + - "b VARCHAR(25) := 'J';\n" + - "c VARCHAR(25) := 'BL';\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(REPLACE(a, b, c));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - //SIGN - public void testSIGN() { - String expectedValue = "1"; - String inputSQL = "DECLARE\n" + - "a NUMBER := 6.9;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(SIGN(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "0"; - inputSQL = "DECLARE\n" + - "a NUMBER := 0;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(SIGN(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "-1"; - inputSQL = "DECLARE\n" + - "a NUMBER := -6;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(SIGN(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testROUND() { - String expectedValue = "15.2"; - String inputSQL = "DECLARE\n" + - "a NUMBER := 15.193;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(ROUND(a, 1));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "0.0"; - inputSQL = "DECLARE\n" + - "a NUMBER := 0;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(ROUND(a, 6));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "20.0"; - inputSQL = "DECLARE\n" + - "a NUMBER := 15.193;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(ROUND(a, -1));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "16.0"; - inputSQL = "DECLARE\n" + - "a NUMBER := 15.993;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(ROUND(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testTAN() { - String expectedValue = "-0.9656887748"; - String inputSQL = "DECLARE\n" + - "a NUMBER := 136 * 3.14159265359/180;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(TAN(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - - expectedValue = "-1.0"; - inputSQL = "DECLARE\n" + - "a NUMBER := 135 * 3.14159265359/180;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(TAN(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testLOG() { - String expectedValue = "2.0"; - String inputSQL = "DECLARE\n" + - "a NUMBER := 10;\n" + - "b NUMBER := 100;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(LOG(a, b));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testCOS() { - String expectedValue = "-1.0"; - String inputSQL = "DECLARE\n" + - "a NUMBER := 180 * 3.14159265359/180;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(COS(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testCOSH() { - String expectedValue = "1.0"; - String inputSQL = "DECLARE\n" + - "a NUMBER := 0;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(COSH(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testInterpreterBase.java b/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testInterpreterBase.java deleted file mode 100644 index 56279371..00000000 --- a/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testInterpreterBase.java +++ /dev/null @@ -1,44 +0,0 @@ -package gudusoft.gsqlparser.plsqlInterpreterTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.compiler.TASTEvaluator; -import gudusoft.gsqlparser.compiler.TGlobalScope; -import gudusoft.gsqlparser.sqlenv.TSQLEnv; -import junit.framework.TestCase; - -public class testInterpreterBase extends TestCase { - boolean doEvaluate(EDbVendor dbVendor, String inputSQL, String expectedValue){ - // EDbVendor dbVendor = EDbVendor.dbvpostgresql; - TSQLEnv sqlEnv = new TSQLEnv(dbVendor) { - @Override - public void initSQLEnv() { - } - }; - - TGlobalScope globalScope = new TGlobalScope(sqlEnv); - TGSqlParser sqlParser = new TGSqlParser(dbVendor); - sqlParser.sqltext = inputSQL; - - boolean enableInterpreter = TBaseType.ENABLE_INTERPRETER; - TBaseType.ENABLE_INTERPRETER = true; - int ret = sqlParser.parse(); - if (ret != 0){ - System.out.println(sqlParser.getErrormessage()); - return false; - } - - TLog.clearLogs(); - TLog.enableInterpreterLogOnly(); - TLog.setOutputSimpleMode(true); - - TASTEvaluator astEvaluator = new TASTEvaluator(sqlParser.sqlstatements,globalScope); - String retValue = astEvaluator.eval(); - TBaseType.ENABLE_INTERPRETER = enableInterpreter; - - return TBaseType.compareStringsLineByLine(expectedValue,TBaseType.dumpLogsToString()); - - } - public void test1() { - assertTrue(1==1); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testPostgres.java b/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testPostgres.java deleted file mode 100644 index 25c1871c..00000000 --- a/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testPostgres.java +++ /dev/null @@ -1,77 +0,0 @@ -package gudusoft.gsqlparser.plsqlInterpreterTest; - -import gudusoft.gsqlparser.EDbVendor; - -public class testPostgres extends testInterpreterBase { - - public void test1() { - String expectedValue = "Quantity here is 30\n" + - "Quantity here is 80\n" + - "Outer quantity here is 50\n" + - "Quantity here is 50\n" + - "52"; - String inputSQL = "CREATE FUNCTION somefunc() RETURNS integer AS $$\n" + - "<< outerblock >>\n" + - "DECLARE\n" + - " quantity integer := 30;\n" + - "BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30\n" + - " quantity := 50;\n" + - " --\n" + - " -- Create a subblock\n" + - " --\n" + - " DECLARE\n" + - " quantity integer := 80;\n" + - " BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80\n" + - " RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50\n" + - " END;\n" + - "\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50\n" + - "\n" + - " RETURN quantity;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;\n" + - "\n" + - "select somefunc()+2;"; - assertTrue(doEvaluate(EDbVendor.dbvpostgresql,inputSQL,expectedValue)); - } - - public void test2() { - String expectedValue = "f1 = 5, f2 = abc"; - String inputSQL = "CREATE OR REPLACE PROCEDURE test_sp1(f1 int, f2 varchar)\n" + - "AS $$\n" + - "BEGIN\n" + - " RAISE INFO 'f1 = %, f2 = %', f1, f2;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;\n" + - "\n" + - "call test_sp1(5, 'abc');"; - assertTrue(doEvaluate(EDbVendor.dbvpostgresql,inputSQL,expectedValue)); - } - - public void test3() { - String expectedValue = "Value here is 20\nValue here is 80\nValue here is 50"; - String inputSQL = "CREATE PROCEDURE update_value() AS $$\n" + - "DECLARE\n" + - "value integer := 20;\n" + - "BEGIN\n" + - "\tRAISE NOTICE 'Value here is %', value; -- Value here is 20\n" + - "\tvalue := 50;\n" + - "--\n" + - "-- Create a subblock\n" + - "--\n" + - "\tDECLARE\n" + - "\tvalue integer := 80;\n" + - "\tBEGIN\n" + - "\t\tRAISE NOTICE 'Value here is %', value; -- Value here is 80\n" + - "\tEND;\n" + - "\n" + - "\tRAISE NOTICE 'Value here is %', value; -- Value here is 50\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;\n" + - "\n" + - "call update_value();"; - assertTrue(doEvaluate(EDbVendor.dbvpostgresql,inputSQL,expectedValue)); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testRedshift.java b/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testRedshift.java deleted file mode 100644 index e114b28a..00000000 --- a/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testRedshift.java +++ /dev/null @@ -1,34 +0,0 @@ -package gudusoft.gsqlparser.plsqlInterpreterTest; - -import gudusoft.gsqlparser.EDbVendor; - -public class testRedshift extends testInterpreterBase{ - - public void test1() { - String expectedValue = "x is 15, y is 20, multiplier is 5"; - String inputSQL = "CREATE OR REPLACE PROCEDURE inner_proc(INOUT a int, b int, INOUT c int) LANGUAGE plpgsql\n" + - "AS $$\n" + - "BEGIN\n" + - " a := b * a;\n" + - " c := b * c;\n" + - "END;\n" + - "$$;\n" + - "\n" + - "CREATE OR REPLACE PROCEDURE outer_proc(multiplier int) LANGUAGE plpgsql\n" + - "AS $$\n" + - "DECLARE\n" + - " x int := 3;\n" + - " y int := 4;\n" + - "BEGIN\n" + - " DROP TABLE IF EXISTS test_tbl;\n" + - " CREATE TEMP TABLE test_tbl(a int, b varchar(256));\n" + - " CALL inner_proc(x, multiplier, y);\n" + - " RAISE NOTICE 'x is %, y is %, multiplier is %', x,y,multiplier;\n" + - " insert into test_tbl values (x, y::varchar);\n" + - "END;\n" + - "$$;\n" + - "\n" + - "CALL outer_proc(5);"; - assertTrue(doEvaluate(EDbVendor.dbvredshift, inputSQL,expectedValue)); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testTestPutline.java b/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testTestPutline.java deleted file mode 100644 index 825b768f..00000000 --- a/src/test/java/gudusoft/gsqlparser/plsqlInterpreterTest/testTestPutline.java +++ /dev/null @@ -1,448 +0,0 @@ -package gudusoft.gsqlparser.plsqlInterpreterTest; - -import gudusoft.gsqlparser.EDbVendor; - - -public class testTestPutline extends testInterpreterBase { - - public void testBlockNested2() { - String expectedValue = "Credit rating over limit (1.0). Rating: 3.0"; - String inputSQL = "CREATE OR REPLACE PROCEDURE check_credit (credit_limit NUMBER) AS\n" + - "\trating NUMBER := 3;\n" + - "\tFUNCTION check_rating RETURN BOOLEAN IS\n" + - "\t\trating NUMBER := 1;\n" + - "\t\tover_limit BOOLEAN;\n" + - "\tBEGIN\n" + - "\t\tIF check_credit.rating <= credit_limit THEN -- reference global variable\n" + - "\t\t\tover_limit := FALSE;\n" + - "\t\t\tELSE\n" + - "\t\t\tover_limit := TRUE;\n" + - "\t\t\trating := credit_limit; -- reference local variable\n" + - "\t\tEND IF;\n" + - "\t\tRETURN over_limit;\n" + - "\tEND check_rating;\n" + - "\t\n" + - "BEGIN\n" + - "\tIF check_rating THEN\n" + - "\t\tDBMS_OUTPUT.PUT_LINE\n" + - "\t\t('Credit rating over limit (' || TO_CHAR(credit_limit) || '). '\n" + - "\t\t|| 'Rating: ' || TO_CHAR(rating));\n" + - "\t\tELSE\n" + - "\t\tDBMS_OUTPUT.PUT_LINE\n" + - "\t\t('Credit rating OK. ' || 'Rating: ' || TO_CHAR(rating));\n" + - "\tEND IF;\n" + - "END;\n" + - "\n" + - "/\n" + - "BEGIN\n" + - "\tcheck_credit(1);\n" + - "END;"; - - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testBlockNested1() { - String expectedValue = "Credit rating OK. Rating: 3.0"; - String inputSQL = "CREATE OR REPLACE PROCEDURE check_credit (credit_limit NUMBER) AS\n" + - "\trating NUMBER := 3;\n" + - "\tFUNCTION check_rating RETURN BOOLEAN IS\n" + - "\t\trating NUMBER := 1;\n" + - "\t\tover_limit BOOLEAN;\n" + - "\tBEGIN\n" + - "\t\tIF check_credit.rating <= credit_limit THEN -- reference global variable\n" + - "\t\t\tover_limit := FALSE;\n" + - "\t\t\tELSE\n" + - "\t\t\tover_limit := TRUE;\n" + - "\t\t\trating := credit_limit; -- reference local variable\n" + - "\t\tEND IF;\n" + - "\t\tRETURN over_limit;\n" + - "\tEND check_rating;\n" + - "\t\n" + - "BEGIN\n" + - "\tIF check_rating THEN\n" + - "\t\tDBMS_OUTPUT.PUT_LINE\n" + - "\t\t('Credit rating over limit (' || TO_CHAR(credit_limit) || '). '\n" + - "\t\t|| 'Rating: ' || TO_CHAR(rating));\n" + - "\t\tELSE\n" + - "\t\tDBMS_OUTPUT.PUT_LINE\n" + - "\t\t('Credit rating OK. ' || 'Rating: ' || TO_CHAR(rating));\n" + - "\tEND IF;\n" + - "END;\n" + - "\n" + - "/\n" + - "BEGIN\n" + - "\tcheck_credit(5);\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testBlockLabel6() { - String expectedValue = "In procedure q, x = b\n" + - "In procedure p, x = a"; - String inputSQL = "DECLARE\n" + - "\tPROCEDURE p\n" + - "\tIS\n" + - "\t\tx VARCHAR2(1);\n" + - "\tBEGIN\n" + - "\t\tx := 'a'; -- Assign the value 'a' to x\n" + - "\t\tDBMS_OUTPUT.PUT_LINE('In procedure p, x = ' || x);\n" + - "\tEND;\n" + - "\tPROCEDURE q\n" + - "\tIS\n" + - "\t\tx VARCHAR2(1);\n" + - "\tBEGIN\n" + - "\t\tx := 'b'; -- Assign the value 'b' to x\n" + - "\t\tDBMS_OUTPUT.PUT_LINE('In procedure q, x = ' || x);\n" + - "\tEND;\n" + - "BEGIN\n" + - "\tq;\n" + - "\tp;\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testBlockLabel5() { - String expectedValue = "In procedure p, x = a\n" + - "In procedure q, x = b"; - String inputSQL = "DECLARE\n" + - "\tPROCEDURE p\n" + - "\tIS\n" + - "\t\tx VARCHAR2(1);\n" + - "\tBEGIN\n" + - "\t\tx := 'a'; -- Assign the value 'a' to x\n" + - "\t\tDBMS_OUTPUT.PUT_LINE('In procedure p, x = ' || x);\n" + - "\tEND;\n" + - "\tPROCEDURE q\n" + - "\tIS\n" + - "\t\tx VARCHAR2(1);\n" + - "\tBEGIN\n" + - "\t\tx := 'b'; -- Assign the value 'b' to x\n" + - "\t\tDBMS_OUTPUT.PUT_LINE('In procedure q, x = ' || x);\n" + - "\tEND;\n" + - "BEGIN\n" + - "\tp;\n" + - "\tq;\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testBlockLabel4() { - String expectedValue = "echo.x = 0.0\n" + - "x = 0.0"; - String inputSQL = "<>\n" + - "DECLARE\n" + - "x NUMBER := 5;\n" + - "\tPROCEDURE echo AS\n" + - "\t\tx NUMBER := 0;\n" + - "\tBEGIN\n" + - "\t\tDBMS_OUTPUT.PUT_LINE('echo.x = ' || echo.x);\n" + - "\t\tDBMS_OUTPUT.PUT_LINE('x = ' || x);\n" + - "\tEND;\n" + - "BEGIN\n" + - "echo;\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testBlockLabel3() { - String expectedValue = "x = 0.0\n" + - "echo1.x = 5.0"; - String inputSQL = "<>\n" + - "DECLARE\n" + - "x NUMBER := 5;\n" + - "\tPROCEDURE echo AS\n" + - "\t\tx NUMBER := 0;\n" + - "\tBEGIN\n" + - "\t\tDBMS_OUTPUT.PUT_LINE('x = ' || x);\n" + - "\t\tDBMS_OUTPUT.PUT_LINE('echo1.x = ' || echo1.x);\n" + - "\tEND;\n" + - "BEGIN\n" + - "echo;\n" + - "END;\n"; - // System.out.println(inputSQL); - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testBlockLabel2() { - String expectedValue = "Different Birthday19991909"; - String inputSQL = "<> -- label\n" + - "DECLARE\n" + - "birthdate integer := 1909;\n" + - "BEGIN\n" + - "\tDECLARE\n" + - "\tbirthdate integer := 1999;\n" + - "\tBEGIN\n" + - "\t\tIF birthdate = outer.birthdate THEN\n" + - "\t\tDBMS_OUTPUT.PUT_LINE ('Same Birthday'||birthdate||outer.birthdate);\n" + - "\t\tELSE\n" + - "\t\tDBMS_OUTPUT.PUT_LINE ('Different Birthday'||birthdate||outer.birthdate);\n" + - "\t\tEND IF;\n" + - "\tEND;\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testBlockLabel1() { - String expectedValue = "Same Birthday19991999"; - String inputSQL = "<> -- label\n" + - "DECLARE\n" + - "birthdate integer := 1999;\n" + - "BEGIN\n" + - "\tDECLARE\n" + - "\tbirthdate integer := 1999;\n" + - "\tBEGIN\n" + - "\t\tIF birthdate = outer.birthdate THEN\n" + - "\t\tDBMS_OUTPUT.PUT_LINE ('Same Birthday'||birthdate||outer.birthdate);\n" + - "\t\tELSE\n" + - "\t\tDBMS_OUTPUT.PUT_LINE ('Different Birthday'||birthdate||outer.birthdate);\n" + - "\t\tEND IF;\n" + - "\tEND;\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testOperatorProcedence() { - String expectedValue = "b+d=71.1"; - String inputSQL = "DECLARE\n" + - "b REAL; -- Scope of b begins\n" + - "d REAL;\n" + - "BEGIN\n" + - "\tb := 4.5;\n" + - "\td := 66.6;\n" + - "\tDBMS_OUTPUT.PUT_LINE ('b+d='||(b+d)); \n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testNestScope() { - String expectedValue = "a+c=5.2\n" + - "inner d=78.9\n" + - "outer d=66.6"; - String inputSQL = "-- Outer block:\n" + - "DECLARE\n" + - "a CHAR; -- Scope of a (CHAR) begins\n" + - "b REAL; -- Scope of b begins\n" + - "d REAL;\n" + - "BEGIN\n" + - "-- Visible: a (CHAR), b\n" + - "-- First sub-block:\n" + - "\t\n" + - "\ta := 'c';\n" + - "\tb := 4.5;\n" + - "\td := 66.6;\n" + - "\tDECLARE\n" + - "\ta INTEGER; -- Scope of a (INTEGER) begins\n" + - "\tc REAL; -- Scope of c begins\n" + - "\tBEGIN\n" + - "\t\t-- Visible: a (INTEGER), b, c\n" + - "\t\ta := 2;\n" + - "\t\tc := 3.2;\n" + - "\t\tDBMS_OUTPUT.PUT_LINE ('a+c='||to_char(a+c));\n" + - "\t\t\n" + - "\t\tNULL;\n" + - "\tEND; -- Scopes of a (INTEGER) and c end\n" + - "\t-- Second sub-block:\n" + - "\tDECLARE\n" + - "\td REAL; -- Scope of d begins\n" + - "\tBEGIN\n" + - "\t d := 78.9;\n" + - "\t\t-- Visible: a (CHAR), b, d\n" + - "\t\tDBMS_OUTPUT.PUT_LINE ('inner d='||to_char(d));\n" + - "\t\tNULL;\n" + - "\tEND; -- Scope of d ends\n" + - "\t-- Visible: a (CHAR), b\n" + - "\tDBMS_OUTPUT.PUT_LINE ('outer d='||to_char(d));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testCreateProcedure() { - String expectedValue = "Table updated? No, bonus = 0.0.\n" + - "Table updated? Yes, bonus = 125.0."; - String inputSQL = "DECLARE\n" + - "PROCEDURE p (\n" + - "sales NUMBER,\n" + - "quota NUMBER,\n" + - "emp_id NUMBER\n" + - ")\n" + - "IS\n" + - "\tbonus NUMBER := 0;\n" + - "\tupdated VARCHAR2(3) := 'No';\n" + - "BEGIN\n" + - "IF sales > (quota + 200) THEN\n" + - "\tbonus := (sales - quota)/4;\n" + - "\n" + - "\tupdated := 'Yes';\n" + - "END IF;\n" + - "\tDBMS_OUTPUT.PUT_LINE (\n" + - "\t'Table updated? ' || updated || ', ' ||\n" + - "\t'bonus = ' || bonus || '.'\n" + - "\t);\n" + - "END p;\n" + - "BEGIN\n" + - "\tp(10100, 10000, 120);\n" + - "\tp(10500, 10000, 121);\n" + - "END;\n" + - "/"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - - public void testWhile() { - String expectedValue = "Hello, world!"; - String inputSQL = "DECLARE\n" + - "\tdone BOOLEAN := FALSE;\n" + - "BEGIN\n" + - "WHILE done LOOP\n" + - "\tDBMS_OUTPUT.PUT_LINE ('This line does not print.');\n" + - "\tdone := TRUE; -- This assignment is not made.\n" + - "END LOOP;\n" + - "\n" + - "WHILE NOT done LOOP\n" + - "\tDBMS_OUTPUT.PUT_LINE ('Hello, world!');\n" + - "\tdone := TRUE;\n" + - "END LOOP;\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testIfElse() { - String expectedValue = "less10.0"; - String inputSQL = "DECLARE\n" + - "\tsales NUMBER := 10;\n" + - "BEGIN\n" + - "\tIF sales > 10 THEN\n" + - "\t\tDBMS_OUTPUT.PUT_LINE('great' ||sales);\n" + - "\tELSE\n" + - "\t DBMS_OUTPUT.PUT_LINE('less' || sales);\n" + - "\tEND IF;\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testIfThen() { - String expectedValue = "great10.0"; - String inputSQL = "DECLARE\n" + - "\tsales NUMBER := 10;\n" + - "BEGIN\n" + - "\tIF sales > 1 THEN\n" + - "\t\tDBMS_OUTPUT.PUT_LINE('great' ||sales);\n" + - "\tELSE\n" + - "\t DBMS_OUTPUT.PUT_LINE('less' || sales);\n" + - "\tEND IF;\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testDiv() { - String expectedValue = "2.5"; - String inputSQL = "DECLARE\n" + - "\tbonus NUMBER := 0;\n" + - "\tquota NUMBER := 0;\n" + - "BEGIN\n" + - "bonus := (10 - quota)/4;\n" + - "DBMS_OUTPUT.PUT_LINE(bonus);\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - public void testNestedParenthesis() { - String expectedValue = "a = 3"; - String inputSQL = "DECLARE\n" + - "a INTEGER := ((1+2)*(3+4))/7;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE('a = ' || TO_CHAR(a));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testUminus() { - String expectedValue = "-1"; - String inputSQL = "DECLARE\n" + - "a INTEGER := -1;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(a);\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testToChar() { - String expectedValue = "3\n" + - "a = 3\n" + - "b = 9"; - String inputSQL = "DECLARE\n" + - "a INTEGER := 1+2;\n" + - "b INTEGER := (1+2)**2;\n" + - "BEGIN\n" + - "DBMS_OUTPUT.PUT_LINE(a);\n" + - "DBMS_OUTPUT.PUT_LINE('a = ' || TO_CHAR(a));\n" + - "DBMS_OUTPUT.PUT_LINE('b = ' || TO_CHAR(b));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void test1() { - String expectedValue = "name=Smith"; - String inputSQL = "DECLARE\n" + - " name VARCHAR(25) NOT NULL := 'Smith';\n" + - " surname VARCHAR(25) := 'Jones';\n" + - "BEGIN\n" + - " DBMS_OUTPUT.PUT_LINE('name=' || name);\n" + - " --DBMS_OUTPUT.PUT_LINE('surname=' || surname);\n" + - " --DBMS_OUTPUT.PUT_LINE('chr=' || chr(65));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testCHR() { - String expectedValue = "chr=A"; - String inputSQL = "DECLARE\n" + - " name VARCHAR(25) NOT NULL := 'Smith';\n" + - " surname VARCHAR(25) := 'Jones';\n" + - "BEGIN\n" + - " DBMS_OUTPUT.PUT_LINE('chr=' || chr(65));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - - public void testCONCAT() { - String expectedValue = "name=SmithJones"; - String inputSQL = "DECLARE\n" + - " name VARCHAR(25) NOT NULL := 'Smith';\n" + - " surname VARCHAR(25) := 'Jones';\n" + - "BEGIN\n" + - " DBMS_OUTPUT.PUT_LINE('name=' || concat(name,surname));\n" + - "END;"; - assertTrue(doEvaluate(EDbVendor.dbvoracle,inputSQL,expectedValue)); - } - -// boolean doEvaluate(String inputSQL, String expectedValue){ -// EDbVendor dbVendor = EDbVendor.dbvoracle; -// TSQLEnv sqlEnv = new TSQLEnv(dbVendor) { -// @Override -// public void initSQLEnv() { -// } -// }; -// -// TGlobalScope globalScope = new TGlobalScope(sqlEnv); -// TGSqlParser sqlParser = new TGSqlParser(dbVendor); -// sqlParser.sqltext = inputSQL; -// -// int ret = sqlParser.parse(); -// if (ret != 0){ -// System.out.println(sqlParser.getErrormessage()); -// return false; -// } -// -// -// TLog.clearLogs(); -// TLog.enableInterpreterLogOnly(); -// TLog.setOutputSimpleMode(true); -// -// TASTEvaluator astEvaluator = new TASTEvaluator(sqlParser.sqlstatements,globalScope); -// astEvaluator.eval(); -// -// String retValue = TBaseType.dumpLogsToString(); -// return TBaseType.compareStringsLineByLine(retValue,expectedValue); -// } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testAggregateExpressions.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testAggregateExpressions.java deleted file mode 100644 index c3d7486a..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testAggregateExpressions.java +++ /dev/null @@ -1,37 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-5-24 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.TOrderBy; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testAggregateExpressions extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT array_agg(a ORDER BY b DESC) FROM table1 "; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = column0.getExpr(); - assertTrue(expression0.getExpressionType() == EExpressionType.function_t); - TFunctionCall functionCall = expression0.getFunctionCall(); - assertTrue(functionCall.getArgs().size() == 1); - assertTrue(functionCall.getArgs().getExpression(0).toString().equalsIgnoreCase("a")); - TOrderBy orderBy = functionCall.getSortClause(); - assertTrue(orderBy.getItems().getOrderByItem(0).getSortKey().toString().equalsIgnoreCase("b")); - - sqlparser.sqltext = "SELECT string_agg(a, ',' ORDER BY a) FROM table1 "; - assertTrue(sqlparser.parse() == 0); - //System.out.println(orderBy.getItems().getOrderByItem(0).getSortKey().toString()); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testAlterFunction.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testAlterFunction.java deleted file mode 100644 index 88fca192..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testAlterFunction.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAlterFunctionStmt; -import junit.framework.TestCase; - -public class testAlterFunction extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "ALTER FUNCTION sqlflow.add(integer, integer) OWNER TO bigking;"; - assertTrue(sqlparser.parse() == 0); - - TAlterFunctionStmt alter = (TAlterFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(alter.getFunctionName().toString().equalsIgnoreCase("sqlflow.add")); - assertTrue(alter.getOwnerName().toString().equalsIgnoreCase("bigking")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testAlterTable.java deleted file mode 100644 index f87f02dc..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testAlterTable.java +++ /dev/null @@ -1,46 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-8-2 - */ - -import gudusoft.gsqlparser.EAlterTableOptionType; -import gudusoft.gsqlparser.EConstraintType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TAlterTableOption; -import gudusoft.gsqlparser.nodes.TConstraint; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import junit.framework.TestCase; - -public class testAlterTable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "ALTER TABLE test\n" + - " ADD CONSTRAINT pkey PRIMARY KEY (id);"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alter = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = alter.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.AddConstraint); - - TConstraint constraint = alterTableOption.getTableConstraint(); - assertTrue(constraint.getConstraint_type() == EConstraintType.primary_key ); - assertTrue(constraint.getColumnList().getElement(0).getColumnName().toString().equalsIgnoreCase("id")); - } - - public void testOwner(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "ALTER TABLE public.test OWNER TO bigking;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alter = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alter.getTableName().toString().equalsIgnoreCase("public.test")); - TAlterTableOption alterTableOption = alter.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.ownerTo); - assertTrue(alterTableOption.getNewOwnerName().toString().equalsIgnoreCase("bigking")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testArrayConstructor.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testArrayConstructor.java deleted file mode 100644 index 57a112a7..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testArrayConstructor.java +++ /dev/null @@ -1,92 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-5-24 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testArrayConstructor extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT ARRAY[1,2,3+4] "; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = column0.getExpr(); - assertTrue(expression0.getExpressionType() == EExpressionType.array_constructor_t); - assertTrue(expression0.getExprList().getExpression(0).toString().equalsIgnoreCase("1")); - assertTrue(expression0.getExprList().getExpression(1).toString().equalsIgnoreCase("2")); - assertTrue(expression0.getExprList().getExpression(2).toString().equalsIgnoreCase("3+4")); -// System.out.println(expression0.getExprList().getExpression(0).toString()); - - sqlparser.sqltext = "SELECT ARRAY[1,2,22.7]::integer[]"; - assertTrue(sqlparser.parse() == 0); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT ARRAY[ARRAY[1,2], ARRAY[3,4]]"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = column0.getExpr(); - assertTrue(expression0.getExpressionType() == EExpressionType.array_constructor_t); - TExpression expression0_0 = expression0.getExprList().getExpression(0); - assertTrue(expression0_0.getExpressionType() == EExpressionType.array_constructor_t); - TExpression expression0_0_0 = expression0_0.getExprList().getExpression(0); - assertTrue(expression0_0_0.toString().equalsIgnoreCase("1")); - -// assertTrue(expression0.getExprList().getExpression(1).toString().equalsIgnoreCase("2")); -// assertTrue(expression0.getExprList().getExpression(2).toString().equalsIgnoreCase("3+4")); -// System.out.println(expression0.getExprList().getExpression(0).toString()); - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT ARRAY[[1,2],[3,4]]"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = column0.getExpr(); - assertTrue(expression0.getExpressionType() == EExpressionType.array_constructor_t); - TExpression expression0_0 = expression0.getExprList().getExpression(0); - assertTrue(expression0_0.getExpressionType() ==EExpressionType.array_constructor_t); - TExpression expression0_0_1 = expression0_0.getExprList().getExpression(1); - assertTrue(expression0_0_1.toString().equalsIgnoreCase("2")); - - sqlparser.sqltext = "SELECT ARRAY[]::integer[]"; - assertTrue(sqlparser.parse() == 0); - -// assertTrue(expression0.getExprList().getExpression(1).toString().equalsIgnoreCase("2")); -// assertTrue(expression0.getExprList().getExpression(2).toString().equalsIgnoreCase("3+4")); -// System.out.println(expression0.getExprList().getExpression(0).toString()); - } - - public void test4(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT ARRAY(SELECT oid FROM pg_proc WHERE proname LIKE 'bytea%')"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = column0.getExpr(); - assertTrue(expression0.getExpressionType() == EExpressionType.array_constructor_t); - TSelectSqlStatement subquery = expression0.getSubQuery(); - TExpression condition = subquery.getWhereClause().getCondition(); - assertTrue(condition.toString().equalsIgnoreCase("proname LIKE 'bytea%'")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCTE.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCTE.java deleted file mode 100644 index c6ad685d..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCTE.java +++ /dev/null @@ -1,51 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-6-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TCTE; -import gudusoft.gsqlparser.nodes.TCTEList; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.nodes.TResultColumnList; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import junit.framework.TestCase; - -public class testCTE extends TestCase { - - public void testInsert(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "WITH upd AS (\n" + - " UPDATE employees SET sales_count = sales_count + 1 WHERE id =\n" + - " (SELECT sales_person FROM accounts WHERE name = 'Acme Corporation')\n" + - " RETURNING *\n" + - ")\n" + - "INSERT INTO employees_log SELECT *, current_timestamp FROM upd;"; - - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - //System.out.println(insertSqlStatement.getInsertToken().toString()); - - TCTEList cteList = insertSqlStatement.getCteList(); - assertTrue(cteList.size() == 1); - - TCTE cte = cteList.getCTE(0); - assertTrue(cte.getTableName().toString().equalsIgnoreCase("upd")); - - TUpdateSqlStatement updateSqlStatement = cte.getUpdateStmt(); - assertTrue(updateSqlStatement.getTargetTable().toString().equalsIgnoreCase("employees")); - - TResultColumnList resultColumnList = updateSqlStatement.getResultColumnList(); - assertTrue(resultColumnList.size() == 1); - - TResultColumn resultColumn = resultColumnList.getResultColumn(0); - assertTrue(resultColumn.getExpr().getLeftOperand().toString().equalsIgnoreCase("sales_count")); - assertTrue(resultColumn.getExpr().getRightOperand().toString().equalsIgnoreCase("sales_count + 1")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCollationExpression.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCollationExpression.java deleted file mode 100644 index d9fd60ac..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCollationExpression.java +++ /dev/null @@ -1,44 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-5-24 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TOrderBy; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCollationExpression extends TestCase { - - public void testTypedConst(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT a, b, c FROM tbl WHERE a>1 ORDER BY a COLLATE \"C\""; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TOrderBy sortClause = select.getOrderbyClause(); - TExpression expression = sortClause.getItems().getOrderByItem(0).getSortKey(); - - assertTrue(expression.getExpressionType() == EExpressionType.collate_t); - assertTrue(expression.getLeftOperand().toString().equalsIgnoreCase("a")); - assertTrue(expression.getRightOperand().toString().equalsIgnoreCase("\"C\"")); - - //System.out.println(.toString()); - sqlparser.sqltext = "SELECT * FROM tbl WHERE a > 'foo' COLLATE \"C\""; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select1 = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression condition = select1.getWhereClause().getCondition(); - assertTrue(condition.getLeftOperand().toString().equalsIgnoreCase("a")); - assertTrue(condition.getRightOperand().toString().equalsIgnoreCase("'foo' COLLATE \"C\"")); - //System.out.println(condition.getRightOperand().toString()); - - sqlparser.sqltext = "SELECT * FROM tbl WHERE a COLLATE \"C\" > 'foo'"; - assertTrue(sqlparser.parse() == 0); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testConstant.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testConstant.java deleted file mode 100644 index 6dcf80fa..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testConstant.java +++ /dev/null @@ -1,120 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-5-20 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TConstant; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testConstant extends TestCase { - - public void testTypedConst(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select REAL '1.23', 1.23::REAL from t"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expr0 = column0.getExpr(); - assertTrue(expr0.getExpressionType() == EExpressionType.typecast_t); - assertTrue(expr0.getLeftOperand().toString().equalsIgnoreCase("'1.23'")); - assertTrue(expr0.getTypeName().getDataType() == EDataType.real_t); - assertTrue(expr0.toString().equalsIgnoreCase("REAL '1.23'")); - - TResultColumn column1 = select.getResultColumnList().getResultColumn(1); - TExpression expr1 = column1.getExpr(); - assertTrue(expr1.toString().equalsIgnoreCase("1.23::REAL")); - assertTrue(expr1.getExpressionType() == EExpressionType.typecast_t); - assertTrue(expr1.getLeftOperand().toString().equalsIgnoreCase("1.23")); - assertTrue(expr1.getTypeName().toString().equalsIgnoreCase("REAL")); - //System.out.println(expr1.toString()); - } - - public void testdollarString(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select $delim$abc$junk$delim$, $$Dianne's horse$$, $SomeTag$Dianne's horse$SomeTag$ from t"; -// sqlparser.sqltext = "select $delim$k$delim1$ from t"; - -// sqlparser.tokenizeSqltext(); -// for(int i=0;i>\n" + - "DECLARE\n" + - " quantity integer := 30;\n" + - "BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30\n" + - " quantity := 50;\n" + - " --\n" + - " -- Create a subblock\n" + - " --\n" + - " DECLARE\n" + - " quantity integer := 80;\n" + - " BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80\n" + - " RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50\n" + - " END;\n" + - "\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50\n" + - "\n" + - " RETURN quantity;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("somefunc")); - assertTrue(createFunction.getDeclareStatements().size() == 1); - TVarDeclStmt declareVariable = (TVarDeclStmt)createFunction.getDeclareStatements().get(0); - assertTrue(declareVariable.getElementName().toString().equalsIgnoreCase("quantity")); - assertTrue(createFunction.getBodyStatements().size()==5); - } - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION sales_tax(subtotal int) RETURNS real AS $$\n" + - "BEGIN\n" + - " RETURN subtotal * 0.06;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql; "; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("sales_tax")); - assertTrue(createFunction.getParameterDeclarations().size() == 1); - TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("subtotal")); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.real_t); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); - } - - public void testReturnTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION extended_sales(p_itemno int)\n" + - "RETURNS TABLE(quantity int, total numeric) AS $$\n" + - "BEGIN\n" + - "RETURN QUERY SELECT quantity, quantity\n" + - "*\n" + - "price FROM sales\n" + - "WHERE itemno = p_itemno;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("extended_sales")); - TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("p_itemno")); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(createFunction.getReturnMode() == TBaseType.function_return_table); - TTableElementList tls = createFunction.getReturnTableDefinitions(); - assertTrue(tls.size() == 2); - - TColumnDefinition cd = tls.getTableElement(0).getColumnDefinition(); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("quantity")); - assertTrue(cd.getDatatype().getDataType() == EDataType.int_t); - - cd = tls.getTableElement(1).getColumnDefinition(); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("total")); - assertTrue(cd.getDatatype().getDataType() == EDataType.numeric_t); - - } - - - public void testDropTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION ibis_speedtestci_tmp.create_speedtest_marketshare_by_month_poa()\n" + - " RETURNS void\n" + - " LANGUAGE plpgsql\n" + - "AS $function$\n" + - "\n" + - "DECLARE\n" + - "begin\n" + - "\n" + - "drop table if exists ibis_speedtestci_tmp.speedtest_marketshare_by_month_poa;\n" + - "create table ibis_speedtestci_tmp.speedtest_marketshare_by_month_poa\n" + - "as\n" + - "(\n" + - "select date, postcode as postcode, network_operator_name, count(device_id) as unique_share\n" + - "from (\n" + - " select postcode, network_operator_name, device_id, date_trunc('month', test_date) as date\n" + - " from ibis_speedtestci_raw.st_combined, ibis_admin_bdys_201811_raw.postcode_bdys_display\n" + - " where device_id != 0\n" + - " and sim_network_operator_code_a IS NOT NULL\n" + - " and sim_network_operator_code_a like '505__'\n" + - " and ST_Intersects(postcode_bdys_display.geom, st_combined.geom)\n" + - " group by postcode, network_operator_name, device_id, date_trunc('month', test_date)\n" + - ") as st_combined\n" + - "group by date, postcode, network_operator_name\n" + - ");\n" + - "\n" + - "END;\n" + - "\n" + - "$function$"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("ibis_speedtestci_tmp.create_speedtest_marketshare_by_month_poa")); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); - assertTrue(createFunction.getBodyStatements().size()==2); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstdroptable); - } - - public void testIntoVariable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE function \n" + - " totalrecords (emp_id INT) returns INTEGER \n" + - "AS \n" + - " $total$ \n" + - " DECLARE total INTEGER;\n" + - " BEGIN \n" + - " SELECT total_sal \n" + - " INTO total \n" + - " FROM employee emp \n" + - " WHERE emp.employee_id = emp_id;\n" + - " RETURN total;\n" + - " END;\n" + - " \n" + - " $total$ language plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("totalrecords")); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); - - assertTrue(createFunction.getBodyStatements().size() == 2); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - TIntoClause intoClause = selectSqlStatement.getIntoClause(); - // System.out.println(intoClause.getExprList().getExpression(0).getExpressionType()); - //assertTrue(intoClause.getExprList().getExpression(0).getExpressionType() == EExpressionType.simple_object_name_t); - TObjectName variableName = intoClause.getVariableList().getObjectName(0); - assertTrue(variableName.getDbObjectType() == EDbObjectType.variable); - } - - public void testCreateFunction1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION test_data_it.function3(double precision, double precision)\n" + - " RETURNS double precision\n" + - " LANGUAGE sql\n" + - " STABLE\n" + - "AS $function$\n" + - " select case when $1 > $2 then $1\n" + - " else $2\n" + - " end\n" + - "$function$"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("test_data_it.function3")); - assertTrue(createFunction.getProcedureLanguage().toString().equalsIgnoreCase("sql")); - - assertTrue(createFunction.getBodyStatements().size() == 1); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - TExpression expr = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.case_t); - TCaseExpression caseExpression = expr.getCaseExpression(); - - assertTrue(caseExpression.getElse_expr().toString().equalsIgnoreCase("$2")); - } - -} - - diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateFunction2.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateFunction2.java deleted file mode 100644 index 308c9361..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateFunction2.java +++ /dev/null @@ -1,30 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.commonTest.gspCommon; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testCreateFunction2 extends TestCase { - - public void testStmtToString(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE +"java/postgresql/create_function_big_proc.sql"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("intf_crm.p_crm_cust_lbl_smy")); - assertTrue(createFunction.getDeclareStatements().size() == 36); - assertTrue(createFunction.getBodyStatements().size() == 119); -// int i=0,j=0; -// for(TCustomSqlStatement sql:createFunction.getBodyStatements()){ -// i++; -// if (sql.toString() == null){ -// j++; -// System.out.println(j+":"+i+sql.sqlstatementtype+"\t"+sql.getStartToken().lineNo); -// } -// //System.out.println(sql.toString()); -// } - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateIndex.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateIndex.java deleted file mode 100644 index 8c4f9bab..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateIndex.java +++ /dev/null @@ -1,25 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-6-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateIndexSqlStatement; -import junit.framework.TestCase; - -public class testCreateIndex extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE UNIQUE INDEX CONCURRENTLY dist_id_temp_idx ON distributors (dist_id)"; - - assertTrue(sqlparser.parse() == 0); - - TCreateIndexSqlStatement createIndexSqlStatement = (TCreateIndexSqlStatement)sqlparser.sqlstatements.get(0); - //System.out.println(createIndexSqlStatement.getIndexName().toString()); - // System.out.println(createIndexSqlStatement.toString()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateProcedure.java deleted file mode 100644 index 6ecbf642..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateProcedure.java +++ /dev/null @@ -1,67 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.TCallStatement; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import junit.framework.TestCase; - -public class testCreateProcedure extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE transfer(INT, INT, DEC)\n" + - "LANGUAGE plpgsql\n" + - "AS $$\n" + - "BEGIN\n" + - "UPDATE accounts\n" + - " SET balance = balance - $3\n" + - " WHERE id = $1;\n" + - "\n" + - " COMMIT;\n" + - "END;\n" + - "$$;"; - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("transfer")); - assertTrue(createProcedure.getParameterDeclarations().size() == 3); - TParameterDeclaration parameterDeclaration = (TParameterDeclaration)createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(createProcedure.getProcedureLanguage().toString().equalsIgnoreCase("plpgsql")); - - assertTrue(createProcedure.getBodyStatements().size() == 2); - TUpdateSqlStatement update = (TUpdateSqlStatement)createProcedure.getBodyStatements().get(0); - assertTrue(update.getTargetTable().toString().equalsIgnoreCase("accounts")); - - //assertTrue(createProcedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstcommit); - //System.out.print(createProcedure.getBodyStatements().get(1).sqlstatementtype ); - } - - public void testCall(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE public.test1()\n" + - "AS $$\n" + - "DECLARE\n" + - " rec_JOB_BATCH RECORD;\n" + - "begin\n" + - " call public.test1();\n" + - "END;\n" + - "$$ LANGUAGE plpgsql\n" + - "SECURITY INVOKER;"; - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("public.test1")); - - assertTrue(createProcedure.getBodyStatements().size() == 1); - assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstcall); - TCallStatement callStatement = (TCallStatement)createProcedure.getBodyStatements().get(0); - assertTrue(callStatement.getRoutineName().toString().equalsIgnoreCase("public.test1")); - //System.out.print(createProcedure.getBodyStatements().get(0).sqlstatementtype ); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateTrigger.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateTrigger.java deleted file mode 100644 index 2b80d3e7..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateTrigger.java +++ /dev/null @@ -1,30 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-5 - */ - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTriggerStmt; - -import junit.framework.TestCase; - -public class testCreateTrigger extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON EMP\n" + - "FOR EACH ROW EXECUTE PROCEDURE emp_stamp();"; - assertTrue(sqlparser.parse() == 0); - - TCreateTriggerStmt creatTrigger = (TCreateTriggerStmt)sqlparser.sqlstatements.get(0); - assertTrue(creatTrigger.getTriggerName().toString().equalsIgnoreCase("emp_stamp")); - assertTrue(creatTrigger.getOnTable().getTableName().toString().equalsIgnoreCase("EMP")); - //System.out.println(creatTrigger.getFunctionCall().getFunctionName().toString()); - assertTrue(creatTrigger.getFunctionCall().getFunctionName().toString().equalsIgnoreCase("emp_stamp")); - assertTrue(creatTrigger.getFunctionCall().getArgs() == null); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateView.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateView.java deleted file mode 100644 index 1b1f3e7a..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testCreateView.java +++ /dev/null @@ -1,49 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-10-22 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCreateView extends TestCase { - - public void test1(){ - - - String viewSql = "CREATE OR REPLACE VIEW STG.FIXED_FEE_RATE_PACKAGES_V AS " - + "SELECT SUB.RS_CD, SUB.EFFDT_START, SUB.EFFDT_STOP, SUB.UOM_CD, SUB.TOU_CD, SUB.SQI_CD " - + "FROM (SELECT RS.RS_CD, RV.EFFDT_START, RV.EFFDT_STOP, RC.UOM_CD, RC.TOU_CD, RC.SQI_CD, row_number() OVER (PARTITION BY RS.RS_CD, " - + "RV.EFFDT_START, RV.EFFDT_STOP ORDER BY RC.UOM_CD, RC.TOU_CD, RC.SQI_CD) AS PRIORITY " - + "FROM (((SELECT btrim((O_CIS_CI_RS.RS_CD)::varchar(8)) AS RS_CD FROM COM.O_CIS_CI_RS) RS " - + "JOIN (SELECT btrim((O_CIS_CI_RV.RS_CD)::varchar(8)) AS RS_CD, O_CIS_CI_RV.EFFDT AS EFFDT_START, " - + "(lead(O_CIS_CI_RV.EFFDT, 1, NULL::timestamp) OVER (PARTITION BY btrim((O_CIS_CI_RV.RS_CD)::varchar(8)) " - + "ORDER BY O_CIS_CI_RV.EFFDT) + '-1'::interval second) AS EFFDT_STOP FROM COM.O_CIS_CI_RV " - + "WHERE (btrim((O_CIS_CI_RV.RV_STATUS_FLG)::varchar(4)) = 'F'::varchar(1))) RV " - + "ON ((RV.RS_CD = RS.RS_CD))) JOIN (SELECT btrim((O_CIS_CI_RC.RS_CD)::varchar(8)) " - + "AS RS_CD, O_CIS_CI_RC.EFFDT, btrim((O_CIS_CI_RC.UOM_CD)::varchar(4)) AS UOM_CD, " - + "btrim((O_CIS_CI_RC.TOU_CD)::varchar(8)) AS TOU_CD, btrim((O_CIS_CI_RC.SQI_CD)::varchar(8)) " - + "AS SQI_CD FROM COM.O_CIS_CI_RC WHERE ((btrim(O_CIS_CI_RC.CALC_ONLY_SW) = 'N'::varchar(1)) " - + "AND (((btrim((O_CIS_CI_RC.UOM_CD)::varchar(4)) = 'A'::varchar(1)) AND (btrim((O_CIS_CI_RC.SQI_CD)::varchar(8)) ~~ 'AMP%'::varchar(4))) " - + "OR ((btrim((O_CIS_CI_RC.UOM_CD)::varchar(4)) = 'KW'::varchar(2)) AND ((btrim((O_CIS_CI_RC.SQI_CD)::varchar(8)) = 'CAP-BILL'::varchar(8)) " - + "OR (btrim((O_CIS_CI_RC.TOU_CD)::varchar(8)) = 'DAY'::varchar(3)))) OR ((btrim((O_CIS_CI_RC.UOM_CD)::varchar(4)) = 'UNIT'::varchar(4)) " - + "AND (btrim((O_CIS_CI_RC.SQI_CD)::varchar(8)) = 'MS-Q'::varchar(4)))))) RC ON (((RC.RS_CD = RV.RS_CD) AND (RC.EFFDT = RV.EFFDT_START)))) " - + "WHERE true) SUB WHERE (SUB.PRIORITY = 1)"; - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = viewSql; - //System.out.println(viewSql); - - assertTrue(sqlparser.parse() == 0); - - TCreateViewSqlStatement view = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(view.getViewName().toString().equalsIgnoreCase("STG.FIXED_FEE_RATE_PACKAGES_V")); - TSelectSqlStatement select = view.getSubquery(); - assertTrue(select.getResultColumnList().size() == 6); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDatatype.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDatatype.java deleted file mode 100644 index 503ce22f..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDatatype.java +++ /dev/null @@ -1,151 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-6-14 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.EExpressionType.unary_minus_t; - -public class testDatatype extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE \"table1\" (\n" + - " \"column2\" date\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getDatatype().getDataType() == EDataType.date_t); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE \"table1\" (\n" + - " \"column1\" numeric(5,2)\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getDatatype().getDataType() == EDataType.numeric_t); - assertTrue(cd.getDatatype().getPrecision().toString().equalsIgnoreCase("5")); - assertTrue(cd.getDatatype().getScale().toString().equalsIgnoreCase("2")); - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE Flights\n" + - "(\n" + - " DEPART_TIME TIME,\n" + - " ID SERIAL\n" + - ")"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getDatatype().getDataType() == EDataType.time_t); - - cd = createTable.getColumnList().getColumn(1); - assertTrue(cd.getDatatype().getDataType() == EDataType.serial_t); - } - - public void test31(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "create table t(time time, id int);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("time")); - assertTrue(cd.getDatatype().getDataType() == EDataType.time_t); - } - - public void test4(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE \"table\" (\n" + - " \"column\" character(2)\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - //System.out.println(cd.getDatatype().getDataType().toString()); - assertTrue(cd.getDatatype().getDataType() == EDataType.character_t); - } - - public void test5(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "create table test(column TEXT);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - // System.out.println(cd.getDatatype().getDataType().toString()); - assertTrue(cd.getDatatype().getDataType() == EDataType.text_t); - } - - public void test6(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE test (\n" + - " id character \n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getDatatype().getDataType() == EDataType.char_t); - } - - public void test9(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE TABLE test (\n" + - " id bigint, \n" + - " id1 bigserial, \n" + - " id2 money, \n" + - " id3 bytea \n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - TColumnDefinition cd1 = createTable.getColumnList().getColumn(1); - TColumnDefinition cd2 = createTable.getColumnList().getColumn(2); - TColumnDefinition cd3 = createTable.getColumnList().getColumn(3); - assertTrue(cd.getDatatype().getDataType() == EDataType.bigint_t); - assertTrue(cd1.getDatatype().getDataType() == EDataType.bigserial_t); - assertTrue(cd2.getDatatype().getDataType() == EDataType.money_t); - assertTrue(cd3.getDatatype().getDataType() == EDataType.bytea_t); - } - - public void test10(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "INSERT INTO bigint_table ( clear_test , enc_test) VALUES ( -922337203 , -10.2)"; - assertTrue(sqlparser.parse() == 0); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)sqlparser.getSqlstatements().get(0); - TResultColumn resultColumn = insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - assertTrue(expression.getExpressionType() == unary_minus_t); - - TResultColumn resultColumn1 = insertSqlStatement.getValues().getMultiTarget(0).getColumnList().getResultColumn(1); - TExpression expression1 = resultColumn1.getExpr(); - assertTrue(expression1.getExpressionType() == unary_minus_t); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDeleteStmt.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDeleteStmt.java deleted file mode 100644 index b5536031..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDeleteStmt.java +++ /dev/null @@ -1,26 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-6-21 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDeleteSqlStatement; -import junit.framework.TestCase; - -public class testDeleteStmt extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "DELETE FROM films USING producers\n" + - " WHERE producer_id = producers.id AND producers.name = 'foo';"; - assertTrue(sqlparser.parse() == 0); - - TDeleteSqlStatement deleteSqlStatement = (TDeleteSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(deleteSqlStatement.getTargetTable().toString().equalsIgnoreCase("films")); - assertTrue(deleteSqlStatement.getReferenceJoins().size() == 1); - assertTrue(deleteSqlStatement.getReferenceJoins().getJoin(0).getTable().toString().equalsIgnoreCase("producers")); - // System.out.println(deleteSqlStatement.getWhereClause().getCondition().toString()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDrop.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDrop.java deleted file mode 100644 index 3b608a19..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDrop.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropMaterializedViewStmt; -import junit.framework.TestCase; - -public class testDrop extends TestCase { - - public void testDropMaterializedView(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "DROP MATERIALIZED VIEW IF EXISTS my_materialized_view;"; - assertTrue(sqlparser.parse() == 0); - - TDropMaterializedViewStmt dropMaterializedViewStmt = (TDropMaterializedViewStmt)sqlparser.sqlstatements.get(0); - assertTrue(dropMaterializedViewStmt.getViewName().toString().equalsIgnoreCase("my_materialized_view")); - } -} - diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDropTable.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDropTable.java deleted file mode 100644 index 736f3e72..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testDropTable.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropTableSqlStatement; -import junit.framework.TestCase; - -public class testDropTable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "DROP TABLE films, distributors;"; - assertTrue(sqlparser.parse() == 0); - - TDropTableSqlStatement dropTable = (TDropTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(dropTable.getTableName().toString().equalsIgnoreCase("films")); - assertTrue(dropTable.getTableNameList().getObjectName(1).toString().equalsIgnoreCase("distributors")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testFieldSelection.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testFieldSelection.java deleted file mode 100644 index 6858dac1..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testFieldSelection.java +++ /dev/null @@ -1,73 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-5-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testFieldSelection extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select " + - "arraycolumn," + - "$1.somecolumn1," + - "(rowfunction(a,b)).col3," + - "(compositecol).somefield," + - "(mytable.compositecol).somefield," + - "(compositecol).* " + - "from t"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expr0 = column0.getExpr(); - TObjectName objectName0 = expr0.getObjectOperand(); - assertTrue(!objectName0.isSubscripts()); - assertTrue(objectName0.toString().equalsIgnoreCase("arraycolumn")); - - TResultColumn column1 = select.getResultColumnList().getResultColumn(1); - TExpression expr1 = column1.getExpr(); - TObjectName objectName1 = expr1.getObjectOperand(); - assertTrue(!objectName1.isSubscripts()); - assertTrue(objectName1.toString().equalsIgnoreCase("$1.somecolumn1")); - - //(rowfunction(a,b)).col3 - TResultColumn column2 = select.getResultColumnList().getResultColumn(2); - TExpression expr2 = column2.getExpr(); - assertTrue(!expr2.isSubscripts()); - assertTrue(expr2.toString().equalsIgnoreCase("(rowfunction(a,b)).col3")); - assertTrue(expr2.getFieldName().toString().equalsIgnoreCase("col3")); - assertTrue(expr2.getExpressionType() == EExpressionType.fieldselection_t); - assertTrue(expr2.getLeftOperand().toString().equalsIgnoreCase("rowfunction(a,b)")); - - //(compositecol).somefield - TResultColumn column3 = select.getResultColumnList().getResultColumn(3); - TExpression expr3 = column3.getExpr(); - assertTrue(!expr3.isSubscripts()); - assertTrue(expr3.toString().equalsIgnoreCase("(compositecol).somefield")); - assertTrue(expr3.getFieldName().toString().equalsIgnoreCase("somefield")); - assertTrue(expr3.getExpressionType() == EExpressionType.fieldselection_t); - assertTrue(expr3.getLeftOperand().toString().equalsIgnoreCase("compositecol")); - - //(compositecol).* - TResultColumn column5 = select.getResultColumnList().getResultColumn(5); - TExpression expr5 = column5.getExpr(); - assertTrue(!expr5.isSubscripts()); - assertTrue(expr5.toString().equalsIgnoreCase("(compositecol).*")); - assertTrue(expr5.getFieldName().toString().equalsIgnoreCase("*")); - assertTrue(expr5.getExpressionType() == EExpressionType.fieldselection_t); - assertTrue(expr5.getLeftOperand().toString().equalsIgnoreCase("compositecol")); - - //System.out.println(expr2.getLeftOperand().toString()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testFunctionCall.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testFunctionCall.java deleted file mode 100644 index ea66d35a..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testFunctionCall.java +++ /dev/null @@ -1,27 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-5-25 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testFunctionCall extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT concat_lower_or_upper(a := 'Hello', b := 'World')"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = column0.getExpr(); - assertTrue(expression0.getExpressionType() == EExpressionType.function_t); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testJSON.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testJSON.java deleted file mode 100644 index bae7023e..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testJSON.java +++ /dev/null @@ -1,126 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testJSON extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select '[{\"a\":\"foo\"},{\"b\":\"bar\"},{\"c\":\"baz\"}]'::json->2;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.json_get_object); - TExpression lexpr = expr.getLeftOperand(); - assertTrue(lexpr.getExpressionType() == EExpressionType.typecast_t); - assertTrue(lexpr.getTypeName().getDataType() == EDataType.json_t); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select '[1,2,3]'::json->>2;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.json_get_text); - TExpression lexpr = expr.getLeftOperand(); - assertTrue(lexpr.getExpressionType() == EExpressionType.typecast_t); - assertTrue(lexpr.getTypeName().getDataType() == EDataType.json_t); - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select '{\"a\": {\"b\":{\"c\": \"foo\"}}}'::json#>'{a,b}';"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.json_get_object_at_path); - TExpression lexpr = expr.getLeftOperand(); - assertTrue(lexpr.getExpressionType() == EExpressionType.typecast_t); - assertTrue(lexpr.getTypeName().getDataType() == EDataType.json_t); - } - - public void test4(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select '{\"a\":[1,2,3],\"b\":[4,5,6]}'::json#>>'{a,2}';"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.json_get_text_at_path); - TExpression lexpr = expr.getLeftOperand(); - assertTrue(lexpr.getExpressionType() == EExpressionType.typecast_t); - assertTrue(lexpr.getTypeName().getDataType() == EDataType.json_t); - } - - public void test_left_contain(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select '{\"a\":1, \"b\":2}'::jsonb @> '{\"b\":2}'::jsonb;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - //System.out.println(expr.getExpressionType().toString()); - assertTrue(expr.getExpressionType() == EExpressionType.json_left_contain); - TExpression lexpr = expr.getLeftOperand(); - assertTrue(lexpr.getExpressionType() == EExpressionType.typecast_t); - assertTrue(lexpr.getTypeName().getDataType() == EDataType.jsonb_t); - } - - public void test_right_contain(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select '{\"b\":2}'::jsonb <@ '{\"a\":1, \"b\":2}'::jsonb;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - //System.out.println(expr.getExpressionType().toString()); - assertTrue(expr.getExpressionType() == EExpressionType.json_right_contain); - TExpression lexpr = expr.getLeftOperand(); - assertTrue(lexpr.getExpressionType() == EExpressionType.typecast_t); - assertTrue(lexpr.getTypeName().getDataType() == EDataType.jsonb_t); - } - - public void test_exist(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select '{\"a\":1, \"b\":2}'::jsonb ? 'b';"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - //System.out.println(expr.getExpressionType().toString()); - assertTrue(expr.getExpressionType() == EExpressionType.json_exist); - TExpression lexpr = expr.getLeftOperand(); - assertTrue(lexpr.getExpressionType() == EExpressionType.typecast_t); - assertTrue(lexpr.getTypeName().getDataType() == EDataType.jsonb_t); - } - - public void test_exist_any(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select '{\"a\":1, \"b\":2, \"c\":3}'::jsonb ?| array['b', 'c'];"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - //System.out.println(expr.getExpressionType().toString()); - assertTrue(expr.getExpressionType() == EExpressionType.json_any_exist); - TExpression lexpr = expr.getLeftOperand(); - assertTrue(lexpr.getExpressionType() == EExpressionType.typecast_t); - assertTrue(lexpr.getTypeName().getDataType() == EDataType.jsonb_t); - } - - public void test_exist_all(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select '[\"a\", \"b\"]'::jsonb ?& array['a', 'b'];"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - //System.out.println(expr.getExpressionType().toString()); - assertTrue(expr.getExpressionType() == EExpressionType.json_all_exist); - TExpression lexpr = expr.getLeftOperand(); - assertTrue(lexpr.getExpressionType() == EExpressionType.typecast_t); - assertTrue(lexpr.getTypeName().getDataType() == EDataType.jsonb_t); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testLimitOffset.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testLimitOffset.java deleted file mode 100644 index 2964629f..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testLimitOffset.java +++ /dev/null @@ -1,26 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 14-2-7 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TLimitClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testLimitOffset extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select 1 from t limit 10 offset 5;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TLimitClause selectLimit = select.getLimitClause(); - assertTrue(selectLimit.getRow_count().toString().equalsIgnoreCase("10")); - assertTrue(selectLimit.getOffset().toString().equalsIgnoreCase("5")); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testLockingClause.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testLockingClause.java deleted file mode 100644 index bbda4aaf..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testLockingClause.java +++ /dev/null @@ -1,46 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-5-18 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TLockingClause; -import gudusoft.gsqlparser.nodes.TObjectNameList; -import gudusoft.gsqlparser.nodes.TPTNodeList; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testLockingClause extends TestCase { - - public void testForUpdate(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select * from t for update of a,b"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TPTNodeList lockClauses = select.getLockingClauses(); - for (int i=0;i lockClauses = select.getLockingClauses(); - for (int i=0;i>\n" + - "DECLARE\n" + - " quantity integer := 30;\n" + - "BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30\n" + - " quantity := 50;\n" + - " --\n" + - " -- Create a subblock\n" + - " --\n" + - " DECLARE\n" + - " quantity integer := 80;\n" + - " BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80\n" + - " RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50\n" + - " END;\n" + - "\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50\n" + - "\n" + - " RETURN quantity;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - - assertTrue(createFunction.getBodyStatements().size() == 5); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_raisestmt); - TRaiseStmt raiseStmt = (TRaiseStmt)stmt; - assertTrue(raiseStmt.getRaiseLevel() == ERaiseLevel.notice); - assertTrue(raiseStmt.getFormatString().toString().equalsIgnoreCase("'Quantity here is %'")); - assertTrue(raiseStmt.getExprList().getExpression(0).toString().equalsIgnoreCase("quantity")); - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_assignstmt); - TAssignStmt assignStmt = (TAssignStmt)stmt; - assertTrue(assignStmt.getLeft().toString().equalsIgnoreCase("quantity")); - assertTrue(assignStmt.getExpression().toString().equalsIgnoreCase("50")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_block.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_block.java deleted file mode 100644 index 34a1709b..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_block.java +++ /dev/null @@ -1,80 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.stmt.TVarDeclStmt; -import gudusoft.gsqlparser.stmt.TAssignStmt; -import gudusoft.gsqlparser.stmt.TCommonBlock; -import gudusoft.gsqlparser.stmt.TRaiseStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_block extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION somefunc() RETURNS integer AS $$\n" + - "<< outerblock >>\n" + - "DECLARE\n" + - " quantity integer := 30;\n" + - "BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30\n" + - " quantity := 50;\n" + - " --\n" + - " -- Create a subblock\n" + - " --\n" + - " DECLARE\n" + - " quantity integer := 80;\n" + - " BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80\n" + - " RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50\n" + - " END;\n" + - "\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50\n" + - "\n" + - " RETURN quantity;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.integer_t); - - assertTrue(createFunction.getBodyStatements().size() == 5); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_raisestmt); - TRaiseStmt raiseStmt = (TRaiseStmt)stmt; - assertTrue(raiseStmt.getRaiseLevel() == ERaiseLevel.notice); - assertTrue(raiseStmt.getFormatString().toString().equalsIgnoreCase("'Quantity here is %'")); - assertTrue(raiseStmt.getExprList().getExpression(0).toString().equalsIgnoreCase("quantity")); - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_assignstmt); - TAssignStmt assignStmt = (TAssignStmt)stmt; - assertTrue(assignStmt.getLeft().toString().equalsIgnoreCase("quantity")); - assertTrue(assignStmt.getExpression().toString().equalsIgnoreCase("50")); - - stmt = createFunction.getBodyStatements().get(2); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_plsql_block); - TCommonBlock block = (TCommonBlock)stmt; - - assertTrue(block.getDeclareStatements().size() == 1); - TVarDeclStmt declStmt = (TVarDeclStmt)block.getDeclareStatements().get(0); - assertTrue(declStmt.getDeclareType() == EDeclareType.variable); - assertTrue(declStmt.getElementName().toString().equalsIgnoreCase("quantity")); - assertTrue(declStmt.getDataType().getDataType() == EDataType.integer_t); - assertTrue(declStmt.getDefaultValue().toString().equalsIgnoreCase("80")); - - assertTrue(block.getBodyStatements().size() == 2); - stmt = block.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_raisestmt); - raiseStmt = (TRaiseStmt)stmt; - assertTrue(raiseStmt.getRaiseLevel() == ERaiseLevel.notice); - assertTrue(raiseStmt.getFormatString().toString().equalsIgnoreCase("'Outer quantity here is %'")); - assertTrue(raiseStmt.getExprList().getExpression(0).toString().equalsIgnoreCase("outerblock.quantity")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_case.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_case.java deleted file mode 100644 index 856ceabe..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_case.java +++ /dev/null @@ -1,120 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TCaseExpression; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.nodes.TWhenClauseItem; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_case extends TestCase { - - public void testSimpleCase(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION get_available_flightid(date) RETURNS SETOF integer AS\n" + - "$BODY$\n" + - "BEGIN\n" + - "\tCASE x\n" + - "\tWHEN 1, 2 THEN\n" + - "\tmsg := 'one or two';\n" + - "\tELSE\n" + - "\tmsg := 'other value than one or two';\n" + - "\tEND CASE;\n" + - "\n" + - "END\n" + - "$BODY$\n" + - "LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - - assertTrue(createFunction.getParameterDeclarations().size() == 1); - TParameterDeclaration param = createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(param.getDataType().getDataType() == EDataType.date_t); - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.integer_t); - - assertTrue(createFunction.getBodyStatements().size() == 1); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_casestmt); - TCaseStmt caseStmt = (TCaseStmt)stmt; - TCaseExpression caseExpression = caseStmt.getCaseExpr(); - assertTrue(caseExpression.getInput_expr().toString().equalsIgnoreCase("x")); - - assertTrue(caseExpression.getWhenClauseItemList().size() == 1); - TWhenClauseItem whenClauseItem = caseExpression.getWhenClauseItemList().getWhenClauseItem(0); - assertTrue(whenClauseItem.getConditionList().size() == 2); - assertTrue(whenClauseItem.getConditionList().getExpression(0).toString().equalsIgnoreCase("1")); - assertTrue(whenClauseItem.getConditionList().getExpression(1).toString().equalsIgnoreCase("2")); - - assertTrue(whenClauseItem.getStatement_list().size() == 1); - TCustomSqlStatement thenStmt = whenClauseItem.getStatement_list().get(0); - assertTrue(thenStmt.sqlstatementtype == ESqlStatementType.sst_assignstmt); - TAssignStmt assignStmt = (TAssignStmt)thenStmt; - assertTrue(assignStmt.getLeft().toString().equalsIgnoreCase("msg")); - assertTrue(assignStmt.getExpression().toString().equalsIgnoreCase("'one or two'")); - - //assertTrue(whenClauseItem.getReturn_expr().toString().equalsIgnoreCase("msg := 'one or two'")); - - assertTrue(caseExpression.getElse_statement_list().size() == 1); - TCustomSqlStatement elseStmt = caseExpression.getElse_statement_list().get(0); - assertTrue(elseStmt.sqlstatementtype == ESqlStatementType.sst_assignstmt); - assignStmt = (TAssignStmt)elseStmt; - assertTrue(assignStmt.getLeft().toString().equalsIgnoreCase("msg")); - assertTrue(assignStmt.getExpression().toString().equalsIgnoreCase("'other value than one or two'")); - - - } - - public void testSearchedCase(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION get_available_flightid(date) RETURNS SETOF integer AS\n" + - "$BODY$\n" + - "BEGIN\n" + - "\n" + - "\tCASE\n" + - "\tWHEN x BETWEEN 0 AND 10 THEN\n" + - "\t\tmsg := 'value is between zero and ten';\n" + - "\tWHEN x BETWEEN 11 AND 20 THEN\n" + - "\t\tmsg := 'value is between eleven and twenty';\n" + - "\tEND CASE;\n" + - "\n" + - "END\n" + - "$BODY$\n" + - "LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - - assertTrue(createFunction.getParameterDeclarations().size() == 1); - TParameterDeclaration param = createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(param.getDataType().getDataType() == EDataType.date_t); - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.integer_t); - - assertTrue(createFunction.getBodyStatements().size() == 1); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_casestmt); - TCaseStmt caseStmt = (TCaseStmt)stmt; - TCaseExpression caseExpression = caseStmt.getCaseExpr(); - - assertTrue(caseExpression.getWhenClauseItemList().size() == 2); - TWhenClauseItem whenClauseItem = caseExpression.getWhenClauseItemList().getWhenClauseItem(0); - assertTrue(whenClauseItem.getConditionList().size() == 1); - TExpression between = whenClauseItem.getConditionList().getExpression(0); - assertTrue(between.getExpressionType() == EExpressionType.between_t); - assertTrue(between.getBetweenOperand().toString().equalsIgnoreCase("x")); - assertTrue(between.getLeftOperand().toString().equalsIgnoreCase("0")); - assertTrue(between.getRightOperand().toString().equalsIgnoreCase("10")); - - assertTrue(whenClauseItem.getStatement_list().size() == 1); - TCustomSqlStatement thenStmt = whenClauseItem.getStatement_list().get(0); - assertTrue(thenStmt.sqlstatementtype == ESqlStatementType.sst_assignstmt); - TAssignStmt assignStmt = (TAssignStmt)thenStmt; - assertTrue(assignStmt.getLeft().toString().equalsIgnoreCase("msg")); - assertTrue(assignStmt.getExpression().toString().equalsIgnoreCase("'value is between zero and ten'")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_close.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_close.java deleted file mode 100644 index 8d7743fa..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_close.java +++ /dev/null @@ -1,82 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TVarDeclStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_close extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION scan_rows(int[]) RETURNS void AS $$\n" + - "DECLARE\n" + - "\tcurs1 refcursor;\n" + - "\tcurs2 CURSOR FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1;\n" + - "\tcurs3 CURSOR (key integer) FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1 WHERE unique1 = key;\n" + - "BEGIN\n" + - "UPDATE foo SET dataval = myval WHERE CURRENT OF curs1;\n" + - "\n" + - "CLOSE curs1;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - - //System.out.println(createFunction.getDeclareStatements().size()); - //System.out.println(createFunction.getDeclareStatements().get(0).toString()); - assertTrue(createFunction.getDeclareStatements().size() == 3); - TCustomSqlStatement stmt = createFunction.getDeclareStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstplsql_vardecl); - TVarDeclStmt declStmt = (TVarDeclStmt)stmt; - assertTrue(declStmt.getDeclareType() == EDeclareType.variable); - assertTrue(declStmt.getElementName().toString().equalsIgnoreCase("curs1")); - assertTrue(declStmt.getDataType().getDataType() == EDataType.refcursor_t); - - stmt = createFunction.getDeclareStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_cursordecl); - TCursorDeclStmt cursorDeclStmt = (TCursorDeclStmt)stmt; - assertTrue(cursorDeclStmt.getCursorName().toString().equalsIgnoreCase("curs2")); - TSelectSqlStatement select = cursorDeclStmt.getSubquery(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("tenk1")); - - stmt = createFunction.getDeclareStatements().get(2); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_cursordecl); - cursorDeclStmt = (TCursorDeclStmt)stmt; - assertTrue(cursorDeclStmt.getCursorName().toString().equalsIgnoreCase("curs3")); - assertTrue(cursorDeclStmt.getCursorParameterDeclarations().getParameterDeclarationItem(0).getParameterName().toString().equalsIgnoreCase("key")); - assertTrue(cursorDeclStmt.getCursorParameterDeclarations().getParameterDeclarationItem(0).getDataType().getDataType() == EDataType.integer_t); - select = cursorDeclStmt.getSubquery(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("tenk1")); - - assertTrue(createFunction.getBodyStatements().size() == 2); - stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstupdate); - TUpdateSqlStatement updateStmt = (TUpdateSqlStatement)stmt; - assertTrue(updateStmt.getTargetTable().getTableName().toString().equalsIgnoreCase("foo")); - assertTrue(updateStmt.getResultColumnList().size() == 1); - TExpression setExpr = updateStmt.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(setExpr.getExpressionType() == EExpressionType.assignment_t); - assertTrue(setExpr.getLeftOperand().toString().equalsIgnoreCase("dataval")); - assertTrue(setExpr.getRightOperand().toString().equalsIgnoreCase("myval")); - TExpression whereCondition = updateStmt.getWhereClause().getCondition(); - assertTrue(updateStmt.getWhereClause().isCurerntOf()); - assertTrue(whereCondition.toString().equalsIgnoreCase("curs1")); - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_closestmt); - TCloseStmt closeStmt = (TCloseStmt)stmt; - assertTrue(closeStmt.getCursorName().toString().equalsIgnoreCase("curs1")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_declarestmt.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_declarestmt.java deleted file mode 100644 index c27436eb..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_declarestmt.java +++ /dev/null @@ -1,122 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TVarDeclStmt; -import gudusoft.gsqlparser.stmt.TCloseStmt; -import gudusoft.gsqlparser.stmt.TCursorDeclStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_declarestmt extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION somefunc() RETURNS integer AS $$\n" + - "<< outerblock >>\n" + - "DECLARE\n" + - " quantity integer := 30;\n" + - "BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30\n" + - " quantity := 50;\n" + - " --\n" + - " -- Create a subblock\n" + - " --\n" + - " DECLARE\n" + - " quantity integer := 80;\n" + - " BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80\n" + - " RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50\n" + - " END;\n" + - "\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50\n" + - "\n" + - " RETURN quantity;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - - assertTrue(createFunction.getDeclareStatements().size() == 1); - TVarDeclStmt declStmt = (TVarDeclStmt)createFunction.getDeclareStatements().get(0); - assertTrue(declStmt.getDeclareType() == EDeclareType.variable); - assertTrue(declStmt.getElementName().toString().equalsIgnoreCase("quantity")); - assertTrue(declStmt.getDataType().getDataType() == EDataType.integer_t); - assertTrue(declStmt.getDefaultValue().toString().equalsIgnoreCase("30")); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION scan_rows(int[]) RETURNS void AS $$\n" + - "DECLARE\n" + - "\tcurs1 refcursor;\n" + - "\tcurs2 CURSOR FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1;\n" + - "\tcurs3 CURSOR (key integer) FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1 WHERE unique1 = key;\n" + - "BEGIN\n" + - "UPDATE foo SET dataval = myval WHERE CURRENT OF curs1;\n" + - "\n" + - "CLOSE curs1;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - - //System.out.println(createFunction.getDeclareStatements().size()); - //System.out.println(createFunction.getDeclareStatements().get(0).toString()); - assertTrue(createFunction.getDeclareStatements().size() == 3); - TCustomSqlStatement stmt = createFunction.getDeclareStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstplsql_vardecl); - TVarDeclStmt declStmt = (TVarDeclStmt)stmt; - assertTrue(declStmt.getDeclareType() == EDeclareType.variable); - assertTrue(declStmt.getElementName().toString().equalsIgnoreCase("curs1")); - assertTrue(declStmt.getDataType().getDataType() == EDataType.refcursor_t); - - stmt = createFunction.getDeclareStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_cursordecl); - TCursorDeclStmt cursorDeclStmt = (TCursorDeclStmt)stmt; - assertTrue(cursorDeclStmt.getCursorName().toString().equalsIgnoreCase("curs2")); - TSelectSqlStatement select = cursorDeclStmt.getSubquery(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("tenk1")); - - stmt = createFunction.getDeclareStatements().get(2); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_cursordecl); - cursorDeclStmt = (TCursorDeclStmt)stmt; - assertTrue(cursorDeclStmt.getCursorName().toString().equalsIgnoreCase("curs3")); - assertTrue(cursorDeclStmt.getCursorParameterDeclarations().getParameterDeclarationItem(0).getParameterName().toString().equalsIgnoreCase("key")); - assertTrue(cursorDeclStmt.getCursorParameterDeclarations().getParameterDeclarationItem(0).getDataType().getDataType() == EDataType.integer_t); - select = cursorDeclStmt.getSubquery(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("tenk1")); - - assertTrue(createFunction.getBodyStatements().size() == 2); - stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstupdate); - TUpdateSqlStatement updateStmt = (TUpdateSqlStatement)stmt; - assertTrue(updateStmt.getTargetTable().getTableName().toString().equalsIgnoreCase("foo")); - assertTrue(updateStmt.getResultColumnList().size() == 1); - TExpression setExpr = updateStmt.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(setExpr.getExpressionType() == EExpressionType.assignment_t); - assertTrue(setExpr.getLeftOperand().toString().equalsIgnoreCase("dataval")); - assertTrue(setExpr.getRightOperand().toString().equalsIgnoreCase("myval")); - TExpression whereCondition = updateStmt.getWhereClause().getCondition(); - assertTrue(updateStmt.getWhereClause().isCurerntOf()); - assertTrue(whereCondition.toString().equalsIgnoreCase("curs1")); - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_closestmt); - TCloseStmt closeStmt = (TCloseStmt)stmt; - assertTrue(closeStmt.getCursorName().toString().equalsIgnoreCase("curs1")); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_delete.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_delete.java deleted file mode 100644 index 1c8120bd..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_delete.java +++ /dev/null @@ -1,59 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDeleteSqlStatement; -import gudusoft.gsqlparser.stmt.TIfStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_delete extends TestCase { - public void testSimpleCase(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION update_emp_view() RETURNS TRIGGER AS $$\n" + - "BEGIN\n" + - "---- Perform the required operation on emp, and create a row in emp_audit\n" + - "-- to reflect the change made to emp.\n" + - "IF (TG_OP = 'DELETE') THEN\n" + - "DELETE FROM emp WHERE empname = OLD.empname;\n" + - "IF NOT FOUND THEN RETURN NULL; END IF;\n" + - "OLD.last_updated = now();\n" + - "INSERT INTO emp_audit VALUES('D', user, OLD.\n" + - "*\n" + - ");\n" + - "RETURN OLD;\n" + - "ELSIF (TG_OP = 'UPDATE') THEN\n" + - "UPDATE emp SET salary = NEW.salary WHERE empname = OLD.empname;\n" + - "IF NOT FOUND THEN RETURN NULL; END IF;\n" + - "NEW.last_updated = now();\n" + - "INSERT INTO emp_audit VALUES('U', user, NEW.\n" + - "*\n" + - ");\n" + - "RETURN NEW;\n" + - "ELSIF (TG_OP = 'INSERT') THEN\n" + - "INSERT INTO emp VALUES(NEW.empname, NEW.salary);\n" + - "NEW.last_updated = now();\n" + - "INSERT INTO emp_audit VALUES('I', user, NEW.\n" + - "*\n" + - ");\n" + - "RETURN NEW;\n" + - "END IF;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 1); - TIfStmt ifStmt = (TIfStmt)createFunction.getBodyStatements().get(0); - assertTrue(ifStmt.getThenStatements().size() == 5); - TDeleteSqlStatement delete = (TDeleteSqlStatement)ifStmt.getThenStatements().get(0); - assertTrue(delete.getTargetTable().toString().equalsIgnoreCase("emp")); - assertTrue(delete.getWhereClause().getCondition().getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(delete.getWhereClause().getCondition().getLeftOperand().toString().equalsIgnoreCase("empname")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exception.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exception.java deleted file mode 100644 index b9e1c602..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exception.java +++ /dev/null @@ -1,58 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-5 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExceptionClause; -import gudusoft.gsqlparser.nodes.TExceptionHandler; -import gudusoft.gsqlparser.stmt.postgresql.TNullStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_exception extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION scan_rows(int[]) RETURNS void AS $$\n" + - "DECLARE\n" + - "\tcurs1 refcursor;\n" + - "\tcurs2 CURSOR FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1;\n" + - "\tcurs3 CURSOR (key integer) FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1 WHERE unique1 = key;\n" + - "BEGIN\n" + - "-- some processing which might cause an exception\n" + - " null;\n" + - "\tEXCEPTION WHEN OTHERS THEN\n" + - "\t\tGET STACKED DIAGNOSTICS text_var1 = MESSAGE_TEXT,\n" + - "\t\ttext_var2 = PG_EXCEPTION_DETAIL,\n" + - "\t\ttext_var3 = PG_EXCEPTION_HINT;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 1); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); - TNullStmt nullStmt = (TNullStmt)stmt; - assertTrue(nullStmt.toString().equalsIgnoreCase("null")); - - TExceptionClause exceptionClause = createFunction.getExceptionClause(); - assertTrue(exceptionClause.getHandlers().size() == 1); - TExceptionHandler handler = exceptionClause.getHandlers().getExceptionHandler(0); - assertTrue(handler.getExceptionNames().getObjectName(0).toString().equalsIgnoreCase("OTHERS")); - assertTrue(handler.getStatements().size() == 1); - stmt = handler.getStatements().get(0); - //System.out.println(stmt.toString()); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstgetdiagnostics); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_execute.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_execute.java deleted file mode 100644 index 51e7e8da..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_execute.java +++ /dev/null @@ -1,72 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TExecuteSqlStatement; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_execute extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION somefunc() RETURNS integer AS $$\n" + - "<< outerblock >>\n" + - "DECLARE\n" + - " quantity integer := 30;\n" + - "BEGIN\n" + - "EXECUTE 'SELECT count(*) FROM '\n" + - " || tabname::regclass\n" + - " || ' WHERE inserted_by = $1 AND inserted <= $2'\n" + - " INTO c\n" + - " USING checked_user, checked_date;\n" + - "\n" + - " RETURN quantity;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 2); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstExecute); - TExecuteSqlStatement exec = (TExecuteSqlStatement)stmt; - assertTrue(exec.getStmtString().toString().equalsIgnoreCase("'SELECT count(*) FROM '\n" + - " || tabname::regclass\n" + - " || ' WHERE inserted_by = $1 AND inserted <= $2'")); - - assertTrue(exec.getIntoVariable().toString().equalsIgnoreCase("c")); - assertTrue(exec.getUsingVariables().size() == 2); - assertTrue(exec.getUsingVariables().getExpression(0).toString().equalsIgnoreCase("checked_user")); - assertTrue(exec.getUsingVariables().getExpression(1).toString().equalsIgnoreCase("checked_date")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION t.mergemodel(_modelid integer)\n" + - "RETURNS void\n" + - "LANGUAGE plpgsql\n" + - "AS $function$\n" + - "BEGIN\n" + - " EXECUTE format ('INSERT INTO InSelections\n" + - " SELECT * FROM AddInSelections_%s', modelid);\n" + - " \n" + - "END;\n" + - "$function$"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 1); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstExecute); - TExecuteSqlStatement exec = (TExecuteSqlStatement)stmt; - assertTrue(exec.getSqlText().equalsIgnoreCase("'INSERT INTO InSelections\n" + - " SELECT * FROM AddInSelections_PLACEHOLDER'")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exit.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exit.java deleted file mode 100644 index 89d89569..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_exit.java +++ /dev/null @@ -1,101 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TCommonBlock; -import gudusoft.gsqlparser.stmt.TExitStmt; -import gudusoft.gsqlparser.stmt.TIfStmt; -import gudusoft.gsqlparser.stmt.TLoopStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_exit extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION get_available_flightid(date) RETURNS SETOF integer AS\n" + - "$BODY$\n" + - "BEGIN\n" + - "\n" + - "\tLOOP\n" + - "\t\t-- some computations\n" + - "\t\tIF count > 0 THEN\n" + - "\t\t\tEXIT; -- exit loop\n" + - "\t\tEND IF;\n" + - "\tEND LOOP;\n" + - "\n" + - "\tLOOP\n" + - "\t\t-- some computations\n" + - "\t\tEXIT WHEN count > 0; -- same result as previous example\n" + - "\tEND LOOP;\n" + - "\n" + - "\t<>\n" + - "\tBEGIN\n" + - "\t\t-- some computations\n" + - "\t\tIF stocks > 100000 THEN\n" + - "\t\t\tEXIT ablock; -- causes exit from the BEGIN block\n" + - "\t\tEND IF;\n" + - "\t\t-- computations here will be skipped when stocks > 100000\n" + - "\tEND;\n" + - "\n" + - "END\n" + - "$BODY$\n" + - "LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 3); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - TLoopStmt loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getStatements().size() == 1); - stmt = loopStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_ifstmt); - TIfStmt ifStmt = (TIfStmt)stmt; - TExpression ifCondition = ifStmt.getCondition(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(ifCondition.getOperatorToken().tokencode == '>'); - assertTrue(ifCondition.getLeftOperand().toString().equalsIgnoreCase("count")); - assertTrue(ifCondition.getRightOperand().toString().equalsIgnoreCase("0")); - - assertTrue(ifStmt.getStatements().size() == 1); - stmt = ifStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_exitstmt); - - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getStatements().size() == 1); - stmt = loopStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_exitstmt); - TExitStmt exitStmt = (TExitStmt)stmt; - TExpression whenCondition = exitStmt.getWhenCondition(); - assertTrue(whenCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(whenCondition.getOperatorToken().tokencode == '>'); - assertTrue(whenCondition.getLeftOperand().toString().equalsIgnoreCase("count")); - assertTrue(whenCondition.getRightOperand().toString().equalsIgnoreCase("0")); - - stmt = createFunction.getBodyStatements().get(2); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_plsql_block); - TCommonBlock block = (TCommonBlock)stmt; - assertTrue(block.getLabelName().toString().equalsIgnoreCase("ablock")); - - stmt =block.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_ifstmt); - ifStmt = (TIfStmt)stmt; - ifCondition = ifStmt.getCondition(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(ifCondition.getOperatorToken().tokencode == '>'); - assertTrue(ifCondition.getLeftOperand().toString().equalsIgnoreCase("stocks")); - assertTrue(ifCondition.getRightOperand().toString().equalsIgnoreCase("100000")); - - stmt = ifStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_exitstmt); - exitStmt = (TExitStmt)stmt; - assertTrue(exitStmt.getExitlabelName().toString().equalsIgnoreCase("ablock")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_fetch.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_fetch.java deleted file mode 100644 index 0967ae76..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_fetch.java +++ /dev/null @@ -1,48 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TFetchStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_fetch extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION scan_rows(int[]) RETURNS void AS $$\n" + - "DECLARE\n" + - "\tcurs1 refcursor;\n" + - "\tcurs2 CURSOR FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1;\n" + - "\tcurs3 CURSOR (key integer) FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1 WHERE unique1 = key;\n" + - "BEGIN\n" + - "FETCH curs1 INTO rowvar;\n" + - "FETCH curs2 INTO foo, bar, baz;\n" + - "FETCH LAST FROM curs3 INTO x, y;\n" + - "FETCH RELATIVE -2 FROM curs4 INTO x;\n" + - "\n" + - "\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 4); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_fetchstmt); - TFetchStmt fetchStmt = (TFetchStmt)stmt; - assertTrue(fetchStmt.getCursorName().toString().equalsIgnoreCase("curs1")); - assertTrue(fetchStmt.getVariableNames().getExpression(0).toString().equalsIgnoreCase("rowvar")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_forLoop.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_forLoop.java deleted file mode 100644 index d3cf2d93..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_forLoop.java +++ /dev/null @@ -1,97 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TLoopStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_forLoop extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION myfunc(refcursor, refcursor) RETURNS SETOF refcursor AS $$\n" + - "BEGIN\n" + - "\tFOR recordvar IN bound_cursorvar LOOP\n" + - "\t\tnull;\n" + - "\tEND LOOP;\n" + - "\t\n" + - "\tFOR recordvar IN bound_cursorvar(1,s) LOOP\n" + - "\t\tnull;\n" + - "\tEND LOOP;\n" + - "\t\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 2); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - TLoopStmt loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getKind() == TLoopStmt.cursor_for_loop); - assertTrue(loopStmt.getIndexName().toString().equalsIgnoreCase("recordvar")); - assertTrue(loopStmt.getCursorName().toString().equalsIgnoreCase("bound_cursorvar")); - - assertTrue(loopStmt.getBodyStatements().size() == 1); - assertTrue(loopStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getKind() == TLoopStmt.cursor_for_loop); - assertTrue(loopStmt.getIndexName().toString().equalsIgnoreCase("recordvar")); - assertTrue(loopStmt.getCursorName().toString().equalsIgnoreCase("bound_cursorvar")); - - assertTrue(loopStmt.getBodyStatements().size() == 1); - assertTrue(loopStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); - - assertTrue(loopStmt.getCursorParameterNames().getExpression(0).toString().equalsIgnoreCase("1")); - assertTrue(loopStmt.getCursorParameterNames().getExpression(1).toString().equalsIgnoreCase("s")); - } - - public void testExecute(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION cs_refresh_mviews() RETURNS integer AS $$\n" + - "DECLARE\n" + - "mviews RECORD;\n" + - "BEGIN\n" + - "\t\n" + - " <>\n" + - "FOR target1 IN EXECUTE a+b USING 1,2,3 LOOP\n" + - "\tnull;\n" + - "END LOOP label1;\n" + - "\n" + - "\tRETURN 1;\n" + - "\t\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 2); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - TLoopStmt loopStmt = (TLoopStmt)stmt; - - assertTrue(loopStmt.getLabelName().toString().equalsIgnoreCase("label1")); - assertTrue(loopStmt.getEndlabelName().toString().equalsIgnoreCase("label1")); - assertTrue(loopStmt.getKind() == TLoopStmt.cursor_for_loop); - assertTrue(loopStmt.getIndexName().toString().equalsIgnoreCase("target1")); - assertTrue(loopStmt.getExecuteExpr().toString().equalsIgnoreCase("a+b")); - assertTrue(loopStmt.getExecuteUsingVars().size() == 3); - assertTrue(loopStmt.getExecuteUsingVars().getExpression(0).toString().equalsIgnoreCase("1")); - -// System.out.println(loopStmt.getBodyStatements().size()); -// System.out.println(loopStmt.getBodyStatements().get(0).sqlstatementtype); - assertTrue(loopStmt.getBodyStatements().size() == 1); - assertTrue(loopStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_foreach.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_foreach.java deleted file mode 100644 index b6f484d4..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_foreach.java +++ /dev/null @@ -1,48 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAssignStmt; -import gudusoft.gsqlparser.stmt.postgresql.TForEachStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_foreach extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION sum(int[]) RETURNS int8 AS $$\n" + - "DECLARE\n" + - "s int8 := 0;\n" + - "x int;\n" + - "BEGIN\n" + - "\tFOREACH x IN ARRAY $1\n" + - "\tLOOP\n" + - "\t\ts := s + x;\n" + - "\tEND LOOP;\n" + - "\tRETURN s;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 2); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstpostgresqlforeach); - TForEachStmt forEachStmt = (TForEachStmt)stmt; - assertTrue(forEachStmt.getVariableName().toString().equalsIgnoreCase("x")); - assertTrue(forEachStmt.getArrayExpr().toString().equalsIgnoreCase("$1")); - assertTrue(forEachStmt.getBodyStatements().size() == 1); - stmt = forEachStmt.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_assignstmt); - TAssignStmt assignStmt = (TAssignStmt)stmt; - assertTrue(assignStmt.getLeft().toString().equalsIgnoreCase("s")); - assertTrue(assignStmt.getExpression().toString().equalsIgnoreCase("s + x")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_getdiag.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_getdiag.java deleted file mode 100644 index 7ed08281..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_getdiag.java +++ /dev/null @@ -1,57 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExceptionClause; -import gudusoft.gsqlparser.nodes.TExceptionHandler; -import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; -import gudusoft.gsqlparser.stmt.postgresql.TNullStmt; - -import junit.framework.TestCase; - -public class testPlpgsql_getdiag extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION scan_rows(int[]) RETURNS void AS $$\n" + - "DECLARE\n" + - "\tcurs1 refcursor;\n" + - "\tcurs2 CURSOR FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1;\n" + - "\tcurs3 CURSOR (key integer) FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1 WHERE unique1 = key;\n" + - "BEGIN\n" + - "-- some processing which might cause an exception\n" + - " null;\n" + - "\tEXCEPTION WHEN OTHERS THEN\n" + - "\t\tGET STACKED DIAGNOSTICS text_var1 = MESSAGE_TEXT,\n" + - "\t\ttext_var2 = PG_EXCEPTION_DETAIL,\n" + - "\t\ttext_var3 = PG_EXCEPTION_HINT;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 1); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); - TNullStmt nullStmt = (TNullStmt)stmt; - assertTrue(nullStmt.toString().equalsIgnoreCase("null")); - - TExceptionClause exceptionClause = createFunction.getExceptionClause(); - assertTrue(exceptionClause.getHandlers().size() == 1); - TExceptionHandler handler = exceptionClause.getHandlers().getExceptionHandler(0); - assertTrue(handler.getExceptionNames().getObjectName(0).toString().equalsIgnoreCase("OTHERS")); - assertTrue(handler.getStatements().size() == 1); - stmt = handler.getStatements().get(0); - //System.out.println(stmt.toString()); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstgetdiagnostics); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_if.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_if.java deleted file mode 100644 index 7fcc0bcf..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_if.java +++ /dev/null @@ -1,175 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_if extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION get_available_flightid(date) RETURNS SETOF integer AS\n" + - "$BODY$\n" + - "BEGIN\n" + - "\n" + - "\tLOOP\n" + - "\t\t-- some computations\n" + - "\t\tIF count > 0 THEN\n" + - "\t\t\tEXIT; -- exit loop\n" + - "\t\tEND IF;\n" + - "\tEND LOOP;\n" + - "\n" + - "\tLOOP\n" + - "\t\t-- some computations\n" + - "\t\tEXIT WHEN count > 0; -- same result as previous example\n" + - "\tEND LOOP;\n" + - "\n" + - "\t<>\n" + - "\tBEGIN\n" + - "\t\t-- some computations\n" + - "\t\tIF stocks > 100000 THEN\n" + - "\t\t\tEXIT ablock; -- causes exit from the BEGIN block\n" + - "\t\tEND IF;\n" + - "\t\t-- computations here will be skipped when stocks > 100000\n" + - "\tEND;\n" + - "\n" + - "END\n" + - "$BODY$\n" + - "LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 3); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - TLoopStmt loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getStatements().size() == 1); - stmt = loopStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_ifstmt); - TIfStmt ifStmt = (TIfStmt)stmt; - TExpression ifCondition = ifStmt.getCondition(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(ifCondition.getOperatorToken().tokencode == '>'); - assertTrue(ifCondition.getLeftOperand().toString().equalsIgnoreCase("count")); - assertTrue(ifCondition.getRightOperand().toString().equalsIgnoreCase("0")); - - assertTrue(ifStmt.getStatements().size() == 1); - stmt = ifStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_exitstmt); - - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getStatements().size() == 1); - stmt = loopStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_exitstmt); - TExitStmt exitStmt = (TExitStmt)stmt; - TExpression whenCondition = exitStmt.getWhenCondition(); - assertTrue(whenCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(whenCondition.getOperatorToken().tokencode == '>'); - assertTrue(whenCondition.getLeftOperand().toString().equalsIgnoreCase("count")); - assertTrue(whenCondition.getRightOperand().toString().equalsIgnoreCase("0")); - - stmt = createFunction.getBodyStatements().get(2); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_plsql_block); - TCommonBlock block = (TCommonBlock)stmt; - assertTrue(block.getLabelName().toString().equalsIgnoreCase("ablock")); - - stmt =block.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_ifstmt); - ifStmt = (TIfStmt)stmt; - ifCondition = ifStmt.getCondition(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(ifCondition.getOperatorToken().tokencode == '>'); - assertTrue(ifCondition.getLeftOperand().toString().equalsIgnoreCase("stocks")); - assertTrue(ifCondition.getRightOperand().toString().equalsIgnoreCase("100000")); - - stmt = ifStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_exitstmt); - exitStmt = (TExitStmt)stmt; - assertTrue(exitStmt.getExitlabelName().toString().equalsIgnoreCase("ablock")); - - } - - - public void testElseif(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION process_emp_audit() RETURNS TRIGGER AS $emp_audit$\n" + - "BEGIN\n" + - "\t---- Create a row in emp_audit to reflect the operation performed on emp,\n" + - "\t-- make use of the special variable TG_OP to work out the operation.\n" + - "\tIF (TG_OP = 'DELETE') THEN\n" + - "\tINSERT INTO emp_audit SELECT 'D', now(), user, OLD.*\n" + - "\t;\n" + - "\tRETURN OLD;\n" + - "\tELSIF (TG_OP = 'UPDATE') THEN\n" + - "\tINSERT INTO emp_audit SELECT 'U', now(), user, NEW.*\n" + - "\t;\n" + - "\tRETURN NEW;\n" + - "\tELSIF (TG_OP = 'INSERT') THEN\n" + - "\tINSERT INTO emp_audit SELECT 'I', now(), user, NEW.*\n" + - "\t;\n" + - "\tRETURN NEW;\n" + - "\tEND IF;\n" + - "\tRETURN NULL; -- result is ignored since this is an AFTER trigger\n" + - "END;\n" + - "$emp_audit$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("process_emp_audit")); - assertTrue(createFunction.getBodyStatements().size() == 2); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - TIfStmt ifStmt = (TIfStmt)stmt; - TExpression ifCondition = ifStmt.getCondition(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.parenthesis_t); - ifCondition = ifCondition.getLeftOperand(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(ifCondition.toString().equalsIgnoreCase("TG_OP = 'DELETE'")); - assertTrue(ifStmt.getThenStatements().size() == 2); - - stmt = ifStmt.getThenStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insert = (TInsertSqlStatement)stmt; - assertTrue(insert.getTargetTable().toString().equalsIgnoreCase("emp_audit")); - TSelectSqlStatement subquery = insert.getSubQuery(); - assertTrue(subquery.getResultColumnList().size() == 4); - assertTrue(subquery.getResultColumnList().getResultColumn(3).toString().equalsIgnoreCase("OLD.*")); - - assertTrue(ifStmt.getElseifStatements().size() == 2); - TElsifStmt elsifStmt = (TElsifStmt)ifStmt.getElseifStatements().get(0); - - ifCondition = elsifStmt.getCondition(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.parenthesis_t); - ifCondition = ifCondition.getLeftOperand(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(ifCondition.toString().equalsIgnoreCase("TG_OP = 'UPDATE'")); - assertTrue(elsifStmt.getThenStatements().size() == 2); - - stmt = elsifStmt.getThenStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstinsert); - insert = (TInsertSqlStatement)stmt; - assertTrue(insert.getTargetTable().toString().equalsIgnoreCase("emp_audit")); - subquery = insert.getSubQuery(); - assertTrue(subquery.getResultColumnList().size() == 4); - assertTrue(subquery.getResultColumnList().getResultColumn(3).toString().equalsIgnoreCase("NEW.*")); - - - stmt = ifStmt.getThenStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_returnstmt); - TReturnStmt returnStmt = (TReturnStmt)stmt; - assertTrue(returnStmt.getExpression().toString().equalsIgnoreCase("OLD")); - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_returnstmt); - returnStmt = (TReturnStmt)stmt; - assertTrue(returnStmt.getExpression().toString().equalsIgnoreCase("NULL")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_insert.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_insert.java deleted file mode 100644 index ff41225d..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_insert.java +++ /dev/null @@ -1,90 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_insert extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE OR REPLACE FUNCTION process_emp_audit() RETURNS TRIGGER AS $emp_audit$\n" + - "BEGIN\n" + - "\t---- Create a row in emp_audit to reflect the operation performed on emp,\n" + - "\t-- make use of the special variable TG_OP to work out the operation.\n" + - "\tIF (TG_OP = 'DELETE') THEN\n" + - "\tINSERT INTO emp_audit SELECT 'D', now(), user, OLD.*\n" + - "\t;\n" + - "\tRETURN OLD;\n" + - "\tELSIF (TG_OP = 'UPDATE') THEN\n" + - "\tINSERT INTO emp_audit SELECT 'U', now(), user, NEW.*\n" + - "\t;\n" + - "\tRETURN NEW;\n" + - "\tELSIF (TG_OP = 'INSERT') THEN\n" + - "\tINSERT INTO emp_audit SELECT 'I', now(), user, NEW.*\n" + - "\t;\n" + - "\tRETURN NEW;\n" + - "\tEND IF;\n" + - "\tRETURN NULL; -- result is ignored since this is an AFTER trigger\n" + - "END;\n" + - "$emp_audit$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("process_emp_audit")); - assertTrue(createFunction.getBodyStatements().size() == 2); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - TIfStmt ifStmt = (TIfStmt)stmt; - TExpression ifCondition = ifStmt.getCondition(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.parenthesis_t); - ifCondition = ifCondition.getLeftOperand(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(ifCondition.toString().equalsIgnoreCase("TG_OP = 'DELETE'")); - assertTrue(ifStmt.getThenStatements().size() == 2); - - stmt = ifStmt.getThenStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insert = (TInsertSqlStatement)stmt; - assertTrue(insert.getTargetTable().toString().equalsIgnoreCase("emp_audit")); - TSelectSqlStatement subquery = insert.getSubQuery(); - assertTrue(subquery.getResultColumnList().size() == 4); - assertTrue(subquery.getResultColumnList().getResultColumn(3).toString().equalsIgnoreCase("OLD.*")); - - assertTrue(ifStmt.getElseifStatements().size() == 2); - TElsifStmt elsifStmt = (TElsifStmt)ifStmt.getElseifStatements().get(0); - - ifCondition = elsifStmt.getCondition(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.parenthesis_t); - ifCondition = ifCondition.getLeftOperand(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(ifCondition.toString().equalsIgnoreCase("TG_OP = 'UPDATE'")); - assertTrue(elsifStmt.getThenStatements().size() == 2); - - stmt = elsifStmt.getThenStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstinsert); - insert = (TInsertSqlStatement)stmt; - assertTrue(insert.getTargetTable().toString().equalsIgnoreCase("emp_audit")); - subquery = insert.getSubQuery(); - assertTrue(subquery.getResultColumnList().size() == 4); - assertTrue(subquery.getResultColumnList().getResultColumn(3).toString().equalsIgnoreCase("NEW.*")); - - - stmt = ifStmt.getThenStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_returnstmt); - TReturnStmt returnStmt = (TReturnStmt)stmt; - assertTrue(returnStmt.getExpression().toString().equalsIgnoreCase("OLD")); - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_returnstmt); - returnStmt = (TReturnStmt)stmt; - assertTrue(returnStmt.getExpression().toString().equalsIgnoreCase("NULL")); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_label.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_label.java deleted file mode 100644 index 6738d4de..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_label.java +++ /dev/null @@ -1,45 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_label extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION somefunc() RETURNS integer AS $$\n" + - "<< outerblock >>\n" + - "DECLARE\n" + - " quantity integer := 30;\n" + - "BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30\n" + - " quantity := 50;\n" + - " --\n" + - " -- Create a subblock\n" + - " --\n" + - " DECLARE\n" + - " quantity integer := 80;\n" + - " BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80\n" + - " RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50\n" + - " END;\n" + - "\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50\n" + - "\n" + - " RETURN quantity;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size()==5); - // System.out.println(createFunction.getOuterLabelName().toString()); - assertTrue(createFunction.getBlockBody().getLabelName().toString().equalsIgnoreCase("outerblock")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_loop.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_loop.java deleted file mode 100644 index 7dcf32ec..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_loop.java +++ /dev/null @@ -1,103 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TCommonBlock; -import gudusoft.gsqlparser.stmt.TExitStmt; -import gudusoft.gsqlparser.stmt.TIfStmt; -import gudusoft.gsqlparser.stmt.TLoopStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_loop extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION get_available_flightid(date) RETURNS SETOF integer AS\n" + - "$BODY$\n" + - "BEGIN\n" + - "\n" + - "\tLOOP\n" + - "\t\t-- some computations\n" + - "\t\tIF count > 0 THEN\n" + - "\t\t\tEXIT; -- exit loop\n" + - "\t\tEND IF;\n" + - "\tEND LOOP;\n" + - "\n" + - "\tLOOP\n" + - "\t\t-- some computations\n" + - "\t\tEXIT WHEN count > 0; -- same result as previous example\n" + - "\tEND LOOP;\n" + - "\n" + - "\t<>\n" + - "\tBEGIN\n" + - "\t\t-- some computations\n" + - "\t\tIF stocks > 100000 THEN\n" + - "\t\t\tEXIT ablock; -- causes exit from the BEGIN block\n" + - "\t\tEND IF;\n" + - "\t\t-- computations here will be skipped when stocks > 100000\n" + - "\tEND;\n" + - "\n" + - "END\n" + - "$BODY$\n" + - "LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 3); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - TLoopStmt loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getStatements().size() == 1); - stmt = loopStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_ifstmt); - TIfStmt ifStmt = (TIfStmt)stmt; - TExpression ifCondition = ifStmt.getCondition(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(ifCondition.getOperatorToken().tokencode == '>'); - assertTrue(ifCondition.getLeftOperand().toString().equalsIgnoreCase("count")); - assertTrue(ifCondition.getRightOperand().toString().equalsIgnoreCase("0")); - - assertTrue(ifStmt.getStatements().size() == 1); - stmt = ifStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_exitstmt); - - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getStatements().size() == 1); - stmt = loopStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_exitstmt); - TExitStmt exitStmt = (TExitStmt)stmt; - TExpression whenCondition = exitStmt.getWhenCondition(); - assertTrue(whenCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(whenCondition.getOperatorToken().tokencode == '>'); - assertTrue(whenCondition.getLeftOperand().toString().equalsIgnoreCase("count")); - assertTrue(whenCondition.getRightOperand().toString().equalsIgnoreCase("0")); - - stmt = createFunction.getBodyStatements().get(2); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_plsql_block); - TCommonBlock block = (TCommonBlock)stmt; - assertTrue(block.getLabelName().toString().equalsIgnoreCase("ablock")); - - stmt =block.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_ifstmt); - ifStmt = (TIfStmt)stmt; - ifCondition = ifStmt.getCondition(); - assertTrue(ifCondition.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(ifCondition.getOperatorToken().tokencode == '>'); - assertTrue(ifCondition.getLeftOperand().toString().equalsIgnoreCase("stocks")); - assertTrue(ifCondition.getRightOperand().toString().equalsIgnoreCase("100000")); - - stmt = ifStmt.getStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_exitstmt); - exitStmt = (TExitStmt)stmt; - assertTrue(exitStmt.getExitlabelName().toString().equalsIgnoreCase("ablock")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_move.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_move.java deleted file mode 100644 index aaacf780..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_move.java +++ /dev/null @@ -1,46 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.postgresql.TMoveStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_move extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION scan_rows(int[]) RETURNS void AS $$\n" + - "DECLARE\n" + - "\tcurs1 refcursor;\n" + - "\tcurs2 CURSOR FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1;\n" + - "\tcurs3 CURSOR (key integer) FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1 WHERE unique1 = key;\n" + - "BEGIN\n" + - "MOVE curs1;\n" + - "MOVE LAST FROM curs3;\n" + - "MOVE RELATIVE -2 FROM curs4;\n" + - "MOVE FORWARD 2 FROM curs4;\n" + - "\n" + - "\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 4); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstpostgresqlMove); - TMoveStmt moveStmt = (TMoveStmt)stmt; - assertTrue(moveStmt.getCursorName().toString().equalsIgnoreCase("curs1")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_null.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_null.java deleted file mode 100644 index 61d6b631..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_null.java +++ /dev/null @@ -1,46 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.postgresql.TNullStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_null extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION scan_rows(int[]) RETURNS void AS $$\n" + - "DECLARE\n" + - "\tcurs1 refcursor;\n" + - "\tcurs2 CURSOR FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1;\n" + - "\tcurs3 CURSOR (key integer) FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1 WHERE unique1 = key;\n" + - "BEGIN\n" + - "-- some processing which might cause an exception\n" + - " null;\n" + - "\tEXCEPTION WHEN OTHERS THEN\n" + - "\t\tGET STACKED DIAGNOSTICS text_var1 = MESSAGE_TEXT,\n" + - "\t\ttext_var2 = PG_EXCEPTION_DETAIL,\n" + - "\t\ttext_var3 = PG_EXCEPTION_HINT;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 1); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); - TNullStmt nullStmt = (TNullStmt)stmt; - assertTrue(nullStmt.toString().equalsIgnoreCase("null")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_open.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_open.java deleted file mode 100644 index 9d1f55b0..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_open.java +++ /dev/null @@ -1,51 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TOpenStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_open extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION scan_rows(int[]) RETURNS void AS $$\n" + - "DECLARE\n" + - "\tcurs1 refcursor;\n" + - "\tcurs2 CURSOR FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1;\n" + - "\tcurs3 CURSOR (key integer) FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1 WHERE unique1 = key;\n" + - "BEGIN\n" + - "\tOPEN curs2;\n" + - "\tOPEN curs3(42);\n" + - "\tOPEN curs3(key := 42);\n" + - "\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 3); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_openstmt); - TOpenStmt openStmt = (TOpenStmt)stmt; - assertTrue(openStmt.getCursorName().toString().equalsIgnoreCase("curs2")); - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_openstmt); - openStmt = (TOpenStmt)stmt; - assertTrue(openStmt.getCursorName().toString().equalsIgnoreCase("curs3")); - assertTrue(openStmt.getCursorParameterNames().getExpression(0).toString().equalsIgnoreCase("42")); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_openfor.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_openfor.java deleted file mode 100644 index de7d8a14..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_openfor.java +++ /dev/null @@ -1,39 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-5 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TOpenforStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_openfor extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION reffunc(refcursor) RETURNS refcursor AS '\n" + - "BEGIN\n" + - "OPEN $1 FOR SELECT col FROM test;\n" + - "RETURN $1;\n" + - "END;\n" + - "' LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 2); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_openforstmt); - TOpenforStmt openforStmt = (TOpenforStmt)stmt; - assertTrue(openforStmt.getCursorVariableName().toString().equalsIgnoreCase("$1")); - TSelectSqlStatement subquery = openforStmt.getSubquery(); - assertTrue(subquery.getResultColumnList().getResultColumn(0).getExpr().toString().equalsIgnoreCase("col")); - assertTrue(subquery.tables.getTable(0).getFullName().equalsIgnoreCase("test")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_raise.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_raise.java deleted file mode 100644 index 27832541..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_raise.java +++ /dev/null @@ -1,50 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.stmt.TRaiseStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_raise extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION somefunc() RETURNS integer AS $$\n" + - "<< outerblock >>\n" + - "DECLARE\n" + - " quantity integer := 30;\n" + - "BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30\n" + - " quantity := 50;\n" + - " --\n" + - " -- Create a subblock\n" + - " --\n" + - " DECLARE\n" + - " quantity integer := 80;\n" + - " BEGIN\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80\n" + - " RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50\n" + - " END;\n" + - "\n" + - " RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50\n" + - "\n" + - " RETURN quantity;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - - assertTrue(createFunction.getBodyStatements().size() == 5); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_raisestmt); - TRaiseStmt raiseStmt = (TRaiseStmt)stmt; - assertTrue(raiseStmt.getRaiseLevel() == ERaiseLevel.notice); - assertTrue(raiseStmt.getFormatString().toString().equalsIgnoreCase("'Quantity here is %'")); - assertTrue(raiseStmt.getExprList().getExpression(0).toString().equalsIgnoreCase("quantity")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_return.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_return.java deleted file mode 100644 index b5ced890..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_return.java +++ /dev/null @@ -1,38 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TReturnStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_return extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION somefunc() RETURNS integer AS $$\n" + - "<< outerblock >>\n" + - "DECLARE\n" + - " quantity integer := 30;\n" + - "BEGIN\n" + - " RETURN (1, 2, 'three'::text);\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 1); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_returnstmt); - TReturnStmt returnStmt = (TReturnStmt)stmt; - TExpression returnV = returnStmt.getExpression(); - //System.out.println(returnV.getExpressionType() ); - assertTrue(returnV.getExpressionType() == EExpressionType.list_t); - assertTrue(returnV.getExprList().size() == 3); - assertTrue(returnV.getExprList().getExpression(0).toString().equalsIgnoreCase("1")); - assertTrue(returnV.getExprList().getExpression(1).toString().equalsIgnoreCase("2")); - assertTrue(returnV.getExprList().getExpression(2).toString().equalsIgnoreCase("'three'::text")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_update.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_update.java deleted file mode 100644 index d1ad4d80..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_update.java +++ /dev/null @@ -1,87 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TVarDeclStmt; -import gudusoft.gsqlparser.stmt.TCloseStmt; -import gudusoft.gsqlparser.stmt.TCursorDeclStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_update extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION scan_rows(int[]) RETURNS void AS $$\n" + - "DECLARE\n" + - "\tcurs1 refcursor;\n" + - "\tcurs2 CURSOR FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1;\n" + - "\tcurs3 CURSOR (key integer) FOR SELECT\n" + - "\t*\n" + - "\tFROM tenk1 WHERE unique1 = key;\n" + - "BEGIN\n" + - "UPDATE foo SET dataval = myval WHERE CURRENT OF curs1;\n" + - "\n" + - "CLOSE curs1;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - - //System.out.println(createFunction.getDeclareStatements().size()); - //System.out.println(createFunction.getDeclareStatements().get(0).toString()); - assertTrue(createFunction.getDeclareStatements().size() == 3); - TCustomSqlStatement stmt = createFunction.getDeclareStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstplsql_vardecl); - TVarDeclStmt declStmt = (TVarDeclStmt)stmt; - assertTrue(declStmt.getDeclareType() == EDeclareType.variable); - assertTrue(declStmt.getElementName().toString().equalsIgnoreCase("curs1")); - assertTrue(declStmt.getDataType().getDataType() == EDataType.refcursor_t); - - stmt = createFunction.getDeclareStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_cursordecl); - TCursorDeclStmt cursorDeclStmt = (TCursorDeclStmt)stmt; - assertTrue(cursorDeclStmt.getCursorName().toString().equalsIgnoreCase("curs2")); - TSelectSqlStatement select = cursorDeclStmt.getSubquery(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("tenk1")); - - stmt = createFunction.getDeclareStatements().get(2); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_cursordecl); - cursorDeclStmt = (TCursorDeclStmt)stmt; - assertTrue(cursorDeclStmt.getCursorName().toString().equalsIgnoreCase("curs3")); - assertTrue(cursorDeclStmt.getCursorParameterDeclarations().getParameterDeclarationItem(0).getParameterName().toString().equalsIgnoreCase("key")); - assertTrue(cursorDeclStmt.getCursorParameterDeclarations().getParameterDeclarationItem(0).getDataType().getDataType() == EDataType.integer_t); - select = cursorDeclStmt.getSubquery(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("tenk1")); - - assertTrue(createFunction.getBodyStatements().size() == 2); - stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sstupdate); - TUpdateSqlStatement updateStmt = (TUpdateSqlStatement)stmt; - assertTrue(updateStmt.getTargetTable().getTableName().toString().equalsIgnoreCase("foo")); - assertTrue(updateStmt.getResultColumnList().size() == 1); - TExpression setExpr = updateStmt.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(setExpr.getExpressionType() == EExpressionType.assignment_t); - assertTrue(setExpr.getLeftOperand().toString().equalsIgnoreCase("dataval")); - assertTrue(setExpr.getRightOperand().toString().equalsIgnoreCase("myval")); - TExpression whereCondition = updateStmt.getWhereClause().getCondition(); - assertTrue(updateStmt.getWhereClause().isCurerntOf()); - assertTrue(whereCondition.toString().equalsIgnoreCase("curs1")); - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_closestmt); - TCloseStmt closeStmt = (TCloseStmt)stmt; - assertTrue(closeStmt.getCursorName().toString().equalsIgnoreCase("curs1")); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_while.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_while.java deleted file mode 100644 index 8a0c9405..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testPlpgsql_while.java +++ /dev/null @@ -1,57 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.stmt.TLoopStmt; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testPlpgsql_while extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE FUNCTION get_available_flightid(date) RETURNS SETOF integer AS\n" + - "$BODY$\n" + - "BEGIN\n" + - "\n" + - "\tWHILE amount_owed > 0 AND gift_certificate_balance > 0 LOOP\n" + - "\t-- some computations here\n" + - "\t\tnull;\n" + - "\tEND LOOP;\n" + - "\t\n" + - "\tWHILE NOT done LOOP\n" + - "\t-- some computations here\n" + - "\t\tnull;\n" + - "\tEND LOOP;\n" + - "\n" + - "END\n" + - "$BODY$\n" + - "LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFunction.getBodyStatements().size() == 2); - TCustomSqlStatement stmt = createFunction.getBodyStatements().get(0); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - TLoopStmt loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getKind() == TLoopStmt.while_loop); - assertTrue(loopStmt.getCondition().getExpressionType() == EExpressionType.logical_and_t); - assertTrue(loopStmt.getCondition().getLeftOperand().toString().equalsIgnoreCase("amount_owed > 0")); - assertTrue(loopStmt.getCondition().getRightOperand().toString().equalsIgnoreCase("gift_certificate_balance > 0")); - - assertTrue(loopStmt.getBodyStatements().size() == 1); - assertTrue(loopStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstplsql_nullstmt); - - - stmt = createFunction.getBodyStatements().get(1); - assertTrue(stmt.sqlstatementtype == ESqlStatementType.sst_loopstmt); - loopStmt = (TLoopStmt)stmt; - assertTrue(loopStmt.getKind() == TLoopStmt.while_loop); - assertTrue(loopStmt.getCondition().getExpressionType() == EExpressionType.logical_not_t); - assertTrue(loopStmt.getCondition().getRightOperand().toString().equalsIgnoreCase("done")); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testReindex.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testReindex.java deleted file mode 100644 index 48d78a12..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testReindex.java +++ /dev/null @@ -1,28 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TReindexStmt; -import junit.framework.TestCase; - -public class testReindex extends TestCase { - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "REINDEX INDEX my_index"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstReindex); - TReindexStmt reindexStmt = (TReindexStmt) sqlparser.sqlstatements.get(0); - assertTrue(reindexStmt.getIndexName().toString().equalsIgnoreCase("my_index")); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "REINDEX TABLE CONCURRENTLY my_broken_table;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstReindex); - TReindexStmt reindexStmt = (TReindexStmt) sqlparser.sqlstatements.get(0); - assertTrue(reindexStmt.getIndexName().toString().equalsIgnoreCase("my_broken_table")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testRowConstructor.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testRowConstructor.java deleted file mode 100644 index b6fd50b7..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testRowConstructor.java +++ /dev/null @@ -1,68 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-5-25 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testRowConstructor extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT ROW(1,2.5,'this is a test')"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = column0.getExpr(); - assertTrue(expression0.getExpressionType() == EExpressionType.row_constructor_t); - assertTrue(expression0.getExprList().getExpression(0).toString().equalsIgnoreCase("1")); - assertTrue(expression0.getExprList().getExpression(1).toString().equalsIgnoreCase("2.5")); - assertTrue(expression0.getExprList().getExpression(2).toString().equalsIgnoreCase("'this is a test'")); - - sqlparser.sqltext = "SELECT ROW(t.*, 42) FROM t;"; - assertTrue(sqlparser.parse() == 0); - - sqlparser.sqltext = "SELECT ROW(t.f1, t.f2, 42) FROM t"; - assertTrue(sqlparser.parse() == 0); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT ROW(1,2.5,'this is a test') = ROW(1, 3, 'not the same')"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = column0.getExpr(); - assertTrue(expression0.getExpressionType() == EExpressionType.simple_comparison_t); - assertTrue(expression0.toString().equalsIgnoreCase("ROW(1,2.5,'this is a test') = ROW(1, 3, 'not the same')")); - TExpression expression_l = expression0.getLeftOperand(); - assertTrue(expression_l.getExpressionType() == EExpressionType.row_constructor_t); - assertTrue(expression_l.toString().equalsIgnoreCase("ROW(1,2.5,'this is a test')")); - TExpression expression_r = expression0.getRightOperand(); - assertTrue(expression_r.getExpressionType() == EExpressionType.row_constructor_t); - assertTrue(expression_r.toString().equalsIgnoreCase("ROW(1, 3, 'not the same')")); - - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT ROW(table.*) IS NULL FROM table"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = column0.getExpr(); - assertTrue(expression0.getExpressionType() == EExpressionType.null_t); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSYMMETRIC.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSYMMETRIC.java deleted file mode 100644 index 3926f742..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSYMMETRIC.java +++ /dev/null @@ -1,28 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-7-30 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSYMMETRIC extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select * from b where LONG_W BETWEEN SYMMETRIC 180 and -180"; - - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getWhereClause().getCondition(); - - assertTrue(expr.isSymmetric()); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSchema.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSchema.java deleted file mode 100644 index b97f002b..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSchema.java +++ /dev/null @@ -1,29 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testSchema extends TestCase { - - public void testCreateSchema() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "CREATE SCHEMA sqlflow;"; - assertTrue(sqlparser.parse() == 0); - - TCreateSchemaSqlStatement createSchemaSqlStatement = (TCreateSchemaSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createSchemaSqlStatement.getSchemaName().toString().equalsIgnoreCase("sqlflow")); - } - - public void testAlterSchema() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "ALTER SCHEMA sqlflow OWNER TO bigking;"; - assertTrue(sqlparser.parse() == 0); - - TAlterSchemaStmt alterSchema = (TAlterSchemaStmt) sqlparser.sqlstatements.get(0); - assertTrue(alterSchema.getSchemaName().toString().equalsIgnoreCase("sqlflow")); - assertTrue(alterSchema.getOwnerName().toString().equalsIgnoreCase("bigking")); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetSearchPath.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetSearchPath.java deleted file mode 100644 index 40063c50..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetSearchPath.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESetStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSetStmt; -import junit.framework.TestCase; - -public class testSetSearchPath extends TestCase { - - public void testCreateSchema() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SET search_path = sqlflow, pg_catalog;"; - assertTrue(sqlparser.parse() == 0); - - TSetStmt setStmt = (TSetStmt)sqlparser.sqlstatements.get(0); - assertTrue(setStmt.getSetStatementType() == ESetStatementType.variable); - assertTrue(setStmt.getVariableName().toString().equalsIgnoreCase("search_path")); - assertTrue(setStmt.getVariableValueList().getExpression(0).toString().equalsIgnoreCase("sqlflow")); - assertTrue(setStmt.getVariableValueList().getExpression(1).toString().equalsIgnoreCase("pg_catalog")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetVariable.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetVariable.java deleted file mode 100644 index 8ecd35f8..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSetVariable.java +++ /dev/null @@ -1,33 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESetStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSetStmt; -import junit.framework.TestCase; - -public class testSetVariable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SET statement_timeout = 0;"; - assertTrue(sqlparser.parse() == 0); - TSetStmt setStmt = (TSetStmt)sqlparser.sqlstatements.get(0); - assertTrue(setStmt.getSetStatementType() == ESetStatementType.variable); - assertTrue(setStmt.getVariableName().toString().equalsIgnoreCase("statement_timeout")); - assertTrue(setStmt.getVariableValue().toString().equalsIgnoreCase("0")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SET search_path = dwd, pg_catalog;"; - assertTrue(sqlparser.parse() == 0); - TSetStmt setStmt = (TSetStmt)sqlparser.sqlstatements.get(0); - assertTrue(setStmt.getSetStatementType() == ESetStatementType.variable); - assertTrue(setStmt.getVariableName().toString().equalsIgnoreCase("search_path")); - assertTrue(setStmt.getVariableValueList().getExpression(0).toString().equalsIgnoreCase("dwd")); - assertTrue(setStmt.getVariableValueList().getExpression(1).toString().equalsIgnoreCase("pg_catalog")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testStringConcate.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testStringConcate.java deleted file mode 100644 index 80cc7ce8..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testStringConcate.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 14-2-7 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testStringConcate extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select 'string' || '1' from dual"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.concatenate_t); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSubscript.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSubscript.java deleted file mode 100644 index 7107cd80..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testSubscript.java +++ /dev/null @@ -1,86 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-5-23 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSubscript extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "select " + - "arraycolumn[4]," + - "mytable.arraycolumn1[40]," + - "mytable.two_d_column[17][34]," + - "c[10:42]," + - "(arrayfunction(a,b))[42]," + - "$1[10:42] " + - "from t"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expr0 = column0.getExpr(); - TObjectName objectName0 = expr0.getObjectOperand(); - assertTrue(objectName0.getColumnNameOnly().equalsIgnoreCase("arraycolumn")); - assertTrue(objectName0.toString().equalsIgnoreCase("arraycolumn[4]")); - assertTrue(objectName0.isSubscripts()); - assertTrue(objectName0.getIndirection().toString().equalsIgnoreCase("[4]")); - assertTrue(objectName0.getIndirection().getIndices().getElement(0).getLowerSubscript().toString().equalsIgnoreCase("4")); - - TResultColumn column1 = select.getResultColumnList().getResultColumn(1); - TExpression expr1 = column1.getExpr(); - TObjectName objectName1 = expr1.getObjectOperand(); - assertTrue(objectName1.getColumnNameOnly().equalsIgnoreCase("arraycolumn1")); - assertTrue(objectName1.toString().equalsIgnoreCase("mytable.arraycolumn1[40]")); - assertTrue(objectName1.isSubscripts()); - //System.out.println(objectName1.getIndirection().toString()); - //assertTrue(objectName1.getIndirection().toString().equalsIgnoreCase("[40]")); - // assertTrue(objectName1.getIndirection().getIndices().getElement(0).getLowerSubscript().toString().equalsIgnoreCase("40")); - assertTrue(objectName1.getIndirection().getIndices().getElement(0).getAttributeName().toString().equalsIgnoreCase("arraycolumn1")); - assertTrue(objectName1.getIndirection().getIndices().getElement(1).getLowerSubscript().toString().equalsIgnoreCase("40")); - - //mytable.two_d_column[17][34] - TResultColumn column2 = select.getResultColumnList().getResultColumn(2); - TExpression expr2 = column2.getExpr(); - TObjectName objectName2 = expr2.getObjectOperand(); - assertTrue(objectName2.getColumnNameOnly().equalsIgnoreCase("two_d_column")); - assertTrue(objectName2.toString().equalsIgnoreCase("mytable.two_d_column[17][34]")); - assertTrue(objectName2.isSubscripts()); - //assertTrue(objectName2.getIndirection().toString().equalsIgnoreCase("[17][34]")); - assertTrue(objectName2.getIndirection().getIndices().size() == 3); - assertTrue(objectName2.getIndirection().getIndices().getElement(0).getAttributeName().toString().equalsIgnoreCase("two_d_column")); - assertTrue(objectName2.getIndirection().getIndices().getElement(1).getLowerSubscript().toString().equalsIgnoreCase("17")); - assertTrue(objectName2.getIndirection().getIndices().getElement(2).getLowerSubscript().toString().equalsIgnoreCase("34")); - - //c[10:42] - TResultColumn column3 = select.getResultColumnList().getResultColumn(3); - TExpression expr3 = column3.getExpr(); - TObjectName objectName3 = expr3.getObjectOperand(); - assertTrue(objectName3.getColumnNameOnly().equalsIgnoreCase("c")); - assertTrue(objectName3.toString().equalsIgnoreCase("c[10:42]")); - assertTrue(objectName3.isSubscripts()); - assertTrue(objectName3.getIndirection().toString().equalsIgnoreCase("[10:42]")); - assertTrue(objectName3.getIndirection().getIndices().getElement(0).getLowerSubscript().toString().equalsIgnoreCase("10")); - assertTrue(objectName3.getIndirection().getIndices().getElement(0).getUpperSubscript().toString().equalsIgnoreCase("42")); - - //(arrayfunction(a,b))[42] - TResultColumn column4 = select.getResultColumnList().getResultColumn(4); - TExpression expr4 = column4.getExpr(); - assertTrue(expr4.toString().equalsIgnoreCase("(arrayfunction(a,b))[42]")); - assertTrue(expr4.isSubscripts()); - assertTrue(expr4.getIndirection().toString().equalsIgnoreCase("[42]")); - assertTrue(expr4.getIndirection().getIndices().getElement(0).getLowerSubscript().toString().equalsIgnoreCase("42")); - -// System.out.println(objectName0.toString()); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testTableStmt.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testTableStmt.java deleted file mode 100644 index 4686a3bf..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testTableStmt.java +++ /dev/null @@ -1,29 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.postgresql.TPostgresqlTableStmt; -import junit.framework.TestCase; - -public class testTableStmt extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "table ab;"; - assertTrue(sqlparser.parse() == 0); - - TPostgresqlTableStmt stmt = (TPostgresqlTableStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getTableName().equalsIgnoreCase("ab")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "table only ab;"; - assertTrue(sqlparser.parse() == 0); - - TPostgresqlTableStmt stmt = (TPostgresqlTableStmt)sqlparser.sqlstatements.get(0); - assertTrue(stmt.getTableName().equalsIgnoreCase("ab")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testTruncate.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testTruncate.java deleted file mode 100644 index fa8b86ea..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testTruncate.java +++ /dev/null @@ -1,36 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 13-12-4 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TTruncateStatement; -import junit.framework.TestCase; - -public class testTruncate extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "TRUNCATE bigtable, fattable;"; - assertTrue(sqlparser.parse() == 0); - - TTruncateStatement stmt = (TTruncateStatement)sqlparser.sqlstatements.get(0); - assertTrue(stmt.joins.size() == 2); - assertTrue(stmt.joins.getJoin(0).getTable().toString().equalsIgnoreCase("bigtable")); - assertTrue(stmt.joins.getJoin(1).getTable().toString().equalsIgnoreCase("fattable")); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "TRUNCATE bigtable, fattable RESTART IDENTITY;"; - assertTrue(sqlparser.parse() == 0); - - TTruncateStatement stmt = (TTruncateStatement)sqlparser.sqlstatements.get(0); - assertTrue(stmt.joins.size() == 2); - assertTrue(stmt.joins.getJoin(0).getTable().toString().equalsIgnoreCase("bigtable")); - assertTrue(stmt.joins.getJoin(1).getTable().toString().equalsIgnoreCase("fattable")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testUpdateStmt.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testUpdateStmt.java deleted file mode 100644 index b82eaf65..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testUpdateStmt.java +++ /dev/null @@ -1,123 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-6-21 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.nodes.TResultColumnList; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import junit.framework.TestCase; - -public class testUpdateStmt extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "UPDATE weather SET temp_lo = temp_lo+1, temp_hi = temp_lo+15, prcp = DEFAULT\n" + - " WHERE city = 'San Francisco' AND date = '2003-07-03';"; - - assertTrue(sqlparser.parse() == 0); - - TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(updateSqlStatement.getTargetTable().toString().equalsIgnoreCase("weather")); - - TResultColumnList resultColumnList = updateSqlStatement.getResultColumnList(); - assertTrue(resultColumnList.size() == 3); - - TResultColumn resultColumn = resultColumnList.getResultColumn(0); - TExpression expr = resultColumn.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.assignment_t); - assertTrue(expr.getLeftOperand().toString().equalsIgnoreCase("temp_lo")); - assertTrue(expr.getRightOperand().toString().equalsIgnoreCase("temp_lo+1")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "UPDATE weather SET (temp_lo, temp_hi, prcp) = (temp_lo+1, temp_lo+15, DEFAULT)\n" + - " WHERE city = 'San Francisco' AND date = '2003-07-03';"; - - assertTrue(sqlparser.parse() == 0); - - TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(updateSqlStatement.getTargetTable().toString().equalsIgnoreCase("weather")); - - TResultColumnList resultColumnList = updateSqlStatement.getResultColumnList(); - assertTrue(resultColumnList.size() == 1); - - TResultColumn resultColumn = resultColumnList.getResultColumn(0); - TExpression expr = resultColumn.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.assignment_t); - - TExpression leftExpr = expr.getLeftOperand(); - assertTrue(leftExpr.getExpressionType() == EExpressionType.list_t); - - assertTrue(leftExpr.getExprList().size() == 3); - assertTrue(leftExpr.getExprList().getExpression(0).toString().equalsIgnoreCase("temp_lo")); - assertTrue(leftExpr.getExprList().getExpression(1).toString().equalsIgnoreCase("temp_hi")); - assertTrue(leftExpr.getExprList().getExpression(2).toString().equalsIgnoreCase("prcp")); - - TExpression rightExpr = expr.getRightOperand(); - assertTrue(rightExpr.getExpressionType() == EExpressionType.list_t); - assertTrue(rightExpr.getExprList().size() == 3); - - assertTrue(rightExpr.getExprList().getExpression(0).toString().equalsIgnoreCase("temp_lo+1")); - assertTrue(rightExpr.getExprList().getExpression(1).toString().equalsIgnoreCase("temp_lo+15")); - assertTrue(rightExpr.getExprList().getExpression(2).toString().equalsIgnoreCase("DEFAULT")); - - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "UPDATE accounts SET (contact_last_name, contact_first_name) =\n" + - " (SELECT last_name, first_name FROM salesmen\n" + - " WHERE salesmen.id = accounts.sales_id)"; - - assertTrue(sqlparser.parse() == 0); - - TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(updateSqlStatement.getTargetTable().toString().equalsIgnoreCase("accounts")); - - TResultColumnList resultColumnList = updateSqlStatement.getResultColumnList(); - assertTrue(resultColumnList.size() == 1); - - TResultColumn resultColumn = resultColumnList.getResultColumn(0); - TExpression expr = resultColumn.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.assignment_t); - - TExpression leftExpr = expr.getLeftOperand(); - assertTrue(leftExpr.getExpressionType() == EExpressionType.list_t); - - assertTrue(leftExpr.getExprList().size() == 2); - assertTrue(leftExpr.getExprList().getExpression(0).toString().equalsIgnoreCase("contact_last_name")); - assertTrue(leftExpr.getExprList().getExpression(1).toString().equalsIgnoreCase("contact_first_name")); - - TExpression rightExpr = expr.getRightOperand(); - assertTrue(rightExpr.getExpressionType() == EExpressionType.subquery_t); - assertTrue(rightExpr.getSubQuery().getResultColumnList().size() == 2); - assertTrue(rightExpr.getSubQuery().getResultColumnList().getResultColumn(0).getExpr().toString().equalsIgnoreCase("last_name")); - } - - public void test4(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "UPDATE films SET kind = 'Dramatic' from lib WHERE lib.f = films.f"; - - assertTrue(sqlparser.parse() == 0); - - TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(updateSqlStatement.getTargetTable().toString().equalsIgnoreCase("films")); - -// assertTrue(updateSqlStatement.getReferenceJoins().size() == 1); -// assertTrue(updateSqlStatement.getReferenceJoins().getJoin(0).getTable().toString().equalsIgnoreCase("lib")); - assertTrue(updateSqlStatement.joins.size() == 1); - assertTrue(updateSqlStatement.joins.getJoin(0).getTable().toString().equalsIgnoreCase("lib")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testVacuum.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testVacuum.java deleted file mode 100644 index efb872d0..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testVacuum.java +++ /dev/null @@ -1,37 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TVacuumStmt; -import junit.framework.TestCase; - -public class testVacuum extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "VACUUM"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstVacuum); - TVacuumStmt vacuumStmt = (TVacuumStmt) sqlparser.sqlstatements.get(0); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "VACUUM full tablename"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstVacuum); - TVacuumStmt vacuumStmt = (TVacuumStmt) sqlparser.sqlstatements.get(0); - assertTrue(vacuumStmt.getTableName().toString().equalsIgnoreCase("tablename")); - } - - public void test3() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "VACUUM full analyze tablename(f1,f2)"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstVacuum); - TVacuumStmt vacuumStmt = (TVacuumStmt) sqlparser.sqlstatements.get(0); - assertTrue(vacuumStmt.getTableName().toString().equalsIgnoreCase("tablename")); - assertTrue(vacuumStmt.getColumList().size() == 2); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testValueListInFromClause.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testValueListInFromClause.java deleted file mode 100644 index a314cd73..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testValueListInFromClause.java +++ /dev/null @@ -1,45 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 14-2-7 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -import java.util.ArrayList; - -public class testValueListInFromClause extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')) AS t (num,letter);"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = select.tables.getTable(0); - assertTrue(table.getTableType() == ETableSource.subquery); - - - ArrayList rowList = table.getSubquery().getValueClause().getRows(); - assertTrue(rowList.size() == 3); - TResultColumnList row = rowList.get(0); - assertTrue(row.size() == 2); - assertTrue(row.getResultColumn(0).toString().equalsIgnoreCase("1")); - assertTrue(row.getResultColumn(1).toString().equalsIgnoreCase("'one'")); - - row = rowList.get(2); - assertTrue(row.size() == 2); - assertTrue(row.getResultColumn(0).toString().equalsIgnoreCase("3")); - assertTrue(row.getResultColumn(1).toString().equalsIgnoreCase("'three'")); - - TAliasClause aliasClause = table.getAliasClause(); - assertTrue(aliasClause.getAliasName().toString().equalsIgnoreCase("t")); - assertTrue(aliasClause.getColumns().size() == 2); - assertTrue(aliasClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("num")); - assertTrue(aliasClause.getColumns().getObjectName(1).toString().equalsIgnoreCase("letter")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowClause.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowClause.java deleted file mode 100644 index 9189da0d..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowClause.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-5-19 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testWindowClause extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT sum(salary) OVER w, avg(salary) OVER w\n" + - " FROM empsalary\n" + - " WINDOW w AS (PARTITION BY depname ORDER BY salary DESC);"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowFunctions.java b/src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowFunctions.java deleted file mode 100644 index ae1df053..00000000 --- a/src/test/java/gudusoft/gsqlparser/postgresqlTest/testWindowFunctions.java +++ /dev/null @@ -1,97 +0,0 @@ -package gudusoft.gsqlparser.postgresqlTest; -/* - * Date: 11-5-24 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.TOrderBy; -import gudusoft.gsqlparser.nodes.TPartitionClause; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.nodes.TWindowDef; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testWindowFunctions extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsalary"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column3 = select.getResultColumnList().getResultColumn(3); - TExpression expression3 = column3.getExpr(); - TFunctionCall functionCall3 = expression3.getFunctionCall(); - assertTrue(functionCall3.getFunctionName().toString().equalsIgnoreCase("avg")); - TWindowDef windowDef3 = functionCall3.getWindowDef(); - TPartitionClause partitionClause3 = windowDef3.getPartitionClause(); - assertTrue(partitionClause3.getExpressionList().getExpression(0).toString().equalsIgnoreCase("depname")); - - // System.out.println(partitionClause.getExpressionList().getExpression(0).toString()); - // System.out.println(functionCall3.getFunctionName().toString()); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT empno, salary, rank() OVER (PARTITION BY depname1 ORDER BY salary DESC) FROM empsalary"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column2 = select.getResultColumnList().getResultColumn(2); - TExpression expression2 = column2.getExpr(); - TFunctionCall functionCall2 = expression2.getFunctionCall(); - assertTrue(functionCall2.getFunctionName().toString().equalsIgnoreCase("rank")); - TWindowDef windowDef2 = functionCall2.getWindowDef(); - TPartitionClause partitionClause2 = windowDef2.getPartitionClause(); - assertTrue(partitionClause2.getExpressionList().getExpression(0).toString().equalsIgnoreCase("depname1")); - - TOrderBy orderBy2 = windowDef2.getOrderBy( ); - assertTrue(orderBy2.getItems().getOrderByItem(0).getSortKey().toString().equalsIgnoreCase("salary")); - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT salary, sum(salary) OVER () FROM empsalary"; - assertTrue(sqlparser.parse() == 0); - - sqlparser.sqltext = "SELECT empno,salary, sum(salary) OVER (ORDER BY salary1) FROM empsalary"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column2 = select.getResultColumnList().getResultColumn(2); - TExpression expression2 = column2.getExpr(); - TFunctionCall functionCall2 = expression2.getFunctionCall(); - assertTrue(functionCall2.getFunctionName().toString().equalsIgnoreCase("sum")); - TWindowDef windowDef2 = functionCall2.getWindowDef(); - - TOrderBy orderBy2 = windowDef2.getOrderBy( ); - assertTrue(orderBy2.getItems().getOrderByItem(0).getSortKey().toString().equalsIgnoreCase("salary1")); - } - - public void test4(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlparser.sqltext = "SELECT sum(salary) OVER w, avg(salary) OVER w\n" + - " FROM empsalary\n" + - " WINDOW w AS (PARTITION BY depname ORDER BY salary DESC)"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = column0.getExpr(); - TFunctionCall functionCall0 = expression0.getFunctionCall(); - assertTrue(functionCall0.getFunctionName().toString().equalsIgnoreCase("sum")); - TWindowDef windowDef2 = functionCall0.getWindowDef(); - assertTrue(windowDef2.getName().toString().equalsIgnoreCase("w")); - //System.out.println(windowDef2.getName().toString()); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/prestoTest/testCreateTableLike.java b/src/test/java/gudusoft/gsqlparser/prestoTest/testCreateTableLike.java deleted file mode 100644 index ff4f741c..00000000 --- a/src/test/java/gudusoft/gsqlparser/prestoTest/testCreateTableLike.java +++ /dev/null @@ -1,27 +0,0 @@ -package gudusoft.gsqlparser.prestoTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateTableLike extends TestCase { - - public void testSelect() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpresto); - sqlparser.sqltext = "CREATE TABLE bigger_orders (\n" + - " another_orderkey bigint,\n" + - " LIKE orders,\n" + - " another_orderdate date\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.getColumnList().size() == 2); - assertTrue(createTableSqlStatement.getColumnList().getColumn(0).getColumnName().toString().equalsIgnoreCase("another_orderkey")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(1).getColumnName().toString().equalsIgnoreCase("another_orderdate")); - assertTrue(createTableSqlStatement.getLikeTableName().toString().equalsIgnoreCase("orders")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/prestoTest/testExplain.java b/src/test/java/gudusoft/gsqlparser/prestoTest/testExplain.java deleted file mode 100644 index 7197bcec..00000000 --- a/src/test/java/gudusoft/gsqlparser/prestoTest/testExplain.java +++ /dev/null @@ -1,34 +0,0 @@ -package gudusoft.gsqlparser.prestoTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TExplainPlan; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testExplain extends TestCase { - - public void testSelect() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpresto); - sqlparser.sqltext = "EXPLAIN ANALYZE SELECT count(*), clerk FROM orders WHERE orderdate > date '1995-01-01' GROUP BY clerk;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstExplain); - TExplainPlan explainPlan = (TExplainPlan)sqlparser.sqlstatements.get(0); - assertTrue(explainPlan.getStatement().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)explainPlan.getStatement(); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("orders")); - } - - public void testSelect2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpresto); - sqlparser.sqltext = "EXPLAIN ANALYZE VERBOSE SELECT count(clerk) OVER() FROM orders WHERE orderdate > date '1995-01-01';"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstExplain); - TExplainPlan explainPlan = (TExplainPlan)sqlparser.sqlstatements.get(0); - assertTrue(explainPlan.getStatement().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)explainPlan.getStatement(); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("orders")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/prestoTest/testPrepare.java b/src/test/java/gudusoft/gsqlparser/prestoTest/testPrepare.java deleted file mode 100644 index 2ac0a076..00000000 --- a/src/test/java/gudusoft/gsqlparser/prestoTest/testPrepare.java +++ /dev/null @@ -1,37 +0,0 @@ -package gudusoft.gsqlparser.prestoTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TPrepareStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testPrepare extends TestCase { - - public void testSelect() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpresto); - sqlparser.sqltext = "PREPARE my_select2 FROM\n" + - "SELECT name FROM nation WHERE regionkey = ? AND nationkey < ?;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstprepare); - TPrepareStmt prepareStmt = (TPrepareStmt)sqlparser.sqlstatements.get(0); - assertTrue(prepareStmt.getPreparableStmt().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)prepareStmt.getPreparableStmt(); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("nation")); - } - - public void testInsert() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpresto); - sqlparser.sqltext = "PREPARE my_insert FROM\n" + - "INSERT INTO cities VALUES (1, 'San Francisco');"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstprepare); - TPrepareStmt prepareStmt = (TPrepareStmt)sqlparser.sqlstatements.get(0); - assertTrue(prepareStmt.getPreparableStmt().sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement)prepareStmt.getPreparableStmt(); - assertTrue(insertSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("cities")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/prestoTest/testUnnest.java b/src/test/java/gudusoft/gsqlparser/prestoTest/testUnnest.java deleted file mode 100644 index 60f6b2d4..00000000 --- a/src/test/java/gudusoft/gsqlparser/prestoTest/testUnnest.java +++ /dev/null @@ -1,46 +0,0 @@ -package gudusoft.gsqlparser.prestoTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TResultColumnList; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.nodes.TUnnestClause; -import gudusoft.gsqlparser.nodes.TValueClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testUnnest extends TestCase { - - public void testSelect() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpresto); - sqlparser.sqltext = "SELECT numbers, animals, n, a\n" + - "FROM (\n" + - " VALUES\n" + - " (ARRAY[2, 5], ARRAY['dog', 'cat', 'bird']),\n" + - " (ARRAY[7, 8, 9], ARRAY['cow', 'pig'])\n" + - ") AS x (numbers, animals)\n" + - "CROSS JOIN UNNEST(numbers, animals) AS t (n, a);"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table0 = select.getTables().getTable(0); - assertTrue(table0.getTableType() == ETableSource.subquery); - TSelectSqlStatement subquery = table0.getSubquery(); - TValueClause valueClause = subquery.getValueClause(); - assertTrue(valueClause.getRows().size() == 2); - TResultColumnList columns = valueClause.getRows().get(0); - assertTrue(columns.size() == 2); - assertTrue(columns.getResultColumn(0).getExpr().toString().equalsIgnoreCase("ARRAY[2, 5]")); - assertTrue(columns.getResultColumn(1).getExpr().toString().equalsIgnoreCase("ARRAY['dog', 'cat', 'bird']")); - - TTable table1 = select.getTables().getTable(1); - assertTrue (table1.getTableType() == ETableSource.unnest); - TUnnestClause unnestClause = table1.getUnnestClause(); - assertTrue(unnestClause.getColumns().size() == 2); - assertTrue(unnestClause.getColumns().getObjectName(0).toString().equalsIgnoreCase("numbers")); - assertTrue(unnestClause.getColumns().getObjectName(1).toString().equalsIgnoreCase("animals")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateFunction.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateFunction.java deleted file mode 100644 index 7ebc9ea6..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateFunction.java +++ /dev/null @@ -1,94 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class TestCreateFunction extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create function f_sql_greater (float, float)\n" + - " returns float\n" + - "stable\n" + - "as $$\n" + - " select case when $1 > $2 then $1\n" + - " else $2\n" + - " end\n" + - "$$ language sql"; - // System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("f_sql_greater")); - assertTrue(createFunction.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.float_t); - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.float_t); - assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("sql")); - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - TExpression expression = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.case_t); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create function f_sql_commission (float, float )\n" + - " returns float\n" + - "stable\n" + - "as $$\n" + - " select f_sql_greater ($1, $2) \n" + - "$$ language sql;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("f_sql_commission")); - assertTrue(createFunction.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.float_t); - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.float_t); - assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("sql")); - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - TExpression expression = selectSqlStatement.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.function_t); - } - - public void testPython(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create function f_py_greater (a float, b float)\n" + - " returns float\n" + - "stable\n" + - "as $$\n" + - " if a > b:\n" + - " return a\n" + - " return b\n" + - "$$ language plpythonu;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("f_py_greater")); - assertTrue(createFunction.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = createFunction.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("a")); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.float_t); - - assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.float_t); - assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("plpythonu")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateProcedure.java deleted file mode 100644 index 51cb88ce..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/TestCreateProcedure.java +++ /dev/null @@ -1,130 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TIntoClause; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.ESqlStatementType.sstplsql_vardecl; - -public class TestCreateProcedure extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_sp1(f1 int, f2 varchar(20))\n" + - "AS $$\n" + - "DECLARE\n" + - " min_val int;\n" + - "BEGIN\n" + - " DROP TABLE IF EXISTS tmp_tbl;\n" + - " CREATE TEMP TABLE tmp_tbl(id int);\n" + - " INSERT INTO tmp_tbl values (f1),(10001),(10002);\n" + - " SELECT MIN(id) INTO min_val FROM tmp_tbl;\n" + - " RAISE INFO 'min_val = %, f2 = %', min_val, f2;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("test_sp1")); - assertTrue(createProcedure.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("f1")); - - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("plpgsql")); - - assertTrue(createProcedure.getDeclareStatements().size() == 1); - assertTrue (createProcedure.getDeclareStatements().get(0).sqlstatementtype== sstplsql_vardecl); - assertTrue(createProcedure.getBodyStatements().size() == 5); - assertTrue(createProcedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createProcedure.getBodyStatements().get(3); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("tmp_tbl")); - - } - - public void test11(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_sp1(f1 int, f2 varchar(20))\n" + - "AS $$\n" + - "DECLARE\n" + - " min_val int;\n" + - "BEGIN\n" + - " DROP TABLE IF EXISTS tmp_tbl;\n" + - " CREATE TEMP TABLE tmp_tbl(id int);\n" + - " INSERT INTO tmp_tbl values (f1),(10001),(10002);\n" + - " SELECT INTO min_val MIN(id) FROM tmp_tbl;\n" + - " RAISE INFO 'min_val = %, f2 = %', min_val, f2;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("test_sp1")); - assertTrue(createProcedure.getParameterDeclarations().size() == 2); - TParameterDeclaration parameterDeclaration = createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("f1")); - - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("plpgsql")); - - assertTrue(createProcedure.getDeclareStatements().size() == 1); - assertTrue (createProcedure.getDeclareStatements().get(0).sqlstatementtype== sstplsql_vardecl); - assertTrue(createProcedure.getBodyStatements().size() == 5); - assertTrue(createProcedure.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createProcedure.getBodyStatements().get(3); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("tmp_tbl")); - TIntoClause intoClause = selectSqlStatement.getIntoClause(); - assertTrue(intoClause.getVariableList().getObjectName(0).toString().equalsIgnoreCase("min_val")); - - } - - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE test_sp2(f1 IN int, f2 INOUT varchar(256), out_var OUT varchar(256))\n" + - "AS $$\n" + - "DECLARE\n" + - " loop_var int;\n" + - "BEGIN\n" + - " IF f1 is null OR f2 is null THEN\n" + - " RAISE EXCEPTION 'input cannot be null';\n" + - " END IF;\n" + - " DROP TABLE if exists my_etl;\n" + - " CREATE TEMP TABLE my_etl(a int, b varchar);\n" + - " FOR loop_var IN 1..f1 LOOP\n" + - " insert into my_etl values (loop_var, f2);\n" + - " f2 := f2 || '+' || f2;\n" + - " END LOOP;\n" + - " SELECT count(*) INTO out_var from my_etl;\n" + - "END;\n" + - "$$ LANGUAGE plpgsql;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("test_sp2")); - assertTrue(createProcedure.getParameterDeclarations().size() == 3); - TParameterDeclaration parameterDeclaration = createProcedure.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.int_t); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("f1")); - assertTrue(parameterDeclaration.getParameterMode() == EParameterMode.in); - - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("plpgsql")); - - assertTrue(createProcedure.getDeclareStatements().size() == 1); - assertTrue (createProcedure.getDeclareStatements().get(0).sqlstatementtype== sstplsql_vardecl); - assertTrue(createProcedure.getBodyStatements().size() == 5); - assertTrue(createProcedure.getBodyStatements().get(4).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createProcedure.getBodyStatements().get(4); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("my_etl")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterDatabase.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterDatabase.java deleted file mode 100644 index 558413fc..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterDatabase.java +++ /dev/null @@ -1,31 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAlterDatabaseStmt; -import junit.framework.TestCase; - - -public class testAlterDatabase extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter database tickit rename to newtickit"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstalterdatabase); - TAlterDatabaseStmt db = (TAlterDatabaseStmt)sqlparser.sqlstatements.get(0); - assertTrue(db.getDatabaseName().toString().equals("tickit")); - assertTrue(db.getNewDatabaseName().toString().endsWith("newtickit")); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter database tickit owner to dwuser;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstalterdatabase); - TAlterDatabaseStmt db = (TAlterDatabaseStmt)sqlparser.sqlstatements.get(0); - assertTrue(db.getDatabaseName().toString().equals("tickit")); - assertTrue(db.getOwnerName().toString().endsWith("dwuser")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterGroup.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterGroup.java deleted file mode 100644 index f74f4dff..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterGroup.java +++ /dev/null @@ -1,34 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.EAlterGroup; -import gudusoft.gsqlparser.stmt.TAlterGroup; -import junit.framework.TestCase; - -public class testAlterGroup extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter group admin_group add user dwuser;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstAlterGroup); - TAlterGroup group = (TAlterGroup) sqlparser.sqlstatements.get(0); - assertTrue(group.getAlterGroupType() == EAlterGroup.eagAddUser); - assertTrue(group.getGroupName().toString().endsWith("admin_group")); - assertTrue(group.getUserList().getObjectName(0).toString().endsWith("dwuser")); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter group admin_group rename to administrators;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstAlterGroup); - TAlterGroup group = (TAlterGroup) sqlparser.sqlstatements.get(0); - assertTrue(group.getAlterGroupType() == EAlterGroup.eagRename); - assertTrue(group.getGroupName().toString().endsWith("admin_group")); - assertTrue(group.getNewGroupName().toString().endsWith("administrators")); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterSchema.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterSchema.java deleted file mode 100644 index 2719c993..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterSchema.java +++ /dev/null @@ -1,33 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.EAlterSchema; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftAlterSchema; -import junit.framework.TestCase; - -public class testAlterSchema extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter schema sales rename to us_sales;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftAlterSchema); - TRedshiftAlterSchema schema = (TRedshiftAlterSchema) sqlparser.sqlstatements.get(0); - assertTrue(schema.getAlterSchemaType() == EAlterSchema.easRenameTo); - assertTrue(schema.getSchemaName().toString().endsWith("sales")); - assertTrue(schema.getNewSchemaName().toString().endsWith("us_sales")); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter schema us_sales owner to dwuser;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftAlterSchema); - TRedshiftAlterSchema schema = (TRedshiftAlterSchema) sqlparser.sqlstatements.get(0); - assertTrue(schema.getAlterSchemaType() == EAlterSchema.easOwnerTo); - assertTrue(schema.getSchemaName().toString().endsWith("us_sales")); - assertTrue(schema.getOwnerName().toString().endsWith("dwuser")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterTable.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterTable.java deleted file mode 100644 index dcb9e99c..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterTable.java +++ /dev/null @@ -1,96 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TAlterTableOption; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import junit.framework.TestCase; - - -public class testAlterTable extends TestCase { - - public void testAppendFromTable() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter table DATAMAX_DMAX15246GRIFFINRS.STAGING.LINEAGE_ASTEST1 append from\n" + - " DATAMAX_DMAX15246GRIFFINRS.STAGING.LINEAGE_ASTEST1_TEMP_newdata ignoreextra;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstaltertable); - TAlterTableStatement alterTableStmt = (TAlterTableStatement) sqlparser.sqlstatements.get(0); - assertTrue(alterTableStmt.getTableName().toString().equalsIgnoreCase("DATAMAX_DMAX15246GRIFFINRS.STAGING.LINEAGE_ASTEST1")); - assertTrue(alterTableStmt.getAlterTableOptionList().size() == 1); - TAlterTableOption option = alterTableStmt.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(option.getOptionType() == EAlterTableOptionType.appendFrom); - assertTrue(option.getSourceTableName().toString().equalsIgnoreCase("DATAMAX_DMAX15246GRIFFINRS.STAGING.LINEAGE_ASTEST1_TEMP_newdata")); - //assertTrue(option.getColumnName().toString().endsWith("feedback_score")); - } - - public void testAddColumn() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter table users\n" + - "add column feedback_score int\n" + - "default NULL;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstaltertable); - TAlterTableStatement table = (TAlterTableStatement) sqlparser.sqlstatements.get(0); - assertTrue(table.getAlterTableOptionList().size() == 1); - TAlterTableOption option = table.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(option.getOptionType() == EAlterTableOptionType.AddColumn); - - TColumnDefinition columnDefinition = option.getColumnDefinitionList().getColumn(0); - assertTrue(columnDefinition.getColumnName().toString().endsWith("feedback_score")); - assertTrue(columnDefinition.getDatatype().getDataType() == EDataType.int_t); - assertTrue(columnDefinition.getColumnAttributes().getColumnAttribute(0).getColumnAttributeType() == EColumnAttributeType.defaultValue); - assertTrue(columnDefinition.getColumnAttributes().getColumnAttribute(0).getDefaultValue().toString().equalsIgnoreCase("NULL")); - } - - public void testDropColumn() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter table users drop column feedback_score;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstaltertable); - TAlterTableStatement table = (TAlterTableStatement) sqlparser.sqlstatements.get(0); - assertTrue(table.getAlterTableOptionList().size() == 1); - TAlterTableOption option = table.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(option.getOptionType() == EAlterTableOptionType.DropColumn); - assertTrue(option.getColumnName().toString().endsWith("feedback_score")); - } - - public void testRenameColumn() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter table venue\n" + - "rename column venueseats to venuesize;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstaltertable); - TAlterTableStatement table = (TAlterTableStatement) sqlparser.sqlstatements.get(0); - assertTrue(table.getAlterTableOptionList().size() == 1); - TAlterTableOption option = table.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(option.getOptionType() == EAlterTableOptionType.RenameColumn); - assertTrue(option.getColumnName().toString().endsWith("venueseats")); - assertTrue(option.getNewColumnName().toString().endsWith("venuesize")); - } - - public void testRenameTable() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter table users\n" + - "rename to users_bkup;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstaltertable); - TAlterTableStatement table = (TAlterTableStatement) sqlparser.sqlstatements.get(0); - assertTrue(table.getAlterTableOptionList().size() == 1); - TAlterTableOption option = table.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(option.getOptionType() == EAlterTableOptionType.RenameTable); - assertTrue(option.getNewTableName().toString().endsWith("users_bkup")); - } - - public void testOwnTo() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter table vdate owner to vuser"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstaltertable); - TAlterTableStatement table = (TAlterTableStatement) sqlparser.sqlstatements.get(0); - assertTrue(table.getAlterTableOptionList().size() == 1); - TAlterTableOption option = table.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(option.getOptionType() == EAlterTableOptionType.ownerTo); - assertTrue(option.getNewOwnerName().toString().endsWith("vuser")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterUser.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterUser.java deleted file mode 100644 index c34a96d8..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAlterUser.java +++ /dev/null @@ -1,18 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftAlterUser; -import junit.framework.TestCase; - - -public class testAlterUser extends TestCase { - - public void testAddColumn() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "alter user admin createdb;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftAlterUser); - TRedshiftAlterUser user = (TRedshiftAlterUser) sqlparser.sqlstatements.get(0); - assertTrue(user.getUserName().toString().endsWith("admin")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyze.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyze.java deleted file mode 100644 index 73b3bc8c..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyze.java +++ /dev/null @@ -1,39 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftAnalyze; -import junit.framework.TestCase; - - -public class testAnalyze extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "analyze verbose;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftAnalyze); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "analyze listing;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftAnalyze); - TRedshiftAnalyze analyze = (TRedshiftAnalyze)sqlparser.sqlstatements.get(0); - assertTrue(analyze.getTableName().toString().equalsIgnoreCase("listing")); - } - - public void test3() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "analyze venue(venueid, venuename); "; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftAnalyze); - TRedshiftAnalyze analyze = (TRedshiftAnalyze)sqlparser.sqlstatements.get(0); - assertTrue(analyze.getTableName().toString().equalsIgnoreCase("venue")); - assertTrue(analyze.getColumnList().size() == 2); - assertTrue(analyze.getColumnList().getObjectName(0).toString().equalsIgnoreCase("venueid")); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyzeCompression.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyzeCompression.java deleted file mode 100644 index 441522b4..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testAnalyzeCompression.java +++ /dev/null @@ -1,32 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftAnalyzeCompression; -import junit.framework.TestCase; - - -public class testAnalyzeCompression extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "analyze compression listing;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftAnalyzeCompression); - TRedshiftAnalyzeCompression analyzeCompression = (TRedshiftAnalyzeCompression)sqlparser.sqlstatements.get(0); - assertTrue(analyzeCompression.getTableName().toString().equalsIgnoreCase("listing")); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "analyze compression sales(qtysold, commission, saletime)"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftAnalyzeCompression); - TRedshiftAnalyzeCompression analyzeCompression = (TRedshiftAnalyzeCompression)sqlparser.sqlstatements.get(0); - assertTrue(analyzeCompression.getTableName().toString().equalsIgnoreCase("sales")); - assertTrue(analyzeCompression.getColumnList().size() == 3); - assertTrue(analyzeCompression.getColumnList().getObjectName(2).toString().equalsIgnoreCase("saletime")); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCancel.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCancel.java deleted file mode 100644 index 4e22a447..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCancel.java +++ /dev/null @@ -1,30 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftCancel; -import junit.framework.TestCase; - -public class testCancel extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "cancel 802;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftCancel); - TRedshiftCancel cancel = (TRedshiftCancel) sqlparser.sqlstatements.get(0); - assertTrue(cancel.getProcessId().equalsIgnoreCase("802")); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "cancel 802 'Long-running query';"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftCancel); - TRedshiftCancel cancel = (TRedshiftCancel) sqlparser.sqlstatements.get(0); - assertTrue(cancel.getProcessId().equalsIgnoreCase("802")); - assertTrue(cancel.getMessage().equalsIgnoreCase("'Long-running query'")); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testClose.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testClose.java deleted file mode 100644 index f5ee94c9..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testClose.java +++ /dev/null @@ -1,18 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCloseStmt; -import junit.framework.TestCase; - -public class testClose extends TestCase { - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "close movie_cursor;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sst_closestmt); - TCloseStmt close = (TCloseStmt) sqlparser.sqlstatements.get(0); - assertTrue(close.getCursorName().toString().equalsIgnoreCase("movie_cursor")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testComment.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testComment.java deleted file mode 100644 index 5b7e7f4e..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testComment.java +++ /dev/null @@ -1,34 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbObjectType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftComment; -import junit.framework.TestCase; - - -public class testComment extends TestCase { - - public void testTable() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "comment on table event is 'Contains listings of individual events.';"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftComment); - TRedshiftComment comment = (TRedshiftComment) sqlparser.sqlstatements.get(0); - assertTrue(comment.getDbObjectType() == EDbObjectType.table); - assertTrue(comment.getObjectName().toString().equalsIgnoreCase("event")); - } - - public void testConstraint() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "comment on CONSTRAINT c1 on event is 'Contains listings of individual events.';"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftComment); - TRedshiftComment comment = (TRedshiftComment) sqlparser.sqlstatements.get(0); - assertTrue(comment.getDbObjectType() == EDbObjectType.constraint); - assertTrue(comment.getObjectName().toString().equalsIgnoreCase("c1")); - assertTrue(comment.getOnObjectName().toString().equalsIgnoreCase("event")); - assertTrue(comment.getCommentText().equalsIgnoreCase("'Contains listings of individual events.'")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCopy.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCopy.java deleted file mode 100644 index 8d80ff77..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCopy.java +++ /dev/null @@ -1,30 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftCopy; -import junit.framework.TestCase; - -public class testCopy extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "copy listing\n" + - "from 's3://mybucket/data/listings_pipe.txt'\n" + - "credentials 'aws_access_key_id=;token=;master_symmet \n" + - "ric_key='\n" + - "encrypted;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftCopy); - TRedshiftCopy copy = (TRedshiftCopy) sqlparser.sqlstatements.get(0); - assertTrue(copy.getTableName().toString().equalsIgnoreCase("listing")); - assertTrue(copy.getFromSource().equalsIgnoreCase("'s3://mybucket/data/listings_pipe.txt'")); - assertTrue(copy.getAuthorizationClause().getCredentials().equalsIgnoreCase("'aws_access_key_id=;token=;master_symmet \n" + - "ric_key='")); - - - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateDatabase.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateDatabase.java deleted file mode 100644 index 1d2c5aa5..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateDatabase.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateDatabaseSqlStatement; -import junit.framework.TestCase; - - -public class testCreateDatabase extends TestCase { - - public void testTable() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create database tickit_test\n" + - "with owner dwuser;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatedatabase); - TCreateDatabaseSqlStatement database = (TCreateDatabaseSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(database.getDatabaseName().toString().equalsIgnoreCase("tickit_test")); - assertTrue(database.getDbOwner().toString().equalsIgnoreCase("dwuser")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateGroup.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateGroup.java deleted file mode 100644 index 121f4eb3..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateGroup.java +++ /dev/null @@ -1,21 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateGroup; -import junit.framework.TestCase; - - -public class testCreateGroup extends TestCase { - - public void testTable() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create group admin_group with user admin;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftCreateGroup); - TCreateGroup createGroup = (TCreateGroup) sqlparser.sqlstatements.get(0); - assertTrue(createGroup.getGroupName().toString().equalsIgnoreCase("admin_group")); - assertTrue(createGroup.getUserList().getObjectName(0).toString().equalsIgnoreCase("admin")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateSchema.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateSchema.java deleted file mode 100644 index 4e02a1c6..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateSchema.java +++ /dev/null @@ -1,32 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateSchemaSqlStatement; -import junit.framework.TestCase; - - - -public class testCreateSchema extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create schema us_sales authorization dwuser;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateschema); - TCreateSchemaSqlStatement createSchema = (TCreateSchemaSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createSchema.getSchemaName().toString().equalsIgnoreCase("us_sales")); - assertTrue(createSchema.getOwnerName().toString().equalsIgnoreCase("dwuser")); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create schema if not exists us_sales;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateschema); - TCreateSchemaSqlStatement createSchema = (TCreateSchemaSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createSchema.getSchemaName().toString().equalsIgnoreCase("us_sales")); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateTable.java deleted file mode 100644 index 8930bf48..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateTable.java +++ /dev/null @@ -1,113 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.nodes.TConstraint; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - - -public class testCreateTable extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create table tickit.public.test (c1 int);"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("tickit.public.test")); - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("c1")); - assertTrue(cd.getDatatype().getDataType() == EDataType.int_t); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create table sales(\n" + - "salesid integer not null,\n" + - "listid integer not null,\n" + - "sellerid integer not null,\n" + - "buyerid integer not null,\n" + - "eventid integer not null encode mostly16,\n" + - "dateid smallint not null,\n" + - "qtysold smallint not null encode mostly8,\n" + - "pricepaid decimal(8,2) encode delta32k,\n" + - "commission decimal(8,2) encode delta32k,\n" + - "saletime timestamp,\n" + - "primary key(salesid),\n" + - "foreign key(listid) references listing(listid),\n" + - "foreign key(sellerid) references users(userid),\n" + - "foreign key(buyerid) references users(userid),\n" + - "foreign key(dateid) references date(dateid))\n" + - "distkey(listid)\n" + - "compound sortkey(listid,sellerid);"; - // System.out.print(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("sales")); - assertTrue(createTable.getColumnList().size() == 10); - assertTrue(createTable.getTableConstraints().size() == 5); - - TColumnDefinition cd = createTable.getColumnList().getColumn(4); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("eventid")); - //System.out.print(cd.getDatatype().getDataType()); - assertTrue(cd.getDatatype().getDataType() == EDataType.int_t); - // assertTrue(cd.getColumnAttributes().getEncoding().equalsIgnoreCase("mostly16")); - assertTrue(cd.getColumnAttributes().getColumnAttribute(0).getColumnAttributeType() == EColumnAttributeType.encode); - assertTrue(cd.getColumnAttributes().getColumnAttribute(0).getEncoding().equalsIgnoreCase("mostly16")); - - TConstraint constraint = createTable.getTableConstraints().getConstraint(0); - assertTrue(constraint.getConstraint_type() == EConstraintType.primary_key); - assertTrue(constraint.getColumnList().getElement(0).getColumnName().toString().equalsIgnoreCase("salesid")); - - constraint = createTable.getTableConstraints().getConstraint(1); - assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); - assertTrue(constraint.getColumnList().getElement(0).getColumnName().toString().equalsIgnoreCase("listid")); - assertTrue(constraint.getReferencedObject().toString().equalsIgnoreCase("listing")); - assertTrue(constraint.getReferencedColumnList().getObjectName(0).toString().equalsIgnoreCase("listid")); - } - - public void test3() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create table eventdistevensort diststyle even sortkey (venueid)\n" + - "as select eventid, venueid, dateid, eventname from event;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("eventdistevensort")); - - TSelectSqlStatement select = createTable.getSubQuery(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("event")); - assertTrue(select.getResultColumnList().size() == 4); - assertTrue(select.getResultColumnList().getResultColumn(0).getExpr().toString().equalsIgnoreCase("eventid")); - } - - public void test4() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "CREATE TABLE customer_v1 (\n" + - "c_custkey int8 NOT NULL DISTKEY SORTKEY PRIMARY KEY ,\n" + - "c_name varchar(25) NOT NULL ,\n" + - "c_address varchar(40) NOT NULL ,\n" + - "c_nationkey int4 NOT NULL REFERENCES nation(n_nationkey) ,\n" + - "c_phone char(15) NOT NULL ,\n" + - "c_acctbal numeric(12,2) NOT NULL ,\n" + - "c_mktsegment char(10) NOT NULL ,\n" + - "c_comment varchar(117) NOT NULL\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("customer_v1")); - - TColumnDefinition cd = createTable.getColumnList().getColumn(0); - assertTrue(cd.getColumnName().toString().equalsIgnoreCase("c_custkey")); - assertTrue(cd.getDatatype().getDataType() == EDataType.bigint_t); - assertTrue(cd.getColumnAttributes().getColumnAttribute(0).getColumnAttributeType() == EColumnAttributeType.distkey); - assertTrue(cd.getColumnAttributes().getColumnAttribute(1).getColumnAttributeType() == EColumnAttributeType.sortkey); - assertTrue(cd.getConstraints().getConstraint(0).getConstraint_type() == EConstraintType.notnull); - assertTrue(cd.getConstraints().getConstraint(1).getConstraint_type() == EConstraintType.primary_key); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateUser.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateUser.java deleted file mode 100644 index 4d96023b..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateUser.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftCreateUser; -import junit.framework.TestCase; - - -public class testCreateUser extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create user danny with password 'abcD1234' valid until '2014-06-10';"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftCreateUser); - TRedshiftCreateUser user = (TRedshiftCreateUser) sqlparser.sqlstatements.get(0); - assertTrue(user.getUserName().toString().equals("danny")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateView.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateView.java deleted file mode 100644 index 3f3d74da..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testCreateView.java +++ /dev/null @@ -1,25 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testCreateView extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "create view myevent as select eventname from event\n" + - "where eventname = 'LeAnn Rimes';"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreateview); - TCreateViewSqlStatement createview = (TCreateViewSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createview.getViewName().toString().equals("myevent")); - - TSelectSqlStatement select = createview.getSubquery(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("event")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDeallocate.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDeallocate.java deleted file mode 100644 index 2f24c50c..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDeallocate.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftDeallocate; -import junit.framework.TestCase; - - -public class testDeallocate extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "deallocate plan_name"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftDeallocate); - TRedshiftDeallocate deallocate = (TRedshiftDeallocate) sqlparser.sqlstatements.get(0); - assertTrue(deallocate.getPlanName().toString().equals("plan_name")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDeclare.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDeclare.java deleted file mode 100644 index c1222827..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDeclare.java +++ /dev/null @@ -1,33 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftDeclare; -import junit.framework.TestCase; - -public class testDeclare extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "declare lollapalooza cursor for \n" + - "select eventname, starttime, pricepaid/qtysold as costperticket, qtysold\n" + - "from sales, event\n" + - "where sales.eventid = event.eventid\n" + - "and eventname='Lollapalooza';"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftDeclare); - TRedshiftDeclare declare = (TRedshiftDeclare) sqlparser.sqlstatements.get(0); - assertTrue(declare.getCursorName().toString().equalsIgnoreCase("lollapalooza")); - - TSelectSqlStatement select = declare.getSubquery(); - assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("eventname")); - TExpression condition = select.getWhereClause().getCondition(); - assertTrue(condition.getExpressionType() == EExpressionType.logical_and_t); - - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDelete.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDelete.java deleted file mode 100644 index d6605bed..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDelete.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDeleteSqlStatement; -import junit.framework.TestCase; - -public class testDelete extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "delete from category\n" + - "using event\n" + - "where event.catid=category.catid and category.catid=9;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstdelete); - TDeleteSqlStatement delete = (TDeleteSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(delete.getTargetTable().toString().equalsIgnoreCase("category")); - assertTrue(delete.getReferenceJoins().getJoin(0).getTable().toString().equalsIgnoreCase("event")); - - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropDatabase.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropDatabase.java deleted file mode 100644 index 062efdc8..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropDatabase.java +++ /dev/null @@ -1,23 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropDatabaseStmt; -import junit.framework.TestCase; - - -public class testDropDatabase extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "drop database tickit_test;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstdropdatabase); - TDropDatabaseStmt dropDatabase = (TDropDatabaseStmt) sqlparser.sqlstatements.get(0); - assertTrue(dropDatabase.getDatabaseName().toString().equalsIgnoreCase("tickit_test")); - - - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropGroup.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropGroup.java deleted file mode 100644 index 16820de8..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropGroup.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropGroup; -import junit.framework.TestCase; - - -public class testDropGroup extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "drop group guests;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftDropGroup); - TDropGroup dropGroup = (TDropGroup) sqlparser.sqlstatements.get(0); - assertTrue(dropGroup.getGroupName().toString().equalsIgnoreCase("guests")); - - - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropSchema.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropSchema.java deleted file mode 100644 index 76b43a3f..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropSchema.java +++ /dev/null @@ -1,23 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; - -import gudusoft.gsqlparser.stmt.redshift.TRedshiftDropSchema; -import junit.framework.TestCase; - -public class testDropSchema extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "drop schema s_sales restrict;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftDropSchema); - TRedshiftDropSchema dropSchema = (TRedshiftDropSchema) sqlparser.sqlstatements.get(0); - assertTrue(dropSchema.getNameList().getObjectName(0).toString().equalsIgnoreCase("s_sales")); - - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropTable.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropTable.java deleted file mode 100644 index 5caffa7e..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropTable.java +++ /dev/null @@ -1,23 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropTableSqlStatement; -import junit.framework.TestCase; - - -public class testDropTable extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "drop table feedback, buyers cascade;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstdroptable); - TDropTableSqlStatement dropTable = (TDropTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(dropTable.getTableNameList().size() == 2); - assertTrue(dropTable.getTableNameList().getObjectName(0).toString().equalsIgnoreCase("feedback")); - assertTrue(dropTable.getTableNameList().getObjectName(1).toString().equalsIgnoreCase("buyers")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropUser.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropUser.java deleted file mode 100644 index 358b5bfd..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropUser.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftDropUser; -import junit.framework.TestCase; - - -public class testDropUser extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "drop user if exists danny;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftDropUser); - TRedshiftDropUser dropUser = (TRedshiftDropUser) sqlparser.sqlstatements.get(0); - assertTrue(dropUser.getUserNameList().size() == 1); - assertTrue(dropUser.getUserNameList().getObjectName(0).toString().equalsIgnoreCase("danny")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropView.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropView.java deleted file mode 100644 index 22cec56d..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testDropView.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDropViewSqlStatement; -import junit.framework.TestCase; - - -public class testDropView extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "drop view eventview cascade;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstdropview); - TDropViewSqlStatement dropView = (TDropViewSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(dropView.getViewNameList().size() == 1); - assertTrue(dropView.getViewNameList().getObjectName(0).toString().equalsIgnoreCase("eventview")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testExecute.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testExecute.java deleted file mode 100644 index c41e5e71..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testExecute.java +++ /dev/null @@ -1,23 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TExecuteSqlStatement; -import junit.framework.TestCase; - - -public class testExecute extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "execute stmtName (1,2);"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstExecute); - TExecuteSqlStatement exec = (TExecuteSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(exec.getStatementName().toString().equalsIgnoreCase("stmtName")); - assertTrue(exec.getParameters().size() == 2); - assertTrue(exec.getParameters().getExpression(0).toString().equalsIgnoreCase("1")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testExplain.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testExplain.java deleted file mode 100644 index 2fffd9ce..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testExplain.java +++ /dev/null @@ -1,46 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TExplainPlan; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testExplain extends TestCase { - - public void testSelect() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "explain\n" + - "select eventid, eventname, event.venueid, venuename\n" + - "from event, venue\n" + - "where event.venueid = venue.venueid;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstExplain); - TExplainPlan explainPlan = (TExplainPlan) sqlparser.sqlstatements.get(0); - assertTrue(explainPlan.getStatement().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)explainPlan.getStatement(); - assertTrue(select.joins.getJoin(0).getTable().toString().equalsIgnoreCase("event")); - assertTrue(select.joins.getJoin(1).getTable().toString().equalsIgnoreCase("venue")); - } - - public void testCreateTable() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "explain create table venue_nonulls as\n" + - "select * from venue\n" + - "where venueseats is not null;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstExplain); - TExplainPlan explainPlan = (TExplainPlan) sqlparser.sqlstatements.get(0); - assertTrue(explainPlan.getStatement().sqlstatementtype == ESqlStatementType.sstcreatetable); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)explainPlan.getStatement(); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("venue_nonulls")); - TSelectSqlStatement select = createTable.getSubQuery(); - assertTrue(select.getWhereClause().getCondition().toString().equalsIgnoreCase("venueseats is not null")); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testExpression.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testExpression.java deleted file mode 100644 index 45953907..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testExpression.java +++ /dev/null @@ -1,175 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testExpression extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select ('SMITH' || 'JONES')"; - assertTrue(sqlparser.parse() == 0); - TResultColumn resultColumn = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.parenthesis_t); - expression = expression.getLeftOperand(); - assertTrue(expression.getExpressionType() == EExpressionType.concatenate_t); - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select 2.0 ^ 3.0"; - assertTrue(sqlparser.parse() == 0); - TResultColumn resultColumn = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.exponentiate_t); - } - - public void test3() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select |/ 25.0;"; - assertTrue(sqlparser.parse() == 0); - TResultColumn resultColumn = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.unary_squareroot_t); - assertTrue(expression.getRightOperand().toString().equalsIgnoreCase("25.0")); - } - - public void test4() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select ||/ 25.0;"; - assertTrue(sqlparser.parse() == 0); - TResultColumn resultColumn = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.unary_cuberoot_t); - assertTrue(expression.getRightOperand().toString().equalsIgnoreCase("25.0")); - } - - public void test5() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select @ -5.0;"; - assertTrue(sqlparser.parse() == 0); - TResultColumn resultColumn = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - assertTrue(expression.getExpressionType() == EExpressionType.unary_absolutevalue_t); - expression = expression.getRightOperand(); - assertTrue(expression.getExpressionType() == EExpressionType.unary_minus_t); - //assertTrue(expression.getRightOperand().toString().equalsIgnoreCase("25.0")); - } - - public void test6() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select 1 << 4;"; - assertTrue(sqlparser.parse() == 0); - TResultColumn resultColumn = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - // System.out.println(expression.getExpressionType()); - assertTrue(expression.getExpressionType() == EExpressionType.left_shift_t); - } - - public void test7() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select 1 >> 4;"; - assertTrue(sqlparser.parse() == 0); - TResultColumn resultColumn = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - // System.out.println(expression.getExpressionType()); - assertTrue(expression.getExpressionType() == EExpressionType.right_shift_t); - } - - public void test8() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select 1 & 4;"; - assertTrue(sqlparser.parse() == 0); - TResultColumn resultColumn = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - // System.out.println(expression.getExpressionType()); - assertTrue(expression.getExpressionType() == EExpressionType.bitwise_and_t); - } - - public void test9() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select 1 | 4;"; - assertTrue(sqlparser.parse() == 0); - TResultColumn resultColumn = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - // System.out.println(expression.getExpressionType()); - assertTrue(expression.getExpressionType() == EExpressionType.bitwise_or_t); - } - - public void testBitwiseXor() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select 1 # 4;"; - assertTrue(sqlparser.parse() == 0); - TResultColumn resultColumn = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - // System.out.println(expression.getExpressionType()); - assertTrue(expression.getExpressionType() == EExpressionType.bitwise_xor_t); - } - - public void testBitwiseNot() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select ~ 4;"; - assertTrue(sqlparser.parse() == 0); - TResultColumn resultColumn = ((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getResultColumnList().getResultColumn(0); - TExpression expression = resultColumn.getExpr(); - // System.out.println(expression.getExpressionType()); - assertTrue(expression.getExpressionType() == EExpressionType.unary_bitwise_not_t); - } - - public void testExprList() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select * from venue\n" + - "where (venuecity, venuestate) in (('Miami', 'FL'), ('Tampa', 'FL'))\n" + - "order by venueid"; - assertTrue(sqlparser.parse() == 0); - TExpression expression =((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getWhereClause().getCondition(); - // System.out.println(expression.getExpressionType()); - assertTrue(expression.getExpressionType() == EExpressionType.in_t); - TExpression left = expression.getLeftOperand(); - TExpression right = expression.getRightOperand(); - assertTrue(left.getExpressionType() == EExpressionType.list_t); - assertTrue(right.getExpressionType() == EExpressionType.list_t); - assertTrue(right.getExprList().size() == 2); - TExpression right1 = right.getExprList().getExpression(0); - assertTrue(right1.getExpressionType() == EExpressionType.list_t); - assertTrue(right1.getExprList().size() == 2); - assertTrue(right1.getExprList().getExpression(0).toString().endsWith("'Miami'")); - } - - public void testPosixOperator() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select distinct city from users\n" + - "where city ~ '.*E.*|.*H.*' order by city;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TExpression expression =((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getWhereClause().getCondition(); - // System.out.println(expression.getExpressionType()); - assertTrue(expression.getExpressionType() == EExpressionType.pattern_matching_t); - TExpression left = expression.getLeftOperand(); - TExpression right = expression.getRightOperand(); - //System.out.println(left.toString()); - //System.out.println(right.toString()); - } - - public void testPosixNotOperator() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "select distinct city from users\n" + - "where city !~ '.*E.*|.*H.*' order by city;"; - assertTrue(sqlparser.parse() == 0); - TExpression expression =((TSelectSqlStatement)sqlparser.sqlstatements.get(0)).getWhereClause().getCondition(); - assertTrue(expression.getNotToken().toString().endsWith("!~")); - assertTrue(expression.getExpressionType() == EExpressionType.pattern_matching_t); - TExpression left = expression.getLeftOperand(); - TExpression right = expression.getRightOperand(); - // System.out.println(left.toString()); - // System.out.println(right.toString()); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testFetchFrom.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testFetchFrom.java deleted file mode 100644 index fd89a2f4..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testFetchFrom.java +++ /dev/null @@ -1,21 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.TFetchFromStmt; -import junit.framework.TestCase; - - -public class testFetchFrom extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "fetch forward 5 from lollapalooza;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstFetchFrom); - TFetchFromStmt fetchFromStmt = (TFetchFromStmt) sqlparser.sqlstatements.get(0); - assertTrue(fetchFromStmt.getCursorName().toString().equalsIgnoreCase("lollapalooza")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testLock.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testLock.java deleted file mode 100644 index c2b8a777..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testLock.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TLockTableStmt; -import junit.framework.TestCase; - - -public class testLock extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "lock event, sales;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstlocktable); - TLockTableStmt lock = (TLockTableStmt) sqlparser.sqlstatements.get(0); - assertTrue(lock.getTableList().size() == 2); - assertTrue(lock.getTableList().get(0).toString().equalsIgnoreCase("event")); - assertTrue(lock.getTableList().get(1).toString().equalsIgnoreCase("sales")); - - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testPrepare.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testPrepare.java deleted file mode 100644 index f6d787c8..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testPrepare.java +++ /dev/null @@ -1,30 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftPrepare; -import junit.framework.TestCase; - - -public class testPrepare extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "PREPARE prep_select_plan (char) \n" + - "AS select * from temp1 where c1 = $1;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftPrepare); - TRedshiftPrepare prepare = (TRedshiftPrepare) sqlparser.sqlstatements.get(0); - assertTrue(prepare.getPlanName().toString().equalsIgnoreCase("prep_select_plan")); - assertTrue(prepare.getDatatypeList().size() == 1); - assertTrue(prepare.getDatatypeList().getTypeName(0).getDataType() == EDataType.char_t); - assertTrue(prepare.getStatement().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)prepare.getStatement(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("temp1")); - - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testUnload.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testUnload.java deleted file mode 100644 index ec29b309..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testUnload.java +++ /dev/null @@ -1,29 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TUnloadStmt; -import junit.framework.TestCase; - - -public class testUnload extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "unload ('select * from venue')\n" + - "to 's3://mybucket/venue_pipe_' credentials\n" + - "'aws_access_key_id=;aws_secret_access_key='\n" + - "manifest;"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstunload); - TUnloadStmt unload = (TUnloadStmt) sqlparser.sqlstatements.get(0); - assertTrue(unload.getSelectStr().equalsIgnoreCase("'select * from venue'")); - assertTrue(unload.getS3().equalsIgnoreCase("'s3://mybucket/venue_pipe_'")); - assertTrue(unload.getAuthorizationClause().getCredentials().equalsIgnoreCase("'aws_access_key_id=;aws_secret_access_key='")); - TSelectSqlStatement selectSqlStatement = unload.getSelectSqlStatement(); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("venue")); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/redshiftTest/testVaccum.java b/src/test/java/gudusoft/gsqlparser/redshiftTest/testVaccum.java deleted file mode 100644 index 805a006f..00000000 --- a/src/test/java/gudusoft/gsqlparser/redshiftTest/testVaccum.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.redshiftTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.redshift.TRedshiftVacuum; -import junit.framework.TestCase; - - -public class testVaccum extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift); - sqlparser.sqltext = "vacuum delete only sales"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstredshiftVacuum); - TRedshiftVacuum vacuum = (TRedshiftVacuum) sqlparser.sqlstatements.get(0); - assertTrue(vacuum.getTableName().toString().equalsIgnoreCase("sales")); - - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testColumnAlias.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testColumnAlias.java deleted file mode 100644 index fa6b9a16..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testColumnAlias.java +++ /dev/null @@ -1,33 +0,0 @@ -package gudusoft.gsqlparser.scriptWriterTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testColumnAlias extends TestCase -{ - public void testSelectModifier1( ) { - String rawSql = "/*snapshot execution*/\n" + - "SELECT\n" + - "SCHEMA_NAME AS 'Schema name',\n" + - "SCHEMA_OWNER 'Schema owner',\n" + - "SCHEMA_IS_VIRTUAL 'Schema is virtual',\n" + - "SCHEMA_COMMENT 'Schema comment'\n" + - "FROM SYS.EXA_SCHEMAS\n" + - "WHERE SCHEMA_NAME = 'MTAB_SCRIPTS'"; - //System.out.println(rawSql); - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlParser.sqltext = rawSql; - int ret = sqlParser.parse(); - if (ret != 0) { - System.err.println("Error parsing:" + sqlParser.getErrormessage()); - assertTrue(false); - } else { - TSelectSqlStatement select = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); - String finalSql = select.toScript(); - //System.out.println("Final sql: " + finalSql); - assertTrue(finalSql.contains("SCHEMA_OWNER")); - } - } -} diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testCreateNode.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testCreateNode.java deleted file mode 100644 index 284c3ec9..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testCreateNode.java +++ /dev/null @@ -1,1791 +0,0 @@ - -package gudusoft.gsqlparser.scriptWriterTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.oracle.TInvokerRightsClause; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TCaseOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import gudusoft.gsqlparser.stmt.*; -import gudusoft.gsqlparser.stmt.mssql.TMssqlBlock; -import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare; -import gudusoft.gsqlparser.stmt.mssql.TMssqlExecute; -import gudusoft.gsqlparser.stmt.mssql.TMssqlIfElse; -import gudusoft.gsqlparser.stmt.mssql.TMssqlPrint; -import gudusoft.gsqlparser.stmt.mssql.TMssqlRaiserror; -import gudusoft.gsqlparser.stmt.oracle.TPlsqlCreateProcedure; -import junit.framework.TestCase; - -import java.util.ArrayList; - - -public class testCreateNode extends TestCase -{ - - private TGSqlParser OracleParser = null; - private TGSqlParser SQLServerParser = null; - - - protected void setUp() throws Exception { - super.setUp(); - OracleParser = new TGSqlParser(EDbVendor.dbvoracle); - SQLServerParser = new TGSqlParser(EDbVendor.dbvmssql); - - } - - protected void tearDown() throws Exception { - OracleParser = null; - SQLServerParser = null; - super.tearDown(); - } - - public void testCreateSourceToken( ) - { - TSourceToken st = new TSourceToken("AToken"); - assertTrue(st.toScript().equalsIgnoreCase("AToken")); - - //TGSqlParser sqlParser= new TGSqlParser(EDbVendor.dbvmssql); - } - - public void testCreateObjectname( ) - { - // use new constructor to create an object name - TObjectName tableName = TObjectName.createObjectName ( EDbVendor.dbvoracle, EDbObjectType.table, new TSourceToken("ATable")); - assertTrue(tableName.toScript().equalsIgnoreCase("ATable")); - - // TObjectName columnName = new TObjectName(EDbObjectType.column,new TSourceToken("ATable"),new TSourceToken("AColumn")); - TObjectName columnName = TObjectName.createObjectName (EDbVendor.dbvoracle, EDbObjectType.column,new TSourceToken("ATable"),new TSourceToken("AColumn")); - assertTrue(columnName.toScript().equalsIgnoreCase("ATable.AColumn")); - - // use parseObjectName() method to create a three parts object name - TGSqlParser sqlParser= new TGSqlParser(EDbVendor.dbvmssql); - columnName = sqlParser.parseObjectName("scott.emp.salary"); - assertTrue(columnName.toScript().equalsIgnoreCase("scott.emp.salary")); - } - - public void testCreateConstant( ) - { - // use new constructor to create constant - TConstant numberConstant = new TConstant(ELiteralType.etNumber,new TSourceToken("9.1")); - assertTrue(numberConstant.toScript().equalsIgnoreCase("9.1")); - - // use parseConstant() method to create constant - TGSqlParser sqlParser= new TGSqlParser(EDbVendor.dbvmssql); - numberConstant = sqlParser.parseConstant("9.1"); - assertTrue(numberConstant.toScript().equalsIgnoreCase("9.1")); - } - - public void testCreateFunction( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmssql); - TFunctionCall functionCall = sqlParser.parseFunctionCall("fx(a1,a2)"); - assertTrue( functionCall.getFunctionName( ) - .toScript() - .equalsIgnoreCase( "fx" ) ); - } - - - public void testCreateSubquery( ) { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmssql); - - String subQueryStr = " SELECT *\r\n" - + " FROM CompanyData.dbo.Customers_33\r\n" - + " UNION ALL\r\n" - + " SELECT *\r\n" - + " FROM Server2.CompanyData.dbo.Customers_66\r\n" - + " UNION ALL\r\n" - + " SELECT *\r\n" - + " FROM Server3.CompanyData.dbo.Customers_99"; - - TSelectSqlStatement subquery = sqlParser.parseSubquery(subQueryStr); - } - - public void testCreateTable( ) - { - - TCreateTableSqlStatement createTable = new TCreateTableSqlStatement( EDbVendor.dbvoracle ); - - TTable table = new TTable( ); - table.setTableName( OracleParser.parseObjectName( "newTable" ) ); - createTable.setTargetTable( table ); - - TColumnDefinitionList columns = new TColumnDefinitionList( ); - createTable.setColumnList( columns ); - - TColumnDefinition column1 = new TColumnDefinition( ); - columns.addColumn( column1 ); - column1.setColumnName( OracleParser.parseObjectName("column1") ); - TTypeName datatype1 = new TTypeName( ); - datatype1.setDataType( EDataType.number_t ); - datatype1.setPrecision(OracleParser.parseConstant("10")); - datatype1.setScale( OracleParser.parseConstant("2") ); - column1.setDatatype( datatype1 ); - - TConstraintList constraintList1 = new TConstraintList( ); - column1.setConstraints( constraintList1 ); - TConstraint constraint1 = new TConstraint( ); - constraintList1.addConstraint( constraint1 ); - constraint1.setConstraint_type( EConstraintType.primary_key ); - - TColumnDefinition column2 = new TColumnDefinition( ); - columns.addColumn( column2 ); - column2.setColumnName( OracleParser.parseObjectName("column2") ); - TTypeName datatype2 = new TTypeName( ); - datatype2.setDataType( EDataType.char_t ); - datatype2.setLength( OracleParser.parseConstant("10") ); - column2.setDatatype( datatype2 ); - - TConstraintList constraintList2 = new TConstraintList( ); - column2.setConstraints( constraintList2 ); - TConstraint constraint2 = new TConstraint( ); - constraintList2.addConstraint( constraint2 ); - constraint2.setConstraint_type( EConstraintType.notnull ); - - TColumnDefinition column3 = new TColumnDefinition( ); - columns.addColumn( column3 ); - column3.setColumnName( OracleParser.parseObjectName("title") ); - TTypeName datatype3 = new TTypeName( ); - datatype3.setDataType( EDataType.varchar_t ); - datatype3.setLength( OracleParser.parseConstant("20") ); - column3.setDatatype( datatype3 ); - - TConstraintList constraintList3 = new TConstraintList( ); - column3.setConstraints( constraintList3 ); - TConstraint constraint3 = new TConstraint( ); - constraintList3.addConstraint( constraint3 ); - constraint3.setConstraint_type( EConstraintType.default_value ); - constraint3.setDefaultExpression(OracleParser.parseExpression("'manager'")); - - TColumnDefinition column4 = new TColumnDefinition( ); - columns.addColumn( column4 ); - column4.setColumnName( OracleParser.parseObjectName("column4") ); - TTypeName datatype4 = new TTypeName( ); - datatype4.setDataType( EDataType.integer_t ); - column4.setDatatype( datatype4 ); - - TConstraintList constraintList4 = new TConstraintList( ); - column4.setConstraints( constraintList4 ); - TConstraint constraint4 = new TConstraint( ); - constraintList4.addConstraint( constraint4 ); - constraint4.setConstraint_type( EConstraintType.reference ); - constraint4.setReferencedObject( OracleParser.parseObjectName("table2") ); - - TObjectNameList referencedColumns = new TObjectNameList( ); - referencedColumns.addObjectName( OracleParser.parseObjectName("ref_column") ); - constraint4.setReferencedColumnList( referencedColumns ); - - TConstraintList tableConstraints = new TConstraintList( ); - createTable.setTableConstraints( tableConstraints ); - TConstraint tableConstraint = new TConstraint( ); - tableConstraints.addConstraint( tableConstraint ); - tableConstraint.setConstraint_type( EConstraintType.foreign_key ); - tableConstraint.setReferencedObject( OracleParser.parseObjectName("table3") ); - - TPTNodeList Columns = new TPTNodeList( ); - Columns.addNode( new TColumnWithSortOrder( - OracleParser.parseObjectName( "column1" ) ) ); - Columns.addNode( new TColumnWithSortOrder( - OracleParser.parseObjectName( "column2" ) ) ); - tableConstraint.setColumnList( Columns ); - - TObjectNameList referencedColumns2 = new TObjectNameList( ); - referencedColumns2.addObjectName( OracleParser.parseObjectName("ref_column1") ); - referencedColumns2.addObjectName( OracleParser.parseObjectName("ref_column2") ); - tableConstraint.setReferencedColumnList( referencedColumns2 ); - - // System.out.println(scriptGenerator.generateScript(createTable, - // true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,createTable.toScript() - ,"CREATE TABLE newtable(column1 NUMBER (10,2) PRIMARY KEY,\n" - + " column2 CHAR (10) NOT NULL,\n" - + " title VARCHAR (20) DEFAULT 'manager',\n" - + " column4 INTEGER REFERENCES table2(ref_column),\n" - + " FOREIGN KEY (column1,column2) REFERENCES table3(ref_column1,ref_column2) )" - )); - - } - - public void testMssqlCreateTrigger( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TStatementList stmts = new TStatementList( ); - - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText( SQLServerParser.parseExpression("50009") ); - error.setSeverity( SQLServerParser.parseExpression("16") ); - error.setState(SQLServerParser.parseExpression("10")); - - stmts.add( error ); - - createTrigger.setBodyStatements( stmts ); - - String createTriggerQuery = "CREATE TRIGGER reminder\r\n" - + "ON titles\r\n" - + "FOR INSERT , UPDATE\r\n" - + "AS RAISERROR (50009,16,10)"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - } - - public void testMssqlCreateTrigger1( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - TStatementList stmts = new TStatementList( ); - - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText( SQLServerParser.parseExpression("50009") ); - error.setSeverity( SQLServerParser.parseExpression("16") ); - error.setState(SQLServerParser.parseExpression("10")); - - stmts.add( error ); - - createTrigger.setBodyStatements( stmts ); - - String createTriggerQuery = "CREATE TRIGGER reminder\r\n" - + "ON titles\r\n" - + "instead of INSERT , UPDATE\r\n" - + "AS RAISERROR (50009,16,10)"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - - } - - public void testMssqlAlterTrigger2( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - createTrigger.setAlterTrigger( true ); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TStatementList stmts = new TStatementList( ); - - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText( SQLServerParser.parseExpression("50009") ); - error.setSeverity( SQLServerParser.parseExpression("16") ); - error.setState(SQLServerParser.parseExpression("10")); - - stmts.add( error ); - - createTrigger.setBodyStatements( stmts ); - - String createTriggerQuery = "ALTER TRIGGER reminder\r\n" - + "ON titles\r\n" - + "instead of INSERT , UPDATE\r\n" - + "AS RAISERROR (50009,16,10)"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - } - - public void testMssqlCreateTrigger3( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - TMssqlIfElse ifstmt = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifstmt.setCondition(SQLServerParser.parseExpression("update(col1)")); - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText(SQLServerParser.parseExpression("50009")); - error.setSeverity( SQLServerParser.parseExpression("16") ); - error.setState( SQLServerParser.parseExpression("10") ); - ifstmt.setStmt( error ); - - createTrigger.getBodyStatements( ).add( ifstmt ); - - String createTriggerQuery = "CREATE TRIGGER reminder\r\n" - + "ON titles\r\n" - + "instead of INSERT , UPDATE\r\n" - + "AS if update(col1) RAISERROR (50009,16,10)"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - } - - public void testMssqlCreateTrigger4( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - TMssqlIfElse ifstmt = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifstmt.setCondition(SQLServerParser.parseExpression("update(col1)")); - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText(SQLServerParser.parseExpression("50009")); - error.setSeverity( SQLServerParser.parseExpression("16") ); - error.setState( SQLServerParser.parseExpression("10") ); - TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); - block.getBodyStatements( ).add( error ); - ifstmt.setStmt( block ); - - createTrigger.getBodyStatements( ).add( ifstmt ); - - String createTriggerQuery = "CREATE TRIGGER reminder\r\n" - + "ON titles\r\n" - + "instead of INSERT , UPDATE\r\n" - + "AS if update(col1)\r\n" - + " begin \r\n" - + " RAISERROR (50009,16,10)\r\n" - + " end"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - } - - public void testMssqlCreateTrigger5( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("reminder")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatInsteadOf); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("titles")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem0 = new TDmlEventItem(); - dmlEventItem0.setDmlType(ESqlStatementType.sstdelete); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem0); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TMssqlExecute exec = new TMssqlExecute( EDbVendor.dbvmssql ); - exec.setModuleName(SQLServerParser.parseObjectName("master..xp_sendmail")); - TExecParameterList params = new TExecParameterList( ); - TExecParameter param1 = new TExecParameter( ); - param1.setParameterValue( SQLServerParser.parseExpression("'MaryM'") ); - params.addExecParameter( param1 ); - TExecParameter param2 = new TExecParameter( ); - param2.setParameterValue(SQLServerParser.parseExpression("'Don''t forget to print a report for the distributors.'")); - params.addExecParameter( param2 ); - exec.setParameters( params ); - createTrigger.getBodyStatements( ).add( exec ); - - String createTriggerQuery = "CREATE TRIGGER reminder\r\n" - + "ON titles\r\n" - + "instead of DELETE , INSERT , UPDATE\r\n" - + "AS EXEC master..xp_sendmail 'MaryM',\r\n" - + " 'Don''t forget to print a report for the distributors.'"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - - } - - public void testMssqlCreateTrigger6( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("employee_insupd")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("employee")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TMssqlDeclare declare = new TMssqlDeclare( EDbVendor.dbvmssql ); - TDeclareVariableList vars = new TDeclareVariableList( ); - TDeclareVariable var = new TDeclareVariable( ); - var.setVariableName( SQLServerParser.parseObjectName("@min_lvl") ); - TTypeName datatype = new TTypeName( ); - datatype.setDataType( EDataType.tinyint_t ); - var.setDatatype( datatype ); - vars.addDeclareVariable( var ); - - TDeclareVariable var1 = new TDeclareVariable( ); - var1.setVariableName( SQLServerParser.parseObjectName("@max_lvl") ); - TTypeName datatype1 = new TTypeName( ); - datatype1.setDataType( EDataType.tinyint_t ); - var1.setDatatype( datatype1 ); - vars.addDeclareVariable( var1 ); - - TDeclareVariable var2 = new TDeclareVariable( ); - var2.setVariableName( SQLServerParser.parseObjectName("@emp_lvl") ); - TTypeName datatype2 = new TTypeName( ); - datatype2.setDataType( EDataType.tinyint_t ); - var2.setDatatype( datatype2 ); - vars.addDeclareVariable( var2 ); - - TDeclareVariable var3 = new TDeclareVariable( ); - var3.setVariableName( SQLServerParser.parseObjectName("@job_id") ); - TTypeName datatype3 = new TTypeName( ); - datatype3.setDataType( EDataType.smallint_t ); - var3.setDatatype( datatype3 ); - vars.addDeclareVariable( var3 ); - - declare.setVariables( vars ); - - createTrigger.getBodyStatements( ).add( declare ); - createTrigger.getBodyStatements( ) - .add( SQLServerParser.parseSubquery ( "SELECT @min_lvl = min_lvl,\r\n" - + " @max_lvl = max_lvl,\r\n" - + " @emp_lvl = i.job_lvl,\r\n" - + " @job_id = i.job_id\r\n" - + "FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id\r\n" - + " JOIN jobs j ON j.job_id = i.job_id" ) ); - - TMssqlIfElse ifElse = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifElse.setCondition( SQLServerParser.parseExpression("(@job_id = 1) and (@emp_lvl <> 10)") ); - - TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); - TMssqlRaiserror error = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error.setMessageText( new TExpression(SQLServerParser.parseConstant("'Job id 1 expects the default level of 10.'") )); - error.setSeverity( new TExpression(SQLServerParser.parseConstant("16")) ); - error.setState( new TExpression(SQLServerParser.parseConstant("1")) ); - block.getBodyStatements( ).add( error ); - - // TMssqlRollback rollback = new TMssqlRollback( EDbVendor.dbvmssql ); - // rollback.setTrans_or_work( new TSourceToken( "transaction" ) ); - // block.getBodyStatements( ).add( rollback ); - - ifElse.setStmt( block ); - - TMssqlIfElse ifStmt = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifStmt.setCondition( SQLServerParser.parseExpression("NOT(@emp_lvl BETWEEN @min_lvl AND @max_lvl)") ); - - TMssqlBlock block1 = new TMssqlBlock( EDbVendor.dbvmssql ); - TMssqlRaiserror error1 = new TMssqlRaiserror( EDbVendor.dbvmssql ); - error1.setMessageText(new TExpression(SQLServerParser.parseConstant("'The level for job_id:%d should be between %d and %d.'")) ); - error1.setSeverity( new TExpression(SQLServerParser.parseConstant("16")) ); - error1.setState( new TExpression(SQLServerParser.parseConstant("1")) ); - TExpressionList expressions = new TExpressionList( ); - expressions.addExpression( new TExpression(SQLServerParser.parseObjectName("@job_id")) ); - expressions.addExpression( new TExpression(SQLServerParser.parseObjectName("@min_lvl")) ); - expressions.addExpression( new TExpression(SQLServerParser.parseObjectName("@max_lvl")) ); - error1.setArgs( expressions ); - block1.getBodyStatements( ).add( error1 ); - - // TMssqlRollback rollback1 = new TMssqlRollback( EDbVendor.dbvmssql ); - // rollback1.setTrans_or_work( new TSourceToken( "transaction" ) ); - // block1.getBodyStatements( ).add( rollback ); - ifStmt.setStmt( block1 ); - - ifElse.setElseStmt( ifStmt ); - createTrigger.getBodyStatements( ).add( ifElse ); - - String createTriggerQuery = "CREATE TRIGGER employee_insupd\r\n" - + "ON employee\r\n" - + "FOR INSERT , UPDATE\r\n" - + "AS\r\n" - + "DECLARE @min_lvl tinyint,\r\n" - + " @max_lvl tinyint,\r\n" - + " @emp_lvl tinyint,\r\n" - + " @job_id smallint ;\r\n" - + "SELECT @min_lvl = min_lvl,\r\n" - + " @max_lvl = max_lvl,\r\n" - + " @emp_lvl = i.job_lvl,\r\n" - + " @job_id = i.job_id\r\n" - + "FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id\r\n" - + " JOIN jobs j ON j.job_id = i.job_id;\r\n" - + "IF (@job_id = 1) and (@emp_lvl <> 10)\r\n" - + "BEGIN \r\n" - + " RAISERROR ('Job id 1 expects the default level of 10.',16,1)\r\n" - // + " ROLLBACK TRANSACTION\r\n" - + "END \r\n" - + "ELSE \r\n" - + "IF NOT(@emp_lvl BETWEEN @min_lvl AND @max_lvl)\r\n" - + "BEGIN \r\n" - + " RAISERROR ('The level for job_id:%d should be between %d and %d.'," - + "16,1,@job_id,@min_lvl,@max_lvl)\r\n" - // + " ROLLBACK TRANSACTION\r\n" - + "END ;"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - } - - public void testMssqlCreateTrigger7( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("trig1")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("authors")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem0 = new TDmlEventItem(); - dmlEventItem0.setDmlType(ESqlStatementType.sstdelete); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem0); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - createTrigger.getBodyStatements( ) - .add( SQLServerParser.parseSubquery("SELECT a.au_lname, a.au_fname, x.info\r\n" - + "FROM authors a INNER JOIN does_not_exist x\r\n" - + " ON a.au_id = x.au_id") ); - - String createTriggerQuery = "CREATE TRIGGER trig1\r\n" - + "on authors\r\n" - + "FOR DELETE , INSERT , UPDATE\r\n" - + "AS\r\n" - + " SELECT a.au_lname, a.au_fname, x.info\r\n" - + " FROM authors a INNER JOIN does_not_exist x\r\n" - + " ON a.au_id = x.au_id"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createTrigger.toScript() - ,createTriggerQuery - )); - } - - public void testMssqlCreateTrigger8( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("trig2")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("authors")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem1 = new TDmlEventItem(); - dmlEventItem1.setDmlType(ESqlStatementType.sstinsert); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem1); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - TMssqlDeclare declare = new TMssqlDeclare( EDbVendor.dbvmssql ); - TDeclareVariableList vars = new TDeclareVariableList( ); - TDeclareVariable var = new TDeclareVariable( ); - var.setVariableName( SQLServerParser.parseObjectName("@fax") ); - TTypeName datatype = new TTypeName( ); - datatype.setDataType(EDataType.varchar_t); - datatype.setLength( SQLServerParser.parseConstant("12") ); - var.setDatatype( datatype ); - vars.addDeclareVariable( var ); - declare.setVariables( vars ); - - createTrigger.getBodyStatements( ).add( declare ); - - createTrigger.getBodyStatements( ) - .add( SQLServerParser.parseSubquery("SELECT @fax = phone\r\n" - + "FROM authors") ); - - String createTriggerQuery = "CREATE TRIGGER trig2\r\n" - + "ON authors\r\n" - + "FOR INSERT , UPDATE\r\n" - + "AS\r\n" - + " DECLARE @fax varchar (12);\r\n" - + " SELECT @fax = phone\r\n" - + " FROM authors;"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - , createTrigger.toScript() - , createTriggerQuery - )); - } - - public void testMssqlCreateTrigger9( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("updEmployeeData")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("employeeData")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TMssqlIfElse ifElse = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifElse.setCondition( SQLServerParser.parseExpression("(COLUMNS_UPDATED() & 14) > 0") ); - - TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); - - TInsertSqlStatement insert = new TInsertSqlStatement( EDbVendor.dbvmssql ); - TTable insertTable = new TTable( ); - insertTable.setTableName( SQLServerParser.parseObjectName("auditEmployeeData") ); - insert.setTargetTable( insertTable ); - - TObjectNameList columnNameList = new TObjectNameList( ); - insert.setColumnList( columnNameList ); - columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_log_type") ); - columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_id") ); - columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_bankAccountNumber") ); - columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_salary") ); - columnNameList.addObjectName( SQLServerParser.parseObjectName("audit_emp_SSN") ); - - insert.setSubQuery( SQLServerParser.parseSubquery("SELECT 'OLD',\r\n" - + " del.emp_id,\r\n" - + " del.emp_bankAccountNumber,\r\n" - + " del.emp_salary,\r\n" - + " del.emp_SSN\r\n" - + "FROM deleted del") ); - - block.getBodyStatements( ).add( insert ); - - TInsertSqlStatement insert1 = new TInsertSqlStatement( EDbVendor.dbvmssql ); - TTable insertTable1 = new TTable( ); - insertTable1.setTableName( SQLServerParser.parseObjectName("auditEmployeeData") ); - insert1.setTargetTable( insertTable1 ); - - TObjectNameList columnNameList1 = new TObjectNameList( ); - insert1.setColumnList( columnNameList1 ); - columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_log_type") ); - columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_id") ); - columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_bankAccountNumber") ); - columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_salary") ); - columnNameList1.addObjectName( SQLServerParser.parseObjectName("audit_emp_SSN") ); - - insert1.setSubQuery( SQLServerParser.parseSubquery("SELECT 'NEW',\r\n" - + " ins.emp_id,\r\n" - + " ins.emp_bankAccountNumber,\r\n" - + " ins.emp_salary,\r\n" - + " ins.emp_SSN\r\n" - + "FROM inserted ins") ); - block.getBodyStatements( ).add( insert1 ); - - ifElse.setStmt( block ); - createTrigger.getBodyStatements( ).add( ifElse ); - - String createTriggerQuery = "CREATE TRIGGER updEmployeeData\r\n" - + "ON employeeData\r\n" - + "FOR update\r\n" - + "AS\r\n" - + " IF (COLUMNS_UPDATED() & 14) > 0\r\n" - + " BEGIN \r\n" - + " INSERT INTO auditEmployeeData\r\n" - + " (audit_log_type,\r\n" - + " audit_emp_id,\r\n" - + " audit_emp_bankAccountNumber,\r\n" - + " audit_emp_salary,\r\n" - + " audit_emp_SSN)\r\n" - + " SELECT 'OLD',\r\n" - + " del.emp_id,\r\n" - + " del.emp_bankAccountNumber,\r\n" - + " del.emp_salary,\r\n" - + " del.emp_SSN\r\n" - + " FROM deleted del;\r\n" - + " INSERT INTO auditEmployeeData\r\n" - + " (audit_log_type,\r\n" - + " audit_emp_id,\r\n" - + " audit_emp_bankAccountNumber,\r\n" - + " audit_emp_salary,\r\n" - + " audit_emp_SSN)\r\n" - + " SELECT 'NEW',\r\n" - + " ins.emp_id,\r\n" - + " ins.emp_bankAccountNumber,\r\n" - + " ins.emp_salary,\r\n" - + " ins.emp_SSN\r\n" - + " FROM inserted ins;\r\n" - + " END"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - , createTrigger.toScript() - , createTriggerQuery - )); - } - - public void testMssqlCreateTrigger10( ) - { - TCreateTriggerStmt createTrigger = new TCreateTriggerStmt( EDbVendor.dbvmssql ); - createTrigger.setTriggerName(SQLServerParser.parseObjectName("tr1")); - - TSimpleDmlTriggerClause dmlTriggerClause = new TSimpleDmlTriggerClause(); - dmlTriggerClause.setActionTime(ETriggerActionTime.tatFor); - - TDmlEventClause dmlEventClause = new TDmlEventClause(); - dmlEventClause.setTableName(SQLServerParser.parseObjectName("Customers")); - ArrayList dmlEventItems = new ArrayList(); - TDmlEventItem dmlEventItem2 = new TDmlEventItem(); - dmlEventItem2.setDmlType(ESqlStatementType.sstupdate); - dmlEventItems.add(dmlEventItem2); - dmlEventClause.setEventItems(dmlEventItems); - - dmlTriggerClause.setEventClause(dmlEventClause); - createTrigger.setTriggeringClause(dmlTriggerClause); - - - TMssqlIfElse ifStmt = new TMssqlIfElse( EDbVendor.dbvmssql ); - ifStmt.setCondition(SQLServerParser.parseExpression("( (SUBSTRING(COLUMNS_UPDATED(),1,1)=power(2,(3 - 1))\r\n" - + " + power(2,(5 - 1)))\r\n" - + " AND (SUBSTRING(COLUMNS_UPDATED(),2,1)=power(2,(1 - 1)))\r\n )")); - - TMssqlPrint print = new TMssqlPrint( EDbVendor.dbvmssql ); - TExpressionList expressionList = new TExpressionList( ); - expressionList.addExpression( SQLServerParser.parseExpression("'Columns 3, 5 and 9 updated'") ); - print.setMessages( expressionList ); - ifStmt.setStmt( print ); - - createTrigger.getBodyStatements( ).add( ifStmt ); - - String createTriggerQuery = "CREATE TRIGGER tr1 ON Customers\r\n" - + "FOR UPDATE\r\nAS\r\n" - + " IF ( (SUBSTRING(COLUMNS_UPDATED(),1,1)=power(2,(3 - 1))\r\n" - + " + power(2,(5 - 1)))\r\n" - + " AND (SUBSTRING(COLUMNS_UPDATED(),2,1)=power(2,(1 - 1)))\r\n" - + " )\r\n" - + " PRINT 'Columns 3, 5 and 9 updated'"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - , createTrigger.toScript() - , createTriggerQuery - )); - } - - public void testCreateView( ) - { - TCreateViewSqlStatement createView = new TCreateViewSqlStatement( EDbVendor.dbvoracle ); - - createView.setViewName(SQLServerParser.parseObjectName("vNessusTargetHostExtract")); - - String subQuery = "SELECT LoadKey, vcHost, CASE WHEN iPluginid = 12053 THEN SUBSTRING(vcResult,CHARINDEX('resolves as',vcResult) + 12,(DATALENGTH(vcResult) - 1)\n" - + " - (CHARINDEX('resolves as',vcResult) + 12)) ELSE 'No registered hostname' END AS vcHostName, vcport, LoadedOn, iRecordTypeID,\n" - + " iAgentProcessID, iTableID\n" - + "FROM dbo.vNessusResultExtract"; - createView.setSubquery( OracleParser.parseSubquery(subQuery) ); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,createView.toScript() - ,"CREATE VIEW vNessusTargetHostExtract\nAS \n" - + subQuery - )); - - } - - public void testQualifiedNameWithServer(){ - String query = "select * FROM Server2.CompanyData.dbo.Customers_66"; - SQLServerParser.sqltext = query; - SQLServerParser.parse(); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , SQLServerParser.sqlstatements.get(0).toScript() - , SQLServerParser.sqlstatements.get(0).toScript().toString() - )); - } - - public void testCreateView2( ) - { - TCreateViewSqlStatement createView = new TCreateViewSqlStatement( EDbVendor.dbvmssql ); - - createView.setViewName(SQLServerParser.parseObjectName("Customers")); - - String subQuery = " SELECT *\r\n" - + " FROM CompanyData.dbo.Customers_33\r\n" - + " UNION ALL\r\n" - + " SELECT *\r\n" - + " FROM Server2.CompanyData.dbo.Customers_66\r\n" - + " UNION ALL\r\n" - + " SELECT *\r\n" - + " FROM Server3.CompanyData.dbo.Customers_99"; - createView.setSubquery( SQLServerParser.parseSubquery(subQuery) ); - //System.out.print(createView.toScript()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - , createView.toScript() - , "CREATE VIEW Customers\nAS \n" - + subQuery - )); - - } - - public void testCreateIndex( ) - { - TCreateIndexSqlStatement createIndex = new TCreateIndexSqlStatement( EDbVendor.dbvmssql ); - - createIndex.setIndexName(SQLServerParser.parseObjectName("IX_TransactionHistory_ReferenceOrderID")); - createIndex.setNonClustered( true ); - createIndex.setTableName(SQLServerParser.parseObjectName("Production.TransactionHistory")); - TOrderByItemList items = new TOrderByItemList( ); - TOrderByItem item = new TOrderByItem( ); - item.setSortKey( new TExpression(SQLServerParser.parseObjectName("ReferenceOrderID") )); - items.addOrderByItem( item ); - createIndex.setColumnNameList(items); - - createIndex.setFilegroupOrPartitionSchemeName( SQLServerParser.parseObjectName("TransactionsPS1") ); - createIndex.setPartitionSchemeColumns(new TObjectNameList()); - createIndex.getPartitionSchemeColumns( ) - .addObjectName(SQLServerParser.parseObjectName("TransactionDate")); - - String createIndexQuery = "CREATE NONCLUSTERED INDEX IX_TransactionHistory_ReferenceOrderID\r\n" - + "ON Production.TransactionHistory (ReferenceOrderID)\r\nON TransactionsPS1 (TransactionDate)"; - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createIndex.toScript() - ,createIndexQuery - )); - } - - public void testCreateUniqueIndex( ) - { - TCreateIndexSqlStatement createIndex = new TCreateIndexSqlStatement( EDbVendor.dbvmssql ); - - createIndex.setIndexName(SQLServerParser.parseObjectName("AK_UnitMeasure_Name")); - createIndex.setIndexType( EIndexType.itUnique ); -// createIndex.getCreateIndexNode( ) -// .setTableName( sqlParser.parseObjectName( "Production.UnitMeasure" ) ); - createIndex.setTableName(SQLServerParser.parseObjectName("Production.UnitMeasure")); - TOrderByItemList items = new TOrderByItemList( ); - TOrderByItem item = new TOrderByItem( ); - item.setSortKey( new TExpression(SQLServerParser.parseObjectName("Name") )); - items.addOrderByItem( item ); -// createIndex.getCreateIndexNode( ).setColumnNameList( items ); - createIndex.setColumnNameList(items); - - String createIndexQuery = "CREATE UNIQUE INDEX AK_UnitMeasure_Name\n" - + " ON Production.UnitMeasure (Name)"; -// System.out.print(scriptGenerator.generateScript( createIndex, true )); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createIndex.toScript() - ,createIndexQuery - )); - - } - - public void testCreateViewWithAlias( ) - { - TCreateViewSqlStatement createView = new TCreateViewSqlStatement( EDbVendor.dbvoracle ); - - createView.setViewName(OracleParser.parseObjectName("test1")); - createView.setStReplace( new TSourceToken( "replace" ) ); - - TViewAliasItemList itemList = new TViewAliasItemList( ); - TViewAliasItem item = new TViewAliasItem( ); - item.setAlias( OracleParser.parseObjectName("account_name_alias") ); - itemList.addViewAliasItem(item); - TViewAliasItem item1 = new TViewAliasItem( ); - item1.setAlias(OracleParser.parseObjectName("account_number_alias")); - itemList.addViewAliasItem( item1 ); - - TViewAliasClause aliasClause = new TViewAliasClause( ); - aliasClause.setViewAliasItemList( itemList ); - - createView.setViewAliasClause( aliasClause );; - - String subQuery = "select account_name, account_number from \n" - + "AP10_BANK_ACCOUNTS t"; - createView.setSubquery( OracleParser.parseSubquery(subQuery) ); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,createView.toScript() - ,"CREATE OR REPLACE VIEW test1(account_name_alias, account_number_alias)\nAS \n" - + subQuery - )); - - } - -// public void testMssqlCreateFunction( ) -// { -// TMssqlCreateFunction createFunction = new TMssqlCreateFunction( EDbVendor.dbvmssql ); -// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvmssql ); -// createFunction.setFunctionName( sqlParser.parseObjectName( "dbo.ufnGetStock" ) ); -// TParameterDeclarationList params = new TParameterDeclarationList( ); -// TParameterDeclaration param = new TParameterDeclaration( ); -// param.setParameterName( sqlParser.parseObjectName( "@ProductID" ) ); -// TTypeName dataType = new TTypeName( ); -// dataType.setDataType( EDataType.int_t ); -// param.setDataType( dataType ); -// params.addParameterDeclarationItem( param ); -// createFunction.setParameterDeclarations( params ); -// -// TTypeName returnDataType = new TTypeName( ); -// returnDataType.setDataType( EDataType.int_t ); -// createFunction.setReturnDataType( returnDataType ); -// -// TMssqlBlock block = new TMssqlBlock( EDbVendor.dbvmssql ); -// -// TMssqlDeclare declare = new TMssqlDeclare( EDbVendor.dbvmssql ); -// TDeclareVariableList vars = new TDeclareVariableList( ); -// TDeclareVariable var = new TDeclareVariable( ); -// var.setVariableName( sqlParser.parseObjectName( "@ret" ) ); -// TTypeName datatype = new TTypeName( ); -// datatype.setDataType( EDataType.int_t ); -// var.setDatatype( datatype ); -// vars.addDeclareVariable( var ); -// declare.setVariables( vars ); -// -// block.getBodyStatements( ).add( declare ); -// -// String selectQuery = "SELECT @ret = SUM(p.Quantity)\r\n" -// + " FROM Production.ProductInventory p\r\n" -// + " WHERE p.ProductID = @ProductID\r\n" -// + " AND p.LocationID = '6'"; -// block.getBodyStatements( ) -// .add( scriptGenerator.createSubquery( selectQuery ) ); -// -// TMssqlIfElse ifElse = new TMssqlIfElse( EDbVendor.dbvmssql ); -// ifElse.setCondition( sqlParser.parseExpression( "@ret IS NULL" ) ); -// TMssqlSet setStmt = new TMssqlSet( EDbVendor.dbvmssql ); -// setStmt.setVarName( sqlParser.parseObjectName( "@ret" ) ); -// setStmt.setVarExpr( sqlParser.parseExpression( "0" ) ); -// ifElse.setStmt( setStmt ); -// -// block.getBodyStatements( ).add( ifElse ); -// -// TMssqlReturn returnStmt = new TMssqlReturn( EDbVendor.dbvmssql ); -// returnStmt.setReturnExpr( sqlParser.parseExpression( "@ret" ) ); -// block.getBodyStatements( ).add( returnStmt ); -// -// createFunction.getBodyStatements( ).add( block ); -// -// String createFunctionQuery = "CREATE FUNCTION dbo.ufnGetStock(@ProductID int)\r\n" -// + "RETURNS int\r\n" -// + "AS\r\n" -// + "BEGIN\r\n" -// + " DECLARE @ret int ; \r\n" -// + " SELECT @ret = SUM(p.Quantity)\r\n" -// + " FROM Production.ProductInventory p\r\n" -// + " WHERE p.ProductID = @ProductID\r\n" -// + " AND p.LocationID = '6'; \r\n" -// + " IF @ret IS NULL \r\n" -// + " SET @ret=0; \r\n" -// + " RETURN @ret; \r\n" -// + "END"; -// assertTrue( scriptGenerator.generateScript( createFunction, true ) -// .trim( ) -// .equalsIgnoreCase( formatSql( createFunctionQuery, -// EDbVendor.dbvmssql ).trim( ) ) ); -// } - - public void testOracleCreateProcedure( ) - { - TPlsqlCreateProcedure createProcedure = new TPlsqlCreateProcedure( EDbVendor.dbvoracle ); - - createProcedure.setProcedureName(OracleParser.parseObjectName("evaluate")); - - TParameterDeclarationList params = new TParameterDeclarationList( ); - TParameterDeclaration param = new TParameterDeclaration( ); - param.setParameterName( OracleParser.parseObjectName("my_empno") ); - TTypeName dataType = new TTypeName( ); - dataType.setDataType( EDataType.number_t ); - param.setDataType( dataType ); - params.addParameterDeclarationItem(param); - createProcedure.setParameterDeclarations(params); - - TInvokerRightsClause invoke = new TInvokerRightsClause( ); - invoke.setDefiner(OracleParser.parseObjectName("current_user")); - createProcedure.setInvokerRightsClause( invoke ); - - TVarDeclStmt variable = new TVarDeclStmt( EDbVendor.dbvoracle ); - variable.setElementName( OracleParser.parseObjectName("my_ename") ); - TTypeName datatype = new TTypeName( ); - datatype.setDataType( EDataType.varchar2_t ); - TConstant c = new TConstant( ELiteralType.etNumber,new TSourceToken("15") ); - //c.setStringValue( "15" ); - datatype.setLength( c ); - variable.setDataType( datatype ); - createProcedure.getDeclareStatements( ).add( variable ); - - String selectQuery = "SELECT ename INTO my_ename FROM emp WHERE empno = my_empno;"; - createProcedure.getBodyStatements( ) - .add( OracleParser.parseSubquery(selectQuery) ); - - String createProcedureQuery = "CREATE PROCEDURE evaluate(my_empno NUMBER) \r\n" - + "AUTHID CURRENT_USER AS \r\n" - + "my_ename VARCHAR2 (15); \r\n" - + "BEGIN \r\n" - + "SELECT ename INTO my_ename FROM emp WHERE empno = my_empno;\r\n" - + "END ;"; - - //System.out.println(createProcedure.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,createProcedure.toScript() - ,createProcedureQuery - )); - - } - - public void testDropIndex( ) - { - TDropIndexSqlStatement dropIndex = new TDropIndexSqlStatement( EDbVendor.dbvmssql ); - - - TDropIndexItemList itemList = new TDropIndexItemList( ); - TDropIndexItem item = new TDropIndexItem( ); - item.setIndexName(SQLServerParser.parseObjectName("IX_SalesPerson_SalesQuota_SalesYTD")); - item.setObjectName( SQLServerParser.parseObjectName("Sales.SalesPerson") ); - itemList.addDropIndexItem( item ); - dropIndex.setDropIndexItemList( itemList ); - - String dropIndexQuery = "DROP INDEX IX_SalesPerson_SalesQuota_SalesYTD ON Sales.SalesPerson"; - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,dropIndex.toScript() - ,dropIndexQuery - )); - - - } - - public void testUseDatabase( ) - { - TUseDatabase useDatabase = new TUseDatabase( EDbVendor.dbvmssql ); - - useDatabase.setDatabaseName(SQLServerParser.parseObjectName("AdventureWorks")); - - String useDatabaseQuery = "USE AdventureWorks"; - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,useDatabase.toScript() - ,useDatabaseQuery - )); - - } - - - public void testOracleIfStmt( ) - { - TIfStmt ifStmt = new TIfStmt( EDbVendor.dbvoracle ); - TExpression left = new TExpression(OracleParser.parseObjectName("ILevel")); - TExpression lowExpr = new TExpression(OracleParser.parseConstant("'Low Income'")); - TExpression avgExpr = new TExpression(OracleParser.parseConstant("'Avg Income'")); - TExpression highExpr = new TExpression(OracleParser.parseConstant("'High Income'")); - - ifStmt.setCondition(OracleParser.parseExpression("monthly_value <= 4000")); - ifStmt.getThenStatements( ) - .add( new TAssignStmt(left,lowExpr) ); - - TElsifStmt elsIf = new TElsifStmt( ); - elsIf.setCondition( OracleParser.parseExpression("monthly_value > 4000 and monthly_value <= 7000") ); - elsIf.getThenStatements( ) - .add( new TAssignStmt(left,avgExpr) ); - ifStmt.getElseifStatements( ).add( elsIf ); - ifStmt.getElseStatements( ) - .add( new TAssignStmt(left,highExpr) ); - - String ifQuery = "IF monthly_value <= 4000 THEN \r\n" - + " ILevel = 'Low Income'\r\n" - + " ELSIF monthly_value > 4000 and monthly_value <= 7000 THEN \r\n" - + " ILevel = 'Avg Income'\r\n" - + " ELSE ILevel = 'High Income'\r\n" - + " END IF"; - - //System.out.println(ifStmt.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , ifStmt.toScript() - , ifQuery - )); - - } - -// public void testMssqlIfStmt( ) -// { -// TMssqlIfElse ifStmt = new TMssqlIfElse( EDbVendor.dbvmssql ); -// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvmssql ); -// ifStmt.setCondition( sqlParser.parseExpression( "EXISTS (SELECT name FROM sys.indexes\r\n" -// + " WHERE name = N'IX_Address_PostalCode')" ) ); -// -// TDropIndexSqlStatement ifDrop = new TDropIndexSqlStatement( EDbVendor.dbvmssql ); -// ifDrop.setIndexName( sqlParser.parseObjectName( "IX_Address_PostalCode" ) ); -// TDropIndexItemList items = new TDropIndexItemList( ); -// TDropIndexItem item = new TDropIndexItem( ); -// item.setObjectName( sqlParser.parseObjectName( "Person.Address" ) ); -// items.addDropIndexItem( item ); -// ifDrop.setDropIndexItemList( items ); -// -// ifStmt.setStmt( ifDrop ); -// -// TDropIndexSqlStatement elseDrop = new TDropIndexSqlStatement( EDbVendor.dbvmssql ); -// elseDrop.setIndexName( sqlParser.parseObjectName( "IX_Address_PostalCode" ) ); -// TDropIndexItemList items1 = new TDropIndexItemList( ); -// TDropIndexItem item1 = new TDropIndexItem( ); -// item1.setObjectName( sqlParser.parseObjectName( "Person.NAME" ) ); -// items1.addDropIndexItem( item1 ); -// elseDrop.setDropIndexItemList( items1 ); -// -// ifStmt.setElseStmt( elseDrop ); -// -// String ifQuery = "IF EXISTS ( SELECT name FROM sys.indexes\r\n" -// + " WHERE name = N'IX_Address_PostalCode')\r\n" -// + " DROP INDEX IX_Address_PostalCode ON Person.Address\r\n" -// + "ELSE DROP INDEX IX_Address_PostalCode ON Person.NAME"; -// assertTrue( scriptGenerator.generateScript( ifStmt, true ) -// .trim( ) -// .toLowerCase( ) -// .equals( formatSql( ifQuery.trim( ), EDbVendor.dbvmssql ).toLowerCase( ) ) ); -// } - - String formatSql( String inputQuery, EDbVendor dbVendor ) - { - String Result = inputQuery; - TGSqlParser sqlparser = new TGSqlParser( dbVendor ); - sqlparser.sqltext = inputQuery; - int ret = sqlparser.parse( ); - if ( ret == 0 ) - { - GFmtOpt option = GFmtOptFactory.newInstance( ); - option.caseFuncname = TCaseOption.CoNoChange; - Result = FormatterFactory.pp( sqlparser, option ); - } - return Result; - } - - public void testInsertSubquery( ) - { - TInsertSqlStatement insert = new TInsertSqlStatement( EDbVendor.dbvoracle ); - - TTable table = new TTable( ); - table.setTableName(OracleParser.parseObjectName("table1")); - insert.setTargetTable( table ); - - TObjectNameList columnNameList = new TObjectNameList( ); - insert.setColumnList( columnNameList ); - columnNameList.addObjectName(OracleParser.parseObjectName("column1")); - columnNameList.addObjectName(OracleParser.parseObjectName("column2")); - - insert.setSubQuery( OracleParser.parseSubquery("select c1,c1 from table2") ); - - // System.out.println(scriptGenerator.generateScript(insert, true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,insert.toScript() - ,"INSERT INTO table1\n" - + " (column1,\n" - + " column2)\n" - + "SELECT c1,\n" - + " c1\n" - + "FROM table2" - )); - - - } - - public void testInsert( ) - { - TInsertSqlStatement insert = new TInsertSqlStatement( EDbVendor.dbvoracle ); - - TTable table = new TTable( ); - table.setTableName(OracleParser.parseObjectName("table1")); - insert.setTargetTable( table ); - - TObjectNameList columnNameList = new TObjectNameList( ); - insert.setColumnList( columnNameList ); - columnNameList.addObjectName(OracleParser.parseObjectName("column1")); - columnNameList.addObjectName(OracleParser.parseObjectName("column2")); - - TMultiTargetList values = new TMultiTargetList( ); - insert.setValues(values); - TMultiTarget multiTarget = new TMultiTarget( ); - values.addMultiTarget( multiTarget ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - multiTarget.setColumnList( resultColumnList ); - - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - resultColumn1.setExpr(OracleParser.parseExpression("1")); - - TResultColumn resultColumn2 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn2 ); - resultColumn2.setExpr(OracleParser.parseExpression("2")); - - // System.out.println(scriptGenerator.generateScript(insert, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,insert.toScript() - ,"INSERT INTO table1\n" - + " (column1,\n" - + " column2)\n" - + "VALUES (1,\n" - + " 2)" - )); - - } - - public void testUpdateMultiTable( ) - { - TUpdateSqlStatement update = new TUpdateSqlStatement( EDbVendor.dbvmssql ); - - TTable table = new TTable( ); - table.setTableName(SQLServerParser.parseObjectName("dbo.Table2")); - update.setTargetTable( table ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - update.setResultColumnList( resultColumnList ); - - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - TExpression left = SQLServerParser.parseExpression("dbo.Table2.ColB"); - TExpression right = SQLServerParser.parseExpression("dbo.Table2.ColB + dbo.Table1.ColB"); - resultColumn1.setExpr(new TExpression (EExpressionType.assignment_t, - left, - right)); - - TJoinList joinList = new TJoinList( ); - update.joins = joinList; - TJoin join = new TJoin( ); - joinList.addJoin( join ); - TTable table1 = new TTable( ); - join.setTable( table1 ); - table1.setTableName(SQLServerParser.parseObjectName("dbo.Table2")); - - TJoinItem joinItem = new TJoinItem( ); - join.getJoinItems( ).addJoinItem(joinItem); - joinItem.setJoinType(EJoinType.inner); - TTable joinTable = new TTable( ); - joinItem.setTable( joinTable ); - - joinTable.setTableName(SQLServerParser.parseObjectName("dbo.Table1")); - joinItem.setOnCondition( SQLServerParser.parseExpression("(dbo.Table2.ColA = dbo.Table1.ColA)") ); - - // System.out.println(scriptGenerator.generateScript(update, true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,update.toScript() - ,"UPDATE dbo.table2\n" - + "SET dbo.table2.colb=dbo.table2.colb + dbo.table1.colb FROM dbo.table2 INNER JOIN dbo.table1 ON (dbo.table2.cola = dbo.table1.cola)" - )); - - } - - public void testUpdate( ) - { - TUpdateSqlStatement update = new TUpdateSqlStatement( EDbVendor.dbvoracle ); - - TTable table = new TTable( ); - table.setTableName(OracleParser.parseObjectName("table1")); - update.setTargetTable( table ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - update.setResultColumnList( resultColumnList ); - - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - TExpression left = OracleParser.parseExpression("column1"); - TExpression right = OracleParser.parseExpression("1"); - - resultColumn1.setExpr( new TExpression (EExpressionType.assignment_t, - left, - right)); - - TResultColumn resultColumn2 = new TResultColumn( ); - resultColumnList.addResultColumn(resultColumn2); - TExpression left2 = OracleParser.parseExpression("column2"); - TExpression right2 = OracleParser.parseExpression("1"); - - resultColumn2.setExpr( new TExpression( EExpressionType.assignment_t, - left2, - right2 ) ); - - TWhereClause whereClause = new TWhereClause( ); - update.setWhereClause( whereClause ); - whereClause.setCondition( OracleParser.parseExpression("column3 > 250.00") ); - - // System.out.println(scriptGenerator.generateScript(update, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,update.toScript() - ,"UPDATE table1\n" - + "SET column1=1,\n" - + " column2=1\n" - + "WHERE column3 > 250.00" - )); - - } - - public void testDeleteMultiTable( ) - { - TDeleteSqlStatement delete = new TDeleteSqlStatement( EDbVendor.dbvmssql ); - delete.setFromKeyword( true ); - - TTable table = new TTable( ); - table.setTableName(SQLServerParser.parseObjectName("Sales.SalesPersonQuotaHistory ")); - delete.setTargetTable( table ); - - TJoinList joinList = new TJoinList( ); - delete.joins = joinList; - TJoin join = new TJoin( ); - joinList.addJoin( join ); - TTable table1 = new TTable( ); - join.setTable( table1 ); - table1.setTableName(SQLServerParser.parseObjectName("Sales.SalesPersonQuotaHistory")); - - TAliasClause aliasClause = new TAliasClause( ); - table1.setAliasClause( aliasClause ); - aliasClause.setHasAs( true ); - aliasClause.setAliasName(SQLServerParser.parseObjectName("spqh")); - - TJoinItem joinItem = new TJoinItem( ); - join.getJoinItems().addJoinItem(joinItem); - joinItem.setJoinType( EJoinType.inner ); - TTable joinTable = new TTable( ); - joinItem.setTable(joinTable); - TAliasClause aliasClause2 = new TAliasClause( ); - joinTable.setAliasClause( aliasClause2 ); - aliasClause2.setHasAs(true); - aliasClause2.setAliasName( SQLServerParser.parseObjectName("sp") ); - - joinTable.setTableName(SQLServerParser.parseObjectName("Sales.SalesPerson")); - joinItem.setOnCondition( SQLServerParser.parseExpression("spqh.BusinessEntityID = sp.BusinessEntityID") ); - - TWhereClause whereClause = new TWhereClause( ); - delete.setWhereClause( whereClause ); - whereClause.setCondition( SQLServerParser.parseExpression("sp.SalesYTD > 2500000.00") ); - - // System.out.println(scriptGenerator.generateScript(delete, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql - ,delete.toScript() - ,"DELETE FROM sales.salespersonquotahistory FROM sales.salespersonquotahistory AS spqh INNER JOIN sales.salesperson AS sp ON spqh.businessentityid = sp.businessentityid\n" - + "WHERE sp.salesytd > 2500000.00" - )); - - } - - public void testDelete( ) - { - TDeleteSqlStatement delete = new TDeleteSqlStatement( EDbVendor.dbvoracle ); - delete.setFromKeyword( true ); - - TTable table = new TTable( ); - table.setTableName(OracleParser.parseObjectName("table1")); - delete.setTargetTable( table ); - - TWhereClause whereClause = new TWhereClause( ); - delete.setWhereClause( whereClause ); - whereClause.setCondition(OracleParser.parseExpression("f1>0")); - - // System.out.println(scriptGenerator.generateScript(delete, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,delete.toScript() - ,"DELETE FROM table1\n" - + "WHERE f1 > 0" - )); - - } - - public void testSelect( ) - { - TSelectSqlStatement select = new TSelectSqlStatement( EDbVendor.dbvoracle ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - select.setResultColumnList( resultColumnList ); - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - resultColumn1.setExpr( OracleParser.parseExpression("column1") ); - - TResultColumn resultColumn2 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn2 ); - resultColumn2.setExpr( OracleParser.parseExpression("column2") ); - TAliasClause aliasClause = new TAliasClause( ); - resultColumn2.setAliasClause( aliasClause ); - aliasClause.setHasAs( true ); - aliasClause.setAliasName( OracleParser.parseObjectName("c_alias") ); - // System.out.println( scriptGenerator.generateScript(select) ); - - TJoinList joinList = new TJoinList( ); - select.joins = joinList; - TJoin join = new TJoin( ); - joinList.addJoin( join ); - TTable table = new TTable( ); - join.setTable( table ); - // table.setTableType(ETableSource.objectname); - table.setTableName( OracleParser.parseObjectName("table1") ); - - TWhereClause whereClause = new TWhereClause( ); - select.setWhereClause( whereClause ); - whereClause.setCondition( OracleParser.parseExpression("f1>0") ); - - TGroupBy groupBy = new TGroupBy( ); - select.setGroupByClause( groupBy ); - TGroupByItem groupByItem = new TGroupByItem( ); - groupBy.getItems( ).addGroupByItem( groupByItem ); - groupByItem.setExpr( OracleParser.parseExpression("column1") ); - groupBy.setHavingClause( OracleParser.parseExpression("sum(column2) > 10") ); - - TOrderBy orderBy = new TOrderBy( ); - select.setOrderbyClause( orderBy ); - TOrderByItem orderByItem = new TOrderByItem( ); - orderBy.getItems( ).addElement( orderByItem ); - orderByItem.setSortKey( OracleParser.parseExpression("column1") ); - orderByItem.setSortOrder( ESortType.desc ); - - TOrderByItem orderByItem2 = new TOrderByItem( ); - orderBy.getItems( ).addElement( orderByItem2 ); - orderByItem2.setSortKey( OracleParser.parseExpression("column3") ); - orderByItem2.setSortOrder( ESortType.asc ); - - // System.out.println(scriptGenerator.generateScript(select, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT column1,\n" - + " column2 AS c_alias\n" - + "FROM table1\n" - + "WHERE f1 > 0\n" - + "GROUP BY column1\n" - + "HAVING sum(column2) > 10\n" - + "ORDER BY column1 DESC,\n" - + " column3 ASC" - )); - - } - - public void testSelectOracleJoin( ) - { - TSelectSqlStatement select = new TSelectSqlStatement( EDbVendor.dbvoracle ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - select.setResultColumnList( resultColumnList ); - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - resultColumn1.setExpr(OracleParser.parseExpression("column1")); - - TResultColumn resultColumn2 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn2 ); - resultColumn2.setExpr(OracleParser.parseExpression("column2")); - TAliasClause aliasClause = new TAliasClause( ); - resultColumn2.setAliasClause( aliasClause ); - aliasClause.setHasAs( true ); - aliasClause.setAliasName(OracleParser.parseObjectName("c_alias")); - - TJoinList joinList = new TJoinList( ); - select.joins = joinList; - TJoin join = new TJoin( ); - joinList.addJoin( join ); - TTable table = new TTable( ); - join.setTable( table ); - table.setTableType(ETableSource.objectname); - table.setTableName( OracleParser.parseObjectName("table1") ); - - TJoin join2 = new TJoin( ); - joinList.addJoin(join2); - TTable table2 = new TTable( ); - join2.setTable( table2 ); - // table2.setTableType(ETableSource.objectname); - table2.setTableName(OracleParser.parseObjectName("table2")); - - TWhereClause whereClause = new TWhereClause( ); - select.setWhereClause( whereClause ); - whereClause.setCondition( OracleParser.parseExpression("table1.f1 = table2.f1 and table1.f2 = 0") ); - - // System.out.println(scriptGenerator.generateScript(select, true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT column1,\n" - + " column2 AS c_alias\n" - + "FROM table1,\n" - + " table2\n" - + "WHERE table1.f1 = table2.f1\n" - + " AND table1.f2 = 0" - )); - - - } - - public void testSelectAnsiJoin( ) - { - TSelectSqlStatement select = new TSelectSqlStatement( EDbVendor.dbvoracle ); - - TResultColumnList resultColumnList = new TResultColumnList( ); - select.setResultColumnList( resultColumnList ); - TResultColumn resultColumn1 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn1 ); - resultColumn1.setExpr( OracleParser.parseExpression("column1") ); - - TResultColumn resultColumn2 = new TResultColumn( ); - resultColumnList.addResultColumn( resultColumn2 ); - resultColumn2.setExpr( OracleParser.parseExpression("column2") ); - TAliasClause aliasClause = new TAliasClause( ); - resultColumn2.setAliasClause( aliasClause ); - aliasClause.setHasAs( true ); - aliasClause.setAliasName( OracleParser.parseObjectName("c_alias") ); - - TJoinList joinList = new TJoinList( ); - select.joins = joinList; - TJoin join = new TJoin( ); - joinList.addJoin( join ); - TTable table = new TTable( ); - join.setTable( table ); - // table.setTableType(ETableSource.objectname); - table.setTableName( OracleParser.parseObjectName("table1") ); - - TJoinItem joinItem = new TJoinItem( ); - join.getJoinItems( ).addJoinItem( joinItem ); - joinItem.setJoinType( EJoinType.inner ); - TTable joinTable = new TTable( ); - joinItem.setTable( joinTable ); - joinTable.setTableName( OracleParser.parseObjectName("table2") ); - joinItem.setOnCondition( OracleParser.parseExpression("table1.f1 = table2.f1") ); - - TJoinItem joinItem3 = new TJoinItem( ); - join.getJoinItems( ).addJoinItem( joinItem3 ); - joinItem3.setJoinType( EJoinType.leftouter ); - TTable joinTable3 = new TTable( ); - joinItem3.setTable( joinTable3 ); - joinTable3.setTableName( OracleParser.parseObjectName("table3") ); - joinItem3.setOnCondition( OracleParser.parseExpression("table3.f1 = table2.f1") ); - - TJoinItem joinItem4 = new TJoinItem( ); - join.getJoinItems( ).addJoinItem( joinItem4 ); - joinItem4.setJoinType( EJoinType.rightouter ); - TTable joinTable4 = new TTable( ); - joinItem4.setTable( joinTable4 ); - joinTable4.setTableName( OracleParser.parseObjectName("table4") ); - joinItem4.setOnCondition( OracleParser.parseExpression("table4.f1 = table3.f1") ); - - TWhereClause whereClause = new TWhereClause( ); - select.setWhereClause( whereClause ); - whereClause.setCondition( OracleParser.parseExpression("table1.f2 = 0") ); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT column1,\n" - + " column2 AS c_alias\n" - + "FROM table1\n" - + " INNER JOIN table2\n" - + " ON table1.f1 = table2.f1\n" - + " LEFT OUTER JOIN table3\n" - + " ON table3.f1 = table2.f1\n" - + " RIGHT OUTER JOIN table4\n" - + " ON table4.f1 = table3.f1\n" - + "WHERE table1.f2 = 0" - )); - - // System.out.println(scriptGenerator.generateScript(select, true)); - - } - - public void testCreateOracleAssignStmt( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - TAssignStmt assign = new TAssignStmt( ); - - assign.setLeft(sqlParser.parseExpression("ILevel")); - assign.setExpression( sqlParser.parseExpression("'Low Income'") ); - - //System.out.println(assign.toScript()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "ILevel = 'Low Income'", assign.toScript())); - - } - - public void testCreateBinaryExpression( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - - TExpression left = sqlParser.parseExpression("1"); - TExpression right = sqlParser.parseExpression("2"); - TExpression plus = new TExpression(); - plus.setExpressionType(EExpressionType.arithmetic_plus_t); - plus.setLeftOperand(left); - plus.setRightOperand(right); - //System.out.println(plus.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "1 + 2 ", plus.toScript())); - } - - public void testCreateComparisonPredicate( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - - TExpression left = sqlParser.parseExpression("salary"); - TExpression right = sqlParser.parseExpression("20"); - TExpression plus = new TExpression(); - plus.setExpressionType(EExpressionType.simple_comparison_t); - plus.setComparisonType(EComparisonType.greaterThanOrEqualTo); - plus.setLeftOperand(left); - plus.setRightOperand(right); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary >= 20", plus.toScript())); - } - - public void testCreateAndPredicate( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - - TExpression left = sqlParser.parseExpression("salary"); - TExpression right = sqlParser.parseExpression("20"); - - TExpression left2 = sqlParser.parseExpression("location"); - TExpression right2 = sqlParser.parseExpression("'NY'"); - - TExpression c1 = new TExpression(); - c1.setExpressionType(EExpressionType.simple_comparison_t); - c1.setComparisonType(EComparisonType.greaterThanOrEqualTo); - c1.setLeftOperand(left); - c1.setRightOperand(right); - - TExpression c2 = new TExpression(); - c2.setExpressionType(EExpressionType.simple_comparison_t); - c2.setComparisonType(EComparisonType.equals); - c2.setLeftOperand(left2); - c2.setRightOperand(right2); - - TExpression c3 = new TExpression(); - c3.setExpressionType(EExpressionType.logical_and_t); - c3.setLeftOperand(c1); - c3.setRightOperand(c2); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary >= 20 and location = 'NY'", c3.toScript())); - - } - - public void testCreateSubqueryPredicate( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - - TExpression left = sqlParser.parseExpression("salary"); - TExpression right = sqlParser.parseExpression("(select sal from emp where empno=1)"); - TExpression subqueryPredicate = new TExpression(); - subqueryPredicate.setExpressionType(EExpressionType.simple_comparison_t); - subqueryPredicate.setComparisonType(EComparisonType.notLessThan); - subqueryPredicate.setLeftOperand(left); - subqueryPredicate.setRightOperand(right); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary !< (select sal from emp where empno=1)", subqueryPredicate.toScript())); - - subqueryPredicate.setExpressionType(EExpressionType.group_comparison_t); - subqueryPredicate.setComparisonType(EComparisonType.greaterThanOrEqualTo); - subqueryPredicate.setQuantifierType(EQuantifierType.all); - //System.out.println(subqueryPredicate.toScript()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, "salary >= all (select sal from emp where empno=1)", subqueryPredicate.toScript())); - - - } - - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testDatabricks.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testDatabricks.java deleted file mode 100644 index a5977069..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testDatabricks.java +++ /dev/null @@ -1,299 +0,0 @@ -package gudusoft.gsqlparser.scriptWriterTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testDatabricks extends TestCase -{ - public void test1( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvdatabricks); - sqlparser.sqltext = "select datepart('days',interval 5 days 3 hours 7 minutes);"; - sqlparser.parse( ); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvdatabricks, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void test2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvdatabricks); - sqlparser.sqltext = "select datepart('seconds',interval 5 hours 30 seconds 1 milliseconds 1 microseconds);\n" + - "select datepart('month',interval '2021-11' year to month);\n" + - "select datepart('minute',interval '123 23:55:59.002001' day to second);\n" + - "select interval '1-1' year to month div interval '-1' month;\n" + - "select extract(days from interval 5 days 3 hours 7 minutes);\n" + - "select extract(seconds from interval 5 hours 30 seconds 1 milliseconds 1 microseconds);\n" + - "select extract(month from interval '2021-11' year to month);\n" + - "select extract(minute from interval '123 23:55:59.002001' day to second);\n" + - "select sequence(to_date('2018-01-01'),to_date('2018-03-01'),interval 1 month);\n" + - "select sequence(to_date('2018-01-01'),to_date('2018-03-01'),interval '0-1' year to month);\n" + - "select sign(interval -'100' year);\n" + - "select signum(interval -'100' year);\n" + - "select try_add(date'2021-01-01',interval 1 year);\n" + - "select try_add(timestamp'2021-01-01 00:00:00',interval 1 day);\n" + - "select try_add(interval 1 year,interval 2 year);\n" + - "select try_divide(interval 2 month,2);\n" + - "select try_divide(interval 2 month,0);\n" + - "select try_multiply(interval 2 year,3);\n" + - "select try_subtract(date'2021-01-01',interval 1 year);\n" + - "select try_subtract(timestamp'2021-01-02 00:00:00',interval 1 day);\n" + - "select try_subtract(interval 2 year,interval 1 year);\n" + - "select width_bucket(interval '0' year,interval '0' year,interval '10' year,10);\n" + - "select width_bucket(interval '1' year,interval '0' year,interval '10' year,10);\n" + - "select width_bucket(interval '0' day,interval '0' day,interval '10' day,10);\n" + - "select width_bucket(interval '1' day,interval '0' day,interval '10' day,10);\n"; - sqlparser.parse( ); - for(int i=0;icolumnC in fx(columnA,columnB,fx2(1+columnC)) cause the whole function - * removed from the parent expression. - */ - public void testRemoveColumnInFunctionCall() { - TExpression expression = parser.parseExpression("fx(columnA,columnB,fx2(1+columnC))"); - assertTrue(expression.getExpressionType() == EExpressionType.function_t); - - TExpressionList resultList = expression.searchColumn("columnC"); - assertTrue(resultList.size() == 1); - TExpression columnCExpr = resultList.getExpression(0); - columnCExpr.remove(); - - assertTrue(expression.getExpressionType() == EExpressionType.removed_t); - } - - /** - * Remove columnB in - * {@code - * columnA+(columnB*2)+columnC - * } - * will cause the whole expression removed from the parent expression or parse tree node. - */ - public void testSearchColumn() { - TExpression expression = parser.parseExpression("columnA+(columnB*2)+columnC"); - TExpressionList resultList = expression.searchColumn("columnB"); - assertTrue(resultList.size() == 1); - TExpression columnBExpr = resultList.getExpression(0); - assertTrue(columnBExpr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(columnBExpr.toString().equalsIgnoreCase("columnB")); - - assertTrue(expression.toScript().equalsIgnoreCase("columnA + (columnB * 2) + columnC")); - columnBExpr.remove(); - System.out.println(expression.toScript()); - //assertTrue(expression.toScript().equalsIgnoreCase("")); - } - - /** - * Remove columnA in - *
-     * {@code
-     * columnA+(columnB*2)>columnC
-     * }
-     * 
- * will cause the whole expression removed from the parent expression or parse tree node. - */ - public void testColumnInComparision() { - TExpression expression = parser.parseExpression("columnA+(columnB*2)>columnC"); - TExpressionList resultList = expression.searchColumn("columnA"); - assertTrue(resultList.size() == 1); - TExpression columnAExpr = resultList.getExpression(0); - assertTrue(columnAExpr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(columnAExpr.toString().equalsIgnoreCase("columnA")); - - assertTrue(expression.toScript().equalsIgnoreCase("columnA + (columnB * 2) > columnC")); - columnAExpr.remove(); - assertTrue(expression.toScript().equalsIgnoreCase("")); - } - - /** - * Remove columnA in - *
{@code columnA+(columnB*2)>columnC and columnD=columnE-9}
- * will cause the expression - *
-     * {@code columnA+(columnB*2)>columnC}
-     * 
- * removed from the parent expression and keep this expression unchange: - *
-     * {@code columnD = columnE - 9}
-     * 
- */ - public void testColumnInAndOr() { - TExpression expression = parser.parseExpression("columnA+(columnB*2)>columnC and columnD=columnE-9"); - TExpressionList resultList = expression.searchColumn("columnA"); - assertTrue(resultList.size() == 1); - TExpression columnAExpr = resultList.getExpression(0); - assertTrue(columnAExpr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(columnAExpr.toString().equalsIgnoreCase("columnA")); - - assertTrue(expression.toScript().equalsIgnoreCase("columnA + (columnB * 2) > columnC and columnD = columnE - 9")); - columnAExpr.remove(); - assertTrue(expression.toScript().equalsIgnoreCase("columnD = columnE - 9")); - } - - /** - * Remove column: application_location_id from the where condition, - *
-     * {@code
-     *     (pal.application_location_id = pualr.application_location_id +
-     *                        AND pu.jbp_uid = pualr.jbp_uid" +
-     *                        AND pu.username = 'USERID')
-     * }
-     * 
- * Keep the following condition unchanged: - *
-     *     {@code
-     *     (pu.jbp_uid = pualr.jbp_uid  and  pu.username = 'USERID')
-     *     }
-     * 
- */ - public void testColumnInAndOr1(){ - parser.sqltext = "select *\n" + - "from table1 pal, table2 pualr, table3 pu\n" + - "WHERE (pal.application_location_id = pualr.application_location_id \n" + - " AND pu.jbp_uid = pualr.jbp_uid \n" + - " AND pu.username = 'USERID')"; - int ret = parser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression = selectSqlStatement.getWhereClause().getCondition(); - - TExpressionList resultList = expression.searchColumn("application_location_id"); - assertTrue(resultList.size() == 2); - TExpression expression1 = resultList.getExpression(0); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expression1.toString().equalsIgnoreCase("pal.application_location_id")); - expression1.remove(); - assertTrue(expression.toScript().equalsIgnoreCase("(pu.jbp_uid = pualr.jbp_uid and pu.username = 'USERID')")); - } - - - /** - * Remove the right operand of a condition in where clause. - *
-     *     {@code
-     *     m.id = ?  and  m.id = altname.id(+)  and  m.id = ccu.id(+)
-     *     }
-     * 
- * After remove the right operand, the condition become like this: - *
-     *     {@code
-     *     m.id = ?  and  m.id = altname.id(+)
-     *     }
-     * 
- * then, remove the right operand again, the condition become like this: - *
-     *     {@code
-     *     m.id = ?
-     *     }
-     * 
- */ - public void testColumnInAndOr2(){ - parser.sqltext = "SELECT m.*, \n" + - " altname.last_name last_name_student, \n" + - " altname.first_name first_name_student, \n" + - " ccu.date_joined, \n" + - " ccu.last_login, \n" + - " ccu.photo_id, \n" + - " ccu.last_updated \n" + - "FROM summit.mstr m, \n" + - " summit.alt_name altname, \n" + - " smmtccon.ccn_user ccu \n" + - "WHERE m.id =?\n" + - " AND m.id = altname.id(+) \n" + - " AND m.id = ccu.id(+) \n" + - " AND altname.grad_name_ind(+) = '*'"; - int ret = parser.parse(); - - assertTrue(ret == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression = selectSqlStatement.getWhereClause().getCondition(); - - expression.getRightOperand().remove(); - assertTrue(expression.toScript().equalsIgnoreCase("m.id = ? and m.id = altname.id(+) and m.id = ccu.id(+)")); - expression.getRightOperand().remove(); - assertTrue(expression.toScript().equalsIgnoreCase("m.id = ? and m.id = altname.id(+)")); - expression.getRightOperand().remove(); - assertTrue(expression.toScript().equalsIgnoreCase("m.id = ?")); - } - - /** - * Remove those columns from the condition: lst.soort_adres, nat.prs_id, adr.id, prs.id - *
-     *     {@code
-     *   pas.soort_adres = lst.soort_adres
-     *   and prs.id(+) = nat.prs_id
-     *   and adr.id = pas.adr_id
-     *   and prs.id = pas.prs_id
-     *     and lst.persoonssoort = 'PERSOON'
-     *      and pas.einddatumrelatie is null;
-     *     }
-     * 
- * The result condition is: - *
-     *     {@code
-     *     lst.persoonssoort = 'PERSOON'
-     *            and pas.einddatumrelatie is null"
-     *     }
-     * 
- */ - public void testColumnInAndOr3(){ - parser.sqltext = "select *\n" + - "from ods_trf_pnb_stuf_lijst_adrsrt2 lst\n" + - "\t\t, ods_stg_pnb_stuf_pers_adr pas\n" + - "\t\t, ods_stg_pnb_stuf_pers_nat nat\n" + - "\t\t, ods_stg_pnb_stuf_adr adr\n" + - "\t\t, ods_stg_pnb_stuf_np prs\n" + - "where \n" + - "\tpas.soort_adres = lst.soort_adres\n" + - "\tand prs.id(+) = nat.prs_id\n" + - "\tand adr.id = pas.adr_id\n" + - "\tand prs.id = pas.prs_id\n" + - " and lst.persoonssoort = 'PERSOON'\n" + - " and pas.einddatumrelatie is null"; - int ret = parser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression = selectSqlStatement.getWhereClause().getCondition(); - - TExpressionList resultList = expression.searchColumn("lst.soort_adres"); - assertTrue(resultList.size() == 1); - TExpression expression1 = resultList.getExpression(0); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - expression1.remove(); - - resultList = expression.searchColumn("nat.prs_id"); - assertTrue(resultList.size() == 1); - expression1 = resultList.getExpression(0); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - expression1.remove(); - - resultList = expression.searchColumn("adr.id"); - assertTrue(resultList.size() == 1); - expression1 = resultList.getExpression(0); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - expression1.remove(); - - resultList = expression.searchColumn("prs.id"); - assertTrue(resultList.size() == 1); - expression1 = resultList.getExpression(0); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - expression1.remove(); - - assertTrue(expression.toScript().trim().equalsIgnoreCase("lst.persoonssoort = \'PERSOON\' and pas.einddatumrelatie is null")); - // assertTrue(expression.toScript().equalsIgnoreCase("(pu.jbp_uid = pualr.jbp_uid and pu.username = 'USERID')")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifyPGSP.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifyPGSP.java deleted file mode 100644 index ad053a0a..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifyPGSP.java +++ /dev/null @@ -1,58 +0,0 @@ -package gudusoft.gsqlparser.scriptWriterTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.TStatementList; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.*; -import junit.framework.TestCase; - -public class testModifyPGSP extends TestCase -{ - public void testModifyBody() { - String sql = "create or replace procedure yb_stage.transfer()\n" + - "language plpgsql \n" + - "as $$\n" + - "begin\n" + - " update yb_stage.widetabletest2 \n" + - " set r9 = 1000\n" + - " where pk_id = 206041839059439594;\n" + - "end;\n" + - "$$"; - - TGSqlParser parser = new TGSqlParser(EDbVendor.dbvpostgresql); - parser.sqltext = sql; - - int ret = parser.parse(); - if (ret != 0) { - System.err.println("Error parsing:" + parser.getErrormessage()); - assertTrue(false); - } - - TCustomSqlStatement tCustomSqlStatement = parser.getSqlstatements().get(0); - TCreateProcedureStmt stmt = (TCreateProcedureStmt) tCustomSqlStatement; - TStatementList bodyStatements = stmt.getBodyStatements(); - TUpdateSqlStatement statement = (TUpdateSqlStatement) bodyStatements.get(0); - TResultColumn resultColumn = statement.getResultColumnList().getResultColumn(0); - TExpression expr = resultColumn.getExpr(); - String oldBody = statement.toString(); - - //update value - expr.getRightOperand().setString("2000"); - - //Replace sqltext in ${sqltext}$ - String newSql = tCustomSqlStatement.toString().replace(oldBody, statement.toString()); - assertEquals(newSql, "create or replace procedure yb_stage.transfer()\n" + - "language plpgsql \n" + - "as $$\n" + - "begin\n" + - " update yb_stage.widetabletest2 \n" + - " set r9 = 2000\n" + - " where pk_id = 206041839059439594;\n" + - "end;\n" + - "$$"); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifySql.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifySql.java deleted file mode 100644 index 318b2627..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testModifySql.java +++ /dev/null @@ -1,1119 +0,0 @@ -package gudusoft.gsqlparser.scriptWriterTest; - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.scriptWriter.TScriptGenerator; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TUpdateSqlStatement; -import junit.framework.TestCase; - -/** - * Illustrates how to modify SQL clauses. - *

- *
    - *
  • adding/modifying filter condition.
    - * {@link #testAddNewConditionInWhereClause},{@link #testAddNewConditionInWhereClause2},{@link #testAddORConditionInWhereClause}, - * {@link #testAddWhereClause}, {@link #testAddWhereClause2()},{@link #testAddWhereClauseAfterJoin()},{@link #testAddWhereClauseBeforeGrouBy()}, - * {@link #testSetNewWhereCondition()} - * {@link #testRemoveWhereClause()}, - * {@link #testModifyJoinCondition()} - *
  • - *
  • adding/remove new columns in select list.
    - * {@link #testAddResultColumnInSelectList}, {@link #testRemoveResultColumnInSelectList()},{@link #testModifySelectList()} - *
  • - *
  • adding/modify/remove a new join.
    - * {@link #testFromClaueJoinTable()}, {@link #testModifyTableInFromClause()}, {@link #testRemoveJoin()}, - * {@link #testRemoveTableAndAddJoinClause()},{@link #testRemoveTableInFromClauseAndRemoveWhereClause()} - * - *
  • - *
- *

- * - * - * @see http://support.sqlparser.com/tutorials/gsp-howto-script-writer/ - */ -public class testModifySql extends TestCase { - - private TGSqlParser parser = null; - private TScriptGenerator scriptGenerator = null; - - protected void setUp() throws Exception { - super.setUp(); - parser = new TGSqlParser(EDbVendor.dbvoracle); - } - - protected void tearDown() throws Exception { - parser = null; - super.tearDown(); - } - - - public void testAddJoin(){ - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvpostgresql); - sqlParser.sqltext = "SELECT count(*), age FROM people\n" + - "GROUP BY people"; - assertTrue(sqlParser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); - TJoinList joinList = select.joins; - TJoinItem joinItem = new TJoinItem(); - joinList.getJoin(0).getJoinItems().addJoinItem(joinItem); - joinItem.setJoinType(EJoinType.inner); - TTable joinTable = new TTable(); - joinItem.setTable(joinTable); - joinTable.setTableName(sqlParser.parseObjectName("otherTable")); - joinItem.setOnCondition(sqlParser.parseExpression("people.id = otherTable.id")); - // System.out.println(select.toScript()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , select.toScript() - , "select \n" + - "count(*),age\n" + - " from \n" + - "people\n" + - " inner join otherTable on people.id = otherTable.id\n" + - " group by people" - )); - } - - public void testSimpleConverter(){ - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; - assertTrue(sqlParser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); - TJoinList joinList = select.joins; - // remove table: t2 - joinList.removeJoin(1); - // remove where clause - select.setWhereClause(null); - // add join condition - TJoinItem joinItem = new TJoinItem(); - joinList.getJoin(0).getJoinItems().addJoinItem(joinItem); - joinItem.setJoinType(EJoinType.left); - TTable joinTable = new TTable(); - joinItem.setTable(joinTable); - joinTable.setTableName(sqlParser.parseObjectName("t2")); - joinItem.setOnCondition(sqlParser.parseExpression("t1.f1=t2.f2")); - // System.out.println(select.toScript()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , select.toScript() - , "SELECT *\n" + - "FROM t1\n" + - " LEFT JOIN t2\n" + - " ON t1.f1 = t2.f2" - )); - } - - -// public void testModifySelectList2(){ -// TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvpostgresql); -// sqlParser.sqltext = "SELECT COL1, \n" + -// "CAST(CO2 AS VARCHAR) x, \n" + -// "COL3 || \"-\" || COL4 y, \n" + -// "MIN(COL5) MIN5\n" + -// "FROM T"; -// assertTrue(sqlParser.parse() == 0); -// -// TSelectSqlStatement select = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); -// TResultColumn resultColumn0 = select.getResultColumnList().getResultColumn(0); -// String column0 = resultColumn0.getExpr().toString(); -// resultColumn0.setExpr(parser.parseExpression("MYUDF("+column0+")")); -// -// TResultColumn resultColumn1 = select.getResultColumnList().getResultColumn(1); -// String column1 = resultColumn1.getExpr().toString(); -// resultColumn1.setExpr(parser.parseExpression("MYUDF2("+column1+")")); -// -// System.out.println(select.toScript()); -// } - - public void testModifySelectList(){ - parser.sqltext = "select t1.f1, t2.f2 as f2 from table1 t1 left join table2 t2 on t1.f1 = t2.f2 "; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - select.getResultColumnList().removeResultColumn(1); - select.getResultColumnList().removeResultColumn(0); - - TResultColumn resultColumn1 = new TResultColumn(); - resultColumn1.setExpr(parser.parseExpression("t1.f3")); - TAliasClause aliasClause1 = new TAliasClause(); - aliasClause1.setAliasName(parser.parseObjectName("f1")); - aliasClause1.setHasAs(true); - resultColumn1.setAliasClause(aliasClause1); - select.getResultColumnList().addResultColumn(resultColumn1); - - TResultColumn resultColumn2 = new TResultColumn(); - resultColumn2.setExpr(parser.parseExpression("t2.f3")); - select.getResultColumnList().addResultColumn(resultColumn2); - // System.out.println(scriptGenerator.generateScript(select,true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , select.toScript() - ,"SELECT t1.f3 AS f1,\n" + - " t2.f3\n" + - "FROM table1 t1\n" + - " LEFT JOIN table2 t2\n" + - " ON t1.f1 = t2.f2" - )); - - } - - public void testFromClaueJoinTable(){ - parser.sqltext = "select table1.col1, table2.col2\n" + - "from table1, table2\n" + - "where table1.foo > table2.foo"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - select.joins.removeJoin(1); - - TJoin join = new TJoin(); - select.joins.addJoin(join); - join.setNestedParen(1); - TTable table1 = new TTable(); - table1.setTableName(parser.parseObjectName("tableX")); - join.setTable(table1); - - TJoinItem joinItem = new TJoinItem(); - join.getJoinItems().addJoinItem(joinItem); - joinItem.setJoinType(EJoinType.join); - TTable table2 = new TTable(); - table2.setTableName(parser.parseObjectName("tableY")); - joinItem.setTable(table2); - - - TObjectNameList usingColumns = new TObjectNameList(); - usingColumns.addObjectName(parser.parseObjectName("id")); - joinItem.setUsingColumns(usingColumns); - - TAliasClause aliasClause = new TAliasClause(); - aliasClause.setAliasName(parser.parseObjectName("table2")); - aliasClause.setHasAs(true); - join.setAliasClause(aliasClause); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT table1.col1,\n" + - " table2.col2\n" + - "FROM table1, (\n" + - " tablex JOIN \n" + - " tabley USING (ID)) AS table2\n" + - "WHERE table1.foo > table2.foo" - )); - - } - - public void testRemoveResultColumnInSelectList(){ - parser.sqltext = "SELECT A as A_Alias, B AS B_Alias FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TResultColumnList columns = select.getResultColumnList(); - columns.removeResultColumn(1); - TResultColumn resultColumn = new TResultColumn(); - resultColumn.setExpr(parser.parseExpression("x")); - columns.addResultColumn(resultColumn); - // System.out.println(scriptGenerator.generateScript(select, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT a AS a_alias,\n" + - " x\n" + - "FROM table_x" - )); - - } - - public void testAddResultColumnInSelectList(){ - parser.sqltext = "SELECT A as A_Alias, B AS B_Alias FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TResultColumnList columns = select.getResultColumnList(); - - TResultColumn resultColumn = new TResultColumn(); - resultColumn.setExpr(parser.parseExpression("d")); - columns.addResultColumn(resultColumn); - TAliasClause aliasClause = new TAliasClause(); - aliasClause.setAliasName(parser.parseObjectName("d_alias")); - aliasClause.setHasAs(true); - resultColumn.setAliasClause(aliasClause); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT a AS a_alias,\n" + - " b AS b_alias,\n" + - " d AS d_alias\n" + - "FROM table_x" - )); - - } - - public void testRemoveTableInFromClauseAndRemoveWhereClause(){ - parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TJoinList joinList = select.joins; - joinList.removeJoin(0); - select.setWhereClause(null); - - // System.out.println(scriptGenerator.generateScript(select, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM t2" - )); - - } - - public void testRemoveTableAndAddJoinClause(){ - parser.sqltext = "SELECT * FROM t1,t2 where t1.f1=t2.f2"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TJoinList joinList = select.joins; - // let's remove t2 and where clause - joinList.removeJoin(1); - - TJoinItem joinItem = new TJoinItem(); - joinList.getJoin(0).getJoinItems().addJoinItem(joinItem); - joinItem.setJoinType(EJoinType.left); - TTable joinTable = new TTable(); - joinItem.setTable(joinTable); - joinTable.setTableName(parser.parseObjectName("t2")); - joinItem.setOnCondition(parser.parseExpression("t1.f1=t2.f2")); - - // remove where clause - select.setWhereClause(null); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM t1\n" + - " LEFT JOIN t2\n" + - " ON t1.f1 = t2.f2" - )); - } - - - public void testRemoveCTE(){ - parser.sqltext = "with test as (select id from emp)\n" + - "select * from test"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.setCteList(null); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM test" - )); - - - } - - public void testAddNewConditionInWhereClause2(){ - - parser.sqltext = "SELECT * FROM TABLE_X where f > 0"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression1 = parser.parseExpression("c1>1"); - TExpression expression2 = new TExpression(); - expression2.setExpressionType(EExpressionType.logical_and_t); - expression2.setLeftOperand(select.getWhereClause().getCondition()); - expression2.setRightOperand(expression1); - select.getWhereClause().setCondition(expression2); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - , select.toScript() - , "SELECT *\n" + - "FROM table_x\n" + - "WHERE f > 0\n" + - " AND c1 > 1" - )); - - } - - public void testAddORConditionInWhereClause(){ - parser.sqltext = "SELECT * FROM TABLE_X where f > 0"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression1 = parser.parseExpression("c1>1"); - TExpression expression2 = new TExpression(); - expression2.setExpressionType(EExpressionType.logical_or_t); - TExpression parensExpr = new TExpression(); - parensExpr.setExpressionType( EExpressionType.parenthesis_t ); - parensExpr.setLeftOperand(select.getWhereClause().getCondition()); - expression2.setLeftOperand(parensExpr); - expression2.setRightOperand(expression1); - - select.getWhereClause().setCondition(expression2); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE ( f > 0 )\n" + - " OR c1 > 1" - )); - } - - public void testAddNewConditionInWhereClause(){ - parser.sqltext = "select count(*) from TableName where NOT a OR NOT b"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TExpression expression1 = parser.parseExpression("c1=1"); - - - TExpression expression2 = new TExpression(); - expression2.setExpressionType(EExpressionType.logical_and_t); - TExpression parensExpr = new TExpression(); - parensExpr.setExpressionType( EExpressionType.parenthesis_t ); - parensExpr.setLeftOperand(select.getWhereClause().getCondition()); - expression2.setLeftOperand(parensExpr); - expression2.setRightOperand(expression1); - - select.getWhereClause().setCondition(expression2); - - // System.out.println(scriptGenerator.generateScript(select,true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT count(*)\n" + - "FROM tablename\n" + - "WHERE ( NOT a\n" + - " OR NOT b )\n" + - " AND c1 = 1" - )); - - - } - - public void testAddWhereClause2(){ - parser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TWhereClause whereClause = new TWhereClause(); - select.setWhereClause(whereClause); - whereClause.setCondition(parser.parseExpression("c>1")); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE c > 1" - )); - - - } - - public void testAddWhereClauseBeforeGrouBy(){ - parser.sqltext = "SELECT * FROM TABLE_X group by a"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TWhereClause whereClause = new TWhereClause(); - select.setWhereClause(whereClause); - whereClause.setCondition(parser.parseExpression("c>1")); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE c > 1\n" + - "GROUP BY a" - )); - - } - - public void testAddWhereClauseAfterJoin(){ - parser.sqltext = "SELECT tableA.itemA1, tableB.itemB1\n" - + " FROM tableA\n" - + " INNER JOIN tableB\n" - + " ON tableB.itemB2 = tableA.itemA2\n" - + " INNER JOIN (\n" - + " SELECT tableC.itemC1\n" - + " FROM tableC\n" - + " WHERE tableC.itemC3='ABC'\n" - + " GROUP BY tableC.itemC1\n" - + ") unNamedJoin\n" - + " ON unNamedJoin.itemC1 = tableB.itemB2\n"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TJoinList joinList = select.joins; - TJoinItem item = joinList.getJoin( 0 ).getJoinItems( ).getJoinItem( 0 ); - - TExpression expression1 = parser.parseExpression("1=1"); - - TExpression expression2 = new TExpression(); - expression2.setExpressionType(EExpressionType.logical_and_t); - TExpression parensExpr = new TExpression(); - parensExpr.setExpressionType( EExpressionType.parenthesis_t ); - parensExpr.setLeftOperand(item.getOnCondition()); - expression2.setLeftOperand(parensExpr); - expression2.setRightOperand(expression1); - - item.setOnCondition(expression2); - - TWhereClause whereClause = new TWhereClause(); - whereClause.setCondition(parser.parseExpression("c>1")); - select.setWhereClause(whereClause); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT tablea.itema1,\n" + - " tableb.itemb1\n" + - "FROM tablea\n" + - " INNER JOIN tableb\n" + - " ON (tableb.itemb2 = tablea.itema2) AND 1 = 1\n" + - " INNER JOIN ( SELECT tablec.itemc1 FROM tablec WHERE tablec.itemc3 = 'ABC' GROUP BY tablec.itemc1) unnamedjoin\n" + - " ON unnamedjoin.itemc1 = tableb.itemb2\n" + - "WHERE c > 1" - )); - - } - - public void testRemoveWhereClause(){ - parser.sqltext = "SELECT * FROM TABLE_X where a>1 order by a"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.setWhereClause(null); - // System.out.println(scriptGenerator.generateScript(select,true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "ORDER BY a" - )); - - } - - public void testAddOrderByClause(){ - parser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TOrderBy orderBy = new TOrderBy(); - select.setOrderbyClause(orderBy); - TOrderByItem orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.desc); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "ORDER BY a DESC" - )); - - - - parser.sqltext = "SELECT * FROM TABLE_X where a>1"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - orderBy = new TOrderBy(); - select.setOrderbyClause(orderBy); - orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.desc); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE a > 1\n" + - "ORDER BY a DESC" - )); - - - - parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - orderBy = new TOrderBy(); - select.setOrderbyClause(orderBy); - orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.asc); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE a > 1\n" + - "GROUP BY a\n" + - "HAVING count(*) > 1\n" + - "ORDER BY a ASC" - )); - - - parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1 order by c desc"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.asc); - select.getOrderbyClause().getItems().addOrderByItem(orderByItem); - // System.out.println(scriptGenerator.generateScript(select,true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE a > 1\n" + - "GROUP BY a\n" + - "HAVING count(*) > 1\n" + - "ORDER BY c DESC,\n" + - " a ASC" - )); - - - parser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - - TWhereClause whereClause = new TWhereClause(); - whereClause.setCondition(parser.parseExpression("a>1 and b>2")); - select.setWhereClause(whereClause); - //select.addWhereClause("a>1 and b>2") ; - - orderBy = new TOrderBy(); - select.setOrderbyClause(orderBy); - orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.desc); - - //System.out.println(scriptGenerator.generateScript(select,true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE a > 1\n" + - " AND b > 2\n" + - "ORDER BY a DESC" - )); - - - } - - - public void testRemoveItemInOrderByClause(){ - parser.sqltext = "SELECT * FROM TABLE_X order by a,b"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.getOrderbyClause().getItems().removeItem(1); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "ORDER BY a" - )); - - - select.setOrderbyClause(null); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x" - )); - - - } - - public void testReplaceOrderByItemAndAddSortType(){ - parser.sqltext = "SELECT * FROM TABLE_X order by a"; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.getOrderbyClause().getItems().removeElementWithoutSyncTokens(0); - TOrderBy orderBy = select.getOrderbyClause(); - - TOrderByItem orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("b")); - orderByItem.setSortOrder(ESortType.asc); - - orderByItem = new TOrderByItem(); - orderBy.getItems().addElement(orderByItem); - orderByItem.setSortKey(parser.parseExpression("a1")); - orderByItem.setSortOrder(ESortType.desc); - - - - //System.out.println(scriptGenerator.generateScript(select,true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "ORDER BY b ASC,\n" + - " a1 DESC" - )); - - - } - - public void testRemoveSetClauseInUpdate(){ - parser.sqltext = "UPDATE BLA SET A=2, B=3 WHERE X=5"; - assertTrue(parser.parse() == 0); - - TUpdateSqlStatement updateSqlStatement = (TUpdateSqlStatement)parser.sqlstatements.get(0); - TResultColumnList setClauses = updateSqlStatement.getResultColumnList(); - setClauses.removeResultColumn(0); - // System.out.println(scriptGenerator.generateScript(updateSqlStatement, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,updateSqlStatement.toScript() - ,"UPDATE bla\n" + - "SET b=3\n" + - "WHERE x = 5" - )); - - } - - public void testModifyJoinCondition(){ - parser.sqltext = "select * from t1 inner join t2 on t1.col1 = t2.col2"; - assertTrue(parser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - TJoin join = selectSqlStatement.joins.getJoin(0); - TTable table = join.getTable(); - table.setTableName(parser.parseObjectName("t2")); - TJoinItem joinItem = join.getJoinItems().getJoinItem(0); - table = joinItem.getTable(); - table.setTableName(parser.parseObjectName("t1")); - joinItem.setOnCondition(parser.parseExpression("t1.col3 = t2.col5")); - - // System.out.println(scriptGenerator.generateScript(selectSqlStatement, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,selectSqlStatement.toScript() - ,"SELECT *\n" + - "FROM t2\n" + - " INNER JOIN t1\n" + - " ON t1.col3 = t2.col5" - )); - - - } - - public void testRemoveJoin(){ - - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "SELECT X, Y, Z FROM A JOIN B ON A.X=B.Y"; - assertTrue(sqlParser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlParser.sqlstatements.get(0); - TJoin join = selectSqlStatement.joins.getJoin(0); - join.getJoinItems().removeElementWithoutSyncTokens(0); - -// System.out.println(scriptGenerator.generateScript(selectSqlStatement, true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,selectSqlStatement.toScript() - ,"SELECT x,\n" + - " y,\n" + - " z\n" + - "FROM a" - )); - - - } - - - public void testModifyTableInFromClause(){ - parser.sqltext = "select * from t1"; - assertTrue(parser.parse() == 0); - - TTable table = parser.sqlstatements.get(0).tables.getTable(0); - table.setTableName(parser.parseObjectName("newt")); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,parser.sqlstatements.get(0).toScript() - ,"SELECT *\n" + - "FROM newt" - )); - - } - - public void testAddTableAlias(){ - parser.sqltext = "select * from t1"; - assertTrue(parser.parse() == 0); - - TTable table = parser.sqlstatements.get(0).tables.getTable(0); - TAliasClause aliasClause = new TAliasClause(); - aliasClause.setHasAs(true); - aliasClause.setAliasName(parser.parseObjectName("foo")); - table.setAliasClause(aliasClause); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,parser.sqlstatements.get(0).toScript() - ,"SELECT *\n" + - "FROM t1 AS foo" - )); - //assertTrue(parser.sqlstatements.get(0).toString().trim().equalsIgnoreCase("select * from t1 AS foo")); - - } - - public void testModifyTableInCreateTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvimpala); - sqlparser.sqltext = "create table if not exists campaign_1 ( id int, name string )"; - int ret = sqlparser.parse(); - TCustomSqlStatement stmt = sqlparser.sqlstatements.get(0); - TTable table = stmt.tables.getTable(0); - table.setTableName(parser.parseObjectName("prefix_." + table.getTableName().toString())); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,table.toScript() - ,"prefix_.campaign_1" - )); - - } - - public void testRemoveHavingClause(){ - parser.sqltext = "SELECT\n" + - "c.ID AS \"SMS.ID\"\n" + - "FROM\n" + - "SUMMIT.cntrb_detail c\n" + - "where\n" + - "c.cntrb_date >='$GivingFromDate$'\n" + - "and c.cntrb_date<='$GivingThruDate$'\n" + - "group by c.id\n" + - "having sum(c.amt) >= '$GivingFromAmount$' and sum(c.amt) <= '$GivingThruAmount$'"; - assertTrue(parser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)parser.sqlstatements.get(0); - TGroupBy groupBy = selectSqlStatement.getGroupByClause(); - groupBy.setHavingClause(null); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,selectSqlStatement.toScript() - ,"SELECT c.ID AS \"SMS.ID\"\n" + - "FROM summit.cntrb_detail c\n" + - "WHERE c.cntrb_date >= '$GivingFromDate$'\n" + - " AND c.cntrb_date <= '$GivingThruDate$'\n" + - "GROUP BY c.ID" - )); - - - } - - public void testAlterTable_new(){ - TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); - lcparser.sqltext = "ALTER TABLE P_CAP \n" + - "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + - "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD);"; - assertTrue(lcparser.parse() == 0); - TAlterTableStatement at = (TAlterTableStatement) lcparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = at.getAlterTableOptionList().getAlterTableOption(0); - TConstraint constraint = alterTableOption.getConstraintList().getConstraint(0); - assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); - - constraint.getReferencedColumnList().addObjectName(parser.parseObjectName("CEL_NEWID")); - //System.out.println(scriptGenerator.generateScript(at, true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,at.toScript() - ,"ALTER TABLE p_cap \n" + - " ADD CONSTRAINT fk_p_cap_r_ph_111_p_cel FOREIGN KEY (cap_cel) REFERENCES p_cel(cel_cod,cel_newid)" - )); - } - - public void testAddRefernceColumnInAlterTable2(){ - TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); - lcparser.sqltext = "ALTER TABLE P_CAP \n" + - "ADD CONSTRAINT FK_P_CAP_R_PH_111_P_CEL \n" + - "FOREIGN KEY (CAP_CEL) REFERENCES P_CEL (CEL_COD);"; - assertTrue(lcparser.parse() == 0); - TAlterTableStatement at = (TAlterTableStatement) lcparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = at.getAlterTableOptionList().getAlterTableOption(0); - TConstraint constraint = alterTableOption.getConstraintList().getConstraint(0); - assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key); - - constraint.getReferencedColumnList().insertElementAt(parser.parseObjectName("cel_newid"),0); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,at.toScript() - ,"ALTER TABLE p_cap \n" + - " ADD CONSTRAINT fk_p_cap_r_ph_111_p_cel FOREIGN KEY (cap_cel) REFERENCES p_cel(cel_newid,cel_cod)" - )); - - - } - - public void testAddWhereClause(){ - TGSqlParser lcparser = new TGSqlParser(EDbVendor.dbvoracle); - lcparser.sqltext = "SELECT * FROM TABLE_X"; - assertTrue(lcparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)lcparser.sqlstatements.get(0); - TWhereClause whereClause = new TWhereClause(); - select.setWhereClause(whereClause); - whereClause.setCondition(parser.parseExpression("f > 0")); - //System.out.println(scriptGenerator.generateScript(select,true)); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM table_x\n" + - "WHERE f > 0" - )); - - - } - - public void testRemoveAdditionalParenthesisOfSubquery(){ - TSelectSqlStatement select = null, subquery = null; - parser.sqltext = "select * from ((select * from some_table where some_column < ?)) some_view where a_column = something"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - subquery = select.tables.getTable(0).subquery; - subquery.setParenthesisCount(1); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM (SELECT *\n" + - " FROM some_table\n" + - " WHERE some_column < ?) some_view\n" + - "WHERE a_column = something" - )); - - - - parser.sqltext = "(((select a from b)) order by a)"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.setParenthesisCount(0); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"(( SELECT a\n" + - " FROM b))\n" + - " ORDER BY a" - )); - - - - parser.sqltext = "((((select a from b)) order by a))"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.setParenthesisCount(1); - select.setParenthesisCountBeforeOrder(1); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"(( SELECT a\n" + - " FROM b)\n" + - " ORDER BY a)" - )); - - //assertTrue(parser.sqlstatements.get(0).toString().equalsIgnoreCase("( ( select a from b ) order by a )")); - - parser.sqltext = "select * from user_table where ((username like '%admin%'));"; - assertTrue(parser.parse() == 0); - select = (TSelectSqlStatement)parser.sqlstatements.get(0); - TExpression expression = select.getWhereClause().getCondition(); - select.getWhereClause().setCondition(expression.getLeftOperand()); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT *\n" + - "FROM user_table\n" + - "WHERE ( username LIKE '%admin%' )" - )); - - } - public void testSetNewWhereCondition(){ - parser.sqltext = "select t1.f1 from table1 t1 where t1.f2 = 2 "; - assertTrue(parser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0); - select.getWhereClause().setCondition(parser.parseExpression("t1.f2>2")); - // System.out.println(scriptGenerator.generateScript(select,true)); - - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle - ,select.toScript() - ,"SELECT t1.f1\n" + - "FROM table1 t1\n" + - "WHERE t1.f2 > 2" - )); - } - - public void testModifyHavingClause(){ - TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); - SQLParser.sqltext = "select\n" + - "\n" + - " fiscalyear(cps.receiveDateActual) as \"year\", fiscalquarter(cps.receivedateactual) as \"qtr\",\n" + - "\n" + - " concat(fiscalyear(cps.receiveDateActual),'Q',fiscalquarter(cps.receivedateactual)) as \"yearQtr\",\n" + - "\n" + - " emspartner.name as \"emsPartner\",\n" + - "\n" + - " max(emspartner.sysnotesunid) as \"emsPartnerUnid\",\n" + - "\n" + - " sum(If(Date(cps.ReceiveDateActual) <= Date(lot.EmsDeliveryCommit),1,0)) as \"onTime\",\n" + - "\n" + - " sum(If(Date(cps.ReceiveDateActual) > Date(lot.EmsDeliveryCommit),1,0)) as \"late\",\n" + - "\n" + - " avg(If(Date(cps.ReceiveDateActual) <= Date(lot.EmsDeliveryCommit),0,datediff(cps.ReceiveDateActual,lot.EmsDeliveryCommit))) as \"daysLateAvg\", \n" + - "\n" + - " count(*) as \"total\",\n" + - "\n" + - " lot.sysroles\n" + - "\n" + - "from\n" + - "\n" + - " cerpproductsheet cps\n" + - "\n" + - " join cerplot lot on (lot.sysnotesunid = cps.lotunid)\n" + - "\n" + - " join cerpsysappcode emspartner on (emspartner.sysnotesunid = lot.boardVendorUnid)\n" + - "\n" + - "where\n" + - "\n" + - " lot.emsDeliveryCommit is not null\n" + - "\n" + - " and cps.receivedateactual is not null\n" + - "\n" + - "group by\n" + - "\n" + - " fiscalyear(cps.receiveDateActual) desc, fiscalquarter(cps.receivedateactual) desc, emspartner.name\n" + - "\n" + - "order by\n" + - "\n" + - " year"; - - int iRet = SQLParser.parse(); - TSelectSqlStatement tselect = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); - - TGroupBy groupByClause = tselect.getGroupByClause(); - - TExpression expression = groupByClause.getHavingClause(); - - if (expression == null){ - expression = SQLParser.parseExpression("1=1 and column1>10"); - groupByClause.setHavingClause(expression); - } else { - //expression.addANDCondition(theWhereOrHavingClause); - } - - // System.out.println(tselect.toScript()); - SQLParser = null; - } - - public void test4Having(){ - TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); - SQLParser.sqltext = "select a, b, c, count(*) from mytable group by a, b, c"; - - int iRet = SQLParser.parse(); - TSelectSqlStatement tselect = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); - - TGroupBy groupByClause = tselect.getGroupByClause(); - - TExpression expression = groupByClause.getHavingClause(); - String having = "b='x'"; - if (expression == null){ - - expression = SQLParser.parseExpression(having); - if (expression == null){ - System.out.println("can't parse expression:"+having); - }else{ - groupByClause.setHavingClause(expression); - } - - } else { - //expression.addANDCondition(theWhereOrHavingClause); - } - - SQLParser = null; - } - - public void testOrderByItem(){ - TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); - SQLParser.sqltext = "select a, b, c from mytable order by c"; - - int iRet = SQLParser.parse(); - TSelectSqlStatement select = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); - - TOrderBy orderBy = select.getOrderbyClause(); - - TOrderByItem orderByItem = new TOrderByItem(); - orderByItem.setSortKey(parser.parseExpression("a")); - orderByItem.setSortOrder(ESortType.desc); - - orderBy.getItems().addElement(orderByItem); - //System.out.println(select.toScript()); - - SQLParser = null; - } - - public void testPredicateRegexp(){ - TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); - SQLParser.sqltext = "select a, b, c, count(*) from mytable group by a, b, c having a='X'"; - - int iRet = SQLParser.parse(); - TSelectSqlStatement select = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); - - TGroupBy groupByClause = select.getGroupByClause(); - - TExpression expression = groupByClause.getHavingClause(); - String having = "b regexp 'foo.*'"; - TExpression newExpr = SQLParser.parseExpression(having+" and "+expression.toString()); - if (newExpr == null){ - System.out.println("can't parse expression:"+having); - return; - } - - groupByClause.setHavingClause(newExpr); - //System.out.println(select.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql - ,select.toScript() - ,"select \n" + - "a,b,c,count(*)\n" + - " from \n" + - "mytable\n" + - " group by a,b,c having b regexp 'foo.*' and a = 'X'" - )); - SQLParser = null; - } - - - public void testFunctionGroupConcat(){ - TGSqlParser SQLParser = new TGSqlParser(EDbVendor.dbvmysql); - SQLParser.sqltext = "select a, b, c, count(*), group_concat(distinct d separator ' ') from mytable group by a, b, c"; - - int iRet = SQLParser.parse(); - TSelectSqlStatement select = (TSelectSqlStatement)SQLParser.sqlstatements.get(0); - - TGroupBy groupByClause = select.getGroupByClause(); - - TExpression expression = groupByClause.getHavingClause(); - String having = "b regexp 'foo.*'"; - if (expression != null){ - having = expression.toString() +" and "+ having; - } - TExpression newExpr = SQLParser.parseExpression(having); - if (newExpr == null){ - System.out.println("can't parse expression:"+having); - return; - } - - groupByClause.setHavingClause(newExpr); - // System.out.println(select.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql - ,select.toScript() - ,"select \n" + - "a,b,c,count(*),group_concat( distinct d separator ' ')\n" + - " from \n" + - "mytable\n" + - " group by a,b,c having b regexp 'foo.*'" - )); - SQLParser = null; - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testMySQL.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testMySQL.java deleted file mode 100644 index 5d5d1785..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testMySQL.java +++ /dev/null @@ -1,126 +0,0 @@ -package gudusoft.gsqlparser.scriptWriterTest; - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testMySQL extends TestCase -{ - public void testSelectModifier1( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select SQL_CALC_FOUND_ROWS concat('1','-','2') from test"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectModifier2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select SQL_CALC_FOUND_ROWS distinct concat('3','-','2') from test "; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectModifier3( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select SQL_CALC_FOUND_ROWS distinct 1 from dual"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectModifier4( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select distinct SQL_CALC_FOUND_ROWS 1 from dual"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCastFunction( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select cast (test.string as json) from test"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testOnduplicate( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "insert into user (id, name, summa) \n" + - "values(104,'Melony',2999) on duplicate key update sum=values(suma)"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testUpdateJoins( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "update user u \n" + - "join user_info ui on u.id=ui.userid\n" + - "set u.summa = 999\n" + - "where u.id=1"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDeleteFrom( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "delete from user \n" + - "where id=1"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testTimeStampDiff( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select TIMESTAMPDIFF(SECOND,lt.loginDate,lt.logoutDate) as temp from table"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmysql, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSubStringFunction( ) { - String sql = "select SUBSTRING(description,LOCATE('MAC Address:', description) + LENGTH('MAC Address:'), 18) AS MAC_Address from testsuite where tsID = 21"; - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmysql); - sqlParser.sqltext = sql; - int ret = sqlParser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); - String finalSql = select.toScript(); - finalSql = finalSql.replaceAll("\r\n", "").replaceAll("\n", "").replaceAll(" ", "").toUpperCase(); - sql = sql.replaceAll("\r\n", "").replaceAll("\n", "").replaceAll(" ", "").toUpperCase(); - assertTrue(finalSql.equals(sql)); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracle.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracle.java deleted file mode 100644 index 10942aea..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracle.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.scriptWriterTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testOracle extends TestCase -{ - public void testCreateTableBeforeSelect( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "create table tmp_db_hadr_dbrs (synchronization_state number);\n" + - "SELECT dbrs.synchronization_state FROM tmp_db_hadr_dbrs dbrs"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(1).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, sqlparser.sqlstatements.get(1).toString(), sqlparser.sqlstatements.get(1).toScript())); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracleDataType.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracleDataType.java deleted file mode 100644 index 211414a7..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testOracleDataType.java +++ /dev/null @@ -1,123 +0,0 @@ -package gudusoft.gsqlparser.scriptWriterTest; - - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ELiteralType; -import gudusoft.gsqlparser.TSourceToken; -import gudusoft.gsqlparser.nodes.TConstant; -import gudusoft.gsqlparser.nodes.TTypeName; -import junit.framework.TestCase; - -/** - * Code illustrates how to create Oracle datatype from the scratch. - */ -public class testOracleDataType extends TestCase -{ - - public void testChar( ) - { - TTypeName typeName = new TTypeName(EDataType.char_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle,typeName.toScript(), "char")); - - typeName.setLength(new TConstant(ELiteralType.etNumber,new TSourceToken("10"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "char(10)")); - - typeName = new TTypeName(EDataType.varchar2_t); - typeName.setLength(new TConstant(ELiteralType.etNumber,new TSourceToken("20"))); - typeName.setByteUnit(true); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "varchar2(20 byte)")); - - } - - public void testLob( ) - { - TTypeName typeName = new TTypeName(EDataType.clob_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle,typeName.toScript(), "clob")); - - typeName = new TTypeName(EDataType.blob_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "blob")); - - typeName = new TTypeName(EDataType.nclob_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "nclob")); - - typeName = new TTypeName(EDataType.bfile_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "bfile")); - } - - public void testLongRaw( ) - { - TTypeName typeName = new TTypeName(EDataType.long_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle,typeName.toScript(), "long")); - - typeName = new TTypeName(EDataType.raw_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "raw")); - - typeName = new TTypeName(EDataType.raw_t,new TConstant(ELiteralType.etNumber,new TSourceToken("20"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "raw(20)")); - - typeName = new TTypeName(EDataType.long_raw_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "long raw")); - - } - - public void testNumber( ) - { - TTypeName typeName = new TTypeName(EDataType.number_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle,typeName.toScript(), "number")); - - typeName = new TTypeName(EDataType.number_t - ,new TConstant(ELiteralType.etNumber,new TSourceToken("20")) - ,null); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "number(20)")); - - typeName = new TTypeName(EDataType.number_t - ,new TConstant(ELiteralType.etNumber,new TSourceToken("20")) - ,new TConstant(ELiteralType.etNumber,new TSourceToken("2"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "number(20,2)")); - - } - - public void testDateTime( ) - { - TTypeName typeName = new TTypeName(EDataType.date_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle,typeName.toScript(), "date")); - - typeName = new TTypeName(EDataType.timestamp_t - ,new TConstant(ELiteralType.etNumber,new TSourceToken("20")) - ,null); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "timestamp(20)")); - - typeName = new TTypeName(EDataType.timestamp_with_time_zone_t - ,new TConstant(ELiteralType.etNumber,new TSourceToken("20")) - ); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "timestamp(20) with time zone")); - } - - public void testInterval( ) - { - TTypeName typeName = new TTypeName(EDataType.interval_year_to_month_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle,typeName.toScript(), "interval year to month")); - - typeName = new TTypeName(EDataType.interval_year_to_month_t - ,new TConstant(ELiteralType.etNumber,new TSourceToken("20")) - ); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "interval year (20) to month")); - - typeName = new TTypeName(EDataType.interval_day_to_second_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "interval day to second")); - - typeName = new TTypeName(EDataType.interval_day_to_second_t - ,new TConstant(ELiteralType.etNumber,new TSourceToken("20")) - ,new TConstant(ELiteralType.etNumber,new TSourceToken("40")) - ); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle, typeName.toScript(), "interval day (20) to second (40)")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServer.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServer.java deleted file mode 100644 index d90a52fe..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServer.java +++ /dev/null @@ -1,19 +0,0 @@ -package gudusoft.gsqlparser.scriptWriterTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testSQLServer extends TestCase -{ - public void test1( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT TOP(?) * FROM sys.dm_exec_connections c"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(1).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvsnowflake, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServerDataType.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServerDataType.java deleted file mode 100644 index d6336972..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSQLServerDataType.java +++ /dev/null @@ -1,181 +0,0 @@ -package gudusoft.gsqlparser.scriptWriterTest; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ELiteralType; -import gudusoft.gsqlparser.TSourceToken; -import gudusoft.gsqlparser.nodes.TConstant; -import gudusoft.gsqlparser.nodes.TTypeName; -import junit.framework.TestCase; - -/** - * Code illustrates how to create SQL Server datatype from the scratch. - */ -public class testSQLServerDataType extends TestCase -{ - - public void testInt( ) - { - TTypeName typeName = new TTypeName(EDataType.bigint_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql,typeName.toScript(), "bigint")); - - typeName = new TTypeName(EDataType.int_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "int")); - - typeName = new TTypeName(EDataType.smallint_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "smallint")); - - typeName = new TTypeName(EDataType.tinyint_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "tinyint")); - } - - public void testDecimal( ) - { - TTypeName typeName = new TTypeName(EDataType.decimal_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "decimal")); - - typeName = new TTypeName(EDataType.decimal_t - ,new TConstant(ELiteralType.etNumber,new TSourceToken("10")) - ,null); - //System.out.print(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "decimal(10)")); - - typeName = new TTypeName(EDataType.decimal_t - ,new TConstant(ELiteralType.etNumber,new TSourceToken("10")) - ,new TConstant(ELiteralType.etNumber,new TSourceToken("2"))); - //System.out.print(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "decimal(10,2)")); - } - - public void testBit( ) { - TTypeName typeName = new TTypeName(EDataType.bit_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "bit")); - } - - public void testMoney( ) { - TTypeName typeName = new TTypeName(EDataType.money_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "money")); - typeName = new TTypeName(EDataType.smallmoney_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "smallmoney")); - } - - public void testFloat( ) { - TTypeName typeName = new TTypeName(EDataType.float_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "float")); - - typeName = new TTypeName(EDataType.float_t - ,new TConstant(ELiteralType.etNumber,new TSourceToken("24")) - ); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "float(24)")); - } - - public void testReal( ) { - TTypeName typeName = new TTypeName(EDataType.real_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "real")); - } - - public void testDate( ) { - TTypeName typeName = new TTypeName(EDataType.date_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "date")); - } - - public void testDatetimeoffset( ) { - TTypeName typeName = new TTypeName(EDataType.datetimeoffset_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "datetimeoffset")); - typeName = new TTypeName(EDataType.datetimeoffset_t); - typeName.setFractionalSecondsPrecision(new TConstant(ELiteralType.etNumber,new TSourceToken("10"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "datetimeoffset(10)")); - } - - public void testChar( ) { - TTypeName typeName = new TTypeName(EDataType.char_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "char")); - typeName = new TTypeName(EDataType.character_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "character")); - typeName = new TTypeName(EDataType.char_t,new TConstant(ELiteralType.etNumber,new TSourceToken("10"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "char(10)")); - typeName = new TTypeName(EDataType.character_t,new TConstant(ELiteralType.etNumber,new TSourceToken("10"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "character(10)")); - - typeName = new TTypeName(EDataType.varchar_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "varchar")); - typeName = new TTypeName(EDataType.varchar_t,new TConstant(ELiteralType.etNumber,new TSourceToken("10"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "varchar(10)")); - typeName = new TTypeName(EDataType.varchar_t,new TConstant(ELiteralType.etString,new TSourceToken("max"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "varchar(max)")); -// typeName = new TTypeName(EDataType.charvarying_t); -// assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "charvarying")); -// typeName = new TTypeName(EDataType.charactervarying_t); -// assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "charvarying")); - - } - - public void testNChar( ) { - TTypeName typeName = new TTypeName(EDataType.nchar_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "nchar")); - - typeName = new TTypeName(EDataType.nvarchar_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "nvarchar")); - typeName = new TTypeName(EDataType.nvarchar_t,new TConstant(ELiteralType.etNumber,new TSourceToken("10"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "nvarchar(10)")); - typeName = new TTypeName(EDataType.nvarchar_t,new TConstant(ELiteralType.etString,new TSourceToken("max"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "nvarchar(max)")); - - } - - public void testText( ) { - TTypeName typeName = new TTypeName(EDataType.text_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "text")); - typeName = new TTypeName(EDataType.image_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "image")); - typeName = new TTypeName(EDataType.ntext_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "ntext")); - } - - public void testBinary( ) { - TTypeName typeName = new TTypeName(EDataType.binary_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "binary")); - typeName = new TTypeName(EDataType.binary_t,new TConstant(ELiteralType.etNumber,new TSourceToken("10"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "binary(10)")); - - typeName = new TTypeName(EDataType.varbinary_t); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "varbinary")); - typeName = new TTypeName(EDataType.varbinary_t,new TConstant(ELiteralType.etNumber,new TSourceToken("10"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "varbinary(10)")); - typeName = new TTypeName(EDataType.varbinary_t,new TConstant(ELiteralType.etString,new TSourceToken("max"))); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "varbinary(max)")); - - } - - public void testRowversion( ) { - TTypeName typeName = new TTypeName(EDataType.rowversion_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "rowversion")); - } - - public void testTimestamp( ) { - TTypeName typeName = new TTypeName(EDataType.timestamp_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "timestamp")); - } - - public void testUniqueIdentifier( ) { - TTypeName typeName = new TTypeName(EDataType.uniqueidentifier_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "uniqueidentifier")); - } - - public void testSql_variant( ) { - TTypeName typeName = new TTypeName(EDataType.sql_variant_t); - //System.out.println(typeName.toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvmssql, typeName.toScript(), "sql_variant")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testScriptGenerator.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testScriptGenerator.java deleted file mode 100644 index 65d922e7..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testScriptGenerator.java +++ /dev/null @@ -1,1360 +0,0 @@ - -package gudusoft.gsqlparser.scriptWriterTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETokenType; -import gudusoft.gsqlparser.TBaseType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.TSourceTokenList; -import gudusoft.gsqlparser.pp.para.GFmtOpt; -import gudusoft.gsqlparser.pp.para.GFmtOptFactory; -import gudusoft.gsqlparser.pp.para.styleenums.TCaseOption; -import gudusoft.gsqlparser.pp.stmtformatter.FormatterFactory; -import junit.framework.TestCase; - -public class testScriptGenerator extends TestCase -{ - public void testsqlserverDatetime2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE TABLE test(\n" + - "id int NOT NULL IDENTITY(1,1),\n" + - "ModifiedDate datetime2(0) NOT NULL\n" + - ")"; - - assertTrue(sqlparser.parse( ) == 0); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testsqlserverDatetime( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE TABLE test(\n" + - "id int NOT NULL IDENTITY(1,1),\n" + - "ModifiedDate datetime(0) NOT NULL\n" + - ")"; - - assertTrue(sqlparser.parse( ) == 0); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testsqlserverAlterTableForColumns( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "ALTER TABLE testTable ADD DEFAULT ('') FOR testColumn"; - - assertTrue(sqlparser.parse( ) == 0); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testsqlserverOption( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "SELECT * FROM HumanResources.Employee AS e1 UNION SELECT * FROM HumanResources.Employee AS e2 OPTION (MERGE UNION);"; - - assertTrue(sqlparser.parse( ) == 0); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSnwoflakeConcat( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvsnowflake); - sqlparser.sqltext = "select 'a' || 'b'"; - - assertTrue(sqlparser.parse( ) == 0); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvsnowflake,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testOnprimay( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "CREATE TABLE [echeckinmedicaldata] ( \n" + - " [id] int NOT NULL\n" + - "IDENTITY(1,1) ,\n" + - " [uid] int NOT NULL CONSTRAINT [DF_echeckinmedicaldata_uid] DEFAULT ((0)) ,\n" + - " [encid] int NOT NULL CONSTRAINT [DF_echeckinmedicaldata_encid] DEFAULT ((0)) ,\n" + - " [surglist] text NULL CONSTRAINT [DF_echeckinmedicaldata_surglist] DEFAULT NULL ,\n" + - " [hosplist] text NULL CONSTRAINT [DF_echeckinmedicaldata_hosplist] DEFAULT NULL ,\n" + - " [medlist] text NULL CONSTRAINT [DF_echeckinmedicaldata_medlist] DEFAULT NULL ,\n" + - " [allergylist] text NULL CONSTRAINT [DF_echeckinmedicaldata_allergylist] DEFAULT NULL ,\n" + - " [datetime] varchar (50) NULL CONSTRAINT [DF_echeckinmedicaldata_datetime] DEFAULT NULL ,\n" + - " [delflag] tinyint NOT NULL DEFAULT ((0)),\n" + - " INDEX idx_echeckinmedicaldata_uid(uid),\n" + - " INDEX idx_echeckinmedicaldata_encid(encid),\n" + - " CONSTRAINT PK_echeckinmedicaldata PRIMARY KEY CLUSTERED ( id ASC ) WITH (IGNORE_DUP_KEY = OFF)\n" + - " ON [PRIMARY]) ON [PRIMARY];"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAtlerTableAddColumn( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql); - sqlparser.sqltext = "ALTER TABLE ALLERGY_RECIPE_LABS ADD SHOT_FAC_TYPE TINYINT DEFAULT 0, MAILTO_TEL VARCHAR(20);"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testMySQLChar( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); - sqlparser.sqltext = "SELECT CAST(t5.column AS CHAR) AS c1 from xxx t5"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testInterval( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); - sqlparser.sqltext = "SELECT DATE_ADD(DATE(datecol), INTERVAL (-WEEKDAY(DATE(datecol))) DAY) AS finalDate FROM table "; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCastDecimal( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); - sqlparser.sqltext = "SELECT CAST(t5.column AS DECIMAL(20)) AS c1 from t5.xxx;"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - - public void testIntervalConstant( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql); - sqlparser.sqltext = " SELECT date_add(last_day (CAST(concat (concat (concat (2019,'-'),12),'-01') AS DATETIME)),INTERVAL 1 DAY) AS firstdayofnextmonth \n" + - " FROM analytics.xxx t19 \n" + - " WHERE t19.date < date_add(last_day(CAST(concat(concat(concat(2019,'-'),12),'-01') AS DATETIME)),INTERVAL 1 DAY)"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testNullsFirst( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvredshift ); - sqlparser.sqltext = "select start_date from datetable order by start_date desc nulls first"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvredshift,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testHiveLimit( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvhive ); - sqlparser.sqltext = "select groupcol, avg(mycolumn) as myalias\n" + - "from mytable\n" + - "group by groupcol\n" + - "limit 4"; - - sqlparser.parse( ); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvhive,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testPostgresqlAnd( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvpostgresql ); - sqlparser.sqltext = "SELECT * from transmission where position_search && '{3456788}';"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - //assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testMySQLFunctionAddDate( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "SELECT adddate(date, 10*10) as date from program"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testMySQLAssignmentOperator( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmysql ); - sqlparser.sqltext = "select @csum := 0 from dual"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvmysql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - - } - - public void testBindVar( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select emp_id, emp_dept\n" + - "into :b0 :b1,\n" + - ":b2 :b3\n" + - "from T1\n" + - "where rownum < 2;"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - -// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvoracle ); -// scriptGenerator.generateScript( sqlparser.sqlstatements.get( 0 ) ); -// assertTrue( scriptGenerator.verifyScript( sqlparser.sqlstatements.get( 0 ) ) ); - } - - public void testCrossApply( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT d.department_name, v.employee_id, v.last_name\n" - + " FROM departments d CROSS APPLY (SELECT * FROM employees e\n" - + " WHERE e.department_id = d.department_id) v"; - - sqlparser.parse( ); - - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - -// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvoracle ); -// scriptGenerator.generateScript( sqlparser.sqlstatements.get( 0 ) ); -// assertTrue( scriptGenerator.verifyScript( sqlparser.sqlstatements.get( 0 ) ) ); - } - - - public void testIsOfType( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select a from b\n" - + "where c is of type(only scott.tn)"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testForeignReferences( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "CREATE TABLE registered_students (\n" - + " student_id NUMBER(5) NOT NULL,\n" - + " department CHAR(3) NOT NULL,\n" - + " course NUMBER(3) NOT NULL,\n" - + " grade CHAR(1),\n" - + " CONSTRAINT rs_grade\n" - + " CHECK (grade IN ('A', 'B', 'C', 'D', 'E')),\n" - + " CONSTRAINT rs_student_id\n" - + " FOREIGN KEY (student_id) REFERENCES students (id),\n" - + " CONSTRAINT rs_department_course\n" - + " FOREIGN KEY (department, course)\n" - + " REFERENCES classes (department, course)\n" - + " )"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle - , sqlparser.sqlstatements.get(0).toString() - , sqlparser.sqlstatements.get(0).toScript())); - } - - public void testForUpdateOf( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select all department_id\n" - + "from employees\n" - + "for update of scott.employees.ename;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDatabaseLink( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select emp.e@usa b from emp"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDatabaseLink2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select user@!, sysdate@! from dual ;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction3( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT last_name, salary, department_id,\n" - + " PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary1 DESC) \n" - + " OVER (PARTITION BY department_id) \"Percentile_Cont\",\n" - + " PERCENT_RANK() \n" - + " OVER (PARTITION BY department_id ORDER BY salary DESC) \n" - + "\"Percent_Rank\"\n" - + "FROM employees WHERE department_id IN (30, 60);"; - - sqlparser.parse(); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction4( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT empno,\n" - + " deptno,\n" - + " sal,\n" - + " MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno) \"Lowest\",\n" - + " MAX(sal) KEEP (DENSE_RANK LAST ORDER BY sal) OVER (PARTITION BY deptno) \"Highest\"\n" - + "FROM emp\n" - + "ORDER BY deptno, sal;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction5( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT empno,\n" - + " deptno,\n" - + " sal,\n" - + " DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal) \"rank\"\n" - + "FROM emp;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction6( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT empno,\n" - + " deptno,\n" - + " sal,\n" - + " RANK() OVER (PARTITION BY deptno ORDER BY sal) \"rank\"\n" - + " FROM emp;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction7( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT empno, deptno, TO_CHAR(hiredate, 'YYYY') YEAR,\n" - + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" - + "ORDER BY hiredate ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) FROM_P3_TO_F1,\n" - + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" - + "ORDER BY hiredate ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM_PU_TO_C,\n" - + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" - + "ORDER BY hiredate ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING) FROM_P2_TO_P1,\n" - + "COUNT(*) OVER (PARTITION BY TO_CHAR(hiredate, 'YYYY')\n" - + "ORDER BY hiredate ROWS BETWEEN 1 FOLLOWING AND 3 FOLLOWING) FROM_F1_TO_F3\n" - + "FROM emp\n" - + "ORDER BY hiredate;"; - - sqlparser.parse( ); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testGroupBy1( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT DECODE(GROUPING(department_name), 1, 'All Departments',\n" - + " department_name) AS department_name,\n" - + " DECODE(GROUPING(job_id), 1, 'All Jobs', job_id) AS job_id,\n" - + " COUNT(*) \"Total Empl\", AVG(salary) * 12 \"Average Sal\"\n" - + " FROM employees e, departments d\n" - + " WHERE d.department_id = e.department_id\n" - + " GROUP BY CUBE (department_name, job_id)"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testKeepDenseRank( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT department_id,\n" - + "MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct) \"Worst\",\n" - + "MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct) \"Best\"\n" - + " FROM employees\n" - + " GROUP BY department_id;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDeleteNestedTable( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "DELETE TABLE(SELECT h.people FROM hr_info h\n" - + " WHERE h.department_id = 280) p\n" - + " WHERE p.salary > 1700;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void test11( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT salary FROM employees\n" - + "versions between scn minvalue and maxvalue\n" - + "ORDER BY 1,2;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testOracleJoin2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select a from b \n" - + "where waehrungscode_iso = TO_NUMBER(e.code(+))"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT manager_id, last_name, hire_date, salary,\n" - + " AVG(salary) OVER (PARTITION BY manager_id ORDER BY hire_date \n" - + " ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS c_mavg\n" - + " FROM employees;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - // public void testPivot(){ - // TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - // sqlparser.sqltext = "SELECT * FROM\n" + - // "(SELECT EXTRACT(YEAR FROM order_date) year, order_mode, order_total FROM orders)\n" - // + - // "PIVOT\n" + - // "(SUM(order_total) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));"; - // - // sqlparser.parse(); - // TScriptGenerator scriptGenerator = new - // TScriptGenerator(EDbVendor.dbvoracle); - // System.out.println(scriptGenerator.generateScript(sqlparser.sqlstatements.get(0))); - // // scriptGenerator.generateScript(sqlparser.sqlstatements.get(0)); - // assertTrue(scriptGenerator.verifyScript(sqlparser.sqlstatements.get(0).sourcetokenlist)); - // } - - public void testCreateTableDefault2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "create table myTable (\n" - + "myColumn number default null null \n" - + ");"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCreateTableDefault( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "create table myTable (\n" - + "myColumn number default null not null\n" - + ");"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCreateViewDefault( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "CREATE VIEW vNessusTargetHostExtract \n" - + "AS \n" - + "SELECT LoadKey, vcHost, CASE WHEN iPluginid = 12053 THEN SUBSTRING(vcResult, CHARINDEX('resolves as', vcResult) + 12, (DATALENGTH(vcResult) - 1) \n" - + " - (CHARINDEX('resolves as', vcResult) + 12)) ELSE 'No registered hostname' END AS vcHostName, vcport, LoadedOn, iRecordTypeID, \n" - + " iAgentProcessID, iTableID \n" - + "FROM dbo.vNessusResultExtract;"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - - // public void testMssqlCreateFunction( ) -// { -// TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql ); -// sqlparser.sqltext = "create function dbo.ufnGetStock(@ProductID int )\r\n" -// + " returns int \r\n" -// + " as \r\n" -// + " begin \r\n" -// + " declare @ret int ;\r\n" -// + " select \r\n" -// + "@ret=SUM(p.Quantity)\r\n" -// + " from \r\n" -// + "Production.ProductInventory p\r\n" -// + " where p.ProductID = @ProductID and p.LocationID = '6';\r\n" -// + " if (@ret is null )\r\n" -// + " set @ret=0;\r\n" -// + " return @ret;\r\n" -// + " end "; -// sqlparser.parse( ); -// TScriptGenerator scriptGenerator = new TScriptGenerator( EDbVendor.dbvmssql ); -// System.out.println(scriptGenerator.generateScript( sqlparser.sqlstatements.get( 0 ) )); -// assertTrue( scriptGenerator.verifyScript( sqlparser.sqlstatements.get( 0 ).sourcetokenlist ) ); -// } -// - public void testOracleCreateProcedure( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "CREATE PROCEDURE evaluate(my_empno NUMBER) \r\n" - + "AUTHID CURRENT_USER AS \r\n" - + "my_ename VARCHAR2 (15); \r\n" - + "BEGIN \r\n" - + "SELECT ename INTO my_ename FROM emp WHERE empno = my_empno;\r\n" - + "END ;"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDropIndex( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql ); - sqlparser.sqltext = "DROP INDEX IX_SalesPerson_SalesQuota_SalesYTD ON Sales.SalesPerson;"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testUseDatabase( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvmssql ); - sqlparser.sqltext = "USE AdventureWorks;"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvmssql,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testDelete( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "delete from department\n" - + "where department_name = 'Finance';"; - - sqlparser.parse( ); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testJoinNested( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select a_join.f1\n" - + "from ((a as a_alias left outer join a1 on a1.f1 = a_alias.f1) ) as a_join\n" - + "join b on a_join.f1 = b.f1;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testJoinNested2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select * \n" - + "FROM (a AS alias_a \n" - + " RIGHT JOIN ((b left outer join f on (b.f1=f.f2)) LEFT JOIN c \n" - + "\t\tON (b.b1 = c.c1) AND (b.b2 = c.c2)) \n" - + "\tON (a.a1 = b.b3) AND (a.a2 = b.b4)) b;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - // public void testHavingGroup(){ - // TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); - // sqlparser.sqltext = "select a,c\n" + - // "from b\n" + - // "having avg(c) > 10\n" + - // "group by a"; - // - // sqlparser.parse(); - // TScriptGenerator scriptGenerator = new - // TScriptGenerator(EDbVendor.dbvoracle); - // System.out.println(scriptGenerator.generateScript(sqlparser.sqlstatements.get(0))); - // // scriptGenerator.generateScript(sqlparser.sqlstatements.get(0)); - // assertTrue(scriptGenerator.verifyScript(sqlparser.sqlstatements.get(0).sourcetokenlist)); - // } - - public void testSelectAlias( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select last_name as name ,commission_pct comm,\n" - + "salary*12 \"Annual Salary\"\n" - + "from employees;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testComment( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select a\n" - + "from b --s\n" - + "--ss\n" - + "where a in (1, 1>2 and c>d);"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testForUpdate( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select * from abc order by a for update nowait;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testConcatenate( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT /*+ use_hash(KUO) */\n" - + " C_BANK\n" - + " || '|'\n" - + "from t "; - - sqlparser.parse(); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } - - public void testInlist( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select ANZ_MA\n" - + "from t \n" - + "WHERE funktionscode IN ('U', 'H') "; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testAnalyticFunction( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select ROW_NUMBER() OVER \n" - + "\t(PARTITION BY c_mandant, ma_parkey, me_parkey \n" - + "\t\tORDER BY c_mandant, ma_parkey, me_parkey) ANZ_MA\n" - + "from t "; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCase( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select CASE WHEN EXISTS (SELECT 1\n" - + " FROM CDS_H_GRUPPE GRP1\n" - + " WHERE GRP1.c_mandant = c_mandant\n" - + " AND GRP1.hist_datum = ADD_MONTHS(LAST_DAY(TRUNC(SYSDATE)), -1)\n" - + " AND GRP1.funktionscode = 'H'\n" - + " AND GRP1.parkey1 = ma_parkey)\n" - + " THEN 1\n" - + " ELSE NULL\n" - + " END MA_ME\n" - + "from t"; - - sqlparser.parse(); - //System.out.println(sqlparser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectPivot( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT * FROM pivot_table\n" - + " UNPIVOT (yearly_total FOR order_mode IN (store AS 'direct', internet AS 'online'))\n" - + " ORDER BY year, order_mode;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectWithParensOfUnion2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "(( \n" - + " select add_months(trunc(sysdate), -1) as dt\n" - + " from dual\n" - + " union all\n" - + " select cte.dt+1 \n" - + " from cte \n" - + " where cte.dt+1 < sysdate\n" - + ") order by 1)\n" - + "\n"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectWithParensOfUnion( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "( \n" - + " select add_months(trunc(sysdate), -1) as dt\n" - + " from dual\n" - + " union all\n" - + " select cte.dt+1 \n" - + " from cte \n" - + " where cte.dt+1 < sysdate\n" - + ") order by 1\n" - + "\n"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectWithParens2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT B.* FROM ((SELECT 2 FROM DUAL) B)"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSelectWithParens( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "((select a from b\n" - + "where a>c)\n" - + "order by 1)"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testCTE( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "with cte (dt) as ( \n" - + " select add_months(trunc(sysdate), -1) as dt\n" - + " from dual\n" - + " union all\n" - + " select cte.dt+1 \n" - + " from cte \n" - + " where cte.dt+1 < sysdate\n" - + ")\n" - + " select * from cte;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSet2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select 'sing' as \"My dream\", 3 a_dummy\n" - + "from dual\n" - + "union\n" - + "select 'I''d like to teach',1\n" - + "from dual\n" - + "union\n" - + "select 'the world to',2\n" - + "from dual\n" - + "order by 2;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testSet1( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select employee_id,job_id\n" - + "from employees\n" - + "union\n" - + "select employee_id,job_id\n" - + "from job_history;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testGroupBy( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select department_id,avg(salary)\n" - + "from employees\n" - + "group by department_id\n" - + "having avg(salary) > 8000\n" - + "order by sum(salary);"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testHierarchical( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "SELECT employee_id, last_name, manager_id\n" - + " FROM employees\n" - + " CONNECT BY PRIOR employee_id = manager_id;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testJoin3( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select t1.f1\n" - + "from my.table1 t1\n" - + " right outer join (\n" - + " \t\t\t\t\t\t\t(my.table2 t2\n" - + " \t\t\t\t\t\t\t\tleft outer join my.table3 t3\n" - + " \t\t\t\t\t\t\t\t\ton (t2.f1 = t3.f2)\n" - + " \t\t\t\t\t\t\t)\n" - + " \t\t\t\t\t\tleft outer join (my.table4 t4\n" - + " \t\t\t\t\t\t\t\t\t\t\t\t\tfull outer join my.table5 t5\n" - + " \t\t\t\t\t\t\t\t\t\t\t\t\t\ton (t4.f1 = t5.f1)\n" - + " \t\t\t\t\t\t\t\t\t\t\t ) t4alias\n" - + " \t\t\t\t\t\t\ton (t4.b1 = t2.c1)\n" - + " \t\t\t\t\t\t)\n" - + " on (t1.a1 = t3.b3);"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testJoin2( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select t1.f1\n" - + "from my.table1 t1\n" - + " join (my.table2 t2\n" - + " left outer join my.table3 t3\n" - + " on t2.f1 = t3.f1) as joinalias1\n" - + " on t1.f1 = t2.f1;"; - - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testJoin( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select t1.f1\n" - + "from my.table1 t1\n" - + " join my.table2 t2 on t1.f1 = t2.f1\n" - + " left outer join my.table3 t3 on t2.f1 = t3.f1"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void testOracleJoin( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "Select t1.f1\n" - + "from my.table1 t1,my.table2 t2\n" - + "where t1.f1 = t2.f1\t"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - public void test1( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvoracle ); - sqlparser.sqltext = "select fx(1,2)+y from t"; - sqlparser.parse(); - assertTrue(verifyScript(EDbVendor.dbvoracle,sqlparser.sqlstatements.get(0).toString(),sqlparser.sqlstatements.get(0).toScript())); - } - - - static public boolean verifyScript(EDbVendor dbVendor, String src, String target){ - return verifyScript(dbVendor,src,target,0); -// TGSqlParser sourceParser = new TGSqlParser(dbVendor ); -// TGSqlParser targetParser = new TGSqlParser(dbVendor ); -// sourceParser.sqltext = src; -// sourceParser.tokenizeSqltext(); -// -// targetParser.sqltext = target; -// targetParser.tokenizeSqltext(); -// -// return verifyTokens(sourceParser.getSourcetokenlist(),targetParser.getSourcetokenlist(),false); - - } - - static public boolean verifyScript(EDbVendor dbVendor, String src, String target, long lineOffset){ - if ((src == null)||(src.length()==0)) return false; - if ((target == null)||(target.length()==0)) return false; - TGSqlParser sourceParser = new TGSqlParser(dbVendor ); - TGSqlParser targetParser = new TGSqlParser(dbVendor ); - sourceParser.sqltext = src; - sourceParser.tokenizeSqltext(); - - targetParser.sqltext = target; - targetParser.tokenizeSqltext(); - - return verifyTokens(sourceParser.getSourcetokenlist(),targetParser.getSourcetokenlist(),false,lineOffset); - - } - - static private boolean verifyTokens(TSourceTokenList originalTokens, TSourceTokenList targetTokens, boolean partialChecking, long lineOffset){ - boolean result = true; - int old = 0; - boolean startParenthesis = false; - int nestedParenthesis = 0; - - for(int i=0;i 0) nestedParenthesis--; - if ((nestedParenthesis == 0) && startParenthesis){ - result = true; - break; - } - } - } - - result = false; - for(int j=old;j 1000000 AND order_total < 2000000 THEN\n" + - "INTO medium_orders\n" + - "WHEN order_total > 2000000 THEN\n" + - "INTO large_orders\n" + - "SELECT order_id, order_total, sales_rep_id, customer_id\n" + - "FROM orders"; - sqlParser.parse(); - //System.out.println(sqlParser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); - } - - public void testInsertFirst( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "INSERT FIRST\n" + - "WHEN ottl < 100000 THEN\n" + - "INTO small_orders\n" + - "VALUES(oid, ottl, sid, cid)\n" + - "WHEN ottl > 100000 and ottl < 200000 THEN\n" + - "INTO medium_orders\n" + - "VALUES(oid, ottl, sid, cid)\n" + - "WHEN ottl > 290000 THEN\n" + - "INTO special_orders\n" + - "WHEN ottl > 200000 THEN\n" + - "INTO large_orders\n" + - "VALUES(oid, ottl, sid, cid)\n" + - "SELECT o.order_id oid, o.customer_id cid, o.order_total ottl,\n" + - "o.sales_rep_id sid, c.credit_limit cl, c.cust_email cem\n" + - "FROM orders o, customers c\n" + - "WHERE o.customer_id = c.customer_id;"; - sqlParser.parse(); - //System.out.println(sqlParser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); - } - - /** - * support key actions in reference clause. - * see {@link gudusoft.gsqlparser.nodes.TConstraint#getKeyActions()} - */ - public void testOnDeleteCascade( ) - { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle); - sqlParser.sqltext = "create table new_employees\n" + - "(employee_id number not null,\n" + - "hire_date date default sysdate,\n" + - "start_date timestamp(7) references scott.dept(start_date),\n" + - "end_date timestamp(7) references dept.end_date on delete cascade,\n" + - "end_date timestamp(7) references dept.end_date on update set null,\n" + - "check (start_date>end_date),\n" + - "constraint abc unique(a,b),\n" + - "primary key(a),\n" + - "foreign key(a,b) references dept(c,d) on delete set null\n" + - ");"; - sqlParser.parse(); - //System.out.println(sqlParser.sqlstatements.get(0).toScript()); - assertTrue(verifyScript(EDbVendor.dbvoracle, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); - } - -// public void testMySQLCreateTable( ) -// { -// TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvmysql); -// sqlParser.sqltext = "CREATE TABLE `DEPT_MANAGER_TBL` ( \n" + -// " `EMP_NO` INT(4) unsigned zerofill NOT NULL DEFAULT 1000, \n" + -// " `DEPT_NO` CHAR(4) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL, \n" + -// " `TO_DATE` GEOMETRY NOT NULL , `FROM_DATE` DATE NOT NULL, \n" + -// " PRIMARY KEY (`EMP_NO`, `DEPT_NO`)\n" + -// ") COLLATE=utf8_unicode_ci;"; -// sqlParser.parse(); -// System.out.println(sqlParser.sqlstatements.get(0).toScript()); -// //assertTrue(verifyScript(EDbVendor.dbvmysql, sqlParser.sqlstatements.get(0).toString(), sqlParser.sqlstatements.get(0).toScript())); -// } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSnowflake.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSnowflake.java deleted file mode 100644 index ab844aab..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testSnowflake.java +++ /dev/null @@ -1,21 +0,0 @@ -package gudusoft.gsqlparser.scriptWriterTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testSnowflake extends TestCase -{ - public void testCreateTableBeforeSelect( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvsnowflake); - sqlparser.sqltext = "select a.PayerCD, a.ClaimID, a.MemberID, a.PreviousDate\n" + - "from Claims as a\n" + - "order by a.PreviousDate NULLS FIRST"; - - sqlparser.parse( ); - - // System.out.println(sqlparser.sqlstatements.get(1).toScript()); - assertTrue(testScriptGenerator.verifyScript(EDbVendor.dbvsnowflake, sqlparser.sqlstatements.get(0).toString(), sqlparser.sqlstatements.get(0).toScript())); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testTimeStampExpr.java b/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testTimeStampExpr.java deleted file mode 100644 index 90dd2cf8..00000000 --- a/src/test/java/gudusoft/gsqlparser/scriptWriterTest/testTimeStampExpr.java +++ /dev/null @@ -1,77 +0,0 @@ -package gudusoft.gsqlparser.scriptWriterTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testTimeStampExpr extends TestCase { - public void test1( ) { - String sql = "select DATE (TIMESTAMP (concat (add_months (t1.deprn_start_date,(CAST(t1.life_in_months AS INT))),substr (TIMESTAMP (t1.deprn_start_date),11)))) AS deprn_end_date from tablea t1"; - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvdatabricks); - sqlParser.sqltext = sql; - int ret = sqlParser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); - String finalSql = select.toScript(); - finalSql = finalSql.replaceAll("\r?\n", "").replaceAll(" ", "").toUpperCase(); - sql = sql.replaceAll("\r?\n", "").replaceAll(" ", "").toUpperCase(); - //System.out.println(sql); - //System.out.println(finalSql); - assertTrue(finalSql.equals(sql)); - } - - public void test2( ) { - String sql = "select * from tablea t6 where t6.date_effective <= CAST(TIMESTAMP (concat(last_day(CAST(concat(concat(concat('2022','-'),'11'),'-01') AS DATE)),substr(TIMESTAMP (CAST(concat(concat(concat('2022','-'),'11'),'-01') AS DATE)),11))) AS TIMESTAMP)"; - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvdatabricks); - sqlParser.sqltext = sql; - int ret = sqlParser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); - String finalSql = select.toScript(); - finalSql = finalSql.replaceAll("\r?\n", "").replaceAll(" ", "").toUpperCase(); - sql = sql.replaceAll("\r?\n", "").replaceAll(" ", "").toUpperCase(); - assertTrue(finalSql.equals(sql)); - } - - public void test3( ) { - String sql = "select * from tablea t8 where t8.date_retired <= TIMESTAMP (concat(last_day(CAST(concat(concat(concat('2022','-'),'11'),'-01') AS DATE)),substr(TIMESTAMP (CAST(concat(concat(concat('2022','-'),'11'),'-01') AS DATE)),11)))"; - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvdatabricks); - sqlParser.sqltext = sql; - int ret = sqlParser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); - String finalSql = select.toScript(); - finalSql = finalSql.replaceAll("\r?\n", "").replaceAll(" ", "").toUpperCase(); - sql = sql.replaceAll("\r?\n", "").replaceAll(" ", "").toUpperCase(); - assertTrue(finalSql.equals(sql)); - } - - public void test5( ) { - String sql = "select * from tablea t0 where t0.snapshot_date <= DATE (TIMESTAMP (concat (date_add (CAST (concat (concat (concat (concat ('2022','-'),'12'),'-'),'01') AS DATE), " + - "(CAST (60 AS INT))),substr (TIMESTAMP (CAST (concat (concat (concat (concat ('2022','-'),'12'),'-'),'01') AS DATE)),11))))"; - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvdatabricks); - sqlParser.sqltext = sql; - int ret = sqlParser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); - String finalSql = select.toScript(); - finalSql = finalSql.replaceAll("\r?\n", "").replaceAll(" ", "").toUpperCase(); - sql = sql.replaceAll("\r?\n", "").replaceAll(" ", "").toUpperCase(); - assertTrue(finalSql.equals(sql)); - } - - public void test6( ) { - String sql = "select * from tablea t0 , tableb t1 where t1.id=t0.id and from_unixtime (unix_timestamp (DATE (TIMESTAMP (concat (date_add (t0.snapshot_date, (CAST (-1 AS INT))),substr (TIMESTAMP (t0.snapshot_date),11))))),'yyyy-MM-dd') = SUBSTR (from_unixtime (unix_timestamp (t1.period_close_date),'yyyy-MM-dd HH:mm:ss.SSS000000'),0 +1,10 - (0))"; - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvdatabricks); - sqlParser.sqltext = sql; - int ret = sqlParser.parse(); - assertTrue(ret == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlParser.sqlstatements.get(0); - String finalSql = select.toScript(); - finalSql = finalSql.replaceAll("\r?\n", "").replaceAll(" ", "").toUpperCase(); - sql = sql.replaceAll("\r?\n", "").replaceAll(" ", "").toUpperCase(); - assertTrue(finalSql.equals(sql)); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/singletonThreadTest/testSingletonThread.java b/src/test/java/gudusoft/gsqlparser/singletonThreadTest/testSingletonThread.java deleted file mode 100644 index 09ed153f..00000000 --- a/src/test/java/gudusoft/gsqlparser/singletonThreadTest/testSingletonThread.java +++ /dev/null @@ -1,87 +0,0 @@ -package gudusoft.gsqlparser.singletonThreadTest; - -import gudusoft.gsqlparser.EDbObjectType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TObjectName; -import junit.framework.TestCase; - -class Thread1 extends Thread{ - - public void run(){ - TObjectName table1 = TObjectName.createObjectName (EDbVendor.dbvoracle, EDbObjectType.table); - for(int i=0;i<100;i++){ - table1.setString("scott.emp"+i); - //System.out.println (Thread.currentThread().getName()+": "+ i); - } - } -} - -class Thread2 extends Thread{ - - public void run(){ - for(int i=0;i<100;i++){ - String condition = "scott.dept >"+i; - TExpression expr = TGSqlParser.parseExpression(EDbVendor.dbvoracle,condition); - // System.out.println (Thread.currentThread().getName()+": "+ expr.toString()); - if (i % 5 == 0){ - try{ - Thread.currentThread().sleep(10); - }catch (InterruptedException e){ - - } - } - - } - } -} - - -public class testSingletonThread extends TestCase { - - public void test1(){ - Thread1 t1 = new Thread1(); - t1.setName("t1"); - t1.start(); - - Thread2 t2 = new Thread2(); - t2.setName("t2"); - t2.start(); - - for(int i=0;i<100;i++){ - TObjectName table1 = TObjectName.createObjectName (EDbVendor.dbvoracle, EDbObjectType.table); - String newName = "scott.emp"+i; - table1.setString(newName); - // System.out.println (Thread.currentThread().getName()+": "+ i); - assertTrue(table1.toString().equalsIgnoreCase(newName)); - } - } - - public void test2(){ - Thread1 t1 = new Thread1(); - t1.setName("t1"); - t1.start(); - - Thread2 t2 = new Thread2(); - t2.setName("t2"); - t2.start(); - - for(int i=0;i<100;i++){ - String condition = "scott.emp >"+i; - TExpression expr = TGSqlParser.parseExpression(EDbVendor.dbvoracle,condition); - assertTrue(expr.toString().equalsIgnoreCase(condition)); - // System.out.println (Thread.currentThread().getName()+": "+ expr.toString()); - if (i % 5 == 0){ - try{ - Thread.currentThread().sleep(10); - }catch (InterruptedException e){ - - } - } - } - } - - -} - diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/TestAlterTable.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/TestAlterTable.java deleted file mode 100644 index ba361b01..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/TestAlterTable.java +++ /dev/null @@ -1,49 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TAlterTableOption; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import junit.framework.TestCase; - -public class TestAlterTable extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "ALTER TABLE t ADD COLUMN\n" + - " c1 number,\n" + - " c2 number;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.AddColumn); - assertTrue(alterTableOption.getColumnDefinitionList().size() == 2); - TColumnDefinition columnDefinition = alterTableOption.getColumnDefinitionList().getColumn(1); - assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("c2")); - assertTrue(columnDefinition.getDatatype().getDataType() == EDataType.number_t); - } - - public void testRenameTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "alter table t2 rename to t3;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.RenameTable); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("t2")); - assertTrue(alterTableOption.getNewTableName().toString().equalsIgnoreCase("t3")); - } - - public void testSwapTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "alter table t2 swap with t3;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.swapWith); - assertTrue(alterTable.getTableName().toString().equalsIgnoreCase("t2")); - assertTrue(alterTableOption.getNewTableName().toString().equalsIgnoreCase("t3")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/TestCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/TestCreateProcedure.java deleted file mode 100644 index d25a33f8..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/TestCreateProcedure.java +++ /dev/null @@ -1,183 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import junit.framework.TestCase; - -public class TestCreateProcedure extends TestCase { - - public void testPlSQL3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE EDM_REFINED_DEV.DW_APPL.sp_GetLData_Hcm_Hires()\n" + - "RETURNS STRING\n" + - "language sql\n" + - "as\n" + - "$$\n" + - "----Create Stage\n" + - "CREATE OR REPLACE STAGE EDM_REFINED_DEV.DW_APPL.HCM_LD_FILE_STAGE\n" + - " storage_integration = STORAGE_absitdsdevwusseddw001\n" + - " url = 'itds-dev-direct-feeds/COE_Diversity/DataIn/'\n" + - " file_format = (type = 'CSV');\n" + - "----Create Stream\n" + - "CREATE OR REPLACE STREAM DM_EAGLE.\"PUBLIC\".EMPLOYEES_STREAM ON\n" + - "TABLE DM_EAGLE.\"PUBLIC\".EMPLOYEES;\n" + - "----Create Pipe\n" + - "CREATE OR REPLACE PIPE database.schema.mypipe as COPY INTO DM_PRODUCT.PUBLIC.PRODUCT_SALES\n" + - "FROM @DM_PRODUCT.PUBLIC.my_ext_stage/tutorials/dataloading/sales.json;\n" + - "SELECT * FROM selectTable;\n" + - "$$;"; - //System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("EDM_REFINED_DEV.DW_APPL.sp_GetLData_Hcm_Hires")); - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("sql")); - assertTrue(createProcedure.getBodyStatements().size() == 4); - - } - - public void testPlSQL1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE COVID19.\"PUBLIC\".INSERT_CDC_DATA()\n" + - "RETURNS NUMBER(38,0)\n" + - "LANGUAGE SQL\n" + - "STRICT\n" + - "EXECUTE AS OWNER\n" + - "AS '\n" + - "insert into COVID19.PUBLIC.CDC_INPATIENT_BEDS_ALL (STATE, DATE, ISO3166_1, LAST_REPORTED_FLAG)\n" + - "values (''A'',\n" + - " ''2021-01-01 00:00:00 +0000'',\n" + - " ''C'',\n" + - " true);\n" + - "';"; - //System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("COVID19.\"PUBLIC\".INSERT_CDC_DATA")); - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("sql")); - assertTrue(createProcedure.getBodyStatements().size() == 1); - assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstinsert); - } - - public void testPlSQL2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE PROCEDURE COVID19.\"PUBLIC\".INSERT_CDC_DATA()\n" + - "RETURNS NUMBER(38,0)\n" + - "LANGUAGE SQL\n" + - "STRICT\n" + - "EXECUTE AS OWNER\n" + - "AS $$\n" + - "insert into COVID19.PUBLIC.CDC_INPATIENT_BEDS_ALL (STATE, DATE, ISO3166_1, LAST_REPORTED_FLAG)\n" + - "values ('A',\n" + - " '2021-01-01 00:00:00 +0000',\n" + - " 'C',\n" + - " true);\n" + - "$$;"; - //System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("COVID19.\"PUBLIC\".INSERT_CDC_DATA")); - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("sql")); - assertTrue(createProcedure.getBodyStatements().size() == 1); - assertTrue(createProcedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstinsert); - } - - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE or replace PROCEDURE proc3()\n" + - " RETURNS VARCHAR\n" + - " LANGUAGE javascript\n" + - " AS\n" + - " $$\n" + - " var rs = snowflake.execute( { sqlText:\n" + - " `INSERT INTO table1 (\"column 1\")\n" + - " SELECT 'value 1' AS \"column 1\" ;`\n" + - " } );\n" + - " return 'Done.';\n" + - " $$;\n" + - " ;"; - // System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("proc3")); - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("javascript")); - assertTrue(createProcedure.getRoutineBody().equalsIgnoreCase("$$\n" + - " var rs = snowflake.execute( { sqlText:\n" + - " `INSERT INTO table1 (\"column 1\")\n" + - " SELECT 'value 1' AS \"column 1\" ;`\n" + - " } );\n" + - " return 'Done.';\n" + - " $$")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace procedure get_row_count(table_name VARCHAR)\n" + - " returns float not null\n" + - " language javascript\n" + - " as\n" + - " $$\n" + - " var row_count = 0;\n" + - " // Dynamically compose the SQL statement to execute.\n" + - " var sql_command = \"select count(*) from \" + TABLE_NAME;\n" + - " // Run the statement.\n" + - " var stmt = snowflake.createStatement(\n" + - " {\n" + - " sqlText: sql_command\n" + - " }\n" + - " );\n" + - " var res = stmt.execute();\n" + - " // Get back the row count. Specifically, ...\n" + - " // ... get the first (and in this case only) row from the result set ...\n" + - " res.next();\n" + - " // ... and then get the returned value, which in this case is the number of\n" + - " // rows in the table.\n" + - " row_count = res.getColumnValue(1);\n" + - " return row_count;\n" + - " $$\n" + - " ;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreateprocedure); - TCreateProcedureStmt createProcedure = (TCreateProcedureStmt)sqlStatement; - assertTrue(createProcedure.getProcedureName().toString().equalsIgnoreCase("get_row_count")); - assertTrue(createProcedure.getParameterDeclarations().getParameterDeclarationItem(0).getParameterName().toString().equalsIgnoreCase("table_name")); - assertTrue(createProcedure.getRoutineLanguage().equalsIgnoreCase("javascript")); - assertTrue(createProcedure.getRoutineBody().equalsIgnoreCase("$$\n" + - " var row_count = 0;\n" + - " // Dynamically compose the SQL statement to execute.\n" + - " var sql_command = \"select count(*) from \" + TABLE_NAME;\n" + - " // Run the statement.\n" + - " var stmt = snowflake.createStatement(\n" + - " {\n" + - " sqlText: sql_command\n" + - " }\n" + - " );\n" + - " var res = stmt.execute();\n" + - " // Get back the row count. Specifically, ...\n" + - " // ... get the first (and in this case only) row from the result set ...\n" + - " res.next();\n" + - " // ... and then get the returned value, which in this case is the number of\n" + - " // rows in the table.\n" + - " row_count = res.getColumnValue(1);\n" + - " return row_count;\n" + - " $$")); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterSchema.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterSchema.java deleted file mode 100644 index b1d0ac3c..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterSchema.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAlterSchemaStmt; -import junit.framework.TestCase; - -public class testAlterSchema extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "ALTER SCHEMA IF EXISTS something3 SWAP WITH something;"; - assertTrue(sqlparser.parse() == 0); - - TAlterSchemaStmt alterSchemaStmt = (TAlterSchemaStmt)sqlparser.sqlstatements.get(0); - assertTrue(alterSchemaStmt.getAlterType() == TAlterSchemaStmt.AlterType.swapWith); - assertTrue(alterSchemaStmt.getSchemaName().toString().equalsIgnoreCase("something3")); - assertTrue(alterSchemaStmt.getNewSchemaName().toString().equalsIgnoreCase("something")); - } -} - diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterTask.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterTask.java deleted file mode 100644 index 7046ec5b..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testAlterTask.java +++ /dev/null @@ -1,18 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.snowflake.TAlterTaskStmt; -import junit.framework.TestCase; - -public class testAlterTask extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "ALTER TASK B RESUME;"; - assertTrue(sqlparser.parse() == 0); - - TAlterTaskStmt alterTask = (TAlterTaskStmt)sqlparser.sqlstatements.get(0); - assertTrue(alterTask.getTaskName().toString().equalsIgnoreCase("B")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCall.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCall.java deleted file mode 100644 index c87a5363..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCall.java +++ /dev/null @@ -1,21 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCallStatement; -import junit.framework.TestCase; - -public class testCall extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CALL stproc1(SELECT COUNT(*) FROM stproc_test_table1);"; - assertTrue(sqlparser.parse() == 0); - - TCallStatement callStatement = (TCallStatement)sqlparser.sqlstatements.get(0); -// System.out.println(callStatement.getArgs().size()); - assertTrue(callStatement.getArgs().size() == 1); - assertTrue(callStatement.getArgs().getExpression(0).getExpressionType() == EExpressionType.subquery_t); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testClusterBy.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testClusterBy.java deleted file mode 100644 index 541a20bd..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testClusterBy.java +++ /dev/null @@ -1,40 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testClusterBy extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE TABLE sfdb.scenrdb.transactions_master2 \n" + - " ( trans_mstr_sid integer , trans_qty integer ,trans_amount integer ,customer_sid integer ,transaction_type_sid integer ,addr_mstr_sid integer ,trans_cid integer ) \n" + - " cluster by ( trans_mstr_sid , trans_qty );"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TCreateTableOption tableOption = createTableSqlStatement.getTableOptions().get(0); - assertTrue(tableOption.getCreateTableOptionType() == ECreateTableOption.etoClusterBy); - TExpressionList expressionList = tableOption.getExpressionList(); - assertTrue(expressionList.getExpression(0).toString().equalsIgnoreCase("trans_mstr_sid")); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE TABLE sfdb.scenrdb.transactions_master2 \n" + - " ( trans_mstr_sid integer , trans_qty integer ,trans_amount integer ,customer_sid integer ,transaction_type_sid integer ,addr_mstr_sid integer ,trans_cid integer ) \n" + - " cluster by ( to_date(trans_mstr_sid ) , substring(trans_qty,0,10) )"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TCreateTableOption tableOption = createTableSqlStatement.getTableOptions().get(0); - assertTrue(tableOption.getCreateTableOptionType() == ECreateTableOption.etoClusterBy); - TExpressionList expressionList = tableOption.getExpressionList(); - -// new columnInClause().printColumns(expressionList.getExpression(0),createTableSqlStatement); -// new columnInClause().printColumns(expressionList.getExpression(1),createTableSqlStatement); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCopyInto.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCopyInto.java deleted file mode 100644 index f2a69943..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCopyInto.java +++ /dev/null @@ -1,148 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TStageLocation; -import gudusoft.gsqlparser.stmt.snowflake.TSnowflakeCopyIntoStmt; -import junit.framework.TestCase; - -public class testCopyInto extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into mycsvtable\n" + - " from @my_csv_stage/tutorials/dataloading/contacts1.csv\n" + - " on_error = 'skip_file';"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mycsvtable")); - TStageLocation stageLocation = copyIntoStmt.getStageLocation(); - assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalNamed); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("my_csv_stage")); - assertTrue(stageLocation.getPath().toString().equals("/tutorials/dataloading/contacts1.csv")); - // System.out.println(stageLocation.getPath()); - } - - public void testPattern(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into mycsvtable\n" + - " from @my_csv_stage/tutorials/dataloading/\n" + - " pattern='.*contacts[1-5].csv'\n" + - " on_error = 'skip_file';"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mycsvtable")); - TStageLocation stageLocation = copyIntoStmt.getStageLocation(); - assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalNamed); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("my_csv_stage")); - assertTrue(stageLocation.getPath().toString().equals("/tutorials/dataloading")); - assertTrue(copyIntoStmt.getRegex_pattern().equalsIgnoreCase("'.*contacts[1-5].csv'")); - } - - public void testFileFormat(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into mytable from @~/staged\n" + - "file_format = (format_name = 'mycsv');"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); - TStageLocation stageLocation = copyIntoStmt.getStageLocation(); - assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalUser); - //assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("~")); - assertTrue(stageLocation.getPath().toString().equals("/staged")); - assertTrue(copyIntoStmt.getFileFormatName().equalsIgnoreCase("'mycsv'")); - } - - public void testFileFormatType(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into mytable from @~/staged\n" + - "file_format = (type = csv);"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); - assertTrue(copyIntoStmt.getFileFormatType().equalsIgnoreCase("csv")); - } - - public void testFromS3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into mytable\n" + - " from 's3://mybucket/data/files'\n" + - " storage_integration = myint\n" + - " encryption=(master_key = 'eSxX0jzYfIamtnBKOEOwq80Au6NbSgPH5r4BDDwOaO8=')\n" + - " file_format = (format_name = my_csv_format);"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); - - TStageLocation stageLocation = copyIntoStmt.getStageLocation(); - assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.location); - - - assertTrue(copyIntoStmt.getStageLocation().getExternalLocation().toString().equalsIgnoreCase("'s3://mybucket/data/files'")); - assertTrue(copyIntoStmt.getFileFormatName().equalsIgnoreCase("my_csv_format")); - } - - public void testFromFiles(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into load1 from @%load1/data1/\n" + - " files=('test1.csv', 'test2.csv')\n" + - " force=true;"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_TABLE); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("load1")); - TStageLocation stageLocation = copyIntoStmt.getStageLocation(); - assertTrue(stageLocation.getStageLocationType() == TStageLocation.EStageLocationType.internalTable); - - assertTrue(copyIntoStmt.getStageLocation().getTableName().toString().equalsIgnoreCase("load1")); - assertTrue(copyIntoStmt.getStageLocation().getPath().toString().equalsIgnoreCase("/data1")); - assertTrue(copyIntoStmt.getFileList().size()==2); - assertTrue(copyIntoStmt.getFileList().get(0).equalsIgnoreCase("'test1.csv'")); - assertTrue(copyIntoStmt.getFileList().get(1).equalsIgnoreCase("'test2.csv'")); - } - - public void testIntoLocation(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into 's3://mybucket/unload/'\n" + - " from mytable\n" + - " credentials = (aws_key_id='xxxx' aws_secret_key='xxxxx' aws_token='xxxxxx')\n" + - " file_format = (format_name = my_csv_format);"; - assertTrue(sqlparser.parse() == 0); - - TSnowflakeCopyIntoStmt copyIntoStmt = (TSnowflakeCopyIntoStmt)sqlparser.sqlstatements.get(0); - assertTrue(copyIntoStmt.getCopyIntoType() == TSnowflakeCopyIntoStmt.COPY_INTO_LOCATION); - assertTrue(copyIntoStmt.getTableName().toString().equalsIgnoreCase("mytable")); - assertTrue(copyIntoStmt.getStageLocation().getExternalLocation().toString().equalsIgnoreCase("'s3://mybucket/unload/'")); - } - - public void testStage(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "copy into \"IT\".\"SHARED_SOURCE\".\"AWS_S3_IT_SHARED_SOURCE_SOURCE_JIRA_RISK\"\n" + - "from\n" + - " (\n" + - " SELECT\n" + - " $1 AS RAW,\n" + - " METADATA$FILENAME AS FILE_NAME,\n" + - " CURRENT_TIMESTAMP() AS ETL_LOAD_TIMESTAMP,\n" + - " METADATA$FILE_LAST_MODIFIED AS S3_ARRIVAL_TIMESTAMP\n" + - " FROM\n" + - " @ \"IT\".\"SHARED_SOURCE\".\"AWS_S3_IT_SHARED_SOURCE_SOURCE_JIRA_RISK\" /\n" + - " ) file_format = (TYPE = JSON COMPRESSION = NONE) pattern = '.*.json'"; - assertTrue(sqlparser.parse() == 0); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateExternalTable.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateExternalTable.java deleted file mode 100644 index 509012dc..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateExternalTable.java +++ /dev/null @@ -1,128 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TStageLocation; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateExternalTable extends TestCase { - - public void testAmazonS3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace external table ext_twitter_feed\n" + - " with location = @mystage/daily/\n" + - " auto_refresh = true\n" + - " file_format = (type = parquet)\n" + - " pattern='.*sales.*[.]parquet';"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("ext_twitter_feed")); - TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("mystage")); - assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("daily")); - assertTrue(createTableSqlStatement.getRegex_pattern().equalsIgnoreCase("'.*sales.*[.]parquet'")); - assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); - // System.out.println(stageLocation.getStageName().toString()); - } - - public void testMicrosoftAzure(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace external table ext_twitter_feed\n" + - " integration = 'MY_AZURE_INT'\n" + - " with location = @mystage/daily/\n" + - " auto_refresh = true\n" + - " file_format = (type = parquet)\n" + - " pattern='.*sales.*[.]parquet';"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("ext_twitter_feed")); - TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("mystage")); - assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("daily")); - assertTrue(createTableSqlStatement.getRegex_pattern().equalsIgnoreCase("'.*sales.*[.]parquet'")); - assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); - // System.out.println(stageLocation.getStageName().toString()); - } - - public void testAmazonS3partitionedTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create external table exttable_part(\n" + - " date_part date as to_date(split_part(metadata$filename, '/', 3)\n" + - " || '/' || split_part(metadata$filename, '/', 4)\n" + - " || '/' || split_part(metadata$filename, '/', 5), 'YYYY/MM/DD'),\n" + - " timestamp bigint as (value:timestamp::bigint),\n" + - " col2 varchar as (value:col2::varchar))\n" + - " partition by (date_part)\n" + - " location=@exttable_part_stage/logs/\n" + - " auto_refresh = true\n" + - " file_format = (type = parquet);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("exttable_part")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(0).getColumnName().toString().equalsIgnoreCase("date_part")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(1).getColumnName().toString().equalsIgnoreCase("timestamp")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(2).getColumnName().toString().equalsIgnoreCase("col2")); - TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("exttable_part_stage")); - assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("logs")); - assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); - assertTrue(createTableSqlStatement.getPartitionColumnList().getObjectName(0).toString().equalsIgnoreCase("date_part")); - // System.out.println(stageLocation.getStageName().toString()); - } - - public void testMicrosoftAzurepartitionedTable(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create external table exttable_part(\n" + - " date_part date as to_date(split_part(metadata$filename, '/', 3)\n" + - " || '/' || split_part(metadata$filename, '/', 4)\n" + - " || '/' || split_part(metadata$filename, '/', 5), 'YYYY/MM/DD'),\n" + - " timestamp bigint as (value:timestamp::bigint),\n" + - " col2 varchar as (value:col2::varchar))\n" + - " partition by (date_part)\n" + - " integration = 'MY_INT'\n" + - " location=@exttable_part_stage/logs/\n" + - " auto_refresh = true\n" + - " file_format = (type = parquet);"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("exttable_part")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(0).getColumnName().toString().equalsIgnoreCase("date_part")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(1).getColumnName().toString().equalsIgnoreCase("timestamp")); - assertTrue(createTableSqlStatement.getColumnList().getColumn(2).getColumnName().toString().equalsIgnoreCase("col2")); - TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("exttable_part_stage")); - assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("logs")); - assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("parquet")); - assertTrue(createTableSqlStatement.getPartitionColumnList().getObjectName(0).toString().equalsIgnoreCase("date_part")); - // System.out.println(stageLocation.getStageName().toString()); - } - - public void testAWSJson(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace external table ext_table\n" + - " with location = @mystage/path1/\n" + - " file_format = (type = json)\n" + - " aws_sns_topic = 'arn:aws:sns:us-west-2:001234567890:s3_mybucket';"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTableSqlStatement.isExternal()); - assertTrue(createTableSqlStatement.getTableName().toString().equalsIgnoreCase("ext_table")); - TStageLocation stageLocation = createTableSqlStatement.getStageLocation(); - assertTrue(stageLocation.getStageName().toString().equalsIgnoreCase("mystage")); - assertTrue(stageLocation.getPath().getPathList().getObjectName(0).toString().equalsIgnoreCase("path1")); - assertTrue(createTableSqlStatement.getFileFormatType().equalsIgnoreCase("json")); - assertTrue(createTableSqlStatement.getAwsSnsTopic().equalsIgnoreCase("'arn:aws:sns:us-west-2:001234567890:s3_mybucket'")); - // System.out.println(stageLocation.getStageName().toString()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFileFormat.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFileFormat.java deleted file mode 100644 index 0fd82fea..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFileFormat.java +++ /dev/null @@ -1,37 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.snowflake.TCreateFileFormatStmt; -import junit.framework.TestCase; - -public class testCreateFileFormat extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE FILE FORMAT IF NOT EXISTS TestFormat11\n" + - "TYPE = CSV\n" + - "FIELD_DELIMITER = 'c';"; - assertTrue(sqlparser.parse() == 0); - - TCreateFileFormatStmt createFileFormatStmt = (TCreateFileFormatStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFileFormatStmt.getFileFormatName().toString().equalsIgnoreCase("TestFormat11")); - assertTrue(createFileFormatStmt.getFormatOptions().toString().trim().equalsIgnoreCase("TYPE = CSV\n" + - "FIELD_DELIMITER = 'c'")); - assertTrue(createFileFormatStmt.getTypeName().equalsIgnoreCase("CSV")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE FILE FORMAT IF NOT EXISTS TestFormat\n" + - "TYPE = CSV\n" + - "COMMENT = 'Test comment';"; - assertTrue(sqlparser.parse() == 0); - - TCreateFileFormatStmt createFileFormatStmt = (TCreateFileFormatStmt)sqlparser.sqlstatements.get(0); - assertTrue(createFileFormatStmt.getFileFormatName().toString().equalsIgnoreCase("TestFormat")); - assertTrue(createFileFormatStmt.getFormatOptions().toString().trim().equalsIgnoreCase("TYPE = CSV\n" + - "COMMENT = 'Test comment'")); - //System.out.println(createFileFormatStmt.getFormatOptions().toString().trim()); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFunction.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFunction.java deleted file mode 100644 index cd7fbb9e..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateFunction.java +++ /dev/null @@ -1,154 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.stmt.TCreateFunctionStmt; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.snowflake.TPseudoExprStmt; -import junit.framework.TestCase; - - -public class testCreateFunction extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE or replace FUNCTION function1() RETURNS \n" + - "TABLE (SERIAL_NUM nvarchar, STATUS_CD nvarchar) \n" + - "AS \n" + - "'select SERIAL_NUM, STATUS_CD from s_asset';"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - assertTrue(createFunction.getFunctionDefinition().toString().equalsIgnoreCase("'select SERIAL_NUM, STATUS_CD from s_asset'")); - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("s_asset")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create function profit()\n" + - " returns numeric(11, 2)\n" + - " as\n" + - " $$\n" + - " select sum((retail_price - wholesale_price) * number_sold) from purchases\n" + - " $$\n" + - " ;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("purchases")); - } - - - public void testBodyExpr(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create function pi_udf()\n" + - " returns float\n" + - " as '3.141592654::FLOAT'\n" + - " ;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstSnowflakePseudoExprStmt); - TPseudoExprStmt exprStmt = (TPseudoExprStmt)createFunction.getBodyStatements().get(0); - assertTrue(exprStmt.getExpr().toString().equalsIgnoreCase("3.141592654::FLOAT")); - assertTrue(exprStmt.getExpr().getExpressionType() == EExpressionType.typecast_t); - - } - - public void testJavascript(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace function js_factorial(d double)\n" + - " returns double\n" + - " language javascript\n" + - " strict\n" + - " as '\n" + - " if (D <= 0) {\n" + - " return 1;\n" + - " } else {\n" + - " var result = 1;\n" + - " for (var i = 2; i <= D; i++) {\n" + - " result = result * i;\n" + - " }\n" + - " return result;\n" + - " }\n" + - " ';" + - " ;"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - assertTrue(createFunction.getFunctionName().toString().equalsIgnoreCase("js_factorial")); - assertTrue(createFunction.getRoutineLanguage().equalsIgnoreCase("javascript")); - assertTrue(createFunction.getRoutineBody().equalsIgnoreCase("'\n" + - " if (D <= 0) {\n" + - " return 1;\n" + - " } else {\n" + - " var result = 1;\n" + - " for (var i = 2; i <= D; i++) {\n" + - " result = result * i;\n" + - " }\n" + - " return result;\n" + - " }\n" + - " '")); - - } - - public void testUnion(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create function simple_table_function ()\n" + - " returns table (x integer, y integer)\n" + - " as\n" + - " $$\n" + - " select 1, 2\n" + - " union all\n" + - " select 3, 4\n" + - " $$\n" + - " ;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - assertTrue(selectSqlStatement.getSetOperatorType() == ESetOperatorType.union); - // assertTrue(selectSqlStatement.getTables().getTable(0).toString().equalsIgnoreCase("purchases")); - } - - public void testLanguageSQL(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE\n" + - "FUNCTION UTIL_DB.PUBLIC.SFWHO() RETURNS TABLE (TS TIMESTAMP_LTZ(9), ACCOUNT VARCHAR(16777216)\n" + - "\t, USER VARCHAR(16777216), ROLE VARCHAR(16777216), DATABASE VARCHAR(16777216), SCHEMA VARCHAR(16777216), WAREHOUSE VARCHAR(16777216)) LANGUAGE SQL AS 'select\n" + - " current_timestamp(),\n" + - " current_account(),\n" + - " current_user(),\n" + - " current_role(),\n" + - " current_database(),\n" + - " current_schema(),\n" + - " current_warehouse()\n" + - " ';"; - assertTrue(sqlparser.parse() == 0); - TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0); - assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction); - TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement; - - assertTrue(createFunction.getBodyStatements().size() == 1); - assertTrue(createFunction.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)createFunction.getBodyStatements().get(0); - assertTrue(selectSqlStatement.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("current_timestamp()")); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateMaterializeView.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateMaterializeView.java deleted file mode 100644 index 3ac94ee3..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateMaterializeView.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateMaterializedSqlStatement; -import junit.framework.TestCase; - -public class testCreateMaterializeView extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create materialized view exttable_part_mv\n" + - " as\n" + - " select col2 from exttable_part;"; - assertTrue(sqlparser.parse() == 0); - - TCreateMaterializedSqlStatement createMaterializedSqlStatement = (TCreateMaterializedSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createMaterializedSqlStatement.getViewName().toString().equalsIgnoreCase("exttable_part_mv")); - assertTrue(createMaterializedSqlStatement.getSubquery().getTables().getTable(0).toString().equalsIgnoreCase("exttable_part")); - // System.out.println(stageLocation.getStageName().toString()); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStage.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStage.java deleted file mode 100644 index 769303eb..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStage.java +++ /dev/null @@ -1,100 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.snowflake.TCreateStageStmt; -import junit.framework.TestCase; - -public class testCreateStage extends TestCase { - - public void testQualified(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage STAGING.stage_07020728_MOCK_DATA_2"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageNameOnly().equalsIgnoreCase("stage_07020728_MOCK_DATA_2")); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("STAGING.stage_07020728_MOCK_DATA_2")); - assertTrue(createStageStmt.getNameSpace().toString().equalsIgnoreCase("STAGING")); - assertTrue(createStageStmt.getNameSpace().getSchemaToken().toString().equalsIgnoreCase("STAGING")); - } - - public void testQualified2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage DATAMAX_ETL.STAGING.stage_07020728_MOCK_DATA_2"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageNameOnly().equalsIgnoreCase("stage_07020728_MOCK_DATA_2")); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("DATAMAX_ETL.STAGING.stage_07020728_MOCK_DATA_2")); - assertTrue(createStageStmt.getNameSpace().toString().equalsIgnoreCase("DATAMAX_ETL.STAGING")); - assertTrue(createStageStmt.getNameSpace().getDatabaseToken().toString().equalsIgnoreCase("DATAMAX_ETL")); - assertTrue(createStageStmt.getNameSpace().getSchemaToken().toString().equalsIgnoreCase("STAGING")); - } - - public void testAmazonS3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage my_int_stage\n" + - " copy_options = (on_error='skip_file');"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_int_stage")); - // System.out.println(stageLocation.getStageName().toString()); - } - - public void testGoogleCloud(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage my_ext_stage\n" + - " url='gcs://load/files/'\n" + - " storage_integration = myint;"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_ext_stage")); - assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'gcs://load/files/'")); - } - - public void testMicrosoftAzure(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage my_ext_stage\n" + - " url='azure://myaccount.blob.core.windows.net/load/files/'\n" + - " storage_integration = myint;"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_ext_stage")); - assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'azure://myaccount.blob.core.windows.net/load/files/'")); - } - - public void testMicrosoftAzureFileFormat(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage mystage\n" + - " url='azure://myaccount.blob.core.windows.net/mycontainer/files/'\n" + - " credentials=(azure_sas_token='?sv=2016-05-31&ss=b&srt=sco&sp=rwdl&se=2018-06-27T10:05:50Z&st=2017-06-27T02:05:50Z&spr=https,http&sig=bgqQwoXwxzuD2GJfagRg7VOS8hzNr3QLT7rhS8OFRLQ%3D')\n" + - " encryption=(type='AZURE_CSE' master_key = 'kPxX0jzYfIamtnJEUTHwq80Au6NbSgPH5r4BDDwOaO8=')\n" + - " file_format = ( FORMAT_NAME = my_csv_format);"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("mystage")); - assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'azure://myaccount.blob.core.windows.net/mycontainer/files/'")); - assertTrue(createStageStmt.getFileFormatName().equalsIgnoreCase("my_csv_format")); - } - - - public void testAmazonS3FileFormat(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace stage my_csv_stage\n" + - " file_format = mycsvformat\n" + - " url = 's3://snowflake-docs';"; - assertTrue(sqlparser.parse() == 0); - - TCreateStageStmt createStageStmt = (TCreateStageStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStageStmt.getStageName().toString().equalsIgnoreCase("my_csv_stage")); - assertTrue(createStageStmt.getExternalStageURL().equalsIgnoreCase("'s3://snowflake-docs'")); - assertTrue(createStageStmt.getFileFormatName().equalsIgnoreCase("mycsvformat")); - // System.out.println(stageLocation.getStageName().toString()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStream.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStream.java deleted file mode 100644 index 9baca15f..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateStream.java +++ /dev/null @@ -1,30 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.snowflake.TCreateStreamStmt; -import junit.framework.TestCase; - -public class testCreateStream extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create stream mystream on table mytable before (timestamp => to_timestamp(40*365*86400));"; - assertTrue(sqlparser.parse() == 0); - - TCreateStreamStmt createStreamStmt = (TCreateStreamStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStreamStmt.getStreamName().toString().equalsIgnoreCase("mystream")); - assertTrue(createStreamStmt.getTableName().toString().equalsIgnoreCase("mytable")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create stream my_ext_table_stream on external table my_ext_table insert_only = true;"; - assertTrue(sqlparser.parse() == 0); - - TCreateStreamStmt createStreamStmt = (TCreateStreamStmt)sqlparser.sqlstatements.get(0); - assertTrue(createStreamStmt.getStreamName().toString().equalsIgnoreCase("my_ext_table_stream")); - assertTrue(createStreamStmt.getTableName().toString().equalsIgnoreCase("my_ext_table")); - } -} - diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateTask.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateTask.java deleted file mode 100644 index ed76f02d..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateTask.java +++ /dev/null @@ -1,105 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCallStatement; - -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.snowflake.TCreateTaskStmt; -import junit.framework.TestCase; - -public class testCreateTask extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE TASK EDM_REFINED_DEV.DW_APPL.Archive_HCM_TOTALEE_R_TASK\n" + - "WAREHOUSE = 'DEV_ENGINEER_WH'\n" + - "SCHEDULE = '1 MINUTE'\n" + - "WHEN\n" + - "SYSTEM$STREAM_HAS_DATA('EDM_REFINED_DEV.DW_APPL.HCM_TOTALEE_SNOWFLAKE_STREAM_R')\n" + - "AS\n" + - "call EDM_REFINED_DEV.DW_APPL.sp_ARCHIVE_HCM_TOTALEE();"; - - assertTrue(sqlparser.parse() == 0); - - TCreateTaskStmt createtaskStmt = (TCreateTaskStmt)sqlparser.sqlstatements.get(0); - - assertTrue(createtaskStmt.getTaskName().toString().equalsIgnoreCase("EDM_REFINED_DEV.DW_APPL.Archive_HCM_TOTALEE_R_TASK")); - assertTrue(createtaskStmt.getSqlStatement().sqlstatementtype == ESqlStatementType.sstcall); - TCallStatement callStatement = (TCallStatement) createtaskStmt.getSqlStatement(); - assertTrue(callStatement.getRoutineName().toString().equalsIgnoreCase("EDM_REFINED_DEV.DW_APPL.sp_ARCHIVE_HCM_TOTALEE")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE TASK t1\n" + - " SCHEDULE = 'USING CRON 0 9-17 * * SUN America/Los_Angeles'\n" + - " USER_TASK_MANAGED_INITIAL_WAREHOUSE_SIZE = 'XSMALL'\n" + - "AS\n" + - "SELECT CURRENT_TIMESTAMP;"; - assertTrue(sqlparser.parse() == 0); - - TCreateTaskStmt createtaskStmt = (TCreateTaskStmt)sqlparser.sqlstatements.get(0); - - assertTrue(createtaskStmt.getTaskName().toString().equalsIgnoreCase("t1")); - assertTrue(createtaskStmt.getSqlStatement().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement) createtaskStmt.getSqlStatement(); - assertTrue(selectSqlStatement.getResultColumnList().size() == 1); - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE TASK t1\n" + - " SCHEDULE = '60 MINUTE'\n" + - " TIMESTAMP_INPUT_FORMAT = 'YYYY-MM-DD HH24'\n" + - " USER_TASK_MANAGED_INITIAL_WAREHOUSE_SIZE = 'XSMALL'\n" + - "AS\n" + - "INSERT INTO mytable(ts) VALUES(CURRENT_TIMESTAMP);"; - - assertTrue(sqlparser.parse() == 0); - - TCreateTaskStmt createtaskStmt = (TCreateTaskStmt)sqlparser.sqlstatements.get(0); - - assertTrue(createtaskStmt.getTaskName().toString().equalsIgnoreCase("t1")); - assertTrue(createtaskStmt.getSqlStatement().sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insertSqlStatement = (TInsertSqlStatement) createtaskStmt.getSqlStatement(); - assertTrue(insertSqlStatement.getTargetTable().toString().equalsIgnoreCase("mytable")); - } - - public void test4(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE TASK DB.SCH.TASK_2\n" + - "WAREHOUSE=WH1\n" + - "AFTER TASK_1\n" + - "AS SELECT 1;"; - - assertTrue(sqlparser.parse() == 0); - - TCreateTaskStmt createtaskStmt = (TCreateTaskStmt)sqlparser.sqlstatements.get(0); - - assertTrue(createtaskStmt.getTaskName().toString().equalsIgnoreCase("DB.SCH.TASK_2")); - assertTrue(createtaskStmt.getTaskOptionList().get(1).getAfter().getObjectName(0).getObjectToken().toString().equalsIgnoreCase("TASK_1")); - - } - - public void test5(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE TASK DB.SCH.TASK_2\n" + - "WAREHOUSE=WH1\n" + - "AFTER DB1.SCH1.TASK_1\n" + - "AS SELECT 1;"; - - assertTrue(sqlparser.parse() == 0); - - TCreateTaskStmt createtaskStmt = (TCreateTaskStmt)sqlparser.sqlstatements.get(0); - - assertTrue(createtaskStmt.getTaskName().toString().equalsIgnoreCase("DB.SCH.TASK_2")); - assertTrue(createtaskStmt.getTaskOptionList().get(1).getAfter().getObjectName(0).getDatabaseToken().toString().equalsIgnoreCase("DB1")); - assertTrue(createtaskStmt.getTaskOptionList().get(1).getAfter().getObjectName(0).getSchemaToken().toString().equalsIgnoreCase("SCH1")); - assertTrue(createtaskStmt.getTaskOptionList().get(1).getAfter().getObjectName(0).getObjectToken().toString().equalsIgnoreCase("TASK_1")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateView.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateView.java deleted file mode 100644 index b75de2d1..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateView.java +++ /dev/null @@ -1,229 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TViewAliasItem; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import junit.framework.TestCase; - -public class testCreateView extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE OR REPLACE VIEW DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW\n" + - " AS\n" + - " SELECT \n" + - " UNCOLLATED_PHRASE,\n" + - " SUBSTRING(UNCOLLATED_PHRASE,1,2) AS substr_val,\n" + - " HASH(UTF8_PHRASE) AS hash_val,\n" + - " ENGLISH_PHRASE,\n" + - " SPANISH_PHRASE AS sp_phrase\n" + - " FROM COLLATION_DEMO;\n" + - "\n" + - "select\n" + - " t.table_catalog as dbName,\n" + - " t.table_schema as schemaName,\n" + - " t.table_name as tableName,\n" + - " case when t.table_type = 'VIEW' then 'true'\n" + - " when t.table_type = 'BASE TABLE' then 'false'\n" + - " else 'false'\n" + - " end as isView,\n" + - " c.column_name,\n" + - " c.data_type,\n" + - " null as comments\n" + - "from\n" + - " \"DEMO_DB\".information_schema.tables t,\n" + - " \"DEMO_DB\".information_schema.columns c\n" + - "where\n" + - " t.table_catalog = c.table_catalog\n" + - " and t.table_schema = c.table_schema\n" + - " and t.table_name = c.table_name\n" + - " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + - "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + - "\n" + - "use database \"DEMO_DB\" ;\n" + - "use database \"DEMO_DB\" ;\n" + - "USE DATABASE DEMO_DB ;\n" + - "SHOW SCHEMAS ;\n" + - "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + - "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + - "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + - "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + - "use database \"DEMO_DB\" ;\n" + - "select *\n" + - "from table(information_schema.query_history())\n" + - "order by start_time;\n" + - "create table collation_demo_qh (\n" + - " uncollated_phrase varchar, \n" + - " utf8_phrase varchar collate 'utf8',\n" + - " english_phrase varchar collate 'en',\n" + - " spanish_phrase varchar collate 'sp'\n" + - " );\n" + - "SELECT * FROM identifier('\"DEMO_DB\".\"PUBLIC\".\"COLLATION_DEMO_QH\"') LIMIT 100;\n" + - "INSERT INTO collation_demo_qh(uncollated_phrase,utf8_phrase,english_phrase,spanish_phrase)\n" + - "SELECT uncollated_phrase,substr_val,english_phrase,sp_phrase from collation_demo_view ;\n" + - "select\n" + - " t.table_catalog as dbName,\n" + - " t.table_schema as schemaName,\n" + - " t.table_name as tableName,\n" + - " case when t.table_type = 'VIEW' then 'true'\n" + - " when t.table_type = 'BASE TABLE' then 'false'\n" + - " else 'false'\n" + - " end as isView,\n" + - " c.column_name,\n" + - " c.data_type,\n" + - " null as comments\n" + - "from\n" + - " \"DEMO_DB\".information_schema.tables t,\n" + - " \"DEMO_DB\".information_schema.columns c\n" + - "where\n" + - " t.table_catalog = c.table_catalog\n" + - " and t.table_schema = c.table_schema\n" + - " and t.table_name = c.table_name\n" + - " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + - "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + - "\n" + - "use database \"DEMO_DB\" ;\n" + - "use database \"DEMO_DB\" ;\n" + - "USE DATABASE DEMO_DB ;\n" + - "SHOW SCHEMAS ;\n" + - "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + - "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + - "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + - "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + - "use database \"DEMO_DB\" ;\n" + - "select\n" + - " t.table_catalog as dbName,\n" + - " t.table_schema as schemaName,\n" + - " t.table_name as tableName,\n" + - " case when t.table_type = 'VIEW' then 'true'\n" + - " when t.table_type = 'BASE TABLE' then 'false'\n" + - " else 'false'\n" + - " end as isView,\n" + - " c.column_name,\n" + - " c.data_type,\n" + - " null as comments\n" + - "from\n" + - " \"DEMO_DB\".information_schema.tables t,\n" + - " \"DEMO_DB\".information_schema.columns c\n" + - "where\n" + - " t.table_catalog = c.table_catalog\n" + - " and t.table_schema = c.table_schema\n" + - " and t.table_name = c.table_name\n" + - " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + - "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + - "\n" + - "use database \"DEMO_DB\" ;\n" + - "use database \"DEMO_DB\" ;\n" + - "USE DATABASE DEMO_DB ;\n" + - "SHOW SCHEMAS ;\n" + - "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + - "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + - "SHOW PROCEDURESd IN DEMO_DB.PUBLIC ;\n" + - "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + - "use database \"DEMO_DB\" ;\n" + - "select *\n" + - "from table(information_schema.query_history())\n" + - "order by start_time;\n" + - "select *\n" + - "from table(information_schema.query_history())\n" + - "order by start_time desc;\n" + - "INSERT INTO collation_demo_qh(uncollated_phrase,utf8_phrase,english_phrase,spanish_phrase)\n" + - "SELECT uncollated_phrase,substr_val,english_phrase,sp_phrase from collation_demo_view ;\n" + - "select *\n" + - "from table(information_schema.query_history())\n" + - "order by start_time desc;\n" + - "select\n" + - " t.table_catalog as dbName,\n" + - " t.table_schema as schemaName,\n" + - " t.table_name as tableName,\n" + - " case when t.table_type = 'VIEW' then 'true'\n" + - " when t.table_type = 'BASE TABLE' then 'false'\n" + - " else 'false'\n" + - " end as isView,\n" + - " c.column_name,\n" + - " c.data_type,\n" + - " null as comments\n" + - "from\n" + - " \"DEMO_DB\".information_schema.tables t,\n" + - " \"DEMO_DB\".information_schema.columns c\n" + - "where\n" + - " t.table_catalog = c.table_catalog\n" + - " and t.table_schema = c.table_schema\n" + - " and t.table_name = c.table_name\n" + - " and upper(t.table_schema) not in ('INFORMATION_SCHEMA')\n" + - "order by t.table_catalog, t.table_schema, t.table_name, c.ordinal_position;\n" + - "\n" + - "use database \"DEMO_DB\" ;\n" + - "use database \"DEMO_DB\" ;\n" + - "USE DATABASE DEMO_DB ;\n" + - "SHOW SCHEMAS ;\n" + - "SHOW VIEWS IN DEMO_DB.PUBLIC ;\n" + - "SELECT GET_DDL('VIEW', 'DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW') ;\n" + - "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + - "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + - "use database \"DEMO_DB\" ;\n" + - "select *\n" + - "from table(information_schema.query_history())\n" + - "order by start_time desc;\n" + - "USE DATABASE DEMO_DB ;\n" + - "SHOW SCHEMAS ;\n" + - "SHOW PROCEDURES IN DEMO_DB.PUBLIC ;\n" + - "SHOW FUNCTIONS IN DEMO_DB.PUBLIC ;\n" + - "use database \"DEMO_DB\" ;"; - //assertTrue(sqlparser.parse() == 0); - sqlparser.parse(); - assertTrue(sqlparser.sqlstatements.size() == 55); - //System.out.println(sqlparser.sqlstatements.size()); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("DEMO_DB.PUBLIC.COLLATION_DEMO_VIEW")); -// assertTrue(createStreamStmt.getStreamName().toString().equalsIgnoreCase("mystream")); -// assertTrue(createStreamStmt.getTableName().toString().equalsIgnoreCase("mytable")); - } - - - public void test2Comment() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE VIEW defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V comment = 'COMMENT'\n" + - "AS ((select EMPLOYEE_ID,FULL_NAME,FIRST_NAME from defaultdatabase.SF_DML.trimmed_employee_SF_Testing))"; - sqlparser.parse(); - assertTrue(sqlparser.sqlstatements.size() == 1); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V")); - assertTrue(createViewSqlStatement.getComment().toString().equalsIgnoreCase("'COMMENT'")); - } - - public void test3Comment() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "CREATE VIEW defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V\n" + - "AS (select EMPLOYEE_ID,FULL_NAME,FIRST_NAME from defaultdatabase.SF_DML.trimmed_employee_SF_Testing) comment = 'COMMENT'"; - sqlparser.parse(); - assertTrue(sqlparser.sqlstatements.size() == 1); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V")); - assertTrue(createViewSqlStatement.getComment().toString().equalsIgnoreCase("'COMMENT'")); - } - - public void test4Comment() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace view defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V\n" + - "( ADMIN1 COMMENT 'COLUMN 1',\n" + - "ADMIN2 COMMENT 'COLUMN 2',\n" + - "ADMIN3 COMMENT 'COLUMN 3') COMMENT='COMMENT'\n" + - "as (select EMPLOYEE_ID,FULL_NAME,FIRST_NAME from defaultdatabase.SF_DML.trimmed_employee_SF_Testing);"; - sqlparser.parse(); - assertTrue(sqlparser.sqlstatements.size() == 1); - TCreateViewSqlStatement createViewSqlStatement = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createViewSqlStatement.getViewName().toString().equalsIgnoreCase("defaultdatabase.SF_DML.trimmed_employee_SF_Testing_V")); - assertTrue(createViewSqlStatement.getComment().toString().equalsIgnoreCase("'COMMENT'")); - - TViewAliasItem viewAliasItem = createViewSqlStatement.getViewAliasClause() - .getViewAliasItemList() - .getViewAliasItem(0); - assertTrue(viewAliasItem.getAlias().toString().equalsIgnoreCase("ADMIN1")); - assertTrue(viewAliasItem.getComment().toString().equalsIgnoreCase("'COLUMN 1'")); - } - -} - - diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateWarehouse.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateWarehouse.java deleted file mode 100644 index a81895de..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testCreateWarehouse.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.snowflake.TCreateWarehouseStmt; -import junit.framework.TestCase; - -public class testCreateWarehouse extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "create or replace warehouse mywarehouse with\n" + - " warehouse_size='X-SMALL'\n" + - " auto_suspend = 120\n" + - " auto_resume = true\n" + - " initially_suspended=true;"; - assertTrue(sqlparser.parse() == 0); - - TCreateWarehouseStmt createWarehouseStmt = (TCreateWarehouseStmt)sqlparser.sqlstatements.get(0); - assertTrue(createWarehouseStmt.getWarehouseName().toString().equalsIgnoreCase("mywarehouse")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testDesc.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testDesc.java deleted file mode 100644 index 375308e5..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testDesc.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - - -import gudusoft.gsqlparser.EDbObjectType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDescribeStmt; -import junit.framework.TestCase; - -public class testDesc extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "desc file format my_csv_format;"; - assertTrue(sqlparser.parse() == 0); - - TDescribeStmt describeStmt = (TDescribeStmt)sqlparser.sqlstatements.get(0); - assertTrue(describeStmt.getDbObjectType() == EDbObjectType.file_format); - assertTrue(describeStmt.getDbObjectName().toString().equalsIgnoreCase("my_csv_format")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testInsert.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testInsert.java deleted file mode 100644 index e1e60208..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testInsert.java +++ /dev/null @@ -1,262 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EInsertSource; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TInsertCondition; -import gudusoft.gsqlparser.nodes.TInsertIntoValue; -import gudusoft.gsqlparser.nodes.TMultiTarget; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testInsert extends TestCase { - public void testUnconditionalInsert(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "insert overwrite all\n" + - " into t1\n" + - " into t2 (c1, c2, c3) values (n2, n1, default)\n" + - " into t3 (c1, c2, c3)\n" + - " into t4 values (n3, n2, n1)\n" + - "select n1, n2, n3 from src;"; - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insertStmt = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insertStmt.getInsertSource() == EInsertSource.subquery); - assertTrue(insertStmt.getSubQuery().getTables().getTable(0).toString().equalsIgnoreCase("src")); - assertTrue(insertStmt.getInsertIntoValues().size() == 4); - TInsertIntoValue intoValue = insertStmt.getInsertIntoValues().getElement(0); - assertTrue(intoValue.getTable().getTableName().toString().equalsIgnoreCase("t1")); - intoValue = insertStmt.getInsertIntoValues().getElement(1); - assertTrue(intoValue.getTable().getTableName().toString().equalsIgnoreCase("t2")); - assertTrue(intoValue.getColumnList().size() == 3); - assertTrue(intoValue.getColumnList().getObjectName(0).toString().equalsIgnoreCase("c1")); - assertTrue(intoValue.getTargetList().size() == 1); - TMultiTarget multiTarget = intoValue.getTargetList().getMultiTarget(0); - assertTrue(multiTarget.getColumnList().size() == 3); - assertTrue(multiTarget.getColumnList().getResultColumn(0).toString().equalsIgnoreCase("n2")); - intoValue = insertStmt.getInsertIntoValues().getElement(3); - assertTrue(intoValue.getTable().getTableName().toString().equalsIgnoreCase("t4")); - assertTrue(intoValue.getTargetList().size() == 1); - multiTarget = intoValue.getTargetList().getMultiTarget(0); - assertTrue(multiTarget.getColumnList().size() == 3); - assertTrue(multiTarget.getColumnList().getResultColumn(0).toString().equalsIgnoreCase("n3")); - } - - public void testConditionalInsert(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "insert all\n" + - " when n1 > 100 then\n" + - " into tab1\n" + - " when n1 > 10 then\n" + - " into tab2 (c1, c2, c3)\n" + - " into tab3 (c1, c2, c3) values (n2, n1, default) \n" + - " else\n" + - " into tab4 values (n3, n2, n1)\n" + - "select n1,n2,n3 from srcTab;"; - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insertStmt = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insertStmt.getInsertSource() == EInsertSource.subquery); - assertTrue(insertStmt.getSubQuery().getTables().getTable(0).toString().equalsIgnoreCase("srcTab")); - assertTrue(insertStmt.getInsertConditions().size() == 2); - TInsertCondition insertCondition = insertStmt.getInsertConditions().getElement(0); - assertTrue(insertCondition.getCondition().toString().equalsIgnoreCase("n1 > 100")); - TInsertIntoValue intoValue = insertCondition.getInsertIntoValues().getElement(0); - assertTrue(intoValue.getTable().getTableName().toString().equalsIgnoreCase("tab1")); - - insertCondition = insertStmt.getInsertConditions().getElement(1); - assertTrue(insertCondition.getCondition().toString().equalsIgnoreCase("n1 > 10")); - assertTrue(insertCondition.getInsertIntoValues().size() == 2); - intoValue = insertCondition.getInsertIntoValues().getElement(0); - assertTrue(intoValue.getTable().getTableName().toString().equalsIgnoreCase("tab2")); - assertTrue(intoValue.getColumnList().getObjectName(0).toString().equalsIgnoreCase("c1")); - intoValue = insertCondition.getInsertIntoValues().getElement(1); - assertTrue(intoValue.getTable().getTableName().toString().equalsIgnoreCase("tab3")); - assertTrue(intoValue.getColumnList().getObjectName(0).toString().equalsIgnoreCase("c1")); - TMultiTarget multiTarget = intoValue.getTargetList().getMultiTarget(0); - assertTrue(multiTarget.getColumnList().size() == 3); - assertTrue(multiTarget.getColumnList().getResultColumn(0).toString().equalsIgnoreCase("n2")); - - assertTrue(insertStmt.getElseIntoValues().size() == 1); - intoValue = insertStmt.getElseIntoValues().getElement(0); - assertTrue(intoValue.getTable().getTableName().toString().equalsIgnoreCase("tab4")); - multiTarget = intoValue.getTargetList().getMultiTarget(0); - assertTrue(multiTarget.getColumnList().size() == 3); - assertTrue(multiTarget.getColumnList().getResultColumn(2).toString().equalsIgnoreCase("n1")); - - } - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "INSERT INTO COMMON.PREP.CHARACTER_CLASS_GAME_STATISTICS\n" + - "(\n" + - " etl_load_log_id\n" + - " ,etl_update_log_id\n" + - " ,source\n" + - " ,player_id\n" + - " ,player_id_type\n" + - " ,platform_key\n" + - " ,nucleus_persona_key\n" + - " ,nucleus_user_key\n" + - " ,device_key\n" + - " ,taxonomy_version\n" + - " ,release_type\n" + - " ,build_version_key\n" + - " ,game_session_key\n" + - " ,blaze_game_session_key\n" + - " ,blaze_match_key\n" + - " ,game_mode_key\n" + - " ,game_type_key\n" + - " ,game_level_key\n" + - " ,mode_type_key\n" + - " ,game_difficulty_key\n" + - " ,game_end_time\n" + - " ,end_reason_key\n" + - " ,character_class_source_key\n" + - " ,character_class_key\n" + - " ,persona_score\n" + - " ,persona_kill_count\n" + - " ,total_kill_count\n" + - " ,spawn_count\n" + - " ,death_count\n" + - " ,persona_revived_count\n" + - " ,total_revived_count\n" + - " ,assist_count\n" + - " ,shot_fired_count\n" + - " ,shot_hit_count\n" + - " ,critical_hit_count\n" + - " ,critical_damage_dealt_count\n" + - " ,regular_damage_dealt_count\n" + - " ,character_gameplay_duration_seconds\n" + - " ,total_gameplay_duration_seconds\n" + - " ,total_duration_seconds\n" + - " ,title_code\n" + - " ,platform_code\n" + - " ,dt\n" + - " ,hour\n" + - " ,game_id\n" + - ")\n" + - "WITH GAME_SESSION_END AS\n" + - "(\n" + - " SELECT\n" + - " source\n" + - " ,player_id\n" + - " ,player_id_type\n" + - " ,platform_key\n" + - " ,nucleus_persona_key\n" + - " ,nucleus_user_key\n" + - " ,device_key\n" + - " ,taxonomy_version\n" + - " ,release_type_key\n" + - " ,build_version_key\n" + - " ,game_session_key\n" + - " ,blaze_game_session_key\n" + - " ,blaze_match_key\n" + - " ,game_mode_key\n" + - " ,game_type_key\n" + - " ,game_level_key\n" + - " ,mode_type_key\n" + - " ,game_difficulty_key\n" + - " ,game_end_time\n" + - " ,end_reason_key\n" + - " ,character_stats\n" + - " ,gameplay_duration_seconds as total_gameplay_duration_seconds\n" + - " ,total_duration_seconds\n" + - " ,title_code\n" + - " ,platform_code\n" + - " ,dt\n" + - " ,hour\n" + - " ,game_id\n" + - " FROM\n" + - " COMMON.PREP.GAME_SESSION_END\n" + - " WHERE\n" + - " dt = '2021-01-31'\n" + - " AND game_id = 917002\n" + - ")\n" + - "\n" + - "\n" + - "SELECT\n" + - " 0 etl_load_log_id\n" + - " ,0 etl_update_log_id\n" + - " ,g.source source\n" + - " ,g.player_id player_id\n" + - " ,g.player_id_type player_id_type\n" + - " ,g.platform_key platform_key\n" + - " ,g.nucleus_persona_key nucleus_persona_key\n" + - " ,g.nucleus_user_key nucleus_user_key\n" + - " ,g.device_key device_key\n" + - " ,g.taxonomy_version taxonomy_version\n" + - " ,g.release_type_key release_type\n" + - " ,g.build_version_key build_version_key\n" + - " ,g.game_session_key game_session_key\n" + - " ,g.blaze_game_session_key blaze_game_session_key\n" + - " ,g.blaze_match_key blaze_match_key\n" + - " ,g.game_mode_key game_mode_key\n" + - " ,g.game_type_key game_type_key\n" + - " ,g.game_level_key game_level_key\n" + - " ,g.mode_type_key mode_type_key\n" + - " ,g.game_difficulty_key game_difficulty_key\n" + - " ,g.game_end_time game_end_time\n" + - " ,g.end_reason_key end_reason_key\n" + - " ,character_stat.value:character::string character_class_source_key\n" + - " ,map_character_class.character_class_key character_class_key\n" + - " ,TRY_TO_NUMBER(character_stat.value:score::string) persona_score\n" + - " ,TRY_TO_NUMBER(character_stat.value:player_kills::string) persona_kill_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:total_kills::string) total_kill_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:spawn::string) spawn_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:deaths::string) death_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:players_revived::string) persona_revived_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:revived::string) total_revived_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:assists::string) assist_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:shots_fired::string) shot_fired_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:shots_hit::string) shot_hit_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:critical_hits::string) critical_hit_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:cdamage_dealt::string) critical_damage_dealt_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:rdamage_dealt::string) regular_damage_dealt_count\n" + - " ,TRY_TO_NUMBER(character_stat.value:gdur::string) character_gameplay_duration_seconds\n" + - " ,g.total_gameplay_duration_seconds total_gameplay_duration_seconds\n" + - " ,g.total_duration_seconds total_duration_seconds\n" + - " ,g.title_code title_code\n" + - " ,g.platform_code platform_code\n" + - " ,g.dt dt\n" + - " ,g.hour hour\n" + - " ,g.game_id game_id\n" + - "FROM\n" + - " GAME_SESSION_END g\n" + - "JOIN\n" + - " lateral flatten(input => g.character_stats, outer => TRUE) character_stat\n" + - "LEFT JOIN\n" + - " COMMON.MAP.character_class map_character_class\n" + - "ON\n" + - " character_stat.value:character::string = map_character_class.character_class_source_key\n" + - " AND g.title_code = map_character_class.title_code\n"; - assertTrue(sqlparser.parse() == 0); - - TInsertSqlStatement insertStmt = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = insertStmt.getSubQuery(); - TTable table1 = select.getTables().getTable(0); - //System.out.println(select.getTables().size()); - //System.out.println(table1.getTableName().toString()); - - - } - - public void testColumnsInInsertAll() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "insert overwrite all\n" + - " into t1\n" + - " into t1 (c1, c2, c3) values (n2, n1, default)\n" + - " into t2 (c1, c2, c3)\n" + - " into t2 values (n3, n2, n1)\n" + - "select n1, n2, n3 from src;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstinsert); - assertTrue(sqlparser.sqlstatements.get(0).getSyntaxHints().size() == 0); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testLateralColumn.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testLateralColumn.java deleted file mode 100644 index db9ec0d6..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testLateralColumn.java +++ /dev/null @@ -1,18 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.commonTest.gspCommon; -import junit.framework.TestCase; - -public class testLateralColumn extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE +"java/snowflake/usaa/lateral-column.sql"; - assertTrue(sqlparser.parse() == 0); - for(int i=0;i my_csv_format)\n" + - " PATTERN='.*sales_.*\\.csv';"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = select.getTables().getTable(0); - assertTrue(table.getTableType() == ETableSource.stageReference); - assertTrue(table.getTableName().getDbObjectType() == EDbObjectType.stage); - assertTrue(table.getTableName().toString().equalsIgnoreCase("my_stage")); - TPathSqlNode pathSqlNode = table.getStageReference().getStagePath(); - assertTrue(pathSqlNode.toString().equalsIgnoreCase("/data/2023/12")); - assertTrue(pathSqlNode.getRootDirectory().toString().equalsIgnoreCase("/")); - assertTrue(pathSqlNode.splitPath()[0].equalsIgnoreCase("data")); - assertTrue(pathSqlNode.splitPath()[1].equalsIgnoreCase("2023")); - assertTrue(pathSqlNode.splitPath()[2].equalsIgnoreCase("12")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testSubqueryFunction.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testSubqueryFunction.java deleted file mode 100644 index a94d8795..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testSubqueryFunction.java +++ /dev/null @@ -1,48 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TCustomSqlStatement; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - - -public class testSubqueryFunction extends TestCase { - - public void test( ) - { - TGSqlParser sqlparser = new TGSqlParser( EDbVendor.dbvsnowflake ); - sqlparser.sqltext = "SELECT a.deptno \"Department\",\n" - + "a.num_emp/b.total_count \"Employees\",\n" - + "a.sal_sum/b.total_sal \"Salary\"\n" - + "FROM\n" - + "(SELECT deptno, COUNT(*) num_emp, SUM(SAL) sal_sum\n" - + "FROM scott.emp\n" - + "GROUP BY deptno) a,\n" - + "(SELECT COUNT(*) total_count, SUM(sal) total_sal\n" - + "FROM scott.emp) b"; - assertTrue( sqlparser.parse( ) == 0 ); - - TCustomSqlStatement setStmt = (TCustomSqlStatement) sqlparser.sqlstatements - .get( 0 ); -// assertTrue( setStmt.tables.getTable( 0 ) -// .getSubquery( ) -// .getResultColumnList( ) -// .getResultColumn( 1 ) -// .getExpr( ) -// .toString( ) == null ); -// -// assertTrue( setStmt.tables.getTable( 0 ) -// .getSubquery( ) -// .getResultColumnList( ) -// .getResultColumn( 1 ) -// .getExpr( ) -// .getFunctionCall( ).toString( ) == null ); - - assertTrue(setStmt.tables.getTable(0) - .getSubquery() - .getResultColumnList() - .getResultColumn(1).getExpr().toString().equalsIgnoreCase("COUNT(*)")); - } - - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testUseWarehouse.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testUseWarehouse.java deleted file mode 100644 index f34022a1..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testUseWarehouse.java +++ /dev/null @@ -1,18 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.snowflake.TUseWarehouse; -import junit.framework.TestCase; - -public class testUseWarehouse extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "USE WAREHOUSE wName"; - assertTrue(sqlparser.parse() == 0); - - TUseWarehouse useWarehouse = (TUseWarehouse)sqlparser.sqlstatements.get(0); - assertTrue(useWarehouse.getWarehouseName().toString().equalsIgnoreCase("wName")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testVaraible.java b/src/test/java/gudusoft/gsqlparser/snowflakeTest/testVaraible.java deleted file mode 100644 index a75f9d6b..00000000 --- a/src/test/java/gudusoft/gsqlparser/snowflakeTest/testVaraible.java +++ /dev/null @@ -1,37 +0,0 @@ -package gudusoft.gsqlparser.snowflakeTest; - - -import gudusoft.gsqlparser.EDbObjectType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testVaraible extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsnowflake); - sqlparser.sqltext = "select\n" + - " v.$1, v.$2\n" + - "from\n" + - " @my_stage( file_format => 'csv_format', pattern => '.*my_pattern.*') v;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - TExpression columnExpr = resultColumn.getExpr(); - // System.out.println(columnExpr.getExpressionType() ); - assertTrue(columnExpr.getExpressionType() == EExpressionType.simple_object_name_t); - TObjectName columnName = columnExpr.getObjectOperand(); - assertTrue(columnName.getDbObjectType() == EDbObjectType.column); - assertTrue(columnName.getTableString().equalsIgnoreCase("v")); - assertTrue(columnName.getPartString().equalsIgnoreCase("$1")); - TTable table = select.tables.getTable(0); - assertTrue(table.getTableName().toString().equalsIgnoreCase("my_stage")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/sparksqlTest/testInsertOverwrite.java b/src/test/java/gudusoft/gsqlparser/sparksqlTest/testInsertOverwrite.java deleted file mode 100644 index c1b606ee..00000000 --- a/src/test/java/gudusoft/gsqlparser/sparksqlTest/testInsertOverwrite.java +++ /dev/null @@ -1,28 +0,0 @@ -package gudusoft.gsqlparser.sparksqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import junit.framework.TestCase; - -public class testInsertOverwrite extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsparksql); - sqlparser.sqltext = "INSERT OVERWRITE DIRECTORY\n" + - " USING parquet\n" + - " OPTIONS ('path' 's3:///bucket/path/to/report', col1 1, col2 'sum')\n" + - " SELECT bar.my_flag,sum(foo.amount) as amount_sum \n" + - "\tFROM mydb.foo foo \n" + - "\tleft join mydb.bar bar\n" + - "\ton foo.bar_fk = bar.pk\n" + - "\tgroup by bar.my_flag;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(insert.getFileFormat().equalsIgnoreCase("parquet")); - assertTrue(insert.getFileOptions().equalsIgnoreCase("'path' 's3:///bucket/path/to/report', col1 1, col2 'sum'")); - assertTrue(insert.getDirectoryName().toString().equalsIgnoreCase("'s3:///bucket/path/to/report'")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/sparksqlTest/testLateralView.java b/src/test/java/gudusoft/gsqlparser/sparksqlTest/testLateralView.java deleted file mode 100644 index 9f4802ab..00000000 --- a/src/test/java/gudusoft/gsqlparser/sparksqlTest/testLateralView.java +++ /dev/null @@ -1,77 +0,0 @@ -package gudusoft.gsqlparser.sparksqlTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TLateralView; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.nodes.TParseTreeVisitor; -import gudusoft.gsqlparser.stmt.TInsertSqlStatement; -import junit.framework.TestCase; - -import java.util.ArrayList; - -public class testLateralView extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsparksql); - sqlparser.sqltext = "insert into dwd_db.pty_cf_fin partition (sys_rs_id)\n" + - " (com_id, --机构编号\n" + - " pub_dt, --报告日期\n" + - " rept_merg_type, --报表合并类型\n" + - " acc_crse_no, --会计科目编号\n" + - " acc_crse_val, --会计科目值\n" + - " busi_date, --业务日期\n" + - " task_rs_id, --任务来源标识\n" + - " dm_created_time, --数据中台创建时间\n" + - " sys_rs_id --系统来源标识\n" + - " )\n" + - "\n" + - "select a.compcode as com_id,\n" + - " cast(a.enddate as int) as pub_dt,\n" + - " a.rept_merg_type, --1-合并,2-母公司\n" + - " k1 as acc_crse_no,\n" + - " v1 as acc_crse_val,\n" + - "\t date_format(current_timestamp,'yyyyMMdd') as BUSI_DATE , --业务日期\n" + - "\t 'pty_bnk_cf_fin.hql' as task_rs_id,--任务来源标识\n" + - "\t current_timestamp() as dm_created_time, --数据中台创建时间\n" + - "\t 'FC' as sys_rs_id--系统来源标识\n" + - " from (select t1.compcode,\n" + - " t1.begindate,\n" + - " t1.enddate,\n" + - " t1.rept_merg_type,\n" + - " t1.accstacode\n" + - " from (select case\n" + - "\t\t\t\t\t\twhen t1.reporttype in ('1', '3') then '1'\n" + - "\t\t\t\t\t\twhen t1.reporttype in ('2', '4') then '2'\n" + - "\t\t\t\t\t end as rept_merg_type,\n" + - "\t\t\t\t\t\tt1.*,\n" + - "\t\t\t\t\t\trow_number() over(partition by t1.compcode, \n" + - " t1.begindate, \n" + - " t1.enddate,\n" + - " case when t1.reporttype in ('1','3') then '1'\n" + - " when t1.reporttype in ('2','4') then '2' end, \n" + - " t1.accstacode order by t1.reporttype desc) as rn\n" + - "\t\t\t\t from ods_db.fc_tq_fin_probcfstatementnew t1) t1\n" + - " ) a lateral view explode(col1) b as k1, v1\n" + - "\t where v1 is not null"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstinsert); - TInsertSqlStatement insert = (TInsertSqlStatement)sqlparser.sqlstatements.get(0); - lateralViewVisitor lvVisitor = new lateralViewVisitor(); - insert.acceptChildren(lvVisitor); - assertTrue(lvVisitor.columnAlias.size() == 2); - } -} - -class lateralViewVisitor extends TParseTreeVisitor { - ArrayList columnAlias = new ArrayList<>(); - - public void preVisit(TLateralView node){ - //System.out.println(node.getUdtf().toString()); - for(TObjectName on:node.getColumnAliasList()){ - columnAlias.add(on.toString()); - } - } -} - diff --git a/src/test/java/gudusoft/gsqlparser/sqlenvTest/TJSONSQLEnv.java b/src/test/java/gudusoft/gsqlparser/sqlenvTest/TJSONSQLEnv.java deleted file mode 100644 index 225634e1..00000000 --- a/src/test/java/gudusoft/gsqlparser/sqlenvTest/TJSONSQLEnv.java +++ /dev/null @@ -1,297 +0,0 @@ -package gudusoft.gsqlparser.sqlenvTest; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.sqlenv.TSQLEnv; -import gudusoft.gsqlparser.sqlenv.TSQLProcedure; -import gudusoft.gsqlparser.sqlenv.TSQLSchema; -import gudusoft.gsqlparser.sqlenv.TSQLTable; - -import java.io.*; -import java.nio.charset.Charset; - -class TJSONSQLEnv extends TSQLEnv { - private String jsonfile; - - public TJSONSQLEnv(EDbVendor dbVendor, String jsonfile){ - super(dbVendor); - this.jsonfile = jsonfile; - } - - public void initSQLEnv(){ - String json = SQLUtil.getFileContent(jsonfile); - if (json != null && json.trim().startsWith("{")) { - JSONObject queryObject = JSON.parseObject(json); - - //JSONArray databases = queryObject.getJSONArray("databaseModel"); - JSONObject databaseModel = queryObject.getJSONObject("databaseModel"); - if (databaseModel != null){ - JSONArray databases = databaseModel.getJSONArray("databases"); - if (databases !=null){ - //System.out.println("databases:"+databases.size()); - for(int i=0;i20?20:partOfCode.length()); - if (partOfCode.indexOf("procedure")>0){ - TSQLProcedure procedure = sqlSchema.createProcedure(procedureName); - procedure.setDefinition(sourceCode); - }else{ - // this script is used to create view - TSQLTable table = sqlSchema.createTable(procedureName); - table.setView(true); - table.setDefinition(sourceCode); - - } - // SQLUtil.writeFileContent(new File(targetDir, (i + 1) + ".sql"), sql); - } - } - - } else { - System.out.println(jsonfile + " is not a valid json file."); - } - } -} - -class SQLUtil { - - public static String getFileContent(File file) { - String charset = null; - String sqlfilename = file.getAbsolutePath(); - int read = 0; - try { - FileInputStream fr = new FileInputStream(sqlfilename); - byte[] bom = new byte[4]; - fr.read(bom, 0, bom.length); - - if ((bom[0] == (byte) 0x00) && (bom[1] == (byte) 0x00) && (bom[2] == (byte) 0xFE) - && (bom[3] == (byte) 0xFF)) { - charset = "UTF-32BE"; - read = 4; - } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE) && (bom[2] == (byte) 0x00) - && (bom[3] == (byte) 0x00)) { - charset = "UTF-32LE"; - read = 4; - } else if ((bom[0] == (byte) 0xEF) && (bom[1] == (byte) 0xBB) && (bom[2] == (byte) 0xBF)) { - charset = "UTF-8"; - read = 3; - } else if ((bom[0] == (byte) 0xFE) && (bom[1] == (byte) 0xFF)) { - charset = "UTF-16BE"; - read = 2; - } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE)) { - charset = "UTF-16LE"; - read = 2; - } else { - charset = Charset.defaultCharset().name(); - read = 0; - } - - fr.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - Long filelength = file.length(); - byte[] filecontent = new byte[filelength.intValue()]; - try { - InputStream in = new BufferedInputStream(new FileInputStream(sqlfilename)); - in.read(filecontent); - in.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - byte[] content = new byte[filelength.intValue() - read]; - System.arraycopy(filecontent, read, content, 0, content.length); - - try { - String fileContent = new String(content, charset == null ? Charset.defaultCharset().name() : charset) - .trim(); - return fileContent; - } catch (UnsupportedEncodingException e) { - System.err - .println("The OS does not support " + charset == null ? Charset.defaultCharset().name() : charset); - return null; - } - } - - public static String getInputStreamContent(InputStream is, boolean close) { - try { - ByteArrayOutputStream out = new ByteArrayOutputStream(4096); - byte[] tmp = new byte[4096]; - while (true) { - int r = is.read(tmp); - if (r == -1) - break; - out.write(tmp, 0, r); - } - byte[] bytes = out.toByteArray(); - if (close) { - is.close(); - } - out.close(); - String content = new String(bytes); - return content.trim(); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - public static String getFileContent(String filePath) { - if (filePath == null) - return ""; - File file = new File(filePath); - if (!file.exists() || file.isDirectory()) - return ""; - return getFileContent(file); - } - - /** - * @param file the filePath - * @return the UTFFileHandler.UnicodeInputStream - * @throws Exception - */ - public static InputStream getInputStreamWithoutBom(String file) throws IOException { - UnicodeInputStream stream = null; - FileInputStream fis = new FileInputStream(file); - stream = new UnicodeInputStream(fis, null); - return stream; - } - - /** - * This inputstream will recognize unicode BOM marks and will skip bytes if - * getEncoding() method is called before any of the read(...) methods. - *

- * Usage pattern: String enc = "ISO-8859-1"; // or NULL to use systemdefault - * FileInputStream fis = new FileInputStream(file); UnicodeInputStream uin = new - * UnicodeInputStream(fis, enc); enc = uin.getEncoding(); // check and skip - * possible BOM bytes InputStreamReader in; if (enc == null) in = new - * InputStreamReader(uin); else in = new InputStreamReader(uin, enc); - */ - public static class UnicodeInputStream extends InputStream { - PushbackInputStream internalIn; - boolean isInited = false; - String defaultEnc; - String encoding; - - private static final int BOM_SIZE = 4; - - public UnicodeInputStream(InputStream in, String defaultEnc) { - internalIn = new PushbackInputStream(in, BOM_SIZE); - this.defaultEnc = defaultEnc; - } - - public String getDefaultEncoding() { - return defaultEnc; - } - - public String getEncoding() { - if (!isInited) { - try { - init(); - } catch (IOException ex) { - IllegalStateException ise = new IllegalStateException("Init method failed."); - ise.initCause(ise); - throw ise; - } - } - return encoding; - } - - /** - * Read-ahead four bytes and check for BOM marks. Extra bytes are unread back to - * the stream, only BOM bytes are skipped. - */ - protected void init() throws IOException { - if (isInited) - return; - - byte bom[] = new byte[BOM_SIZE]; - int n, unread; - n = internalIn.read(bom, 0, bom.length); - - if ((bom[0] == (byte) 0x00) && (bom[1] == (byte) 0x00) && (bom[2] == (byte) 0xFE) - && (bom[3] == (byte) 0xFF)) { - encoding = "UTF-32BE"; - unread = n - 4; - } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE) && (bom[2] == (byte) 0x00) - && (bom[3] == (byte) 0x00)) { - encoding = "UTF-32LE"; - unread = n - 4; - } else if ((bom[0] == (byte) 0xEF) && (bom[1] == (byte) 0xBB) && (bom[2] == (byte) 0xBF)) { - encoding = "UTF-8"; - unread = n - 3; - } else if ((bom[0] == (byte) 0xFE) && (bom[1] == (byte) 0xFF)) { - encoding = "UTF-16BE"; - unread = n - 2; - } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE)) { - encoding = "UTF-16LE"; - unread = n - 2; - } else { - encoding = defaultEnc; - unread = n; - } - - if (unread > 0) - internalIn.unread(bom, (n - unread), unread); - - isInited = true; - } - - public void close() throws IOException { - internalIn.close(); - } - - public int read() throws IOException { - return internalIn.read(); - } - } - - public static void writeFileContent(File file, String sql) { - PrintWriter pw = null; - try { - pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"))); - pw.write(sql); - } catch (Exception e) { - e.printStackTrace(); - } finally { - if (pw != null) { - pw.close(); - } - } - - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/sqlenvTest/testHelpFunctions.java b/src/test/java/gudusoft/gsqlparser/sqlenvTest/testHelpFunctions.java deleted file mode 100644 index ce57591a..00000000 --- a/src/test/java/gudusoft/gsqlparser/sqlenvTest/testHelpFunctions.java +++ /dev/null @@ -1,32 +0,0 @@ -package gudusoft.gsqlparser.sqlenvTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TBaseType; -import gudusoft.gsqlparser.sqlenv.ESQLDataObjectType; -import gudusoft.gsqlparser.sqlenv.TSQLEnv; -import junit.framework.TestCase; - -public class testHelpFunctions extends TestCase { - - public void test1() { - EDbVendor dbVendor = EDbVendor.dbvoracle; - ESQLDataObjectType dataObjectType = ESQLDataObjectType.dotTable; - - assertTrue(TSQLEnv.matchSubObjectNameToWhole(EDbVendor.dbvoracle,ESQLDataObjectType.dotTable, "a","a")); - assertTrue(TSQLEnv.matchSubObjectNameToWhole(EDbVendor.dbvoracle,ESQLDataObjectType.dotTable, "a","scott.a")); - assertTrue(!TSQLEnv.matchSubObjectNameToWhole(EDbVendor.dbvoracle,ESQLDataObjectType.dotTable, "b","scott.a")); - - assertTrue(TSQLEnv.matchSubObjectNameToWhole( EDbVendor.dbvmssql ,ESQLDataObjectType.dotTable, "a","[a]")); - assertTrue(TSQLEnv.matchSubObjectNameToWhole( EDbVendor.dbvbigquery ,ESQLDataObjectType.dotTable, "`a`","a")); - assertTrue(TSQLEnv.matchSubObjectNameToWhole( EDbVendor.dbvbigquery ,ESQLDataObjectType.dotTable, "RETAIL_PROD_EXCEPTIONS_SOURCE","`data`.`RETAIL_PROD_EXCEPTIONS_SOURCE`")); - - assertTrue(TSQLEnv.matchSubObjectNameToWhole( EDbVendor.dbvbigquery ,ESQLDataObjectType.dotTable, "RETAIL_PROD_EXCEPTIONS_SOURCE","`data.RETAIL_PROD_EXCEPTIONS_SOURCE`")); - - } - - - public void test2(){ - assertTrue(TBaseType.removePrefixOrSuffixQuoteChar("`abc").equalsIgnoreCase("abc")); - assertTrue(TBaseType.removePrefixOrSuffixQuoteChar("abc`").equalsIgnoreCase("abc")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/sqlenvTest/testHiveSQLEnv.java b/src/test/java/gudusoft/gsqlparser/sqlenvTest/testHiveSQLEnv.java deleted file mode 100644 index a6ac80ea..00000000 --- a/src/test/java/gudusoft/gsqlparser/sqlenvTest/testHiveSQLEnv.java +++ /dev/null @@ -1,43 +0,0 @@ -package gudusoft.gsqlparser.sqlenvTest; - -import gudusoft.gsqlparser.commonTest.gspCommon; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.sqlenv.TSQLCatalog; -import gudusoft.gsqlparser.sqlenv.TSQLEnv; -import gudusoft.gsqlparser.sqlenv.TSQLSchema; -import gudusoft.gsqlparser.sqlenv.TSQLTable; -import junit.framework.TestCase; - -public class testHiveSQLEnv extends TestCase { - - public void test1() { - TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvhive); - sqlParser.setSqlfilename(gspCommon.BASE_SQL_DIR_PRIVATE_JAVA + "hive/prosiebensat1/gsp_orphan_column.sql"); - sqlParser.setSqlEnv(new THiveEnv()); - assertTrue(sqlParser.parse() == 0); - assertTrue(sqlParser.getSqlstatements().get(0).getSyntaxHints().size() == 0); - } -} - -class THiveEnv extends TSQLEnv { - - public THiveEnv(){ - super(EDbVendor.dbvhive); - initSQLEnv(); - } - - @Override - public void initSQLEnv() { - - // add a new database - TSQLCatalog sqlCatalog = createSQLCatalog("pharos_business_vault"); - // hive don't have schema, we use a default schema - TSQLSchema sqlSchema = sqlCatalog.createSchema("default"); - - //add a new table: cTab - TSQLTable ExecutionLogStorage = sqlSchema.createTable("b_content_datamart_bv"); - ExecutionLogStorage.addColumn("a_beginn_pe"); - ExecutionLogStorage.addColumn("a_perspektive_verbrauch"); - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/sqlenvTest/testJSONEnv.java b/src/test/java/gudusoft/gsqlparser/sqlenvTest/testJSONEnv.java deleted file mode 100644 index 1dde1c0e..00000000 --- a/src/test/java/gudusoft/gsqlparser/sqlenvTest/testJSONEnv.java +++ /dev/null @@ -1,107 +0,0 @@ -package gudusoft.gsqlparser.sqlenvTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.commonTest.gspCommon; -import gudusoft.gsqlparser.sqlenv.*; -import junit.framework.TestCase; - -public class testJSONEnv extends TestCase { - - static int objectsInDatabase(TSQLCatalog c, ESQLDataObjectType objectType){ - int result = 0; - for(TSQLSchema s: c.getSchemaList() ) { - for (TSQLSchemaObject o : s.getSchemaObjectList()) { - if (o.getDataObjectType() == objectType) { - result++; - } - } - } - return result; - } - - static int viewsInDatabase(TSQLCatalog c){ - int result = 0; - for(TSQLSchema s: c.getSchemaList() ) { - for (TSQLSchemaObject o : s.getSchemaObjectList()) { - if (o.getDataObjectType() == ESQLDataObjectType.dotTable) { - TSQLTable table = (TSQLTable)o; - if (table.isView()) result++; - } - } - } - return result; - } - - static int tablesInDatabase(TSQLCatalog c){ - int result = 0; - for(TSQLSchema s: c.getSchemaList() ) { - for (TSQLSchemaObject o : s.getSchemaObjectList()) { - if (o.getDataObjectType() == ESQLDataObjectType.dotTable) { - TSQLTable table = (TSQLTable)o; - if (!table.isView()) result++; - } - } - } - return result; - } - TJSONSQLEnv sqlEnv; - - @Override - protected void setUp() throws Exception { - // System.out.println("Setting it up!"); - sqlEnv = new TJSONSQLEnv(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PRIVATE+"/sqlflow/api_json/DBexport20191212.json"); - sqlEnv.initSQLEnv(); - } - @Override - protected void tearDown() throws Exception { - // System.out.println("Running: tearDown"); - } - - public void test1() { - int totalProcedure = 0,totalView = 0; - assertTrue(sqlEnv.getCatalogList().size() == 7); - - for (TSQLCatalog c : sqlEnv.getCatalogList()) { -// System.out.println("Database:" + c.getName() + "(schema:" + c.getSchemaList().size() -// + ",table+view:" + (objectsInDatabase(c, ESQLDataObjectType.dotTable)) -// + ",view:" + (viewsInDatabase(c)) -// + ",procedure:" + objectsInDatabase(c, ESQLDataObjectType.dotProcedure) + ")"); - - totalView = totalView + viewsInDatabase(c); - for (TSQLSchema s : c.getSchemaList()) { - for (TSQLSchemaObject o : s.getSchemaObjectList()) { - if (o.getDataObjectType() == ESQLDataObjectType.dotProcedure) { - totalProcedure++; - } - } - } - } - // System.out.println("total procedure:" + totalProcedure+", total view:"+totalView+", queries:"+(totalProcedure+totalView)); - assertTrue((totalProcedure+totalView) == 549); - - } - - public void testSearch1() { - String tableName = "CrmPoc.SF.LAND_StatusChange"; - TSQLTable sqlTable = sqlEnv.searchTable(tableName); - assertTrue(sqlTable != null); - - TSQLEnv.tableCollationCaseSensitive[EDbVendor.dbvmssql.ordinal()] = true; - tableName = "DataMart.dbo.loaN"; - sqlTable = sqlEnv.searchTable(tableName); - assertTrue(sqlTable == null); - - TSQLEnv.tableCollationCaseSensitive[EDbVendor.dbvmssql.ordinal()] = false; - tableName = "DataMart.dbo.loaN"; - sqlTable = sqlEnv.searchTable(tableName); - assertTrue(sqlTable != null); - - tableName = "DataMart.[SalesForce].[vwAccounts]"; - // tableName = "DataMart.SalesForce.vwAccounts"; - sqlTable = sqlEnv.searchTable(tableName); - assertTrue(sqlTable != null); -// for(TSQLColumn c: sqlTable.getColumnList()){ -// System.out.println(c.getSqlTable().getNameKeepCase()+"."+c.getNameKeepCase()); -// } - } -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testColumnName.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testColumnName.java deleted file mode 100644 index 1a0781e6..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testColumnName.java +++ /dev/null @@ -1,26 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testColumnName extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "select P#_prem from tabc"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - TExpression columnExpr = resultColumn.getExpr(); - assertTrue(columnExpr.getExpressionType() == EExpressionType.simple_object_name_t); - TObjectName columnName = columnExpr.getObjectOperand(); - assertTrue(columnName.toString().equalsIgnoreCase("P#_prem")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateProcedure.java deleted file mode 100644 index d35e8782..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateProcedure.java +++ /dev/null @@ -1,46 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; -/* - * Date: 14-6-12 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.mssql.TMssqlBlock; -import gudusoft.gsqlparser.stmt.mssql.TMssqlCreateProcedure; -import junit.framework.TestCase; - -public class testCreateProcedure extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "CREATE PROC dbo.proc1\n" + - "AS\n" + - "\n" + - "\n" + - "\n" + - "SET FLUSHMESSAGE ON\n" + - "SET NOCOUNT ON\n" + - "\n" + - "BEGIN\n" + - "\n" + - " \n" + - " select * from schema1.table1\n" + - "SET FLUSHMESSAGE OFF\n" + - "SET NOCOUNT OFF\n" + - "\n" + - "END"; - int i = sqlparser.parse() ; - assertTrue(i == 0); - - TMssqlCreateProcedure p = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(0); - assertTrue(p.getProcedureName().toString().equalsIgnoreCase("dbo.proc1")); - assertTrue(p.getBodyStatements().size() == 3); - //System.out.println(p.getBodyStatements().get(0).sqlstatementtype); - assertTrue(p.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstmssqlset); - assertTrue(p.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstmssqlset); - assertTrue(p.getBodyStatements().get(2).sqlstatementtype == ESqlStatementType.sstmssqlblock); - assertTrue(((TMssqlBlock)(p.getBodyStatements().get(2))).getBodyStatements().size() == 3); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateTable.java deleted file mode 100644 index 44738cba..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testCreateTable.java +++ /dev/null @@ -1,32 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; -/* - * Date: 13-8-30 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TColumnDefinition; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateTable extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "create table temp_letter_log (\n" + - " alfs_cycle_date datetime null,\n" + - " alfs_doc_id char(5) null,\n" + - " alfs_count integer null)"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("temp_letter_log")); - assertTrue(createTable.getColumnList().size() == 3); - TColumnDefinition columnDefinition = createTable.getColumnList().getColumn(0); - assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("alfs_cycle_date")); - assertTrue(columnDefinition.isNull()); - assertTrue(columnDefinition.getDatatype().getDataType() == EDataType.datetime_t); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testDeleteStatistics.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testDeleteStatistics.java deleted file mode 100644 index f817101e..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testDeleteStatistics.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; -/* - * Date: 14-11-11 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.sybase.TSybaseDeleteStatistics; -import junit.framework.TestCase; - -public class testDeleteStatistics extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "delete statistics titles (pub_id, pubdate)"; - int i = sqlparser.parse() ; - assertTrue(i == 0); - TSybaseDeleteStatistics deleteStatistics = (TSybaseDeleteStatistics)sqlparser.sqlstatements.get(0); - assertTrue(deleteStatistics.getTableName().toString().equalsIgnoreCase("titles")); - assertTrue(deleteStatistics.getColumnList().getObjectName(0).toString().equalsIgnoreCase("pub_id")); - assertTrue(deleteStatistics.getColumnList().getObjectName(1).toString().equalsIgnoreCase("pubdate")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testDumpTran.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testDumpTran.java deleted file mode 100644 index 16ab791d..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testDumpTran.java +++ /dev/null @@ -1,38 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; -/* - * Date: 13-9-2 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.mssql.TMssqlBlock; -import gudusoft.gsqlparser.stmt.mssql.TMssqlCreateProcedure; -import junit.framework.TestCase; - -public class testDumpTran extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "create procedure po_aaa\n" + - "as\n" + - "Begin\n" + - "\n" + - "dump tran db_policy with no_log\n" + - "\n" + - "End"; - - int i = sqlparser.parse() ; - assertTrue(i == 0); - TMssqlCreateProcedure procedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(0); - assertTrue(procedure.getProcedureName().toString().equalsIgnoreCase("po_aaa")); - assertTrue(procedure.getBodyStatements().size() == 1); - assertTrue(procedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstmssqlblock); - TMssqlBlock block = (TMssqlBlock)procedure.getBodyStatements().get(0); - assertTrue(block.getBodyStatements().size() == 1); - assertTrue(block.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstsybasedumpTran); - // System.out.println(block.getBodyStatements().get(0).sqlstatementtype); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testExecWithNoKeyword.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testExecWithNoKeyword.java deleted file mode 100644 index 57036d0b..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testExecWithNoKeyword.java +++ /dev/null @@ -1,23 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.mssql.TMssqlExecute; -import junit.framework.TestCase; - -public class testExecWithNoKeyword extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "myStoredProc @Param1='XXXXX', @Param2='XXXXX', @Param3=@p0, @Param4=0, @Param5=00"; - int i = sqlparser.parse() ; - assertTrue(i == 0); - TMssqlExecute executeStmt = (TMssqlExecute)sqlparser.sqlstatements.get(0); - assertTrue(executeStmt.getModuleName().toString().equalsIgnoreCase("myStoredProc")); - assertTrue(executeStmt.getParameters().size() == 5); - assertTrue(executeStmt.getParameters().getExecParameter(0).getParameterName().toString().equalsIgnoreCase("@Param1")); - assertTrue(executeStmt.getParameters().getExecParameter(0).getParameterValue().toString().equalsIgnoreCase("'XXXXX'")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testFunctionTable.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testFunctionTable.java deleted file mode 100644 index 8005dbd0..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testFunctionTable.java +++ /dev/null @@ -1,41 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ETableSource; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testFunctionTable extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = " select res_ok,\n" + - " res_message\n" + - " from soap_pe.pe_insert_update_pc_hor_disp_det_web(li_id_employe, \n" + - " li_langue,\n" + - " arg_id_pc_hor_disp, \n" + - " arg_heure_debut,\n" + - " arg_heure_fin,\n" + - " arg_jour1, \n" + - " arg_jour2,\n" + - " arg_jour3,\n" + - " arg_jour4, \n" + - " arg_jour5,\n" + - " arg_jour6,\n" + - " arg_jour7,\n" + - " arg_heure_debut_old,\n" + - " arg_heure_fin_old);"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = select.tables.getTable(0); - assertTrue(table.getTableType() == ETableSource.function); - TObjectName functionName = table.getFuncCall().getFunctionName(); - assertTrue(functionName.toString().equalsIgnoreCase("soap_pe.pe_insert_update_pc_hor_disp_det_web")); - assertTrue(functionName.getSchemaString().equalsIgnoreCase("soap_pe")); - assertTrue(functionName.getObjectString().equalsIgnoreCase("pe_insert_update_pc_hor_disp_det_web")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testHint.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testHint.java deleted file mode 100644 index c71edde2..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testHint.java +++ /dev/null @@ -1,47 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; -/* - * Date: 13-9-2 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TAliasClause; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.nodes.TTableHint; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testHint extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "select f from db_policy..tpol_cover c (index ipol_cover) "; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = select.tables.getTable(0); - assertTrue(table.getTableName().toString().equalsIgnoreCase("db_policy..tpol_cover")); - TAliasClause aliasClause = table.getAliasClause(); - assertTrue(aliasClause != null); - assertTrue(aliasClause.getAliasName().toString().equalsIgnoreCase("c")); - TTableHint hint = table.getTableHintList().getElement(0); - assertTrue(hint.getHint().toString().equalsIgnoreCase("ipol_cover")); - //System.out.println(hint.getHint().toString()); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "select ord_num from salesdetail\n" + - " (index salesdetail parallel 3)"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = select.tables.getTable(0); - assertTrue(table.getTableName().toString().equalsIgnoreCase("salesdetail")); - assertTrue(table.getTableHintList().size() == 2); - TTableHint hint = table.getTableHintList().getElement(0); - assertTrue(hint.getHint().toString().equalsIgnoreCase("salesdetail")); - hint = table.getTableHintList().getElement(1); - assertTrue(hint.getHintValue().toString().equalsIgnoreCase("3")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testInsertBulk.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testInsertBulk.java deleted file mode 100644 index ce9f5825..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testInsertBulk.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; -/* - * Date: 14-6-12 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.sybase.TInsertBulk; -import junit.framework.TestCase; - -public class testInsertBulk extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "insert bulk tempdb.test.account with nodescribe"; - int i = sqlparser.parse() ; - assertTrue(i == 0); - TInsertBulk insertBulk = (TInsertBulk)sqlparser.sqlstatements.get(0); - assertTrue(insertBulk.getTableName().toString().equalsIgnoreCase("tempdb.test.account")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testIsolation.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testIsolation.java deleted file mode 100644 index 9bb3ffcd..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testIsolation.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; -/* - * Date: 13-8-29 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EIsolationLevel; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TIsolationClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testIsolation extends TestCase { - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "Select abc from tablea\n" + - "at isolation 0"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TIsolationClause isolationClause = select.getIsolationClause(); - assertTrue(isolationClause.getIsolationLevel() == EIsolationLevel.readUncommitted); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testPartialParsing.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testPartialParsing.java deleted file mode 100644 index e6ea9218..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testPartialParsing.java +++ /dev/null @@ -1,46 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; -/* - * Date: 12-9-20 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TDeleteSqlStatement; -import gudusoft.gsqlparser.stmt.mssql.TMssqlCreateProcedure; -import junit.framework.TestCase; - -public class testPartialParsing extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "create procedure showind @tabname varchar (30)\n" + - "as\n" + - "select sysobjects.name, sysindexes.name, indid\n" + - "froms sysindexes, sysobjects\n" + - "where sysobjects.name = @tabname\n" + - "and sysobjects.id = sysindexes.id\n" + - "\n" + - "delete from b where b.f > 1"; - int i = sqlparser.parse() ; - assertTrue(i != 0); - //System.out.println(sqlparser.getErrormessage()); - TMssqlCreateProcedure procedure = (TMssqlCreateProcedure)sqlparser.sqlstatements.get(0); - assertTrue(procedure.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstselect); - assertTrue(procedure.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstinvalid); - assertTrue(procedure.getBodyStatements().get(2).sqlstatementtype == ESqlStatementType.sstdelete); - - TDeleteSqlStatement delete = (TDeleteSqlStatement)procedure.getBodyStatements().get(2); - assertTrue(delete.getTargetTable().toString().equalsIgnoreCase("b")); - assertTrue(delete.getWhereClause().getCondition().getExpressionType() == EExpressionType.simple_comparison_t); - -// TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)procedure.getBodyStatements().get(0); -// System.out.println(selectSqlStatement.getStartToken().toString()); -// System.out.println(selectSqlStatement.getEndToken().toString()); -// TParseErrorSqlStatement errorSqlStatement = (TParseErrorSqlStatement)procedure.getBodyStatements().get(1); -// System.out.println(errorSqlStatement.getStartToken().toString()); -// System.out.println(errorSqlStatement.getEndToken().toString()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/sybaseTest/testWritetext.java b/src/test/java/gudusoft/gsqlparser/sybaseTest/testWritetext.java deleted file mode 100644 index f7ed3566..00000000 --- a/src/test/java/gudusoft/gsqlparser/sybaseTest/testWritetext.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.sybaseTest; -/* - * Date: 14-11-11 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.sybase.TSybaseWritetext; -import junit.framework.TestCase; - -public class testWritetext extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvsybase); - sqlparser.sqltext = "writetext unitable.ut @val with log \"Hello world\""; - int i = sqlparser.parse() ; - assertTrue(i == 0); - TSybaseWritetext writetext = (TSybaseWritetext)sqlparser.sqlstatements.get(0); - assertTrue(writetext.getColumnName().toString().equalsIgnoreCase("unitable.ut")); - assertTrue(writetext.getText_pointer().toString().equalsIgnoreCase("@val")); - assertTrue(writetext.getWriteData().toString().equalsIgnoreCase("\"Hello world\"")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterConstraint.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterConstraint.java deleted file mode 100644 index 375b4e20..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterConstraint.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.teradata.TAlterConstraintStmt; -import junit.framework.TestCase; - -public class testAlterConstraint extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "ALTER constraint group_membership\n" + - " AS VALUES (etl:4, manager:3, clerk:2, peon:1);"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradataalterconstraint); - TAlterConstraintStmt alterConstraintStmt = (TAlterConstraintStmt)sqlparser.sqlstatements.get(0); - assertTrue(alterConstraintStmt.getConstraintName().toString().equalsIgnoreCase("group_membership")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterProcedure.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterProcedure.java deleted file mode 100644 index dcc99d6a..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterProcedure.java +++ /dev/null @@ -1,21 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TAlterProcedureStmt; -import junit.framework.TestCase; - - -public class testAlterProcedure extends TestCase { - - public void testPrepare(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "ALTER PROCEDURE spa_tz COMPILE AT TIME ZONE LOCAL;"; - assertTrue(sqlparser.parse() == 0); - - TAlterProcedureStmt cp = (TAlterProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("spa_tz")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterTableAddColumns.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterTableAddColumns.java deleted file mode 100644 index 5a278495..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterTableAddColumns.java +++ /dev/null @@ -1,28 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EAlterTableOptionType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TAlterTableOption; -import gudusoft.gsqlparser.stmt.TAlterTableStatement; -import junit.framework.TestCase; - - -public class testAlterTableAddColumns extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "ALTER TABLE DB_STAGE_AKG.T50307_S02_AGL_BAL_3 ADD AGL_BAL_AMT DECIMAL(18,4), ADD NETTING_AGL_BAL_AMT DECIMAL(18,4);"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstaltertable); - TAlterTableStatement alterTable = (TAlterTableStatement)sqlparser.sqlstatements.get(0); - assertTrue(alterTable.getAlterTableOptionList().size() == 2); - TAlterTableOption alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(0); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.AddColumn); - assertTrue(alterTableOption.getColumnDefinitionList().getColumn(0).getColumnName().toString().equalsIgnoreCase("AGL_BAL_AMT")); - alterTableOption = alterTable.getAlterTableOptionList().getAlterTableOption(1); - assertTrue(alterTableOption.getOptionType() == EAlterTableOptionType.AddColumn); - assertTrue(alterTableOption.getColumnDefinitionList().getColumn(0).getColumnName().toString().equalsIgnoreCase("NETTING_AGL_BAL_AMT")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterZone.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterZone.java deleted file mode 100644 index 6f94f235..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testAlterZone.java +++ /dev/null @@ -1,31 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.teradata.TAlterZoneStmt; -import gudusoft.gsqlparser.stmt.teradata.TCreateZoneStmt; -import junit.framework.TestCase; - -public class testAlterZone extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "ALTER ZONE zone_name DROP ROOT ;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradataalterzone); - TAlterZoneStmt alterZoneStmt = (TAlterZoneStmt)sqlparser.sqlstatements.get(0); - assertTrue(alterZoneStmt.getZoneName().toString().equalsIgnoreCase("zone_name")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE ZONE zone_name ROOT root_name ;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatezone); - TCreateZoneStmt alterZoneStmt = (TCreateZoneStmt)sqlparser.sqlstatements.get(0); - assertTrue(alterZoneStmt.getZoneName().toString().equalsIgnoreCase("zone_name")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testAnalyticFunction.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testAnalyticFunction.java deleted file mode 100644 index c41b38bf..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testAnalyticFunction.java +++ /dev/null @@ -1,32 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - - -import gudusoft.gsqlparser.EBoundaryType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ELimitRowType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testAnalyticFunction extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "Select max(employee_id) over (ROWS BETWEEN 1 FOLLOWING AND 2 following) as a from employee;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn rc = select.getResultColumnList().getResultColumn(0); - TExpression e = rc.getExpr(); - TFunctionCall functionCall = e.getFunctionCall(); - TWindowFrame windowFrame = functionCall.getWindowDef().getWindowFrame(); - assertTrue(windowFrame.getLimitRowType() == ELimitRowType.Rows); - TWindowFrameBoundary startBoundary = windowFrame.getStartBoundary(); - assertTrue(startBoundary.getBoundaryType() == EBoundaryType.ebtFollowing); - assertTrue(startBoundary.getBoundaryNumber().toString().equalsIgnoreCase("1")); - TWindowFrameBoundary endBoundary = windowFrame.getEndBoundary(); - assertTrue(endBoundary.getBoundaryType() == EBoundaryType.ebtFollowing); - assertTrue(endBoundary.getBoundaryNumber().toString().equalsIgnoreCase("2")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testBTEQ.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testBTEQ.java deleted file mode 100644 index 27e9bf10..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testBTEQ.java +++ /dev/null @@ -1,91 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testBTEQ extends TestCase { - - public void testLogon(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = ".Logon 127.0.0.1/Tduser \n" + - "\tPassword:\n" + - "\t\n" + - "select a from b;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 2); - - } - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = ".HELP BTEQ\n" + - ".LOGON mydbs/myid;\n" + - ".SET SIDETITLES ON; .SET FOLDLINE ON ALL\n" + - "SELECT DATE;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 5); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "BT;\n" + - "select a from b;\n" + - "select a from b;\n" + - "select a from b;\n" + - "ET;\n" + - "= 10"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 6); - - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = ".GOTO mylabel\n" + - ".REMARK 'A'\n" + - ".REMARK 'B'\n" + - ".LABEL mylabel\n" + - ".IF ERRORCODE=0\n" + - ".REMARK 'C'\n" + - ".ELSEIF ERRORCODE=1\n" + - ".REMARK 'D'\n" + - ".ELSE\n" + - ".REMARK 'E'\n" + - ".ENDIF"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 11); - } - - public void test4(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = ".SET SESSION TRANS BTET\n" + - ".LOGON server/user, password\n" + - "BT;\n" + - "SELECT date;\n" + - ".COMPILE FILE spSample1\n" + - "ET;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 6); - } - - public void test5(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT date\n" + - "; ECHO '.SHOW';"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 2); - } - - public void test6(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = ".show errormap\n" + - ".set errorlevel 4155 severity 12\n" + - ".set errorlevel 4800 severity 8\n" + - ".show errormap"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 4); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testBeginTrans.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testBeginTrans.java deleted file mode 100644 index 89c64fe9..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testBeginTrans.java +++ /dev/null @@ -1,18 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - - -public class testBeginTrans extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "USING(AA1 int,AA2 int) BT;\n" + - "EXEC insert1(:AA1);\n" + - "EXEC insert2(:AA2);"; - assertTrue(sqlparser.parse() == 0); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testCastDate.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCastDate.java deleted file mode 100644 index 47ea8e79..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testCastDate.java +++ /dev/null @@ -1,94 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.ELiteralType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testCastDate extends TestCase { - - public void test0(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select (date),f3 (date) from t1"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn0 = select.getResultColumnList().getResultColumn(0); - TExpression expression0 = resultColumn0.getExpr(); - assertTrue(expression0.getExpressionType() == EExpressionType.parenthesis_t); - assertTrue(expression0.getLeftOperand().getExpressionType() == EExpressionType.function_t); - assertTrue(expression0.getLeftOperand().getFunctionCall().toString().equalsIgnoreCase("date")); - - TResultColumn resultColumn1 = select.getResultColumnList().getResultColumn(1); - TExpression expression1 = resultColumn1.getExpr(); - assertTrue(expression1.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expression1.getObjectOperand().toString().equalsIgnoreCase("f3")); - assertTrue(expression1.getDataConversions().size() == 1); - - } - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select ydLLdNG_mTzTEMENT_dD\n" + - " ,Col1_DT (date) cust_Dt\n" + - " ,PRORzTE_dND\n" + - " FROM zxxountLevelxhzrgem\n" + - " WHERE ydLL_mTzTEMENT_xHzRGE_zMT > 0"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(1); - assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("cust_Dt")); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(resultColumn.getExpr().getObjectOperand().toString().equalsIgnoreCase("Col1_DT")); - } - - public void test2(){ - // mantisbt/view.php?id=1354 - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select hire_date(DATE) \n" + - "from employee \n" + - "where hire_date(DATE) = DATE '1971-10-18' \n" + - "group by 1\n" + - "having hire_date(DATE) = DATE '1971-10-18' \n" + - "order by hire_date(DATE)"; - - // System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - //System.out.println(resultColumn.getExpr().getExpressionType()); - - TExpression right = select.getWhereClause().getCondition().getRightOperand(); - assertTrue(right.getExpressionType() == EExpressionType.simple_constant_t); - assertTrue(right.getConstantOperand().getLiteralType() == ELiteralType.etDate); - //System.out.println(right.getConstantOperand().getLiteralType()); - - TExpression having = select.getGroupByClause().getHavingClause().getLeftOperand(); - // System.out.println(having.getExpressionType()); - - TExpression order = select.getOrderbyClause().getItems().getOrderByItem(0).getSortKey(); - //System.out.println(order.getExpressionType()); - } - - public void testDateAsColumn(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select \"date\" , col from emp"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); - // System.out.println(resultColumn.getExpr().getExpressionType() ); -// assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testCheckSourceColumn.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCheckSourceColumn.java deleted file mode 100644 index d397c173..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testCheckSourceColumn.java +++ /dev/null @@ -1,49 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TObjectName; -import gudusoft.gsqlparser.stmt.TMergeSqlStatement; -import gudusoft.gsqlparser.util.THelp; -import junit.framework.TestCase; - -import java.util.ArrayList; - -public class testCheckSourceColumn extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "USING (empno INTEGER,\n" + - "name VARCHAR(50),\n" + - "salary INTEGER)\n" + - "MERGE INTO employee AS t\n" + - "USING VALUES (:empno, :name, :salary) AS s(empno, name, salary)\n" + - "ON t.empno=s.empno\n" + - "WHEN MATCHED THEN UPDATE\n" + - "SET salary=s.salary\n" + - "WHEN NOT MATCHED THEN INSERT (empno, name, salary)\n" + - "VALUES (s.empno, s.name, s.salary);"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmerge); - TMergeSqlStatement sqlStatement = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); - ArrayList columns = THelp.getObjectNames(sqlStatement); - for(TObjectName objectName:columns){ - // System.out.println(objectName.toString()); - if (objectName.toString().equalsIgnoreCase("s.empno") && (objectName.getStartToken().lineNo == 10)){ - //System.out.println(String.format("Source column for %s is %s",objectName.toString(),objectName.getSourceColumn()==null?"N/A":objectName.getSourceColumn().toString())); - assertTrue(objectName.getSourceColumn().toString().equalsIgnoreCase(":empno")); - } - if (objectName.toString().equalsIgnoreCase("s.name") && (objectName.getStartToken().lineNo == 10)){ - //System.out.println(String.format("Source column for %s is %s",objectName.toString(),objectName.getSourceColumn()==null?"N/A":objectName.getSourceColumn().toString())); - assertTrue(objectName.getSourceColumn().toString().equalsIgnoreCase(":name")); - } - if (objectName.toString().equalsIgnoreCase("s.salary") && (objectName.getStartToken().lineNo == 10)){ - //System.out.println(String.format("Source column for %s is %s",objectName.toString(),objectName.getSourceColumn()==null?"N/A":objectName.getSourceColumn().toString())); - assertTrue(objectName.getSourceColumn().toString().equalsIgnoreCase(":salary")); - } - } - - } -} - diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testCollectStatistics.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCollectStatistics.java deleted file mode 100644 index ad82aef3..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testCollectStatistics.java +++ /dev/null @@ -1,59 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 12-9-26 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.teradata.TCollectColumnIndex; -import gudusoft.gsqlparser.stmt.teradata.TTeradataCollectStatistics; -import junit.framework.TestCase; - -public class testCollectStatistics extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "COLLECT STATS COLUMN (id) on db1.tbl1;"; - assertTrue(sqlparser.parse() == 0); - TTeradataCollectStatistics collectStatistics = (TTeradataCollectStatistics)sqlparser.sqlstatements.get(0); - assertTrue(collectStatistics.getTableName().toString().equalsIgnoreCase("db1.tbl1")); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "Collect stats \n" + - "index(member), \n" + - "column(dateyymmdd)\n" + - "On db.sampletable"; - assertTrue(sqlparser.parse() == 0); - TTeradataCollectStatistics collectStatistics = (TTeradataCollectStatistics)sqlparser.sqlstatements.get(0); - assertTrue(collectStatistics.getTableName().toString().equalsIgnoreCase("db.sampletable")); - assertTrue(collectStatistics.getColumnIndexList().size() == 2); - TCollectColumnIndex collectColumnIndex = collectStatistics.getColumnIndexList().get(0); - assertTrue(collectColumnIndex.isIndex()); - assertTrue(collectColumnIndex.getColumnNameList().getObjectName(0).toString().equalsIgnoreCase("member")); - collectColumnIndex = collectStatistics.getColumnIndexList().get(1); - assertTrue(collectColumnIndex.isColumn()); - assertTrue(collectColumnIndex.getColumnNameList().getObjectName(0).toString().equalsIgnoreCase("dateyymmdd")); - - } - - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "Collect stats dwh.stg_fact_example column(partition);"; - assertTrue(sqlparser.parse() == 0); - TTeradataCollectStatistics collectStatistics = (TTeradataCollectStatistics)sqlparser.sqlstatements.get(0); - assertTrue(collectStatistics.getTableName().toString().equalsIgnoreCase("dwh.stg_fact_example")); - - assertTrue(collectStatistics.getColumnIndexList().size() == 1); - TCollectColumnIndex collectColumnIndex = collectStatistics.getColumnIndexList().get(0); - assertTrue(collectColumnIndex.isColumn()); - assertTrue(collectColumnIndex.getColumnNameList().getObjectName(0).toString().equalsIgnoreCase("partition")); - - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateProcedure.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateProcedure.java deleted file mode 100644 index 0453cdb3..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateProcedure.java +++ /dev/null @@ -1,465 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TDeclareVariable; -import gudusoft.gsqlparser.stmt.*; -import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare; -import gudusoft.gsqlparser.stmt.mssql.TMssqlFetch; -import gudusoft.gsqlparser.stmt.mssql.TMssqlOpen; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.ESqlStatementType.*; - -public class testCreateProcedure extends TestCase { - - public void testMultipleSQLs(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE PROCEDURE EMP_SCHEMA.SAMPLE_PROC ()\n" + - "BEGIN\n" + - " SELECT * FROM ETL_DB.EMPLOYEE;\n" + - "END;\n" + - "SELECT * FROM ETL_DB.EMPLOYEE;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 2); - - - } - - - public void testPrepare(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE PROCEDURE S1.GetEmployeeSalary\n" + - "(IN EmpName VARCHAR(100), OUT Salary DEC(10,2))\n" + - "BEGIN\n" + - "DECLARE SqlStr VARCHAR(1000);\n" + - "DECLARE C1 CURSOR FOR S1;\n" + - "SET SqlStr = 'SELECT Salary FROM EmployeeTable WHERE EmpName = ?';\n" + - "PREPARE S1 FROM SqlStr;\n" + - "OPEN C1 USING EmpName;\n" + - "FETCH C1 INTO Salary;\n" + - "CLOSE C1;\n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("S1.GetEmployeeSalary")); - - assertTrue(cp.getBodyStatements().size() == 7); - - - System.out.println(cp.getBodyStatements().get(3).sqlstatementtype); - assertTrue(cp.getBodyStatements().get(3).sqlstatementtype == sstprepare); - TPrepareStmt prepareStmt =(TPrepareStmt)cp.getBodyStatements().get(3); - assertTrue(prepareStmt.getStmtName().toString().equalsIgnoreCase("S1")); - assertTrue(prepareStmt.getPreparableStmtStr().equalsIgnoreCase("SqlStr")); - } - - public void testFetch(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "REPLACE PROCEDURE S1.CURSOR_PROC(IN SCENARIO VARCHAR(20), OUT RUN_STATUS VARCHAR(20) )\n" + - "BEGIN\n" + - "\n" + - "DECLARE id INTEGER DEFAULT 0;\n" + - "DECLARE desc VARCHAR(50);\n" + - "\n" + - "DECLARE C4 CURSOR FOR\n" + - "select department_id, department_description from foodmart.department;\n" + - "\n" + - "OPEN C4;\n" + - "FETCH C4 INTO id, desc;\n" + - "CLOSE C4;\n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("S1.CURSOR_PROC")); - - assertTrue(cp.getBodyStatements().size() == 6); - - - assertTrue(cp.getBodyStatements().get(4).sqlstatementtype == sstmssqlfetch); - TMssqlFetch fetch =(TMssqlFetch)cp.getBodyStatements().get(4); - assertTrue(fetch.getCursorName().toString().equalsIgnoreCase("C4")); - assertTrue(fetch.getVariableNames().getObjectName(0).toString().equalsIgnoreCase("id")); - assertTrue(fetch.getVariableNames().getObjectName(1).toString().equalsIgnoreCase("desc")); - } - - public void testSet(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "REPLACE PROCEDURE S1.SET_CHECK()\n" + - "BEGIN\n" + - "\tDECLARE A INTEGER DEFAULT 0;\n" + - "\tSET A = 10;\n" + - "END;"; - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("S1.SET_CHECK")); - - assertTrue(cp.getBodyStatements().size() == 2); - - - assertTrue(cp.getBodyStatements().get(1).sqlstatementtype == sstset); - TSetStmt setStmt = (TSetStmt)cp.getBodyStatements().get(1); - assertTrue(setStmt.getVariableName().toString().equalsIgnoreCase("A")); - assertTrue(setStmt.getVariableValue().toString().equalsIgnoreCase("10")); - } - - public void testWhile(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE PROCEDURE proc (\n" + - " IN i INTEGER,\n" + - " IN j INTEGER)\n" + - "BEGIN\n" + - " DECLARE ii integer;\n" + - " set ii=i;\n" + - " while (ii= V_ACT_CNT\n" + - "END REPEAT ;\n" + - "\n" + - "--Close the cursor and commit\n" + - "CLOSE CUR_LOAD_DATE;\n" + - "CALL DBC.SYSEXECSQL('COMMIT;');\n" + - "\n" + - "--Set output parameter values\n" + - "SET OUT_LOAD_DATES = V_LOAD_DATES;\n" + - "SET OUT_LOAD_DATE_CNT = V_LOAD_DATE_CNT ;\n" + - "SET OUT_LOAD_QRY = V_LOAD_QRY; \n" + - "\n" + - "END ;\n"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TCreateProcedureStmt cp = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(cp.getProcedureName().toString().equalsIgnoreCase("EDW1_RBG_APPLOGIC.LOAD_TMDW_SVC_LOAN_H_MSCC")); - - - assertTrue(cp.getBodyStatements().size() == 22); - assertTrue(cp.getBodyStatements().get(9).sqlstatementtype == ESqlStatementType.sstcall); - assertTrue(cp.getBodyStatements().get(10).sqlstatementtype == ESqlStatementType.sstcommit); - assertTrue(cp.getBodyStatements().get(16).sqlstatementtype == ESqlStatementType.sstRepeat); - assertTrue(cp.getBodyStatements().get(17).sqlstatementtype == ESqlStatementType.sst_closestmt); - - - TRepeatStmt repeatStmt = (TRepeatStmt)cp.getBodyStatements().get(16); - assertTrue(repeatStmt.getCondition().toString().equalsIgnoreCase("V_COUNTER >= V_ACT_CNT")); - assertTrue(repeatStmt.getBodyStatements().size() == 7); - - assertTrue(cp.getBodyStatements().get(7).sqlstatementtype == sstmssqldeclare); - TMssqlDeclare declare = (TMssqlDeclare)cp.getBodyStatements().get(7); - assertTrue(declare.getSubquery().getTables().getTable(0).getTableName().toString().equalsIgnoreCase("CTE_REQ_DATE")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTable.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTable.java deleted file mode 100644 index fe8883b9..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTable.java +++ /dev/null @@ -1,170 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 13-8-28 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.EFunctionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TCTE; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.functions.TRangeNFunction; -import gudusoft.gsqlparser.nodes.teradata.TIndexDefinition; -import gudusoft.gsqlparser.nodes.teradata.TRangeNFunctionItem; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateTable extends TestCase { - - - public void testIndexDefinitionCaseN(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "create table tst.table(\n" + - " col1 integer,\n" + - " CURR_IND char(1))\n" + - "PRIMARY INDEX BILLG_ACCT_NUPI ( col1 )\n" + - "PARTITION BY CASE_N(\n" + - "CURR_IND = 'Y',\n" + - "CURR_IND = 'N')\n"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("tst.table")); - assertTrue(createTable.getColumnList().size() == 2 ); - - TIndexDefinition indexDefinition = createTable.getIndexDefinitions().get(0); - assertTrue(indexDefinition.isPrimary()); - assertTrue(!indexDefinition.isUnique()); - assertTrue(indexDefinition.getIndexColumns().size() == 1); - assertTrue(indexDefinition.getIndexColumns().getObjectName(0).toString().equalsIgnoreCase("col1")); - - TIndexDefinition indexDefinition1 = createTable.getIndexDefinitions().get(1); - - assertTrue(indexDefinition1.getPartitioningLevels().size() == 1); - TExpression partitionExpr = indexDefinition1.getPartitioningLevels().get(0).getPartitionExpression(); - assertTrue(partitionExpr.getExpressionType() == EExpressionType.function_t); - TFunctionCall functionCall = partitionExpr.getFunctionCall(); - assertTrue(functionCall.getFunctionType() == EFunctionType.case_n_t); - TExpression arg0 = functionCall.getArgs().getExpression(0); - assertTrue(arg0.getLeftOperand().toString().equalsIgnoreCase("CURR_IND")); - assertTrue(arg0.getRightOperand().toString().equalsIgnoreCase("'Y'")); - } - - public void testIndexDefinition(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE TABLE Sales\n" + - "(storeid INTEGER NOT NULL,\n" + - "productid INTEGER NOT NULL,\n" + - "salesdate DATE FORMAT 'yyyy-mm-dd' NOT NULL,\n" + - "totalrevenue DECIMAL(13,2),\n" + - "totalsold INTEGER,\n" + - "note VARCHAR(256))\n" + - "UNIQUE PRIMARY INDEX (storeid, productid, salesdate)\n" + - "PARTITION BY (\n" + - "RANGE_N(salesdate BETWEEN\n" + - "DATE '2002-01-01' AND DATE '2008-12-31'\n" + - "EACH INTERVAL '1' YEAR),\n" + - "RANGE_N(storeid BETWEEN 1 AND 300 EACH 100),\n" + - "RANGE_N(productid BETWEEN 1 AND 400 EACH 100));"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("Sales")); - assertTrue(createTable.getColumnList().size() == 6 ); - - TIndexDefinition indexDefinition = createTable.getIndexDefinitions().get(0); - assertTrue(indexDefinition.isPrimary()); - assertTrue(indexDefinition.isUnique()); - assertTrue(indexDefinition.getIndexColumns().size() == 3); - assertTrue(indexDefinition.getIndexColumns().getObjectName(0).toString().equalsIgnoreCase("storeid")); - - TIndexDefinition indexDefinition1 = createTable.getIndexDefinitions().get(1); - - assertTrue(indexDefinition1.getPartitioningLevels().size() == 3); - //assertTrue(indexDefinition.getPartitionExprList().size() == 3); - TExpression partitionExpr = indexDefinition1.getPartitioningLevels().get(0).getPartitionExpression(); - assertTrue(partitionExpr.getExpressionType() == EExpressionType.function_t); - assertTrue(partitionExpr.getFunctionCall().getFunctionType() == EFunctionType.range_n_t); - TRangeNFunction rangeNFunciton = (TRangeNFunction) partitionExpr.getFunctionCall(); - - TExpression test_expression = rangeNFunciton.getExpr1(); - assertTrue(test_expression.toString().equalsIgnoreCase("salesdate")); - assertTrue(rangeNFunciton.getRangeNFunctionItems().size() == 1); - - TRangeNFunctionItem rangeNFunctionItem = rangeNFunciton.getRangeNFunctionItems().get(0); - assertTrue(rangeNFunctionItem.getStartExpression().toString().equalsIgnoreCase("DATE '2002-01-01'")); - assertTrue(rangeNFunctionItem.getEndExpression().toString().equalsIgnoreCase("DATE '2008-12-31'")); - assertTrue(rangeNFunctionItem.getRangeSize().toString().equalsIgnoreCase("INTERVAL '1' YEAR")); - } - - - public void testSubquery(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE VOLATILE TABLE MYREC_V AS (\n" + - " WITH RECURSIVE MYREC( COL1) AS\n" + - " ( SELECT XX.COL1\n" + - " FROM (\n" + - " SELECT COL1,\n" + - " TRIM(MIN(CAST(CAST(L1_ID AS BIGINT) AS VARCHAR(100)))) AS COL2\n" + - " FROM DB2.TABLE2\n" + - " GROUP BY 1\n" + - " ) XX\n" + - " JOIN DB1.TABLE1 C\n" + - " ON XX.COL2 = C.COL2\n" + - " )\n" + - " SELECT COL1\n" + - " FROM MYREC\n" + - ")WITH DATA PRIMARY INDEX(COL1) ON COMMIT PRESERVE ROWS;"; - - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("MYREC_V")); - - assertTrue(createTable.getSubQuery().getCteList().size() == 1); - TCTE cte = createTable.getSubQuery().getCteList().getCTE(0); - assertTrue(cte.getSubquery().toString().equalsIgnoreCase("( SELECT XX.COL1\n" + - " FROM (\n" + - " SELECT COL1,\n" + - " TRIM(MIN(CAST(CAST(L1_ID AS BIGINT) AS VARCHAR(100)))) AS COL2\n" + - " FROM DB2.TABLE2\n" + - " GROUP BY 1\n" + - " ) XX\n" + - " JOIN DB1.TABLE1 C\n" + - " ON XX.COL2 = C.COL2\n" + - " )")); - - } - - public void testTableKind() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - - sqlparser.sqltext = "create volatile table schema.vt (id int, name varchar(1))"; - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("schema.vt")); - assertTrue(createTable.getTableKinds().toString().equalsIgnoreCase("[etkVolatile]")); - - sqlparser.sqltext = "create table schema.vt (id int, name varchar(1));"; - assertTrue(sqlparser.parse() == 0); - createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("schema.vt")); - assertTrue(createTable.getTableKinds().size() == 0); - - sqlparser.sqltext = "create multiset volatile table vt (id int, name varchar(1));"; - assertTrue(sqlparser.parse() == 0); - createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("vt")); - assertTrue(createTable.getTableKinds().toString().equalsIgnoreCase("[etkVolatile, etkMultiset]")); - - } - -} - diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTableWithDataIndex.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTableWithDataIndex.java deleted file mode 100644 index c09cb77c..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTableWithDataIndex.java +++ /dev/null @@ -1,74 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.teradata.TIndexDefinition; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import junit.framework.TestCase; - -public class testCreateTableWithDataIndex extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE MULTISET TABLE test_schema.test_table_table_1\n" + - "AS\n" + - "(\n" + - " SELECT COL1, COL2, COL3\n" + - " FROM test_table2\n" + - ") WITH DATA INDEX(COL3) ON COMMIT PRESERVE ROWS;"; - - - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("test_schema.test_table_table_1")); - assertTrue(createTable.getIndexDefinitions().size() == 1); - TIndexDefinition indexDefinition = createTable.getIndexDefinitions().get(0); - assertTrue(indexDefinition.getIndexColumns().getObjectName(0).toString().equalsIgnoreCase("COL3")); - - } - - public void test2() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "\tCREATE MULTISET TABLE test_schema.test_table_table_1\n" + - "AS\n" + - "(\n" + - " SELECT COL1, COL2, COL3\n" + - " FROM test_table2\n" + - ") WITH DATA UNIQUE PRIMARY INDEX my_index (COL3)\n" + - "ON COMMIT PRESERVE ROWS;"; - - - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("test_schema.test_table_table_1")); - assertTrue(createTable.getIndexDefinitions().size() == 1); - TIndexDefinition indexDefinition = createTable.getIndexDefinitions().get(0); - assertTrue(indexDefinition.getIndexColumns().getObjectName(0).toString().equalsIgnoreCase("COL3")); - - } - - public void test3() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE MULTISET TABLE test_schema.test_table_table_1\n" + - "AS\n" + - "(\n" + - " SELECT COL1, COL2, COL3\n" + - " FROM test_table2\n" + - ") WITH DATA PRIMARY INDEX\n" + - "(COL3, COL2)\n" + - "ON COMMIT PRESERVE ROWS;"; - - - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0); - assertTrue(createTable.getTableName().toString().equalsIgnoreCase("test_schema.test_table_table_1")); - assertTrue(createTable.getIndexDefinitions().size() == 1); - TIndexDefinition indexDefinition = createTable.getIndexDefinitions().get(0); - assertTrue(indexDefinition.getIndexColumns().getObjectName(0).toString().equalsIgnoreCase("COL3")); - assertTrue(indexDefinition.getIndexColumns().getObjectName(1).toString().equalsIgnoreCase("COL2")); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTrigger.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTrigger.java deleted file mode 100644 index 1bfee61b..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testCreateTrigger.java +++ /dev/null @@ -1,175 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TCreateTriggerStmt; -import junit.framework.TestCase; - -public class testCreateTrigger extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "REPLACE TRIGGER IDW_APP_DPR.TR_UPD_WELL_DAILY_OVR AFTER \n" + - "UPDATE ON IDW_APP_DPR.DPRUPDATES\n" + - "REFERENCING NEW AS NEW_WDO\n" + - "FOR EACH ROW\n" + - "(\n" + - "DELETE IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE ALL;\n" + - "\n" + - "INSERT INTO IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE (UWI, UWI_SIDETRACK,\n" + - "ACTIVE_IND, PROD_DATE, OIL_TOTAL, OIL_BLOWCASE, GAS_HP, GAS_LP,\n" + - "EFFECTIVE_DATE, EXPIRY_DATE, PPDM_GUID, SOURCE, ROW_CHANGED_BY,\n" + - "ROW_CHANGED_DATE, ROW_CREATED_BY, ROW_CREATED_DATE,\n" + - "ROW_QUALITY_ID, JOB_RUN_ID, GAS_FUEL, GAS_LIFT) \n" + - "VALUES \n" + - "(\n" + - "NEW_WDO.WELLID, \n" + - "'99', \n" + - "'Y', \n" + - "NEW_WDO.PRODDATE, \n" + - "NEW_WDO.TANKOIL, \n" + - "NEW_WDO.BCOIL,\n" + - "NEW_WDO.HPGAS, \n" + - "NEW_WDO.LPGAS, \n" + - "CURRENT_TIMESTAMP(0), \n" + - "CAST('9999-12-31 00:00:00' AS TIMESTAMP(0)), \n" + - "NULL, \n" + - "'DPR',\n" + - "NEW_WDO.ROW_CHANGED_BY, \n" + - "CURRENT_TIMESTAMP(0), \n" + - "NEW_WDO.ROW_CREATED_BY, \n" + - "NEW_WDO.ROW_CREATED_DATE,\n" + - "'192', \n" + - "CURRENT_TIMESTAMP(FORMAT 'YYYYMMDDHHMISS') (VARCHAR(16)),\n" + - "NEW_WDO.GASFUEL,\n" + - "NEW_WDO.GASLIFT);\n" + - "\n" + - "INSERT INTO IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE (UWI, UWI_SIDETRACK,\n" + - "ACTIVE_IND, PROD_DATE, OIL_TOTAL, OIL_BLOWCASE, GAS_HP, GAS_LP,\n" + - "EFFECTIVE_DATE, EXPIRY_DATE, PPDM_GUID, SOURCE, ROW_CHANGED_BY,\n" + - "ROW_CHANGED_DATE, ROW_CREATED_BY, ROW_CREATED_DATE,\n" + - "ROW_QUALITY_ID, JOB_RUN_ID, GAS_FUEL, GAS_LIFT)\n" + - "SELECT \n" + - "S.UWI, \n" + - "S.UWI_SIDETRACK, \n" + - "S.ACTIVE_IND, \n" + - "S.PROD_DATE, \n" + - "S.OIL_TOTAL, \n" + - "S.OIL_BLOWCASE,\n" + - "S.GAS_HP, \n" + - "S.GAS_LP, \n" + - "S.EFFECTIVE_DATE, \n" + - "S.EXPIRY_DATE, \n" + - "S.PPDM_GUID, \n" + - "S.SOURCE,\n" + - "S.ROW_CHANGED_BY, \n" + - "CURRENT_TIMESTAMP(0), \n" + - "S.ROW_CREATED_BY, \n" + - "S.ROW_CREATED_DATE,\n" + - "S.ROW_QUALITY_ID, \n" + - "CURRENT_TIMESTAMP(FORMAT 'YYYYMMDDHHMISS') (VARCHAR(16)),\n" + - "S.GAS_FUEL, \n" + - "S.GAS_LIFT\n" + - "FROM IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE S\n" + - "INNER JOIN \n" + - "IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE C\n" + - "ON \n" + - "S.UWI = C.UWI\n" + - "AND S.PROD_DATE = C.PROD_DATE\n" + - "AND C.ACTIVE_IND = 'Y'\n" + - "WHERE \n" + - "(\n" + - "CASE WHEN (\n" + - "((S.OIL_TOTAL IS NULL AND C.OIL_TOTAL IS NULL) OR (S.OIL_TOTAL = C.OIL_TOTAL)) \n" + - "AND ((S.OIL_BLOWCASE IS NULL AND C.OIL_BLOWCASE IS NULL) OR (S.OIL_BLOWCASE = C.OIL_BLOWCASE)) \n" + - "AND ((S.GAS_HP IS NULL AND C.GAS_HP IS NULL) OR (S.GAS_HP = C.GAS_HP)) \n" + - "AND ((S.GAS_LP IS NULL AND C.GAS_LP IS NULL) OR (S.GAS_LP = C.GAS_LP)) \n" + - "AND ((S.GAS_FUEL IS NULL AND C.GAS_FUEL IS NULL) OR (S.GAS_FUEL = C.GAS_FUEL))\n" + - "AND ((S.GAS_LIFT IS NULL AND C.GAS_LIFT IS NULL) OR (S.GAS_LIFT = C.GAS_LIFT))\n" + - ") THEN 'N' \n" + - "ELSE 'Y' \n" + - "END ) = 'Y';\n" + - "\n" + - "\n" + - "UPDATE IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE\n" + - "FROM \n" + - "(\n" + - "SELECT \n" + - "UWI, \n" + - "UWI_SIDETRACK, \n" + - "ACTIVE_IND, \n" + - "PROD_DATE, \n" + - "OIL_TOTAL, \n" + - "OIL_BLOWCASE,\n" + - "GAS_HP, \n" + - "GAS_LP, \n" + - "EFFECTIVE_DATE, \n" + - "EXPIRY_DATE, \n" + - "PPDM_GUID, \n" + - "SOURCE,\n" + - "ROW_CHANGED_BY, \n" + - "ROW_CREATED_BY, \n" + - "ROW_CREATED_DATE,\n" + - "ROW_QUALITY_ID,\n" + - "GAS_FUEL,\n" + - "GAS_LIFT\n" + - "FROM IDW_STAGE_RT.IDW_WELL_DAILY_OVERRIDE) S \n" + - "SET \n" + - "ACTIVE_IND = 'N',\n" + - "EXPIRY_DATE = CURRENT_TIMESTAMP(0),\n" + - "ROW_CHANGED_DATE = CURRENT_TIMESTAMP(0)\n" + - "WHERE \n" + - "S.UWI = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.UWI\n" + - "AND S.PROD_DATE = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.PROD_DATE\n" + - "AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.ACTIVE_IND = 'Y'\n" + - "AND (\n" + - "CASE WHEN (\n" + - "((S.OIL_TOTAL IS NULL \n" + - " AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_TOTAL IS NULL) OR (S.OIL_TOTAL = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_TOTAL)) \n" + - " AND ((S.OIL_BLOWCASE IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_BLOWCASE IS NULL) OR (S.OIL_BLOWCASE = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.OIL_BLOWCASE)) \n" + - " AND ((S.GAS_HP IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_HP IS NULL) OR (S.GAS_HP = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_HP)) \n" + - " AND ((S.GAS_LP IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LP IS NULL) OR (S.GAS_LP = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LP)) \n" + - " AND ((S.GAS_FUEL IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_FUEL IS NULL) OR (S.GAS_FUEL = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_FUEL))\n" + - "AND ((S.GAS_LIFT IS NULL AND IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LIFT IS NULL) OR (S.GAS_LIFT = IDW_CORE_EXT_T.IDW_WELL_DAILY_OVERRIDE.GAS_LIFT))\n" + - ") THEN 'N' \n" + - "ELSE 'Y' \n" + - "END ) = 'Y';\n" + - ");"; - - //System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetrigger); - TCreateTriggerStmt createTriggerStmt = (TCreateTriggerStmt)sqlparser.sqlstatements.get(0); - assertTrue(createTriggerStmt.getTriggerName().toString().equalsIgnoreCase("IDW_APP_DPR.TR_UPD_WELL_DAILY_OVR")); - assertTrue(createTriggerStmt.getTables().getTable(0).toString().endsWith("IDW_APP_DPR.DPRUPDATES")); - - // dml trigger - TTriggeringClause triggeringClause = createTriggerStmt.getTriggeringClause(); - assertTrue(triggeringClause instanceof TSimpleDmlTriggerClause); - TSimpleDmlTriggerClause dmlTriggerClause = (TSimpleDmlTriggerClause)triggeringClause; - assertTrue(dmlTriggerClause.getActionTime() == ETriggerActionTime.tatAfter); - assertTrue(dmlTriggerClause.getGranularity() == ETriggerGranularity.forEachRow); - - // dml event clause - TDmlEventClause dmlEventClause = (TDmlEventClause)dmlTriggerClause.getEventClause(); - TDmlEventItem dmlEventItem = (TDmlEventItem)dmlEventClause.getEventItems().get(0); - assertTrue(dmlEventItem.getDmlType() == ESqlStatementType.sstupdate); - assertTrue(dmlEventItem.getEventName().equalsIgnoreCase("update")); - - // referencing clause - TTriggerReferencingClause referencingClause = dmlTriggerClause.getReferencingClause(); - assertTrue(referencingClause.getReferencingItems().size() == 1); - TTriggerReferencingItem referencingItem = referencingClause.getReferencingItems().get(0); - assertTrue(referencingItem.getTriggerReferencingType() == ETriggerReferencingType.rtNew); - assertTrue(referencingItem.getCorrelationName().toString().equalsIgnoreCase("NEW_WDO")); - - assertTrue(createTriggerStmt.getBodyStatements().size() == 4); - assertTrue(createTriggerStmt.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstdelete); - assertTrue(createTriggerStmt.getBodyStatements().get(1).sqlstatementtype == ESqlStatementType.sstinsert); - assertTrue(createTriggerStmt.getBodyStatements().get(2).sqlstatementtype == ESqlStatementType.sstinsert); - assertTrue(createTriggerStmt.getBodyStatements().get(3).sqlstatementtype == ESqlStatementType.sstupdate); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testDataConversion.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testDataConversion.java deleted file mode 100644 index 0386fb36..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testDataConversion.java +++ /dev/null @@ -1,207 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.TDatatypeAttribute; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TTypeName; -import gudusoft.gsqlparser.nodes.teradata.TDataConversion; -import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testDataConversion extends TestCase { - - public void test5 (){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT hire_date (time(6)) FROM Schema.table_name;"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); - - // data conversion, only one conversion - assertTrue(expr.getDataConversions().size() == 1); - TDataConversion dataConversion = expr.getDataConversions().get(0); - - // items in data conversion - assertTrue(dataConversion.getDataConversionItems().size() == 1); - - // the first item in data conversion, here is the FORMAT data attribute - TDataConversionItem item = dataConversion.getDataConversionItems().get(0); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); - TTypeName dataType = item.getDataType(); - assertTrue(dataType.getDataType() == EDataType.time_t); - } - - - public void test4 (){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select id + 1\n" + - "from hr.TimeInfo\n" + - "where id + 1 (integer) > 1"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getWhereClause().getCondition().getLeftOperand(); - - // data conversion, only one conversion - assertTrue(expr.getDataConversions().size() == 1); - TDataConversion dataConversion = expr.getDataConversions().get(0); - - // items in data conversion - assertTrue(dataConversion.getDataConversionItems().size() == 1); - - // the first item in data conversion, here is the FORMAT data attribute - TDataConversionItem item = dataConversion.getDataConversionItems().get(0); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); - TTypeName dataType = item.getDataType(); - assertTrue(dataType.getDataType() == EDataType.integer_t); - } - - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT a*5+3 (NAMED X), x*2 (NAMED Y)\n" + - " FROM T;"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - - // data conversion, only one conversion - assertTrue(expr.getDataConversions().size() == 1); - TDataConversion dataConversion = expr.getDataConversions().get(0); - - // items in data conversion - assertTrue(dataConversion.getDataConversionItems().size() == 1); - - // the first item in data conversion, here is the FORMAT data attribute - TDataConversionItem item = dataConversion.getDataConversionItems().get(0); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - TDatatypeAttribute datatypeAttribute = item.getDatatypeAttribute(); - assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.named_t); - } - - public void test0(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select col1 (DATE) from tab1"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - - // data conversion, only one conversion - assertTrue(expr.getDataConversions().size() == 1); - TDataConversion dataConversion = expr.getDataConversions().get(0); - - // items in data conversion - assertTrue(dataConversion.getDataConversionItems().size() == 1); - - // the first item in data conversion, here is the FORMAT data attribute - TDataConversionItem item = dataConversion.getDataConversionItems().get(0); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); - TTypeName dataType = item.getDataType(); - assertTrue(dataType.getDataType() == EDataType.date_t); - } - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT salary_amount (FORMAT '$,$$9,999.99') from t;"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr = select.getResultColumnList().getResultColumn(0).getExpr(); - - // data conversion, only one conversion - assertTrue(expr.getDataConversions().size() == 1); - TDataConversion dataConversion = expr.getDataConversions().get(0); - - // items in data conversion - assertTrue(dataConversion.getDataConversionItems().size() == 1); - - // the first item in data conversion, here is the FORMAT data attribute - TDataConversionItem item = dataConversion.getDataConversionItems().get(0); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - TDatatypeAttribute datatypeAttribute = item.getDatatypeAttribute(); - assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.format_t); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select id (FORMAT '$,$$9,999.99' ) (Title 'abd') , myName (varchar(1),uppercase, CASESPECIFIC, Title 'ssss'), offset (interval year) \n" + - "from hr.TimeInfo;\n"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - // expr in the first column - TExpression expr0 = select.getResultColumnList().getResultColumn(0).getExpr(); - - // 2 data conversions - assertTrue(expr0.getDataConversions().size() == 2); - - // first data conversion: (FORMAT '$,$$9,999.99' ) - TDataConversion dataConversion0 = expr0.getDataConversions().get(0); - // items in data conversion - assertTrue(dataConversion0.getDataConversionItems().size() == 1); - // the first item in data conversion, here is the FORMAT data attribute - TDataConversionItem item = dataConversion0.getDataConversionItems().get(0); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - TDatatypeAttribute datatypeAttribute = item.getDatatypeAttribute(); - assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.format_t); - - // the second conversion: (Title 'abd') - TDataConversion dataConversion1 = expr0.getDataConversions().get(1); - // items in data conversion - assertTrue(dataConversion1.getDataConversionItems().size() == 1); - // the first item in data conversion, here is the FORMAT data attribute - item = dataConversion1.getDataConversionItems().get(0); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - datatypeAttribute = item.getDatatypeAttribute(); - assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.title_t); - - - // expr in the second column - TExpression expr1 = select.getResultColumnList().getResultColumn(1).getExpr(); - - // 1 data conversion: (varchar(1),uppercase, CASESPECIFIC, Title 'ssss') - assertTrue(expr1.getDataConversions().size() == 1); - - // first data conversion: (varchar(1),uppercase, CASESPECIFIC, Title 'ssss') - dataConversion0 = expr1.getDataConversions().get(0); - // items in data conversion - assertTrue(dataConversion0.getDataConversionItems().size() == 4); - // the first item in data conversion: varchar(1) - item = dataConversion0.getDataConversionItems().get(0); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); - TTypeName typeName = item.getDataType(); - assertTrue(typeName.getDataType() == EDataType.varchar_t); - - // the second item in data conversion: uppercase - item = dataConversion0.getDataConversionItems().get(1); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - datatypeAttribute = item.getDatatypeAttribute(); - assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.uppercase_t); - - // the third item in data conversion: CASESPECIFIC - item = dataConversion0.getDataConversionItems().get(2); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - datatypeAttribute = item.getDatatypeAttribute(); - assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.casespecific_t); - - // the fourth item in data conversion: Title 'ssss' - item = dataConversion0.getDataConversionItems().get(3); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - datatypeAttribute = item.getDatatypeAttribute(); - assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.title_t); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testDateFunction.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testDateFunction.java deleted file mode 100644 index 13ff8c8e..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testDateFunction.java +++ /dev/null @@ -1,33 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.EFunctionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testDateFunction extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT '2020-12-12'(NAMED dt_run), EMPLOYEE_ID\n" + - "FROM foodmart.TRIMMED_EMPLOYEE\n" + - "GROUP BY DATE, EMPLOYEE_ID;"; - - // System.out.println(sqlparser.sqltext); - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expression = select.getGroupByClause().getItems().getGroupByItem(0).getExpr(); - //System.out.println(select.getGroupByClause().getItems().size()); - assertTrue(expression.toString().equalsIgnoreCase("DATE")); - assertTrue(expression.getExpressionType() == EExpressionType.function_t); - TFunctionCall functionCall = expression.getFunctionCall(); - assertTrue(functionCall.getFunctionName().toString().equalsIgnoreCase("DATE")); - assertTrue(functionCall.getFunctionType() == EFunctionType.date_t); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testDropConstraint.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testDropConstraint.java deleted file mode 100644 index ce45e780..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testDropConstraint.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; - -import gudusoft.gsqlparser.stmt.teradata.TDropConstraintStmt; -import junit.framework.TestCase; - -public class testDropConstraint extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "DROP constraint group_membership;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatadropconstraint); - TDropConstraintStmt drop = (TDropConstraintStmt)sqlparser.sqlstatements.get(0); - assertTrue(drop.getConstraintName().toString().equalsIgnoreCase("group_membership")); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testExecuteMacro.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testExecuteMacro.java deleted file mode 100644 index 86ec9bcf..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testExecuteMacro.java +++ /dev/null @@ -1,44 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExecParameter; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.teradata.TTeradataExecute; -import junit.framework.TestCase; - -public class testExecuteMacro extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "EXEC add_log_info('1', CAST('2016-02-23' AS DATE FORMAT 'YYYY-MM-DD'), 'CAD_RK', 'Blad CAD_RK_P_K42', -1);"; - assertTrue(sqlparser.parse() == 0); - TTeradataExecute execute = (TTeradataExecute)sqlparser.sqlstatements.get(0); - - assertTrue(execute.getMacroName().toString().equalsIgnoreCase("add_log_info")); - assertTrue(execute.getParameters().size() == 5); - assertTrue(execute.getParameters().getExecParameter(0).getParameterValue().toString().equalsIgnoreCase("'1'")); - TExpression expr = execute.getParameters().getExecParameter(1).getParameterValue(); - assertTrue(expr.getExpressionType() == EExpressionType.function_t); - assertTrue(expr.getFunctionCall().getFunctionName().toString().equalsIgnoreCase("CAST")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "EXECUTE new_hire (fl_name='Toby Smith', title='Programmer',doh=DATE -1);"; - assertTrue(sqlparser.parse() == 0); - TTeradataExecute execute = (TTeradataExecute)sqlparser.sqlstatements.get(0); - - assertTrue(execute.getMacroName().toString().equalsIgnoreCase("new_hire")); - TExecParameter parameter = execute.getParameters().getExecParameter(0); - assertTrue(parameter.getParameterName().toString().equalsIgnoreCase("fl_name")); - assertTrue(parameter.getParameterValue().toString().equalsIgnoreCase("'Toby Smith'")); - - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testExpandOn.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testExpandOn.java deleted file mode 100644 index 442f3976..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testExpandOn.java +++ /dev/null @@ -1,26 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.nodes.teradata.TExpandOnClause; -import junit.framework.TestCase; - -public class testExpandOn extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " SELECT id, BEGIN(bg)\n" + - " FROM tdate\n" + - " EXPAND ON pd AS bg BY ANCHOR MONDAY;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpandOnClause expandOnClause = select.getExpandOnClause(); - assertTrue(expandOnClause.getExpandExpression().toString().equalsIgnoreCase("pd")); - assertTrue(expandOnClause.getExpandColumnAlias().toString().equalsIgnoreCase("bg")); - assertTrue(expandOnClause.getAnchorName().toString().equalsIgnoreCase("MONDAY")); - - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testExprType.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testExprType.java deleted file mode 100644 index 5798d773..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testExprType.java +++ /dev/null @@ -1,53 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testExprType extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT\n" + - " USER_ID\n" + - " ,MAX(CASE WHEN RANK_ID = 1 THEN BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 2 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 3 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 4 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 5 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 6 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 7 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 8 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 9 THEN ','||BHVR_TXT ELSE '' END)||\n" + - " MAX(CASE WHEN RANK_ID = 10 THEN ','||BHVR_TXT ELSE '' END) bhvr_txt\n" + - " FROM\n" + - " (\n" + - " SEL slr_id USER_ID\n" + - " ,COALESCE(TRIM(BHVR_ID(FORMAT 'Z(17)9')), '')\n" + - " ||':'\n" + - " ||COALESCE(TRIM(priority(FORMAT 'Z(17)9.99')), '')\n" + - " AS BHVR_TXT\n" + - " ,ROW_NUMBER() OVER(PARTITION BY slr_id ORDER BY priority DESC) rank_id\n" + - " FROM working.b2p_seller_coaching_us clv\n" + - " QUALIFY rank_id<=10\n" + - " ) x\n" + - " GROUP BY 1"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement subquery = select.tables.getTable(0).subquery; - TExpression expr = subquery.getResultColumnList().getResultColumn(1).getExpr(); - expr = expr.getLeftOperand().getLeftOperand(); - TFunctionCall func = expr.getFunctionCall(); - expr = func.getArgs().getExpression(0); - func = expr.getFunctionCall(); - expr = func.getTrimArgument().getStringExpression(); - assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expr.getObjectOperand().toString().equalsIgnoreCase("BHVR_ID")); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testExprWithAlias.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testExprWithAlias.java deleted file mode 100644 index 7182ddc3..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testExprWithAlias.java +++ /dev/null @@ -1,56 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testExprWithAlias extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " SELECT *\n" + - " FROM test\n" + - " where (\n" + - "COALESCE(SOR_SECR_POOL_ID,'UNKNOWN') AS SOR_SECR_POOL_ID ,\n" + - "COALESCE(SOR_SYS_ID,-999) AS SOR_SYS_ID ,\n" + - "COALESCE(SECR_CNDT_RCV_CO_NO,'UNKNO') AS SECR_CNDT_RCV_CO_NO ,\n" + - "COALESCE(SECR_CNDT_RCV_CC_NO,'UNKNOWN') AS SECR_CNDT_RCV_CC_NO ,\n" + - "COALESCE(SECR_CNDT_RCV_DE,'UNKNOWN') AS SECR_CNDT_RCV_DE ,\n" + - "COALESCE(SECR_PGM_ID,-999) AS SECR_PGM_ID ,\n" + - "COALESCE(SECR_POOL_SEQ_NO,-999) AS SECR_POOL_SEQ_NO\n" + - ")\n" + - "NOT IN\n" + - "(\n" + - "SELECT\n" + - "COALESCE(SOR_SECR_POOL_ID,'UNKNOWN') AS SOR_SECR_POOL_ID ,\n" + - "COALESCE(SOR_SYS_ID,-999) AS SOR_SYS_ID ,\n" + - "COALESCE(SECR_CNDT_RCV_CO_NO,'UNKNO') AS SECR_CNDT_RCV_CO_NO ,\n" + - "COALESCE(SECR_CNDT_RCV_CC_NO,'UNKNOWN') AS SECR_CNDT_RCV_CC_NO ,\n" + - "COALESCE(SECR_CNDT_RCV_DE,'UNKNOWN') AS SECR_CNDT_RCV_DE ,\n" + - "COALESCE(SECR_PGM_ID,-999) AS SECR_PGM_ID ,\n" + - "COALESCE(SECR_POOL_SEQ_NO,-999) AS SECR_POOL_SEQ_NO\n" + - "FROM ENTR.SECR_PGM_POOL_CTL\n" + - "WHERE\n" + - "UPDT_LOAD_BTCH_ID IS NULL\n" + - "AND SSFA_CLTRL_AS_OF_DT IS NOT NULL\n" + - "AND (QUAL_MTG_AMT IS NULL AND UNQUAL_MTG_AMT IS NULL AND NON_MTG_AMT IS NULL)\n" + - ")"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TExpression expr1 = select.getWhereClause().getCondition(); - //System.out.print(expr1.getExpressionType()); - assertTrue(expr1.getExpressionType() == EExpressionType.in_t); - TExpression leftexpr = expr1.getLeftOperand(); - assertTrue(leftexpr.getExpressionType() == EExpressionType.list_t); - assertTrue(leftexpr.getExprList().size() == 7); - TExpression expr2 = leftexpr.getExprList().getExpression(0); - assertTrue(expr2.getExprAlias().toString().endsWith("SOR_SECR_POOL_ID")); - assertTrue(expr2.getExpressionType() == EExpressionType.function_t); - assertTrue(expr2.getFunctionCall().toString().endsWith("COALESCE(SOR_SECR_POOL_ID,'UNKNOWN')")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testFastExportCmd.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testFastExportCmd.java deleted file mode 100644 index 4beb1456..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testFastExportCmd.java +++ /dev/null @@ -1,19 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testFastExportCmd extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = ".EXPORT FILE=a/b/file.txt\n" + - "Select * from abc"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() ==2); - - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testFunctionINResultColumn.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testFunctionINResultColumn.java deleted file mode 100644 index cdf5d2e3..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testFunctionINResultColumn.java +++ /dev/null @@ -1,57 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 14-6-16 - */ - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.nodes.teradata.TDataConversion; -import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testFunctionINResultColumn extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT a.acc_co_no (SMALLINT)\n" + - "FROM a"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn rc = select.getResultColumnList().getResultColumn(0); - assertTrue(rc.toString().equalsIgnoreCase("a.acc_co_no (SMALLINT)")); - TExpression e = rc.getExpr(); - //System.out.println(e.toString()); - assertTrue(e.toString().equalsIgnoreCase("a.acc_co_no (SMALLINT)")); - assertTrue(e.getObjectOperand().toString().equalsIgnoreCase("a.acc_co_no")); - TDataConversion dataConversion = e.getDataConversions().get(0); - TDataConversionItem dataConversionItem = dataConversion.getDataConversionItems().get(0); - assertTrue(dataConversionItem.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); - assertTrue(dataConversionItem.getDataType().getDataType() == EDataType.smallint_t); - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select col1 (DATE), col2 from tab1"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn rc = select.getResultColumnList().getResultColumn(0); - assertTrue(rc.toString().equalsIgnoreCase("col1 (DATE)")); - TExpression e = rc.getExpr(); - // System.out.println(e.getExpressionType()+e.toString()); - assertTrue(e.toString().equalsIgnoreCase("col1 (DATE)")); - assertTrue(e.getObjectOperand().toString().equalsIgnoreCase("col1")); - - TDataConversion dataConversion = e.getDataConversions().get(0); - TDataConversionItem dataConversionItem = dataConversion.getDataConversionItems().get(0); - assertTrue(dataConversionItem.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); - assertTrue(dataConversionItem.getDataType().getDataType() == EDataType.date_t); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testGetDiagnostics.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testGetDiagnostics.java deleted file mode 100644 index 2024cfa3..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testGetDiagnostics.java +++ /dev/null @@ -1,40 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TCreateProcedureStmt; -import junit.framework.TestCase; - -import static gudusoft.gsqlparser.ESqlStatementType.*; - -public class testGetDiagnostics extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "REPLACE PROCEDURE SIT07_PRES_BLC_PGM.P_BLC_EXECUTEANDLOG\n" + - "\n" + - "MAIN:\n" + - "BEGIN\n" + - "\n" + - "DECLARE EXIT HANDLER FOR SQLEXCEPTION\n" + - "BEGIN\n" + - "\n" + - " SET VSQL_CODE = SQLCODE;\n" + - " SET VSQL_STATE = SQLSTATE;\n" + - " GET DIAGNOSTICS EXCEPTION 1 VERROR_TEXT = MESSAGE_TEXT;\n" + - " SET ORETURN_CODE = 2;\n" + - " EXECUTE VSQL_MSG;\n" + - "END;\n" + - "\n" + - "END MAIN;"; - assertTrue(sqlparser.parse() == 0); - assertTrue (sqlparser.sqlstatements.get(0).sqlstatementtype == sstcreateprocedure); - TCreateProcedureStmt procedure = (TCreateProcedureStmt)sqlparser.sqlstatements.get(0); - assertTrue(procedure.getProcedureName().toString().equalsIgnoreCase("SIT07_PRES_BLC_PGM.P_BLC_EXECUTEANDLOG")); - assertTrue(procedure.getBodyStatements().size() == 1); - assertTrue(procedure.getBodyStatements().get(0).sqlstatementtype == sstmssqldeclare); - - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testGetRawStatement.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testGetRawStatement.java deleted file mode 100644 index 0162a44f..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testGetRawStatement.java +++ /dev/null @@ -1,31 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testGetRawStatement extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = ".SET MAXERROR 4\n" + - ".SET RETRY OFF\n" + - "\n" + - "SELECT c from t WHERE 1=2;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 3); - - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SET level=value\n" + - "SELECT level, param, 'GMKSA' (TITLE 'OWNER')\n" + - " FROM gmksa\n" + - " WHERE cycle = '03'"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.size() == 2); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testGetTableName.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testGetTableName.java deleted file mode 100644 index cf160d23..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testGetTableName.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testGetTableName extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT colX, colY FROM (SELECT * FROM table1, table2) as x"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TTable table = select.tables.getTable(0); - assertTrue(table.getName().equalsIgnoreCase("subquery")); - // System.out.println(table.getName()); - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testGive.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testGive.java deleted file mode 100644 index 66f5403e..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testGive.java +++ /dev/null @@ -1,22 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.teradata.TTeradataGive; -import junit.framework.TestCase; - -public class testGive extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "GIVE \"perms\" to USERS;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatagive); - TTeradataGive give = (TTeradataGive)sqlparser.sqlstatements.get(0); - assertTrue(give.getDb_or_user_name().toString().equalsIgnoreCase("\"perms\"")); - assertTrue(give.getRecipient_name().toString().equalsIgnoreCase("USERS")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testGroupBy.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testGroupBy.java deleted file mode 100644 index 1a989b93..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testGroupBy.java +++ /dev/null @@ -1,90 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 13-2-8 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TGroupBy; -import gudusoft.gsqlparser.nodes.TOrderBy; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testGroupBy extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT\n" + - "\tSECR_EXPSR_ID\n" + - "FROM\n" + - "\tENTR.SECR_EXPSR\n" + - "GROUP BY (1,2,3,4,5,6,7,8,9,10,11,12)\n" + - ";\n" + - ""; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TGroupBy groupBy = select.getGroupByClause(); - assertTrue(groupBy.getItems().size() == 12); - assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("1")); - assertTrue(groupBy.getItems().getGroupByItem(11).getExpr().toString().equalsIgnoreCase("12")); - - } - - public void testHavingAfterOrderBy(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT\n" + - " ANA_Code\n" + - ", Transaction_Date\n" + - ", Transaction_Time\n" + - ", Till_Number\n" + - ", Transaction_Number\n" + - "FROM\n" + - " WT_EPOSAP_Basket_Sales_Final\n" + - "GROUP BY\n" + - " 1,2,3,4,5\n" + - "ORDER BY\n" + - " 1,2,3,4,5\n" + - "HAVING COUNT(*)>1"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TGroupBy groupBy = select.getGroupByClause(); - assertTrue(groupBy.getHavingClause().toString().equalsIgnoreCase("COUNT(*)>1")); - assertTrue(groupBy.getItems().size() == 5); - assertTrue(groupBy.getItems().getGroupByItem(0).getExpr().toString().equalsIgnoreCase("1")); - TOrderBy orderBy = select.getOrderbyClause(); - assertTrue(orderBy.getItems().size() == 5); - assertTrue(orderBy.getItems().getOrderByItem(1).getSortKey().toString().equalsIgnoreCase("2")); - - } - - - public void testHavingOnly(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT Count(*) \n" + - "FROM ( \n" + - " SELECT Count(DISTINCT location)(decimal(18,4)) AS rbp_cnt \n" + - " FROM vwv0rbp_reclass_bgt_pp_changes) AS rbp, \n" + - " ( \n" + - " SELECT count(DISTINCT location)(decimal(18,4)) AS locs_cnt \n" + - " FROM vwv0locs_location_snapshot) AS locs, \n" + - " ( \n" + - " SELECT min(reclassify_all_pct) AS reclassify_all_pct \n" + - " FROM vwv0rcm_reclass_ref \n" + - " WHERE reclassification_type_code = 'LOC') AS rcm \n" + - "WHERE ( \n" + - " rbp_cnt / locs_cnt * 100) < rcm.reclassify_all_pct \n" + - "HAVING count(*) > 0;"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TGroupBy groupBy = select.getGroupByClause(); - assertTrue(groupBy.getHavingClause().toString().equalsIgnoreCase("count(*) > 0")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testIntervalPeriodFunction.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testIntervalPeriodFunction.java deleted file mode 100644 index a6b14844..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testIntervalPeriodFunction.java +++ /dev/null @@ -1,34 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 11-10-13 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TFunctionCall; -import gudusoft.gsqlparser.nodes.TResultColumn; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testIntervalPeriodFunction extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT\n" + - " person_id,\n" + - " INTERVAL(enrolled_period) DAY(4) AS DayCt -- Note that DAY does not work (overflow)\n" + - "FROM person_coaching_period\n" + - "WHERE END(enrolled_period) IS NOT UNTIL_CHANGED -- Only those that are ended\n" + - "ORDER BY person_id, coaching_program, enrolled_period;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(1); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("INTERVAL(enrolled_period) DAY(4)")); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.function_t); - - TFunctionCall functionCall = resultColumn.getExpr().getFunctionCall(); - assertTrue(functionCall.getArgs().getExpression(0).toString().equalsIgnoreCase("enrolled_period")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testJoins.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testJoins.java deleted file mode 100644 index aa86c215..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testJoins.java +++ /dev/null @@ -1,64 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EJoinType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TJoin; -import gudusoft.gsqlparser.nodes.TJoinItem; -import gudusoft.gsqlparser.nodes.TJoinList; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testJoins extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select *\n" + - "from\n" + - " table1 as t1\n" + - " cross join table2 as t2\n" + - " inner join ttt as s1 on t1.col1 = t2.col2\n" + - " ;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TJoinList joins = selectSqlStatement.joins; - assertTrue(joins.size() == 1); - TJoin join = joins.getJoin(0); - assertTrue(join.getTable().toString().equalsIgnoreCase("table1")); - assertTrue(join.getJoinItems().size() == 2); - TJoinItem joinItem0 = join.getJoinItems().getJoinItem(0); - TJoinItem joinItem1 = join.getJoinItems().getJoinItem(1); - assertTrue(joinItem0.getTable().toString().equalsIgnoreCase("table2")); - assertTrue(joinItem0.getJoinType() == EJoinType.cross); - assertTrue(joinItem1.getTable().toString().equalsIgnoreCase("ttt")); - assertTrue(joinItem1.getJoinType() == EJoinType.inner); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select *\n" + - "from\n" + - " table1 as t1\n" + - " cross join table2 as t2\n" + - " left join ttt as s1 on t1.col1 = t2.col2\n" + - " ;"; - assertTrue(sqlparser.parse() == 0); - - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TJoinList joins = selectSqlStatement.joins; - assertTrue(joins.size() == 1); - TJoin join = joins.getJoin(0); - assertTrue(join.getTable().toString().equalsIgnoreCase("table1")); - assertTrue(join.getJoinItems().size() == 2); - TJoinItem joinItem0 = join.getJoinItems().getJoinItem(0); - TJoinItem joinItem1 = join.getJoinItems().getJoinItem(1); - assertTrue(joinItem0.getTable().toString().equalsIgnoreCase("table2")); - assertTrue(joinItem0.getJoinType() == EJoinType.cross); - assertTrue(joinItem1.getTable().toString().equalsIgnoreCase("ttt")); - assertTrue(joinItem1.getJoinType() == EJoinType.left); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testLiteral.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testLiteral.java deleted file mode 100644 index c00f30df..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testLiteral.java +++ /dev/null @@ -1,19 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - - -public class testLiteral extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "INSERT t1 (TIME '10:44:25.123-08:00',\n" + - "TIMESTAMP '2000-09-20 10:44:25.1234');"; - assertTrue(sqlparser.parse() == 0); - - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testLock.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testLock.java deleted file mode 100644 index 1f8c0d6a..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testLock.java +++ /dev/null @@ -1,80 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 13-10-11 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.teradata.TTeradataLockClause; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.teradata.TTeradataLock; -import junit.framework.TestCase; - -public class testLock extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " LOCKING TABLE dbc.TDWMExceptionLog FOR ACCESS \n" + - " SELECT procId as vprocid, BufferTS, QueryID, UserName, SessionID, RequestNum, \n" + - " LogicalHostID, AcctString, WDID, 0 as WDPeriodId, openvId, sysconId, \n" + - " ClassificationTime, ExceptionTime, ExceptionValue, ExceptionAction, NewWDID, \n" + - " ExceptionCode, ExceptionSubCode, ErrorText, ExtraInfo, ruleid, warningonly, \n" + - " rejectioncat \n" + - " FROM dbc.TDWMExceptionLog \n" + - " WHERE bufferTS > '2013-05-27 14:33:29.83' ORDER BY bufferTS DESC;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); - TTeradataLock lock = (TTeradataLock)sqlparser.sqlstatements.get(0); - TTeradataLockClause lockClause = lock.getLockClauses().get(0); - assertTrue(lockClause.getDatabase_table_view().toString().equalsIgnoreCase("TABLE")); - assertTrue(lockClause.getObjectName().toString().equalsIgnoreCase("dbc.TDWMExceptionLog")); - assertTrue(lockClause.getLockMode().toString().equalsIgnoreCase("ACCESS")); - assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); - assertTrue(select.getResultColumnList().size() == 24); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("dbc.TDWMExceptionLog")); - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " locking table t1 for access locking table t2 for access select * from t1,t2;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); - TTeradataLock lock = (TTeradataLock)sqlparser.sqlstatements.get(0); - TTeradataLockClause lockClause = lock.getLockClauses().get(0); - assertTrue(lockClause.getDatabase_table_view().toString().equalsIgnoreCase("TABLE")); - assertTrue(lockClause.getObjectName().toString().equalsIgnoreCase("t1")); - assertTrue(lockClause.getLockMode().toString().equalsIgnoreCase("ACCESS")); - assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); - assertTrue(select.getResultColumnList().size() == 1); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("t1")); - - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " LOCKING TABLE schema1.table1 FOR READ\n" + - "LOCKING TABLE schema1.table1 FOR READ\n" + - "LOCKING TABLE schema1.table2 FOR READ\n" + - "LOCKING TABLE schema1.table3 FOR READ\n" + - "Select * from schema1.table1, schema1.table2;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); - TTeradataLock lock = (TTeradataLock)sqlparser.sqlstatements.get(0); - TTeradataLockClause lockClause = lock.getLockClauses().get(0); - assertTrue(lockClause.getDatabase_table_view().toString().equalsIgnoreCase("TABLE")); - assertTrue(lockClause.getObjectName().toString().equalsIgnoreCase("schema1.table1")); - assertTrue(lockClause.getLockMode().toString().equalsIgnoreCase("READ")); - assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); - assertTrue(select.getResultColumnList().size() == 1); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("schema1.table1")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testMacro.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testMacro.java deleted file mode 100644 index f00f2bfe..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testMacro.java +++ /dev/null @@ -1,39 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDataType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TParameterDeclaration; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TCreateMacro; -import gudusoft.gsqlparser.stmt.teradata.TTeradataLock; -import junit.framework.TestCase; - - -public class testMacro extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = " REPLACE MACRO macroName (startdt date, enddt date, WLInd char(30))\n" + - "AS\n" + - "(Locking row for access\n" + - "Sel col1,col2,col3 from table1,table2,table3;);"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatacreatemacro); - TCreateMacro createMacro = (TCreateMacro)sqlparser.sqlstatements.get(0); - assertTrue(createMacro.getMacroName().toString().equalsIgnoreCase("macroName")); - assertTrue(createMacro.getParameterDeclarations().size() == 3); - TParameterDeclaration parameterDeclaration = createMacro.getParameterDeclarations().getParameterDeclarationItem(0); - assertTrue(parameterDeclaration.getParameterName().toString().equalsIgnoreCase("startdt")); - assertTrue(parameterDeclaration.getDataType().getDataType() == EDataType.date_t); - assertTrue(createMacro.getBodyStatements().size() == 1); - assertTrue(createMacro.getBodyStatements().get(0).sqlstatementtype == ESqlStatementType.sstteradatalock); - TTeradataLock lock = (TTeradataLock)createMacro.getBodyStatements().get(0); - assertTrue(lock.getSqlRequest().sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)lock.getSqlRequest(); - assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("table1")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testMerge.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testMerge.java deleted file mode 100644 index fc670e0c..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testMerge.java +++ /dev/null @@ -1,38 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 14-8-3 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TMergeInsertClause; -import gudusoft.gsqlparser.nodes.TMergeWhenClause; -import gudusoft.gsqlparser.stmt.TMergeSqlStatement; -import junit.framework.TestCase; - -public class testMerge extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "merge into agg_daily_cap_usage t1\n" + - "using vt_stg_cap_usage t2\n" + - "on t1.seat_id=t2.seat_id and t1.date_sk = t2.date_sk\n" + - "when not matched then\n" + - "insert\n" + - "( t2.seat_id, t2.date_sk, t2.login_flag, t2.profile_view, t2.inmail_sent, t2.search_usagelog)\n" + - ";"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmerge); - TMergeSqlStatement merge = (TMergeSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(merge.getWhenClauses().size() == 1); - TMergeWhenClause wc = merge.getWhenClauses().getElement(0); - TMergeInsertClause mic = wc.getInsertClause(); - assertTrue(mic.getValuelist().size() == 6); - assertTrue(mic.getValuelist().getResultColumn(0).getExpr().toString().equalsIgnoreCase("t2.seat_id")); - assertTrue(mic.getValuelist().getResultColumn(5).getExpr().toString().equalsIgnoreCase("t2.search_usagelog")); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testNamedColumn.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testNamedColumn.java deleted file mode 100644 index 06bfedb2..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testNamedColumn.java +++ /dev/null @@ -1,138 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - - -import gudusoft.gsqlparser.EDataTypeAttribute; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.teradata.TDataConversion; -import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - - -public class testNamedColumn extends TestCase { - - public void test1(){ - - // The Resolver analyzes this statement as follows: - // 1 Look for X as a column in table T. - // 2 If X is not found, then try to locate column X in view V (the named object). - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE VIEW V AS\n" + - "SELECT a*5+3 (NAMED X), x*2 (NAMED Y)\n" + - "FROM T;"; - //System.out.println(sqlparser.sqltext); - assertTrue(sqlparser.parse() == 0); - TCreateViewSqlStatement createView = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createView.getSubquery(); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(1); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.arithmetic_times_t); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("x*2 (NAMED Y)")); - // System.out.print(resultColumn.getExpr()..toString()); - TAliasClause a = resultColumn.getAliasClause(); - //System.out.println(a.toString()); - assertTrue(a.getAliasName().toString().equalsIgnoreCase("Y")); - - } - - public void test2(){ - // CREATE TABLE T (a INT, b INT); - // Note that the phrase b (NAMED Y) resolves to T.b. - - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE VIEW V AS\n" + - "SELECT a (NAMED b), b (NAMED y)\n" + - "FROM T;"; - assertTrue(sqlparser.parse() == 0); - TCreateViewSqlStatement createView = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createView.getSubquery(); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(resultColumn.getExpr().getObjectOperand().toString().equalsIgnoreCase("a")); - //System.out.print(resultColumn.getExpr()..toString()); - TAliasClause a = resultColumn.getAliasClause(); - assertTrue(a.getAliasName().toString().equalsIgnoreCase("b")); - - } - - // mantis: #598 - public void test3() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT 'a' || 'b' (NAMED \"x\");"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.concatenate_t); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("'a' || 'b' (NAMED \"x\")")); - TAliasClause a = resultColumn.getAliasClause(); - assertTrue(a.getAliasName().toString().equalsIgnoreCase("\"x\"")); - -// TExpression right = resultColumn.getExpr().getRightOperand(); - // System.out.print(a.getAliasName().toString()); - } - - public void test4() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT x+y (NAMED \"x\");"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement) sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - // assertTrue(resultColumn.getExpr().getExpressionType() == EExpressionType.concatenate_t); -// System.out.print(resultColumn.getExpr().toString()); -// assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("x+y")); - TAliasClause a = resultColumn.getAliasClause(); - assertTrue(a.getAliasName().toString().equalsIgnoreCase("\"x\"")); - - } - - public void test11(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select cast(cal_dt as date) (named cal_dt1) from table1;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("cast(cal_dt as date) (named cal_dt1)")); - TAliasClause a = resultColumn.getAliasClause(); - assertTrue(a.getAliasName().toString().equalsIgnoreCase("cal_dt1")); - - } - - public void test12(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT\n" + - "((lastresptime - starttime) hour(2) to second) (Named ElapsedTime),\n" + - "FROM DBC.DBQLogTbl"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn resultColumn = select.getResultColumnList().getResultColumn(0); - assertTrue(resultColumn.getExpr().toString().equalsIgnoreCase("((lastresptime - starttime) hour(2) to second) (Named ElapsedTime)")); - TDataConversion dataConversion = resultColumn.getExpr().getDataConversions().get(0); - TDataConversionItem dataConversionItem = dataConversion.getDataConversionItems().get(0); - assertTrue(dataConversionItem.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - assertTrue(dataConversionItem.getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.named_t); - assertTrue(dataConversionItem.getDatatypeAttribute().getNamedName().toString().equalsIgnoreCase("ElapsedTime")); - -// TExplicitDataTypeConversion dataTypeConversion = resultColumn.getExpr().getDataTypeConversionList().getElement(0); -// TDatatypeAttribute datatypeAttribute = dataTypeConversion.getDataTypeAttributeList1().getElement(0); -// assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.named_t); -// assertTrue(datatypeAttribute.getValue_identifier().toString().equalsIgnoreCase("ElapsedTime")); - - TExpression expression = resultColumn.getExpr().getLeftOperand(); - - assertTrue(expression.getExpressionType() == EExpressionType.interval_t); - - assertTrue(resultColumn.getAliasClause().toString().equalsIgnoreCase("ElapsedTime")); - assertTrue(resultColumn.getAliasClause().getAliasName().toString().equalsIgnoreCase("ElapsedTime")); - - } - -} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testNormalize.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testNormalize.java deleted file mode 100644 index d046d261..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testNormalize.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testNormalize extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT NORMALIZE employee_id,employee_name,employee_duration from t1;"; - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("employee_id")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testQualifyClause.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testQualifyClause.java deleted file mode 100644 index a51f5d1c..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testQualifyClause.java +++ /dev/null @@ -1,37 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testQualifyClause extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select department_id, COUNT(department_id) as department_id_number, ROW_NUMBER() OVER (ORDER BY department_id ASC), SUM(department_id_number) OVER (ORDER BY department_id ASC) sum_dept_num\n" + - "from foodmart.trimmed_employee GROUP by department_id qualify sum_dept_num > 0;"; - //System.out.println(sqlparser.sqlstatements.size()); - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getQualifyClause().getSearchConditoin().toString().equalsIgnoreCase("sum_dept_num > 0")); - } - - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT col1,col2 qualify ROW_NUMBER () OVER (PARTITION BY col1 ORDER BY col3 DESC , col4 DESC ) =1\n" + - "FROM database_sample.T_sample_table"; - //System.out.println(sqlparser.sqlstatements.size()); - assertTrue(sqlparser.parse() == 0); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstselect); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(select.getQualifyClause().getSearchConditoin().toString().equalsIgnoreCase("ROW_NUMBER () OVER (PARTITION BY col1 ORDER BY col3 DESC , col4 DESC ) =1")); - //System.out.println(select.getQualifyClause().getSearchConditoin().toString()); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testRenameTable.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testRenameTable.java deleted file mode 100644 index 0677debf..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testRenameTable.java +++ /dev/null @@ -1,24 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbObjectType; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TRenameStmt; -import junit.framework.TestCase; - - -public class testRenameTable extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "RENAME TABLE xyz.tbl1 to xyz.table1"; - assertTrue(sqlparser.parse() == 0); - TRenameStmt renameStmt = (TRenameStmt)sqlparser.sqlstatements.get(0); - assertTrue(renameStmt.getObjectType() == EDbObjectType.table); - assertTrue(renameStmt.getOldName().toString().equalsIgnoreCase("xyz.tbl1")); - assertTrue(renameStmt.getNewName().toString().equalsIgnoreCase("xyz.table1")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testResultColumn.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testResultColumn.java deleted file mode 100644 index 1c7dc6d0..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testResultColumn.java +++ /dev/null @@ -1,61 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 14-7-8 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlClause; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TResultColumnList; -import gudusoft.gsqlparser.nodes.TTable; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testResultColumn extends TestCase { - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT NULL(VARCHAR(512) )," + - "CASE WHEN DATABASENAME <> 'DBC' THEN 'TYPE' ELSE '' END (NAMED TABLE_TYPE), " + - "COMMENTSTRING(VARCHAR(254),NAMED REMARKS) FROM DBC.TABLES"; - - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TResultColumnList columns = select.getResultColumnList(); - assertTrue(columns.getResultColumn(0).toString().equalsIgnoreCase("NULL(VARCHAR(512) )")); - assertTrue(columns.getResultColumn(1).toString().equalsIgnoreCase("CASE WHEN DATABASENAME <> 'DBC' THEN 'TYPE' ELSE '' END (NAMED TABLE_TYPE)")); - assertTrue(columns.getResultColumn(2).toString().equalsIgnoreCase("COMMENTSTRING(VARCHAR(254),NAMED REMARKS)")); - - - } - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE VOLATILE SET TABLE CORR_ADD_SOURCE AS\n" + - "(\n" + - "SELECT\n" + - "\tACCT_NUM\n" + - "\t,CORR_NUMBER\n" + - "FROM DB50_AKG.BASSRNC_CORR_SOURCE\n" + - "GROUP BY 1,2\n" + - ") WITH DATA\n" + - "UNIQUE PRIMARY INDEX (ACCT_NUM)\n" + - "ON COMMIT PRESERVE ROWS"; - - assertTrue(sqlparser.parse() == 0); - TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = createTableSqlStatement.getSubQuery(); - - TResultColumnList columns = select.getResultColumnList(); - assertTrue(columns.getResultColumn(0).toString().equalsIgnoreCase("ACCT_NUM")); - - TTable table = createTableSqlStatement.tables.getTable(0); - // System.out.print(table.toString()); - // System.out.print(table.getLinkedColumns().getObjectName(0).toScript()); - assertTrue(table.getLinkedColumns().getObjectName(0).getLocation() == ESqlClause.selectList); - - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testSelectConsume.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testSelectConsume.java deleted file mode 100644 index 5c14753e..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testSelectConsume.java +++ /dev/null @@ -1,18 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSelectConsume extends TestCase { - public void test1() { - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select and consume top 1 * from foodmart.fruit"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement selectSqlStatement = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - assertTrue(selectSqlStatement.isConsume()); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testSetSession.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testSetSession.java deleted file mode 100644 index 0b8b6647..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testSetSession.java +++ /dev/null @@ -1,46 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.stmt.teradata.TTeradataSetSession; -import junit.framework.TestCase; - - - -public class testSetSession extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SET SESSION DATABASE database_name;"; - assertTrue(sqlparser.parse() == 0); - System.out.println(sqlparser.sqlstatements.get(0).sqlstatementtype); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatasetsession); - TTeradataSetSession set = (TTeradataSetSession)sqlparser.sqlstatements.get(0); - assertTrue(set.getSetSessionType() == TTeradataSetSession.ESetSessionType.database); - assertTrue(set.getDatabaseName().toString().equalsIgnoreCase("database_name")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SS DATABASE database_name;"; - assertTrue(sqlparser.parse() == 0); - System.out.println(sqlparser.sqlstatements.get(0).sqlstatementtype); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatasetsession); - TTeradataSetSession set = (TTeradataSetSession)sqlparser.sqlstatements.get(0); - assertTrue(set.getSetSessionType() == TTeradataSetSession.ESetSessionType.database); - assertTrue(set.getDatabaseName().toString().equalsIgnoreCase("database_name")); - } - - public void test3(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "DATABASE database_name;"; - assertTrue(sqlparser.parse() == 0); - System.out.println(sqlparser.sqlstatements.get(0).sqlstatementtype); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatasetsession); - TTeradataSetSession set = (TTeradataSetSession)sqlparser.sqlstatements.get(0); - assertTrue(set.getSetSessionType() == TTeradataSetSession.ESetSessionType.database); - assertTrue(set.getDatabaseName().toString().equalsIgnoreCase("database_name")); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testSubqueryInOnCondition.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testSubqueryInOnCondition.java deleted file mode 100644 index 31254347..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testSubqueryInOnCondition.java +++ /dev/null @@ -1,100 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 13-2-5 - */ - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.EExpressionType; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.nodes.TExpression; -import gudusoft.gsqlparser.nodes.TJoin; -import gudusoft.gsqlparser.nodes.TJoinItem; -import gudusoft.gsqlparser.stmt.TCreateViewSqlStatement; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import junit.framework.TestCase; - -public class testSubqueryInOnCondition extends TestCase { - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE VIEW AUDEV01_BUS_TRFM_VIEW.VTX_371_DSUBSDM_ICTPSTWR_01 AS\n" + - " SELECT\n" + - " AT_CAI.Subs_ID,\n" + - " BUS_DRVR.Prd_Dt,\n" + - " AT_CAI.Prd_Cvrg_Start_Dt,\n" + - " AT_CAI.Prd_Cvrg_End_Dt,\n" + - " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 ='L1Voice' \n" + - " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Rev_AUD_Amt ) \n" + - " END) AS B_Algn_ICT_Rev_Vc_ExGST_A,\n" + - " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 = 'L1SMS' \n" + - " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Rev_AUD_Amt ) \n" + - " END) AS B_Algn_ICT_Rev_SMS_ExGST_A,\n" + - " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 ='L1Voice' \n" + - " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Cost_AUD_Amt ) \n" + - " END) AS B_Algn_ICT_Cost_Vc_ExGST_A,\n" + - " SUM(CASE WHEN AT_DUH.Usg_Nm_Lvl1 = 'L1SMS' \n" + - " \tTHEN ZEROIFNULL(AT_ICT.Chrgbl_Cost_AUD_Amt ) \n" + - " END) AS B_Algn_ICT_Cost_SMS_ExGST_A\n" + - " FROM\n" + - " AUDEV01_BUS_VIEW.BUS_MEAS_ICT_RTL AS AT_ICT RIGHT JOIN \n" + - " AUDEV01_PRE_BUS_VIEW.W_SUBS_DRCT_CAI_USG_DTS AS AT_CAI\n" + - " ON\n" + - " (\n" + - " AT_ICT.Subs_Id = AT_CAI.Subs_ID\n" + - " AND AT_ICT.Prd_Dt BETWEEN AT_CAI.Prd_Cvrg_Start_Dt\n" + - " AND AT_CAI.Prd_Cvrg_End_Dt -1\n" + - " AND AT_ICT.INT_ACCT_FLG = 'N'\n" + - " AND AT_ICT.Acct_Type_Cd = 'Postpay'\n" + - " AND AT_ICT.Brnd_Cd = 'Vodafone'\n" + - " ) LEFT JOIN \n" + - " AUDEV01_MODEL_VIEW.GSMSI_USG_CLASS_ASSN AS AT_GUCA\n" + - " ON\n" + - " (\n" + - " AT_ICT.GSMSI_Key = AT_GUCA.GSMSI_Key\n" + - " AND AT_GUCA.GSMSI_Usg_Class_End_Dt = DATE '9999-12-31'\n" + - " AND AT_GUCA.Usg_Class_Key IN (\n" + - " SELECT\n" + - " AT_UC.Usg_Class_Key\n" + - " FROM\n" + - " AUDEV01_MODEL_VIEW.USG_CLASS AS AT_UC\n" + - " WHERE\n" + - " AT_UC.Usg_Class_Type_Cd = 'FINANCE'\n" + - " )\n" + - " ) LEFT JOIN \n" + - " AUDEV01_PRE_BUS_VIEW.W_BUS_TM_DRVR AS BUS_DRVR\n" + - " ON\n" + - " (\n" + - " BUS_DRVR.Prd_Type_Cd = 'MONTH'\n" + - " AND BUS_DRVR.Subj_Area_Cd = 'SDM'\n" + - " ) LEFT JOIN \n" + - " AUDEV01_BUS_VIEW.DIM_USG_HIER AS AT_DUH\n" + - " ON\n" + - " (\n" + - " AT_GUCA.Usg_Class_Key = AT_DUH.Usg_Class_Key\n" + - " )\n" + - " WHERE\n" + - " AT_CAI.Subs_ID IS NOT NULL\n" + - " AND AT_CAI.Subs_ID > 0\n" + - " GROUP BY\n" + - " 1,\n" + - " 2,\n" + - " 3,\n" + - " 4;"; - assertTrue(sqlparser.parse() == 0); - - TCreateViewSqlStatement view = (TCreateViewSqlStatement)sqlparser.sqlstatements.get(0); - TSelectSqlStatement select = view.getSubquery(); - - TJoin join = select.joins.getJoin(0); - TJoinItem joinItem1 = join.getJoinItems().getJoinItem(1); - TExpression expression = joinItem1.getOnCondition(); - assertTrue(expression.getExpressionType() == EExpressionType.parenthesis_t); - TExpression inSideExpr = expression.getLeftOperand(); - assertTrue(inSideExpr.getRightOperand().getRightOperand().getExpressionType() == EExpressionType.subquery_t); - TSelectSqlStatement subQuery = inSideExpr.getRightOperand().getRightOperand().getSubQuery(); - assertTrue(subQuery.getResultColumnList().getResultColumn(0).toString().equalsIgnoreCase("AT_UC.Usg_Class_Key")); - - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testTableAliasOfSubquery.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTableAliasOfSubquery.java deleted file mode 100644 index 56d44746..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testTableAliasOfSubquery.java +++ /dev/null @@ -1,26 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.TGSqlParser; -import junit.framework.TestCase; - -public class testTableAliasOfSubquery extends TestCase { - - public void test1() { - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "USING (empno INTEGER,\n" + - "salary INTEGER)\n" + - "MERGE INTO employee AS t\n" + - "USING (SELECT :empno, :salary, name\n" + - "FROM names\n" + - "WHERE empno=:empno) AS s(empno, salary, name)\n" + - "ON t.empno=s.empno\n" + - "WHEN MATCHED THEN UPDATE\n" + - "SET salary=s.salary, name = s.name\n" + - "WHEN NOT MATCHED THEN INSERT (empno, name, salary)\n" + - "VALUES (s.empno, s.name, s.salary);"; - assertTrue(sqlparser.parse() == 0); - - assertTrue(sqlparser.sqlstatements.get(0).getSyntaxHints().size() == 0); - } -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataCaseExpression.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataCaseExpression.java deleted file mode 100644 index 1ea5f989..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataCaseExpression.java +++ /dev/null @@ -1,20 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 2010-10-13 - * Time: 16:39:18 - */ - -import gudusoft.gsqlparser.commonTest.gspCommon; -import junit.framework.TestCase; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.EDbVendor; - -public class testTeradataCaseExpression extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqlfilename = gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS +"teradata\\verified\\case_expression.sql"; - assertTrue(sqlparser.parse() == 0); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataGetRawStatements.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataGetRawStatements.java deleted file mode 100644 index 33528dac..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataGetRawStatements.java +++ /dev/null @@ -1,324 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 2010-9-17 - * Time: 10:36:52 - */ - -import junit.framework.TestCase; -import gudusoft.gsqlparser.TGSqlParser; -import gudusoft.gsqlparser.EDbVendor; -import gudusoft.gsqlparser.ESqlStatementType; - -public class testTeradataGetRawStatements extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "USING (var_1 CHARACTER, var_2 CHARACTER, var_3 CHARACTER)\n" + - "INSERT INTO TestTabU (c1) VALUES (:var_1)\n" + - "; INSERT INTO TestTabU (c1) VALUES (:var_2)\n" + - "; INSERT INTO TestTabU (c1) VALUES (:var_3)\n" + - "; UPDATE TestTabU\n" + - "SET c2 = c1 + 1\n" + - "WHERE c1 = :var_1\n" + - "; UPDATE TestTabU\n" + - "SET c2 = c1 + 1\n" + - "WHERE c1 = :var_2\n" + - "; UPDATE TestTabU\n" + - "SET c2 = c1 + 1\n" + - "WHERE c1 = :var_3 ;\n" + - "\n" + - "USING (zonedec CHARACTER(4))\n" + - "BEGIN TRANSACTION\n" + - "; INSERT INTO Dectest (Colz = :zonedec (DECIMAL(4), FORMAT\n" + - "��9999S��)) ;\n" + - "\n" + - "USING\n" + - "cunicode(CHAR(10))\n" + - ",clatin(CHAR(10))\n" + - ",csjis(CHAR(10))\n" + - ",cgraphic(GRAPHIC(10))\n" + - ",cgraphic2(CHAR(10) CHARACTER SET GRAPHIC))\n" + - "INSERT INTO table_1(:cunicode, :clatin, :csjis, :cgraphic,\n" + - ":cgraphic2);"; - sqlparser.getrawsqlstatements(); - assertTrue(sqlparser.sqlstatements.size() == 9); - assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstteradatausing); - assertTrue(sqlparser.sqlstatements.get(1).sqlstatementtype == ESqlStatementType.sstinsert); - assertTrue(sqlparser.sqlstatements.get(2).sqlstatementtype == ESqlStatementType.sstinsert); - assertTrue(sqlparser.sqlstatements.get(3).sqlstatementtype == ESqlStatementType.sstupdate); - assertTrue(sqlparser.sqlstatements.get(4).sqlstatementtype == ESqlStatementType.sstupdate); - assertTrue(sqlparser.sqlstatements.get(5).sqlstatementtype == ESqlStatementType.sstupdate); - assertTrue(sqlparser.sqlstatements.get(6).sqlstatementtype == ESqlStatementType.sstteradatausing); - assertTrue(sqlparser.sqlstatements.get(7).sqlstatementtype == ESqlStatementType.sstinsert); - assertTrue(sqlparser.sqlstatements.get(8).sqlstatementtype == ESqlStatementType.sstteradatausing); - } - - public void testnullstatement(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "/* This example shows a comment followed by\n" + - "a semicolon used as a null statement */\n" + - "; UPDATE Pay_Test SET a = c;\n" + - "\n" + - "\n" + - "/* This example shows a semicolon used as a null\n" + - "statement and as a statement separator */\n" + - "; UPDATE Payroll_Test SET Name = 'Wedgewood A'\n" + - "WHERE Name = 'Wedgewood A'\n" + - "; SELECT a from b\n" + - "-- This example shows the use of an ANSI component\n" + - "-- used as a null statement and statement separator ;\n" + - "\n" + - "\n" + - ";DROP TABLE temp_payroll;"; - sqlparser.getrawsqlstatements(); - //System.out.println(sqlparser.sqlstatements.size()); - //System.out.println(sqlparser.sqlstatements.get(0).sqlstatementtype); - //System.out.println(sqlparser.sqlstatements.get(1).sqlstatementtype); - //System.out.println(sqlparser.sqlstatements.get(2).sqlstatementtype); - //System.out.println(sqlparser.sqlstatements.get(3).sqlstatementtype); - assertTrue(sqlparser.sqlstatements.size() == 4); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "/*\n" + - "Valued case expression\n" + - "Searched case expression\n" + - "The two special shorthand variants of case expression:\n" + - "coalesce\n" + - "nullif\n" + - "*/\n" + - "\n" + - "-- valued\n" + - "\n" + - "SELECT SUM(CASE part\n" + - "WHEN '1'\n" + - "THEN cost\n" + - "ELSE 0\n" + - "END\n" + - ")/SUM(cost)\n" + - "FROM t;\n" + - "\n" + - "SELECT prodID, (CASE prodSTATUS\n" + - "WHEN 1\n" + - "THEN 'SENT'\n" + - "ELSE 'BACK ORDER'\n" + - "END) || ' STATUS'\n" + - "FROM t1;\n" + - "\n" + - "SELECT *\n" + - "FROM t\n" + - "WHERE x = CASE y\n" + - "WHEN 2\n" + - "THEN 1001\n" + - "WHEN 5\n" + - "THEN 1002\n" + - "END;\n" + - "\n" + - "-- searched\n" + - "SELECT SUM(CASE\n" + - "WHEN part=��1��\n" + - "THEN cost\n" + - "ELSE 0\n" + - "END\n" + - ") / SUM(cost)\n" + - "FROM t;\n" + - "\n" + - "SELECT *\n" + - "FROM t\n" + - "WHERE x = CASE\n" + - "WHEN y=2\n" + - "THEN 1\n" + - "WHEN (z=3 AND y=5)\n" + - "THEN 2\n" + - "END;\n" + - "\n" + - "SELECT *\n" + - "FROM t\n" + - "WHERE x = CASE\n" + - "WHEN y=2\n" + - "THEN 1\n" + - "ELSE 2\n" + - "END;\n" + - "\n" + - "SELECT MONTH, SUM(CASE\n" + - "WHEN Region=��NE��\n" + - "THEN Revenue\n" + - "ELSE 0\n" + - "END),\n" + - "SUM(CASE\n" + - "WHEN Region=��NW��\n" + - "THEN Revenue\n" + - "ELSE 0\n" + - "END),\n" + - "SUM(CASE\n" + - "WHEN Region LIKE ��N%��\n" + - "THEN Revenue\n" + - "ELSE 0\n" + - "END)\n" + - "AS NorthernExposure, NorthernExposure/SUM(Revenue),\n" + - "SUM(Revenue)\n" + - "FROM SALES\n" + - "GROUP BY MONTH;\n" + - "\n" + - "SELECT CAST(last_name AS CHARACTER(15)),salary_amount (FORMAT\n" + - "'$,$$9,999.99'),(date - hire_date)/365.25 (FORMAT 'Z9.99') AS\n" + - "On_The_Job, CASE\n" + - "WHEN salary_amount < 30000 AND On_The_Job > 8\n" + - "THEN '15% Increase'\n" + - "WHEN salary_amount < 35000 AND On_The_Job > 10\n" + - "THEN '10% Increase'\n" + - "WHEN salary_amount < 40000 AND On_The_Job > 10\n" + - "THEN '05% Increase'\n" + - "ELSE 'Under 8 Years'\n" + - "END AS Plan\n" + - "WHERE salary_amount < 40000\n" + - "FROM employee\n" + - "ORDER BY 4;\n" + - "\n" + - "SELECT prodID, (CASE\n" + - "WHEN prodSTATUS = 1\n" + - "THEN 'SENT'\n" + - "ELSE 'BACK ORDER'\n" + - "END) || ' STATUS'\n" + - "FROM t1;\n" + - "\n" + - "/*\n" + - "In the following query, the CASE expression returns a FLOAT result because its\n" + - "THEN and ELSE clauses contain both INTEGER and DECIMAL values. The\n" + - "result is then cast to DECIMAL using teradata conversion syntax:\n" + - "*/\n" + - "SELECT SUM (CASE\n" + - "WHEN column_2=1\n" + - "THEN column_3 * 6\n" + - "ELSE column_3\n" + - "END (DECIMAL(15,2)))\n" + - "FROM dec15;\n" + - "\n" + - "\n" + - "SELECT SUM (CASE\n" + - "WHEN column_2=100\n" + - "THEN (column_1 (DECIMAL(15,2)))\n" + - "ELSE column_3\n" + - "END )\n" + - "FROM dec15;\n" + - "\n" + - "SELECT i, ((CASE\n" + - "WHEN i=1\n" + - "THEN start_date\n" + - "WHEN i=2\n" + - "THEN end_date\n" + - "END) (FORMAT 'DDBM4BYYYY'))\n" + - "FROM duration\n" + - "ORDER BY 1;\n" + - "\n" + - "SELECT CASE NULL\n" + - "WHEN 10\n" + - "THEN ��TEN��\n" + - "END;\n" + - "\n" + - "SELECT CASE NULL + 1\n" + - "WHEN 10\n" + - "THEN ��TEN��\n" + - "END;\n" + - "\n" + - "SELECT CASE\n" + - "WHEN column_1 IS NULL\n" + - "THEN ��NULL��\n" + - "END\n" + - "FROM table_1;\n" + - "\n" + - "--COALESCE \n" + - "SELECT Name, COALESCE (HomePhone, OfficePhone, MessageService)\n" + - "FROM PhoneDir;\n" + - "\n" + - "SELECT Name\n" + - "FROM Directory\n" + - "WHEN Organization <> COALESCE (Level1, Level2, Level3);\n" + - ""; - sqlparser.getrawsqlstatements(); - assertTrue(sqlparser.sqlstatements.size() == 17); - //System.out.print(sqlparser.sqlstatements.size()); - } - - public void testcreateprocedure(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE PROCEDURE spAccount(OUT p1 CHARACTER(30))\n" + - "L1: BEGIN\n" + - "DECLARE i INTEGER;\n" + - "DECLARE DeptCursor CURSOR FOR\n" + - "SELECT DeptName from Department;\n" + - "DECLARE CONTINUE HANDLER FOR SQLSTATE VALUE '23505'\n" + - "L2: BEGIN\n" + - "SET p1='Failed To Insert Row';\n" + - "END L2;\n" + - "L3: BEGIN\n" + - "INSERT INTO table_1 VALUES(1,10);\n" + - "IF SQLCODE <> 0 THEN LEAVE L1;\n" + - "END L3;\n" + - "INSERT INTO table_2 VALUES(2,20);\n" + - "END L1;\n" + - "/\n" + - "\n" + - "CREATE PROCEDURE spSample1(INOUT IOParam1 INTEGER,\n" + - "OUT OParam2 INTEGER)\n" + - "L1: BEGIN\n" + - "DECLARE K INTEGER DEFAULT 10;\n" + - "L2: BEGIN\n" + - "DECLARE K INTEGER DEFAULT 20;\n" + - "SET OParam2 = K;\n" + - "SET IOParam1 = L1.K;\n" + - "END L2;\n" + - "\n" + - "END L1;\n" + - "/\n" + - "\n" + - "CREATE PROCEDURE spSample3(OUT p1 CHARACTER(80))\n" + - "BEGIN\n" + - "DECLARE i INTEGER DEFAULT 20;\n" + - "DECLARE EXIT HANDLER\n" + - "FOR SQLSTATE '42000'\n" + - "BEGIN\n" + - "DECLARE i INTEGER DEFAULT 10;\n" + - "DECLARE CONTINUE HANDLER\n" + - "FOR SQLEXCEPTION\n" + - "SET p1 = 'Table does not exist';\n" + - "DROP TABLE table1;\n" + - "CREATE TABLE table1 (c1 INTEGER);\n" + - "INSERT INTO table1 (i);\n" + - "END;\n" + - "INSERT INTO table1 VALUES(1000,'aaa');\n" + - "/* table1 does not exist */\n" + - "END;\n" + - "/\n" + - "\n" + - "CREATE PROCEDURE spSample (OUT po1 VARCHAR(50),\n" + - "OUT po2 VARCHAR(50))\n" + - "BEGIN\n" + - "DECLARE i INTEGER DEFAULT 0;\n" + - "L1: BEGIN\n" + - "DECLARE var1 VARCHAR(25) DEFAULT 'ABCD';\n" + - "DECLARE CONTINUE HANDLER FOR SQLSTATE '42000'\n" + - "SET po1 = 'Table does not exist in L1';\n" + - "INSERT INTO tDummy (10, var1);\n" + - "-- Table Does not exist\n" + - "END L1;\n" + - "L2: BEGIN\n" + - "DECLARE var1 VARCHAR(25) DEFAULT 'XYZ';\n" + - "DECLARE CONTINUE HANDLER FOR SQLSTATE '42000'\n" + - "SET po2 = 'Table does not exist in L2';\n" + - "INSERT INTO tDummy (i, var1);\n" + - "-- Table Does not exist\n" + - "END L2;\n" + - "END;"; - sqlparser.getrawsqlstatements(); - //System.out.print(sqlparser.sqlstatements.size()); - //System.out.println(sqlparser.sqlstatements.get(3).toString()); - //System.out.println(sqlparser.sqlstatements.get(1).sqlstatementtype); - //System.out.println(sqlparser.sqlstatements.get(2).sqlstatementtype); - //System.out.println(sqlparser.sqlstatements.get(3).sqlstatementtype); - - assertTrue(sqlparser.sqlstatements.size() == 4); - } - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataLiteral.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataLiteral.java deleted file mode 100644 index 21e98449..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataLiteral.java +++ /dev/null @@ -1,117 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 2010-9-25 - * Time: 9:37:10 - */ - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.teradata.TDataDefinition; -import junit.framework.TestCase; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; -import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement; - -public class testTeradataLiteral extends TestCase { - - public void testDatetime(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select TIMESTAMP '1999-07-01 15:00:00-08:00',DATE '1998-06-01',TIME '10:35:00' from dual;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TResultColumn column1 = select.getResultColumnList().getResultColumn(1); - TResultColumn column2 = select.getResultColumnList().getResultColumn(2); - assertTrue(column0.toString().equalsIgnoreCase("TIMESTAMP '1999-07-01 15:00:00-08:00'")); - //System.out.println(column1.getExpr().getExpressionType()); - assertTrue(column1.toString().equalsIgnoreCase("DATE '1998-06-01'")); - assertTrue(column2.toString().equalsIgnoreCase("TIME '10:35:00'")); - } - - public void testInterval(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT INTERVAL - '2' YEAR + CURRENT_DATE;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - //TResultColumn column1 = select.getResultColumnList().getResultColumn(1); - //TResultColumn column2 = select.getResultColumnList().getResultColumn(2); - assertTrue(column0.getExpr().getLeftOperand().getExpressionType() == EExpressionType.simple_constant_t); - assertTrue(column0.getExpr().getLeftOperand().getConstantOperand().toString().equalsIgnoreCase("INTERVAL - '2' YEAR")); - //assertTrue(column1.toString().equalsIgnoreCase("DATE '1998-06-01'")); - //assertTrue(column2.toString().equalsIgnoreCase("TIME '10:35:00'")); - } - - public void testCharacter(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select 'He said ''yes'' to her question'" + - ",''" + - ",G'xxx'" + - ",_Latin'abc'" + - ",_Unicode'cde'" + - ",X'0F'"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - //System.out.println(column0.toString()); - assertTrue(column0.toString().equalsIgnoreCase("'He said ''yes'' to her question'")); - TResultColumn column1 = select.getResultColumnList().getResultColumn(1); - assertTrue(column1.toString().equalsIgnoreCase("''")); - TResultColumn column2 = select.getResultColumnList().getResultColumn(2); - assertTrue(column2.toString().equalsIgnoreCase("G'xxx'")); - TResultColumn column3 = select.getResultColumnList().getResultColumn(3); - assertTrue(column3.toString().equalsIgnoreCase("_Latin'abc'")); - - //System.out.println(column4.toString()); - - TResultColumn column4 = select.getResultColumnList().getResultColumn(4); - assertTrue(column4.toString().equalsIgnoreCase("_Unicode'cde'")); - // System.out.println(column4.toString()); - - TResultColumn column5 = select.getResultColumnList().getResultColumn(5); - assertTrue(column5.toString().equalsIgnoreCase("X'0F'")); - - sqlparser.sqltext = "select * from t where CodeVal = '7879'X"+ - " and codeVal= '55'XBF"; - assertTrue(sqlparser.parse() == 0); - - select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TExpression whereCondition = select.getWhereClause().getCondition(); - - //System.out.println(whereCondition.toString()); - - } - - public void testDatatype(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "create table t(\n" + - "\tSalary DECIMAL(8,2) FORMAT 'ZZZ,ZZ9.99'\n" + - "\tCHECK (Salary BETWEEN 1.00 AND 999000.00),\n" + - "\tid decimal(5,4)\n" + - ");"; - assertTrue(sqlparser.parse() == 0); - - TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0); - TColumnDefinition column = createTable.getColumnList().getColumn(0); - - TTypeName datatype = column.getDatatype(); - - assertTrue(datatype.getDataType() == EDataType.decimal_t); - - //System.out.println(column.getDataDefinitions().size()); - assertTrue(column.getDataDefinitions().size() == 2); - TDataDefinition dataDefinition = column.getDataDefinitions().get(0); - assertTrue(dataDefinition.getDataDefinitionType() == TDataDefinition.EDataDefinitionType.dataAttribute); - - - TDatatypeAttribute datatypeAttribute = dataDefinition.getDatatypeAttribute(); - assertTrue(datatypeAttribute.getAttributeType() == EDataTypeAttribute.format_t); - - //System.out.println(datatypeAttribute.toString()); - assertTrue(datatypeAttribute.toString().equalsIgnoreCase("FORMAT 'ZZZ,ZZ9.99'")); - - assertTrue(column.getConstraints().getConstraint(0).getConstraint_type() == EConstraintType.check); - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataOutputFormatPhrase.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataOutputFormatPhrase.java deleted file mode 100644 index ca97bff5..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataOutputFormatPhrase.java +++ /dev/null @@ -1,119 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; - - -import gudusoft.gsqlparser.*; -import gudusoft.gsqlparser.nodes.*; -import gudusoft.gsqlparser.nodes.teradata.TDataConversion; -import gudusoft.gsqlparser.nodes.teradata.TDataConversionItem; -import junit.framework.TestCase; -import gudusoft.gsqlparser.stmt.TSelectSqlStatement; - -public class testTeradataOutputFormatPhrase extends TestCase { - - public void test11(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "select b.c (FORMAT 'X(30)') (TITLE 'Internal Hex Representation of TableName') from b"; - boolean ret = sqlparser.parse() == 0; - assertTrue(sqlparser.getErrormessage(),ret); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expr = column0.getExpr(); - assertTrue(expr.getExpressionType() == EExpressionType.simple_object_name_t); - assertTrue(expr.getObjectOperand().toString().equalsIgnoreCase("b.c")); - - assertTrue(expr.getDataConversions().size() == 2); - TDataConversion dataConversion0 = expr.getDataConversions().get(0); - assertTrue(dataConversion0.getDataConversionItems().size() == 1); - assertTrue(dataConversion0.getDataConversionItems().get(0).getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - assertTrue(dataConversion0.getDataConversionItems().get(0).getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.format_t); - - TDataConversion dataConversion1 = expr.getDataConversions().get(1); - assertTrue(dataConversion1.getDataConversionItems().size() == 1); - assertTrue(dataConversion1.getDataConversionItems().get(0).getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - assertTrue(dataConversion1.getDataConversionItems().get(0).getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.title_t); - } - - public void test1(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT SUM(Salary) (FORMAT '$$99,999.99')\n" + - "FROM Employee;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - sqlparser.sqltext = "SELECT SUM(Salary) (FORMAT '$$99,999.99') as alias1\n" + - "FROM Employee;"; - assertTrue(sqlparser.parse() == 0); - - sqlparser.sqltext = "SELECT Salary (FORMAT '$$99,999.99') as alias1\n" + - "FROM Employee;"; - assertTrue(sqlparser.parse() == 0); - - sqlparser.sqltext = "SELECT Salary (FORMAT '$$99,999.99') (CHAR(12), UC) as alias1\n" + - "FROM Employee;"; - assertTrue(sqlparser.parse() == 0); - - sqlparser.sqltext = "SELECT SUM(Salary)+1 (FORMAT '$$99,999.99') (CHAR(12), UC) as alias1\n" + - "FROM Employee;"; - assertTrue(sqlparser.parse() == 0); - select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - TResultColumn column0 = select.getResultColumnList().getResultColumn(0); - TExpression expr = column0.getExpr(); -// System.out.println(expr.toString()); -// System.out.println(column0.toString()); - assertTrue(expr.getExpressionType() == EExpressionType.arithmetic_plus_t); - assertTrue(expr.toString().equalsIgnoreCase("SUM(Salary)+1 (FORMAT '$$99,999.99') (CHAR(12), UC)")); - assertTrue(expr.getDataConversions().size() == 2); - - TDataConversion dataConversion0 = expr.getDataConversions().get(0); //(FORMAT '$$99,999.99') - assertTrue(dataConversion0.getDataConversionItems().size() == 1); - TDataConversionItem item = dataConversion0.getDataConversionItems().get(0); - assertTrue(item.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - assertTrue(item.getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.format_t); - - TDataConversion dataConversion1 = expr.getDataConversions().get(1); // (CHAR(12), UC) - assertTrue(dataConversion1.getDataConversionItems().size() == 2); - TDataConversionItem item0 = dataConversion1.getDataConversionItems().get(0); // CHAR(12) - assertTrue(item0.getDataConversionType() == TDataConversionItem.EDataConversionype.dataType); - TTypeName dataType = item0.getDataType(); - assertTrue(dataType.getDataType() == EDataType.char_t); - - TDataConversionItem item1 = dataConversion1.getDataConversionItems().get(1); // UC - assertTrue(item1.getDataConversionType() == TDataConversionItem.EDataConversionype.dataAttribute); - assertTrue(item1.getDatatypeAttribute().getAttributeType() == EDataTypeAttribute.uppercase_t); - - } - - - - public void test2(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT 47.5(FORMAT 'zzzz'), 48.5(FORMAT 'zzzz') ;"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - } - - public void test3(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT 13451 / 10000.000 (FORMAT 'zz.z');"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - } - - public void test4(){ - - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - //Use a statement like the following to display a date in uppercase: - sqlparser.sqltext = "SELECT DATE (FORMAT 'MMMbdd,bYYYY') (CHAR(12), UC);"; - assertTrue(sqlparser.parse() == 0); - TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0); - - } - - -} diff --git a/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataTokenize.java b/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataTokenize.java deleted file mode 100644 index 7172ec16..00000000 --- a/src/test/java/gudusoft/gsqlparser/teradataTest/testTeradataTokenize.java +++ /dev/null @@ -1,56 +0,0 @@ -package gudusoft.gsqlparser.teradataTest; -/* - * Date: 2010-9-10 - * Time: 15:05:48 - */ - -import junit.framework.TestCase; -import gudusoft.gsqlparser.*; - -public class testTeradataTokenize extends TestCase { - - public void test1(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "SELECT col\n" + - "FROM '0E42E342C142C242F10F4B414E'XN;" ; - sqlparser.tokenizeSqltext(); - TSourceToken st = sqlparser.sourcetokenlist.get(0); - assertTrue(st.toString().equalsIgnoreCase("select")); - st = sqlparser.sourcetokenlist.get(2); - assertTrue(st.toString().equalsIgnoreCase("col")); - st = sqlparser.sourcetokenlist.get(4); - assertTrue(st.toString().equalsIgnoreCase("from")); - st = sqlparser.sourcetokenlist.get(6); - assertTrue(st.toString().equalsIgnoreCase("'0E42E342C142C242F10F4B414E'XN")); - st = sqlparser.sourcetokenlist.get(7); - assertTrue(st.toString().equalsIgnoreCase(";")); - } - - public void test2(){ - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvteradata); - sqlparser.sqltext = "CREATE PROCEDURE spSample (OUT po1 VARCHAR(50),\n" + - "OUT po2 VARCHAR(50))\n" + - "BEGIN\n" + - "DECLARE i INTEGER DEFAULT 0;\n" + - "L1: BEGIN\n" + - "DECLARE var1 VARCHAR(25) DEFAULT 'ABCD';\n" + - "DECLARE CONTINUE HANDLER FOR SQLSTATE '42000'\n" + - "SET po1 = 'Table does not exist in L1';\n" + - "INSERT INTO tDummy (10, var1);\n" + - "-- Table Does not exist\n" + - "END L1;\n" + - "L2: BEGIN\n" + - "DECLARE var1 VARCHAR(25) DEFAULT 'XYZ';\n" + - "DECLARE CONTINUE HANDLER FOR SQLSTATE '42000'\n" + - "SET po2 = 'Table does not exist in L2';\n" + - "INSERT INTO tDummy (i, var1);\n" + - "-- Table Does not exist\n" + - "END L2;\n" + - "END;"; - sqlparser.tokenizeSqltext(); - // for(int i=0;i Date: Sat, 21 Sep 2024 20:38:24 +0800 Subject: [PATCH 3/4] 2.9.4.0 --- src/main/java/demos/formatsql/formatsql.java | 4 +- src/main/java/demos/visitors/xmlVisitor.java | 5 +- .../commonTest/ColumnImpactTest.java | 32 +- .../gsqlparser/commonTest/testXML.java | 10 +- .../gsqlparser/sqlenvTest/TJSONSQLEnv.java | 297 ++++++++++++++++++ .../gsqlparser/sqlenvTest/testJSONEnv.java | 107 +++++++ 6 files changed, 420 insertions(+), 35 deletions(-) create mode 100644 src/test/java/gudusoft/gsqlparser/sqlenvTest/TJSONSQLEnv.java create mode 100644 src/test/java/gudusoft/gsqlparser/sqlenvTest/testJSONEnv.java diff --git a/src/main/java/demos/formatsql/formatsql.java b/src/main/java/demos/formatsql/formatsql.java index 8c1768ad..b5371b3f 100644 --- a/src/main/java/demos/formatsql/formatsql.java +++ b/src/main/java/demos/formatsql/formatsql.java @@ -31,7 +31,7 @@ public static void main(String args[]) return; } - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle); + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); sqlparser.sqlfilename = args[0]; // sqlparser.sqltext = "insert into emp(empno,empnm,deptnm,sal) select empno, empnm, dptnm, sal from emp where empno=:empno;\n" + @@ -52,7 +52,7 @@ public static void main(String args[]) int ret = sqlparser.parse(); if (ret == 0){ GFmtOpt option = GFmtOptFactory.newInstance(); - option.wsPaddingParenthesesInExpression = false; + //option.wsPaddingParenthesesInExpression = false; //option.selectColumnlistComma = TLinefeedsCommaOption.LfBeforeComma; // umcomment next line generate formatted sql in html //option.outputFmt = GOutputFmt.ofhtml; diff --git a/src/main/java/demos/visitors/xmlVisitor.java b/src/main/java/demos/visitors/xmlVisitor.java index f4bc4640..0996d327 100644 --- a/src/main/java/demos/visitors/xmlVisitor.java +++ b/src/main/java/demos/visitors/xmlVisitor.java @@ -4397,7 +4397,10 @@ public void preVisit(TSimpleDmlTriggerClause node) { Element e_create_trigger_clause = xmldoc.createElement("simple_dml_trigger_clause"); e_parent.appendChild(e_create_trigger_clause); elementStack.push(e_create_trigger_clause); - e_create_trigger_clause.setAttribute("granularity", node.getGranularity().toString()); + if (node.getGranularity() != null){ + e_create_trigger_clause.setAttribute("granularity", node.getGranularity().toString()); + } + if (node.getEventClause() instanceof TDmlEventClause) { TDmlEventClause dmlEventClause = (TDmlEventClause) node.getEventClause(); e_create_trigger_clause.setAttribute("source_table", dmlEventClause.getTableName().toString()); diff --git a/src/test/java/gudusoft/gsqlparser/commonTest/ColumnImpactTest.java b/src/test/java/gudusoft/gsqlparser/commonTest/ColumnImpactTest.java index bfe3358b..a9ba7443 100644 --- a/src/test/java/gudusoft/gsqlparser/commonTest/ColumnImpactTest.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/ColumnImpactTest.java @@ -17,6 +17,8 @@ import junit.framework.TestCase; import demos.antiSQLInjection.columnImpact.ColumnImpact; +import static gudusoft.gsqlparser.TBaseType.readFromTextfile; + public class ColumnImpactTest extends TestCase { @@ -321,36 +323,12 @@ public void testSQLFromFile( ) Assert.assertTrue( TBaseType.compareStringsLineByLine(impact.getImpactResult( ) .trim( ) - ,( getContent( xmlFile ) ) )); + ,( TBaseType.readFromTextfile( xmlFile ) ) )); } } } } - private String getContent( File file ) - { - try - { - ByteArrayOutputStream out = new ByteArrayOutputStream( 4096 ); - byte[] tmp = new byte[4096]; - InputStream is = new BufferedInputStream( new FileInputStream( file ) ); - while ( true ) - { - int r = is.read( tmp ); - if ( r == -1 ) - break; - out.write( tmp, 0, r ); - } - byte[] bytes = out.toByteArray( ); - is.close( ); - out.close( ); - String content = new String( bytes ); - return content.trim( ); - } - catch ( IOException e ) - { - e.printStackTrace( ); - } - return null; - } + + } diff --git a/src/test/java/gudusoft/gsqlparser/commonTest/testXML.java b/src/test/java/gudusoft/gsqlparser/commonTest/testXML.java index 19f9cb78..4977e27c 100644 --- a/src/test/java/gudusoft/gsqlparser/commonTest/testXML.java +++ b/src/test/java/gudusoft/gsqlparser/commonTest/testXML.java @@ -7,7 +7,7 @@ import junit.framework.TestCase; public class testXML extends TestCase { - String xsdfile = "file:/C:/prg/gsp_java/library/doc/xml/sqlquery.xsd"; + String xsdfile = "file:/"+gspCommon.BASE_SQL_DIR_PUBLIC+ "xml/sqlschema.xsd"; void toXmlFiles(EDbVendor db, String dir) throws Exception { TGSqlParser sqlparser = new TGSqlParser(db); @@ -32,12 +32,12 @@ void toXmlFiles(EDbVendor db, String dir) throws Exception { } public void testSQLServer() throws Exception { - toXmlFiles(EDbVendor.dbvmssql, "c:/prg/gsqlparser/Test/TestCases/mssql"); - toXmlFiles(EDbVendor.dbvmssql, "c:/prg/gsqlparser/Test/TestCases/java/mssql"); + toXmlFiles(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS+"mssql"); + toXmlFiles(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA+"mssql"); } public void testOracle() throws Exception { - toXmlFiles(EDbVendor.dbvoracle, "c:/prg/gsqlparser/Test/TestCases/oracle"); - toXmlFiles(EDbVendor.dbvoracle, "c:/prg/gsqlparser/Test/TestCases/java/oracle"); + toXmlFiles(EDbVendor.dbvoracle, gspCommon.BASE_SQL_DIR_PUBLIC_ALLVERSIONS+"oracle"); + toXmlFiles(EDbVendor.dbvoracle, gspCommon.BASE_SQL_DIR_PUBLIC_JAVA+"oracle"); } } diff --git a/src/test/java/gudusoft/gsqlparser/sqlenvTest/TJSONSQLEnv.java b/src/test/java/gudusoft/gsqlparser/sqlenvTest/TJSONSQLEnv.java new file mode 100644 index 00000000..225634e1 --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlenvTest/TJSONSQLEnv.java @@ -0,0 +1,297 @@ +package gudusoft.gsqlparser.sqlenvTest; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.sqlenv.TSQLEnv; +import gudusoft.gsqlparser.sqlenv.TSQLProcedure; +import gudusoft.gsqlparser.sqlenv.TSQLSchema; +import gudusoft.gsqlparser.sqlenv.TSQLTable; + +import java.io.*; +import java.nio.charset.Charset; + +class TJSONSQLEnv extends TSQLEnv { + private String jsonfile; + + public TJSONSQLEnv(EDbVendor dbVendor, String jsonfile){ + super(dbVendor); + this.jsonfile = jsonfile; + } + + public void initSQLEnv(){ + String json = SQLUtil.getFileContent(jsonfile); + if (json != null && json.trim().startsWith("{")) { + JSONObject queryObject = JSON.parseObject(json); + + //JSONArray databases = queryObject.getJSONArray("databaseModel"); + JSONObject databaseModel = queryObject.getJSONObject("databaseModel"); + if (databaseModel != null){ + JSONArray databases = databaseModel.getJSONArray("databases"); + if (databases !=null){ + //System.out.println("databases:"+databases.size()); + for(int i=0;i20?20:partOfCode.length()); + if (partOfCode.indexOf("procedure")>0){ + TSQLProcedure procedure = sqlSchema.createProcedure(procedureName); + procedure.setDefinition(sourceCode); + }else{ + // this script is used to create view + TSQLTable table = sqlSchema.createTable(procedureName); + table.setView(true); + table.setDefinition(sourceCode); + + } + // SQLUtil.writeFileContent(new File(targetDir, (i + 1) + ".sql"), sql); + } + } + + } else { + System.out.println(jsonfile + " is not a valid json file."); + } + } +} + +class SQLUtil { + + public static String getFileContent(File file) { + String charset = null; + String sqlfilename = file.getAbsolutePath(); + int read = 0; + try { + FileInputStream fr = new FileInputStream(sqlfilename); + byte[] bom = new byte[4]; + fr.read(bom, 0, bom.length); + + if ((bom[0] == (byte) 0x00) && (bom[1] == (byte) 0x00) && (bom[2] == (byte) 0xFE) + && (bom[3] == (byte) 0xFF)) { + charset = "UTF-32BE"; + read = 4; + } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE) && (bom[2] == (byte) 0x00) + && (bom[3] == (byte) 0x00)) { + charset = "UTF-32LE"; + read = 4; + } else if ((bom[0] == (byte) 0xEF) && (bom[1] == (byte) 0xBB) && (bom[2] == (byte) 0xBF)) { + charset = "UTF-8"; + read = 3; + } else if ((bom[0] == (byte) 0xFE) && (bom[1] == (byte) 0xFF)) { + charset = "UTF-16BE"; + read = 2; + } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE)) { + charset = "UTF-16LE"; + read = 2; + } else { + charset = Charset.defaultCharset().name(); + read = 0; + } + + fr.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + Long filelength = file.length(); + byte[] filecontent = new byte[filelength.intValue()]; + try { + InputStream in = new BufferedInputStream(new FileInputStream(sqlfilename)); + in.read(filecontent); + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + byte[] content = new byte[filelength.intValue() - read]; + System.arraycopy(filecontent, read, content, 0, content.length); + + try { + String fileContent = new String(content, charset == null ? Charset.defaultCharset().name() : charset) + .trim(); + return fileContent; + } catch (UnsupportedEncodingException e) { + System.err + .println("The OS does not support " + charset == null ? Charset.defaultCharset().name() : charset); + return null; + } + } + + public static String getInputStreamContent(InputStream is, boolean close) { + try { + ByteArrayOutputStream out = new ByteArrayOutputStream(4096); + byte[] tmp = new byte[4096]; + while (true) { + int r = is.read(tmp); + if (r == -1) + break; + out.write(tmp, 0, r); + } + byte[] bytes = out.toByteArray(); + if (close) { + is.close(); + } + out.close(); + String content = new String(bytes); + return content.trim(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + public static String getFileContent(String filePath) { + if (filePath == null) + return ""; + File file = new File(filePath); + if (!file.exists() || file.isDirectory()) + return ""; + return getFileContent(file); + } + + /** + * @param file the filePath + * @return the UTFFileHandler.UnicodeInputStream + * @throws Exception + */ + public static InputStream getInputStreamWithoutBom(String file) throws IOException { + UnicodeInputStream stream = null; + FileInputStream fis = new FileInputStream(file); + stream = new UnicodeInputStream(fis, null); + return stream; + } + + /** + * This inputstream will recognize unicode BOM marks and will skip bytes if + * getEncoding() method is called before any of the read(...) methods. + *

+ * Usage pattern: String enc = "ISO-8859-1"; // or NULL to use systemdefault + * FileInputStream fis = new FileInputStream(file); UnicodeInputStream uin = new + * UnicodeInputStream(fis, enc); enc = uin.getEncoding(); // check and skip + * possible BOM bytes InputStreamReader in; if (enc == null) in = new + * InputStreamReader(uin); else in = new InputStreamReader(uin, enc); + */ + public static class UnicodeInputStream extends InputStream { + PushbackInputStream internalIn; + boolean isInited = false; + String defaultEnc; + String encoding; + + private static final int BOM_SIZE = 4; + + public UnicodeInputStream(InputStream in, String defaultEnc) { + internalIn = new PushbackInputStream(in, BOM_SIZE); + this.defaultEnc = defaultEnc; + } + + public String getDefaultEncoding() { + return defaultEnc; + } + + public String getEncoding() { + if (!isInited) { + try { + init(); + } catch (IOException ex) { + IllegalStateException ise = new IllegalStateException("Init method failed."); + ise.initCause(ise); + throw ise; + } + } + return encoding; + } + + /** + * Read-ahead four bytes and check for BOM marks. Extra bytes are unread back to + * the stream, only BOM bytes are skipped. + */ + protected void init() throws IOException { + if (isInited) + return; + + byte bom[] = new byte[BOM_SIZE]; + int n, unread; + n = internalIn.read(bom, 0, bom.length); + + if ((bom[0] == (byte) 0x00) && (bom[1] == (byte) 0x00) && (bom[2] == (byte) 0xFE) + && (bom[3] == (byte) 0xFF)) { + encoding = "UTF-32BE"; + unread = n - 4; + } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE) && (bom[2] == (byte) 0x00) + && (bom[3] == (byte) 0x00)) { + encoding = "UTF-32LE"; + unread = n - 4; + } else if ((bom[0] == (byte) 0xEF) && (bom[1] == (byte) 0xBB) && (bom[2] == (byte) 0xBF)) { + encoding = "UTF-8"; + unread = n - 3; + } else if ((bom[0] == (byte) 0xFE) && (bom[1] == (byte) 0xFF)) { + encoding = "UTF-16BE"; + unread = n - 2; + } else if ((bom[0] == (byte) 0xFF) && (bom[1] == (byte) 0xFE)) { + encoding = "UTF-16LE"; + unread = n - 2; + } else { + encoding = defaultEnc; + unread = n; + } + + if (unread > 0) + internalIn.unread(bom, (n - unread), unread); + + isInited = true; + } + + public void close() throws IOException { + internalIn.close(); + } + + public int read() throws IOException { + return internalIn.read(); + } + } + + public static void writeFileContent(File file, String sql) { + PrintWriter pw = null; + try { + pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"))); + pw.write(sql); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (pw != null) { + pw.close(); + } + } + + } +} \ No newline at end of file diff --git a/src/test/java/gudusoft/gsqlparser/sqlenvTest/testJSONEnv.java b/src/test/java/gudusoft/gsqlparser/sqlenvTest/testJSONEnv.java new file mode 100644 index 00000000..1dde1c0e --- /dev/null +++ b/src/test/java/gudusoft/gsqlparser/sqlenvTest/testJSONEnv.java @@ -0,0 +1,107 @@ +package gudusoft.gsqlparser.sqlenvTest; + +import gudusoft.gsqlparser.EDbVendor; +import gudusoft.gsqlparser.commonTest.gspCommon; +import gudusoft.gsqlparser.sqlenv.*; +import junit.framework.TestCase; + +public class testJSONEnv extends TestCase { + + static int objectsInDatabase(TSQLCatalog c, ESQLDataObjectType objectType){ + int result = 0; + for(TSQLSchema s: c.getSchemaList() ) { + for (TSQLSchemaObject o : s.getSchemaObjectList()) { + if (o.getDataObjectType() == objectType) { + result++; + } + } + } + return result; + } + + static int viewsInDatabase(TSQLCatalog c){ + int result = 0; + for(TSQLSchema s: c.getSchemaList() ) { + for (TSQLSchemaObject o : s.getSchemaObjectList()) { + if (o.getDataObjectType() == ESQLDataObjectType.dotTable) { + TSQLTable table = (TSQLTable)o; + if (table.isView()) result++; + } + } + } + return result; + } + + static int tablesInDatabase(TSQLCatalog c){ + int result = 0; + for(TSQLSchema s: c.getSchemaList() ) { + for (TSQLSchemaObject o : s.getSchemaObjectList()) { + if (o.getDataObjectType() == ESQLDataObjectType.dotTable) { + TSQLTable table = (TSQLTable)o; + if (!table.isView()) result++; + } + } + } + return result; + } + TJSONSQLEnv sqlEnv; + + @Override + protected void setUp() throws Exception { + // System.out.println("Setting it up!"); + sqlEnv = new TJSONSQLEnv(EDbVendor.dbvmssql, gspCommon.BASE_SQL_DIR_PRIVATE+"/sqlflow/api_json/DBexport20191212.json"); + sqlEnv.initSQLEnv(); + } + @Override + protected void tearDown() throws Exception { + // System.out.println("Running: tearDown"); + } + + public void test1() { + int totalProcedure = 0,totalView = 0; + assertTrue(sqlEnv.getCatalogList().size() == 7); + + for (TSQLCatalog c : sqlEnv.getCatalogList()) { +// System.out.println("Database:" + c.getName() + "(schema:" + c.getSchemaList().size() +// + ",table+view:" + (objectsInDatabase(c, ESQLDataObjectType.dotTable)) +// + ",view:" + (viewsInDatabase(c)) +// + ",procedure:" + objectsInDatabase(c, ESQLDataObjectType.dotProcedure) + ")"); + + totalView = totalView + viewsInDatabase(c); + for (TSQLSchema s : c.getSchemaList()) { + for (TSQLSchemaObject o : s.getSchemaObjectList()) { + if (o.getDataObjectType() == ESQLDataObjectType.dotProcedure) { + totalProcedure++; + } + } + } + } + // System.out.println("total procedure:" + totalProcedure+", total view:"+totalView+", queries:"+(totalProcedure+totalView)); + assertTrue((totalProcedure+totalView) == 549); + + } + + public void testSearch1() { + String tableName = "CrmPoc.SF.LAND_StatusChange"; + TSQLTable sqlTable = sqlEnv.searchTable(tableName); + assertTrue(sqlTable != null); + + TSQLEnv.tableCollationCaseSensitive[EDbVendor.dbvmssql.ordinal()] = true; + tableName = "DataMart.dbo.loaN"; + sqlTable = sqlEnv.searchTable(tableName); + assertTrue(sqlTable == null); + + TSQLEnv.tableCollationCaseSensitive[EDbVendor.dbvmssql.ordinal()] = false; + tableName = "DataMart.dbo.loaN"; + sqlTable = sqlEnv.searchTable(tableName); + assertTrue(sqlTable != null); + + tableName = "DataMart.[SalesForce].[vwAccounts]"; + // tableName = "DataMart.SalesForce.vwAccounts"; + sqlTable = sqlEnv.searchTable(tableName); + assertTrue(sqlTable != null); +// for(TSQLColumn c: sqlTable.getColumnList()){ +// System.out.println(c.getSqlTable().getNameKeepCase()+"."+c.getNameKeepCase()); +// } + } +} \ No newline at end of file From 6c9c72b1d5121c215312d85c8da8eb23c93993b3 Mon Sep 17 00:00:00 2001 From: takolee Date: Tue, 24 Sep 2024 09:44:25 +0800 Subject: [PATCH 4/4] 2.9.4.3 --- src/main/java/demos/formatsql/formatsql.java | 2 +- src/main/main.iml | 2 +- src/test/test.iml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/demos/formatsql/formatsql.java b/src/main/java/demos/formatsql/formatsql.java index b5371b3f..d6d244ff 100644 --- a/src/main/java/demos/formatsql/formatsql.java +++ b/src/main/java/demos/formatsql/formatsql.java @@ -31,7 +31,7 @@ public static void main(String args[]) return; } - TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvpostgresql); + TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvdb2); sqlparser.sqlfilename = args[0]; // sqlparser.sqltext = "insert into emp(empno,empnm,deptnm,sal) select empno, empnm, dptnm, sal from emp where empno=:empno;\n" + diff --git a/src/main/main.iml b/src/main/main.iml index 45d5be43..47f11ff2 100644 --- a/src/main/main.iml +++ b/src/main/main.iml @@ -7,7 +7,6 @@ - @@ -27,5 +26,6 @@ + \ No newline at end of file diff --git a/src/test/test.iml b/src/test/test.iml index bdf0da7c..cbcda686 100644 --- a/src/test/test.iml +++ b/src/test/test.iml @@ -7,7 +7,7 @@ - +