You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xtable.apache.org by ti...@apache.org on 2024/04/24 18:52:19 UTC

(incubator-xtable) branch 77-schema-catalog created (now c6dd14bc)

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

timbrown pushed a change to branch 77-schema-catalog
in repository https://gitbox.apache.org/repos/asf/incubator-xtable.git


      at c6dd14bc remove schema catalog and schema versions

This branch includes the following new commits:

     new c6dd14bc remove schema catalog and schema versions

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(incubator-xtable) 01/01: remove schema catalog and schema versions

Posted by ti...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

timbrown pushed a commit to branch 77-schema-catalog
in repository https://gitbox.apache.org/repos/asf/incubator-xtable.git

commit c6dd14bc73080d1f908ee5365a37c00a01f3b9a4
Author: Timothy Brown <ti...@onehouse.ai>
AuthorDate: Wed Apr 24 13:52:11 2024 -0500

    remove schema catalog and schema versions
---
 .../org/apache/xtable/model/InternalSnapshot.java  |   3 -
 .../apache/xtable/model/schema/SchemaCatalog.java  |  41 --------
 .../apache/xtable/model/schema/SchemaVersion.java  |  35 -------
 .../xtable/model/storage/InternalDataFile.java     |   3 -
 .../xtable/spi/extractor/ConversionSource.java     |  10 --
 .../spi/extractor/SchemaCatalogExtractor.java      |  31 ------
 .../spi/extractor/TestExtractFromSource.java       |   8 +-
 .../apache/xtable/delta/DeltaConversionSource.java |  14 ---
 .../apache/xtable/hudi/HudiConversionSource.java   |   7 --
 .../apache/xtable/hudi/HudiDataFileExtractor.java  |   3 -
 .../xtable/hudi/HudiSchemaCatalogExtractor.java    |  47 ---------
 .../xtable/iceberg/IcebergConversionSource.java    |  16 ----
 .../delta/ITDeltaConversionTargetSource.java       |  18 ----
 .../java/org/apache/xtable/hudi/HudiTestUtil.java  |   3 -
 .../xtable/hudi/ITHudiConversionSourceTarget.java  |   3 -
 .../xtable/hudi/TestBaseFileUpdatesExtractor.java  |   2 -
 .../xtable/hudi/TestHudiFileStatsExtractor.java    |   3 -
 .../iceberg/TestIcebergConversionTargetSource.java |  31 ------
 .../org/apache/xtable/iceberg/TestIcebergSync.java | 106 +++++++--------------
 19 files changed, 37 insertions(+), 347 deletions(-)

diff --git a/api/src/main/java/org/apache/xtable/model/InternalSnapshot.java b/api/src/main/java/org/apache/xtable/model/InternalSnapshot.java
index 4c234922..345fda78 100644
--- a/api/src/main/java/org/apache/xtable/model/InternalSnapshot.java
+++ b/api/src/main/java/org/apache/xtable/model/InternalSnapshot.java
@@ -25,7 +25,6 @@ import java.util.List;
 import lombok.Builder;
 import lombok.Value;
 
-import org.apache.xtable.model.schema.SchemaCatalog;
 import org.apache.xtable.model.storage.PartitionFileGroup;
 
 /**
@@ -44,8 +43,6 @@ public class InternalSnapshot {
   String version;
   // Table reference
   InternalTable table;
-  // Schema catalog referencing the written schema for each data file in the snapshot
-  SchemaCatalog schemaCatalog;
   // Data files grouped by partition
   List<PartitionFileGroup> partitionedDataFiles;
   // pending commits before latest commit on the table.
diff --git a/api/src/main/java/org/apache/xtable/model/schema/SchemaCatalog.java b/api/src/main/java/org/apache/xtable/model/schema/SchemaCatalog.java
deleted file mode 100644
index 64261425..00000000
--- a/api/src/main/java/org/apache/xtable/model/schema/SchemaCatalog.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-package org.apache.xtable.model.schema;
-
-import java.util.Map;
-
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Value;
-
-/**
- * Mapping of schema version to the actual schema.
- *
- * @since 0.1
- */
-@Getter
-@Value
-@Builder
-public class SchemaCatalog {
-  Map<SchemaVersion, InternalSchema> schemas;
-
-  public SchemaCatalog(Map<SchemaVersion, InternalSchema> schemas) {
-    this.schemas = schemas;
-  }
-}
diff --git a/api/src/main/java/org/apache/xtable/model/schema/SchemaVersion.java b/api/src/main/java/org/apache/xtable/model/schema/SchemaVersion.java
deleted file mode 100644
index 9e6130b6..00000000
--- a/api/src/main/java/org/apache/xtable/model/schema/SchemaVersion.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-package org.apache.xtable.model.schema;
-
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.Value;
-
-/**
- * Represents the schema version.
- *
- * @since 0.1
- */
-@Getter
-@Value
-public class SchemaVersion {
-  int version;
-  @EqualsAndHashCode.Exclude String evolutionComment;
-}
diff --git a/api/src/main/java/org/apache/xtable/model/storage/InternalDataFile.java b/api/src/main/java/org/apache/xtable/model/storage/InternalDataFile.java
index 52effbe2..3aee766e 100644
--- a/api/src/main/java/org/apache/xtable/model/storage/InternalDataFile.java
+++ b/api/src/main/java/org/apache/xtable/model/storage/InternalDataFile.java
@@ -25,7 +25,6 @@ import lombok.Builder;
 import lombok.NonNull;
 import lombok.Value;
 
-import org.apache.xtable.model.schema.SchemaVersion;
 import org.apache.xtable.model.stat.ColumnStat;
 import org.apache.xtable.model.stat.PartitionValue;
 
