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

commit aaa89ec768080ceecbfff5b3ecce8f140f514f4e
Author: wuwenchi <[email protected]>
AuthorDate: Tue May 28 22:56:10 2024 +0800

    [bugfix](iceberg)support null values as partition (#35503)
    
    #31442
    test in #34929
    
    When null value is used as the partition value, BE will return the "null" 
string, so this string needs to be processed specially.
---
 .../doris/datasource/iceberg/IcebergTransaction.java       | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergTransaction.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergTransaction.java
index 2e1ad8ab1e1..5025e075142 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergTransaction.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergTransaction.java
@@ -40,6 +40,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 public class IcebergTransaction implements Transaction {
 
@@ -154,11 +155,22 @@ public class IcebergTransaction implements Transaction {
             this.path = path;
             this.fileSizeInBytes = fileSizeInBytes;
             this.metrics = metrics;
-            this.partitionValues = partitionValues;
+            this.partitionValues = 
convertPartitionValuesForNull(partitionValues);
             this.content = content;
             this.referencedDataFiles = referencedDataFiles;
         }
 
+        private Optional<List<String>> 
convertPartitionValuesForNull(Optional<List<String>> partitionValues) {
+            if (!partitionValues.isPresent()) {
+                return partitionValues;
+            }
+            List<String> values = partitionValues.get();
+            if (!values.contains("null")) {
+                return partitionValues;
+            }
+            return Optional.of(values.stream().map(s -> s.equals("null") ? 
null : s).collect(Collectors.toList()));
+        }
+
         public String getPath() {
             return path;
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to