@InterfaceAudience.Private public class ScanWildcardColumnTracker extends Object implements ColumnTracker
| Constructor and Description |
|---|
ScanWildcardColumnTracker(int minVersion,
int maxVersion,
long oldestUnexpiredTS)
Return maxVersions of every row.
|
| Modifier and Type | Method and Description |
|---|---|
ScanQueryMatcher.MatchCode |
checkColumn(byte[] bytes,
int offset,
int length,
byte type)
Checks if the column is present in the list of requested columns by returning the match code
instance.
|
ScanQueryMatcher.MatchCode |
checkVersions(byte[] bytes,
int offset,
int length,
long timestamp,
byte type,
boolean ignoreCount)
Keeps track of the number of versions for the columns asked for.
|
boolean |
done()
We can never know a-priori if we are done, so always return false.
|
ColumnCount |
getColumnHint()
Used by matcher and scan/get to get a hint of the next column
to seek to after checkColumn() returns SKIP.
|
ScanQueryMatcher.MatchCode |
getNextRowOrNextColumn(byte[] bytes,
int offset,
int qualLength)
Retrieve the MatchCode for the next row or column
|
boolean |
isDone(long timestamp)
Give the tracker a chance to declare it's done based on only the timestamp
to allow an early out.
|
void |
reset()
Resets the Matcher
|
public ScanWildcardColumnTracker(int minVersion,
int maxVersion,
long oldestUnexpiredTS)
minVersion - Minimum number of versions to keepmaxVersion - Maximum number of versions to returnoldestUnexpiredTS - oldest timestamp that has not expired according
to the TTL.public ScanQueryMatcher.MatchCode checkColumn(byte[] bytes, int offset, int length, byte type) throws IOException
ColumnTracker.checkVersions(byte[], int, int, long, byte, boolean)
method based on the return type (INCLUDE) of this method. The values that can be returned by
this method are ScanQueryMatcher.MatchCode.INCLUDE, ScanQueryMatcher.MatchCode.SEEK_NEXT_COL and
ScanQueryMatcher.MatchCode.SEEK_NEXT_ROW.
This receives puts *and* deletes.checkColumn in interface ColumnTrackertype - The type of the KeyValueIOException - in case there is an internal consistency problem caused by a data
corruption.public ScanQueryMatcher.MatchCode checkVersions(byte[] bytes, int offset, int length, long timestamp, byte type, boolean ignoreCount) throws IOException
ColumnTracker.checkColumn(byte[], int, int, byte) method. The enum values returned by this method
are ScanQueryMatcher.MatchCode.SKIP, ScanQueryMatcher.MatchCode.INCLUDE,
ScanQueryMatcher.MatchCode.INCLUDE_AND_SEEK_NEXT_COL and ScanQueryMatcher.MatchCode.INCLUDE_AND_SEEK_NEXT_ROW.
Implementations which include all the columns could just return ScanQueryMatcher.MatchCode.INCLUDE in
the ColumnTracker.checkColumn(byte[], int, int, byte) method and perform all the operations in this
checkVersions method.
This receives puts *and* deletes. Deletes do not count as a version, but rather
take the version of the previous put (so eventually all but the last can be reclaimed).checkVersions in interface ColumnTrackertimestamp - The timeToLive to enforce.type - the type of the key value (Put/Delete)ignoreCount - indicates if the KV needs to be excluded while counting (used during
compactions. We only count KV's that are older than all the scanners' read points.)IOException - in case there is an internal consistency problem caused by a data
corruption.public void reset()
ColumnTrackerreset in interface ColumnTrackerpublic ColumnCount getColumnHint()
getColumnHint in interface ColumnTrackerpublic boolean done()
done in interface ColumnTrackerpublic ScanQueryMatcher.MatchCode getNextRowOrNextColumn(byte[] bytes, int offset, int qualLength)
ColumnTrackergetNextRowOrNextColumn in interface ColumnTrackerpublic boolean isDone(long timestamp)
ColumnTrackerisDone in interface ColumnTrackertrue to early out based on timestamp.Copyright © 2014 The Apache Software Foundation. All rights reserved.