Esempio n. 1
0
        public TabModel ToTabModel()
        {
            FilterQuery filter;

            try
            {
                filter = QueryCompiler.Compile(Query);
            }
            catch (FilterQueryException ex)
            {
                BackstageModel.RegisterEvent(new QueryCorruptionEvent(Name, ex));
                filter = null;
            }
            var model = new TabModel
            {
                Name              = Name,
                FilterQuery       = filter,
                BindingHashtags   = this.BindingHashtags,
                NotifyNewArrivals = this.NotifyNewArrivals,
                NotifySoundSource = this.NotifySoundSource,
                ShowUnreadCounts  = this.ShowUnreadCounts
            };

            this.BindingAccountIds.ForEach(model.BindingAccounts.Add);
            return(model);
        }
Esempio n. 2
0
 public void CopyTab()
 {
     try
     {
         var model = new TabModel
         {
             Name        = Name,
             FilterQuery = Model.FilterQuery != null
                 ? QueryCompiler.Compile(Model.FilterQuery.ToQuery())
                 : null,
             RawQueryString    = Model.RawQueryString,
             BindingHashtags   = Model.BindingHashtags.ToArray(),
             NotifyNewArrivals = Model.NotifyNewArrivals,
             ShowUnreadCounts  = Model.ShowUnreadCounts,
             NotifySoundSource = Model.NotifySoundSource
         };
         Model.BindingAccounts.ForEach(id => model.BindingAccounts.Add(id));
         Parent.Model.CreateTab(model);
     }
     catch (FilterQueryException fqex)
     {
         BackstageModel.RegisterEvent(
             new OperationFailedEvent(QueryCompilerResources.QueryCompileFailed, fqex));
     }
 }
        public void QueryCompilerCompileDeleteTest()
        {
            var part = new DelegateQueryPart(OperationType.Delete, () => "Table");
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "DELETE FROM Table");
        }
        public void QueryCompilerCompileAndTest()
        {
            var part = new DelegateQueryPart(OperationType.And, () => "Field = 1");
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "\r\n AND Field = 1");
        }
        public void QueryCompilerCompileCountTest()
        {
            var part = new QueryPart(OperationType.None);
            part.Add(new FieldQueryPart("Name", "Alias", operation: OperationType.Count));
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, " COUNT(Name) AS Alias");
        }
        public void QueryCompilerCompileFieldTest()
        {
            var part = new QueryPart(OperationType.None);
            part.Add(new FieldQueryPart("Name", null));
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, " Name");
        }
Esempio n. 7
0
        public void QueryCompiler_Compile_UnOrdered()
        {
            var container = new ComponentContainer()
                            .Add(new QueryComponent(SyntaxComponent.Keyword, "FROM"))
                            .Add(new QueryComponent(SyntaxComponent.Keytable, "Item"))
                            .Add(new QueryComponent(SyntaxComponent.FieldList, "ID, Name"))
                            .Add(new QueryComponent(SyntaxComponent.Command, "SELECT"));

            var compiler = new QueryCompiler();
            var query    = compiler.Compile(container);

            Assert.AreEqual("SELECT ID, Name FROM Item", query.Query);
        }
        public void CompileQueryTest()
        {
            // setup
            var parts = new Mock<IQueryPartsContainer>();
            //parts.Setup(p => p.Compile()).Returns(new CompiledQuery());

            // Act
            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts.Object, new InterceptorCollection());

            Assert.IsNotNull(query);
            //parts.Verify(p => p.Compile(), Times.Once);
        }
Esempio n. 9
0
        public static EnumerateFactory <T> GetEnumerateFactory <T>(ISchema schema, IDataRecord header)
        {
            ColumnCacheKey cacheKey = GetCacheKey(schema, QueryType.List, header);

            return((EnumerateFactory <T>)enumerateMap.GetOrAdd(cacheKey, k =>
            {
                EnumerateParser parser = new EnumerateParser(schema);
                EnumerateResult result = parser.Parse(k.Header);

                QueryCompiler compiler = new QueryCompiler();

                return compiler.Compile <T>(result);
            }));
        }
