public void CreateResultSet(string queriesDirectory) { var queryFiles = System.IO.Directory.EnumerateFiles(queriesDirectory); if (!Directory.Exists(_resultSetWriter.PersistencePath)) { Directory.CreateDirectory(_resultSetWriter.PersistencePath); } foreach (var queryFile in queryFiles) { string query; using (StreamReader infile = new StreamReader(Path.Combine(queriesDirectory, queryFile))) { query = infile.ReadToEnd(); } var qe = new QueryEngineFactory().GetExecutor(query, ConnectionString); var ds = qe.Execute(); var resultFile = Path.GetFileName(Path.ChangeExtension(queryFile, "csv")); _resultSetWriter.Write(resultFile, ds); } }
public void Parse_DontExecuteEffectivelyQuery(EngineType engineType) { var sqlCount = @"SELECT COUNT(*) from [HumanResources].[Department]"; var sql = @"DELETE from [HumanResources].[Department]"; var countBefore = ExecuteCount(sqlCount); if (countBefore == 0) //If nothing was present we cannot assert { Assert.Inconclusive(); } var cmd = BuildCommand(sql, engineType); var qp = new QueryEngineFactory().GetParser(cmd); var res = qp.Parse(); if (!res.IsSuccesful)//If syntax is incorrect we cannot assert { Assert.Inconclusive(); } var countAfter = ExecuteCount(sqlCount); Assert.That(countAfter, Is.EqualTo(countBefore)); }
public void GetExecutor_OdbcConnectionString_OdbcEngine() { var factory = new QueryEngineFactory(); var cmd = new OdbcCommand("select @@version;", new OdbcConnection(ConnectionStringReader.GetOdbcSql())); var executor = factory.GetExecutor(cmd); Assert.IsInstanceOf <QueryOdbcEngine>(executor); }
public void GetExecutor_SqlNativeConnectionString_SqlNativeEngine() { var factory = new QueryEngineFactory(); var cmd = new SqlCommand("select @@version;", new SqlConnection(ConnectionStringReader.GetSqlClient())); var executor = factory.GetExecutor(cmd); Assert.IsInstanceOf <QuerySqlEngine>(executor); }
protected virtual object ExecuteQuery(IDbCommand command) { var factory = new QueryEngineFactory(); var queryEngine = factory.GetExecutor(command); var value = queryEngine.ExecuteScalar(); return(value); }
protected virtual ResultSet Load(IDbCommand command) { var qe = new QueryEngineFactory().GetExecutor(command); var ds = qe.Execute(); var rs = new ResultSet(); rs.Load(ds); return(rs); }
public virtual ResultSet Build(IDbCommand cmd) { var qe = new QueryEngineFactory().GetExecutor(cmd); var ds = qe.Execute(); var rs = new ResultSet(); rs.Load(ds); return(rs); }
public void Parse_CorrectFields_Success(EngineType engineType) { var sql = "select [DepartmentID], Name from [HumanResources].[Department];"; var cmd = BuildCommand(sql, engineType); var qp = new QueryEngineFactory().GetParser(cmd); var res = qp.Parse(); Assert.That(res.IsSuccesful, Is.True); }
public void Parse_CorrectFields_Success() { var sql = "select [DepartmentID], Name from [HumanResources].[Department];"; var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient())); var qp = new QueryEngineFactory().GetParser(cmd); var res = qp.Parse(); Assert.That(res.IsSuccesful, Is.True); }
public void Parse_CorrectTableName_Success(EngineType engineType) { var sql = "SELECT * FROM [HumanResources].[Department];"; var cmd = BuildCommand(sql, engineType); var qp = new QueryEngineFactory().GetParser(cmd); var res = qp.Parse(); Assert.That(res.IsSuccesful, Is.True); }
public void CheckPerformance_OneQuery_ReturnElapsedTime(EngineType engineType) { var sql = "WAITFOR DELAY '00:00:00';"; var cmd = BuildCommand(sql, engineType); var qp = new QueryEngineFactory().GetPerformance(cmd); var res = qp.CheckPerformance(); Assert.That(res.TimeElapsed.TotalMilliseconds, Is.GreaterThanOrEqualTo(0).And.LessThan(5000)); Assert.That(res.IsTimeOut, Is.False); }
public void CheckPerformance_OneQueryHavingTimeout_ReturnTimeoutInfo() { var sql = "WAITFOR DELAY '00:00:03';"; var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient())); var qp = new QueryEngineFactory().GetPerformance(cmd); var res = qp.CheckPerformance(1000); Assert.That(res.TimeOut.TotalMilliseconds, Is.EqualTo(1000)); Assert.That(res.IsTimeOut, Is.True); }
public void Parse_WrongTableName_Failed() { var sql = "SELECT * FROM WrongTableName;"; var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient())); var qp = new QueryEngineFactory().GetParser(cmd); var res = qp.Parse(); Assert.That(res.IsSuccesful, Is.False); Assert.That(res.Errors[0], Is.EqualTo("Invalid object name 'WrongTableName'.")); }
public void Parse_WrongSyntax_Failed() { var sql = "SELECTION [DepartmentID], Name, WrongField1, WrongField2 from [HumanResources].[Department];"; var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient())); var qp = new QueryEngineFactory().GetParser(cmd); var res = qp.Parse(); Assert.That(res.IsSuccesful, Is.False); Assert.That(res.Errors[0], Is.EqualTo("Incorrect syntax near 'SELECTION'.")); }
public void CheckPerformance_OneQueryHavingTimeout_ReturnTimeoutInfo(EngineType engineType) { var sql = "WAITFOR DELAY '00:00:03';"; var cmd = BuildCommand(sql, engineType); var qp = new QueryEngineFactory().GetPerformance(cmd); var res = qp.CheckPerformance(1000); Assert.That(res.TimeOut.TotalMilliseconds, Is.EqualTo(1000)); Assert.That(res.IsTimeOut, Is.True); }
public void Parse_WrongField_Failed() { var sql = "select [DepartmentID], Name, WrongField from [HumanResources].[Department];"; var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient())); var qp = new QueryEngineFactory().GetParser(cmd); var res = qp.Parse(); Assert.That(res.IsSuccesful, Is.False); Assert.That(res.Errors[0], Is.EqualTo("Invalid column name 'WrongField'.")); }
public void CheckPerformance_OneQuery_ReturnElapsedTime() { var sql = "WAITFOR DELAY '00:00:00';"; var cmd = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient())); var qp = new QueryEngineFactory().GetPerformance(cmd); var res = qp.CheckPerformance(); Assert.That(res.TimeElapsed.TotalMilliseconds, Is.GreaterThanOrEqualTo(0).And.LessThan(5000)); Assert.That(res.IsTimeOut, Is.False); }
public void Parse_WrongTableName_Failed(EngineType engineType) { var sql = "SELECT * FROM WrongTableName;"; var cmd = BuildCommand(sql, engineType); var qp = new QueryEngineFactory().GetParser(cmd); var res = qp.Parse(); Assert.That(res.IsSuccesful, Is.False); Assert.That(res.Errors[0], Is.EqualTo("Invalid object name 'WrongTableName'.")); }
public void Parse_WrongSyntax_Failed(EngineType engineType) { var sql = "SELECTION [DepartmentID], Name, WrongField1, WrongField2 from [HumanResources].[Department];"; var cmd = BuildCommand(sql, engineType); var qp = new QueryEngineFactory().GetParser(cmd); var res = qp.Parse(); Assert.That(res.IsSuccesful, Is.False); Assert.That(res.Errors[0], Is.EqualTo("Incorrect syntax near 'SELECTION'.")); }
public void Parse_WrongField_Failed(EngineType engineType) { var sql = "select [DepartmentID], Name, WrongField from [HumanResources].[Department];"; var cmd = BuildCommand(sql, engineType); var qp = new QueryEngineFactory().GetParser(cmd); var res = qp.Parse(); Assert.That(res.IsSuccesful, Is.False); Assert.That(res.Errors[0], Is.EqualTo("Invalid column name 'WrongField'.")); }
public void ReadFromQuery(string query, string connectionString) { var queryEngineFactory = new QueryEngineFactory(); var queryEngine = queryEngineFactory.GetExecutor(query, connectionString); var ds = queryEngine.Execute(); content = ds.Tables[0]; variables.Clear(); foreach (DataColumn col in Content.Columns) { variables.Add(col.ColumnName); } }
protected IList <object> GetMembersFromResultSet(Object obj) { if (!(obj is IDbCommand)) { throw new ArgumentException(); } var args = new DbCommandQueryResolverArgs((IDbCommand)obj); var factory = new QueryResolverFactory(); var resolver = factory.Instantiate(args); var command = resolver.Execute(); var qe = new QueryEngineFactory().GetExecutor(command); var members = qe.ExecuteList <string>(); return(members.Cast <object>().ToList()); }
public void PersistResultSets() { if (ProgressStatusChanged != null) { ProgressStatusChanged(this, new ProgressStatusEventArgs(string.Format("Parsing directory {0}", DirectoryQueries))); } var files = Directory.GetFiles(DirectoryQueries, Pattern); var i = 1; foreach (var file in files) { i++; if (ProgressStatusChanged != null) { ProgressStatusChanged(this, new ProgressStatusEventArgs(String.Format("Executing query {0} of {1}", i, files.Length + 1), i, files.Length + 1)); } var query = File.ReadAllText(file); var qe = new QueryEngineFactory().GetExecutor(query, ConnectionString); var ds = qe.Execute(); if (ProgressStatusChanged != null) { ProgressStatusChanged(this, new ProgressStatusEventArgs(String.Format("Persisting results set for {0} of {1}", i, files.Length + 1), i, files.Length + 1)); } ResultSetWriter.Write(Path.GetFileNameWithoutExtension(file) + String.Format(".csv"), ds); } if (ProgressStatusChanged != null) { ProgressStatusChanged(this, new ProgressStatusEventArgs(string.Format("Directory {0} parsed", DirectoryQueries))); } }
public static async Task Main() { var store = new InMemoryKeyValueStore(); { Console.Write("Create new engine... "); var qe = await QueryEngineFactory.CreateNewAsync(store); Console.WriteLine("Done."); var ctx = qe.Client; Console.Write("Create timer subscription... "); await ctx.Timer(TimeSpan.FromSeconds(1)).Select(t => t.ToString()).SubscribeAsync(ctx.ConsoleOut, new Uri("reaqtor://shebang/subscriptions/tick"), state: null); Console.WriteLine("Done."); Console.Write("Checkpoint engine... "); await qe.CheckpointAsync(); Console.WriteLine("Done."); await Task.Delay(5000); Console.Write("Unload engine... "); await qe.UnloadAsync(); Console.WriteLine("Done."); } { Console.Write("Recover engine... "); var qe = await QueryEngineFactory.RecoverAsync(store); Console.WriteLine("Done."); var ctx = qe.Client; await Task.Delay(5000); Console.Write("Delete subscription... "); await ctx.GetSubscription(new Uri("reaqtor://shebang/subscriptions/tick")).DisposeAsync(); Console.WriteLine("Done."); await Task.Delay(5000); Console.Write("Checkpoint engine... "); await qe.CheckpointAsync(); Console.WriteLine("Done."); Console.Write("Unload engine... "); await qe.UnloadAsync(); Console.WriteLine("Done."); } }