Skip to content

Commit 689c56d

Browse files
authored
mutation,query_and_mutate set a isUserSpecifiedT based on T (#300)
1 parent 8125859 commit 689c56d

5 files changed

Lines changed: 38 additions & 3 deletions

File tree

src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3640,7 +3640,15 @@ ObTableQueryAndMutateRequest obTableQueryAndMutate(final ObTableOperation operat
36403640
operations.addTableOperation(operation);
36413641

36423642
ObTableQueryAndMutate queryAndMutate = buildObTableQueryAndMutate(obTableQuery, operations);
3643-
3643+
if (runningMode == RunningMode.HBASE) {
3644+
if (operation.getEntity() != null || operation.getEntity().getRowKeySize() != 3) {
3645+
throw new IllegalArgumentException("rowkey size is not 3");
3646+
}
3647+
long ts = (long)operation.getEntity().getRowKeyValue(2).getValue();
3648+
if (ts != -Long.MAX_VALUE) {
3649+
queryAndMutate.setIsUserSpecifiedT(true);
3650+
}
3651+
}
36443652
ObTableQueryAndMutateRequest request = buildObTableQueryAndMutateRequest(queryAndMutate,
36453653
tableName);
36463654

@@ -4541,4 +4549,17 @@ public byte[][] getHBaseTableEndKeys(String hbaseTableName) throws Exception {
45414549

45424550
return endKeys;
45434551
}
4552+
public static void setRowKeyValue(Mutation mutation, int index, Object value) {
4553+
if (mutation.getRowKeyValues() == null || (index < 0 || mutation.getRowKeyValues().size() <= index)) {
4554+
throw new IllegalArgumentException("rowkey is null or index is out of range");
4555+
}
4556+
((ObObj) mutation.getRowKeyValues().get(index)).setValue(value);
4557+
}
4558+
4559+
public static Object getRowKeyValue(Mutation mutation, int index) {
4560+
if (mutation.getRowKeyValues() == null || (index < 0 || index >= mutation.getRowKeyValues().size())) {
4561+
throw new IllegalArgumentException("rowkey is null or index is out of range");
4562+
}
4563+
return ((ObObj) mutation.getRowKeyValues().get(index)).getValue();
4564+
}
45444565
}

src/main/java/com/alipay/oceanbase/rpc/mutation/BatchOperation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,8 +362,8 @@ private void negateHbaseTimestamp(Mutation mutation) {
362362
if (rowKey == null || rowKey.size() != 3) {
363363
throw new IllegalArgumentException("hbase rowkey length must be 3");
364364
} else {
365-
long ts = ((long) ((ObObj) mutation.getRowKeyValues().get(2)).getValue());
366-
((ObObj) mutation.getRowKeyValues().get(2)).setValue(-ts);
365+
long ts = (long)ObTableClient.getRowKeyValue(mutation, 2);
366+
ObTableClient.setRowKeyValue(mutation, 2, -ts);
367367
}
368368
}
369369
}

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/ObTableSingleOp.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ public void setIsCheckNoExists(boolean isCheckNoExists) {
131131
public void setIsRollbackWhenCheckFailed(boolean isRollbackWhenCheckFailed) {
132132
singleOpFlag.setIsRollbackWhenCheckFailed(isRollbackWhenCheckFailed);
133133
}
134+
135+
public void setIsUserSpecifiedT(boolean isUserSpecifiedT) {
136+
singleOpFlag.setIsUserSpecifiedT(isUserSpecifiedT);
137+
}
134138

135139
public ObTableOperationType getSingleOpType() {
136140
return singleOpType;

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/mutate/ObTableQueryAndMutate.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,10 @@ public void setIsCheckAndExecute(boolean isCheckAndExecute) {
164164
public void setIsCheckNoExists(boolean isCheckNoExists) {
165165
queryAndMutateFlag.setIsCheckNotExists(isCheckNoExists);
166166
}
167+
168+
public void setIsUserSpecifiedT(boolean isUserSpecifiedT) {
169+
queryAndMutateFlag.setIsUserSpecifiedT(isUserSpecifiedT);
170+
}
167171

168172
public void setIsRollbackWhenCheckFailed(boolean isRollbackWhenCheckFailed) {
169173
queryAndMutateFlag.setIsRollbackWhenCheckFailed(isRollbackWhenCheckFailed);

src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientLSBatchOpsImpl.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,12 @@ public void addOperation(Mutation mutation) throws Exception {
298298
ObTableSingleOp singleOp = new ObTableSingleOp();
299299
singleOp.setSingleOpType(type);
300300
singleOp.addEntity(entity);
301+
if (ObTableClient.RunningMode.HBASE == obTableClient.getRunningMode()) {
302+
long ts = (long) ObTableClient.getRowKeyValue(mutation, 2);
303+
if (ts != -Long.MAX_VALUE) {
304+
singleOp.setIsUserSpecifiedT(true);
305+
}
306+
}
301307
addOperation(singleOp);
302308
}
303309

0 commit comments

Comments
 (0)