Exemple #1
0
        private bool UpdatePartitionGetIsNull(int partitionID, long localRowID, int nullIndex)
        {
            _lastPartitionReader = _tx.Read(partitionID);
            _lastPartitionID     = partitionID;

            byte[] bitset = ((IBitsetColumn)_lastPartitionReader.ReadColumn(_bitSetColIndex))
                            .GetValue(localRowID, _tx.ReadCache);
            return(new ByteArray(bitset).IsSet(nullIndex));
        }
        public bool IsMatch(IPartitionReader partition, ReadContext readCache, long localRowID)
        {
            if (_columnPartition != partition.PartitionID)
            {
                _columnPartition = partition.PartitionID;
                _columnReader    = (ITypedColumn <T>)partition.ReadColumn(_column.ColumnID);
            }

            var value = _columnReader.Get(localRowID, readCache);

            return(IsMatch(value));
        }
Exemple #3
0
 private bool MatchFilters(IPartitionReader partition, ReadContext readContext, long localRowID)
 {
     if (_andFilters == null)
     {
         return(true);
     }
     for (int i = 0; i < _andFilters.Count; i++)
     {
         if (!_andFilters[i].IsMatch(partition, readContext, localRowID))
         {
             return(false);
         }
     }
     return(true);
 }
Exemple #4
0
        private IEnumerable <T> Read()
        {
            int lastPartitionID = -1;
            IPartitionReader lastPartitionReader = null;

            foreach (var rowID in _rowIDs)
            {
                int partitionID = RowIDUtil.ToPartitionIndex(rowID);
                if (partitionID != lastPartitionID)
                {
                    lastPartitionReader = _tx.Read(partitionID);
                    lastPartitionID     = partitionID;
                }
                long localRowID = RowIDUtil.ToLocalRowID(rowID);

                // ReSharper disable once PossibleNullReferenceException
                yield return(lastPartitionReader.Read <T>(localRowID, _tx.ReadCache));
            }
        }
Exemple #5
0
        private IEnumerable <long> ApplyFilters(IEnumerable <long> rowIDs, IReadTransactionContext tx)
        {
            int partitionIndex         = -1;
            IPartitionReader partition = null;

            foreach (var globalRowID in rowIDs)
            {
                var rowPartitionIndex = RowIDUtil.ToPartitionIndex(globalRowID);
                if (rowPartitionIndex != partitionIndex)
                {
                    partition      = tx.Read(rowPartitionIndex);
                    partitionIndex = rowPartitionIndex;
                }

                if (MatchFilters(partition, tx.ReadCache, RowIDUtil.ToLocalRowID(globalRowID)))
                {
                    yield return(globalRowID);
                }
            }
        }
 private IEnumerable <long> IsPartitionMatch(IReadTransactionContext tx, PartitionRowIDRange part,
                                             IPartitionReader partition, ERowIDSortDirection sortDirection)
 {
     if (sortDirection == ERowIDSortDirection.Asc)
     {
         for (long rowId = part.Low; rowId <= part.High; rowId++)
         {
             if (IsMatch(partition, tx.ReadCache, rowId))
             {
                 yield return(RowIDUtil.ToRowID(part.PartitionID, rowId));
             }
         }
     }
     else
     {
         for (long rowId = part.High; rowId >= part.Low; rowId--)
         {
             if (IsMatch(partition, tx.ReadCache, rowId))
             {
                 yield return(RowIDUtil.ToRowID(part.PartitionID, rowId));
             }
         }
     }
 }
Exemple #7
0
 private T UpdatePartition <T>(int partitionID, long localRowID, int columnIndex)
 {
     _lastPartitionReader = _tx.Read(partitionID);
     _lastPartitionID     = partitionID;
     return(((ITypedColumn <T>)_lastPartitionReader.ReadColumn(columnIndex)).Get(localRowID, _tx.ReadCache));
 }
 public ConsoleApplication(IPartitionReader reader)
 {
     this._reader = reader;
 }