Esempio n. 10
0
        public static AggregateFactory GetAggregateFactory(ISchema schema, IEnumerable <AggregateAttribute> header)
        {
            AggregateCacheKey cacheKey = new AggregateCacheKey(schema, QueryType.Aggregate, header.ToList());

            return((AggregateFactory)aggregateMap.GetOrAdd(cacheKey, k =>
            {
                AggregateParser parser = new AggregateParser(k.Schema);
                AggregateResult result = parser.Parse(k.Header);

                QueryCompiler compiler = new QueryCompiler();

                return compiler.Compile(result);
            }));
        }
        public void SqlServer_QueryCompiler_Compile_AddColumnMissingNUllableTest()
        {
            var part = new ValueCollectionQueryPart(OperationType.AddColumn);
            part.AddValue(KeyValuePart.MemberName, "ColumnName");
            part.AddValue(KeyValuePart.MemberType, "int");

            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "ADD ColumnName int");
        }
Esempio n. 12
0
        private async void OnTextChanged(string value)
        {
            if (value != null && value.StartsWith("?"))
            {
                IsQueryMode             = true;
                IsSearchOptionAvailable = false;
                IsSearchResultAvailable = false;
                ErrorText = SearchFlipResources.SearchFlipQueryCompiling;
                try
                {
                    if (value == "?")
                    {
                        ErrorText = SearchFlipResources.SearchFlipQueryEmpty;
                        IsSearchResultAvailable = false;
                        return;
                    }
                    await Task.Run(() =>
                    {
                        var result = QueryCompiler.Compile(value.Substring(1));
                        result.GetEvaluator(); // check evaluator
                    });

                    ErrorText = null;
                }
                catch (FilterQueryException fex)
                {
                    ErrorText = fex.Message;
                }
            }
            else
            {
                IsQueryMode             = false;
                IsSearchOptionAvailable = true;
                ErrorText = null;
                if (String.IsNullOrEmpty(value))
                {
                    IsSearchResultAvailable = false;
                    IsSearchOptionAvailable = false;
                }
                else
                {
                    IsSearchResultAvailable = SearchMode == SearchMode.CurrentTab;
                    if (IsSearchResultAvailable)
                    {
                        CommitSearch();
                    }
                    CanBeUserScreenName = _userScreenNameRegex.IsMatch(value);
                }
            }
        }
        public void SqliteQueryCompilerCompileAddColumnNullableTest()
        {
            var part = new ValueCollectionQueryPart(OperationType.AddColumn);
            part.AddValue(KeyValuePart.MemberName, "ColumnName");
            part.AddValue(KeyValuePart.MemberType, "int");
            part.AddValue(KeyValuePart.Nullable, true.ToString());

            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "ADD COLUMN ColumnName int");
        }
Esempio n. 14
0
        public void CopyTab()
        {
            var model = new TabModel
            {
                Name        = this.Name,
                FilterQuery = this.Model.FilterQuery != null?QueryCompiler.Compile(this.Model.FilterQuery.ToQuery()) : null,
                                  BindingHashtags   = this.Model.BindingHashtags.ToArray(),
                                  NotifyNewArrivals = this.Model.NotifyNewArrivals,
                                  ShowUnreadCounts  = this.Model.ShowUnreadCounts,
                                  NotifySoundSource = this.Model.NotifySoundSource
            };

            this.Model.BindingAccounts.ForEach(id => model.BindingAccounts.Add(id));
            this.Parent.Model.CreateTab(model);
        }
Esempio n. 15
0
        static HierarchyList <CallTreeNodeViewModel> LoadWorker(ProfilingDataProvider provider, QueryCompiler compiler, int rangeStart, int rangeEnd)
        {
            try {
                if (compiler.Compile())
                {
                    var data  = compiler.ExecuteQuery(provider, rangeStart, rangeEnd);
                    var nodes = data.Select(i => new CallTreeNodeViewModel(i, null)).ToList();
                    return(new HierarchyList <CallTreeNodeViewModel>(nodes));
                }
            } catch (ObjectDisposedException) {
                return(null);
            }

            return(null);
        }
