Skip to content

Commit 0153939

Browse files
authored
Merge pull request #179 from oceanbase/fix-del-4007
fix del 4007
2 parents 41a745d + a9002e7 commit 0153939

File tree

1 file changed

+36
-21
lines changed

1 file changed

+36
-21
lines changed

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

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2228,28 +2228,35 @@ private BatchOperation buildBatchOperation(String tableName, List<? extends Row>
22282228
}
22292229
}
22302230
} else if (row instanceof Delete) {
2231+
boolean disExec = obTableClient.getServerCapacity().isSupportDistributedExecute();
22312232
Delete delete = (Delete) row;
22322233
if (delete.isEmpty()) {
22332234
singleOpResultNum++;
2234-
KeyValue kv = new KeyValue(delete.getRow(), delete.getTimeStamp(),
2235-
KeyValue.Type.Maximum);
2236-
com.alipay.oceanbase.rpc.mutation.Mutation tableMutation = buildMutation(kv, DEL, isTableGroup, Long.MAX_VALUE);
2237-
ObNewRange range = new ObNewRange();
2238-
ObTableQuery tableQuery = new ObTableQuery();
2239-
ObHTableFilter filter = null;
2240-
tableQuery.setObKVParams(buildOBKVParams((Scan)null));
2241-
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(), ObObj.getMin()));
2242-
range.setEndKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMax(), ObObj.getMax()));
2243-
if (kv.getTimestamp() == Long.MAX_VALUE) {
2244-
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE);
2235+
if (disExec) {
2236+
KeyValue kv = new KeyValue(delete.getRow(), delete.getTimeStamp(),
2237+
KeyValue.Type.Maximum);
2238+
com.alipay.oceanbase.rpc.mutation.Mutation tableMutation = buildMutation(kv, DEL, isTableGroup, Long.MAX_VALUE);
2239+
ObNewRange range = new ObNewRange();
2240+
ObTableQuery tableQuery = new ObTableQuery();
2241+
ObHTableFilter filter;
2242+
tableQuery.setObKVParams(buildOBKVParams((Scan) null));
2243+
range.setStartKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMin(), ObObj.getMin()));
2244+
range.setEndKey(ObRowKey.getInstance(kv.getRow(), ObObj.getMax(), ObObj.getMax()));
2245+
if (kv.getTimestamp() == Long.MAX_VALUE) {
2246+
filter = buildObHTableFilter(null, null, Integer.MAX_VALUE);
2247+
} else {
2248+
filter = buildObHTableFilter(null, new TimeRange(0, kv.getTimestamp() + 1), Integer.MAX_VALUE);
2249+
}
2250+
tableQuery.sethTableFilter(filter);
2251+
tableQuery.addKeyRange(range);
2252+
2253+
tableMutation.setTable(tableName);
2254+
batch.addOperation(new QueryAndMutate(tableQuery, tableMutation));
22452255
} else {
2246-
filter = buildObHTableFilter(null, new TimeRange(0, kv.getTimestamp() + 1), Integer.MAX_VALUE);
2256+
KeyValue kv = new KeyValue(delete.getRow(), delete.getTimeStamp(),
2257+
KeyValue.Type.Maximum);
2258+
batch.addOperation(buildMutation(kv, DEL, isTableGroup, Long.MAX_VALUE));
22472259
}
2248-
tableQuery.sethTableFilter(filter);
2249-
tableQuery.addKeyRange(range);
2250-
2251-
tableMutation.setTable(tableName);
2252-
batch.addOperation(new QueryAndMutate(tableQuery, tableMutation));
22532260
} else {
22542261
for (Map.Entry<byte[], List<KeyValue>> entry : delete.getFamilyMap().entrySet()) {
22552262
byte[] family = entry.getKey();
@@ -2258,11 +2265,19 @@ private BatchOperation buildBatchOperation(String tableName, List<? extends Row>
22582265
singleOpResultNum++;
22592266
if (isTableGroup) {
22602267
KeyValue new_kv = modifyQualifier(kv,
2261-
(Bytes.toString(family) + "." + Bytes.toString(kv
2262-
.getQualifier())).getBytes());
2263-
batch.addOperation(buildDeleteQueryAndMutate(new_kv, DEL, true, Long.MAX_VALUE));
2268+
(Bytes.toString(family) + "." + Bytes.toString(kv
2269+
.getQualifier())).getBytes());
2270+
if (disExec) {
2271+
batch.addOperation(buildDeleteQueryAndMutate(new_kv, DEL, true, Long.MAX_VALUE));
2272+
} else {
2273+
batch.addOperation(buildMutation(new_kv, DEL, true, Long.MAX_VALUE));
2274+
}
22642275
} else {
2265-
batch.addOperation(buildDeleteQueryAndMutate(kv, DEL, false, Long.MAX_VALUE));
2276+
if (disExec) {
2277+
batch.addOperation(buildDeleteQueryAndMutate(kv, DEL, false, Long.MAX_VALUE));
2278+
} else {
2279+
batch.addOperation(buildMutation(kv, DEL, false, Long.MAX_VALUE));
2280+
}
22662281
}
22672282
}
22682283
}

0 commit comments

Comments
 (0)