@@ -37,8 +36,6 @@ import org.apache.xtable.model.stat.PartitionValue;
 @Builder(toBuilder = true)
 @Value
 public class InternalDataFile {
-  // written schema version
-  SchemaVersion schemaVersion;
   // physical path of the file (absolute with scheme)
   @NonNull String physicalPath;
   // file format
diff --git a/api/src/main/java/org/apache/xtable/spi/extractor/ConversionSource.java b/api/src/main/java/org/apache/xtable/spi/extractor/ConversionSource.java
index ed1486b9..2500454c 100644
--- a/api/src/main/java/org/apache/xtable/spi/extractor/ConversionSource.java
+++ b/api/src/main/java/org/apache/xtable/spi/extractor/ConversionSource.java
@@ -26,7 +26,6 @@ import org.apache.xtable.model.InstantsForIncrementalSync;
 import org.apache.xtable.model.InternalSnapshot;
 import org.apache.xtable.model.InternalTable;
 import org.apache.xtable.model.TableChange;
-import org.apache.xtable.model.schema.SchemaCatalog;
 
 /**
  * A client that provides the major functionality for extracting the state at a given instant in a
@@ -42,15 +41,6 @@ public interface ConversionSource<COMMIT> extends Closeable {
    */
   InternalTable getTable(COMMIT commit);
 
-  /**
-   * Extracts the {@link SchemaCatalog} as of the provided instant.
-   *
-   * @param table the current state of the table for this commit
-   * @param commit the commit to consider for reading the schema catalog
-   * @return the schema catalog
-   */
-  SchemaCatalog getSchemaCatalog(InternalTable table, COMMIT commit);
-
   /**
    * Extracts the {@link InternalSnapshot} as of latest state.
    *
diff --git a/api/src/main/java/org/apache/xtable/spi/extractor/SchemaCatalogExtractor.java b/api/src/main/java/org/apache/xtable/spi/extractor/SchemaCatalogExtractor.java
deleted file mode 100644
index 12a078e5..00000000
--- a/api/src/main/java/org/apache/xtable/spi/extractor/SchemaCatalogExtractor.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-package org.apache.xtable.spi.extractor;
-
-import org.apache.xtable.model.schema.SchemaCatalog;
-
-/**
- * Extracts and holds versioned schemas from {@link CLIENT}
- *
- * @param <CLIENT> table format client from which table metadata can be retrieved and Schema Catalog
- *     is built. Can use `HoodieTableMetaClient` for Hudi and `DeltaLog` for Delta.
- */
-public interface SchemaCatalogExtractor<CLIENT> {
-  SchemaCatalog catalog(CLIENT client);
-}
diff --git a/api/src/test/java/org/apache/xtable/spi/extractor/TestExtractFromSource.java b/api/src/test/java/org/apache/xtable/spi/extractor/TestExtractFromSource.java
index 82b61609..8503057d 100644
--- a/api/src/test/java/org/apache/xtable/spi/extractor/TestExtractFromSource.java
+++ b/api/src/test/java/org/apache/xtable/spi/extractor/TestExtractFromSource.java
@@ -41,7 +41,6 @@ import org.apache.xtable.model.InstantsForIncrementalSync;
 import org.apache.xtable.model.InternalSnapshot;
 import org.apache.xtable.model.InternalTable;
 import org.apache.xtable.model.TableChange;
-import org.apache.xtable.model.schema.SchemaCatalog;
 import org.apache.xtable.model.storage.DataFilesDiff;
 import org.apache.xtable.model.storage.InternalDataFile;
 import org.apache.xtable.model.storage.PartitionFileGroup;
@@ -52,14 +51,9 @@ public class TestExtractFromSource {
   @Test
   public void extractSnapshot() {
     InternalTable table = InternalTable.builder().latestCommitTime(Instant.now()).build();
-    SchemaCatalog schemaCatalog = new SchemaCatalog(Collections.emptyMap());
     List<PartitionFileGroup> dataFiles = Collections.emptyList();
     InternalSnapshot internalSnapshot =
-        InternalSnapshot.builder()
-            .schemaCatalog(schemaCatalog)
-            .table(table)
-            .partitionedDataFiles(dataFiles)
-            .build();
+        InternalSnapshot.builder().table(table).partitionedDataFiles(dataFiles).build();
     when(mockConversionSource.getCurrentSnapshot()).thenReturn(internalSnapshot);
     assertEquals(internalSnapshot, ExtractFromSource.of(mockConversionSource).extractSnapshot());
   }
diff --git a/core/src/main/java/org/apache/xtable/delta/DeltaConversionSource.java b/core/src/main/java/org/apache/xtable/delta/DeltaConversionSource.java
index 9a00e54c..19ecc02c 100644
--- a/core/src/main/java/org/apache/xtable/delta/DeltaConversionSource.java
+++ b/core/src/main/java/org/apache/xtable/delta/DeltaConversionSource.java
@@ -21,10 +21,8 @@ package org.apache.xtable.delta;
 import java.sql.Timestamp;
 import java.time.Instant;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 
@@ -51,8 +49,6 @@ import org.apache.xtable.model.InternalSnapshot;
 import org.apache.xtable.model.InternalTable;
 import org.apache.xtable.model.TableChange;
 import org.apache.xtable.model.schema.InternalSchema;
-import org.apache.xtable.model.schema.SchemaCatalog;
-import org.apache.xtable.model.schema.SchemaVersion;
 import org.apache.xtable.model.storage.DataFilesDiff;
 import org.apache.xtable.model.storage.FileFormat;
 import org.apache.xtable.model.storage.InternalDataFile;
@@ -85,15 +81,6 @@ public class DeltaConversionSource implements ConversionSource<Long> {
     return tableExtractor.table(deltaLog, tableName, version);
   }
 
-  @Override
-  public SchemaCatalog getSchemaCatalog(InternalTable table, Long version) {
-    // TODO: Does not support schema versions for now
-    Map<SchemaVersion, InternalSchema> schemas = new HashMap<>();
-    SchemaVersion schemaVersion = new SchemaVersion(1, "");
-    schemas.put(schemaVersion, table.getReadSchema());
-    return SchemaCatalog.builder().schemas(schemas).build();
-  }
-
   @Override
   public InternalSnapshot getCurrentSnapshot() {
     DeltaLog deltaLog = DeltaLog.forTable(sparkSession, basePath);
@@ -101,7 +88,6 @@ public class DeltaConversionSource implements ConversionSource<Long> {
     InternalTable table = getTable(snapshot.version());
     return InternalSnapshot.builder()
         .table(table)
-        .schemaCatalog(getSchemaCatalog(table, snapshot.version()))
         .partitionedDataFiles(getInternalDataFiles(snapshot, table.getReadSchema()))
         .build();
   }
diff --git a/core/src/main/java/org/apache/xtable/hudi/HudiConversionSource.java b/core/src/main/java/org/apache/xtable/hudi/HudiConversionSource.java
index bdb798f1..1b1d0bf3 100644
--- a/core/src/main/java/org/apache/xtable/hudi/HudiConversionSource.java
+++ b/core/src/main/java/org/apache/xtable/hudi/HudiConversionSource.java
@@ -49,7 +49,6 @@ import org.apache.xtable.model.InstantsForIncrementalSync;
 import org.apache.xtable.model.InternalSnapshot;
 import org.apache.xtable.model.InternalTable;
 import org.apache.xtable.model.TableChange;
-import org.apache.xtable.model.schema.SchemaCatalog;
 import org.apache.xtable.spi.extractor.ConversionSource;
 
 public class HudiConversionSource implements ConversionSource<HoodieInstant> {
@@ -77,11 +76,6 @@ public class HudiConversionSource implements ConversionSource<HoodieInstant> {
     return tableExtractor.table(metaClient, commit);
   }
 
-  @Override
-  public SchemaCatalog getSchemaCatalog(InternalTable table, HoodieInstant commit) {
-    return HudiSchemaCatalogExtractor.catalogWithTableSchema(table);
-  }
-
   @Override
   public InternalSnapshot getCurrentSnapshot() {
     HoodieActiveTimeline activeTimeline = metaClient.getActiveTimeline();
@@ -100,7 +94,6 @@ public class HudiConversionSource implements ConversionSource<HoodieInstant> {
     InternalTable table = getTable(latestCommit);
     return InternalSnapshot.builder()
         .table(table)
-        .schemaCatalog(getSchemaCatalog(table, latestCommit))
         .partitionedDataFiles(dataFileExtractor.getFilesCurrentState(table))
         .pendingCommits(
             pendingInstants.stream()
diff --git a/core/src/main/java/org/apache/xtable/hudi/HudiDataFileExtractor.java b/core/src/main/java/org/apache/xtable/hudi/HudiDataFileExtractor.java
index d14ab859..5739328c 100644
--- a/core/src/main/java/org/apache/xtable/hudi/HudiDataFileExtractor.java
+++ b/core/src/main/java/org/apache/xtable/hudi/HudiDataFileExtractor.java
@@ -64,7 +64,6 @@ import org.apache.xtable.exception.ReadException;
 import org.apache.xtable.model.InternalTable;
 import org.apache.xtable.model.exception.ParseException;
 import org.apache.xtable.model.schema.InternalPartitionField;
-import org.apache.xtable.model.schema.SchemaVersion;
 import org.apache.xtable.model.stat.PartitionValue;
 import org.apache.xtable.model.storage.DataFilesDiff;
 import org.apache.xtable.model.storage.FileFormat;
@@ -73,7 +72,6 @@ import org.apache.xtable.model.storage.PartitionFileGroup;
 
 /** Extracts all the files for Hudi table represented by {@link InternalTable}. */
 public class HudiDataFileExtractor implements AutoCloseable {
-  private static final SchemaVersion DEFAULT_SCHEMA_VERSION = new SchemaVersion(1, null);
   private final HoodieTableMetadata tableMetadata;
   private final HoodieTableMetaClient metaClient;
   private final HoodieEngineContext engineContext;
@@ -397,7 +395,6 @@ public class HudiDataFileExtractor implements AutoCloseable {
       List<PartitionValue> partitionValues, HoodieBaseFile hoodieBaseFile) {
     long rowCount = 0L;
     return InternalDataFile.builder()
-        .schemaVersion(DEFAULT_SCHEMA_VERSION)
         .physicalPath(hoodieBaseFile.getPath())
         .fileFormat(getFileFormat(FSUtils.getFileExtension(hoodieBaseFile.getPath())))
         .partitionValues(partitionValues)
diff --git a/core/src/main/java/org/apache/xtable/hudi/HudiSchemaCatalogExtractor.java b/core/src/main/java/org/apache/xtable/hudi/HudiSchemaCatalogExtractor.java
deleted file mode 100644
index 0258621f..00000000
--- a/core/src/main/java/org/apache/xtable/hudi/HudiSchemaCatalogExtractor.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- 
-package org.apache.xtable.hudi;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.hudi.common.table.HoodieTableMetaClient;
-
-import org.apache.xtable.model.InternalTable;
-import org.apache.xtable.model.schema.InternalSchema;
-import org.apache.xtable.model.schema.SchemaCatalog;
-import org.apache.xtable.model.schema.SchemaVersion;
-import org.apache.xtable.spi.extractor.SchemaCatalogExtractor;
-
-/** Implementation of {@link SchemaCatalogExtractor} for Hudi. */
-public class HudiSchemaCatalogExtractor implements SchemaCatalogExtractor<HoodieTableMetaClient> {
-  @Override
-  public SchemaCatalog catalog(HoodieTableMetaClient table) {
-    // TODO implement this
-    throw new UnsupportedOperationException("Schema catalog extractor not implemented for Hudi");
-  }
-
-  public static SchemaCatalog catalogWithTableSchema(InternalTable table) {
-    // does not support schema versions for now
-    Map<SchemaVersion, InternalSchema> schemas = new HashMap<>();
-    SchemaVersion schemaVersion = new SchemaVersion(1, "");
-    schemas.put(schemaVersion, table.getReadSchema());
-    return SchemaCatalog.builder().schemas(schemas).build();
-  }
-}
diff --git a/core/src/main/java/org/apache/xtable/iceberg/IcebergConversionSource.java b/core/src/main/java/org/apache/xtable/iceberg/IcebergConversionSource.java
index 330d9f33..7b26ee86 100644
--- a/core/src/main/java/org/apache/xtable/iceberg/IcebergConversionSource.java
+++ b/core/src/main/java/org/apache/xtable/iceberg/IcebergConversionSource.java
@@ -45,8 +45,6 @@ import org.apache.xtable.model.InternalTable;
 import org.apache.xtable.model.TableChange;
 import org.apache.xtable.model.schema.InternalPartitionField;
 import org.apache.xtable.model.schema.InternalSchema;
-import org.apache.xtable.model.schema.SchemaCatalog;
-import org.apache.xtable.model.schema.SchemaVersion;
 import org.apache.xtable.model.stat.PartitionValue;
 import org.apache.xtable.model.storage.*;
 import org.apache.xtable.model.storage.InternalDataFile;
@@ -118,25 +116,12 @@ public class IcebergConversionSource implements ConversionSource<Snapshot> {
         .build();
   }
 
-  @Override
-  public SchemaCatalog getSchemaCatalog(InternalTable table, Snapshot snapshot) {
-    Table iceTable = getSourceTable();
-    Integer iceSchemaId = snapshot.schemaId();
-    Schema iceSchema = iceTable.schemas().get(iceSchemaId);
-    IcebergSchemaExtractor schemaExtractor = IcebergSchemaExtractor.getInstance();
-    InternalSchema irSchema = schemaExtractor.fromIceberg(iceSchema);
-    Map<SchemaVersion, InternalSchema> catalog =
-        Collections.singletonMap(new SchemaVersion(iceSchemaId, ""), irSchema);
-    return SchemaCatalog.builder().schemas(catalog).build();
-  }
-
   @Override
   public InternalSnapshot getCurrentSnapshot() {
     Table iceTable = getSourceTable();
 
     Snapshot currentSnapshot = iceTable.currentSnapshot();
     InternalTable irTable = getTable(currentSnapshot);
-    SchemaCatalog schemaCatalog = getSchemaCatalog(irTable, currentSnapshot);
 
     TableScan scan = iceTable.newScan().useSnapshot(currentSnapshot.snapshotId());
     PartitionSpec partitionSpec = iceTable.spec();
@@ -156,7 +141,6 @@ public class IcebergConversionSource implements ConversionSource<Snapshot> {
     return InternalSnapshot.builder()
         .version(String.valueOf(currentSnapshot.snapshotId()))
         .table(irTable)
-        .schemaCatalog(schemaCatalog)
         .partitionedDataFiles(partitionedDataFiles)
         .build();
   }
diff --git a/core/src/test/java/org/apache/xtable/delta/ITDeltaConversionTargetSource.java b/core/src/test/java/org/apache/xtable/delta/ITDeltaConversionTargetSource.java
index 6a29bd18..3e2d61f5 100644
--- a/core/src/test/java/org/apache/xtable/delta/ITDeltaConversionTargetSource.java
+++ b/core/src/test/java/org/apache/xtable/delta/ITDeltaConversionTargetSource.java
@@ -65,8 +65,6 @@ import org.apache.xtable.model.schema.InternalPartitionField;
 import org.apache.xtable.model.schema.InternalSchema;
 import org.apache.xtable.model.schema.InternalType;
 import org.apache.xtable.model.schema.PartitionTransformType;
-import org.apache.xtable.model.schema.SchemaCatalog;
-import org.apache.xtable.model.schema.SchemaVersion;
 import org.apache.xtable.model.stat.ColumnStat;
 import org.apache.xtable.model.stat.PartitionValue;
 import org.apache.xtable.model.stat.Range;
@@ -191,11 +189,6 @@ public class ITDeltaConversionTargetSource {
         DataLayoutStrategy.FLAT,
         "file:" + basePath,
         Collections.emptyList());
-    // Validate schema catalog
-    SchemaCatalog schemaCatalog = snapshot.getSchemaCatalog();
-    validateSchemaCatalog(
-        schemaCatalog,
-        Collections.singletonMap(new SchemaVersion(1, ""), snapshot.getTable().getReadSchema()));
     // Validate data files
     List<ColumnStat> columnStats = Arrays.asList(COL1_COLUMN_STAT, COL2_COLUMN_STAT);
     Assertions.assertEquals(1, snapshot.getPartitionedDataFiles().size());
@@ -269,11 +262,6 @@ public class ITDeltaConversionTargetSource {
                 .sourceField(partCol)
                 .transformType(PartitionTransformType.VALUE)
                 .build()));
-    // Validate schema catalog
-    SchemaCatalog schemaCatalog = snapshot.getSchemaCatalog();
-    validateSchemaCatalog(
-        schemaCatalog,
-        Collections.singletonMap(new SchemaVersion(1, ""), snapshot.getTable().getReadSchema()));
     // Validate data files
     List<ColumnStat> columnStats = Arrays.asList(COL1_COLUMN_STAT, COL2_COLUMN_STAT);
     Assertions.assertEquals(1, snapshot.getPartitionedDataFiles().size());
@@ -689,11 +677,6 @@ public class ITDeltaConversionTargetSource {
     Assertions.assertEquals(partitioningFields, internalTable.getPartitioningFields());
   }
 
-  private void validateSchemaCatalog(
-      SchemaCatalog schemaCatalog, Map<SchemaVersion, InternalSchema> schemas) {
-    Assertions.assertEquals(schemas, schemaCatalog.getSchemas());
-  }
-
   private void validatePartitionDataFiles(
       PartitionFileGroup expectedPartitionFiles, PartitionFileGroup actualPartitionFiles)
       throws URISyntaxException {
@@ -715,7 +698,6 @@ public class ITDeltaConversionTargetSource {
 
   private void validatePropertiesDataFile(InternalDataFile expected, InternalDataFile actual)
       throws URISyntaxException {
-    Assertions.assertEquals(expected.getSchemaVersion(), actual.getSchemaVersion());
     Assertions.assertTrue(
         Paths.get(new URI(actual.getPhysicalPath()).getPath()).isAbsolute(),
         () -> "path == " + actual.getPhysicalPath() + " is not absolute");
diff --git a/core/src/test/java/org/apache/xtable/hudi/HudiTestUtil.java b/core/src/test/java/org/apache/xtable/hudi/HudiTestUtil.java
index d21d1d18..c701a1d5 100644
--- a/core/src/test/java/org/apache/xtable/hudi/HudiTestUtil.java
+++ b/core/src/test/java/org/apache/xtable/hudi/HudiTestUtil.java
@@ -48,11 +48,8 @@ import org.apache.hudi.config.HoodieArchivalConfig;
 import org.apache.hudi.config.HoodieIndexConfig;
 import org.apache.hudi.config.HoodieWriteConfig;
 
-import org.apache.xtable.model.schema.SchemaVersion;
-
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public class HudiTestUtil {
-  static final SchemaVersion SCHEMA_VERSION = new SchemaVersion(1, "");
 
   @SneakyThrows
   static HoodieTableMetaClient initTableAndGetMetaClient(
diff --git a/core/src/test/java/org/apache/xtable/hudi/ITHudiConversionSourceTarget.java b/core/src/test/java/org/apache/xtable/hudi/ITHudiConversionSourceTarget.java
index a0d51b7a..26dba2b4 100644
--- a/core/src/test/java/org/apache/xtable/hudi/ITHudiConversionSourceTarget.java
+++ b/core/src/test/java/org/apache/xtable/hudi/ITHudiConversionSourceTarget.java
@@ -18,7 +18,6 @@
  
 package org.apache.xtable.hudi;
 
-import static org.apache.xtable.hudi.HudiTestUtil.SCHEMA_VERSION;
 import static org.apache.xtable.hudi.HudiTestUtil.createWriteStatus;
 import static org.apache.xtable.hudi.HudiTestUtil.getHoodieWriteConfig;
 import static org.apache.xtable.hudi.HudiTestUtil.initTableAndGetMetaClient;
@@ -188,7 +187,6 @@ public class ITHudiConversionSourceTarget {
             .physicalPath(
                 String.format("file://%s/%s/%s", tableBasePath, partitionPath, existingFileName1))
             .recordCount(2)
-            .schemaVersion(SCHEMA_VERSION)
             .build();
     String fileName = "file_1.parquet";
     String filePath = getFilePath(partitionPath, fileName);
@@ -556,7 +554,6 @@ public class ITHudiConversionSourceTarget {
                 .totalSize(5)
                 .build());
     return InternalDataFile.builder()
-        .schemaVersion(SCHEMA_VERSION)
         .physicalPath(String.format("file://%s/%s/%s", tableBasePath, partitionPath, fileName))
         .fileSizeBytes(FILE_SIZE)
         .fileFormat(FileFormat.APACHE_PARQUET)
diff --git a/core/src/test/java/org/apache/xtable/hudi/TestBaseFileUpdatesExtractor.java b/core/src/test/java/org/apache/xtable/hudi/TestBaseFileUpdatesExtractor.java
index dddc736f..8f3b3f7e 100644
--- a/core/src/test/java/org/apache/xtable/hudi/TestBaseFileUpdatesExtractor.java
+++ b/core/src/test/java/org/apache/xtable/hudi/TestBaseFileUpdatesExtractor.java
@@ -18,7 +18,6 @@
  
 package org.apache.xtable.hudi;
 
-import static org.apache.xtable.hudi.HudiTestUtil.SCHEMA_VERSION;
 import static org.apache.xtable.hudi.HudiTestUtil.createWriteStatus;
 import static org.apache.xtable.hudi.HudiTestUtil.getHoodieWriteConfig;
 import static org.apache.xtable.hudi.HudiTestUtil.initTableAndGetMetaClient;
@@ -390,7 +389,6 @@ public class TestBaseFileUpdatesExtractor {
 
   private InternalDataFile createFile(String physicalPath, List<ColumnStat> columnStats) {
     return InternalDataFile.builder()
-        .schemaVersion(SCHEMA_VERSION)
         .physicalPath(physicalPath)
         .fileSizeBytes(FILE_SIZE)
         .fileFormat(FileFormat.APACHE_PARQUET)
diff --git a/core/src/test/java/org/apache/xtable/hudi/TestHudiFileStatsExtractor.java b/core/src/test/java/org/apache/xtable/hudi/TestHudiFileStatsExtractor.java
index 07425737..82149c8b 100644
--- a/core/src/test/java/org/apache/xtable/hudi/TestHudiFileStatsExtractor.java
+++ b/core/src/test/java/org/apache/xtable/hudi/TestHudiFileStatsExtractor.java
@@ -69,7 +69,6 @@ import org.apache.xtable.TestJavaHudiTable;
 import org.apache.xtable.model.schema.InternalField;
 import org.apache.xtable.model.schema.InternalSchema;
 import org.apache.xtable.model.schema.InternalType;
-import org.apache.xtable.model.schema.SchemaVersion;
 import org.apache.xtable.model.stat.ColumnStat;
 import org.apache.xtable.model.storage.FileFormat;
 import org.apache.xtable.model.storage.InternalDataFile;
@@ -147,7 +146,6 @@ public class TestHudiFileStatsExtractor {
     InternalDataFile inputFile =
         InternalDataFile.builder()
             .physicalPath(parquetFile.toString())
-            .schemaVersion(new SchemaVersion(1, null))
             .columnStats(Collections.emptyList())
             .fileFormat(FileFormat.APACHE_PARQUET)
             .lastModified(1234L)
@@ -184,7 +182,6 @@ public class TestHudiFileStatsExtractor {
     InternalDataFile inputFile =
         InternalDataFile.builder()
             .physicalPath(file.toString())
-            .schemaVersion(new SchemaVersion(1, null))
             .columnStats(Collections.emptyList())
             .fileFormat(FileFormat.APACHE_PARQUET)
             .lastModified(1234L)
diff --git a/core/src/test/java/org/apache/xtable/iceberg/TestIcebergConversionTargetSource.java b/core/src/test/java/org/apache/xtable/iceberg/TestIcebergConversionTargetSource.java
index dc3276d6..d100a313 100644
--- a/core/src/test/java/org/apache/xtable/iceberg/TestIcebergConversionTargetSource.java
+++ b/core/src/test/java/org/apache/xtable/iceberg/TestIcebergConversionTargetSource.java
@@ -38,7 +38,6 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
-import org.mockito.Mockito;
 
 import org.apache.iceberg.*;
 import org.apache.iceberg.data.GenericRecord;
@@ -59,8 +58,6 @@ import org.apache.xtable.model.TableChange;
 import org.apache.xtable.model.schema.InternalField;
 import org.apache.xtable.model.schema.InternalSchema;
 import org.apache.xtable.model.schema.PartitionTransformType;
-import org.apache.xtable.model.schema.SchemaCatalog;
-import org.apache.xtable.model.schema.SchemaVersion;
 import org.apache.xtable.model.stat.PartitionValue;
 import org.apache.xtable.model.storage.*;
 import org.apache.xtable.model.storage.FileFormat;
@@ -121,32 +118,6 @@ class TestIcebergConversionTargetSource {
         internalTable.getPartitioningFields().get(0).getTransformType());
   }
 
-  @Test
-  public void getSchemaCatalogTest(@TempDir Path workingDir) throws IOException {
-    Table catalogSales = createTestTableWithData(workingDir.toString());
-    Snapshot iceCurrentSnapshot = catalogSales.currentSnapshot();
-
-    // add extra schema to test current schema is returned
-    catalogSales.updateSchema().addColumn("new_column", Types.IntegerType.get()).commit();
-    assertEquals(2, catalogSales.schemas().size());
-    assertEquals(0, iceCurrentSnapshot.schemaId());
-
-    PerTableConfig sourceTableConfig = getPerTableConfig(catalogSales);
-
-    IcebergConversionSource conversionSource =
-        sourceProvider.getConversionSourceInstance(sourceTableConfig);
-    IcebergConversionSource spyConversionSource = Mockito.spy(conversionSource);
-
-    SchemaCatalog schemaCatalog = spyConversionSource.getSchemaCatalog(null, iceCurrentSnapshot);
-    Assertions.assertNotNull(schemaCatalog);
-    Map<SchemaVersion, InternalSchema> schemas = schemaCatalog.getSchemas();
-    assertEquals(1, schemas.size());
-    SchemaVersion expectedSchemaVersion = new SchemaVersion(iceCurrentSnapshot.schemaId(), "");
-    InternalSchema irSchemaOfCommit = schemas.get(expectedSchemaVersion);
-    Assertions.assertNotNull(irSchemaOfCommit);
-    validateSchema(irSchemaOfCommit, catalogSales.schemas().get(iceCurrentSnapshot.schemaId()));
-  }
-
   @Test
   public void testGetCurrentSnapshot(@TempDir Path workingDir) throws IOException {
     Table catalogSales = createTestTableWithData(workingDir.toString());
@@ -172,8 +143,6 @@ class TestIcebergConversionTargetSource {
     assertEquals(String.valueOf(iceCurrentSnapshot.snapshotId()), internalSnapshot.getVersion());
     Assertions.assertNotNull(internalSnapshot.getTable());
     verify(spyConversionSource, times(1)).getTable(iceCurrentSnapshot);
-    verify(spyConversionSource, times(1))
-        .getSchemaCatalog(internalSnapshot.getTable(), iceCurrentSnapshot);
     verify(spyPartitionConverter, times(5)).toXTable(any(), any(), any());
     verify(spyDataFileExtractor, times(5)).fromIceberg(any(), any(), any());
 
diff --git a/core/src/test/java/org/apache/xtable/iceberg/TestIcebergSync.java b/core/src/test/java/org/apache/xtable/iceberg/TestIcebergSync.java
index 3d479b4e..fa8b162a 100644
--- a/core/src/test/java/org/apache/xtable/iceberg/TestIcebergSync.java
+++ b/core/src/test/java/org/apache/xtable/iceberg/TestIcebergSync.java
@@ -41,7 +41,6 @@ import java.time.Instant;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -91,8 +90,6 @@ import org.apache.xtable.model.schema.InternalPartitionField;
 import org.apache.xtable.model.schema.InternalSchema;
 import org.apache.xtable.model.schema.InternalType;
 import org.apache.xtable.model.schema.PartitionTransformType;
-import org.apache.xtable.model.schema.SchemaCatalog;
-import org.apache.xtable.model.schema.SchemaVersion;
 import org.apache.xtable.model.stat.PartitionValue;
 import org.apache.xtable.model.stat.Range;
 import org.apache.xtable.model.storage.DataLayoutStrategy;
@@ -224,17 +221,12 @@ public class TestIcebergSync {
     InternalTable table1 =
         getInternalTable(tableName, basePath, internalSchema, null, LAST_COMMIT_TIME);
     InternalTable table2 = getInternalTable(tableName, basePath, schema2, null, LAST_COMMIT_TIME);
-    Map<SchemaVersion, InternalSchema> schemas = new HashMap<>();
-    SchemaVersion schemaVersion1 = new SchemaVersion(1, "");
-    schemas.put(schemaVersion1, internalSchema);
-    SchemaVersion schemaVersion2 = new SchemaVersion(2, "");
-    schemas.put(schemaVersion2, schema2);
-
-    InternalDataFile dataFile1 = getDataFile(schemaVersion1, 1, Collections.emptyList());
-    InternalDataFile dataFile2 = getDataFile(schemaVersion1, 2, Collections.emptyList());
-    InternalDataFile dataFile3 = getDataFile(schemaVersion2, 3, Collections.emptyList());
-    InternalSnapshot snapshot1 = buildSnapshot(table1, schemas, dataFile1, dataFile2);
-    InternalSnapshot snapshot2 = buildSnapshot(table2, schemas, dataFile2, dataFile3);
+
+    InternalDataFile dataFile1 = getDataFile(1, Collections.emptyList());
+    InternalDataFile dataFile2 = getDataFile(2, Collections.emptyList());
+    InternalDataFile dataFile3 = getDataFile(3, Collections.emptyList());
+    InternalSnapshot snapshot1 = buildSnapshot(table1, dataFile1, dataFile2);
+    InternalSnapshot snapshot2 = buildSnapshot(table2, dataFile2, dataFile3);
     when(mockSchemaExtractor.toIceberg(internalSchema)).thenReturn(icebergSchema);
     when(mockSchemaExtractor.toIceberg(schema2)).thenReturn(icebergSchema2);
     ArgumentCaptor<Schema> partitionSpecSchemaArgumentCaptor =
@@ -323,19 +315,14 @@ public class TestIcebergSync {
         getInternalTable(tableName, basePath, internalSchema, null, LAST_COMMIT_TIME);
     InternalTable table2 =
         getInternalTable(tableName, basePath, schema2, null, LAST_COMMIT_TIME.plusMillis(100000L));
-    Map<SchemaVersion, InternalSchema> schemas = new HashMap<>();
-    SchemaVersion schemaVersion1 = new SchemaVersion(1, "");
-    schemas.put(schemaVersion1, internalSchema);
-    SchemaVersion schemaVersion2 = new SchemaVersion(2, "");
-    schemas.put(schemaVersion2, schema2);
-
-    InternalDataFile dataFile1 = getDataFile(schemaVersion1, 1, Collections.emptyList());
-    InternalDataFile dataFile2 = getDataFile(schemaVersion1, 2, Collections.emptyList());
-    InternalDataFile dataFile3 = getDataFile(schemaVersion2, 3, Collections.emptyList());
-    InternalDataFile dataFile4 = getDataFile(schemaVersion2, 4, Collections.emptyList());
-    InternalSnapshot snapshot1 = buildSnapshot(table1, schemas, dataFile1, dataFile2);
-    InternalSnapshot snapshot2 = buildSnapshot(table2, schemas, dataFile2, dataFile3);
-    InternalSnapshot snapshot3 = buildSnapshot(table2, schemas, dataFile3, dataFile4);
+
+    InternalDataFile dataFile1 = getDataFile(1, Collections.emptyList());
+    InternalDataFile dataFile2 = getDataFile(2, Collections.emptyList());
+    InternalDataFile dataFile3 = getDataFile(3, Collections.emptyList());
+    InternalDataFile dataFile4 = getDataFile(4, Collections.emptyList());
+    InternalSnapshot snapshot1 = buildSnapshot(table1, dataFile1, dataFile2);
+    InternalSnapshot snapshot2 = buildSnapshot(table2, dataFile2, dataFile3);
+    InternalSnapshot snapshot3 = buildSnapshot(table2, dataFile3, dataFile4);
     when(mockSchemaExtractor.toIceberg(internalSchema)).thenReturn(icebergSchema);
     when(mockSchemaExtractor.toIceberg(schema2)).thenReturn(icebergSchema2);
     ArgumentCaptor<Schema> partitionSpecSchemaArgumentCaptor =
@@ -393,9 +380,6 @@ public class TestIcebergSync {
             internalSchema,
             Collections.singletonList(partitionField),
             LAST_COMMIT_TIME);
-    Map<SchemaVersion, InternalSchema> schemas = new HashMap<>();
-    SchemaVersion schemaVersion = new SchemaVersion(1, "");
-    schemas.put(schemaVersion, internalSchema);
 
     List<PartitionValue> partitionValues1 =
         Collections.singletonList(
@@ -409,10 +393,10 @@ public class TestIcebergSync {
                 .partitionField(partitionField)
                 .range(Range.scalar(Instant.parse("2022-10-03T00:00:00.00Z").toEpochMilli()))
                 .build());
-    InternalDataFile dataFile1 = getDataFile(schemaVersion, 1, partitionValues1);
-    InternalDataFile dataFile2 = getDataFile(schemaVersion, 2, partitionValues1);
-    InternalDataFile dataFile3 = getDataFile(schemaVersion, 3, partitionValues2);
-    InternalSnapshot snapshot = buildSnapshot(table, schemas, dataFile1, dataFile2, dataFile3);
+    InternalDataFile dataFile1 = getDataFile(1, partitionValues1);
+    InternalDataFile dataFile2 = getDataFile(2, partitionValues1);
+    InternalDataFile dataFile3 = getDataFile(3, partitionValues2);
+    InternalSnapshot snapshot = buildSnapshot(table, dataFile1, dataFile2, dataFile3);
 
     when(mockSchemaExtractor.toIceberg(internalSchema))
         .thenReturn(icebergSchema)
@@ -459,9 +443,6 @@ public class TestIcebergSync {
             internalSchema,
             Collections.singletonList(partitionField),
             LAST_COMMIT_TIME);
-    Map<SchemaVersion, InternalSchema> schemas = new HashMap<>();
-    SchemaVersion schemaVersion = new SchemaVersion(1, "");
-    schemas.put(schemaVersion, internalSchema);
 
     List<PartitionValue> partitionValues1 =
         Collections.singletonList(
@@ -475,10 +456,10 @@ public class TestIcebergSync {
                 .partitionField(partitionField)
                 .range(Range.scalar(Instant.parse("2022-10-03T00:00:00.00Z").toEpochMilli()))
                 .build());
-    InternalDataFile dataFile1 = getDataFile(schemaVersion, 1, partitionValues1);
-    InternalDataFile dataFile2 = getDataFile(schemaVersion, 2, partitionValues1);
-    InternalDataFile dataFile3 = getDataFile(schemaVersion, 3, partitionValues2);
-    InternalSnapshot snapshot = buildSnapshot(table, schemas, dataFile1, dataFile2, dataFile3);
+    InternalDataFile dataFile1 = getDataFile(1, partitionValues1);
+    InternalDataFile dataFile2 = getDataFile(2, partitionValues1);
+    InternalDataFile dataFile3 = getDataFile(3, partitionValues2);
+    InternalSnapshot snapshot = buildSnapshot(table, dataFile1, dataFile2, dataFile3);
 
     when(mockSchemaExtractor.toIceberg(internalSchema)).thenReturn(icebergSchema);
     PartitionSpec partitionSpec =
@@ -522,9 +503,6 @@ public class TestIcebergSync {
             internalSchema,
             Collections.singletonList(partitionField),
             LAST_COMMIT_TIME);
-    Map<SchemaVersion, InternalSchema> schemas = new HashMap<>();
-    SchemaVersion schemaVersion = new SchemaVersion(1, "");
-    schemas.put(schemaVersion, internalSchema);
 
     List<PartitionValue> partitionValues1 =
         Collections.singletonList(
@@ -532,10 +510,10 @@ public class TestIcebergSync {
     List<PartitionValue> partitionValues2 =
         Collections.singletonList(
             PartitionValue.builder().partitionField(partitionField).range(Range.scalar(2)).build());
-    InternalDataFile dataFile1 = getDataFile(schemaVersion, 1, partitionValues1);
-    InternalDataFile dataFile2 = getDataFile(schemaVersion, 2, partitionValues1);
-    InternalDataFile dataFile3 = getDataFile(schemaVersion, 3, partitionValues2);
-    InternalSnapshot snapshot = buildSnapshot(table, schemas, dataFile1, dataFile2, dataFile3);
+    InternalDataFile dataFile1 = getDataFile(1, partitionValues1);
+    InternalDataFile dataFile2 = getDataFile(2, partitionValues1);
+    InternalDataFile dataFile3 = getDataFile(3, partitionValues2);
+    InternalSnapshot snapshot = buildSnapshot(table, dataFile1, dataFile2, dataFile3);
 
     when(mockSchemaExtractor.toIceberg(internalSchema)).thenReturn(icebergSchema);
     PartitionSpec partitionSpec =
@@ -585,9 +563,6 @@ public class TestIcebergSync {
             internalSchema,
             Arrays.asList(partitionField1, partitionField2),
             LAST_COMMIT_TIME);
-    Map<SchemaVersion, InternalSchema> schemas = new HashMap<>();
-    SchemaVersion schemaVersion = new SchemaVersion(1, "");
-    schemas.put(schemaVersion, internalSchema);
 
     List<PartitionValue> partitionValues1 =
         Arrays.asList(
@@ -610,10 +585,10 @@ public class TestIcebergSync {
                 .partitionField(partitionField2)
                 .range(Range.scalar(Instant.parse("2022-10-03T00:00:00.00Z").toEpochMilli()))
                 .build());
-    InternalDataFile dataFile1 = getDataFile(schemaVersion, 1, partitionValues1);
-    InternalDataFile dataFile2 = getDataFile(schemaVersion, 2, partitionValues2);
-    InternalDataFile dataFile3 = getDataFile(schemaVersion, 3, partitionValues3);
-    InternalSnapshot snapshot = buildSnapshot(table, schemas, dataFile1, dataFile2, dataFile3);
+    InternalDataFile dataFile1 = getDataFile(1, partitionValues1);
+    InternalDataFile dataFile2 = getDataFile(2, partitionValues2);
+    InternalDataFile dataFile3 = getDataFile(3, partitionValues3);
+    InternalSnapshot snapshot = buildSnapshot(table, dataFile1, dataFile2, dataFile3);
 
     when(mockSchemaExtractor.toIceberg(internalSchema)).thenReturn(icebergSchema);
     PartitionSpec partitionSpec =
@@ -663,9 +638,6 @@ public class TestIcebergSync {
             internalSchema,
             Collections.singletonList(partitionField),
             LAST_COMMIT_TIME);
-    Map<SchemaVersion, InternalSchema> schemas = new HashMap<>();
-    SchemaVersion schemaVersion = new SchemaVersion(1, "");
-    schemas.put(schemaVersion, internalSchema);
 
     List<PartitionValue> partitionValues1 =
         Collections.singletonList(
@@ -679,10 +651,10 @@ public class TestIcebergSync {
                 .partitionField(partitionField)
                 .range(Range.scalar("value2"))
                 .build());
-    InternalDataFile dataFile1 = getDataFile(schemaVersion, 1, partitionValues1);
-    InternalDataFile dataFile2 = getDataFile(schemaVersion, 2, partitionValues1);
-    InternalDataFile dataFile3 = getDataFile(schemaVersion, 3, partitionValues2);
-    InternalSnapshot snapshot = buildSnapshot(table, schemas, dataFile1, dataFile2, dataFile3);
+    InternalDataFile dataFile1 = getDataFile(1, partitionValues1);
+    InternalDataFile dataFile2 = getDataFile(2, partitionValues1);
+    InternalDataFile dataFile3 = getDataFile(3, partitionValues2);
+    InternalSnapshot snapshot = buildSnapshot(table, dataFile1, dataFile2, dataFile3);
 
     when(mockSchemaExtractor.toIceberg(internalSchema)).thenReturn(icebergSchema);
     PartitionSpec partitionSpec =
@@ -707,26 +679,20 @@ public class TestIcebergSync {
         Expressions.equal(partitionField.getSourceField().getPath(), "value1"));
   }
 
-  private InternalSnapshot buildSnapshot(
-      InternalTable table,
-      Map<SchemaVersion, InternalSchema> schemas,
-      InternalDataFile... dataFiles) {
+  private InternalSnapshot buildSnapshot(InternalTable table, InternalDataFile... dataFiles) {
     return InternalSnapshot.builder()
         .table(table)
-        .schemaCatalog(SchemaCatalog.builder().schemas(schemas).build())
         .partitionedDataFiles(PartitionFileGroup.fromFiles(Arrays.asList(dataFiles)))
         .build();
   }
 
-  private InternalDataFile getDataFile(
-      SchemaVersion schemaVersion, int index, List<PartitionValue> partitionValues) {
+  private InternalDataFile getDataFile(int index, List<PartitionValue> partitionValues) {
     String physicalPath = "file:/physical" + index + ".parquet";
     return InternalDataFile.builder()
         .fileFormat(FileFormat.APACHE_PARQUET)
         .fileSizeBytes(RANDOM.nextInt(10000))
         .physicalPath(physicalPath)
         .recordCount(RANDOM.nextInt(10000))
-        .schemaVersion(schemaVersion)
         .partitionValues(partitionValues)
         .columnStats(Collections.emptyList())
         .build();