Esempio n. 16
0
        public static ListFactory GetListFactory(ISchema schema, QueryType queryType, IDataRecord header)
        {
            ColumnCacheKey cacheKey = GetCacheKey(schema, queryType, header);

            return(listMap.GetOrAdd(cacheKey, k =>
            {
                BufferCache buffer = GetBuffer(k.Schema);
                ListParser parser = new ListParser(buffer, queryType);
                ListResult result = parser.Parse(k.Header);

                QueryCompiler compiler = new QueryCompiler();

                return compiler.Compile(result);
            }));
        }
Esempio n. 17
0
        /// <summary>
        /// Create new tab model
        /// </summary>
        /// <param name="name">tab name</param>
        /// <param name="query">tab query(KQ)</param>
        /// <returns>tab model</returns>
        public static TabModel Create(string name, string query)
        {
            var model = new TabModel
            {
                Name        = name,
                FilterQuery = query != null?QueryCompiler.Compile(query) : null,
                                  RawQueryString    = query,
                                  ShowUnreadCounts  = true,
                                  NotifyNewArrivals = false,
            };
            var cf = TabManager.CurrentFocusTab;

            cf?.BindingAccounts.ForEach(model.BindingAccounts.Add);
            return(model);
        }
Esempio n. 18
0
        public void TestQueryCache()
        {
            int iterations = 1000;
            var cache      = new QueryCache(10);

            var notCached = RunTimedTest(iterations, i =>
            {
                var results = db.OrderDetails.Where(d => d.OrderID > i).Take(n).ToList();
                System.Diagnostics.Debug.Assert(results.Count == n);
            });

            this.provider.Cache = cache;
            var autoCached = RunTimedTest(iterations, i =>
            {
                var results = db.OrderDetails.Where(d => d.OrderID > i).Take(n).ToList();
                System.Diagnostics.Debug.Assert(results.Count == n);
            });

            this.provider.Cache = null;

            var check = RunTimedTest(iterations, i =>
            {
                var query    = db.OrderDetails.Where(d => d.OrderID > i).Take(n);
                var isCached = cache.Contains(query);
            });

            var cached = RunTimedTest(iterations, i =>
            {
                var query   = db.OrderDetails.Where(d => d.OrderID > i).Take(n);
                var results = cache.Execute(query).ToList();
                System.Diagnostics.Debug.Assert(results.Count == n);
            });

            System.Diagnostics.Debug.Assert(cache.Count == 1);

            var cq       = QueryCompiler.Compile((Northwind nw, int i) => nw.OrderDetails.Where(d => d.OrderID > i).Take(n));
            var compiled = RunTimedTest(iterations, i =>
            {
                var results = cq(db, i).ToList();
                System.Diagnostics.Debug.Assert(results.Count == n);
            });

            Console.WriteLine("compiled   : {0} sec", compiled);
            Console.WriteLine("check cache: {0}", check);
            Console.WriteLine("cached     : {0}  {1:#.##}x vs compiled", cached, cached / compiled);
            Console.WriteLine("auto cached: {0}  {1:#.##}x vs compiled", autoCached, autoCached / compiled);
            Console.WriteLine("not cached : {0}  {1:#.##}x vs compiled", notCached, notCached / compiled);
        }
