You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ns...@apache.org on 2011/10/11 04:15:39 UTC
svn commit: r1181514 - in /hbase/branches/0.89/src:
main/java/org/apache/hadoop/hbase/regionserver/ExplicitColumnTracker.java
test/java/org/apache/hadoop/hbase/client/TestTimestampsFilter.java
Author: nspiegelberg
Date: Tue Oct 11 02:15:39 2011
New Revision: 1181514
URL: http://svn.apache.org/viewvc?rev=1181514&view=rev
Log:
fix missing column when multiple columns w TimestampsFilter
Summary:
Fix missing column problem with multiple columns are combined with
TimestampsFilter.
Test Plan:
unit tests
Reviewed By: kannan
Reviewers: kannan
Commenters: jgray
CC: jgray, kannan, hbase@lists
Tasks:
column is returned
Revert Plan:
OK.
Differential Revision: 232037
Modified:
hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/ExplicitColumnTracker.java
hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/client/TestTimestampsFilter.java
Modified: hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/ExplicitColumnTracker.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/ExplicitColumnTracker.java?rev=1181514&r1=1181513&r2=1181514&view=diff
==============================================================================
--- hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/ExplicitColumnTracker.java (original)
+++ hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/ExplicitColumnTracker.java Tue Oct 11 02:15:39 2011
@@ -206,6 +206,7 @@ public class ExplicitColumnTracker imple
while (this.column != null) {
int compare = Bytes.compareTo(column.getBuffer(), column.getOffset(),
column.getLength(), bytes, offset, length);
+ resetTS();
if (compare == 0) {
this.columns.remove(this.index);
if (this.columns.size() == this.index) {
Modified: hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/client/TestTimestampsFilter.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/client/TestTimestampsFilter.java?rev=1181514&r1=1181513&r2=1181514&view=diff
==============================================================================
--- hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/client/TestTimestampsFilter.java (original)
+++ hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/client/TestTimestampsFilter.java Tue Oct 11 02:15:39 2011
@@ -163,6 +163,52 @@ public class TestTimestampsFilter {
}
}
+ @Test
+ public void testMultiColumns() throws Exception {
+ byte [] TABLE = Bytes.toBytes("testTimestampsFilterMultiColumns");
+ byte [] FAMILY = Bytes.toBytes("event_log");
+ byte [][] FAMILIES = new byte[][] { FAMILY };
+ KeyValue kvs[];
+
+ // create table; set versions to max...
+ HTable ht = TEST_UTIL.createTable(TABLE, FAMILIES, Integer.MAX_VALUE);
+
+ Put p = new Put(Bytes.toBytes("row"));
+ p.add(FAMILY, Bytes.toBytes("column0"), 3, Bytes.toBytes("value0-3"));
+ p.add(FAMILY, Bytes.toBytes("column1"), 3, Bytes.toBytes("value1-3"));
+ p.add(FAMILY, Bytes.toBytes("column2"), 1, Bytes.toBytes("value2-1"));
+ p.add(FAMILY, Bytes.toBytes("column2"), 2, Bytes.toBytes("value2-2"));
+ p.add(FAMILY, Bytes.toBytes("column2"), 3, Bytes.toBytes("value2-3"));
+ p.add(FAMILY, Bytes.toBytes("column3"), 2, Bytes.toBytes("value3-2"));
+ p.add(FAMILY, Bytes.toBytes("column4"), 1, Bytes.toBytes("value4-1"));
+ p.add(FAMILY, Bytes.toBytes("column4"), 2, Bytes.toBytes("value4-2"));
+ p.add(FAMILY, Bytes.toBytes("column4"), 3, Bytes.toBytes("value4-3"));
+ ht.put(p);
+
+ ArrayList timestamps = new ArrayList();
+ timestamps.add(new Long(3));
+ TimestampsFilter filter = new TimestampsFilter(timestamps);
+
+ Get g = new Get(Bytes.toBytes("row"));
+ g.setFilter(filter);
+ g.setMaxVersions();
+ g.addColumn(FAMILY, Bytes.toBytes("column2"));
+ g.addColumn(FAMILY, Bytes.toBytes("column4"));
+
+ Result result = ht.get(g);
+ for (KeyValue kv : result.list()) {
+ System.out.println("found row " + Bytes.toString(kv.getRow()) +
+ ", column " + Bytes.toString(kv.getQualifier()) + ", value "
+ + Bytes.toString(kv.getValue()));
+ }
+
+ assertEquals(result.list().size(), 2);
+ assertEquals(Bytes.toString(result.list().get(0).getValue()),
+ "value2-3");
+ assertEquals(Bytes.toString(result.list().get(1).getValue()),
+ "value4-3");
+ }
+
/**
* Test TimestampsFilter in the presence of version deletes.
*