github-actions[bot] commented on code in PR #66481:
URL: https://github.com/apache/doris/pull/66481#discussion_r3755944900


##########
fe/fe-connector/fe-connector-iceberg/src/main/java/org/apache/doris/connector/iceberg/IcebergScanPlanProvider.java:
##########
@@ -665,7 +670,9 @@ private List<ConnectorScanRange> planScanInternal(
         }
 
         int formatVersion = getFormatVersion(table);
-        List<String> orderedPartitionKeys = 
IcebergPartitionUtils.getIdentityPartitionColumns(table);
+        Schema scanSchema = pinnedSchema(table, iceHandle);
+        List<String> orderedPartitionKeys =
+                IcebergPartitionUtils.getIdentityPartitionColumns(table, 
scanSchema);

Review Comment:
   This list now intentionally unions identity keys across all specs, but 
`partitioned` two lines below is still computed once from the latest 
`table.spec()`. After the current spec removes its last partition field, 
retained files can still have `dataFile.specId()` pointing to an old identity 
spec; `computePerFileInvariants` then skips that file's partition metadata 
entirely even though FE classifies the old field as a `PARTITION_KEY`. For an 
imported old-spec file whose `p` exists only in manifest partition data, BE 
receives no `columns_from_path` and materializes NULL/default instead of the 
manifest value. Make the partition-presence decision from each data file's spec 
and add eager/streaming coverage for a retained identity-spec file after the 
current spec becomes unpartitioned.



##########
fe/fe-connector/fe-connector-hudi/src/main/java/org/apache/doris/connector/hudi/HudiScanPlanProvider.java:
##########
@@ -301,7 +302,7 @@ basePath, inputFormat, serdeLib, columnNames, columnTypes, 
partitionFieldNames(m
         List<ConnectorScanRange> ranges = new ArrayList<>();
         for (String partitionPath : partitionPaths) {
             Map<String, String> partValues = parsePartitionValues(
-                    partitionPath, hudiHandle.getPartitionKeyNames());
+                    partitionPath, hudiHandle.getPartitionKeyNames(), 
hiveStylePartitioning);

Review Comment:
   This new layout argument assumes `partitionPath` came from the physical Hudi 
layout, but `applyFilter` can source it from HMS. With Doris 
`use_hive_sync_partition=true` and Hudi 
`hoodie.datasource.write.hive_style_partitioning=false`, the handle contains 
the HMS name `city=Beijing` while the physical directory/FileSystemView key is 
positional `Beijing`. This call parses the HMS name as the literal positional 
value `city=Beijing`, and the same nonphysical string is passed to the exact 
COW/MOR FileSystemView lookup, so the predicate-pruned scan produces no split. 
Preserve source/layout provenance and translate matched HMS partitions to 
physical relative paths (or prune the physical Hudi list), then add a 
sync-enabled positional-layout test that returns the split and value `Beijing`.



-- 
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