Esempio n. 19
0
        public void TestCompiledQuery()
        {
            int n          = 50;
            int iterations = 100;

            var query  = QueryCompiler.Compile((Northwind nw, int i) => nw.OrderDetails.Where(d => d.OrderID > i).Take(n));
            var result = query(db, 0).ToList();

            var compiledTime = RunTimedTest(iterations, i =>
            {
                var list = query(db, i).ToList();
            });

            var adoTime = RunTimedTest(iterations, i =>
            {
                var cmd = this.GetProvider().Connection.CreateCommand();

                cmd.CommandText = "SELECT TOP (@p0) OrderID, ProductID FROM [Order Details] WHERE OrderID > @p1";
                //cmd.CommandText = "PARAMETERS p1 int; SELECT TOP 50 OrderID, ProductID FROM [Order Details] WHERE OrderID > p1";

                var p0           = cmd.CreateParameter();
                p0.ParameterName = "p0";
                p0.Value         = n;
                cmd.Parameters.Add(p0);

                var p1           = cmd.CreateParameter();
                p1.ParameterName = "p1";
                p1.Value         = i;
                cmd.Parameters.Add(p1);

                var reader = cmd.ExecuteReader();

                var list = new List <object>();
                while (reader.Read())
                {
                    var orderId   = reader.IsDBNull(0) ? default(int) : reader.GetInt32(0);
                    var productId = reader.IsDBNull(1) ? default(int) : reader.GetInt32(1);
                    list.Add(new OrderDetail {
                        OrderID = orderId, ProductID = productId
                    });
                }

                reader.Close();
            });

            Console.WriteLine("Direct ADO : {0}", adoTime);
            Console.WriteLine("Compiled IQ: {0}  {1:#.##}x vs ADO", compiledTime, compiledTime / adoTime);
        }
Esempio n. 20
0
        private async void CheckCompile(string source)
        {
            try
            {
                var newFilter = await Task.Run(() => QueryCompiler.Compile(source));

                newFilter.GetEvaluator(); // validate types
                _filterQuery = newFilter;
                FoundError   = false;
            }
            catch (Exception ex)
            {
                FoundError       = true;
                ExceptionMessage = ex.Message;
            }
        }
Esempio n. 21
0
        static HierarchyList <CallTreeNodeViewModel> LoadWorker(ProfilingDataProvider provider, QueryCompiler compiler, int rangeStart, int rangeEnd)
        {
            try {
                if (compiler.Compile())
                {
                    IEnumerable <CallTreeNode> data = compiler.ExecuteQuery(provider, rangeStart, rangeEnd);
                                        #if DEBUG
                    data = data.WithQueryLog(Console.Out);
                                        #endif
                    var nodes = data.Select(i => new CallTreeNodeViewModel(i, null)).ToList();
                    return(new HierarchyList <CallTreeNodeViewModel>(nodes));
                }
            } catch (ObjectDisposedException) {
                return(null);
            }

            return(null);
        }
Esempio n. 22
0
        private async Task <bool> CheckCompile(string source)
        {
            try
            {
                var newFilter = await Task.Run(() => QueryCompiler.Compile(source));

                newFilter.GetEvaluator(); // validate types
                _lastValidFilterQuery       = newFilter;
                _lastValidFilterQueryString = source;
                FoundError = false;
                return(true);
            }
            catch (Exception ex)
            {
                FoundError       = true;
                ExceptionMessage = ex.Message;
                return(false);
            }
        }
Esempio n. 23
0
        private void ProcessDumpEvents()
        {
            string        error;
            List <string> files = null;

            if (!FileUtilities.ValidateAndEnumerate(inputFiles, ref files, ".etl", out error))
            {
                Console.WriteLine(error);
                return;
            }

            if (queries == null || queries.Length == 0)
            {
                Logger.Log("Dumping Raw Events");
                string fileName = Path.Combine(SupportFiles.SupportFileDir, "AllEvents.linq");
                QueryCompiler.Compile(inputFiles,
                                      fileName,
                                      Console.Out,
                                      this.LogWriter,
                                      ManifestCompiler.GetKnowntypesforPlayback());
            }
            else
            {
                Logger.Log("Dumping events using query.");
                List <string> queryFiles = null;
                FileUtilities.ValidateAndEnumerate(inputFiles, ref queryFiles, ".linq", out error);
                if (!FileUtilities.ValidateAndEnumerate(queries, ref queryFiles, ".linq", out error))
                {
                    Console.WriteLine(error);
                    return;
                }

                foreach (var item in queryFiles)
                {
                    EtlViewer.QueryFx.QueryCompiler.Compile(inputFiles,
                                                            item,
                                                            Console.Out,
                                                            this.LogWriter,
                                                            ManifestCompiler.GetKnowntypesforPlayback());
                }
            }
        }
