示例#1
0
        private IReadOnlyList <IQueryStage> GetStages(StatementList tree, SqlParameters parameters)
        {
            var mainVisitor = new MainVisitor(new VisitorMetadata(parameters, _tablesMetadata, _searchExpressionProvider, _operationsProvider));

            tree.Accept(mainVisitor);

            return(mainVisitor.Stages);
        }
示例#2
0
        public void TestStatementListAccept()
        {
            Mock <KoraliumSqlVisitor> mock          = new Mock <KoraliumSqlVisitor>();
            StatementList             statementList = new StatementList();

            statementList.Accept(mock.Object);
            mock.Verify(x => x.VisitStatementList(statementList));
        }
示例#3
0
            private void DoHasOutputResultSet(StatementList toAnalyze) // try, catch
            {
                StatementVisitor vstor = new StatementVisitor(resolveColumnType, columnTypeResolver, toAnalyze);

                toAnalyze.Accept(vstor);
                int cnt = vstor.resultHasOutputResultSet.Count;

                if (cnt > 0)
                {
                    this.resultHasOutputResultSet.AddRange(vstor.resultHasOutputResultSet);
                }
            }
示例#4
0
        private static List <string> GetTableReferences(string file, SqlEngineType engineType)
        {
            using (TextReader reader = File.OpenText(file))
            {
                TSql140Parser      parser     = new TSql140Parser(initialQuotedIdentifiers: false, engineType: engineType);
                IList <ParseError> errors     = null;
                StatementList      statements = parser.ParseStatementList(reader, out errors);

                if (errors.Count > 0)
                {
                    throw new Exception(string.Format("File {0} had {1} errors", file, errors.Count));
                }

                TableVisitor visitor = new TableVisitor();
                statements.Accept(visitor);
                List <string> tables = visitor.Tables.Distinct().OrderBy(t => t).ToList();
                return(tables);
            }
        }