Exemplo n.º 1
0
        private void ExecuteSql(int update, ref bool started)
        {
            var queryText  = AddSqlForVariables(SqlQuery);
            var statements = TSQLStatementReader.ParseStatements(queryText);

            if (queryText.Contains("UNION") && statements.Count == 2)
            {
                var tables = statements[0].GetAllTables();
                foreach (var table in tables)
                {
                    LoadRecordset(table.TableName);
                }
                var sqlQueryToUpdate = queryText;
                foreach (var item in AdvancedRecordset.HashedRecSets)
                {
                    sqlQueryToUpdate = sqlQueryToUpdate.Replace(item.recSet, item.hashCode);
                }
                var results = AdvancedRecordset.ExecuteQuery(sqlQueryToUpdate);
                foreach (DataTable dt in results.Tables)
                {
                    AdvancedRecordset.ApplyResultToEnvironment(dt.TableName, Outputs, dt.Rows.Cast <DataRow>().ToList(), false, update, ref started);
                }
            }
            else
            {
                ExecuteAllSqlStatements(update, statements, ref started);
            }
        }
Exemplo n.º 2
0
 string AddSqlForVariables(string queryText) => Regex.Replace(queryText, @"\@\w+\b", match =>
 {
     if (DeclareVariables.FirstOrDefault(nv => "@" + nv.Name == match.Value) != null)
     {
         return(AdvancedRecordset.GetVariableValue(match.Value));
     }
     return(match.Value);
 });
        void ProcessSelectStatement(TSQLSelectStatement selectStatement, int update, ref bool started)
        {
            var results = AdvancedRecordset.ExecuteQuery(AdvancedRecordset.ReturnSql(selectStatement.Tokens));

            foreach (DataTable dt in results.Tables)
            {
                AdvancedRecordset.ApplyResultToEnvironment(dt.TableName, Outputs, dt.Rows.Cast <DataRow>().ToList(), false, update, ref started);
            }
        }
        void ProcessCreateTableStatement(TSQLUnknownStatement complexStatement)
        {
            var recordset = new DataTable();

            recordset.Columns.Add("records_affected", typeof(int));
            recordset.Rows.Add(AdvancedRecordset.ExecuteNonQuery(AdvancedRecordset.ReturnSql(complexStatement.Tokens)));
            var outputName = Outputs.FirstOrDefault(e => e.MappedFrom == "records_affected").MappedTo;

            AdvancedRecordset.ApplyScalarResultToEnvironment(outputName, int.Parse(recordset.Rows[0].ItemArray[0].ToString()));
        }
Exemplo n.º 5
0
        void ProcessSelectStatement(TSQLSelectStatement selectStatement, int update, ref bool started)
        {
            var sqlQuery = AdvancedRecordset.UpdateSqlWithHashCodes(selectStatement);
            var results  = AdvancedRecordset.ExecuteQuery(sqlQuery);

            foreach (DataTable dt in results.Tables)
            {
                AdvancedRecordset.ApplyResultToEnvironment(dt.TableName, Outputs, dt.Rows.Cast <DataRow>().ToList(), false, update, ref started);
            }
        }
 void InsertIntoVariableTable(string varName, string value)
 {
     try
     {
         AdvancedRecordset.InsertIntoVariableTable(varName, value);
     }
     catch (Exception e)
     {
         Dev2Logger.Error("AdvancedRecorset", e, GlobalConstants.WarewolfError);
     }
 }
