47
47
import org .apache .hadoop .classification .InterfaceAudience ;
48
48
import org .apache .hadoop .conf .Configuration ;
49
49
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 ;
53
50
import org .apache .hadoop .hbase .client .*;
54
51
import org .apache .hadoop .hbase .client .coprocessor .Batch ;
55
52
import org .apache .hadoop .hbase .filter .CompareFilter ;
62
59
import org .apache .hadoop .hbase .util .Pair ;
63
60
import org .slf4j .Logger ;
64
61
62
+ import java .io .ByteArrayOutputStream ;
65
63
import java .io .IOException ;
66
64
import java .util .*;
67
65
import java .util .concurrent .*;
76
74
import static java .util .concurrent .TimeUnit .SECONDS ;
77
75
import static org .apache .commons .lang .StringUtils .isBlank ;
78
76
import static org .apache .commons .lang .StringUtils .isNotBlank ;
77
+ import static com .alipay .oceanbase .hbase .filter .HBaseFilterUtils .writeBytesWithEscape ;
79
78
80
79
public class OHTable implements HTableInterface {
81
80
@@ -894,7 +893,7 @@ private boolean checkAndMutation(byte[] row, byte[] family, byte[] qualifier, Co
894
893
895
894
checkArgument (!rowMutations .getMutations ().isEmpty (), "mutation is empty" );
896
895
897
- String filterString = buildCheckAndMutateFilterString (family , qualifier , compareOp , value );
896
+ byte [] filterString = buildCheckAndMutateFilterString (family , qualifier , compareOp , value );
898
897
899
898
ObHTableFilter filter = buildObHTableFilter (filterString , null , 1 , qualifier );
900
899
List <Mutation > mutations = rowMutations .getMutations ();
@@ -1415,11 +1414,11 @@ private static String getTestLoadTargetTableName(String tableNameString, String
1415
1414
}
1416
1415
1417
1416
private ObHTableFilter buildObHTableFilter (Filter filter , TimeRange timeRange , int maxVersion ,
1418
- Collection <byte []> columnQualifiers ) {
1417
+ Collection <byte []> columnQualifiers ) throws IOException {
1419
1418
ObHTableFilter obHTableFilter = new ObHTableFilter ();
1420
1419
1421
1420
if (filter != null ) {
1422
- obHTableFilter .setFilterString (HBaseFilterUtils .toParseableString (filter ));
1421
+ obHTableFilter .setFilterString (HBaseFilterUtils .toParseableByteArray (filter ));
1423
1422
}
1424
1423
1425
1424
if (timeRange != null ) {
@@ -1441,20 +1440,25 @@ private ObHTableFilter buildObHTableFilter(Filter filter, TimeRange timeRange, i
1441
1440
return obHTableFilter ;
1442
1441
}
1443
1442
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 );
1446
1453
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 ());
1450
1455
} else {
1451
- return ("CheckAndMutateFilter(" + HBaseFilterUtils .toParseableString (compareOp )
1452
- + ", 'binary:', '" + Bytes .toString (family ) + "', '"
1453
- + (qualifier == null ? "" : Bytes .toString (qualifier )) + "', true)" );
1456
+ byteStream .write ("', true)" .getBytes ());
1454
1457
}
1458
+ return byteStream .toByteArray ();
1455
1459
}
1456
1460
1457
- private ObHTableFilter buildObHTableFilter (String filterString , TimeRange timeRange ,
1461
+ private ObHTableFilter buildObHTableFilter (byte [] filterString , TimeRange timeRange ,
1458
1462
int maxVersion , byte []... columnQualifiers ) {
1459
1463
ObHTableFilter obHTableFilter = new ObHTableFilter ();
1460
1464
@@ -1541,7 +1545,7 @@ private ObTableQuery buildObTableQuery(ObHTableFilter filter, final Scan scan) {
1541
1545
return obTableQuery ;
1542
1546
}
1543
1547
1544
- private ObTableQuery buildObTableQuery (final Get get , Collection <byte []> columnQualifiers ) {
1548
+ private ObTableQuery buildObTableQuery (final Get get , Collection <byte []> columnQualifiers ) throws IOException {
1545
1549
ObTableQuery obTableQuery ;
1546
1550
if (get .isClosestRowBefore ()) {
1547
1551
PageFilter pageFilter = new PageFilter (1 );
0 commit comments