Example #1
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"
                                                           ));
        }
Example #2
0
        public virtual void testAddResultColumnInSelectList()
        {
            parser.sqltext = "SELECT A as A_Alias, B AS B_Alias FROM TABLE_X";
            Assert.IsTrue(parser.parse() == 0);
            TSelectSqlStatement select  = (TSelectSqlStatement)parser.sqlstatements.get(0);
            TResultColumnList   columns = select.ResultColumnList;

            TResultColumn resultColumn = new TResultColumn();

            resultColumn.Expr = parser.parseExpression("d");
            columns.addResultColumn(resultColumn);
            TAliasClause aliasClause = new TAliasClause();

            aliasClause.AliasName    = parser.parseObjectName("d_alias");
            aliasClause.HasAs        = true;
            resultColumn.AliasClause = aliasClause;

            //  System.out.println(scriptGenerator.generateScript(select, true));
            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , select.ToScript()
                                                           , "SELECT a AS a_alias,\n" +
                                                           "       b AS b_alias,\n" +
                                                           "       d AS d_alias\n" +
                                                           "FROM   table_x"
                                                           ));
        }
Example #3
0
        public virtual void testFromClaueJoinTable()
        {
            parser.sqltext = "select table1.col1, table2.col2\n" + "from table1, table2\n" + "where table1.foo > table2.foo";
            Assert.IsTrue(parser.parse() == 0);
            TSelectSqlStatement select = (TSelectSqlStatement)parser.sqlstatements.get(0);

            select.joins.removeElementAt(1);

            TJoin join = new TJoin();

            select.joins.addJoin(join);
            //join.setWithParen(true);
            join.NestedParen = 1;
            TTable table1 = new TTable();

            table1.TableName = parser.parseObjectName("tableX");
            join.Table       = table1;

            TJoinItem joinItem = new TJoinItem();

            join.JoinItems.addJoinItem(joinItem);
            joinItem.JoinType = EJoinType.join;
            TTable table2 = new TTable();

            table2.TableName = parser.parseObjectName("tableY");
            joinItem.Table   = table2;


            TObjectNameList usingColumns = new TObjectNameList();

            usingColumns.addObjectName(parser.parseObjectName("id"));
            joinItem.UsingColumns = usingColumns;

            TAliasClause aliasClause = new TAliasClause();

            aliasClause.AliasName = parser.parseObjectName("table2");
            aliasClause.HasAs     = true;
            join.AliasClause      = aliasClause;

            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , select.ToScript()
                                                           , "SELECT table1.col1,\n" +
                                                           "       table2.col2\n" +
                                                           "FROM   table1, (\n" +
                                                           "       tablex JOIN \n" +
                                                           "       tabley USING (ID)) AS table2\n" +
                                                           "WHERE  table1.foo > table2.foo"
                                                           ));
        }
Example #4
0
        public virtual void testModifyAlias()
        {
            TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvmssql);

            sqlparser.sqltext = @"Select X as [Y]";

            sqlparser.parse();
            TSelectSqlStatement select       = (TSelectSqlStatement)sqlparser.sqlstatements.get(0);
            TResultColumn       resultColumn = select.ResultColumnList.getResultColumn(0);
            TAliasClause        aliasClause  = resultColumn.AliasClause;

            aliasClause.AliasName = parser.parseObjectName("\"Y\"");

            //Console.WriteLine(sqlparser.sqlstatements.get(0).ToScript());
        }
Example #5
0
        public virtual void testAddTableAlias()
        {
            parser.sqltext = "select * from t1";
            Assert.IsTrue(parser.parse() == 0);

            TTable       table       = parser.sqlstatements.get(0).tables.getTable(0);
            TAliasClause aliasClause = new TAliasClause();

            aliasClause.HasAs     = true;
            aliasClause.AliasName = parser.parseObjectName("foo");
            table.AliasClause     = aliasClause;

            //Assert.IsTrue(parser.sqlstatements.get(0).toString().trim().Equals("select * from t1 AS foo", StringComparison.CurrentCultureIgnoreCase));
            Assert.IsTrue(testScriptGenerator.verifyScript(EDbVendor.dbvoracle
                                                           , parser.sqlstatements.get(0).ToScript()
                                                           , "SELECT *\n" +
                                                           "FROM   t1 AS foo"
                                                           ));
        }
Example #6
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"
                                                           ));
        }
        public static TObjectName[] getTableColumns(TTable table)
        {
            Table createTable = ModelBindingManager.getCreateTable(table);

            if (createTable != null)
            {
                IList <TableColumn> columnList = createTable.Columns;
                TObjectName[]       columns    = new TObjectName[columnList.Count];
                for (int i = 0; i < columns.Length; i++)
                {
                    columns[i] = columnList[i].ColumnObject;
                }
                Array.Sort(columns, new ComparatorAnonymousInnerClass());
                return(columns);
            }
            else
            {
                TObjectNameList    list    = table.ObjectNameReferences;
                List <TObjectName> columns = new List <TObjectName>();

                if (list.size() == 0 && table.Subquery != null)
                {
                    ResultSet resultSet = (ResultSet)ModelBindingManager.getModel(table.Subquery);
                    if (resultSet != null)
                    {
                        IList <ResultColumn> columnList = resultSet.Columns;
                        for (int i = 0; i < columnList.Count; i++)
                        {
                            ResultColumn resultColumn = columnList[i];
                            if (resultColumn.ColumnObject is TResultColumn)
                            {
                                TResultColumn columnObject = ((TResultColumn)resultColumn.ColumnObject);
                                TAliasClause  alias        = columnObject.AliasClause;
                                if (alias != null && alias.AliasName != null)
                                {
                                    columns.Add(alias.AliasName);
                                }
                                else
                                {
                                    if (columnObject.FieldAttr != null)
                                    {
                                        columns.Add(columnObject.FieldAttr);
                                    }
                                    else
                                    {
                                        continue;
                                    }
                                }
                            }
                            else if (resultColumn.ColumnObject is TObjectName)
                            {
                                columns.Add((TObjectName)resultColumn.ColumnObject);
                            }
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < list.size(); i++)
                    {
                        columns.Add(list.getObjectName(i));
                    }
                }

                TObjectName[] columnArray = columns.ToArray();
                Array.Sort(columnArray, new ComparatorAnonymousInnerClass());
                return(columnArray);
            }
        }