= '$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/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/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/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/mtag/teradata/sqlchecker/parser/GeneralSqlParserTeradataTest.jav_ b/src/test/java/gudusoft/gsqlparser/parserTest/GeneralSqlParserTeradataTest.jav_
similarity index 100%
rename from src/test/java/mtag/teradata/sqlchecker/parser/GeneralSqlParserTeradataTest.jav_
rename to src/test/java/gudusoft/gsqlparser/parserTest/GeneralSqlParserTeradataTest.jav_
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/testSQLFiles/parseTest.java b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/parseTest.java
similarity index 90%
rename from src/test/java/testSQLFiles/parseTest.java
rename to src/test/java/gudusoft/gsqlparser/sqlFilesTest/parseTest.java
index acd9dc91..7c2822d4 100644
--- a/src/test/java/testSQLFiles/parseTest.java
+++ b/src/test/java/gudusoft/gsqlparser/sqlFilesTest/parseTest.java
@@ -1,74 +1,75 @@
-package testSQLFiles;
-
-import gudusoft.gsqlparser.TBaseType;
-import gudusoft.gsqlparser.TLog;
-import junit.framework.TestCase;
-
-
-import gudusoft.gsqlparser.EDbVendor;
-import gudusoft.gsqlparser.TGSqlParser;
-
-import java.io.File;
-import common.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, 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/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/hana/testAlterProcedureAndFunction.java b/src/test/java/hana/testAlterProcedureAndFunction.java
deleted file mode 100644
index c84681ff..00000000
--- a/src/test/java/hana/testAlterProcedureAndFunction.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package hana;
-
-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/hana/testCreateProcedure.java b/src/test/java/hana/testCreateProcedure.java
deleted file mode 100644
index ee3cb347..00000000
--- a/src/test/java/hana/testCreateProcedure.java
+++ /dev/null
@@ -1,38 +0,0 @@
-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);
- }
- }
-}
diff --git a/src/test/java/hana/testLateral.java b/src/test/java/hana/testLateral.java
deleted file mode 100644
index 1e001bcf..00000000
--- a/src/test/java/hana/testLateral.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package hana;
-
-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/hana/testUpsert.java b/src/test/java/hana/testUpsert.java
deleted file mode 100644
index 5b534529..00000000
--- a/src/test/java/hana/testUpsert.java
+++ /dev/null
@@ -1,82 +0,0 @@
-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"));
- }
-
-}
diff --git a/src/test/java/hive/testAlias.java b/src/test/java/hive/testAlias.java
deleted file mode 100644
index 5f2e1561..00000000
--- a/src/test/java/hive/testAlias.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package hive;
-/*
- * 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/hive/testAlterTable.java b/src/test/java/hive/testAlterTable.java
deleted file mode 100644
index 01847e2d..00000000
--- a/src/test/java/hive/testAlterTable.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package hive;
-
-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/hive/testAnalyze.java b/src/test/java/hive/testAnalyze.java
deleted file mode 100644
index 5f8aa2a8..00000000
--- a/src/test/java/hive/testAnalyze.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package hive;
-/*
- * 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/hive/testCTE.java b/src/test/java/hive/testCTE.java
deleted file mode 100644
index 40b0bc25..00000000
--- a/src/test/java/hive/testCTE.java
+++ /dev/null
@@ -1,49 +0,0 @@
-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"));
- }
-}
diff --git a/src/test/java/hive/testCastFunction.java b/src/test/java/hive/testCastFunction.java
deleted file mode 100644
index a7305b0b..00000000
--- a/src/test/java/hive/testCastFunction.java
+++ /dev/null
@@ -1,43 +0,0 @@
-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"));
-
- }
-
-}
diff --git a/src/test/java/hive/testCreateFunction.java b/src/test/java/hive/testCreateFunction.java
deleted file mode 100644
index 2618bb46..00000000
--- a/src/test/java/hive/testCreateFunction.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package hive;
-/*
- * 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/hive/testCreateIndex.java b/src/test/java/hive/testCreateIndex.java
deleted file mode 100644
index 7d6cfcc4..00000000
--- a/src/test/java/hive/testCreateIndex.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package hive;
-/*
- * 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/hive/testCreateTable.java b/src/test/java/hive/testCreateTable.java
deleted file mode 100644
index eb2b9e01..00000000
--- a/src/test/java/hive/testCreateTable.java
+++ /dev/null
@@ -1,176 +0,0 @@
-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());
- }
-
-}
diff --git a/src/test/java/hive/testCreateView.java b/src/test/java/hive/testCreateView.java
deleted file mode 100644
index 639cf1e7..00000000
--- a/src/test/java/hive/testCreateView.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package hive;
-/*
- * 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/hive/testDescribe.java b/src/test/java/hive/testDescribe.java
deleted file mode 100644
index 09801849..00000000
--- a/src/test/java/hive/testDescribe.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package hive;
-/*
- * 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/hive/testDropIndex.java b/src/test/java/hive/testDropIndex.java
deleted file mode 100644
index 25f9c460..00000000
--- a/src/test/java/hive/testDropIndex.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package hive;
-/*
- * 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/hive/testExplain.java b/src/test/java/hive/testExplain.java
deleted file mode 100644
index 2f6c7c84..00000000
--- a/src/test/java/hive/testExplain.java
+++ /dev/null
@@ -1,51 +0,0 @@
-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"));
- }
-}
diff --git a/src/test/java/hive/testExportTable.java b/src/test/java/hive/testExportTable.java
deleted file mode 100644
index 47a42a65..00000000
--- a/src/test/java/hive/testExportTable.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package hive;
-/*
- * 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/hive/testFieldExpression.java b/src/test/java/hive/testFieldExpression.java
deleted file mode 100644
index b3e33896..00000000
--- a/src/test/java/hive/testFieldExpression.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package hive;
-/*
- * 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/hive/testFromSelect.java b/src/test/java/hive/testFromSelect.java
deleted file mode 100644
index 7093b88b..00000000
--- a/src/test/java/hive/testFromSelect.java
+++ /dev/null
@@ -1,281 +0,0 @@
-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"));
- }
-}
diff --git a/src/test/java/hive/testFunction.java b/src/test/java/hive/testFunction.java
deleted file mode 100644
index aed06011..00000000
--- a/src/test/java/hive/testFunction.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package hive;
-
-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/hive/testGetFullTableName.java b/src/test/java/hive/testGetFullTableName.java
deleted file mode 100644
index 4597a239..00000000
--- a/src/test/java/hive/testGetFullTableName.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package hive;
-/*
- * 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/hive/testHint.java b/src/test/java/hive/testHint.java
deleted file mode 100644
index 202fcf78..00000000
--- a/src/test/java/hive/testHint.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package hive;
-
-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/hive/testIdentifierBacktick.java b/src/test/java/hive/testIdentifierBacktick.java
deleted file mode 100644
index 118a9f30..00000000
--- a/src/test/java/hive/testIdentifierBacktick.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package hive;
-
-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/hive/testImportTable.java b/src/test/java/hive/testImportTable.java
deleted file mode 100644
index b5695b00..00000000
--- a/src/test/java/hive/testImportTable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package hive;
-/*
- * 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/hive/testInsert.java b/src/test/java/hive/testInsert.java
deleted file mode 100644
index b08e96f3..00000000
--- a/src/test/java/hive/testInsert.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package hive;
-/*
- * 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/hive/testJoin.java b/src/test/java/hive/testJoin.java
deleted file mode 100644
index 70a108a3..00000000
--- a/src/test/java/hive/testJoin.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package hive;
-
-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/hive/testLateralView.java b/src/test/java/hive/testLateralView.java
deleted file mode 100644
index defc67f3..00000000
--- a/src/test/java/hive/testLateralView.java
+++ /dev/null
@@ -1,63 +0,0 @@
-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);
- }
-
-}
diff --git a/src/test/java/hive/testLoad.java b/src/test/java/hive/testLoad.java
deleted file mode 100644
index f8abcc2d..00000000
--- a/src/test/java/hive/testLoad.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package hive;
-/*
- * 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/hive/testParse.java b/src/test/java/hive/testParse.java
deleted file mode 100644
index 22f9b963..00000000
--- a/src/test/java/hive/testParse.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package hive;
-
-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/hive/testSampleClause.java b/src/test/java/hive/testSampleClause.java
deleted file mode 100644
index 4d8cc8c0..00000000
--- a/src/test/java/hive/testSampleClause.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package hive;
-/*
- * 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/hive/testSelect.java b/src/test/java/hive/testSelect.java
deleted file mode 100644
index a8f01cad..00000000
--- a/src/test/java/hive/testSelect.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package hive;
-/*
- * 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/hive/testSet.java b/src/test/java/hive/testSet.java
deleted file mode 100644
index 3467ab2a..00000000
--- a/src/test/java/hive/testSet.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package hive;
-/*
- * 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/hive/testShow.java b/src/test/java/hive/testShow.java
deleted file mode 100644
index f149f6b1..00000000
--- a/src/test/java/hive/testShow.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package hive;
-/*
- * 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/hive/testTimestamp.java b/src/test/java/hive/testTimestamp.java
deleted file mode 100644
index 775a422a..00000000
--- a/src/test/java/hive/testTimestamp.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package hive;
-
-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;
-
-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/hive/testToString.java b/src/test/java/hive/testToString.java
deleted file mode 100644
index 8402666c..00000000
--- a/src/test/java/hive/testToString.java
+++ /dev/null
@@ -1,36 +0,0 @@
-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"));
-
- }
-
-}
diff --git a/src/test/java/hive/testUnion.java b/src/test/java/hive/testUnion.java
deleted file mode 100644
index 960bfafc..00000000
--- a/src/test/java/hive/testUnion.java
+++ /dev/null
@@ -1,195 +0,0 @@
-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"));
-
- }
-}
diff --git a/src/test/java/hive/testWindowClause.java b/src/test/java/hive/testWindowClause.java
deleted file mode 100644
index 2174a140..00000000
--- a/src/test/java/hive/testWindowClause.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package hive;
-/*
- * 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/hive/testlexer.java b/src/test/java/hive/testlexer.java
deleted file mode 100644
index 49e6defb..00000000
--- a/src/test/java/hive/testlexer.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package hive;
-
-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/impala/testSubquery.java b/src/test/java/impala/testSubquery.java
deleted file mode 100644
index 8dfd0a62..00000000
--- a/src/test/java/impala/testSubquery.java
+++ /dev/null
@@ -1,27 +0,0 @@
-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());
- }
-
-}
diff --git a/src/test/java/informix/testAlterObject.java b/src/test/java/informix/testAlterObject.java
deleted file mode 100644
index 3908068b..00000000
--- a/src/test/java/informix/testAlterObject.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package informix;
-/*
- * 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/informix/testCreateProcedure.java b/src/test/java/informix/testCreateProcedure.java
deleted file mode 100644
index a4afa961..00000000
--- a/src/test/java/informix/testCreateProcedure.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package informix;
-
-
-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/informix/testDropObject.java b/src/test/java/informix/testDropObject.java
deleted file mode 100644
index a83af299..00000000
--- a/src/test/java/informix/testDropObject.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package informix;
-/*
- * 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/informix/testOuterJoin.java b/src/test/java/informix/testOuterJoin.java
deleted file mode 100644
index a3f065a6..00000000
--- a/src/test/java/informix/testOuterJoin.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package informix;
-
-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/informix/testRenameObject.java b/src/test/java/informix/testRenameObject.java
deleted file mode 100644
index 272501c8..00000000
--- a/src/test/java/informix/testRenameObject.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package informix;
-/*
- * Date: 13-1-25
- */
-
-import gudusoft.gsqlparser.EDbObjectType;
-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 {
-
- 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/informix/testSkip.java b/src/test/java/informix/testSkip.java
deleted file mode 100644
index 91c7f498..00000000
--- a/src/test/java/informix/testSkip.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package informix;
-
-
-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/interfaceDemo/testITokenHandle.java b/src/test/java/interfaceDemo/testITokenHandle.java
deleted file mode 100644
index 5e571307..00000000
--- a/src/test/java/interfaceDemo/testITokenHandle.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package interfaceDemo;
-
-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/interfaceDemo/testIgnorePrompt.java b/src/test/java/interfaceDemo/testIgnorePrompt.java
deleted file mode 100644
index 7cdae726..00000000
--- a/src/test/java/interfaceDemo/testIgnorePrompt.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package interfaceDemo;
-
-
-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/mdx/testAlterCube.java b/src/test/java/mdx/testAlterCube.java
deleted file mode 100644
index b5b13504..00000000
--- a/src/test/java/mdx/testAlterCube.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package mdx;
-
-
-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/mdx/testCreateMeasure.java b/src/test/java/mdx/testCreateMeasure.java
deleted file mode 100644
index 434c570b..00000000
--- a/src/test/java/mdx/testCreateMeasure.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package mdx;
-
-
-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/mdx/testCreateMember.java b/src/test/java/mdx/testCreateMember.java
deleted file mode 100644
index 32127774..00000000
--- a/src/test/java/mdx/testCreateMember.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package mdx;
-
-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/mdx/testIIF.java b/src/test/java/mdx/testIIF.java
deleted file mode 100644
index 97cbc5d3..00000000
--- a/src/test/java/mdx/testIIF.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package mdx;
-
-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')"));
-
- assertTrue(copyIntoStmt.getOptionNames().get(2).equalsIgnoreCase("FIELDQUOTE"));
- assertTrue(copyIntoStmt.getOption(copyIntoStmt.getOptionNames().get(2)).equalsIgnoreCase("'\"'"));
-
- assertTrue(copyIntoStmt.getOptionNames().get(3).equalsIgnoreCase("FIELDTERMINATOR"));
- assertTrue(copyIntoStmt.getOption(copyIntoStmt.getOptionNames().get(3)).equalsIgnoreCase("','"));
-
- assertTrue(copyIntoStmt.getOptionNames().get(4).equalsIgnoreCase("ROWTERMINATOR"));
- assertTrue(copyIntoStmt.getOption(copyIntoStmt.getOptionNames().get(4)).equalsIgnoreCase("'0x0A'"));
-
- assertTrue(copyIntoStmt.getOptionNames().get(5).equalsIgnoreCase("ENCODING"));
- assertTrue(copyIntoStmt.getOption(copyIntoStmt.getOptionNames().get(5)).equalsIgnoreCase("'UTF8'"));
-
- assertTrue(copyIntoStmt.getOptionNames().get(6).equalsIgnoreCase("FIRSTROW"));
- assertTrue(copyIntoStmt.getOption(copyIntoStmt.getOptionNames().get(6)).equalsIgnoreCase("2"));
-
- }
-}
diff --git a/src/test/java/mssql/testCreateCredential.java b/src/test/java/mssql/testCreateCredential.java
deleted file mode 100644
index ac1b80d9..00000000
--- a/src/test/java/mssql/testCreateCredential.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package mssql;
-
-import gudusoft.gsqlparser.EDbVendor;
-import gudusoft.gsqlparser.TGSqlParser;
-import gudusoft.gsqlparser.stmt.TCreateCredentialStmt;
-import junit.framework.TestCase;
-
-public class testCreateCredential extends TestCase {
-
- public void test1(){
-
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql);
- sqlparser.sqltext = "CREATE CREDENTIAL AlterEgo WITH IDENTITY = 'Mary5',\n" +
- " SECRET = '';";
- assertTrue(sqlparser.parse() == 0);
-
- TCreateCredentialStmt createCredentialStmt = (TCreateCredentialStmt)sqlparser.sqlstatements.get(0);
- assertTrue(!createCredentialStmt.isDatabaseScoped());
- assertTrue(createCredentialStmt.getCredentialName().toString().equalsIgnoreCase("AlterEgo"));
-
- }
-
- public void test2(){
-
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvazuresql);
- sqlparser.sqltext = "CREATE DATABASE SCOPED CREDENTIAL ADL_User\n" +
- "WITH\n" +
- " IDENTITY = '@',\n" +
- " SECRET = ''\n" +
- ";";
- assertTrue(sqlparser.parse() == 0);
-
- TCreateCredentialStmt createCredentialStmt = (TCreateCredentialStmt)sqlparser.sqlstatements.get(0);
- assertTrue(createCredentialStmt.isDatabaseScoped());
- assertTrue(createCredentialStmt.getCredentialName().toString().equalsIgnoreCase("ADL_User"));
-
- }
-
-}
diff --git a/src/test/java/mssql/testCreateDatabase.java b/src/test/java/mssql/testCreateDatabase.java
deleted file mode 100644
index f1acafce..00000000
--- a/src/test/java/mssql/testCreateDatabase.java
+++ /dev/null
@@ -1,35 +0,0 @@
-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"));
- }
-
-}
-
diff --git a/src/test/java/mssql/testCreateEventSession.java b/src/test/java/mssql/testCreateEventSession.java
deleted file mode 100644
index c50d3b81..00000000
--- a/src/test/java/mssql/testCreateEventSession.java
+++ /dev/null
@@ -1,29 +0,0 @@
-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"));
- }
-
-
-}
diff --git a/src/test/java/mssql/testCreateExternalDataSource.java b/src/test/java/mssql/testCreateExternalDataSource.java
deleted file mode 100644
index 3ce83eda..00000000
--- a/src/test/java/mssql/testCreateExternalDataSource.java
+++ /dev/null
@@ -1,50 +0,0 @@
-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"));
- }
-
-}
diff --git a/src/test/java/mssql/testCreateExternalLanguage.java b/src/test/java/mssql/testCreateExternalLanguage.java
deleted file mode 100644
index 0ae57c55..00000000
--- a/src/test/java/mssql/testCreateExternalLanguage.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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"));
- }
-}
diff --git a/src/test/java/mssql/testCreateIndex.java b/src/test/java/mssql/testCreateIndex.java
deleted file mode 100644
index 94b5e1d2..00000000
--- a/src/test/java/mssql/testCreateIndex.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package mssql;
-
-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.dbvmssql);
- sqlparser.sqltext = "CREATE NONCLUSTERED INDEX IX_TransactionHistory_ReferenceOrderID\n" +
- "ON Production.TransactionHistory (ReferenceOrderID)\n" +
- "ON TransactionsPS1 (TransactionDate);";
- assertTrue(sqlparser.parse() == 0);
-
- TCreateIndexSqlStatement createIndexSqlStatement = (TCreateIndexSqlStatement)sqlparser.sqlstatements.get(0);
- assertTrue(createIndexSqlStatement.isNonClustered());
- assertTrue(createIndexSqlStatement.getIndexName().toString().equalsIgnoreCase("IX_TransactionHistory_ReferenceOrderID"));
- assertTrue(createIndexSqlStatement.getTableName().toString().equalsIgnoreCase("Production.TransactionHistory"));
- assertTrue(createIndexSqlStatement.getColumnNameList().getOrderByItem(0).toString().equalsIgnoreCase("ReferenceOrderID"));
- assertTrue(createIndexSqlStatement.getFilegroupOrPartitionSchemeName().toString().equalsIgnoreCase("TransactionsPS1"));
- assertTrue(createIndexSqlStatement.getPartitionSchemeColumns().getObjectName(0).toString().equalsIgnoreCase("TransactionDate"));
-
- }
-}
diff --git a/src/test/java/mssql/testCreateMasterKey.java b/src/test/java/mssql/testCreateMasterKey.java
deleted file mode 100644
index ebe72689..00000000
--- a/src/test/java/mssql/testCreateMasterKey.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package mssql;
-
-import gudusoft.gsqlparser.EDbVendor;
-import gudusoft.gsqlparser.TGSqlParser;
-import gudusoft.gsqlparser.stmt.mssql.TCreateMasterKeyStmt;
-import junit.framework.TestCase;
-
-public class testCreateMasterKey extends TestCase {
-
- public void test1(){
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvazuresql);
- sqlparser.sqltext = "CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe';";
- assertTrue(sqlparser.parse() == 0);
-
- TCreateMasterKeyStmt createMasterKeyStmt = (TCreateMasterKeyStmt)sqlparser.sqlstatements.get(0);
- assertTrue(createMasterKeyStmt.getPassword().equalsIgnoreCase("'23987hxJ#KL95234nl0zBe'"));
- }
-}
diff --git a/src/test/java/mssql/testCreateProcedureOption.java b/src/test/java/mssql/testCreateProcedureOption.java
deleted file mode 100644
index 1069e917..00000000
--- a/src/test/java/mssql/testCreateProcedureOption.java
+++ /dev/null
@@ -1,395 +0,0 @@
-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);
- }
-
-}
diff --git a/src/test/java/mssql/testCreateTrigger.java b/src/test/java/mssql/testCreateTrigger.java
deleted file mode 100644
index c57c7a74..00000000
--- a/src/test/java/mssql/testCreateTrigger.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package mssql;
-
-
-import gudusoft.gsqlparser.EDbVendor;
-import gudusoft.gsqlparser.ESqlStatementType;
-import gudusoft.gsqlparser.ETriggerActionTime;
-import gudusoft.gsqlparser.TGSqlParser;
-import gudusoft.gsqlparser.nodes.TDmlEventClause;
-import gudusoft.gsqlparser.nodes.TDmlEventItem;
-import gudusoft.gsqlparser.nodes.TSimpleDmlTriggerClause;
-import gudusoft.gsqlparser.stmt.TCreateTriggerStmt;
-import junit.framework.TestCase;
-
-public class testCreateTrigger extends TestCase {
-
- public void test1(){
-
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql);
- sqlparser.sqltext = "CREATE TRIGGER reminder\n" +
- "ON titles\n" +
- "FOR INSERT, UPDATE \n" +
- "AS RAISERROR (50009, 16, 10)\n" +
- "GO";
- int result = sqlparser.parse();
- assertTrue(result==0);
- assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetrigger);
- TCreateTriggerStmt createTrigger = (TCreateTriggerStmt)sqlparser.sqlstatements.get(0);
-
- // dml trigger
- TSimpleDmlTriggerClause dmlTriggerClause = (TSimpleDmlTriggerClause)createTrigger.getTriggeringClause();
- assertTrue(dmlTriggerClause.getActionTime() == ETriggerActionTime.tatFor);
- TDmlEventClause dmlEventClause = (TDmlEventClause)dmlTriggerClause.getEventClause();
- assertTrue(dmlEventClause.getEventItems().size() == 2);
- TDmlEventItem dmlEventItem = (TDmlEventItem)dmlEventClause.getEventItems().get(0);
- assertTrue(dmlEventItem.getDmlType() == ESqlStatementType.sstinsert);
- dmlEventItem = (TDmlEventItem)dmlEventClause.getEventItems().get(1);
- assertTrue(dmlEventItem.getDmlType() == ESqlStatementType.sstupdate);
-
- //assertTrue(createTrigger.getDmlTypes().toString().equalsIgnoreCase("[tdtInsert, tdtUpdate]"));
- //assertTrue(createTrigger.getTimingPoint().toString().equalsIgnoreCase("ttpFor"));
- }
-}
diff --git a/src/test/java/mssql/testDatatype.java b/src/test/java/mssql/testDatatype.java
deleted file mode 100644
index 42e0eff6..00000000
--- a/src/test/java/mssql/testDatatype.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package mssql;
-/*
- * Date: 12-5-23
- */
-
-import gudusoft.gsqlparser.*;
-import gudusoft.gsqlparser.nodes.TParameterDeclaration;
-import gudusoft.gsqlparser.stmt.TStoredProcedureSqlStatement;
-import junit.framework.TestCase;
-
-public class testDatatype extends TestCase {
-
- public void test1(){
- //System.out.println(TBaseType.versionid);
- //System.out.println(TBaseType.releaseDate);
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql);
- String sp_sql =
- "CREATE PROCEDURE [dbo].[test]" +
- " @OD1 AS datetime = '2000-01-01'," +
- " @OD2 AS datetime = '2012-12-31'" +
- " AS" +
- " BEGIN" +
- " select * from [sales_fact]" +
- " where" +
- " [sales_fact].[OrderDate] between @OD1 and @OD2" +
- " END";
- sqlparser.sqltext = sp_sql;
-
- int ret = sqlparser.parse();
- if (ret == 0) {
- TCustomSqlStatement sql = sqlparser.sqlstatements.get(0);
- //System.out.println("SQL Statement: " + sql.sqlstatementtype);
- //System.out.println("Parameters:");
-
- TStoredProcedureSqlStatement procedure = (TStoredProcedureSqlStatement) sql;
- TParameterDeclaration param = null;
- param = procedure.getParameterDeclarations().getParameterDeclarationItem(0);
- assertTrue(param.getParameterName().toString().equalsIgnoreCase("@OD1"));
- assertTrue(param.getDataType().toString().equalsIgnoreCase("datetime"));
- assertTrue(param.getDataType().getDataType() == EDataType.datetime_t);
- assertTrue(param.getMode() == 0);
- } else {
- System.out.println(sqlparser.getErrormessage());
- }
- }
-
-
-}
diff --git a/src/test/java/mssql/testDeclareBlock.java b/src/test/java/mssql/testDeclareBlock.java
deleted file mode 100644
index 68c745cf..00000000
--- a/src/test/java/mssql/testDeclareBlock.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package mssql;
-/*
- * Date: 11-8-4
- */
-
-import gudusoft.gsqlparser.EDbVendor;
-import gudusoft.gsqlparser.TGSqlParser;
-import gudusoft.gsqlparser.stmt.mssql.TMssqlBlock;
-import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare;
-import junit.framework.TestCase;
-
-public class testDeclareBlock extends TestCase {
-
- public void test1(){
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql);
- sqlparser.sqltext = "DECLARE \n" +
- "\t@n_Count integer\n" +
- "BEGIN\t\n" +
- "\tSELECT @n_Count = count(JobTypeCode) FROM Validbatchjobtype WHERE JobTypeCode = 7\n" +
- "\tIF @n_Count = 1 \n" +
- "\t\tBEGIN\n" +
- "\t\t\tUPDATE ValidBatchJobType SET JobTypeDesc = 'Merge Document Report', JobTypeClass = 'WordMergeJob' WHERE JobTypeCode = 7\n" +
- "\t\tEND\n" +
- "\tELSE\n" +
- "\t\tBEGIN\n" +
- "\t\t\tINSERT INTO ValidBatchJobType(JobTypeCode, JobTypeDesc, JobTypeClass, StampUser, StampDate) \n" +
- "\t VALUES(7, 'Merge Document Report', 'WordMergeJob', SYSTEM_USER, GETDATE())\n" +
- "\t\tEND\n" +
- "END";
- assertTrue(sqlparser.parse() == 0);
-
- assertTrue(sqlparser.sqlstatements.size() == 2);
-
- TMssqlDeclare declare = (TMssqlDeclare)sqlparser.sqlstatements.get(0);
- assertTrue(declare.getVariables().getDeclareVariable(0).getDatatype().toString().equalsIgnoreCase("integer"));
- assertTrue(declare.getVariables().getDeclareVariable(0).getVariableName().toString().equalsIgnoreCase("@n_Count"));
-
- TMssqlBlock block = (TMssqlBlock)sqlparser.sqlstatements.get(1);
- assertTrue(block.getBodyStatements().size() == 2);
- }
-
-}
diff --git a/src/test/java/mssql/testDeclareCursor.java b/src/test/java/mssql/testDeclareCursor.java
deleted file mode 100644
index c5ebad29..00000000
--- a/src/test/java/mssql/testDeclareCursor.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package mssql;
-/*
- * Date: 12-3-12
- */
-
-import gudusoft.gsqlparser.EDbVendor;
-import gudusoft.gsqlparser.TGSqlParser;
-import gudusoft.gsqlparser.stmt.mssql.TMssqlDeclare;
-import junit.framework.TestCase;
-
-public class testDeclareCursor extends TestCase {
-
- public void test1(){
-
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql);
- sqlparser.sqltext = " declare sds_post_asset_identifier cursor for\n" +
- " select distinct\n" +
- " asset_id \n" +
- " , asset_name_1 \n" +
- " \tfrom asd_wk_asset_identifier\n" +
- " where last_mod_tmstmp < @source_start_time\n" +
- "\torder by asset_id, last_mod_tmstmp";
- assertTrue(sqlparser.parse() == 0);
-
- TMssqlDeclare declare = (TMssqlDeclare)sqlparser.sqlstatements.get(0);
- assertTrue(declare.getCursorName().toString().equalsIgnoreCase("sds_post_asset_identifier"));
-
- }
-}
diff --git a/src/test/java/mssql/testDistinct.java b/src/test/java/mssql/testDistinct.java
deleted file mode 100644
index 37d1084a..00000000
--- a/src/test/java/mssql/testDistinct.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package mssql;
-/*
- * Date: 12-2-17
- */
-
-import gudusoft.gsqlparser.EDbVendor;
-import gudusoft.gsqlparser.TBaseType;
-import gudusoft.gsqlparser.TGSqlParser;
-import gudusoft.gsqlparser.stmt.TSelectSqlStatement;
-import junit.framework.TestCase;
-
-public class testDistinct extends TestCase {
-
- public void test1(){
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql);
- sqlparser.sqltext = "SELECT DISTINCT tf1, tf2 from tbl";
- assertTrue(sqlparser.parse() == 0);
- TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0);
- assertTrue(select.getSelectDistinct().getDistinctType() == TBaseType.dtDistinct);
- }
-}
diff --git a/src/test/java/mssql/testDropDBObject.java b/src/test/java/mssql/testDropDBObject.java
deleted file mode 100644
index 41d79f1d..00000000
--- a/src/test/java/mssql/testDropDBObject.java
+++ /dev/null
@@ -1,32 +0,0 @@
-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"));
- }
-}
diff --git a/src/test/java/mssql/testExecuteOption.java b/src/test/java/mssql/testExecuteOption.java
deleted file mode 100644
index 6eb77d24..00000000
--- a/src/test/java/mssql/testExecuteOption.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package mssql;
-
-
-import gudusoft.gsqlparser.*;
-import gudusoft.gsqlparser.nodes.TColumnDefinition;
-import gudusoft.gsqlparser.nodes.mssql.TInlineResultSetDefinition;
-import gudusoft.gsqlparser.nodes.mssql.TResultSetDefinition;
-import gudusoft.gsqlparser.nodes.mssql.TResultSetsExecuteOption;
-import gudusoft.gsqlparser.stmt.mssql.TMssqlExecute;
-import junit.framework.TestCase;
-
-public class testExecuteOption extends TestCase {
-
- public void test1(){
-
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql);
- sqlparser.sqltext = "EXEC Integration.GetMovementUpdates parameter1,parameter2 with recompile";
- int result = sqlparser.parse();
- assertTrue(result==0);
- assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlexec);
- TMssqlExecute execute = (TMssqlExecute)sqlparser.sqlstatements.get(0);
- assertTrue(execute.getExecuteOption().getExecuteOptionKind() == EExecuteOptionKind.eokRecompile);
- }
-
- public void test2(){
-
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql);
- sqlparser.sqltext = "EXEC Integration.GetMovementUpdates parameter1,parameter2 \n" +
- "WITH RESULT SETS\n" +
- "(\n" +
- " (\n" +
- " [Date Key] date,\n" +
- " [WWI Stock Item Transaction ID] int,\n" +
- " [WWI Invoice ID] int,\n" +
- " [WWI Purchase Order ID] int,\n" +
- " [Quantity] int,\n" +
- " [WWI Stock Item ID] int,\n" +
- " [WWI Customer ID] int,\n" +
- " [WWI Supplier ID] int,\n" +
- " [WWI Transaction Type ID] int,\n" +
- " [Last Modified When] datetime2(7)\n" +
- " )\n" +
- ");";
- int result = sqlparser.parse();
- assertTrue(result==0);
- assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlexec);
- TMssqlExecute execute = (TMssqlExecute)sqlparser.sqlstatements.get(0);
- assertTrue(execute.getExecuteOption().getExecuteOptionKind() == EExecuteOptionKind.eokResultSets);
- TResultSetsExecuteOption resultSetsExecuteOption = (TResultSetsExecuteOption) execute.getExecuteOption();
- assertTrue(resultSetsExecuteOption.getResultSetsOptionKind() == EResultSetsOptionKind.rsoResultSetsDefined);
- TResultSetDefinition resultSetDefinition = resultSetsExecuteOption.getDefinitions().get(0);
- assertTrue(resultSetDefinition.getResultSetType() == EResultSetType.rstInline);
- TInlineResultSetDefinition inlineResultSetDefinition = (TInlineResultSetDefinition)resultSetDefinition;
- TColumnDefinition columnDefinition = inlineResultSetDefinition.getColumnDefinitionList().getColumn(0);
- assertTrue(columnDefinition.getColumnName().toString().equalsIgnoreCase("[Date Key]"));
-
- }
-
-
- public void test3(){
-
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql);
- sqlparser.sqltext = "EXEC Integration.GetMovementUpdates parameter1,parameter2 \n" +
- "WITH RESULT SETS UNDEFINED\n";
-
- int result = sqlparser.parse();
- assertTrue(result==0);
- assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlexec);
- TMssqlExecute execute = (TMssqlExecute)sqlparser.sqlstatements.get(0);
- assertTrue(execute.getExecuteOption().getExecuteOptionKind() == EExecuteOptionKind.eokResultSets);
- TResultSetsExecuteOption resultSetsExecuteOption = (TResultSetsExecuteOption) execute.getExecuteOption();
- assertTrue(resultSetsExecuteOption.getResultSetsOptionKind() == EResultSetsOptionKind.rsoUndefined);
-
- }
-
- public void test4(){
-
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql);
- sqlparser.sqltext = "SP_EXECUTESQL N'SET FMTONLY ON SELECT * FROM [dbo].[insertbulk] '";
-
- int result = sqlparser.parse();
- assertTrue(result==0);
- assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstmssqlexec);
- TMssqlExecute execute = (TMssqlExecute)sqlparser.sqlstatements.get(0);
- assertTrue(execute.getExecuteType() == EExecType.module_with_params);
- assertTrue(execute.getModuleName().toString().equalsIgnoreCase("SP_EXECUTESQL"));
- assertTrue(execute.getParameters().getExecParameter(0).toString().equalsIgnoreCase("N'SET FMTONLY ON SELECT * FROM [dbo].[insertbulk] '"));
- assertTrue(execute.getParameters().getExecParameter(0).getParameterValue().toString().equalsIgnoreCase("N'SET FMTONLY ON SELECT * FROM [dbo].[insertbulk] '"));
- }
-
-}
diff --git a/src/test/java/mssql/testExternalTable.java b/src/test/java/mssql/testExternalTable.java
deleted file mode 100644
index 3683db01..00000000
--- a/src/test/java/mssql/testExternalTable.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package mssql;
-
-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 {
-
- public void test1() {
-
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvazuresql);
- sqlparser.sqltext = "CREATE EXTERNAL TABLE ClickStream (\n" +
- " url varchar(50),\n" +
- " event_date date,\n" +
- " user_IP varchar(50)\n" +
- ")\n" +
- "WITH (\n" +
- " LOCATION='/webdata/employee.tbl',\n" +
- " DATA_SOURCE = mydatasource,\n" +
- " FILE_FORMAT = myfileformat\n" +
- " )";
- int result = sqlparser.parse();
- assertTrue(result == 0);
- assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable);
- TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0);
- assertTrue(createTable.isExternal());
-// for(int i=0;i= t3.c8 AND\n" +
- "t0.c3='weekend' AND\n" +
- "t0.c4='chickenrun' AND\n" +
- "t0.c5 = (SELECT MAX(c5) FROM t4 WHERE c3='weekend' AND c4='chickenrun')\n" +
- "ORDER BY t0.c2 DESC\", v_LIMITSTR, \";\") ;\n" +
- "END;";
- assertTrue(sqlparser.parse() == 0);
- TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0);
- assertTrue(sqlStatement.toString().trim().equalsIgnoreCase("CREATE FUNCTION `func1`(p1 INT) RETURNS varchar(8000)\n" +
- "READS SQL DATA\n" +
- "DETERMINISTIC\n" +
- "BEGIN\n" +
- "DECLARE v_LIMITSTR VARCHAR(20);\n" +
- "IF p1 = -1 THEN\n" +
- "SET v_LIMITSTR = \"\";\n" +
- "ELSE\n" +
- "SET v_LIMITSTR = CONCAT(\"LIMIT \",p1);\n" +
- "END IF;\n" +
- "RETURN CONCAT(\"SELECT t1.c1, t2.c1, CONCAT('v=',t2.c1,';f=',t1.c1), CONCAT('v=',t2.c7,';f=',t0.c1),\n" +
- "t0.c2 AS `Test` FROM t0, t1, t2, t3\n" +
- "WHERE t0.c1 = t1.c6 AND\n" +
- "t1.c7 = t2.c7 AND\n" +
- "t1.c6 = t3.c6 AND\n" +
- "t0.c2 >= t3.c8 AND\n" +
- "t0.c3='weekend' AND\n" +
- "t0.c4='chickenrun' AND\n" +
- "t0.c5 = (SELECT MAX(c5) FROM t4 WHERE c3='weekend' AND c4='chickenrun')\n" +
- "ORDER BY t0.c2 DESC\", v_LIMITSTR, \";\") ;\n" +
- "END;"));
- }
-
-
-public void test2(){
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql);
- sqlparser.sqltext = "create aggregate function encsum returns string soname 'udf_example.so'";
- assertTrue(sqlparser.parse() == 0);
- TCustomSqlStatement sqlStatement = sqlparser.sqlstatements.get(0);
- assertTrue(sqlStatement.sqlstatementtype == ESqlStatementType.sstcreatefunction);
- TCreateFunctionStmt createFunction = (TCreateFunctionStmt)sqlStatement;
- assertTrue(createFunction.getReturnDataType().getDataType() == EDataType.string_t);
- assertTrue(createFunction.getSharedLibraryName().equalsIgnoreCase("'udf_example.so'"));
-}
-
-}
diff --git a/src/test/java/mysql/testCreateTable.java b/src/test/java/mysql/testCreateTable.java
deleted file mode 100644
index 7579d734..00000000
--- a/src/test/java/mysql/testCreateTable.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package mysql;
-
-import gudusoft.gsqlparser.EDbVendor;
-import gudusoft.gsqlparser.TGSqlParser;
-import gudusoft.gsqlparser.nodes.TMySQLCreateTableOption;
-import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement;
-import junit.framework.TestCase;
-
-public class testCreateTable extends TestCase {
-
- public void test1(){
- TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmysql);
- sqlparser.sqltext = "CREATE TABLE testtable (\n" +
- "testcolumn date default NULL\n" +
- ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='This is a test!!';";
- assertTrue(sqlparser.parse() == 0);
-
- TCreateTableSqlStatement createTableSqlStatement = (TCreateTableSqlStatement)sqlparser.sqlstatements.get(0);
-// 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" +
- "