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());
+  }
 }

Reply via email to