You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by bl...@apache.org on 2026/06/24 23:27:03 UTC

(iceberg) branch main updated: Core: Rename TrackedFile writer_format_version to format_version (#16952)

This is an automated email from the ASF dual-hosted git repository.

rdblue 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 2a6c556c0c Core: Rename TrackedFile writer_format_version to format_version (#16952)
2a6c556c0c is described below

commit 2a6c556c0c883c04c6d3fbd68e6aeda36b91e0aa
Author: gaborkaszab <ga...@gmail.com>
AuthorDate: Thu Jun 25 01:26:58 2026 +0200

    Core: Rename TrackedFile writer_format_version to format_version (#16952)
---
 .../main/java/org/apache/iceberg/TrackedFile.java  |  10 +-
 .../org/apache/iceberg/TrackedFileBuilder.java     |  19 ++-
 .../java/org/apache/iceberg/TrackedFileStruct.java | 141 +++++++--------------
 .../java/org/apache/iceberg/TestTrackedFile.java   |   2 +-
 .../apache/iceberg/TestTrackedFileAdapters.java    |   8 +-
 .../org/apache/iceberg/TestTrackedFileBuilder.java |  50 ++++----
 .../org/apache/iceberg/TestTrackedFileStruct.java  |  20 +--
 7 files changed, 100 insertions(+), 150 deletions(-)

diff --git a/core/src/main/java/org/apache/iceberg/TrackedFile.java b/core/src/main/java/org/apache/iceberg/TrackedFile.java
index 7dd7e1b3b4..5b9cdd9ab4 100644
--- a/core/src/main/java/org/apache/iceberg/TrackedFile.java
+++ b/core/src/main/java/org/apache/iceberg/TrackedFile.java
@@ -35,9 +35,9 @@ interface TrackedFile {
           "content_type",
           Types.IntegerType.get(),
           "Type of content: 0=DATA, 2=EQUALITY_DELETES, 3=DATA_MANIFEST, 4=DELETE_MANIFEST");
-  Types.NestedField WRITER_FORMAT_VERSION =
+  Types.NestedField FORMAT_VERSION =
       Types.NestedField.required(
-          157, "writer_format_version", Types.IntegerType.get(), "Writer format version");
+          157, "format_version", Types.IntegerType.get(), "Format version of this file");
   Types.NestedField LOCATION =
       Types.NestedField.required(100, "location", Types.StringType.get(), "Location of the file");
   Types.NestedField FILE_FORMAT =
@@ -100,7 +100,7 @@ interface TrackedFile {
     return Types.StructType.of(
         TRACKING,
         CONTENT_TYPE,
-        WRITER_FORMAT_VERSION,
+        FORMAT_VERSION,
         LOCATION,
         FILE_FORMAT,
         RECORD_COUNT,
@@ -123,8 +123,8 @@ interface TrackedFile {
   /** Returns the type of content stored by this entry. */
   FileContent contentType();
 
-  /** Returns the version of the writer that wrote this file */
-  int writerFormatVersion();
+  /** Returns the format version of this file. */
+  int formatVersion();
 
   /** Returns the location of the file. */
   String location();
diff --git a/core/src/main/java/org/apache/iceberg/TrackedFileBuilder.java b/core/src/main/java/org/apache/iceberg/TrackedFileBuilder.java
index cfffd0b9c8..d7aa28c329 100644
--- a/core/src/main/java/org/apache/iceberg/TrackedFileBuilder.java
+++ b/core/src/main/java/org/apache/iceberg/TrackedFileBuilder.java
@@ -27,7 +27,7 @@ class TrackedFileBuilder {
   private final FileContent contentType;
 
   // Required fields
-  private Integer writerFormatVersion = null;
+  private Integer formatVersion = null;
   private String location = null;
   private FileFormat fileFormat = null;
   private Long recordCount = null;
@@ -129,7 +129,7 @@ class TrackedFileBuilder {
     return new TrackedFileStruct(
         tracking,
         source.contentType(),
-        source.writerFormatVersion(),
+        source.formatVersion(),
         source.location(),
         source.fileFormat(),
         (PartitionData) source.partition(),
@@ -153,7 +153,7 @@ class TrackedFileBuilder {
   private TrackedFileBuilder(TrackedFile source, long snapshotId) {
     this.contentType = source.contentType();
     this.snapshotId = snapshotId;
-    this.writerFormatVersion = source.writerFormatVersion();
+    this.formatVersion = source.formatVersion();
     this.location = source.location();
     this.fileFormat = source.fileFormat();
     this.recordCount = source.recordCount();
@@ -170,12 +170,10 @@ class TrackedFileBuilder {
     this.sourceTracking = source.tracking();
   }
 
-  TrackedFileBuilder writerFormatVersion(int newWriterFormatVersion) {
+  TrackedFileBuilder formatVersion(int newFormatVersion) {
     Preconditions.checkArgument(
-        newWriterFormatVersion >= 0,
-        "Invalid writer format version: %s (must be >= 0)",
-        newWriterFormatVersion);
-    this.writerFormatVersion = newWriterFormatVersion;
+        newFormatVersion >= 0, "Invalid format version: %s (must be >= 0)", newFormatVersion);
+    this.formatVersion = newFormatVersion;
     return this;
   }
 
@@ -311,8 +309,7 @@ class TrackedFileBuilder {
   }
 
   TrackedFile build() {
-    Preconditions.checkArgument(
-        writerFormatVersion != null, "Missing required field: writer format version");
+    Preconditions.checkArgument(formatVersion != null, "Missing required field: format version");
     Preconditions.checkArgument(location != null, "Missing required field: location");
     Preconditions.checkArgument(fileFormat != null, "Missing required field: file format");
     Preconditions.checkArgument(recordCount != null, "Missing required field: record count");
@@ -346,7 +343,7 @@ class TrackedFileBuilder {
     return new TrackedFileStruct(
         trackingBuilder.build(),
         contentType,
-        writerFormatVersion,
+        formatVersion,
         location,
         fileFormat,
         partitionData,
diff --git a/core/src/main/java/org/apache/iceberg/TrackedFileStruct.java b/core/src/main/java/org/apache/iceberg/TrackedFileStruct.java
index 9a44e8045c..958ddfbbc4 100644
--- a/core/src/main/java/org/apache/iceberg/TrackedFileStruct.java
+++ b/core/src/main/java/org/apache/iceberg/TrackedFileStruct.java
@@ -45,7 +45,7 @@ class TrackedFileStruct extends SupportsIndexProjection implements TrackedFile,
       Types.StructType.of(
           TrackedFile.TRACKING,
           TrackedFile.CONTENT_TYPE,
-          TrackedFile.WRITER_FORMAT_VERSION,
+          TrackedFile.FORMAT_VERSION,
           TrackedFile.LOCATION,
           TrackedFile.FILE_FORMAT,
           TrackedFile.RECORD_COUNT,
@@ -69,7 +69,7 @@ class TrackedFileStruct extends SupportsIndexProjection implements TrackedFile,
           TrackedFile.EQUALITY_IDS);
 
   private FileContent contentType = null;
-  private int writerFormatVersion = -1;
+  private int formatVersion = -1;
   private String location = null;
   private FileFormat fileFormat = null;
   private Tracking tracking = null;
@@ -105,7 +105,7 @@ class TrackedFileStruct extends SupportsIndexProjection implements TrackedFile,
   TrackedFileStruct(
       Tracking tracking,
       FileContent contentType,
-      int writerFormatVersion,
+      int formatVersion,
       String location,
       FileFormat fileFormat,
       PartitionData partition,
@@ -122,7 +122,7 @@ class TrackedFileStruct extends SupportsIndexProjection implements TrackedFile,
     super(BASE_TYPE.fields().size());
     this.tracking = tracking;
     this.contentType = contentType;
-    this.writerFormatVersion = writerFormatVersion;
+    this.formatVersion = formatVersion;
     this.location = location;
     this.fileFormat = fileFormat;
     this.recordCount = recordCount;
@@ -145,7 +145,7 @@ class TrackedFileStruct extends SupportsIndexProjection implements TrackedFile,
   private TrackedFileStruct(TrackedFileStruct toCopy, boolean withStats, Set<Integer> statsIds) {
     super(toCopy);
     this.contentType = toCopy.contentType;
-    this.writerFormatVersion = toCopy.writerFormatVersion;
+    this.formatVersion = toCopy.formatVersion;
     this.location = toCopy.location;
     this.fileFormat = toCopy.fileFormat;
     this.recordCount = toCopy.recordCount;
@@ -189,8 +189,8 @@ class TrackedFileStruct extends SupportsIndexProjection implements TrackedFile,
   }
 
   @Override
-  public int writerFormatVersion() {
-    return writerFormatVersion;
+  public int formatVersion() {
+    return formatVersion;
   }
 
   @Override
@@ -274,98 +274,51 @@ class TrackedFileStruct extends SupportsIndexProjection implements TrackedFile,
   }
 
   private Object getByPos(int pos) {
-    switch (pos) {
-      case 0:
-        return tracking;
-      case 1:
-        return contentType != null ? contentType.id() : null;
-      case 2:
-        return writerFormatVersion;
-      case 3:
-        return location;
-      case 4:
-        return fileFormat != null ? fileFormat.toString() : null;
-      case 5:
-        return recordCount;
-      case 6:
-        return fileSizeInBytes;
-      case 7:
-        return specId;
-      case 8:
-        return partitionData;
-      case 9:
-        return contentStats;
-      case 10:
-        return sortOrderId;
-      case 11:
-        return deletionVector;
-      case 12:
-        return manifestInfo;
-      case 13:
-        return keyMetadata();
-      case 14:
-        return splitOffsets();
-      case 15:
-        return equalityIds();
-      default:
-        throw new UnsupportedOperationException("Unknown field ordinal: " + pos);
-    }
+    return switch (pos) {
+      case 0 -> tracking;
+      case 1 -> contentType != null ? contentType.id() : null;
+      case 2 -> formatVersion;
+      case 3 -> location;
+      case 4 -> fileFormat != null ? fileFormat.toString() : null;
+      case 5 -> recordCount;
+      case 6 -> fileSizeInBytes;
+      case 7 -> specId;
+      case 8 -> partitionData;
+      case 9 -> contentStats;
+      case 10 -> sortOrderId;
+      case 11 -> deletionVector;
+      case 12 -> manifestInfo;
+      case 13 -> keyMetadata();
+      case 14 -> splitOffsets();
+      case 15 -> equalityIds();
+      default -> throw new UnsupportedOperationException("Unknown field ordinal: " + pos);
+    };
   }
 
   @Override
   protected <T> void internalSet(int pos, T value) {
     switch (pos) {
-      case 0:
-        this.tracking = (Tracking) value;
-        break;
-      case 1:
-        this.contentType = FileContent.fromId((Integer) value);
-        break;
-      case 2:
-        this.writerFormatVersion = (int) value;
-        break;
-      case 3:
-        // always coerce to String for Serializable
-        this.location = value.toString();
-        break;
-      case 4:
-        this.fileFormat = FileFormat.fromString(value.toString());
-        break;
-      case 5:
-        this.recordCount = (long) value;
-        break;
-      case 6:
-        this.fileSizeInBytes = (long) value;
-        break;
-      case 7:
-        this.specId = (Integer) value;
-        break;
-      case 8:
-        this.partitionData = (PartitionData) value;
-        break;
-      case 9:
-        this.contentStats = (ContentStats) value;
-        break;
-      case 10:
-        this.sortOrderId = (Integer) value;
-        break;
-      case 11:
-        this.deletionVector = (DeletionVector) value;
-        break;
-      case 12:
-        this.manifestInfo = (ManifestInfo) value;
-        break;
-      case 13:
-        this.keyMetadata = ByteBuffers.toByteArray((ByteBuffer) value);
-        break;
-      case 14:
-        this.splitOffsets = ArrayUtil.toLongArray((List<Long>) value);
-        break;
-      case 15:
-        this.equalityIds = ArrayUtil.toIntArray((List<Integer>) value);
-        break;
-      default:
+      case 0 -> this.tracking = (Tracking) value;
+      case 1 -> this.contentType = FileContent.fromId((Integer) value);
+      case 2 -> this.formatVersion = (int) value;
+      case 3 ->
+          // always coerce to String for Serializable
+          this.location = value.toString();
+      case 4 -> this.fileFormat = FileFormat.fromString(value.toString());
+      case 5 -> this.recordCount = (long) value;
+      case 6 -> this.fileSizeInBytes = (long) value;
+      case 7 -> this.specId = (Integer) value;
+      case 8 -> this.partitionData = (PartitionData) value;
+      case 9 -> this.contentStats = (ContentStats) value;
+      case 10 -> this.sortOrderId = (Integer) value;
+      case 11 -> this.deletionVector = (DeletionVector) value;
+      case 12 -> this.manifestInfo = (ManifestInfo) value;
+      case 13 -> this.keyMetadata = ByteBuffers.toByteArray((ByteBuffer) value);
+      case 14 -> this.splitOffsets = ArrayUtil.toLongArray((List<Long>) value);
+      case 15 -> this.equalityIds = ArrayUtil.toIntArray((List<Integer>) value);
+      default -> {
         // ignore the object, it must be from a newer version of the format
+      }
     }
   }
 
@@ -373,7 +326,7 @@ class TrackedFileStruct extends SupportsIndexProjection implements TrackedFile,
   public String toString() {
     return MoreObjects.toStringHelper(this)
         .add("content", contentType != null ? contentType.lowerCaseName() : null)
-        .add("writer_format_version", writerFormatVersion)
+        .add("format_version", formatVersion)
         .add("location", location)
         .add("file_format", fileFormat)
         .add("record_count", recordCount)
diff --git a/core/src/test/java/org/apache/iceberg/TestTrackedFile.java b/core/src/test/java/org/apache/iceberg/TestTrackedFile.java
index 2c4bf93e49..170c01ef7d 100644
--- a/core/src/test/java/org/apache/iceberg/TestTrackedFile.java
+++ b/core/src/test/java/org/apache/iceberg/TestTrackedFile.java
@@ -47,7 +47,7 @@ public class TestTrackedFile {
         .containsExactly(
             "tracking",
             "content_type",
-            "writer_format_version",
+            "format_version",
             "location",
             "file_format",
             "record_count",
diff --git a/core/src/test/java/org/apache/iceberg/TestTrackedFileAdapters.java b/core/src/test/java/org/apache/iceberg/TestTrackedFileAdapters.java
index dc8f26dce8..f4d5675ee9 100644
--- a/core/src/test/java/org/apache/iceberg/TestTrackedFileAdapters.java
+++ b/core/src/test/java/org/apache/iceberg/TestTrackedFileAdapters.java
@@ -34,7 +34,7 @@ import org.junit.jupiter.params.provider.EnumSource;
 
 class TestTrackedFileAdapters {
 
-  private static final int WRITER_FORMAT_VERSION = 4;
+  private static final int FORMAT_VERSION_V4 = 4;
   private static final String MANIFEST_LOCATION = "s3://bucket/table/manifest.parquet";
   private static final String DATA_FILE_LOCATION = "s3://bucket/data/file.parquet";
   private static final String DV_LOCATION = "s3://bucket/puffin/dv-file.bin";
@@ -80,7 +80,7 @@ class TestTrackedFileAdapters {
   void testDataFileAdapterDelegation() {
     TrackedFile file =
         TrackedFileBuilder.data(42L)
-            .writerFormatVersion(WRITER_FORMAT_VERSION)
+            .formatVersion(FORMAT_VERSION_V4)
             .location(DATA_FILE_LOCATION)
             .fileFormat(FileFormat.PARQUET)
             .partition(PARTITION)
@@ -140,7 +140,7 @@ class TestTrackedFileAdapters {
   void testEqualityDeleteFileAdapterDelegation() {
     TrackedFile file =
         TrackedFileBuilder.equalityDelete(42L)
-            .writerFormatVersion(WRITER_FORMAT_VERSION)
+            .formatVersion(FORMAT_VERSION_V4)
             .location("s3://bucket/eq-delete.avro")
             .fileFormat(FileFormat.AVRO)
             .partition(PARTITION)
@@ -210,7 +210,7 @@ class TestTrackedFileAdapters {
 
     TrackedFile file =
         TrackedFileBuilder.data(42L)
-            .writerFormatVersion(WRITER_FORMAT_VERSION)
+            .formatVersion(FORMAT_VERSION_V4)
             .location(DATA_FILE_LOCATION)
             .fileFormat(FileFormat.PARQUET)
             .partition(PARTITION)
diff --git a/core/src/test/java/org/apache/iceberg/TestTrackedFileBuilder.java b/core/src/test/java/org/apache/iceberg/TestTrackedFileBuilder.java
index 9e96923f2f..d6b0701fdf 100644
--- a/core/src/test/java/org/apache/iceberg/TestTrackedFileBuilder.java
+++ b/core/src/test/java/org/apache/iceberg/TestTrackedFileBuilder.java
@@ -32,7 +32,7 @@ import org.junit.jupiter.params.provider.Arguments;
 import org.junit.jupiter.params.provider.MethodSource;
 
 public class TestTrackedFileBuilder {
-  private static final int WRITER_FORMAT_VERSION_V4 = 4;
+  private static final int FORMAT_VERSION_V4 = 4;
   private static final Schema TABLE_SCHEMA =
       new Schema(
           optional(1, "id", Types.IntegerType.get()), optional(2, "data", Types.StringType.get()));
@@ -87,7 +87,7 @@ public class TestTrackedFileBuilder {
 
   private static Stream<Arguments> missingRequiredFieldCases() {
     return Stream.of(
-        Arguments.of("writerFormatVersion", "Missing required field: writer format version"),
+        Arguments.of("formatVersion", "Missing required field: format version"),
         Arguments.of("location", "Missing required field: location"),
         Arguments.of("fileFormat", "Missing required field: file format"),
         Arguments.of("recordCount", "Missing required field: record count"),
@@ -123,8 +123,8 @@ public class TestTrackedFileBuilder {
 
   private TrackedFileBuilder builderWithMissingRequiredField(
       TrackedFileBuilder builder, String missingField) {
-    if (!"writerFormatVersion".equals(missingField)) {
-      builder.writerFormatVersion(WRITER_FORMAT_VERSION_V4);
+    if (!"formatVersion".equals(missingField)) {
+      builder.formatVersion(FORMAT_VERSION_V4);
     }
     if (!"location".equals(missingField)) {
       builder.location("s3://bucket/data/file");
@@ -150,7 +150,7 @@ public class TestTrackedFileBuilder {
     assertThatThrownBy(
             () ->
                 builder
-                    .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+                    .formatVersion(FORMAT_VERSION_V4)
                     .location("s3://bucket/data/manifest.avro")
                     .fileFormat(FileFormat.AVRO)
                     .recordCount(420L)
@@ -166,7 +166,7 @@ public class TestTrackedFileBuilder {
     assertThatThrownBy(
             () ->
                 TrackedFileBuilder.equalityDelete(50L)
-                    .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+                    .formatVersion(FORMAT_VERSION_V4)
                     .location("s3://bucket/data/eq_delete.parquet")
                     .fileFormat(FileFormat.PARQUET)
                     .recordCount(2000L)
@@ -353,9 +353,9 @@ public class TestTrackedFileBuilder {
 
   @Test
   public void invalidNegativeInputs() {
-    assertThatThrownBy(() -> TrackedFileBuilder.dataManifest(40L).writerFormatVersion(-1))
+    assertThatThrownBy(() -> TrackedFileBuilder.dataManifest(40L).formatVersion(-1))
         .isInstanceOf(IllegalArgumentException.class)
-        .hasMessage("Invalid writer format version: -1 (must be >= 0)");
+        .hasMessage("Invalid format version: -1 (must be >= 0)");
 
     assertThatThrownBy(() -> TrackedFileBuilder.dataManifest(40L).recordCount(-1))
         .isInstanceOf(IllegalArgumentException.class)
@@ -378,7 +378,7 @@ public class TestTrackedFileBuilder {
   public void buildDataFileWithRequiredFieldsOnly() {
     TrackedFile trackedFile =
         TrackedFileBuilder.data(50L)
-            .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+            .formatVersion(FORMAT_VERSION_V4)
             .location("s3://bucket/data/file.parquet")
             .fileFormat(FileFormat.PARQUET)
             .recordCount(2000L)
@@ -386,7 +386,7 @@ public class TestTrackedFileBuilder {
             .partition(PARTITION_DATA)
             .build();
 
-    assertThat(trackedFile.writerFormatVersion()).isEqualTo(WRITER_FORMAT_VERSION_V4);
+    assertThat(trackedFile.formatVersion()).isEqualTo(FORMAT_VERSION_V4);
     assertThat(trackedFile.contentType()).isEqualTo(FileContent.DATA);
     assertThat(trackedFile.location()).isEqualTo("s3://bucket/data/file.parquet");
     assertThat(trackedFile.fileFormat()).isEqualTo(FileFormat.PARQUET);
@@ -412,7 +412,7 @@ public class TestTrackedFileBuilder {
   public void buildDataFileWithAllFields() {
     TrackedFile trackedFile =
         TrackedFileBuilder.data(50L)
-            .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+            .formatVersion(FORMAT_VERSION_V4)
             .location("s3://bucket/data/file.parquet")
             .fileFormat(FileFormat.PARQUET)
             .recordCount(2000L)
@@ -426,7 +426,7 @@ public class TestTrackedFileBuilder {
             .splitOffsets(SPLIT_OFFSETS)
             .build();
 
-    assertThat(trackedFile.writerFormatVersion()).isEqualTo(WRITER_FORMAT_VERSION_V4);
+    assertThat(trackedFile.formatVersion()).isEqualTo(FORMAT_VERSION_V4);
     assertThat(trackedFile.contentType()).isEqualTo(FileContent.DATA);
     assertThat(trackedFile.location()).isEqualTo("s3://bucket/data/file.parquet");
     assertThat(trackedFile.fileFormat()).isEqualTo(FileFormat.PARQUET);
@@ -453,7 +453,7 @@ public class TestTrackedFileBuilder {
   public void buildEqualityDeleteFileWithRequiredFieldsOnly() {
     TrackedFile trackedFile =
         TrackedFileBuilder.equalityDelete(50L)
-            .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+            .formatVersion(FORMAT_VERSION_V4)
             .location("s3://bucket/data/eq_delete.parquet")
             .fileFormat(FileFormat.PARQUET)
             .recordCount(2000L)
@@ -462,7 +462,7 @@ public class TestTrackedFileBuilder {
             .equalityIds(ImmutableList.of(1))
             .build();
 
-    assertThat(trackedFile.writerFormatVersion()).isEqualTo(WRITER_FORMAT_VERSION_V4);
+    assertThat(trackedFile.formatVersion()).isEqualTo(FORMAT_VERSION_V4);
     assertThat(trackedFile.contentType()).isEqualTo(FileContent.EQUALITY_DELETES);
     assertThat(trackedFile.location()).isEqualTo("s3://bucket/data/eq_delete.parquet");
     assertThat(trackedFile.fileFormat()).isEqualTo(FileFormat.PARQUET);
@@ -487,7 +487,7 @@ public class TestTrackedFileBuilder {
   public void buildEqualityDeleteFileWithAllFields() {
     TrackedFile trackedFile =
         TrackedFileBuilder.equalityDelete(50L)
-            .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+            .formatVersion(FORMAT_VERSION_V4)
             .location("s3://bucket/data/eq_delete.parquet")
             .fileFormat(FileFormat.PARQUET)
             .recordCount(2000L)
@@ -501,7 +501,7 @@ public class TestTrackedFileBuilder {
             .equalityIds(ImmutableList.of(1, 2))
             .build();
 
-    assertThat(trackedFile.writerFormatVersion()).isEqualTo(WRITER_FORMAT_VERSION_V4);
+    assertThat(trackedFile.formatVersion()).isEqualTo(FORMAT_VERSION_V4);
     assertThat(trackedFile.contentType()).isEqualTo(FileContent.EQUALITY_DELETES);
     assertThat(trackedFile.location()).isEqualTo("s3://bucket/data/eq_delete.parquet");
     assertThat(trackedFile.fileFormat()).isEqualTo(FileFormat.PARQUET);
@@ -535,7 +535,7 @@ public class TestTrackedFileBuilder {
       TrackedFileBuilder builder, FileContent contentType) {
     TrackedFile trackedFile =
         builder
-            .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+            .formatVersion(FORMAT_VERSION_V4)
             .location("s3://bucket/data/manifest.avro")
             .fileFormat(FileFormat.AVRO)
             .recordCount(420L)
@@ -544,7 +544,7 @@ public class TestTrackedFileBuilder {
             .manifestInfo(MANIFEST_INFO)
             .build();
 
-    assertThat(trackedFile.writerFormatVersion()).isEqualTo(WRITER_FORMAT_VERSION_V4);
+    assertThat(trackedFile.formatVersion()).isEqualTo(FORMAT_VERSION_V4);
     assertThat(trackedFile.contentType()).isEqualTo(contentType);
     assertThat(trackedFile.location()).isEqualTo("s3://bucket/data/manifest.avro");
     assertThat(trackedFile.fileFormat()).isEqualTo(FileFormat.AVRO);
@@ -570,7 +570,7 @@ public class TestTrackedFileBuilder {
   public void buildManifestWithAllFields(TrackedFileBuilder builder, FileContent contentType) {
     TrackedFile trackedFile =
         builder
-            .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+            .formatVersion(FORMAT_VERSION_V4)
             .location("s3://bucket/data/manifest.avro")
             .fileFormat(FileFormat.AVRO)
             .recordCount(420L)
@@ -582,7 +582,7 @@ public class TestTrackedFileBuilder {
             .manifestInfo(MANIFEST_INFO)
             .build();
 
-    assertThat(trackedFile.writerFormatVersion()).isEqualTo(WRITER_FORMAT_VERSION_V4);
+    assertThat(trackedFile.formatVersion()).isEqualTo(FORMAT_VERSION_V4);
     assertThat(trackedFile.contentType()).isEqualTo(contentType);
     assertThat(trackedFile.location()).isEqualTo("s3://bucket/data/manifest.avro");
     assertThat(trackedFile.fileFormat()).isEqualTo(FileFormat.AVRO);
@@ -770,7 +770,7 @@ public class TestTrackedFileBuilder {
 
   private static TrackedFile sourceData(long snapshotId) {
     return TrackedFileBuilder.data(snapshotId)
-        .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+        .formatVersion(FORMAT_VERSION_V4)
         .location("s3://bucket/data/file.parquet")
         .fileFormat(FileFormat.PARQUET)
         .recordCount(2000L)
@@ -787,7 +787,7 @@ public class TestTrackedFileBuilder {
 
   private static TrackedFile sourceEqualityDelete(long snapshotId) {
     return TrackedFileBuilder.equalityDelete(snapshotId)
-        .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+        .formatVersion(FORMAT_VERSION_V4)
         .location("s3://bucket/data/eq_delete.parquet")
         .fileFormat(FileFormat.PARQUET)
         .recordCount(2000L)
@@ -799,7 +799,7 @@ public class TestTrackedFileBuilder {
 
   private static TrackedFile sourceDataManifest(long snapshotId) {
     return TrackedFileBuilder.dataManifest(snapshotId)
-        .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+        .formatVersion(FORMAT_VERSION_V4)
         .location("s3://bucket/data/data_manifest.parquet")
         .fileFormat(FileFormat.PARQUET)
         .recordCount(420L)
@@ -811,7 +811,7 @@ public class TestTrackedFileBuilder {
 
   private static TrackedFile sourceDeleteManifest(long snapshotId) {
     return TrackedFileBuilder.deleteManifest(snapshotId)
-        .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+        .formatVersion(FORMAT_VERSION_V4)
         .location("s3://bucket/data/delete_manifest.parquet")
         .fileFormat(FileFormat.PARQUET)
         .recordCount(100L)
@@ -835,7 +835,7 @@ public class TestTrackedFileBuilder {
    * here, because based on the entry's status it is either carried over or not.
    */
   private static void verifyFieldsAreFromSource(TrackedFile entry, TrackedFile source) {
-    assertThat(entry.writerFormatVersion()).isEqualTo(source.writerFormatVersion());
+    assertThat(entry.formatVersion()).isEqualTo(source.formatVersion());
     assertThat(entry.location()).isEqualTo(source.location());
     assertThat(entry.fileFormat()).isEqualTo(source.fileFormat());
     assertThat(entry.recordCount()).isEqualTo(source.recordCount());
diff --git a/core/src/test/java/org/apache/iceberg/TestTrackedFileStruct.java b/core/src/test/java/org/apache/iceberg/TestTrackedFileStruct.java
index 4f5452e314..8e0d5c0682 100644
--- a/core/src/test/java/org/apache/iceberg/TestTrackedFileStruct.java
+++ b/core/src/test/java/org/apache/iceberg/TestTrackedFileStruct.java
@@ -30,7 +30,7 @@ import org.apache.iceberg.types.Types;
 import org.junit.jupiter.api.Test;
 
 class TestTrackedFileStruct {
-  private static final int WRITER_FORMAT_VERSION_V4 = 4;
+  private static final int FORMAT_VERSION_V4 = 4;
   private static final Types.StructType PARTITION_TYPE =
       Types.StructType.of(
           Types.NestedField.optional(1000, "id_bucket", Types.IntegerType.get()),
@@ -41,8 +41,8 @@ class TestTrackedFileStruct {
       TrackedFile.schemaWithContentStats(Types.StructType.of(), Types.StructType.of()).fields();
   private static final int TRACKING_ORDINAL = SCHEMA_FIELDS.indexOf(TrackedFile.TRACKING);
   private static final int CONTENT_TYPE_ORDINAL = SCHEMA_FIELDS.indexOf(TrackedFile.CONTENT_TYPE);
-  private static final int WRITER_FORMAT_VERSION_ORDINAL =
-      SCHEMA_FIELDS.indexOf(TrackedFile.WRITER_FORMAT_VERSION);
+  private static final int FORMAT_VERSION_ORDINAL =
+      SCHEMA_FIELDS.indexOf(TrackedFile.FORMAT_VERSION);
   private static final int LOCATION_ORDINAL = SCHEMA_FIELDS.indexOf(TrackedFile.LOCATION);
   private static final int FILE_FORMAT_ORDINAL = SCHEMA_FIELDS.indexOf(TrackedFile.FILE_FORMAT);
   private static final int RECORD_COUNT_ORDINAL = SCHEMA_FIELDS.indexOf(TrackedFile.RECORD_COUNT);
@@ -100,7 +100,7 @@ class TestTrackedFileStruct {
 
     file.set(TRACKING_ORDINAL, tracking);
     file.set(CONTENT_TYPE_ORDINAL, FileContent.EQUALITY_DELETES.id());
-    file.set(WRITER_FORMAT_VERSION_ORDINAL, WRITER_FORMAT_VERSION_V4);
+    file.set(FORMAT_VERSION_ORDINAL, FORMAT_VERSION_V4);
     file.set(LOCATION_ORDINAL, "s3://bucket/data/eq-delete.avro");
     file.set(FILE_FORMAT_ORDINAL, "avro");
     file.set(RECORD_COUNT_ORDINAL, 50L);
@@ -117,7 +117,7 @@ class TestTrackedFileStruct {
     assertThat(file.tracking().status()).isEqualTo(EntryStatus.ADDED);
     assertThat(file.tracking().snapshotId()).isEqualTo(42L);
     assertThat(file.contentType()).isEqualTo(FileContent.EQUALITY_DELETES);
-    assertThat(file.writerFormatVersion()).isEqualTo(WRITER_FORMAT_VERSION_V4);
+    assertThat(file.formatVersion()).isEqualTo(FORMAT_VERSION_V4);
     assertThat(file.location()).isEqualTo("s3://bucket/data/eq-delete.avro");
     assertThat(file.fileFormat()).isEqualTo(FileFormat.AVRO);
     assertThat(file.recordCount()).isEqualTo(50L);
@@ -209,7 +209,7 @@ class TestTrackedFileStruct {
     assertThat(copy.sortOrderId()).isEqualTo(1);
     assertThat(copy.recordCount()).isEqualTo(100L);
     assertThat(copy.fileSizeInBytes()).isEqualTo(1024L);
-    assertThat(copy.writerFormatVersion()).isEqualTo(WRITER_FORMAT_VERSION_V4);
+    assertThat(copy.formatVersion()).isEqualTo(FORMAT_VERSION_V4);
     assertThat(copy.keyMetadata()).isNotNull();
     assertThat(copy.splitOffsets()).containsExactly(50L);
     assertThat(copy.equalityIds()).isNull();
@@ -332,7 +332,7 @@ class TestTrackedFileStruct {
     TrackedFileStruct deserialized = TestHelpers.roundTripSerialize(file);
 
     assertThat(deserialized.contentType()).isEqualTo(FileContent.DATA);
-    assertThat(deserialized.writerFormatVersion()).isEqualTo(WRITER_FORMAT_VERSION_V4);
+    assertThat(deserialized.formatVersion()).isEqualTo(FORMAT_VERSION_V4);
     assertThat(deserialized.location()).isEqualTo("s3://bucket/data/file.parquet");
     assertThat(deserialized.fileFormat()).isEqualTo(FileFormat.PARQUET);
     assertThat(deserialized.recordCount()).isEqualTo(100L);
@@ -356,7 +356,7 @@ class TestTrackedFileStruct {
     TrackedFileStruct deserialized = TestHelpers.KryoHelpers.roundTripSerialize(file);
 
     assertThat(deserialized.contentType()).isEqualTo(FileContent.DATA);
-    assertThat(deserialized.writerFormatVersion()).isEqualTo(WRITER_FORMAT_VERSION_V4);
+    assertThat(deserialized.formatVersion()).isEqualTo(FORMAT_VERSION_V4);
     assertThat(deserialized.location()).isEqualTo("s3://bucket/data/file.parquet");
     assertThat(deserialized.fileFormat()).isEqualTo(FileFormat.PARQUET);
     assertThat(deserialized.recordCount()).isEqualTo(100L);
@@ -385,7 +385,7 @@ class TestTrackedFileStruct {
     TrackedFileStruct file =
         (TrackedFileStruct)
             TrackedFileBuilder.data(42L)
-                .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+                .formatVersion(FORMAT_VERSION_V4)
                 .location("s3://bucket/data/file.parquet")
                 .fileFormat(FileFormat.PARQUET)
                 .partition(newPartition(7, "music"))
@@ -462,7 +462,7 @@ class TestTrackedFileStruct {
 
     return (TrackedFileStruct)
         TrackedFileBuilder.data(0L)
-            .writerFormatVersion(WRITER_FORMAT_VERSION_V4)
+            .formatVersion(FORMAT_VERSION_V4)
             .location("s3://bucket/data/file.parquet")
             .fileFormat(FileFormat.PARQUET)
             .partition(new PartitionData(Types.StructType.of()))