Skip to content

Commit 1856fd8

Browse files
authored
Merge pull request #202 from oceanbase/hbase_2.0_cherry-pick
[CP] Some fixes cherry-picked onto Hbase 2.0 from master
2 parents f863412 + f0d9c38 commit 1856fd8

File tree

3 files changed

+372
-7
lines changed

3 files changed

+372
-7
lines changed

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public class OHTable implements Table {
154154
/**
155155
* the buffer of put request
156156
*/
157-
private final ArrayList<Put> writeBuffer = new ArrayList<Put>();
157+
private final ArrayList<Put> writeBuffer = new ArrayList<Put>();
158158
/**
159159
* when the put request reach the write buffer size the do put will
160160
* flush commits automatically
@@ -1123,13 +1123,13 @@ public List<ResultScanner> call() throws IOException {
11231123

11241124
request = buildObTableQueryAsyncRequest(obTableQuery,
11251125
getTargetTableName(tableNameString));
1126+
request.setAllowDistributeScan(false);
11261127
String phyTableName = obTableClient.getPhyTableNameFromTableGroup(
11271128
request.getObTableQueryRequest(), tableNameString);
11281129
List<Partition> partitions = obTableClient.getPartition(phyTableName, false);
11291130
for (Partition partition : partitions) {
11301131
request.getObTableQueryRequest().setTableQueryPartId(
11311132
partition.getPartId());
1132-
request.setAllowDistributeScan(false);
11331133
clientQueryAsyncStreamResult = (ObTableClientQueryAsyncStreamResult) obTableClient
11341134
.execute(request);
11351135
ClientStreamScanner clientScanner = new ClientStreamScanner(
@@ -1159,6 +1159,7 @@ public List<ResultScanner> call() throws IOException {
11591159
String targetTableName = getTargetTableName(tableNameString, Bytes.toString(family),
11601160
configuration);
11611161
request = buildObTableQueryAsyncRequest(obTableQuery, targetTableName);
1162+
request.setAllowDistributeScan(false);
11621163
List<Partition> partitions = obTableClient
11631164
.getPartition(targetTableName, false);
11641165
for (Partition partition : partitions) {
@@ -2059,8 +2060,7 @@ private QueryAndMutate buildDeleteQueryAndMutate(KeyValue kv,
20592060
if (!isTableGroup) {
20602061
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE);
20612062
} else {
2062-
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE,
2063-
CellUtil.cloneQualifier(kv));
2063+
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE);
20642064
}
20652065
} else {
20662066
range.setStartKey(ObRowKey.getInstance(CellUtil.cloneRow(kv), ObObj.getMin(),
@@ -2090,11 +2090,11 @@ private QueryAndMutate buildDeleteQueryAndMutate(KeyValue kv,
20902090
ObObj.getMax()));
20912091
if (!isTableGroup) {
20922092
filter = buildObHTableFilter(null,
2093-
new TimeRange(kv.getTimestamp(), kv.getTimestamp() + 1),
2093+
new TimeRange(0, kv.getTimestamp() + 1),
20942094
Integer.MAX_VALUE);
20952095
} else {
20962096
filter = buildObHTableFilter(null,
2097-
new TimeRange(kv.getTimestamp(), kv.getTimestamp() + 1),
2097+
new TimeRange(0, kv.getTimestamp() + 1),
20982098
Integer.MAX_VALUE, CellUtil.cloneQualifier(kv));
20992099
}
21002100
}

src/test/java/com/alipay/oceanbase/hbase/secondary/OHTableSecondaryPartDeleteTest.java

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ public static void testMultiCFDeleteFamilyImpl(Map.Entry<String, List<String>> e
412412
hTable.close();
413413
}
414414

415-
public static void testMultiCFDeleteFamilyVersionImpl(Map.Entry<String, List<String>> entry) throws Exception {
415+
public static void testMultiCFDeleteFamilyWithVersionImpl(Map.Entry<String, List<String>> entry) throws Exception {
416416
String key = "putKey";
417417
String value = "value";
418418
String column = "putColumn";
@@ -449,6 +449,43 @@ public static void testMultiCFDeleteFamilyVersionImpl(Map.Entry<String, List<Str
449449
hTable.close();
450450
}
451451

452+
public static void testMultiCFDeleteFamilyVersionImpl(Map.Entry<String, List<String>> entry) throws Exception {
453+
String key = "putKey";
454+
String value = "value";
455+
String column = "putColumn";
456+
457+
long ts1 = System.currentTimeMillis();
458+
long ts2 = ts1 + 1000;
459+
long ts3 = ts2 + 1000;
460+
long ts4 = ts3 + 1000;
461+
System.out.println("ts1:" + ts1 + ", ts2:" + ts2 + ", ts3:" + ts3 + ", ts4:" + ts4);
462+
OHTableClient hTable = ObHTableTestUtil.newOHTableClient(entry.getKey());
463+
hTable.init();
464+
Put put = new Put(toBytes(key));
465+
Delete delete = new Delete(toBytes(key));
466+
for (String tableName : entry.getValue()) {
467+
String family = getColumnFamilyName(tableName);
468+
put.addColumn(toBytes(family), toBytes(column + family), ts1, toBytes(value + ts1));
469+
put.addColumn(toBytes(family), toBytes(column + family), ts2, toBytes(value + ts2));
470+
put.addColumn(toBytes(family), toBytes(column + family), ts3, toBytes(value + ts3));
471+
put.addColumn(toBytes(family), toBytes(column + family), ts4, toBytes(value + ts4));
472+
delete.addFamilyVersion(toBytes(family), ts2);
473+
}
474+
hTable.put(put);
475+
hTable.delete(delete);
476+
477+
478+
Get get = new Get(toBytes(key));
479+
get.setMaxVersions();
480+
for (String tableName : entry.getValue()) {
481+
String family = getColumnFamilyName(tableName);
482+
get.addColumn(toBytes(family), toBytes(column + family));
483+
}
484+
Result result = hTable.get(get);
485+
Assert(entry.getValue(), ()->Assert.assertEquals(6, result.size()));
486+
hTable.close();
487+
}
488+
452489
public static void testDeleteAllImpl(Map.Entry<String, List<String>> entry) throws Exception {
453490
String key = "putKey";
454491
String value = "value";
@@ -530,6 +567,11 @@ public void testMultiCFDeleteFamily() throws Throwable {
530567
FOR_EACH(group2tableNames, OHTableSecondaryPartDeleteTest::testMultiCFDeleteFamilyImpl);
531568
}
532569

570+
@Test
571+
public void testMultiCFDeleteFamilyWithVersion() throws Throwable {
572+
FOR_EACH(group2tableNames, OHTableSecondaryPartDeleteTest::testMultiCFDeleteFamilyWithVersionImpl);
573+
}
574+
533575
@Test
534576
public void testMultiCFDeleteFamilyVersion() throws Throwable {
535577
FOR_EACH(group2tableNames, OHTableSecondaryPartDeleteTest::testMultiCFDeleteFamilyVersionImpl);

0 commit comments

Comments
 (0)