public boolean intersects(final ByteArrayRange other) { if (isSingleValue()) { if (other.isSingleValue()) { return Arrays.equals(getStart(), other.getStart()); } return false; } return ((ByteArrayUtils.compare(getStart(), other.getEndAsNextPrefix()) < 0) && (ByteArrayUtils.compare(getEndAsNextPrefix(), other.getStart()) > 0)); }
@Override public int compare(final RangeReadInfo o1, final RangeReadInfo o2) { int comp = UnsignedBytes.lexicographicalComparator().compare( o1.sortKeyRange.getStart(), o2.sortKeyRange.getStart()); if (comp != 0) { return comp; } comp = UnsignedBytes.lexicographicalComparator().compare( o1.sortKeyRange.getEnd(), o2.sortKeyRange.getEnd()); if (comp != 0) { return comp; } final byte[] otherComp = o2.partitionKey == null ? new byte[0] : o2.partitionKey; final byte[] thisComp = o1.partitionKey == null ? new byte[0] : o1.partitionKey; return UnsignedBytes.lexicographicalComparator().compare(thisComp, otherComp); } }
public MultiRowRangeFilter getMultiRowRangeFilter(final List<ByteArrayRange> ranges) { // create the multi-row filter final List<RowRange> rowRanges = new ArrayList<>(); if ((ranges == null) || ranges.isEmpty()) { rowRanges.add( new RowRange(HConstants.EMPTY_BYTE_ARRAY, true, HConstants.EMPTY_BYTE_ARRAY, false)); } else { for (final ByteArrayRange range : ranges) { if (range.getStart() != null) { final byte[] startRow = range.getStart(); byte[] stopRow; if (!range.isSingleValue()) { stopRow = range.getEndAsNextPrefix(); } else { stopRow = ByteArrayUtils.getNextPrefix(range.getStart()); } final RowRange rowRange = new RowRange(startRow, true, stopRow, false); rowRanges.add(rowRange); } } } // Create the multi-range filter try { return new MultiRowRangeFilter(rowRanges); } catch (final IOException e) { LOGGER.error("Error creating range filter.", e); } return null; }
public ByteArrayRange getSingleRange() { byte[] start = null; byte[] end = null; for (final ByteArrayRange range : sortKeyRanges) { if ((start == null) || (ByteArrayUtils.compare(range.getStart(), start) < 0)) { start = range.getStart(); } if ((end == null) || (ByteArrayUtils.compare(range.getEnd(), end) > 0)) { end = range.getEnd(); } } return new ByteArrayRange(start, end); } }
public static ByteArrayRange getSingleRange(final List<ByteArrayRange> ranges) { byte[] start = null; byte[] end = null; if (ranges == null) { return null; } for (final ByteArrayRange range : ranges) { if ((start == null) || (ByteArrayUtils.compare(range.getStart(), start) < 0)) { start = range.getStart(); } if ((end == null) || (ByteArrayUtils.compare(range.getEnd(), end) > 0)) { end = range.getEnd(); } } return new ByteArrayRange(start, end); } }
while (i.hasNext()) { final ByteArrayRange range = i.next(); final byte[] startKey = range == null ? HConstants.EMPTY_BYTE_ARRAY : range.getStart(); final byte[] endKey = range == null ? HConstants.EMPTY_BYTE_ARRAY : range.getEnd(); rangeList.add(new ByteArrayRange(overlappingRange.getStart(), overlappingRange.getEnd())); i.remove();
public CloseableIterator<T> results() { final List<RangeReadInfo> reads = new ArrayList<>(); for (final SinglePartitionQueryRanges r : ranges) { for (final ByteArrayRange range : r.getSortKeyRanges()) { final double start = range.getStart() != null ? RedisUtils.getScore(range.getStart()) : Double.NEGATIVE_INFINITY; final double end = range.getEnd() != null ? RedisUtils.getScore(range.getEndAsNextPrefix()) : Double.POSITIVE_INFINITY; reads.add(new RangeReadInfo(r.getPartitionKey(), start, end)); } } if (async) { return executeQueryAsync(reads); } else { return executeQuery(reads); } }
ByteArrayUtils.combineArrays( partition.getPartitionKey(), sortKeyRange.getStart()), ByteArrayUtils.combineArrays(partition.getPartitionKey(), sortKeyRange.getEnd()), sortKeyRange.singleValue));
set = internalData.subSet( new MemoryStoreEntry(p.getPartitionKey(), r.getStart()), new MemoryStoreEntry( p.getPartitionKey(), ByteArrayUtils.getNextPrefix(r.getStart()))); } else { set = internalData.tailSet( new MemoryStoreEntry(p.getPartitionKey(), r.getStart())).headSet( new MemoryStoreEntry(p.getPartitionKey(), r.getEndAsNextPrefix()));
rscanner.setStartRow(range.getStart()).setStopRow(range.getEndAsNextPrefix());
public synchronized CloseableIterator<GeoWaveRow> iterator(final ByteArrayRange range) { final RocksDB readDb = getReadDb(); if (readDb == null) { return new CloseableIterator.Empty<>(); } final ReadOptions options; final RocksIterator it; if (range.getEnd() == null) { options = null; it = readDb.newIterator(); } else { options = new ReadOptions().setIterateUpperBound(new Slice(range.getEndAsNextPrefix())); it = readDb.newIterator(options); } if (range.getStart() == null) { it.seekToFirst(); } else { it.seek(range.getStart()); } return new RocksDBRowIterator( options, it, adapterId, partition, requiresTimestamp, visibilityEnabled); } }
protected static GeoWaveRowRange rangeIntersection( final GeoWaveRowRange thisRange, final GeoWaveRowRange otherRange) { final ByteArrayRange thisByteArrayRange = new ByteArrayRange(thisRange.getStartSortKey(), thisRange.getEndSortKey()); final ByteArrayRange otherByteArrayRange = new ByteArrayRange(otherRange.getStartSortKey(), otherRange.getEndSortKey()); final ByteArrayRange overlappingRange = thisByteArrayRange.intersection(otherByteArrayRange); return new GeoWaveRowRange( null, overlappingRange.getStart(), overlappingRange.getEnd(), true, false); } }
public static <T> long cardinality( final Index index, final Map<StatisticsId, InternalDataStatistics<T, ?, ?>> stats, final QueryRanges queryRanges) { long count = 0; for (final SinglePartitionQueryRanges partitionRange : queryRanges.getPartitionQueryRanges()) { final RowRangeHistogramStatistics rangeStats = (RowRangeHistogramStatistics) stats.get( StatisticsQueryBuilder.newBuilder().factory().rowHistogram().indexName( index.getName()).partition(partitionRange.getPartitionKey()).build().getId()); if (rangeStats == null) { return Long.MAX_VALUE - 1; } for (final ByteArrayRange range : partitionRange.getSortKeyRanges()) { count += rangeStats.cardinality(range.getStart(), range.getEnd()); } } return count; }
ByteArrayUtils.combineArrays( ByteArrayUtils.shortToByteArray(internalAdapterId), DynamoDBUtils.encodeSortableBase64(sortRange.getStart())); end = ByteArrayUtils.combineArrays( ByteArrayUtils.shortToByteArray(internalAdapterId), DynamoDBUtils.encodeSortableBase64( ByteArrayUtils.getNextPrefix(sortRange.getStart()))); } else { if (sortRange.getStart() == null) { start = ByteArrayUtils.shortToByteArray(internalAdapterId); } else { ByteArrayUtils.combineArrays( ByteArrayUtils.shortToByteArray(internalAdapterId), DynamoDBUtils.encodeSortableBase64(sortRange.getStart()));
if ((ranges != null) && !ranges.isEmpty()) { final ByteArrayRange aggRange = ByteArrayUtils.getSingleRange(ranges); startRow = aggRange.getStart(); endRow = aggRange.getEnd();