This is an automated email from the ASF dual-hosted git repository. voonhous pushed a commit to branch bump-trino-plugin-to-1.1 in repository https://gitbox.apache.org/repos/asf/hudi.git
commit 050a1589bb22f3bf426d852a4909b8cb471e0e84 Author: vamsikarnika <[email protected]> AuthorDate: Wed Sep 24 16:50:28 2025 +0530 fix: Append Only Required Hudi Meta Fields for MOR Tables * fix test data * Add support for Column stats index --- .../main/java/io/trino/plugin/hudi/HudiUtil.java | 34 ++++++++------------- .../hudi-testing-data/hudi_cow_pt_tbl.zip | Bin 11750 -> 11752 bytes .../hudi-testing-data/hudi_non_part_cow.zip | Bin 5980 -> 5966 bytes 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/hudi-trino-plugin/src/main/java/io/trino/plugin/hudi/HudiUtil.java b/hudi-trino-plugin/src/main/java/io/trino/plugin/hudi/HudiUtil.java index 5389e80f5718..8eb10de4cc4c 100644 --- a/hudi-trino-plugin/src/main/java/io/trino/plugin/hudi/HudiUtil.java +++ b/hudi-trino-plugin/src/main/java/io/trino/plugin/hudi/HudiUtil.java @@ -64,7 +64,6 @@ import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import java.util.stream.IntStream; import static io.airlift.slice.SizeOf.estimatedSizeOf; import static io.trino.plugin.hive.HiveErrorCode.HIVE_INVALID_METADATA; @@ -78,7 +77,8 @@ import static io.trino.plugin.hudi.HudiErrorCode.HUDI_META_CLIENT_ERROR; import static io.trino.plugin.hudi.HudiErrorCode.HUDI_SCHEMA_ERROR; import static io.trino.plugin.hudi.HudiErrorCode.HUDI_UNSUPPORTED_FILE_FORMAT; import static java.lang.Math.toIntExact; -import static org.apache.hudi.common.model.HoodieRecord.HOODIE_META_COLUMNS; +import static org.apache.hudi.common.model.HoodieRecord.RECORD_KEY_METADATA_FIELD; +import static org.apache.hudi.common.model.HoodieRecord.RECORD_KEY_META_FIELD_ORD; public final class HudiUtil { @@ -328,30 +328,22 @@ public final class HudiUtil .map(HiveColumnHandle::getName) .collect(Collectors.toSet()); - // If all Hudi meta columns are already present, return the original list - if (dataColumnNames.containsAll(HOODIE_META_COLUMNS)) { + // If Hudi record key meta column is already present, return the original list + if (dataColumnNames.contains(RECORD_KEY_METADATA_FIELD)) { return dataColumns; } - // Identify only the meta columns that are missing from dataColumns to avoid duplicates - List<String> missingMetaColumns = HOODIE_META_COLUMNS.stream() - .filter(metaColumn -> !dataColumnNames.contains(metaColumn)) - .toList(); - List<HiveColumnHandle> columns = new ArrayList<>(); - // Create and prepend the new HiveColumnHandles for the missing meta columns - columns.addAll(IntStream.range(0, missingMetaColumns.size()) - .boxed() - .map(i -> new HiveColumnHandle( - missingMetaColumns.get(i), - i, - HiveType.HIVE_STRING, - VarcharType.VARCHAR, - Optional.empty(), - HiveColumnHandle.ColumnType.REGULAR, - Optional.empty())) - .toList()); + // Create and prepend the new HiveColumnHandle for the record key column + columns.add(new HiveColumnHandle( + RECORD_KEY_METADATA_FIELD, + RECORD_KEY_META_FIELD_ORD, + HiveType.HIVE_STRING, + VarcharType.VARCHAR, + Optional.empty(), + HiveColumnHandle.ColumnType.REGULAR, + Optional.empty())); // Add all the original data columns after the new meta columns columns.addAll(dataColumns); diff --git a/hudi-trino-plugin/src/test/resources/hudi-testing-data/hudi_cow_pt_tbl.zip b/hudi-trino-plugin/src/test/resources/hudi-testing-data/hudi_cow_pt_tbl.zip index 2f2238b22339..47c0532a9369 100644 Binary files a/hudi-trino-plugin/src/test/resources/hudi-testing-data/hudi_cow_pt_tbl.zip and b/hudi-trino-plugin/src/test/resources/hudi-testing-data/hudi_cow_pt_tbl.zip differ diff --git a/hudi-trino-plugin/src/test/resources/hudi-testing-data/hudi_non_part_cow.zip b/hudi-trino-plugin/src/test/resources/hudi-testing-data/hudi_non_part_cow.zip index 019860e88cff..55632f95ca9f 100644 Binary files a/hudi-trino-plugin/src/test/resources/hudi-testing-data/hudi_non_part_cow.zip and b/hudi-trino-plugin/src/test/resources/hudi-testing-data/hudi_non_part_cow.zip differ
