Esempio n. 1
0
        private void removeObjectFromWhereCondition(TCustomSqlStatement stmt, TObjectName column)
        {
            TWhereClause where = stmt.WhereClause;
            if (where == null)
            {
                return;
            }
            TExpression condition = where.Condition;

            removeObjectFromExpression(condition, column);
            if (where.Condition.ToScript().Trim().Length == 0)
            {
                stmt.WhereClause = null;
            }
        }
Esempio n. 2
0
        public virtual void testAddWhereClause2()
        {
            parser.sqltext = "SELECT * FROM TABLE_X";
            Assert.IsTrue(parser.parse() == 0);
            TSelectSqlStatement select      = (TSelectSqlStatement)parser.sqlstatements.get(0);
            TWhereClause        whereClause = new TWhereClause();

            select.WhereClause    = whereClause;
            whereClause.Condition = parser.parseExpression("c>1");

            // System.out.println(scriptGenerator.generateScript(select,true));
            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , select.ToScript()
                                                           , "SELECT *\n" +
                                                           "FROM   table_x\n" +
                                                           "WHERE  c > 1"
                                                           ));
        }
Esempio n. 3
0
        public virtual void testAddWhereClauseAfterJoin()
        {
            parser.sqltext = "SELECT tableA.itemA1, tableB.itemB1\n" + " FROM tableA\n" + " INNER JOIN tableB\n" + " ON tableB.itemB2 = tableA.itemA2\n" + " INNER JOIN (\n" + "   SELECT tableC.itemC1\n" + "   FROM tableC\n" + "   WHERE tableC.itemC3='ABC'\n" + "   GROUP BY tableC.itemC1\n" + ") unNamedJoin\n" + " ON unNamedJoin.itemC1 = tableB.itemB2\n";
            Assert.IsTrue(parser.parse() == 0);
            TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0);

            TJoinList joinList = select.joins;
            TJoinItem item     = joinList.getJoin(0).JoinItems.getJoinItem(0);

            TExpression expression1 = parser.parseExpression("1=1");
            TExpression expression2 = new TExpression();

            expression2.ExpressionType = EExpressionType.logical_and_t;
            TExpression parensExpr = new TExpression();

            parensExpr.ExpressionType = EExpressionType.parenthesis_t;
            parensExpr.LeftOperand    = item.OnCondition;
            expression2.LeftOperand   = parensExpr;
            expression2.RightOperand  = expression1;
            item.OnCondition          = expression2;

            TWhereClause whereClause = new TWhereClause();

            whereClause.Condition = parser.parseExpression("c>1");
            select.WhereClause    = whereClause;


            // System.out.println(scriptGenerator.generateScript(select,true));
            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , select.ToScript()
                                                           , "SELECT tablea.itema1,\n" +
                                                           "       tableb.itemb1\n" +
                                                           "FROM   tablea\n" +
                                                           "       INNER JOIN tableb\n" +
                                                           "       ON (tableb.itemb2 = tablea.itema2) AND 1 = 1\n" +
                                                           "       INNER JOIN ( SELECT tablec.itemc1 FROM tablec WHERE tablec.itemc3 = 'ABC' GROUP BY tablec.itemc1) unnamedjoin\n" +
                                                           "       ON unnamedjoin.itemc1 = tableb.itemb2\n" +
                                                           "WHERE  c > 1"
                                                           ));
        }
