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)); }
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); }
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)); } }
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)); } } } }
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; }