Exemplo n.º 7
0
        void ProcessUpdateStatement(TSQLUnknownStatement complexStatement, int update, ref bool started)
        {
            var tokens = complexStatement.Tokens;
            var outputRecordsetName = "";

            for (int i = 0; i < complexStatement.Tokens.Count; i++)
            {
                if (i == 1 && tokens[i].Type.ToString() == "Identifier" && (tokens[i - 1].Text.ToUpper() == "UPDATE"))
                {
                    outputRecordsetName = tokens[i].Text;
                }
                if (tokens[i].Type.ToString() == "Keyword" && (tokens[i].Text.ToUpper() == "INSERT"))
                {
                    outputRecordsetName = tokens[i + 2].Text;
                }
                if (tokens[i].Type.ToString() == "Identifier" && (tokens[i].Text.ToUpper() == "REPLACE"))
                {
                    outputRecordsetName = tokens[i + 2].Text;
                }
                if (tokens[i].Type.ToString() == "Keyword" && (tokens[i].Text.ToUpper() == "DELETE"))
                {
                    outputRecordsetName = tokens[i + 2].Text;
                }
            }

            var sqlQuery = AdvancedRecordset.UpdateSqlWithHashCodes(complexStatement);

            var recordset = new DataTable();

            recordset.Columns.Add("records_affected", typeof(int));
            recordset.Rows.Add(AdvancedRecordset.ExecuteNonQuery(sqlQuery));
            object sumObject;

            sumObject         = recordset.Compute("Sum(records_affected)", "");
            _recordsAffected += Convert.ToInt16(sumObject.ToString());
            var mapping = Outputs.FirstOrDefault(e => e.MappedFrom == "records_affected");


            if (mapping != null)
            {
                AdvancedRecordset.ApplyScalarResultToEnvironment(mapping.MappedTo, _recordsAffected);
            }
            var results = AdvancedRecordset.ExecuteQuery("SELECT * FROM " + AdvancedRecordset.HashedRecSets.FirstOrDefault(x => x.recSet == outputRecordsetName).hashCode);

            foreach (DataTable dt in results.Tables)
            {
                AdvancedRecordset.ApplyResultToEnvironment(outputRecordsetName, Outputs, dt.Rows.Cast <DataRow>().ToList(), true, update, ref started);
            }
        }
        void ExecuteRecordset(IDSFDataObject dataObject, int update)
        {
            var env = dataObject.Environment;

            AdvancedRecordset = new AdvancedRecordset(env);
            var iter               = new WarewolfListIterator();
            var started            = false;
            var itemsToIterateOver = new Dictionary <string, IWarewolfIterator>();
            var allTables          = new List <string>();

            if (DeclareVariables == null || DeclareVariables.All(d => String.IsNullOrEmpty(d.Value)))
            {
                ExecuteSql(update, allTables, ref started);
            }
            else
            {
                _recordsAffected = 0;
                foreach (var declare in DeclareVariables)
                {
                    if (string.IsNullOrEmpty(declare.Value))
                    {
                        continue;
                    }
                    var res = new WarewolfIterator(env.Eval(declare.Value, update));
                    iter.AddVariableToIterateOn(res);
                    itemsToIterateOver.Add(declare.Name, res);
                }

                while (iter.HasMoreData())
                {
                    foreach (var item in itemsToIterateOver)
                    {
                        AddDeclarations(item.Key, iter.FetchNextValue(item.Value));
                    }
                    ExecuteSql(update, allTables, ref started);
                    started = true;
                }
            }
            foreach (var table in allTables)
            {
                AdvancedRecordset.DeleteTableInSqlite(table);
            }
        }
        private void ExecuteSql(int update, List <string> allTables, ref bool started)
        {
            var queryText  = AddSqlForVariables(SqlQuery);
            var statements = TSQLStatementReader.ParseStatements(queryText);

            if (queryText.Contains("UNION") && statements.Count == 2)
            {
                var tables = statements[0].GetAllTables();
                foreach (var table in tables)
                {
                    LoadRecordset(table.TableName);
                    allTables.Add(table.TableName);
                }
                var results = AdvancedRecordset.ExecuteQuery(queryText);
                foreach (DataTable dt in results.Tables)
                {
                    AdvancedRecordset.ApplyResultToEnvironment(dt.TableName, Outputs, dt.Rows.Cast <DataRow>().ToList(), false, update, ref started);
                }
            }
            else
            {
                ExecuteAllSqlStatements(update, allTables, statements, ref started);
            }
        }
Exemplo n.º 10
0
 string AddSqlForVariables(string queryText) => Regex.Replace(queryText, @"\@\w+\b", match => AdvancedRecordset.GetVariableValue(match.Value));
Exemplo n.º 11
0
 void LoadRecordset(string tableName)
 {
     AdvancedRecordset.LoadRecordsetAsTable(tableName);
 }