You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/05/13 14:20:23 UTC
[shardingsphere] branch master updated: ModShardingAlgorithm add Argument check for offset(#17605) (#17634)
This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 3134a81cc02 ModShardingAlgorithm add Argument check for offset(#17605) (#17634)
3134a81cc02 is described below
commit 3134a81cc023411034854390d39d9d7049b78bdb
Author: galaxy <ga...@tencent.com>
AuthorDate: Fri May 13 22:20:17 2022 +0800
ModShardingAlgorithm add Argument check for offset(#17605) (#17634)
---
.../sharding/algorithm/sharding/mod/ModShardingAlgorithm.java | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java
index 32e322344f8..70329bcf2c6 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/mod/ModShardingAlgorithm.java
@@ -129,9 +129,16 @@ public final class ModShardingAlgorithm implements StandardShardingAlgorithm<Com
}
private BigInteger cutShardingValue(final Comparable<?> shardingValue) {
+ checkOffsetArgument(shardingValue);
return 0 == startOffset && 0 == stopOffset ? getBigInteger(shardingValue) : new BigInteger(shardingValue.toString().substring(startOffset, shardingValue.toString().length() - stopOffset));
}
+ private void checkOffsetArgument(final Comparable<?> shardingValue) {
+ Preconditions.checkArgument(startOffset >= 0, "Start offset can not be less than 0.");
+ Preconditions.checkArgument(stopOffset >= 0, "Stop offset can not be less than 0.");
+ Preconditions.checkArgument(shardingValue.toString().length() - stopOffset > startOffset, "Sharding value subtract stop offset can not be less than start offset.");
+ }
+
private BigInteger getBigInteger(final Comparable<?> value) {
return value instanceof Number ? BigInteger.valueOf(((Number) value).longValue()) : new BigInteger(value.toString());
}