diff --git a/src/main/java/com/alipay/oceanbase/hbase/OHTable.java b/src/main/java/com/alipay/oceanbase/hbase/OHTable.java index 9ccedada..5efbb7f7 100644 --- a/src/main/java/com/alipay/oceanbase/hbase/OHTable.java +++ b/src/main/java/com/alipay/oceanbase/hbase/OHTable.java @@ -1152,6 +1152,7 @@ public List call() throws IOException { request = buildObTableQueryAsyncRequest(obTableQuery, getTargetTableName(tableNameString)); + request.setNeedTabletId(false); request.setAllowDistributeScan(false); String phyTableName = obTableClient.getPhyTableNameFromTableGroup( request.getObTableQueryRequest(), tableNameString); @@ -1188,6 +1189,7 @@ public List call() throws IOException { String targetTableName = getTargetTableName(tableNameString, Bytes.toString(family), configuration); request = buildObTableQueryAsyncRequest(obTableQuery, targetTableName); + request.setNeedTabletId(false); request.setAllowDistributeScan(false); List partitions = obTableClient .getPartition(targetTableName, false); @@ -2373,6 +2375,7 @@ private BatchOperation buildBatchOperation(String tableName, List } batch.setEntityType(ObTableEntityType.HKV); batch.setServerCanRetry(OHBaseFuncUtils.serverCanRetry(obTableClient)); + batch.setNeedTabletId(OHBaseFuncUtils.needTabletId(obTableClient)); return batch; } @@ -2478,6 +2481,7 @@ private ObTableQueryRequest buildObTableQueryRequest(ObTableQuery obTableQuery, request.setTableQuery(obTableQuery); request.setTableName(targetTableName); request.setServerCanRetry(OHBaseFuncUtils.serverCanRetry(obTableClient)); + request.setNeedTabletId(OHBaseFuncUtils.needTabletId(obTableClient)); return request; } @@ -2492,6 +2496,7 @@ private ObTableQueryAsyncRequest buildObTableQueryAsyncRequest(ObTableQuery obTa asyncRequest.setTableName(targetTableName); asyncRequest.setObTableQueryRequest(request); asyncRequest.setServerCanRetry(OHBaseFuncUtils.serverCanRetry(obTableClient)); + asyncRequest.setNeedTabletId(OHBaseFuncUtils.needTabletId(obTableClient)); return asyncRequest; } @@ -2507,6 +2512,7 @@ private ObTableQueryAndMutateRequest buildObTableQueryAndMutateRequest(ObTableQu request.setEntityType(ObTableEntityType.HKV); request.setReturningAffectedEntity(true); request.setServerCanRetry(OHBaseFuncUtils.serverCanRetry(obTableClient)); + request.setNeedTabletId(OHBaseFuncUtils.needTabletId(obTableClient)); return request; } diff --git a/src/main/java/com/alipay/oceanbase/hbase/util/OHBaseFuncUtils.java b/src/main/java/com/alipay/oceanbase/hbase/util/OHBaseFuncUtils.java index d9931888..61b4ef65 100644 --- a/src/main/java/com/alipay/oceanbase/hbase/util/OHBaseFuncUtils.java +++ b/src/main/java/com/alipay/oceanbase/hbase/util/OHBaseFuncUtils.java @@ -111,4 +111,15 @@ public static boolean serverCanRetry(ObTableClient tableClient) { return true; } } + + public static boolean needTabletId(ObTableClient tableClient) { + if (tableClient.isOdpMode()) { + return ObGlobal.isDistributeNeedTabletIdSupport() + && ObGlobal.OB_PROXY_VERSION >= ObGlobal.OB_PROXY_VERSION_4_3_6_0 + && tableClient.getServerCapacity().isSupportDistributedExecute(); + } else { + return ObGlobal.isDistributeNeedTabletIdSupport() + && tableClient.getServerCapacity().isSupportDistributedExecute(); + } + } }