You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2010/07/25 04:08:41 UTC

svn commit: r978960 - /hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java

Author: apurtell
Date: Sun Jul 25 02:08:40 2010
New Revision: 978960

URL: http://svn.apache.org/viewvc?rev=978960&view=rev
Log:
HBASE-1537 Intra-row scanning; Query matcher will be confused if intra-row scanning

Modified:
    hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java

Modified: hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java?rev=978960&r1=978959&r2=978960&view=diff
==============================================================================
--- hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java (original)
+++ hbase/branches/0.20/src/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java Sun Jul 25 02:08:40 2010
@@ -32,6 +32,7 @@ import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.io.hfile.HFile;
 import org.apache.hadoop.hbase.io.hfile.HFileScanner;
+import org.apache.hadoop.hbase.util.Bytes;
 
 /**
  * Scanner scans both the memstore and the HStore. Coalesce KeyValue stream
@@ -200,7 +201,14 @@ class StoreScanner implements KeyValueSc
       return false;
     }
 
-    matcher.setRow(peeked.getRow());
+    // only call setRow if the row changes; avoids confusing the query matcher
+    // if scanning intra-row
+    if ((matcher.row == null) || 
+        Bytes.compareTo(peeked.getBuffer(), peeked.getRowOffset(),
+          peeked.getRowLength(), matcher.row, 0, matcher.row.length) != 0) {
+      matcher.setRow(peeked.getRow());
+    }
+
     KeyValue kv;
     List<KeyValue> results = new ArrayList<KeyValue>();
     while((kv = this.heap.peek()) != null) {