Skip to content

Commit 21a3ee3

Browse files
shenyunlongstuBirdFly
authored andcommitted
[Chore] refresh code from master branch and upgrade table client version (#71)
* [Fix] checkAndMutate and get/Scan with filter return -5006 when include special character (#58) * [Fix] checkAndMutate and get/Scan with filter return -5006 when include special character * [Chore] fix review * [Fix] fix review * [Fix] fix test * [Fix] fix test testScanSessionClean
1 parent bf5b5fc commit 21a3ee3

File tree

6 files changed

+310
-154
lines changed

6 files changed

+310
-154
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
<project.build.sourceEncoding>${project.encoding}</project.build.sourceEncoding>
5555
<project.encoding>UTF-8</project.encoding>
5656
<slf4j.version>1.7.21</slf4j.version>
57-
<table.client.version>1.2.13-SNAPSHOT</table.client.version>
57+
<table.client.version>1.2.14.1-SNAPSHOT</table.client.version>
5858
</properties>
5959

6060
<dependencies>

src/main/java/com/alipay/oceanbase/hbase/OHTable.java

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,6 @@
4747
import org.apache.hadoop.classification.InterfaceAudience;
4848
import org.apache.hadoop.conf.Configuration;
4949
import org.apache.hadoop.hbase.*;
50-
import org.apache.hadoop.hbase.HConstants;
51-
import org.apache.hadoop.hbase.HTableDescriptor;
52-
import org.apache.hadoop.hbase.KeyValue;
5350
import org.apache.hadoop.hbase.client.*;
5451
import org.apache.hadoop.hbase.client.coprocessor.Batch;
5552
import org.apache.hadoop.hbase.filter.CompareFilter;
@@ -62,6 +59,7 @@
6259
import org.apache.hadoop.hbase.util.Pair;
6360
import org.slf4j.Logger;
6461

62+
import java.io.ByteArrayOutputStream;
6563
import java.io.IOException;
6664
import java.util.*;
6765
import java.util.concurrent.*;
@@ -76,6 +74,7 @@
7674
import static java.util.concurrent.TimeUnit.SECONDS;
7775
import static org.apache.commons.lang.StringUtils.isBlank;
7876
import static org.apache.commons.lang.StringUtils.isNotBlank;
77+
import static com.alipay.oceanbase.hbase.filter.HBaseFilterUtils.writeBytesWithEscape;
7978

8079
public class OHTable implements HTableInterface {
8180

@@ -894,7 +893,7 @@ private boolean checkAndMutation(byte[] row, byte[] family, byte[] qualifier, Co
894893

895894
checkArgument(!rowMutations.getMutations().isEmpty(), "mutation is empty");
896895

897-
String filterString = buildCheckAndMutateFilterString(family, qualifier, compareOp, value);
896+
byte[] filterString = buildCheckAndMutateFilterString(family, qualifier, compareOp, value);
898897

899898
ObHTableFilter filter = buildObHTableFilter(filterString, null, 1, qualifier);
900899
List<Mutation> mutations = rowMutations.getMutations();
@@ -1415,11 +1414,11 @@ private static String getTestLoadTargetTableName(String tableNameString, String
14151414
}
14161415

14171416
private ObHTableFilter buildObHTableFilter(Filter filter, TimeRange timeRange, int maxVersion,
1418-
Collection<byte[]> columnQualifiers) {
1417+
Collection<byte[]> columnQualifiers) throws IOException {
14191418
ObHTableFilter obHTableFilter = new ObHTableFilter();
14201419

14211420
if (filter != null) {
1422-
obHTableFilter.setFilterString(HBaseFilterUtils.toParseableString(filter));
1421+
obHTableFilter.setFilterString(HBaseFilterUtils.toParseableByteArray(filter));
14231422
}
14241423

14251424
if (timeRange != null) {
@@ -1441,20 +1440,25 @@ private ObHTableFilter buildObHTableFilter(Filter filter, TimeRange timeRange, i
14411440
return obHTableFilter;
14421441
}
14431442

1444-
private String buildCheckAndMutateFilterString(byte[] family, byte[] qualifier,
1445-
CompareFilter.CompareOp compareOp, byte[] value) {
1443+
private byte[] buildCheckAndMutateFilterString(byte[] family, byte[] qualifier, CompareFilter.CompareOp compareOp, byte[] value) throws IOException {
1444+
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
1445+
byteStream.write("CheckAndMutateFilter(".getBytes());
1446+
byteStream.write(HBaseFilterUtils.toParseableByteArray(compareOp));
1447+
byteStream.write(", 'binary:".getBytes());
1448+
writeBytesWithEscape(byteStream, value);
1449+
byteStream.write("', '".getBytes());
1450+
writeBytesWithEscape(byteStream, family);
1451+
byteStream.write("', '".getBytes());
1452+
writeBytesWithEscape(byteStream, qualifier);
14461453
if (value != null) {
1447-
return ("CheckAndMutateFilter(" + HBaseFilterUtils.toParseableString(compareOp)
1448-
+ ", 'binary:" + Bytes.toString(value) + "', '" + Bytes.toString(family)
1449-
+ "', '" + (qualifier == null ? "" : Bytes.toString(qualifier)) + "', false)");
1454+
byteStream.write("', false)".getBytes());
14501455
} else {
1451-
return ("CheckAndMutateFilter(" + HBaseFilterUtils.toParseableString(compareOp)
1452-
+ ", 'binary:', '" + Bytes.toString(family) + "', '"
1453-
+ (qualifier == null ? "" : Bytes.toString(qualifier)) + "', true)");
1456+
byteStream.write("', true)".getBytes());
14541457
}
1458+
return byteStream.toByteArray();
14551459
}
14561460

1457-
private ObHTableFilter buildObHTableFilter(String filterString, TimeRange timeRange,
1461+
private ObHTableFilter buildObHTableFilter(byte[] filterString, TimeRange timeRange,
14581462
int maxVersion, byte[]... columnQualifiers) {
14591463
ObHTableFilter obHTableFilter = new ObHTableFilter();
14601464

@@ -1541,7 +1545,7 @@ private ObTableQuery buildObTableQuery(ObHTableFilter filter, final Scan scan) {
15411545
return obTableQuery;
15421546
}
15431547

1544-
private ObTableQuery buildObTableQuery(final Get get, Collection<byte[]> columnQualifiers) {
1548+
private ObTableQuery buildObTableQuery(final Get get, Collection<byte[]> columnQualifiers) throws IOException {
15451549
ObTableQuery obTableQuery;
15461550
if (get.isClosestRowBefore()) {
15471551
PageFilter pageFilter = new PageFilter(1);

0 commit comments

Comments
 (0)