@InterfaceAudience.Public @InterfaceStability.Stable public class SingleColumnValueFilter extends FilterBase
CompareFilter.CompareOp
operator (equal, greater, not equal, etc), and either a byte [] value or
a ByteArrayComparable.
If we have a byte [] value then we just do a lexicographic compare. For example, if passed value is 'b' and cell has 'a' and the compare operator is LESS, then we will filter out this cell (return true). If this is not sufficient (eg you want to deserialize a long and then compare it to a fixed long value), then you can pass in your own comparator instead.
You must also specify a family and qualifier. Only the value of this column
will be tested. When using this filter on a
CellScanner
with specified
inputs, the column to be tested should also be added as input (otherwise
the filter will regard the column as missing).
To prevent the entire row from being emitted if the column is not found
on a row, use setFilterIfMissing(boolean)
.
Otherwise, if the column is found, the entire row will be emitted only if
the value passes. If the value fails, the row will be filtered out.
In order to test values of previous versions (timestamps), set
setLatestVersionOnly(boolean)
to false. The default is true, meaning that
only the latest version's value is tested and all previous versions are ignored.
To filter based on the value of all scanned columns, use ValueFilter
.
Filter.ReturnCode
Modifier and Type | Field and Description |
---|---|
protected byte[] |
columnFamily |
protected byte[] |
columnQualifier |
protected ByteArrayComparable |
comparator |
protected CompareFilter.CompareOp |
compareOp |
protected boolean |
filterIfMissing |
protected boolean |
foundColumn |
protected boolean |
latestVersionOnly |
protected boolean |
matchedColumn |
Modifier | Constructor and Description |
---|---|
|
SingleColumnValueFilter(byte[] family,
byte[] qualifier,
CompareFilter.CompareOp compareOp,
byte[] value)
Constructor for binary compare of the value of a single column.
|
|
SingleColumnValueFilter(byte[] family,
byte[] qualifier,
CompareFilter.CompareOp compareOp,
ByteArrayComparable comparator)
Constructor for binary compare of the value of a single column.
|
protected |
SingleColumnValueFilter(byte[] family,
byte[] qualifier,
CompareFilter.CompareOp compareOp,
ByteArrayComparable comparator,
boolean filterIfMissing,
boolean latestVersionOnly)
Constructor for protobuf deserialization only.
|
Modifier and Type | Method and Description |
---|---|
static Filter |
createFilterFromArguments(java.util.ArrayList<byte[]> filterArguments) |
Filter.ReturnCode |
filterKeyValue(Cell c)
A way to filter based on the column family, column qualifier and/or the column value.
|
boolean |
filterRow()
Filters that never filter by rows based on previously gathered state from
Filter.filterKeyValue(Cell) can inherit this implementation that
never filters a row. |
ByteArrayComparable |
getComparator() |
byte[] |
getFamily() |
boolean |
getFilterIfMissing()
Get whether entire row should be filtered if column is not found.
|
boolean |
getLatestVersionOnly()
Get whether only the latest version of the column value should be compared.
|
CompareFilter.CompareOp |
getOperator() |
byte[] |
getQualifier() |
boolean |
hasFilterRow()
Fitlers that never filter by modifying the returned List of Cells can
inherit this implementation that does nothing.
|
boolean |
isFamilyEssential(byte[] name)
The only CF this filter needs is given column family.
|
static SingleColumnValueFilter |
parseFrom(byte[] pbBytes) |
void |
reset()
Filters that are purely stateless and do nothing in their reset() methods can inherit
this null/empty implementation.
|
void |
setFilterIfMissing(boolean filterIfMissing)
Set whether entire row should be filtered if column is not found.
|
void |
setLatestVersionOnly(boolean latestVersionOnly)
Set whether only the latest version of the column value should be compared.
|
byte[] |
toByteArray()
Return length 0 byte array for Filters that don't require special serialization
|
java.lang.String |
toString()
Return filter's info for debugging and logging purpose.
|
Cell |
transformCell(Cell v)
By default no transformation takes place
|
filterAllRemaining, filterRowCells, filterRowKey, getNextCellHint, getNextKeyHint, transform
isReversed, setReversed
protected byte[] columnFamily
protected byte[] columnQualifier
protected CompareFilter.CompareOp compareOp
protected ByteArrayComparable comparator
protected boolean foundColumn
protected boolean matchedColumn
protected boolean filterIfMissing
protected boolean latestVersionOnly
public SingleColumnValueFilter(byte[] family, byte[] qualifier, CompareFilter.CompareOp compareOp, byte[] value)
Use the filterIfColumnMissing flag to set whether the rest of the columns in a row will be emitted if the specified column to check is not found in the row.
family
- name of column familyqualifier
- name of column qualifiercompareOp
- operatorvalue
- value to compare column values againstpublic SingleColumnValueFilter(byte[] family, byte[] qualifier, CompareFilter.CompareOp compareOp, ByteArrayComparable comparator)
Use the filterIfColumnMissing flag to set whether the rest of the columns in a row will be emitted if the specified column to check is not found in the row.
family
- name of column familyqualifier
- name of column qualifiercompareOp
- operatorcomparator
- Comparator to use.protected SingleColumnValueFilter(byte[] family, byte[] qualifier, CompareFilter.CompareOp compareOp, ByteArrayComparable comparator, boolean filterIfMissing, boolean latestVersionOnly)
family
- qualifier
- compareOp
- comparator
- filterIfMissing
- latestVersionOnly
- public CompareFilter.CompareOp getOperator()
public ByteArrayComparable getComparator()
public byte[] getFamily()
public byte[] getQualifier()
public Filter.ReturnCode filterKeyValue(Cell c)
Filter
ReturnCode.NEXT_ROW
, it should return
ReturnCode.NEXT_ROW
until Filter.reset()
is called just in case the caller calls
for the next row.
Concrete implementers can signal a failure condition in their code by throwing an
IOException
.filterKeyValue
in class Filter
c
- the Cell in questionFilter.ReturnCode
public Cell transformCell(Cell v)
FilterBase
transformCell
in class FilterBase
v
- the KeyValue in questionThe transformed KeyValue is what is eventually returned to the client. Most filters will
return the passed KeyValue unchanged.
,
for an example of a
transformation.
Concrete implementers can signal a failure condition in their code by throwing an
{@link IOException}.
public boolean filterRow()
FilterBase
Filter.filterKeyValue(Cell)
can inherit this implementation that
never filters a row.filterRow
in class FilterBase
public boolean hasFilterRow()
FilterBase
hasFilterRow
in class FilterBase
public void reset()
FilterBase
reset
in class FilterBase
public boolean getFilterIfMissing()
public void setFilterIfMissing(boolean filterIfMissing)
If true, the entire row will be skipped if the column is not found.
If false, the row will pass if the column is not found. This is default.
filterIfMissing
- flagpublic boolean getLatestVersionOnly()
public void setLatestVersionOnly(boolean latestVersionOnly)
latestVersionOnly
- flagpublic static Filter createFilterFromArguments(java.util.ArrayList<byte[]> filterArguments)
public byte[] toByteArray()
FilterBase
toByteArray
in class FilterBase
public static SingleColumnValueFilter parseFrom(byte[] pbBytes) throws DeserializationException
pbBytes
- A pb serialized SingleColumnValueFilter
instanceSingleColumnValueFilter
made from bytes
DeserializationException
toByteArray()
public boolean isFamilyEssential(byte[] name)
isFamilyEssential
in class FilterBase
public java.lang.String toString()
FilterBase
toString
in class FilterBase