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 06:32:45 UTC

svn commit: r978980 - /hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java

Author: apurtell
Date: Sun Jul 25 04:32:45 2010
New Revision: 978980

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

Modified:
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java?rev=978980&r1=978979&r2=978980&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java Sun Jul 25 04:32:45 2010
@@ -227,7 +227,12 @@ 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) || !peeked.matchingRow(matcher.row)) {
+      matcher.setRow(peeked.getRow());
+    }
+
     KeyValue kv;
     List<KeyValue> results = new ArrayList<KeyValue>();
     LOOP: while((kv = this.heap.peek()) != null) {