What is the problem the feature request solves?
Native Iceberg writes fall back when write.metadata.metrics.default or a per-column write.metadata.metrics.column.* is counts or none (CometIcebergNativeWrite trigger rules, pinned by CometIcebergWriteDetectionSuite). The restriction was introduced in #5298 because iceberg-rust could not produce those metrics modes, and iceberg-writes.md says it "remains only until that assembly lands".
#5361 moved manifest metrics assembly to the JVM: DataFile metrics are rebuilt at commit time from the written file's footer using Iceberg's own MetricsConfig / ParquetUtil code, with NaN counts supplied by the native writer. The parity tests in CometIcebergWriteActionSuite already cover mode none with a per-column full override and mode counts with WRITE ORDERED BY. That is the machinery the restriction was waiting for, so the restriction may now be liftable with no change to the writer.
Describe the potential solution
- Confirm what the JVM rebuild produces for
counts (counts only, no bounds) and none (no metrics) against iceberg-java output for the same data, including the sorted-column promotion that MetricsConfig applies under counts.
- If identical, delete the
counts / none trigger rules, update the allowlist table in iceberg-writes.md, and turn the existing detection-suite fall-back tests into parity tests.
- If not identical, document the specific divergence and keep the rule.
Additional context
Part of the native Iceberg writes epic, #5649. Related: #5298 (detection), #5361 (native writer and JVM metrics assembly).
What is the problem the feature request solves?
Native Iceberg writes fall back when
write.metadata.metrics.defaultor a per-columnwrite.metadata.metrics.column.*iscountsornone(CometIcebergNativeWritetrigger rules, pinned byCometIcebergWriteDetectionSuite). The restriction was introduced in #5298 because iceberg-rust could not produce those metrics modes, andiceberg-writes.mdsays it "remains only until that assembly lands".#5361 moved manifest metrics assembly to the JVM:
DataFilemetrics are rebuilt at commit time from the written file's footer using Iceberg's ownMetricsConfig/ParquetUtilcode, with NaN counts supplied by the native writer. The parity tests inCometIcebergWriteActionSuitealready cover modenonewith a per-columnfulloverride and modecountswithWRITE ORDERED BY. That is the machinery the restriction was waiting for, so the restriction may now be liftable with no change to the writer.Describe the potential solution
counts(counts only, no bounds) andnone(no metrics) against iceberg-java output for the same data, including the sorted-column promotion thatMetricsConfigapplies undercounts.counts/nonetrigger rules, update the allowlist table iniceberg-writes.md, and turn the existing detection-suite fall-back tests into parity tests.Additional context
Part of the native Iceberg writes epic, #5649. Related: #5298 (detection), #5361 (native writer and JVM metrics assembly).