internal override IEnumerable <IndexNode> Run(CollectionPage col, IndexService indexer) { var left = _left.Run(col, indexer); var right = _right.Run(col, indexer); return(left.Union(right, new IndexNodeComparer())); }
internal override IEnumerable <IndexNode> ExecuteIndex(IndexService indexer, CollectionIndex index) { var v = _value.Normalize(index.Options); return(indexer .FindAll(index, Query.Ascending) .Where(x => x.Key.IsString && x.Key.AsString.Contains(v))); }
internal override IEnumerable <IndexNode> ExecuteIndex(IndexService indexer, CollectionIndex index) { foreach (var value in _values.Distinct()) { foreach (var node in Query.EQ(this.Field, value).ExecuteIndex(indexer, index)) { yield return(node); } } }
/// <summary> /// Find witch index will be used and run Execute method /// </summary> internal virtual IEnumerable <IndexNode> Run(CollectionPage col, IndexService indexer) { // get index for this query var index = col.GetIndex(this.Field); // no index? throw an index not found exception to auto-create in LiteDatabse if (index == null) { throw new IndexNotFoundException(col.CollectionName, this.Field); } // execute query to get all IndexNodes return(this.ExecuteIndex(indexer, index)); }
internal override IEnumerable <IndexNode> ExecuteIndex(IndexService indexer, CollectionIndex index) { var value = _value.Normalize(index.Options); foreach (var node in indexer.FindAll(index, Query.Ascending)) { var diff = node.Key.CompareTo(value); if (diff == 1 || (!_equals && diff == 0)) { break; } if (node.IsHeadTail(index)) { yield break; } yield return(node); } }
public DbEngine(IDiskService disk, Logger log) { // initialize disk service and check if database exists var isNew = disk.Initialize(); // new database? create new database if (isNew) { disk.CreateNew(); } _log = log; _disk = disk; // initialize all services _cache = new CacheService(); _pager = new PageService(_disk, _cache); _indexer = new IndexService(_pager); _data = new DataService(_pager); _collections = new CollectionService(_pager, _indexer, _data); _transaction = new TransactionService(_disk, _pager, _cache); // check user verion }
public CollectionService(PageService pager, IndexService indexer, DataService data) { _pager = pager; _indexer = indexer; _data = data; }
/// <summary> /// Abstract method that must be implement for index seek/scan - Returns IndexNodes that match with index /// </summary> internal abstract IEnumerable <IndexNode> ExecuteIndex(IndexService indexer, CollectionIndex index);
internal override IEnumerable <IndexNode> ExecuteIndex(IndexService indexer, CollectionIndex index) { throw new NotSupportedException(); }
internal override IEnumerable<IndexNode> ExecuteIndex(IndexService indexer, CollectionIndex index) { var value = _value.Normalize(index.Options); return indexer.FindAll(index, Query.Ascending).Where(x => x.Key.CompareTo(value) != 0); }
internal override IEnumerable <IndexNode> ExecuteIndex(IndexService indexer, CollectionIndex index) { return(indexer.FindAll(index, _order)); }