Esempio n. 24
0
        public string GetQueryString()
        {
            // check raw query string is equals to filter query
            try
            {
                if (RawQueryString != null)
                {
                    if (!this._isQueryStringValid &&
                        QueryCompiler.Compile(this.RawQueryString).ToQuery() == this.FilterQuery.ToQuery())
                    {
                        this._isQueryStringValid = true;
                    }
                    return(RawQueryString);
                }
            }
            catch { }
            RawQueryString = this.FilterQuery != null?this.FilterQuery.ToQuery() : String.Empty;

            this._isQueryStringValid = true;
            return(RawQueryString);
        }
        public void QueryCompilerCompileSelectTest()
        {
            var parts = new QueryPartsContainer();
            parts.Add(new QueryPart(OperationType.Select, null));

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "SELECT");
        }
        public void QueryCompilerCompileOrderByTest()
        {
            var part = new DelegateQueryPart(OperationType.OrderBy, () => "Field");
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, " \r\nORDER BY Field ASC");
        }
        public void SqlServer_QueryCompiler_Compile_MultipleParameterOutputTest()
        {
            var part = new QueryPart(OperationType.None);
            part.Add(new DelegateQueryPart(OperationType.OutputParameter, () => "Param1=value1"));
            part.Add(new DelegateQueryPart(OperationType.OutputParameter, () => "Param2=value2"));
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "Param1=value1 OUTPUT, Param2=value2 OUTPUT");
        }
