Beispiel #1
0
        public virtual void testCreateAndPredicate()
        {
            TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle);

            TExpression left  = sqlParser.parseExpression("salary");
            TExpression right = sqlParser.parseExpression("20");

            TExpression left2  = sqlParser.parseExpression("location");
            TExpression right2 = sqlParser.parseExpression("'NY'");

            TExpression c1 = new TExpression(EExpressionType.simple_comparison_t, left, right, EComparisonType.greaterThanOrEqualTo);
            //c1.ExpressionType = EExpressionType.simple_comparison_t;
            //c1.ComparisonType = EComparisonType.greaterThanOrEqualTo;
            //c1.LeftOperand = left;
            //c1.RightOperand = right;

            TExpression c2 = new TExpression(EExpressionType.simple_comparison_t, left2, right2, EComparisonType.equalsTo);
            //c2.ExpressionType = EExpressionType.simple_comparison_t;
            //c2.ComparisonType = EComparisonType.equalsTo;
            //c2.LeftOperand = left2;
            //c2.RightOperand = right2;

            TExpression c3 = new TExpression(EExpressionType.logical_and_t, c1, c2);

            //c3.ExpressionType = EExpressionType.logical_and_t;
            //c3.LeftOperand = c1;
            //c3.RightOperand = c2;
            Assert.IsTrue(verifyScript(EDbVendor.dbvoracle, "salary >= 20 and location = 'NY'", c3.ToScript()));
        }
Beispiel #2
0
        public virtual void testCreateComparisonPredicate()
        {
            TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle);

            TExpression left  = sqlParser.parseExpression("salary");
            TExpression right = sqlParser.parseExpression("20");
            TExpression plus  = new TExpression(EExpressionType.simple_comparison_t, left, right, EComparisonType.greaterThanOrEqualTo);

            //plus.ExpressionType = EExpressionType.simple_comparison_t;
            //plus.ComparisonType = EComparisonType.greaterThanOrEqualTo;
            //plus.LeftOperand = left;
            //plus.RightOperand = right;
            Assert.IsTrue(verifyScript(EDbVendor.dbvoracle, "salary >= 20", plus.ToScript()));
        }
Beispiel #3
0
        public virtual void testCreateBinaryExpression()
        {
            TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle);

            TExpression left  = sqlParser.parseExpression("1");
            TExpression right = sqlParser.parseExpression("2");
            TExpression plus  = new TExpression(EExpressionType.arithmetic_plus_t, left, right);

            //plus.ExpressionType = EExpressionType.arithmetic_plus_t;
            //plus.LeftOperand = left;
            //plus.RightOperand = right;
            //System.out.println(plus.ToScript());
            Assert.IsTrue(verifyScript(EDbVendor.dbvoracle, "1 + 2 ", plus.ToScript()));
        }
Beispiel #4
0
        public virtual void testAssignStmt()
        {
            TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle);
            TAssignStmt assign    = new TAssignStmt(sqlParser.parseExpression("ILevel"), sqlParser.parseExpression("'Low Income'"));

            //assign.Left = sqlParser.parseExpression("ILevel");
            //assign.Expression = sqlParser.parseExpression("'Low Income'");

            //System.out.println(assign.ToScript());

            Assert.IsTrue(verifyScript(EDbVendor.dbvoracle, "ILevel = 'Low Income'", assign.ToScript()));
        }
Beispiel #5
0
        public virtual void testCreateSubqueryPredicate()
        {
            TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvoracle);

            TExpression left              = sqlParser.parseExpression("salary");
            TExpression right             = sqlParser.parseExpression("(select sal from emp where empno=1)");
            TExpression subqueryPredicate = new TExpression(EExpressionType.simple_comparison_t, left, right, EComparisonType.notLessThan);

            //subqueryPredicate.ExpressionType = EExpressionType.simple_comparison_t;
            //subqueryPredicate.ComparisonType = EComparisonType.notLessThan;
            //subqueryPredicate.LeftOperand = left;
            //subqueryPredicate.RightOperand = right;

            Assert.IsTrue(verifyScript(EDbVendor.dbvoracle, "salary !< (select sal from emp where empno=1)", subqueryPredicate.ToScript()));

            subqueryPredicate.ExpressionType = EExpressionType.group_comparison_t;
            subqueryPredicate.ComparisonType = EComparisonType.greaterThanOrEqualTo;
            subqueryPredicate.QuantifierType = EQuantifierType.all;
            //System.out.println(subqueryPredicate.ToScript());

            Assert.IsTrue(verifyScript(EDbVendor.dbvoracle, "salary >=  all (select sal from emp where empno=1)", subqueryPredicate.ToScript()));
        }
Beispiel #6
0
        public virtual void testRemoveObjectExpr()
        {
            TExpression expression = parser.parseExpression("columnA");

            Assert.IsTrue(expression.ExpressionType == EExpressionType.simple_object_name_t);
            expression.remove();
            Assert.IsTrue(expression.ExpressionType == EExpressionType.removed_t);
        }
Beispiel #7
0
        public virtual void testRemoveIntoClause()
        {
            TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvoracle);

            sqlparser.sqltext = @"SELECT * INTO newTbl FROM ( SELECT * FROM Instructor) AS tmp;";

            sqlparser.parse();
            TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0);

            // remove into clause
            select.IntoClause = null;
            // remove * in the select list
            select.ResultColumnList.removeElementAt(0);

            // add a new select list item
            TResultColumn resultColumn = new TResultColumn();

            resultColumn.Expr = sqlparser.parseExpression("count(*)");
            TAliasClause aliasClause = new TAliasClause();

            aliasClause.AliasName    = sqlparser.parseObjectName("count");
            aliasClause.HasAs        = true;
            resultColumn.AliasClause = aliasClause;

            select.ResultColumnList.addResultColumn(resultColumn);

            // Console.WriteLine(sqlparser.sqlstatements.get(0).ToScript());
            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , select.ToScript()
                                                           , @"select 
                    count(*) as count
                     from 
                    ( select 
                    *
                     from 
                    Instructor) as tmp"
                                                           ));
        }
Beispiel #8
0
        public virtual void testModifySelectList()
        {
            parser.sqltext = "select t1.f1, t2.f2 as f2 from table1 t1 left join table2 t2 on t1.f1 = t2.f2 ";
            Assert.IsTrue(parser.parse() == 0);
            TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0);

            select.ResultColumnList.removeElementAt(1);
            select.ResultColumnList.removeElementAt(0);

            TResultColumn resultColumn1 = new TResultColumn();

            resultColumn1.Expr = parser.parseExpression("t1.f3");
            TAliasClause aliasClause1 = new TAliasClause();

            aliasClause1.AliasName    = parser.parseObjectName("f1");
            aliasClause1.HasAs        = true;
            resultColumn1.AliasClause = aliasClause1;
            select.ResultColumnList.addResultColumn(resultColumn1);

            TResultColumn resultColumn2 = new TResultColumn();

            resultColumn2.Expr = parser.parseExpression("t2.f3");
            select.ResultColumnList.addResultColumn(resultColumn2);
            // System.out.println(scriptGenerator.generateScript(select,true));

            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , select.ToScript()
                                                           , "SELECT t1.f3 AS f1,\n" +
                                                           "       t2.f3\n" +
                                                           "FROM   table1 t1\n" +
                                                           "       LEFT JOIN table2 t2\n" +
                                                           "       ON t1.f1 = t2.f2"
                                                           ));
        }