Esempio n. 4
0
        public virtual void testAddOrderByClause()
        {
            parser.sqltext = "SELECT * FROM TABLE_X";
            Assert.IsTrue(parser.parse() == 0);
            TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0);

            TOrderBy orderBy = new TOrderBy();

            select.OrderbyClause = orderBy;
            TOrderByItem orderByItem = new TOrderByItem();

            orderBy.Items.addElement(orderByItem);
            orderByItem.SortKey   = parser.parseExpression("a");
            orderByItem.SortOrder = ESortType.desc;

            //System.out.println(scriptGenerator.generateScript(select,true));
            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , select.ToScript()
                                                           , "SELECT   *\n" +
                                                           "FROM     table_x\n" +
                                                           "ORDER BY a DESC"
                                                           ));

            parser.sqltext = "SELECT * FROM TABLE_X where a>1";
            Assert.IsTrue(parser.parse() == 0);
            select = (TSelectSqlStatement)parser.sqlstatements.get(0);

            orderBy = new TOrderBy();
            select.OrderbyClause = orderBy;
            orderByItem          = new TOrderByItem();
            orderBy.Items.addElement(orderByItem);
            orderByItem.SortKey   = parser.parseExpression("a");
            orderByItem.SortOrder = ESortType.desc;

            //  System.out.println(scriptGenerator.generateScript(select,true));
            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , select.ToScript()
                                                           , "SELECT   *\n" +
                                                           "FROM     table_x\n" +
                                                           "WHERE    a > 1\n" +
                                                           "ORDER BY a DESC"
                                                           ));

            parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1";
            Assert.IsTrue(parser.parse() == 0);
            select = (TSelectSqlStatement)parser.sqlstatements.get(0);

            orderBy = new TOrderBy();
            select.OrderbyClause = orderBy;
            orderByItem          = new TOrderByItem();
            orderBy.Items.addElement(orderByItem);
            orderByItem.SortKey   = parser.parseExpression("a");
            orderByItem.SortOrder = ESortType.asc;

            // System.out.println(scriptGenerator.generateScript(select,true));
            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , select.ToScript()
                                                           , "SELECT   *\n" +
                                                           "FROM     table_x\n" +
                                                           "WHERE    a > 1\n" +
                                                           "GROUP BY a\n" +
                                                           "HAVING  count(*) > 1\n" +
                                                           "ORDER BY a ASC"
                                                           ));

            parser.sqltext = "SELECT * FROM TABLE_X where a>1 group by a having count(*) > 1 order by c desc";
            Assert.IsTrue(parser.parse() == 0);
            select = (TSelectSqlStatement)parser.sqlstatements.get(0);

            orderByItem = new TOrderByItem();
            orderBy.Items.addElement(orderByItem);
            orderByItem.SortKey   = parser.parseExpression("a");
            orderByItem.SortOrder = ESortType.asc;
            select.OrderbyClause.Items.addOrderByItem(orderByItem);
            //  System.out.println(scriptGenerator.generateScript(select,true));
            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , select.ToScript()
                                                           , "SELECT   *\n" +
                                                           "FROM     table_x\n" +
                                                           "WHERE    a > 1\n" +
                                                           "GROUP BY a\n" +
                                                           "HAVING  count(*) > 1\n" +
                                                           "ORDER BY c DESC,\n" +
                                                           "         a ASC"
                                                           ));

            parser.sqltext = "SELECT * FROM TABLE_X";
            Assert.IsTrue(parser.parse() == 0);
            select = (TSelectSqlStatement)parser.sqlstatements.get(0);

            TWhereClause whereClause = new TWhereClause();

            whereClause.Condition = parser.parseExpression("a>1 and b>2");
            select.WhereClause    = whereClause;
            //select.addWhereClause("a>1 and b>2") ;

            orderBy = new TOrderBy();
            select.OrderbyClause = orderBy;
            orderByItem          = new TOrderByItem();
            orderBy.Items.addElement(orderByItem);
            orderByItem.SortKey   = parser.parseExpression("a");
            orderByItem.SortOrder = ESortType.desc;

            //System.out.println(scriptGenerator.generateScript(select,true));

            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , select.ToScript()
                                                           , "SELECT   *\n" +
                                                           "FROM     table_x\n" +
                                                           "WHERE    a > 1\n" +
                                                           "         AND b > 2\n" +
                                                           "ORDER BY a DESC"
                                                           ));
        }