diff --git a/paimon-core/src/main/java/org/apache/paimon/iceberg/manifest/IcebergDataFileMeta.java b/paimon-core/src/main/java/org/apache/paimon/iceberg/manifest/IcebergDataFileMeta.java index 65ad0d60dd3e..07543e10a049 100644 --- a/paimon-core/src/main/java/org/apache/paimon/iceberg/manifest/IcebergDataFileMeta.java +++ b/paimon-core/src/main/java/org/apache/paimon/iceberg/manifest/IcebergDataFileMeta.java @@ -26,6 +26,7 @@ import org.apache.paimon.iceberg.metadata.IcebergSchema; import org.apache.paimon.stats.SimpleStats; import org.apache.paimon.types.DataField; +import org.apache.paimon.types.DataTypeRoot; import org.apache.paimon.types.DataTypes; import org.apache.paimon.types.RowType; @@ -180,12 +181,18 @@ public static IcebergDataFileMeta create( Object minValue = fieldGetter.getFieldOrNull(stats.minValues()); Object maxValue = fieldGetter.getFieldOrNull(stats.maxValues()); if (minValue != null && maxValue != null) { - lowerBounds.put( - field.id(), - IcebergConversions.toByteBuffer(field.dataType(), minValue).array()); - upperBounds.put( - field.id(), - IcebergConversions.toByteBuffer(field.dataType(), maxValue).array()); + DataTypeRoot typeRoot = field.dataType().getTypeRoot(); + if (typeRoot != DataTypeRoot.ARRAY + && typeRoot != DataTypeRoot.MAP + && typeRoot != DataTypeRoot.ROW + && typeRoot != DataTypeRoot.MULTISET) { + lowerBounds.put( + field.id(), + IcebergConversions.toByteBuffer(field.dataType(), minValue).array()); + upperBounds.put( + field.id(), + IcebergConversions.toByteBuffer(field.dataType(), maxValue).array()); + } } }