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) {