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 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); } }
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 compareTo(final ByteArrayRange other) { final int diff = ByteArrayUtils.compare(getStart(), other.getStart()); return diff != 0 ? diff : ByteArrayUtils.compare(getEndAsNextPrefix(), other.getEndAsNextPrefix()); }
@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); } }
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 QueryRanges getQueryRanges() { return new QueryRanges( new ByteArrayRange( NumericFieldIndexStrategy.toIndexByte(lowerValue.doubleValue()), NumericFieldIndexStrategy.toIndexByte(upperValue.doubleValue()))); }
start = ByteArrayUtils.shortToByteArray(internalAdapterId); end = new ByteArray(start).getNextPrefix(); } else if (sortRange.isSingleValue()) { start = 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 (sortRange.getEnd() == null) { end = new ByteArray(ByteArrayUtils.shortToByteArray(internalAdapterId)).getNextPrefix(); } else { ByteArrayUtils.combineArrays( ByteArrayUtils.shortToByteArray(internalAdapterId), DynamoDBUtils.encodeSortableBase64(sortRange.getEndAsNextPrefix()));
if (byteArrayRange.getStart() != null) { byte[] startRow = byteArrayRange.getStart(); byte[] stopRow; if (!byteArrayRange.isSingleValue()) { stopRow = ByteArrayUtils.getNextPrefix(byteArrayRange.getEnd()); } else { stopRow = ByteArrayUtils.getNextPrefix(byteArrayRange.getStart());
public ByteArrayRange union(final ByteArrayRange other) { return new ByteArrayRange( ByteArrayUtils.compare(start, other.start) <= 0 ? start : other.start, ByteArrayUtils.compare(getEndAsNextPrefix(), other.getEndAsNextPrefix()) >= 0 ? end : other.end); }
public static final Collection<ByteArrayRange> mergeIntersections( final Collection<ByteArrayRange> ranges, final MergeOperation op) { final List<ByteArrayRange> rangeList = new ArrayList<>(ranges); // sort order so the first range can consume following ranges Collections.<ByteArrayRange>sort(rangeList); final List<ByteArrayRange> result = new ArrayList<>(); for (int i = 0; i < rangeList.size();) { ByteArrayRange r1 = rangeList.get(i); int j = i + 1; for (; j < rangeList.size(); j++) { final ByteArrayRange r2 = rangeList.get(j); if (r1.intersects(r2)) { if (op.equals(MergeOperation.UNION)) { r1 = r1.union(r2); } else { r1 = r1.intersection(r2); } } else { break; } } i = j; result.add(r1); } return result; } }
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(); i.remove(); } else { final ByteArrayRange thisRange = new ByteArrayRange(startKey, endKey); final ByteArrayRange regionRange = new ByteArrayRange(regionInfo.getStartKey(), regionInfo.getEndKey()); final ByteArrayRange overlappingRange = thisRange.intersection(regionRange); rangeList.add(new ByteArrayRange(overlappingRange.getStart(), overlappingRange.getEnd())); i.remove(); i.add(new ByteArrayRange(regionInfo.getEndKey(), endKey));
public QueryRanges getQueryRanges() { return new QueryRanges( new ByteArrayRange( TemporalIndexStrategy.toIndexByte(start), TemporalIndexStrategy.toIndexByte(end))); }
public ByteArrayRange intersection(final ByteArrayRange other) { return new ByteArrayRange( ByteArrayUtils.compare(start, other.start) <= 0 ? other.start : start, ByteArrayUtils.compare(getEndAsNextPrefix(), other.getEndAsNextPrefix()) >= 0 ? other.end : end); }
rscanner.setStartRow(range.getStart()).setStopRow(range.getEndAsNextPrefix());
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); } }
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); } }
public QueryRanges getQueryRanges() { // TODO case sensitivity return new QueryRanges( new ByteArrayRange( StringUtils.stringToBinary(matchValue), StringUtils.stringToBinary(matchValue))); }