From fcd8c0a632b66806b06aeff619c13f93fe32b691 Mon Sep 17 00:00:00 2001 From: kanthi subramanian Date: Mon, 26 Jan 2026 12:33:18 -0600 Subject: [PATCH 1/2] Added logic to support bucket and truncate partitioning. --- .../altinity/ice/cli/internal/iceberg/Partitioning.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ice/src/main/java/com/altinity/ice/cli/internal/iceberg/Partitioning.java b/ice/src/main/java/com/altinity/ice/cli/internal/iceberg/Partitioning.java index 3a8e826..b106bb1 100644 --- a/ice/src/main/java/com/altinity/ice/cli/internal/iceberg/Partitioning.java +++ b/ice/src/main/java/com/altinity/ice/cli/internal/iceberg/Partitioning.java @@ -281,6 +281,15 @@ public static Map> partition( continue; } String transformName = transform.toString(); + + // Handle parameterized transforms (bucket[N], truncate[N]) + // PartitionKey.partition() applies the transform, so we store the original value + if (transformName.startsWith("bucket[") || transformName.startsWith("truncate[")) { + partitionRecord.setField( + sourceFieldName, toGenericRecordFieldValue(value, fieldSpec.type())); + continue; + } + switch (transformName) { case "hour", "day", "month", "year": if (fieldSpec.type().typeId() != Type.TypeID.DATE) { From 98d5c7a9bf37a2fea7de890e2f756d4573f774e0 Mon Sep 17 00:00:00 2001 From: kanthi subramanian Date: Mon, 26 Jan 2026 12:34:40 -0600 Subject: [PATCH 2/2] Added logic to support bucket and truncate partitioning. --- .../com/altinity/ice/cli/internal/iceberg/Partitioning.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/ice/src/main/java/com/altinity/ice/cli/internal/iceberg/Partitioning.java b/ice/src/main/java/com/altinity/ice/cli/internal/iceberg/Partitioning.java index b106bb1..d65abc4 100644 --- a/ice/src/main/java/com/altinity/ice/cli/internal/iceberg/Partitioning.java +++ b/ice/src/main/java/com/altinity/ice/cli/internal/iceberg/Partitioning.java @@ -282,8 +282,6 @@ public static Map> partition( } String transformName = transform.toString(); - // Handle parameterized transforms (bucket[N], truncate[N]) - // PartitionKey.partition() applies the transform, so we store the original value if (transformName.startsWith("bucket[") || transformName.startsWith("truncate[")) { partitionRecord.setField( sourceFieldName, toGenericRecordFieldValue(value, fieldSpec.type()));