HBASE-22841 Add more factory functions to TimeRange
These functions make it easier to possible to use `org.apache.hadoop.hbase.client.Table.CheckAndMutateBuilder#timeRange` with more interesting ranges, without being forced to use the deprecated constructors. Signed-off-by: huzheng <openinx@gmail.com>
This commit is contained in:
parent
3eb602c7f7
commit
43a0ec80fa
|
@ -26,12 +26,13 @@ import org.apache.yetus.audience.InterfaceAudience;
|
|||
* {@link #INITIAL_MIN_TIMESTAMP} and {@link #INITIAL_MAX_TIMESTAMP} only. Gets freaked out if
|
||||
* passed a timestamp that is < {@link #INITIAL_MIN_TIMESTAMP},
|
||||
* <p>
|
||||
* Evaluated according to minStamp <= timestamp < maxStamp
|
||||
* or [minStamp,maxStamp) in interval notation.
|
||||
* Evaluated according to minStamp <= timestamp < maxStamp or [minStamp,maxStamp) in interval
|
||||
* notation.
|
||||
* <p>
|
||||
* Can be returned and read by clients. Should not be directly created by clients.
|
||||
* Thus, all constructors are purposely @InterfaceAudience.Private.
|
||||
*<p>Immutable. Thread-safe.
|
||||
* Can be returned and read by clients. Should not be directly created by clients. Thus, all
|
||||
* constructors are purposely @InterfaceAudience.Private.
|
||||
* <p>
|
||||
* Immutable. Thread-safe.
|
||||
*/
|
||||
@InterfaceAudience.Public
|
||||
public class TimeRange {
|
||||
|
@ -51,6 +52,34 @@ public class TimeRange {
|
|||
return new TimeRange(ts, ts + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the time interval [minStamp, Long.MAX_VALUE)
|
||||
* @param minStamp the minimum timestamp value, inclusive
|
||||
*/
|
||||
public static TimeRange from(long minStamp) {
|
||||
check(minStamp, INITIAL_MAX_TIMESTAMP);
|
||||
return new TimeRange(minStamp, INITIAL_MAX_TIMESTAMP);
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the time interval [0, maxStamp)
|
||||
* @param maxStamp the minimum timestamp value, exclusive
|
||||
*/
|
||||
public static TimeRange until(long maxStamp) {
|
||||
check(INITIAL_MIN_TIMESTAMP, maxStamp);
|
||||
return new TimeRange(INITIAL_MIN_TIMESTAMP, maxStamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the time interval [minStamp, maxStamp)
|
||||
* @param minStamp the minimum timestamp, inclusive
|
||||
* @param maxStamp the maximum timestamp, exclusive
|
||||
*/
|
||||
public static TimeRange between(long minStamp, long maxStamp) {
|
||||
check(minStamp, maxStamp);
|
||||
return new TimeRange(minStamp, maxStamp);
|
||||
}
|
||||
|
||||
private final long minStamp;
|
||||
private final long maxStamp;
|
||||
private final boolean allTime;
|
||||
|
|
|
@ -4866,12 +4866,48 @@ public class TestFromClientSide {
|
|||
.thenPut(put);
|
||||
assertFalse(ok);
|
||||
|
||||
ok = table.checkAndMutate(ROW, FAMILY).qualifier(QUALIFIER)
|
||||
.timeRange(TimeRange.from(ts + 10000))
|
||||
.ifEquals(VALUE)
|
||||
.thenPut(put);
|
||||
assertFalse(ok);
|
||||
|
||||
ok = table.checkAndMutate(ROW, FAMILY).qualifier(QUALIFIER)
|
||||
.timeRange(TimeRange.between(ts + 10000, ts + 20000))
|
||||
.ifEquals(VALUE)
|
||||
.thenPut(put);
|
||||
assertFalse(ok);
|
||||
|
||||
ok = table.checkAndMutate(ROW, FAMILY).qualifier(QUALIFIER)
|
||||
.timeRange(TimeRange.until(ts))
|
||||
.ifEquals(VALUE)
|
||||
.thenPut(put);
|
||||
assertFalse(ok);
|
||||
|
||||
ok = table.checkAndMutate(ROW, FAMILY).qualifier(QUALIFIER)
|
||||
.timeRange(TimeRange.at(ts))
|
||||
.ifEquals(VALUE)
|
||||
.thenPut(put);
|
||||
assertTrue(ok);
|
||||
|
||||
ok = table.checkAndMutate(ROW, FAMILY).qualifier(QUALIFIER)
|
||||
.timeRange(TimeRange.from(ts))
|
||||
.ifEquals(VALUE)
|
||||
.thenPut(put);
|
||||
assertTrue(ok);
|
||||
|
||||
ok = table.checkAndMutate(ROW, FAMILY).qualifier(QUALIFIER)
|
||||
.timeRange(TimeRange.between(ts, ts + 20000))
|
||||
.ifEquals(VALUE)
|
||||
.thenPut(put);
|
||||
assertTrue(ok);
|
||||
|
||||
ok = table.checkAndMutate(ROW, FAMILY).qualifier(QUALIFIER)
|
||||
.timeRange(TimeRange.until(ts + 10000))
|
||||
.ifEquals(VALUE)
|
||||
.thenPut(put);
|
||||
assertTrue(ok);
|
||||
|
||||
RowMutations rm = new RowMutations(ROW)
|
||||
.add((Mutation) put);
|
||||
ok = table.checkAndMutate(ROW, FAMILY).qualifier(QUALIFIER)
|
||||
|
|
Loading…
Reference in New Issue