in tablestore/src/main/java/com/alicloud/openservices/tablestore/ecosystem/TablestoreSplit.java [727:795]
public boolean checkIfMatchTheFilter(Filter filter) {
if (filter.isNested()) {
if (filter.getLogicOperator() == Filter.LogicOperator.AND) {
for (Filter subFilter : filter.getSubFilters()) {
if (!checkIfMatchTheFilter(subFilter)) {
return false;
}
}
return true;
} else if (filter.getLogicOperator() == Filter.LogicOperator.OR) {
for (Filter subFilter : filter.getSubFilters()) {
if (checkIfMatchTheFilter(subFilter)) {
return true;
}
}
return false;
} else {
//
return true;
}
} else {
PrimaryKey pk = kvSplit.getLowerBound();
if (filter.getCompareOperator() == Filter.CompareOperator.NOT_EQUAL) {
return true;
} else if (Filter.CompareOperator.EQUAL == filter.getCompareOperator()) {
if (!filter.getColumnName().equals(pk.getPrimaryKeyColumn(0).getName())) {
return true;
}
try {
return (kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().isInfMin() || kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().toColumnValue().compareTo(filter.getColumnValue()) <= 0)
&& (kvSplit.getUpperBound().getPrimaryKeyColumn(0).getValue().isInfMax() || kvSplit.getUpperBound().getPrimaryKeyColumn(0).getValue().toColumnValue().compareTo(filter.getColumnValue()) > 0);
} catch (IOException e) {
e.printStackTrace();
return true;
}
} else if (Filter.CompareOperator.EMPTY_FILTER == filter.getCompareOperator()) {
return true;
}
if (filter.getColumnName().equals(pk.getPrimaryKeyColumn(0).getName())) {
if (filter.getCompareOperator() == Filter.CompareOperator.GREATER_THAN ||
filter.getCompareOperator() == Filter.CompareOperator.GREATER_EQUAL) {
try {
return (kvSplit.getUpperBound().getPrimaryKeyColumn(0).getValue().isInfMax()
|| kvSplit.getUpperBound().getPrimaryKeyColumn(0).getValue().toColumnValue().compareTo(filter.getColumnValue()) > 0);
} catch (IOException e) {
return true;
}
} else if (filter.getCompareOperator() == Filter.CompareOperator.LESS_THAN ||
filter.getCompareOperator() == Filter.CompareOperator.LESS_EQUAL) {
try {
if (filter.getCompareOperator() == Filter.CompareOperator.LESS_THAN) {
return (kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().isInfMin()
|| kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().toColumnValue().compareTo(filter.getColumnValue()) < 0);
} else {
return (kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().isInfMin()
|| kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().toColumnValue().compareTo(filter.getColumnValue()) <= 0);
}
} catch (IOException e) {
return true;
}
}
}
return true;
}
}