This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new f3b18af8a0e branch-2.1: [bugfix](catalog) replace Math.abs with
bitwise AND to ensure non-negative ID generation #55183 (#55688)
f3b18af8a0e is described below
commit f3b18af8a0ea7b9165b433419a40c07a00c44014
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Sat Sep 6 00:10:25 2025 +0800
branch-2.1: [bugfix](catalog) replace Math.abs with bitwise AND to ensure
non-negative ID generation #55183 (#55688)
Cherry-picked from #55183
Co-authored-by: lw112 <[email protected]>
---
.../src/main/java/org/apache/doris/common/util/Util.java | 7 ++++++-
.../src/test/java/org/apache/doris/common/util/UtilTest.java | 12 ++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java
b/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java
index 3c10a6af6d7..463d8a6e613 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/Util.java
@@ -685,7 +685,12 @@ public class Util {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(str.getBytes(StandardCharsets.UTF_8));
ByteBuffer buffer = ByteBuffer.wrap(hash);
- return buffer.getLong();
+ long result = buffer.getLong();
+ // Handle Long.MIN_VALUE case to ensure non-negative ID generation
+ if (result == Long.MIN_VALUE) {
+ return str.hashCode();
+ }
+ return result;
} catch (NoSuchAlgorithmException e) {
return str.hashCode();
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/common/util/UtilTest.java
b/fe/fe-core/src/test/java/org/apache/doris/common/util/UtilTest.java
index dc8419ddd1f..88403effa31 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/common/util/UtilTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/common/util/UtilTest.java
@@ -90,4 +90,16 @@ public class UtilTest {
String str1 = "东方卫视";
Assertions.assertNotEquals(Util.sha256long(str),
Util.sha256long(str1));
}
+
+ @Test
+ public void sha256longHandlesLongMinValue() {
+ String testStr = "test_long_min_value_case";
+ long result = Util.sha256long(testStr);
+
+ Assertions.assertNotEquals(Long.MIN_VALUE, result,
+ "sha256long should not return Long.MIN_VALUE");
+
+ Assertions.assertEquals(result, Util.sha256long(testStr),
+ "Same input should produce same output");
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]