private IReadOnlyList <IQueryStage> GetStages(StatementList tree, SqlParameters parameters) { var mainVisitor = new MainVisitor(new VisitorMetadata(parameters, _tablesMetadata, _searchExpressionProvider, _operationsProvider)); tree.Accept(mainVisitor); return(mainVisitor.Stages); }
public void TestStatementListAccept() { Mock <KoraliumSqlVisitor> mock = new Mock <KoraliumSqlVisitor>(); StatementList statementList = new StatementList(); statementList.Accept(mock.Object); mock.Verify(x => x.VisitStatementList(statementList)); }
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); } }
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); } }