This is an automated email from the ASF dual-hosted git repository. tdsilva pushed a commit to branch 4.14-HBase-1.3 in repository https://gitbox.apache.org/repos/asf/phoenix.git
commit 7095dd575da2aad38c2d8bd173d83dd4b6994f61 Author: Lars Hofhansl <la...@apache.org> AuthorDate: Tue May 28 10:49:43 2019 -0700 PHOENIX-5303 Fix index failures with some versions of HBase. --- .../org/apache/phoenix/hbase/index/scanner/ScannerBuilder.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/scanner/ScannerBuilder.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/scanner/ScannerBuilder.java index 703fcd2..318517c 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/scanner/ScannerBuilder.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/scanner/ScannerBuilder.java @@ -24,6 +24,7 @@ import java.util.HashSet; import java.util.Set; import org.apache.hadoop.hbase.Cell; +import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.KeyValueUtil; import org.apache.hadoop.hbase.client.Mutation; @@ -33,6 +34,7 @@ import org.apache.hadoop.hbase.filter.FamilyFilter; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.FilterBase; import org.apache.hadoop.hbase.filter.FilterList; +import org.apache.hadoop.hbase.filter.FilterList.Operator; import org.apache.hadoop.hbase.filter.QualifierFilter; import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.hbase.index.covered.KeyValueStore; @@ -92,10 +94,13 @@ public class ScannerBuilder { Filter columnFilter = new FamilyFilter(CompareOp.EQUAL, new BinaryComparator(ref.getFamily())); // combine with a match for the qualifier, if the qualifier is a specific qualifier + // in that case we *must* let empty qualifiers through for family delete markers if (!Bytes.equals(ColumnReference.ALL_QUALIFIERS, ref.getQualifier())) { columnFilter = - new FilterList(columnFilter, new QualifierFilter(CompareOp.EQUAL, new BinaryComparator( - ref.getQualifier()))); + new FilterList(columnFilter, + new FilterList(Operator.MUST_PASS_ONE, + new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(ref.getQualifier())), + new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(HConstants.EMPTY_BYTE_ARRAY)))); } columnFilters.addFilter(columnFilter); }