Gabriel39 commented on code in PR #68998:
URL: https://github.com/apache/doris/pull/68998#discussion_r4257554103


##########
fe/fe-filesystem/fe-filesystem-hdfs-base/src/main/java/org/apache/doris/filesystem/hdfs/DFSFileSystem.java:
##########
@@ -277,7 +279,7 @@ public List<FileEntry> listFiles(Location location) throws 
IOException {
     }
 
     private static boolean containsGlob(String path) {
-        return path.contains("*") || path.contains("?") || path.contains("[");
+        return path.contains("*") || path.contains("?") || path.contains("[") 
|| path.contains("{");

Review Comment:
   Fixed in b3039f6f488. The cleanup consumer now enumerates the literal target 
using FileSystem.list, filters out directories, closes the iterator, and then 
removes the collected files. It retains the staging-directory exclusion. I 
audited the other callers before choosing this approach: backup and Parquet 
metadata still rely on listFiles glob behavior, so removing that behavior would 
introduce a separate regression.
   
   Added an actual HiveConnectorTransaction regression over 
DFSFileSystem/Hadoop local storage with relative staging and table directory 
names containing {}, *, ? and []. It verifies the old file is removed, the new 
file is committed, and a neighboring glob-matching directory remains untouched. 
The brace-directory test failed before the fix. All existing filesystem 
discovery tests remain passing.



##########
fe/fe-connector/fe-connector-hudi/src/main/java/org/apache/doris/connector/hudi/HudiConnectorMetadata.java:
##########
@@ -794,7 +799,8 @@ private List<ConnectorPartitionInfo> 
collectPartitions(HudiTableHandle handle, b
                 // HoodieTableMetaClient built just to read a timeline zone - 
plus a fallback that
                 // would have published epoch 0 as a partition's last-modified 
time for any
                 // non-numeric pin, the day it became reachable.
-                return buildPartitionInfos(hmsNames, partKeyNames, 
latestInstantMillis(handle));
+                return buildPartitionInfos(hmsPartitionPaths(handle, hmsNames),

Review Comment:
   Fixed in b3039f6f488. Physical-path parsing now takes an explicit encoding 
flag from HoodieTableConfig.getUrlEncodePartitioning(). Missing/false preserves 
literal percent sequences; true unescapes once. The flag is propagated through 
listing, pruning, pinned-partition filtering, snapshot scans and COW/MOR 
incremental scans, so the displayed values and scan values use the same 
contract. HMS name decoding for partition-object identity is kept separate.
   
   Added tests using real persisted hoodie.properties for missing, false and 
true settings. They distinguish raw ':' and '%3A' in both 
listPartitions/listPartitionNames and applyFilter; the default-setting test 
reproduced the colon collision before the fix. Additional tests cover 
metadata/pinned listings, positional and prefixed paths, percent/slash/plus 
values, and MOR native/JNI ranges. The final scoped run passed 906 tests with 
no failures, errors or skips; FE Checkstyle passed for all 23 reactor modules.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to