Ha, I think I found it: I had multiple versions of the KV - so the last statement should read ReturnCode.NEXT_COL.
/David On Thu, Jan 24, 2013 at 12:47 AM, David Koch <[email protected]> wrote: > Hello, > > As part of some custom filter building I took the source > of SingleColumnValueFilter (HBase 0.92.1) [1] and wanted to tweak it to NOT > return the matched column - thus essentially make it > equivalent SingleColumnValueExcludeFilter. I thought it must be trivial but > for some reason I cannot get it to work. The filter always includes the > matched KV pair. > > The only change I made is in the filterKeyValue(<KeyValue>) method by > editing the last statement (see below): > > public ReturnCode filterKeyValue(KeyValue keyValue) { > if (this.matchedColumn) { > // We already found and matched the single column, all keys now pass > return ReturnCode.INCLUDE; > } else if (this.latestVersionOnly && this.foundColumn) { > // We found but did not match the single column, skip to next row > return ReturnCode.NEXT_ROW; > } > if (!keyValue.matchingColumn(this.columnFamily, this.columnQualifier)) > { > return ReturnCode.INCLUDE; > } > foundColumn = true; > if (filterColumnValue(keyValue.getBuffer(), > keyValue.getValueOffset(), keyValue.getValueLength())) { > return this.latestVersionOnly? ReturnCode.NEXT_ROW: > ReturnCode.INCLUDE; > } > this.matchedColumn = true; > // Commented line below to NOT include matched column > // return ReturnCode.INCLUDE; > return ReturnCode.SKIP; > } > > Is this expected behavior? What am I overlooking here? By the way - how > can I sensibly debug filters. I tried using the Log instance but the output > does not show up in the region server's output. > > Thank you, > > /David > > [1] > http://grepcode.com/file_/repo1.maven.org/maven2/org.apache.hbase/hbase/0.92.1/org/apache/hadoop/hbase/filter/SingleColumnValueFilter.java/?v=source >
