Exemplo n.º 1
0
        internal static void FormatSql()
        {
            Gateway.SetCurrentLanguage(LangType.L_SQL);

            var text = GetCurrentText();

            var options = new TSqlStandardFormatterOptions
            {
                BreakJoinOnSections      = _settings.BreakJoinOnSections,
                ExpandBetweenConditions  = _settings.ExpandBetweenConditions,
                ExpandBooleanExpressions = _settings.ExpandBooleanExpressions,
                ExpandCaseStatements     = _settings.ExpandCaseStatements,
                ExpandCommaLists         = _settings.ExpandCommaList,
                ExpandInLists            = false,
                HTMLColoring             = false,
                IndentString             = _settings.IndentString,
                KeywordStandardization   = _settings.KeywordStandardization,
                MaxLineWidth             = _settings.MaxLineWidth,
                NewClauseLineBreaks      = 0,
                NewStatementLineBreaks   = 0,
                SpaceAfterExpandedComma  = _settings.SpaceAfterExpandedComma,
                SpacesPerTab             = _settings.SpacesPerTab,
                TrailingCommas           = _settings.TrailingCommas,
                UppercaseKeywords        = _settings.UppercaseKeywords
            };

            var innerFormatter = new TSqlStandardFormatter(options);
            var tokenizer      = new TSqlStandardTokenizer();
            var parser         = new TSqlStandardParser();


            var parsedSql = parser.ParseSQL(tokenizer.TokenizeSQL(text));

            Editor.SetText(innerFormatter.FormatSQLTree(parsedSql));
        }
        public string PrettyPrint(string sql)
        {
            var tokenizer = new TSqlStandardTokenizer();
            var tokenized = tokenizer.TokenizeSQL(sql);
            var parser    = new TSqlStandardParser();
            var parsedSql = parser.ParseSQL(tokenized);

            return(_formatter.FormatSQLTree(parsedSql)?.TrimEnd());
        }
        public void TestParseSqlWithNameKeyword()
        {
            var sql = @"select name from sometable";

            TSqlStandardTokenizer tokenizer = new TSqlStandardTokenizer();
            var tokenList = tokenizer.TokenizeSQL(sql);

            SybaseTSqlParser parser = new SybaseTSqlParser();
            XmlDocument xml = parser.ParseSQL(tokenList);

            Assert.AreEqual(1, xml.SelectNodes("//Other[text()='name']").Count);
        }
        public void TestParseSqlWithLeftRightJoins()
        {
            var sql = @"select a.a1, b.b1 from a, b where (a.k1*=b.k1 and a.k2=*b.k2) or (a.k3 =* b.k3 and a.k4 *= b.k4)";

            TSqlStandardTokenizer tokenizer = new TSqlStandardTokenizer();
            var tokenList = tokenizer.TokenizeSQL(sql);

            SybaseTSqlParser parser = new SybaseTSqlParser();
            XmlDocument xml = parser.ParseSQL(tokenList);

            Assert.AreEqual(0, xml.SelectNodes("//Asterisk").Count);
        }
        public void TestParseSqlWithInKeyword()
        {
            var sql = @"select a,b,c from k where a in ('a', 1, 'c')";

            TSqlStandardTokenizer tokenizer = new TSqlStandardTokenizer();
            var tokenList = tokenizer.TokenizeSQL(sql);

            SybaseTSqlParser parser = new SybaseTSqlParser();
            XmlDocument xml = parser.ParseSQL(tokenList);

            Assert.AreEqual(1, xml.SelectNodes("//AlphaOperator[text()='in']").Count);
        }
        public void TestParseSqlWithDateTypeKeywords()
        {
            var sql = @"select a.a, b.int, dAte, b.k1 as date, v.c as varchar from iNt..a, date..b, varchar v where a.Int=b.daTe";

            TSqlStandardTokenizer tokenizer = new TSqlStandardTokenizer();
            var tokenList = tokenizer.TokenizeSQL(sql);

            SybaseTSqlParser parser = new SybaseTSqlParser();
            XmlDocument xml = parser.ParseSQL(tokenList);

            Assert.AreEqual(0, xml.SelectNodes("//DataTypeKeyword").Count);
        }
        public void TestParseDataTypeDeclare()
        {
            var sql = @"declare varchar(10) a";

            TSqlStandardTokenizer tokenizer = new TSqlStandardTokenizer();
            var tokenList = tokenizer.TokenizeSQL(sql);

            SybaseTSqlParser parser = new SybaseTSqlParser();
            XmlDocument xml = parser.ParseSQL(tokenList);

            Assert.AreEqual(2, xml.SelectNodes("//WhiteSpace").Count);
        }
        internal SqlClassifier(ITagAggregator <StringTag> tagger, IClassificationTypeRegistryService classificationRegistry)
        {
            this.tagger = tagger;


            keywordType   = classificationRegistry.GetClassificationType("sql-keyword");
            operatorType  = classificationRegistry.GetClassificationType("sql-operator");
            stringType    = classificationRegistry.GetClassificationType("sql-string");
            functionType  = classificationRegistry.GetClassificationType("sql-function");
            numberType    = classificationRegistry.GetClassificationType("sql-number");
            parameterType = classificationRegistry.GetClassificationType("sql-parameter");
            commentType   = classificationRegistry.GetClassificationType("sql-comment");

            formatter = new CustomFormatter();
            tokenizer = new TSqlStandardTokenizer();
            parser    = new TSqlStandardParser();
        }
        public void TestParseSqlWithTxKeyword()
        {
            var sql = @"create proc test
            as
             select count(*)
             from CIS..order_header oh
             left outer join CIS..order_detail od
                   on oh.order_no=od.order_no and oh.order_type=od.order_type
             where b.order_type is null

             begin tran
             commit tran
            return
            ";
            TSqlStandardTokenizer tokenizer = new TSqlStandardTokenizer();
            var tokenList = tokenizer.TokenizeSQL(sql);

            SybaseTSqlParser parser = new SybaseTSqlParser();
            XmlDocument xml = parser.ParseSQL(tokenList);

            Assert.AreEqual(2, xml.SelectNodes("//OtherKeyword[text()='tran']").Count);
        }