/// <summary> /// Execute the command and take the first cell of each row to build an Enumerable of string /// </summary> /// <param name="cmd">A sql or mdx query to execute</param> /// <returns>The first cell of row returned by the query</returns> public virtual IEnumerable<string> Build(IDbCommand cmd) { var qe = new QueryEngineFactory().GetExecutor(cmd); var ds = qe.Execute(); var list = Load(ds); return list; }
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 virtual ResultSet Build(IDbCommand cmd) { var qe = new QueryEngineFactory().GetExecutor(cmd); var ds = qe.Execute(); var rs = new ResultSet(); rs.Load(ds); return rs; }
/// <summary> /// Execute the command and take the first cell of each row to build an Enumerable of string /// </summary> /// <param name="cmd">A sql or mdx query to execute</param> /// <returns>The first cell of row returned by the query</returns> public virtual IEnumerable <string> Build(IDbCommand cmd) { var qe = new QueryEngineFactory().GetExecutor(cmd); var ds = qe.Execute(); var list = Load(ds); return(list); }
public void Parse_CorrectTableName_Success() { var sql = "SELECT * 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_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 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_DontExecuteEffectivelyQuery() { 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 = new SqlCommand(sql, new SqlConnection(ConnectionStringReader.GetSqlClient())); 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 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_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 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 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); }