This is an automated email from the ASF dual-hosted git repository.
yuqi4733 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new 2314743bc2 [#9136] fix(doris): trim bucket number to prevent
NumberFormatException (#9189)
2314743bc2 is described below
commit 2314743bc28ea7abe4fa52d006d8f8c7e2fefa0b
Author: Kwon Taeheon <[email protected]>
AuthorDate: Fri Nov 21 17:39:01 2025 +0900
[#9136] fix(doris): trim bucket number to prevent NumberFormatException
(#9189)
### What changes were proposed in this pull request?
- Modified DorisUtils.extractBucketNum to trim the bucket number string
before parsing.
### Why are the changes needed?
- To prevent a NumberFormatException when parsing numeric bucket numbers
that include whitespace. (e.g., " 16 ")
Fix: #9136
### Does this PR introduce _any_ user-facing change?
- No.
### How was this patch tested?
- Verified using the unit test included in the issue
(testExtractBucketNumWithWhitespace()).
- Confirmed all existing tests continue to pass.
---
.../gravitino/catalog/doris/utils/DorisUtils.java | 4 ++--
.../catalog/doris/utils/TestDorisUtils.java | 21 +++++++++++++++++++++
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git
a/catalogs/catalog-jdbc-doris/src/main/java/org/apache/gravitino/catalog/doris/utils/DorisUtils.java
b/catalogs/catalog-jdbc-doris/src/main/java/org/apache/gravitino/catalog/doris/utils/DorisUtils.java
index 11b72fb2ce..0a565bb6f6 100644
---
a/catalogs/catalog-jdbc-doris/src/main/java/org/apache/gravitino/catalog/doris/utils/DorisUtils.java
+++
b/catalogs/catalog-jdbc-doris/src/main/java/org/apache/gravitino/catalog/doris/utils/DorisUtils.java
@@ -223,10 +223,10 @@ public final class DorisUtils {
private static int extractBucketNum(Matcher matcher) {
int bucketNum = 1;
if (matcher.group(4) != null) {
- String bucketValue = matcher.group(4);
+ String bucketValue = matcher.group(4).trim();
// Use -1 to indicate auto bucket.
bucketNum =
- bucketValue.trim().toUpperCase().equals("AUTO")
+ bucketValue.toUpperCase().equals("AUTO")
? Distributions.AUTO
: Integer.valueOf(bucketValue);
}
diff --git
a/catalogs/catalog-jdbc-doris/src/test/java/org/apache/gravitino/catalog/doris/utils/TestDorisUtils.java
b/catalogs/catalog-jdbc-doris/src/test/java/org/apache/gravitino/catalog/doris/utils/TestDorisUtils.java
index 0c9970ddd2..019231f39d 100644
---
a/catalogs/catalog-jdbc-doris/src/test/java/org/apache/gravitino/catalog/doris/utils/TestDorisUtils.java
+++
b/catalogs/catalog-jdbc-doris/src/test/java/org/apache/gravitino/catalog/doris/utils/TestDorisUtils.java
@@ -205,4 +205,25 @@ public class TestDorisUtils {
DorisUtils.extractDistributionInfoFromSql(createTableSqlWithoutBucket);
assertEquals(1, distributionDefault.number());
}
+
+ @Test
+ public void testExtractBucketNumWithWhitespace() {
+ String createTableSqlWithWhitespace =
+ "CREATE TABLE `testTable` (\n`col1` int NOT NULL\n) ENGINE=OLAP\n
DISTRIBUTED BY HASH(`col1`) BUCKETS 16 ";
+ Distribution distribution =
+
DorisUtils.extractDistributionInfoFromSql(createTableSqlWithWhitespace);
+ assertEquals(16, distribution.number());
+
+ String createTableSqlWithAutoWhitespace =
+ "CREATE TABLE `testTable` (\n`col1` int NOT NULL\n) ENGINE=OLAP\n
DISTRIBUTED BY HASH(`col1`) BUCKETS AUTO ";
+ Distribution distributionAuto =
+
DorisUtils.extractDistributionInfoFromSql(createTableSqlWithAutoWhitespace);
+ assertEquals(-1, distributionAuto.number());
+
+ String createTableSqlWithAutoLeadingWhitespace =
+ "CREATE TABLE `testTable` (\n`col1` int NOT NULL\n) ENGINE=OLAP\n
DISTRIBUTED BY HASH(`col1`) BUCKETS AUTO";
+ Distribution distributionAutoLeading =
+
DorisUtils.extractDistributionInfoFromSql(createTableSqlWithAutoLeadingWhitespace);
+ assertEquals(-1, distributionAutoLeading.number());
+ }
}