You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2013/10/07 22:57:29 UTC
svn commit: r1530060 -
/hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/RegexStringComparator.java
Author: larsh
Date: Mon Oct 7 20:57:28 2013
New Revision: 1530060
URL: http://svn.apache.org/r1530060
Log:
HBASE-9711 Improve HBASE-9428 - avoid copying bytes for RegexFilter unless necessary
Modified:
hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/RegexStringComparator.java
Modified: hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/RegexStringComparator.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/RegexStringComparator.java?rev=1530060&r1=1530059&r2=1530060&view=diff
==============================================================================
--- hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/RegexStringComparator.java (original)
+++ hbase/branches/0.96/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/RegexStringComparator.java Mon Oct 7 20:57:28 2013
@@ -109,12 +109,17 @@ public class RegexStringComparator exten
@Override
public int compareTo(byte[] value, int offset, int length) {
- // See HBASE-9428. Make a copy of the relevant part of the byte[],
- // or the JDK will copy the entire byte[] during String decode
- byte[] tmp = Arrays.copyOfRange(value, offset, offset+length);
// Use find() for subsequence match instead of matches() (full sequence
// match) to adhere to the principle of least surprise.
- return pattern.matcher(new String(tmp, charset)).find() ? 0 : 1;
+ String tmp;
+ if (length < value.length / 2) {
+ // See HBASE-9428. Make a copy of the relevant part of the byte[],
+ // or the JDK will copy the entire byte[] during String decode
+ tmp = new String(Arrays.copyOfRange(value, offset, offset + length), charset);
+ } else {
+ tmp = new String(value, offset, length, charset);
+ }
+ return pattern.matcher(tmp).find() ? 0 : 1;
}
/**