@Internal public class ByteStringRangeHelper extends java.lang.Object
Constructor and Description |
---|
ByteStringRangeHelper() |
Modifier and Type | Method and Description |
---|---|
static boolean |
doPartitionsOverlap(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange first,
com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange second)
Returns true if the two ByteStringRange overlaps, otherwise false.
|
static java.lang.String |
formatByteStringRange(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)
Returns formatted string of a partition for debugging.
|
static com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange |
getIntersectingPartition(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p1,
com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p2)
Return the overlapping parts of 2 partitions.
|
static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> |
getMissingAndOverlappingPartitionsFromKeySpace(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
Figure out if partitions cover the entire keyspace.
|
static boolean |
isSuperset(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> parentPartitions,
com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange childPartition)
Returns true if parentPartitions is a superset of childPartition.
|
static boolean |
isValidPartition(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)
Checks if the partition's start key is before its end key.
|
static java.lang.String |
partitionsToString(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
Convert partitions to a string for debugging.
|
public static boolean isSuperset(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> parentPartitions, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange childPartition)
If ordered parentPartitions row ranges form a contiguous range, and start key is before or at childPartition's start key, and end key is at or after childPartition's end key, then parentPartitions is a superset of childPartition.
Overlaps from parents are valid because arbitrary partitions can merge and they may overlap. They will form a valid new partition. However, if there are any missing parent partitions, then merge cannot happen with missing row ranges.
parentPartitions
- list of partitions to determine if it forms a large contiguous rangechildPartition
- the smaller partitionpublic static java.lang.String partitionsToString(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
partitions
- to printpublic static java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> getMissingAndOverlappingPartitionsFromKeySpace(java.util.List<com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange> partitions)
partitions covers the entire key space if, when ordered, the end key is the same as the start key of the next row range in the list, and the first start key is "" and the last end key is "". There should be no overlap.
partitions
- to determine if they cover entire keyspacepublic static java.lang.String formatByteStringRange(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)
partition
- partition to format.public static boolean doPartitionsOverlap(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange first, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange second)
Assume the two ByteStringRange are valid such that the start <= end. There are 2 scenarios that's considered NOT overlapping. Otherwise, they are overlapping.
first
- first ByteStringRangesecond
- second ByteStringRangepublic static boolean isValidPartition(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange partition)
partition
- the partition to verify.public static com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange getIntersectingPartition(com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p1, com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange p2) throws java.lang.IllegalArgumentException
p1
- first partitionp2
- second partitionjava.lang.IllegalArgumentException
- if the 2 partitions don't overlap at all