diff --git a/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java b/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java index f289bcb0..e8247692 100644 --- a/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java +++ b/src/main/java/com/alipay/oceanbase/rpc/ObTableClient.java @@ -1956,8 +1956,11 @@ private List> getPartitionReplica(TableEntry table } } else { for (Long partId : partIds) { - long partitionId = ObPartIdCalculator.getPartIdx(partId, tableEntry - .getPartitionInfo().getSubPartDesc().getPartNum()); + long partitionId = partId; + if (tableEntry.getPartitionInfo().getLevel() == ObPartitionLevel.LEVEL_TWO) { + partitionId = ObPartIdCalculator.getPartIdx(partId, tableEntry + .getPartitionInfo().getSubPartDesc().getPartNum()); + } replicas.add(new ObPair(partId, getPartitionLocation( tableEntry, partitionId, route))); } diff --git a/src/main/java/com/alipay/oceanbase/rpc/location/LocationUtil.java b/src/main/java/com/alipay/oceanbase/rpc/location/LocationUtil.java index a78ea8c9..b18074f7 100644 --- a/src/main/java/com/alipay/oceanbase/rpc/location/LocationUtil.java +++ b/src/main/java/com/alipay/oceanbase/rpc/location/LocationUtil.java @@ -920,7 +920,10 @@ public static TableEntry getTableEntryLocationFromRemote(Connection connection, ps.setString(1, key.getTenantName()); ps.setString(2, key.getDatabaseName()); ps.setString(3, key.getTableName()); - ps.setString(4, key.getTenantName()); + if (ObGlobal.obVsnMajor() >= 4) { + // Only for v4. + ps.setString(4, key.getTenantName()); + } rs = ps.executeQuery(); partitionEntry = getPartitionLocationFromResultSet(tableEntry, rs, partitionEntry); } catch (Exception e) {