Esempio n. 28
0
 /// <summary>
 /// Compiles the current queryable type.
 /// </summary>
 /// <typeparam name="T">The source type within the collection.</typeparam>
 /// <param name="source">The current IQueryable type.</param>
 /// <returns>The enumrable function type.</returns>
 public static Nequeo.Threading.FunctionHandler <IEnumerable <T> > Compile <T>(this IQueryable <T> source)
 {
     return(QueryCompiler.Compile <IEnumerable <T> >(
                Expression.Lambda <Nequeo.Threading.FunctionHandler <IEnumerable <T> > >(((IQueryable)source).Expression)));
 }
        public void QueryCompilerCompileValuesTest()
        {
            var part = new QueryPart(OperationType.Values, null);
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, " VALUES ()");
        }
        public void QueryCompilerCompileUpdateValueWithValueCollectionTest()
        {
            var part = new ValueCollectionQueryPart(OperationType.UpdateValue);
            part.AddValue(KeyValuePart.MemberName, "Member");
            part.AddValue(KeyValuePart.Value, "Value");
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "Member = Value");
        }
        public void QueryCompilerCompileSelectWithIncludeTest()
        {
            var select = new QueryPart(OperationType.Select);
            select.Add(new FieldQueryPart("Name", "Alias") { OperationType = OperationType.Include });
            var parts = new QueryPartsContainer();
            parts.Add(select);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "SELECT Name AS Alias");
        }
        public void SqlServer_QueryCompiler_Compile_ColumnMultipleTest()
        {
            var part = new QueryPart(OperationType.None);

            var part1 = new ValueCollectionQueryPart(OperationType.Column);
            part1.AddValue(KeyValuePart.MemberName, "ColumnName1");
            part1.AddValue(KeyValuePart.MemberType, "int");
            part1.AddValue(KeyValuePart.Nullable, false.ToString());

            part.Add(part1);

            var part2 = new ValueCollectionQueryPart(OperationType.Column);
            part2.AddValue(KeyValuePart.MemberName, "ColumnName2");
            part2.AddValue(KeyValuePart.MemberType, "VARCHAR(20)");
            part2.AddValue(KeyValuePart.Nullable, true.ToString());

            part.Add(part2);

            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "ColumnName1 int NOT NULL, ColumnName2 VARCHAR(20)");
        }
        public void SqlServer_QueryCompiler_Compile_AlterTableTest()
        {
            var part = new DelegateQueryPart(OperationType.AlterTable, () => "Table");
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "ALTER TABLE Table ");
        }
        public void SqlServer_QueryCompiler_Compile_SelectWithOutputParameterSelectTest()
        {
            var part = new QueryPart(OperationType.Select);
            part.Add(new DelegateQueryPart(OperationType.OutParameterSelect, () => "Param1"));
            part.Add(new DelegateQueryPart(OperationType.OutParameterSelect, () => "Param2"));
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "SELECT @Param1 AS Param1, @Param2 AS Param2");
        }
        public void QueryCompilerCompileFieldWithAliasAndTableAndTableAliasDefinitionTest()
        {
            var part = new QueryPart(OperationType.None);
            part.Add(new FieldQueryPart("Name", "Alias", entity: "Entity", entityalias: "EntityAlias"));
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, " EntityAlias.Name AS Alias");
        }
        public void SqlServer_QueryCompiler_Compile_ParameterTest()
        {
            var part = new QueryPart(OperationType.None, null);
            part.Add(new DelegateQueryPart(OperationType.Parameter, () => "Param=value"));
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "Param=value");
        }
        public void SqlServer_QueryCompiler_Compile_OutputParameterSetTest()
        {
            var part = new DelegateQueryPart(OperationType.OutParameterSet, () => "ParamName=1");
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "SET @ParamName=1\r\n");
        }
        public void QueryCompilerCompileSimpleJoinTest()
        {
            var part = new DelegateQueryPart(OperationType.Join, () => "Table");
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, " \r\nJOIN Table");
        }
        public void QueryCompilerCompileFromTest()
        {
            var part = new EntityPart(OperationType.From, entity: "Table");
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, " \r\nFROM Table");
        }
        public void QueryCompilerCompileThenByDescTest()
        {
            var part = new DelegateQueryPart(OperationType.ThenByDesc, () => "Field");
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, ", Field DESC");
        }
        public void QueryCompilerCompileIgnoreTest()
        {
            var select = new QueryPart(OperationType.IgnoreColumn);
            var parts = new QueryPartsContainer();
            parts.Add(select);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, string.Empty);
        }
        public void QueryCompilerCompileUpdateWithUpdateValueTest()
        {
            var part = new DelegateQueryPart(OperationType.Update, () => "Table");
            part.Add(new DelegateQueryPart(OperationType.UpdateValue, () => "Field1=Value1, "));
            part.Add(new DelegateQueryPart(OperationType.UpdateValue, () => "Field2=Value2"));
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "UPDATE Table SET Field1=Value1, Field2=Value2");
        }
        public void QueryCompilerCompileInsertWithInsertMemberTest()
        {
            var part = new DelegateQueryPart(OperationType.Insert, () => "TableName");
            part.Add(new DelegateQueryPart(OperationType.InsertMember, () => "Field1"));
            part.Add(new DelegateQueryPart(OperationType.InsertMember, () => "Field2"));
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "INSERT INTO TableName (Field1, Field2)");
        }
        public void QueryCompilerCompileValuesWithInsertValuesTest()
        {
            var part = new QueryPart(OperationType.Values);
            part.Add(new DelegateQueryPart(OperationType.InsertValue, () => "Field1"));
            part.Add(new DelegateQueryPart(OperationType.InsertValue, () => "Field2"));
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, " VALUES (Field1, Field2)");
        }
        public void QueryCompilerCompileJoinithAliasTest()
        {
            var part = new EntityPart(OperationType.Join, entity: "Table", entityAlias: "Alias");
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, " \r\nJOIN Table Alias");
        }
        public void SqlServer_QueryCompiler_Compile_PrimaryKeyWithMultipleColumnsTest()
        {
            var part = new QueryPart(OperationType.PrimaryKey);
            part.Add(new DelegateQueryPart(OperationType.Column, () => "Column1"));
            part.Add(new DelegateQueryPart(OperationType.Column, () => "Column2"));

            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "PRIMARY KEY (Column1, Column2)");
        }
        public void SqlServer_QueryCompiler_Compile_ForeignKeyTest()
        {
            var part = new ValueCollectionQueryPart(OperationType.ForeignKey);
            part.AddValue(KeyValuePart.MemberName, "ColumnName");
            part.AddValue(KeyValuePart.ReferenceTable, "RefTable");
            part.AddValue(KeyValuePart.ReferenceMember, "RefColumn");

            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "FOREIGN KEY(ColumnName) REFERENCES RefTable(RefColumn)");
        }
