Beispiel #1
0
        public IEnumerable <long> Execute(IJournalCore journal, IReadTransactionContext tx, ERowIDSortDirection sortDirection)
        {
            var intervalFilter = new PartitionIntervalIterator();
            var symbolFilter   = new LatestByFilter <T>(journal, _column, _keys);

            return(Timestamps.AllIntervals.Reverse().SelectMany(interval =>
                                                                symbolFilter.Filter(intervalFilter.IteratePartitions(
                                                                                        tx.ReverseReadPartitions, interval, tx), tx, sortDirection)
                                                                ));
        }
 public long Cardinality(IJournalCore journal, IReadTransactionContext tx)
 {
     if (!_caridnality.HasValue)
     {
         var intervalFilter = new PartitionIntervalIterator();
         _caridnality =
             Timestamps
             .AllIntervals
             .Sum(p => intervalFilter.IteratePartitions(tx.ReadPartitions, p, tx).Sum(p2 => p2.High - p2.Low));
     }
     return(_caridnality.Value);
 }
        public IEnumerable <long> Execute(IJournalCore journal, IReadTransactionContext tx, ERowIDSortDirection sort)
        {
            var intervalFilter = new PartitionIntervalIterator();

            if (sort == ERowIDSortDirection.Desc)
            {
                return(Timestamps.AllIntervals.Reverse().SelectMany(
                           interval => GetIdsDesc(
                               intervalFilter.IteratePartitions(
                                   tx.ReadPartitions.Reverse(), interval, tx))
                           ));
            }
            return(Timestamps.AllIntervals.SelectMany(
                       interval => GetIdsAsc(
                           intervalFilter.IteratePartitions(tx.ReadPartitions, interval, tx))
                       ));
        }
Beispiel #4
0
        public IEnumerable <long> Execute(IJournalCore journal, IReadTransactionContext tx,
                                          ERowIDSortDirection sort)
        {
            var intervalFilter = new PartitionIntervalIterator();
            var intervals      = Timestamps.AllIntervals.SelectMany(
                i => intervalFilter.IteratePartitions(tx.ReadPartitions, i, tx)).ToList();

            if (sort == ERowIDSortDirection.Desc)
            {
                intervals.Reverse();
            }

            if (_partitionFilter != null)
            {
                if (_andFilters == null)
                {
                    return(_partitionFilter.Filter(intervals, tx, sort));
                }
                OptimizeFilters(journal, tx);
                return(ApplyFilters(_partitionFilter.Filter(intervals, tx, sort), tx));
            }
            OptimizeFilters(journal, tx);
            return(FilterRowsRange(tx, intervals, sort));
        }