You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by la...@apache.org on 2019/05/28 17:44:50 UTC

[phoenix] branch master updated: PHOENIX-5303 Fix index failures with some versions of HBase.

This is an automated email from the ASF dual-hosted git repository.

larsh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/master by this push:
     new d43bc67  PHOENIX-5303 Fix index failures with some versions of HBase.
d43bc67 is described below

commit d43bc67dea852b3c9d7c419680d3a1edf8d870c7
Author: Lars Hofhansl <la...@apache.org>
AuthorDate: Tue May 28 10:44:40 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 4c42fe4..988528f 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);
     }