Esempio n. 48
0
        private void PrepareFilter()
        {
            var disposable = new CompositeDisposable();
            var prev       = Interlocked.Exchange(ref _previousFilterListener, disposable);

            if (prev != null)
            {
                prev.Dispose();
            }
            switch (this._option)
            {
            case SearchOption.Web:
                this._filterFunc = FilterExpressionBase.Tautology;
                break;

            case SearchOption.Query:
                try
                {
                    var fq = QueryCompiler.Compile(this._query);
                    _filterQuery = fq;
                    fq.Activate();
                    disposable.Add(Disposable.Create(fq.Deactivate));
                    disposable.Add(Observable.FromEvent(
                                       h => fq.InvalidateRequired += h,
                                       h => fq.InvalidateRequired -= h)
                                   .Subscribe(r => this.QueueInvalidateTimeline()));
                }
                catch
                {
                    _filterQuery     = null;
                    this._filterFunc = FilterExpressionBase.Contradiction;
                    this._filterSql  = FilterExpressionBase.ContradictionSql;
                }
                break;

            default:
                var splitted = this._query.Split(new[] { " ", "\t", " " },
                                                 StringSplitOptions.RemoveEmptyEntries)
                               .Distinct().ToArray();
                var positive = splitted.Where(s => !s.StartsWith("-")).ToArray();
                var negative = splitted.Where(s => s.StartsWith("-")).Select(s => s.Substring(1)).ToArray();
                var filter   = new Func <TwitterStatus, bool>(
                    status =>
                    positive.Any(s => status.GetEntityAidedText(EntityDisplayMode.LinkUri)
                                 .IndexOf(s, StringComparison.CurrentCultureIgnoreCase) >= 0) &&
                    !negative.Any(s => status.GetEntityAidedText(EntityDisplayMode.LinkUri)
                                  .IndexOf(s, StringComparison.CurrentCultureIgnoreCase) >= 0));
                var psql = positive.Select(s => "LOWER(EntityAidedText) like LOWER('%" + s + "%')").JoinString(" OR ");
                var nsql = negative.Select(s => "LOWER(EntityAidedText) not like LOWER('%" + s + "%')").JoinString(" AND ");
                var sql  = psql.SqlConcatAnd(nsql);
                var ctab = TabManager.CurrentFocusTab;
                var ctf  = ctab != null ? ctab.FilterQuery : null;
                if (_option == SearchOption.CurrentTab && ctf != null)
                {
                    // add current tab filter
                    this._filterSql = sql.SqlConcatAnd(ctf.GetSqlQuery());
                    var func = ctf.GetEvaluator();
                    this._filterFunc = s => func(s) && filter(s);
                }
                else
                {
                    this._filterSql  = sql;
                    this._filterFunc = filter;
                }
                break;
            }
        }
        public void SqlServer_QueryCompiler_Compile_ProcedureTest()
        {
            var part = new DelegateQueryPart(OperationType.Procedure, () => "ProcName");
            var parts = new QueryPartsContainer();
            parts.Add(part);

            var compiler = new QueryCompiler();
            var query = compiler.Compile(parts, new InterceptorCollection());

            Assert.AreEqual(query.QueryString, "EXEC ProcName ");
        }