This is an automated email from the ASF dual-hosted git repository.
nastra pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/main by this push:
new 0e05c5659f API, Core: improve toString in struct implementations
(#18353)
0e05c5659f is described below
commit 0e05c5659fac18bc711dad2d8d891a833016a304
Author: Hongyue/Steve Zhang <[email protected]>
AuthorDate: Sun Nov 8 22:59:10 2026 -0800
API, Core: improve toString in struct implementations (#18353)
---
.../main/java/org/apache/iceberg/StructTransform.java | 14 ++++----------
core/src/main/java/org/apache/iceberg/PartitionData.java | 16 +++++++---------
.../src/main/java/org/apache/iceberg/StaticDataTask.java | 6 ++++++
.../main/java/org/apache/iceberg/data/GenericRecord.java | 14 ++++----------
4 files changed, 21 insertions(+), 29 deletions(-)
diff --git a/api/src/main/java/org/apache/iceberg/StructTransform.java
b/api/src/main/java/org/apache/iceberg/StructTransform.java
index dcb27488a5..dc27a71411 100644
--- a/api/src/main/java/org/apache/iceberg/StructTransform.java
+++ b/api/src/main/java/org/apache/iceberg/StructTransform.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
+import java.util.stream.Collectors;
import org.apache.iceberg.relocated.com.google.common.base.Preconditions;
import org.apache.iceberg.transforms.Transform;
import org.apache.iceberg.util.SerializableFunction;
@@ -96,16 +97,9 @@ class StructTransform implements StructLike, Serializable {
@Override
public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("[");
- for (int i = 0; i < transformedTuple.length; i += 1) {
- if (i > 0) {
- sb.append(", ");
- }
- sb.append(transformedTuple[i]);
- }
- sb.append("]");
- return sb.toString();
+ return Arrays.stream(transformedTuple)
+ .map(String::valueOf)
+ .collect(Collectors.joining(", ", "[", "]"));
}
@Override
diff --git a/core/src/main/java/org/apache/iceberg/PartitionData.java
b/core/src/main/java/org/apache/iceberg/PartitionData.java
index b1c6752a4d..789c9b1182 100644
--- a/core/src/main/java/org/apache/iceberg/PartitionData.java
+++ b/core/src/main/java/org/apache/iceberg/PartitionData.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.List;
+import java.util.StringJoiner;
import org.apache.avro.Schema;
import org.apache.avro.generic.IndexedRecord;
import org.apache.avro.specific.SpecificData;
@@ -158,16 +159,13 @@ public class PartitionData
@Override
public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("PartitionData{");
- for (int i = 0; i < data.length; i += 1) {
- if (i > 0) {
- sb.append(", ");
- }
-
sb.append(partitionType.fields().get(i).name()).append("=").append(data[i]);
+ List<Types.NestedField> fields = partitionType.fields();
+ StringJoiner joiner = new StringJoiner(", ", "PartitionData{", "}");
+ for (int pos = 0; pos < fields.size(); pos += 1) {
+ joiner.add(fields.get(pos).name() + "=" + data[pos]);
}
- sb.append("}");
- return sb.toString();
+
+ return joiner.toString();
}
public PartitionData copy() {
diff --git a/core/src/main/java/org/apache/iceberg/StaticDataTask.java
b/core/src/main/java/org/apache/iceberg/StaticDataTask.java
index 1a396f0bfc..f8573dcbd2 100644
--- a/core/src/main/java/org/apache/iceberg/StaticDataTask.java
+++ b/core/src/main/java/org/apache/iceberg/StaticDataTask.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
+import java.util.stream.Collectors;
import org.apache.iceberg.expressions.Expression;
import org.apache.iceberg.expressions.Expressions;
import org.apache.iceberg.io.CloseableIterable;
@@ -162,5 +163,10 @@ class StaticDataTask implements DataTask {
public <T> void set(int pos, T value) {
throw new UnsupportedOperationException("Setting values is not
supported");
}
+
+ @Override
+ public String toString() {
+ return
Arrays.stream(values).map(String::valueOf).collect(Collectors.joining(", ",
"[", "]"));
+ }
}
}
diff --git a/core/src/main/java/org/apache/iceberg/data/GenericRecord.java
b/core/src/main/java/org/apache/iceberg/data/GenericRecord.java
index 6173a29ec5..3c292639b6 100644
--- a/core/src/main/java/org/apache/iceberg/data/GenericRecord.java
+++ b/core/src/main/java/org/apache/iceberg/data/GenericRecord.java
@@ -24,6 +24,7 @@ import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import org.apache.iceberg.Schema;
import org.apache.iceberg.StructLike;
import org.apache.iceberg.relocated.com.google.common.base.Objects;
@@ -156,16 +157,9 @@ public class GenericRecord implements Record, StructLike {
@Override
public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("Record(");
- for (int i = 0; i < values.length; i += 1) {
- if (i != 0) {
- sb.append(", ");
- }
- sb.append(values[i]);
- }
- sb.append(")");
- return sb.toString();
+ return Arrays.stream(values)
+ .map(String::valueOf)
+ .collect(Collectors.joining(", ", "Record(", ")"));
}
@Override