You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by gi...@apache.org on 2025/05/19 06:19:18 UTC

(iceberg) branch dependabot/gradle/com.azure-azure-sdk-bom-1.2.34 updated (6b75646bd0 -> 0ffab60910)

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

github-bot pushed a change to branch dependabot/gradle/com.azure-azure-sdk-bom-1.2.34
in repository https://gitbox.apache.org/repos/asf/iceberg.git


 discard 6b75646bd0 Build: Bump com.azure:azure-sdk-bom from 1.2.31 to 1.2.34
     add 60def0857d Spark 3.4: Migrate sql tests to JUnit5 (#12945)
     add f9bfec36d1 Build: Bump datamodel-code-generator from 0.28.5 to 0.30.1 (#12961)
     add d2806b4d88 Docs: Incorrect property in CREATE CATALOG for Flink (#12894)
     add af32a07f46 Data, Spark 3.4, 3.5: Add flag to handle missing files for `importSparkTable` (#12212)
     add 7f3f450bbd Spec additions for encryption (#12162)
     add a214e9bc23 Spec: Update partition stats for V3 (#12098)
     add 84741867b9 AWS, GCP: Deprecate passing FileIO properties through constructor (#12972)
     add cbf2695e95 Flink: Maintenance - RewriteDataFiles (#11497)
     add 47f8ae8d72 Build: Bump net.snowflake:snowflake-jdbc from 3.23.2 to 3.24.0 (#12965)
     add 1e944650fc API, Core: Add deleteFile to RowDelta API (#12861)
     add 92d89dc912 API, Core: Add table metadata keys for encryption (#12927)
     add a04c532650 Core: Enable HTTP proxy support for the client used by REST Catalog (#12406)
     add 4bb60aa0bc Flink: Backport Maintenance - RewriteDataFiles to Flink 1.19
     add 27e73fea23 Flink: Backport Maintenance - RewriteDataFiles to Flink 2.0
     add 94ba295960 Build: Bump Comet from 0.5.0 to 0.8.1 (#12974)
     add 9fb80b7167 Core: Disallow creation of invalid PartitionSpec (#12887)
     add c4afd783d3 REST Spec: Remove update to enable row lineage (#12986)
     add 3bb6a25ccd Spec: Update v3 summary, add row lineage (#12982)
     add a00658b733 Docs: Mark Spark 3.3 as End-of-Life since 1.9 (#12989)
     add 176a6c6b82 Spark 3.4: Update RewriteDataFilesSparkAction and RewritePositionDeleteFilesSparkAction to use the new APIs (#12980)
     add c730c0b16d Build, Core: Let RevAPI compare against 1.9.0 / Fix API breakage around StorageCredential (#12930)
     add 542a4d7646 GCP: Support multiple storage credential prefixes (#12881)
     add 8cf996188a AWS, Core, Flink, Parquet: Remove deprecations for 1.10.0 (#12909)
     add ad7f5c439b Spark: Spark 4.0 initial support (#12494)
     add ada3d12b4e Spark 3.4: Migrate source and spark tests to JUnit5 (#12998)
     add df866c51af ORC: Upgrade ORC to 1.9.6 (#13003)
     add 809a2327f1 Spark 3.4: Migrate SparkCatalogTestBase related tests to JUnit5 (#13007)
     add bed88a38d5 Core: Refactor and use InternalData for partition stats (#12946)
     add 9c8c431f83 Docs: Add Databend link (#13002)
     add a5bcacd979 Revert "Spark: Spark 4.0 initial support (#12494)"
     add 582d151de4 Update ADLS implementation status (#13020)
     add 97c0e136b8 Spec: Clarify behavior of special geo objects for lower/upper bounds (#12956)
     add 8976bc5fd9 Spark 3.4: Migrate SparkTestBaseWithCatalog related tests to JUnit5 (#13015)
     add 951ba965a7 Spark 3.4: Migrate SparkTestBase related tests to JUnit5 (#13031)
     add fa1d860603 Docs: Add Spark SQL Configurations (#12931)
     add acf56af529 Parquet: Fix to ensure that last updated sequence numbers for V2 and earlier tables are null (#13001)
     add 4735142fbf Build: Bump mkdocs-material from 9.6.12 to 9.6.13 (#13029)
     add 7217fb4463 REST spec: Add encryption keys (#12987)
     add d04be9b6df Add table property to disable/enable parquet column statistics #12770 (#12771)
     add 6c29507008 Docs: Fix links to javadoc (#12880)
     add 630bf0d33b OpenAPI: Add retries when finding free port for REST server (#13017)
     add 5d2230ead7 Spark 3.4: Migrate tests in spark.data including refactoring Spark 3.5 tests (#13038)
     add 8facdafc37 Catalog: Add BigQuery Metastore Catalog Support (#12808)
     add ba75a11ebe Spark 3.4: Migrate tests in spark.source including refactoring Spark 3.5 tests (#13040)
     add d2124f2771 Spec: Note position delete files are only deprecated in v3 (#12983)
     add aaba2a3347 Nessie: Throw a NoSuchNamespaceException when listing a non-existing namespace (#12901)
     add 4ea7f93424 Docs: Add Delete Granularity option to write configuration (#13046)
     add d44cba57c8 Spark 3.4: Migrate other JUnit 4 dependant tests to JUnit 5 (#13044)
     add 0aab58191a Arrow: Avoid deprecated ArrowType.Decimal constructor (#13051)
     add d94b09b431 Core: Support incremental compute for partition stats (#12629)
     add b050efce83 Build: Bump com.google.cloud:libraries-bom from 26.59.0 to 26.60.0 (#13026)
     add c882e39823 Build: Bump io.netty:netty-buffer from 4.2.0.Final to 4.2.1.Final (#13028)
     add 268661af25 Flink: Add DynamicRecord / DynamicRecordInternal / DynamicRecordInternalSerializer (#12996)
     add cb33ec16d0 Common: Reduce visibility of deprecated method since 1.7.0 (#13053)
     add 71cbe17cea Spark: Move 3.5 as 4.0
     add 8353ac8f80 Spark: Copy back 4.0 as 3.5
     add 6c98a9e470 Spark: initial support for Spark 4.0
     add 66b60b7b5c Build: Remove JUnit4 dependency (#12938)
     add 31c315f695 Flink: Support zookeeper lock in TableMaintenance (#12810)
     add a25f9938ca [SPARK] Fix add_files type conversion exception and incorrect partition value when handling null partitions (#12886)
     add cbbc8728e2 Core: Use baseTableLocation() instead of hardcoded table location in CatalogTests (#13071)
     add 8511a37ce4 Flink: Backport support zookeeper lock in TableMaintenance (#13063)
     add acffd4dc5d Kafka Connect: Add BigQuery Metastore catalog (#13041)
     add b050314a03 Flink: Fix watermark no pass in TaskResultAggregator (#13069)
     add c2478968e6 Core: Add max files rewrite option for RewriteAction  (#12824)
     add b08b241aa3 Build: Bump mkdocs-material from 9.6.13 to 9.6.14 (#13090)
     add a44ec8d1c3 Spec: Clarify writer requirements to prevent orphan DVs (#13042)
     add 1b30216307 API: Reorder as() calls in Tests (#13083)
     add a491ce9356 Build: Bump software.amazon.awssdk:bom from 2.31.35 to 2.31.45 (#13088)
     add 0ffab60910 Build: Bump com.azure:azure-sdk-bom from 1.2.31 to 1.2.34

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (6b75646bd0)
            \
             N -- N -- N   refs/heads/dependabot/gradle/com.azure-azure-sdk-bom-1.2.34 (0ffab60910)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

No new revisions were added by this update.

Summary of changes:
 .baseline/checkstyle/checkstyle-suppressions.xml   |   3 +
 .baseline/checkstyle/checkstyle.xml                |  10 +-
 .github/labeler.yml                                |   3 +-
 .github/workflows/java-ci.yml                      |   4 +-
 .github/workflows/publish-snapshot.yml             |   2 +-
 .github/workflows/spark-ci.yml                     |   6 +-
 .gitignore                                         |   2 +
 .palantir/revapi.yml                               | 104 ++++
 .../java/org/apache/iceberg/PartitionSpec.java     |  11 +
 api/src/main/java/org/apache/iceberg/RowDelta.java |  11 +
 api/src/main/java/org/apache/iceberg/Snapshot.java |   9 +
 .../EncryptedKey.java}                             |  13 +-
 .../java/org/apache/iceberg/TestIcebergBuild.java  |   8 +-
 .../iceberg/TestPartitionSpecValidation.java       | 101 ++++
 .../org/apache/iceberg/arrow/ArrowSchemaUtil.java  |   2 +-
 .../iceberg/arrow/vectorized/ArrowReaderTest.java  |   7 +-
 .../org/apache/iceberg/aws/s3/TestS3FileIO.java    |   6 +-
 .../iceberg/aws/s3/TestS3FileIOIntegration.java    | 101 ++--
 .../iceberg/aws/s3/TestS3MultipartUpload.java      |   9 +-
 .../org/apache/iceberg/aws/RESTSigV4Signer.java    | 160 -----
 .../java/org/apache/iceberg/aws/s3/S3FileIO.java   |   7 +
 .../gcp/bigquery/BigQueryMetastoreCatalog.java     | 349 +++++++++++
 .../gcp/bigquery/BigQueryMetastoreClient.java      | 127 ++++
 .../gcp/bigquery/BigQueryMetastoreClientImpl.java  | 660 +++++++++++++++++++++
 .../gcp/bigquery/BigQueryMetastoreUtils.java       |  75 +++
 .../gcp/bigquery/BigQueryTableOperations.java      | 259 ++++++++
 .../gcp/bigquery/FakeBigQueryMetastoreClient.java  | 254 ++++++++
 .../iceberg/gcp/bigquery/TestBigQueryCatalog.java  | 174 ++++++
 .../gcp/bigquery/TestBigQueryTableOperations.java  | 293 +++++++++
 build.gradle                                       |  39 +-
 .../org/apache/iceberg/common/DynConstructors.java |   6 +-
 .../java/org/apache/iceberg/common/DynMethods.java |   6 +-
 .../main/java/org/apache/iceberg/BaseRowDelta.java |  44 ++
 .../main/java/org/apache/iceberg/BaseSnapshot.java |  11 +-
 .../main/java/org/apache/iceberg/CatalogUtil.java  |   6 +
 .../org/apache/iceberg/EncryptedKeyParser.java     |  85 +++
 .../org/apache/iceberg/GenericManifestFile.java    |  41 --
 .../java/org/apache/iceberg/MetadataUpdate.java    |  66 ++-
 .../org/apache/iceberg/MetadataUpdateParser.java   |  64 +-
 .../java/org/apache/iceberg/PartitionStats.java    |  46 +-
 .../org/apache/iceberg/PartitionStatsHandler.java  | 429 ++++++++++++++
 .../org/apache/iceberg/PartitionStatsUtil.java     |   5 +
 .../org/apache/iceberg/RewriteTablePathUtil.java   |   4 +-
 .../main/java/org/apache/iceberg/SchemaUpdate.java |   3 +-
 .../java/org/apache/iceberg/SnapshotParser.java    |   8 +-
 .../java/org/apache/iceberg/SnapshotProducer.java  |  36 +-
 .../java/org/apache/iceberg/TableMetadata.java     |  76 ++-
 .../org/apache/iceberg/TableMetadataParser.java    |  18 +
 .../java/org/apache/iceberg/TableProperties.java   |  10 +-
 .../iceberg/actions/BinPackRewriteFilePlanner.java |  80 ++-
 .../org/apache/iceberg/actions/FileRewriter.java   |  80 ---
 .../apache/iceberg/actions/RewriteFileGroup.java   |  32 -
 .../actions/RewritePositionDeletesGroup.java       |  32 -
 .../iceberg/actions/SizeBasedDataRewriter.java     | 173 ------
 .../iceberg/actions/SizeBasedFileRewriter.java     | 348 -----------
 .../actions/SizeBasedPositionDeletesRewriter.java  |  63 --
 .../BaseEncryptedKey.java}                         |  41 +-
 .../apache/iceberg/encryption/EncryptionUtil.java  |  13 +
 .../iceberg/io/ImmutableStorageCredential.java     | 322 ++++++++++
 .../org/apache/iceberg/io/StorageCredential.java   |  11 +-
 .../java/org/apache/iceberg/rest/HTTPClient.java   |  34 ++
 .../java/org/apache/iceberg/util/JsonUtil.java     |  48 ++
 .../iceberg/PartitionStatsHandlerTestBase.java     | 238 +++-----
 .../org/apache/iceberg/TestDataTaskParser.java     |   2 +
 .../org/apache/iceberg/TestEncryptedKeyParser.java |  76 +++
 .../apache/iceberg/TestMetadataUpdateParser.java   |  86 ++-
 .../org/apache/iceberg/TestPartitionStatsUtil.java |   4 +
 .../test/java/org/apache/iceberg/TestRowDelta.java | 141 +++++
 .../org/apache/iceberg/TestRowLineageMetadata.java |  36 +-
 .../apache/iceberg/TestSchemaAndMappingUpdate.java |  15 +
 .../java/org/apache/iceberg/TestSnapshotJson.java  |  10 +-
 .../java/org/apache/iceberg/TestTableMetadata.java |  28 +-
 .../org/apache/iceberg/TestUpdateRequirements.java |   2 +-
 .../actions/TestBinPackRewriteFilePlanner.java     |  93 ++-
 .../iceberg/actions/TestSizeBasedRewriter.java     |  95 ---
 .../avro/TestAvroPartitionStatsHandler.java}       |  11 +-
 .../org/apache/iceberg/catalog/CatalogTests.java   |   4 +-
 .../iceberg/encryption/EncryptionTestHelpers.java  |   3 +-
 .../org/apache/iceberg/rest/TestHTTPClient.java    |  59 ++
 .../TestCommitTransactionRequestParser.java        |   2 +-
 .../java/org/apache/iceberg/util/TestJsonUtil.java |  63 ++
 .../iceberg/PartitionStatsHandlerBenchmark.java    |  23 +-
 .../apache/iceberg/data/PartitionStatsHandler.java |   4 +
 .../apache/iceberg/data/GenericAppenderHelper.java |  15 -
 .../iceberg/data/TestTableMigrationUtil.java       | 110 ++++
 docs/docs/api.md                                   |   8 +-
 docs/docs/aws.md                                   |   6 +-
 docs/docs/configuration.md                         |   2 +
 docs/docs/hive.md                                  |   2 +-
 docs/docs/java-api-quickstart.md                   |   2 +-
 docs/docs/kafka-connect.md                         |  15 +-
 docs/docs/spark-configuration.md                   |  56 ++
 docs/mkdocs.yml                                    |   1 +
 flink/v1.19/build.gradle                           |   1 -
 .../flink/maintenance/api/ExpireSnapshots.java     |   2 +-
 .../maintenance/api/MaintenanceTaskBuilder.java    |   4 +-
 .../flink/maintenance/api/RewriteDataFiles.java    | 234 ++++++++
 .../flink/maintenance/api/TableMaintenance.java    |   7 +-
 .../flink/maintenance/api/ZkLockFactory.java       | 178 ++++++
 .../operator/DataFileRewriteCommitter.java         | 199 +++++++
 .../operator/DataFileRewritePlanner.java           | 206 +++++++
 .../operator/DataFileRewriteRunner.java            | 253 ++++++++
 .../maintenance/operator/DeleteFilesProcessor.java |  29 +-
 .../operator/ExpireSnapshotsProcessor.java         |   2 +-
 .../flink/maintenance/operator/LockRemover.java    |  28 +-
 .../flink/maintenance/operator/LogUtil.java        |   9 +-
 .../operator/TableMaintenanceMetrics.java          |  30 +
 .../maintenance/operator/TaskResultAggregator.java | 101 ++++
 .../flink/maintenance/operator/TriggerManager.java |  29 +-
 .../api/MaintenanceTaskInfraExtension.java         |   8 +-
 .../maintenance/api/MaintenanceTaskTestBase.java   |  39 +-
 .../flink/maintenance/api/TestExpireSnapshots.java |  43 +-
 .../flink/maintenance/api/TestMaintenanceE2E.java  |  13 +
 .../maintenance/api/TestRewriteDataFiles.java      | 417 +++++++++++++
 .../flink/maintenance/api/TestZkLockFactory.java   |  39 +-
 .../maintenance/operator/OperatorTestBase.java     | 113 ++++
 .../flink/maintenance/operator/RewriteUtil.java    |  83 +++
 .../operator/TestDataFileRewriteCommitter.java     | 278 +++++++++
 .../operator/TestDataFileRewritePlanner.java       | 193 ++++++
 .../operator/TestDataFileRewriteRunner.java        | 355 +++++++++++
 .../operator/TestDeleteFilesProcessor.java         |   3 +-
 .../iceberg/flink/sink/TestIcebergCommitter.java   |  34 +-
 .../flink/sink/TestIcebergFilesCommitter.java      |  36 +-
 .../apache/iceberg/flink/sink/TestIcebergSink.java |   7 +-
 flink/v1.20/build.gradle                           |   1 -
 .../flink/maintenance/api/ExpireSnapshots.java     |   2 +-
 .../maintenance/api/MaintenanceTaskBuilder.java    |   4 +-
 .../flink/maintenance/api/RewriteDataFiles.java    | 240 ++++++++
 .../flink/maintenance/api/TableMaintenance.java    |   7 +-
 .../flink/maintenance/api/ZkLockFactory.java       | 178 ++++++
 .../operator/DataFileRewriteCommitter.java         | 199 +++++++
 .../operator/DataFileRewritePlanner.java           | 206 +++++++
 .../operator/DataFileRewriteRunner.java            | 253 ++++++++
 .../maintenance/operator/DeleteFilesProcessor.java |  29 +-
 .../operator/ExpireSnapshotsProcessor.java         |   2 +-
 .../flink/maintenance/operator/LockRemover.java    |  28 +-
 .../flink/maintenance/operator/LogUtil.java        |   9 +-
 .../operator/TableMaintenanceMetrics.java          |  30 +
 .../maintenance/operator/TaskResultAggregator.java | 101 ++++
 .../flink/maintenance/operator/TriggerManager.java |  29 +-
 .../api/MaintenanceTaskInfraExtension.java         |   8 +-
 .../maintenance/api/MaintenanceTaskTestBase.java   |  39 +-
 .../flink/maintenance/api/TestExpireSnapshots.java |  43 +-
 .../flink/maintenance/api/TestMaintenanceE2E.java  |  13 +
 .../maintenance/api/TestRewriteDataFiles.java      | 417 +++++++++++++
 .../flink/maintenance/api/TestZkLockFactory.java   |  39 +-
 .../maintenance/operator/OperatorTestBase.java     | 113 ++++
 .../flink/maintenance/operator/RewriteUtil.java    |  83 +++
 .../operator/TestDataFileRewriteCommitter.java     | 278 +++++++++
 .../operator/TestDataFileRewritePlanner.java       | 193 ++++++
 .../operator/TestDataFileRewriteRunner.java        | 355 +++++++++++
 .../operator/TestDeleteFilesProcessor.java         |   3 +-
 .../iceberg/flink/sink/TestIcebergCommitter.java   |  34 +-
 .../flink/sink/TestIcebergFilesCommitter.java      |  36 +-
 .../apache/iceberg/flink/sink/TestIcebergSink.java |   7 +-
 flink/v2.0/build.gradle                            |   4 +-
 .../flink/maintenance/api/ExpireSnapshots.java     |   2 +-
 .../maintenance/api/MaintenanceTaskBuilder.java    |   4 +-
 .../flink/maintenance/api/RewriteDataFiles.java    | 234 ++++++++
 .../flink/maintenance/api/TableMaintenance.java    |   7 +-
 .../flink/maintenance/api/ZkLockFactory.java       | 178 ++++++
 .../operator/DataFileRewriteCommitter.java         | 199 +++++++
 .../operator/DataFileRewritePlanner.java           | 206 +++++++
 .../operator/DataFileRewriteRunner.java            | 253 ++++++++
 .../maintenance/operator/DeleteFilesProcessor.java |  29 +-
 .../operator/ExpireSnapshotsProcessor.java         |   2 +-
 .../flink/maintenance/operator/LockRemover.java    |  28 +-
 .../flink/maintenance/operator/LogUtil.java        |   9 +-
 .../operator/TableMaintenanceMetrics.java          |  30 +
 .../maintenance/operator/TaskResultAggregator.java | 103 ++++
 .../flink/maintenance/operator/TriggerManager.java |  29 +-
 .../iceberg/flink/sink/dynamic/DynamicRecord.java  | 130 ++++
 .../flink/sink/dynamic/DynamicRecordInternal.java  | 166 ++++++
 .../dynamic/DynamicRecordInternalSerializer.java   | 296 +++++++++
 .../sink/dynamic/DynamicRecordInternalType.java    |  96 +++
 .../flink/sink/dynamic/TableSerializerCache.java   | 135 +++++
 .../api/MaintenanceTaskInfraExtension.java         |   8 +-
 .../maintenance/api/MaintenanceTaskTestBase.java   |  39 +-
 .../flink/maintenance/api/TestExpireSnapshots.java |  43 +-
 .../flink/maintenance/api/TestMaintenanceE2E.java  |  13 +
 .../maintenance/api/TestRewriteDataFiles.java      | 417 +++++++++++++
 .../flink/maintenance/api/TestZkLockFactory.java   |  39 +-
 .../maintenance/operator/OperatorTestBase.java     | 113 ++++
 .../flink/maintenance/operator/RewriteUtil.java    |  83 +++
 .../operator/TestDataFileRewriteCommitter.java     | 278 +++++++++
 .../operator/TestDataFileRewritePlanner.java       | 193 ++++++
 .../operator/TestDataFileRewriteRunner.java        | 355 +++++++++++
 .../operator/TestDeleteFilesProcessor.java         |   3 +-
 .../operator/TestTaskResultAggregator.java         |  45 ++
 .../iceberg/flink/sink/TestIcebergCommitter.java   |  34 +-
 .../flink/sink/TestIcebergFilesCommitter.java      |  36 +-
 .../apache/iceberg/flink/sink/TestIcebergSink.java |   7 +-
 .../DynamicRecordInternalSerializerTestBase.java   |  96 +++
 ...DynamicRecordInternalSerializerWriteSchema.java |  14 +-
 ...namicRecordInternalSerializerWriteSchemaId.java |  14 +-
 .../sink/dynamic/TestTableSerializerCache.java     | 124 ++++
 format/spec.md                                     |  94 ++-
 .../java/org/apache/iceberg/gcp/GCPProperties.java |  12 +-
 .../java/org/apache/iceberg/gcp/gcs/GCSFileIO.java | 182 +++---
 .../org/apache/iceberg/gcp/gcs/GCSInputFile.java   |  14 +-
 .../org/apache/iceberg/gcp/gcs/GCSOutputFile.java  |   5 +-
 .../apache/iceberg/gcp/gcs/PrefixedStorage.java    | 121 ++++
 .../org/apache/iceberg/gcp/gcs/GCSFileIOTest.java  | 197 ++++--
 .../iceberg/gcp/gcs/TestPrefixedStorage.java       |  58 ++
 gradle.properties                                  |   2 +-
 gradle/libs.versions.toml                          |  16 +-
 .../org/apache/iceberg/hive/TestHiveMetastore.java |   1 +
 jmh.gradle                                         |   5 +
 kafka-connect/build.gradle                         |   3 +
 .../apache/iceberg/nessie/NessieIcebergClient.java |  10 +
 .../iceberg/nessie/TestBranchVisibility.java       |  13 +-
 .../apache/iceberg/nessie/TestMultipleClients.java |  12 +-
 .../apache/iceberg/nessie/TestNessieCatalog.java   |   7 -
 .../iceberg/nessie/TestNessieIcebergClient.java    |   5 +-
 open-api/requirements.txt                          |   2 +-
 open-api/rest-catalog-open-api.py                  |  21 +-
 open-api/rest-catalog-open-api.yaml                |  51 +-
 .../apache/iceberg/rest/RESTServerExtension.java   |  30 +-
 .../iceberg/TestOrcPartitionStatsHandler.java      |  56 ++
 .../data/parquet/GenericParquetReaders.java        |  13 -
 .../iceberg/data/parquet/GenericParquetWriter.java |  21 -
 .../iceberg/data/parquet/InternalReader.java       |  14 -
 .../iceberg/data/parquet/InternalWriter.java       |  21 -
 .../java/org/apache/iceberg/parquet/Parquet.java   |  77 ++-
 .../iceberg/parquet/ParquetValueReaders.java       |   2 +-
 .../iceberg/parquet/ParquetValueWriters.java       |  12 -
 .../iceberg/TestParquetPartitionStatsHandler.java  |   8 +-
 .../org/apache/iceberg/parquet/TestParquet.java    |  46 ++
 settings.gradle                                    |  14 +
 site/docs/multi-engine-support.md                  |   2 +-
 site/docs/releases.md                              |   2 -
 site/docs/status.md                                |   1 +
 site/requirements.txt                              |   2 +-
 spark/build.gradle                                 |   4 +
 spark/v3.4/build.gradle                            |   7 +-
 .../spark/extensions/TestAddFilesProcedure.java    | 108 ++++
 .../extensions/TestRewriteDataFilesProcedure.java  |   2 +-
 .../extensions/TestRewritePositionDeleteFiles.java |   6 +-
 .../action/IcebergSortCompactionBenchmark.java     |  30 +-
 .../java/org/apache/iceberg/spark/Spark3Util.java  |   3 +-
 .../org/apache/iceberg/spark/SparkTableUtil.java   | 115 +++-
 .../spark/actions/RewriteDataFilesSparkAction.java | 237 ++------
 .../RewritePositionDeleteFilesSparkAction.java     | 208 ++-----
 .../spark/actions/SparkBinPackDataRewriter.java    |  71 ---
 .../actions/SparkBinPackFileRewriteRunner.java     |   0
 .../spark/actions/SparkDataFileRewriteRunner.java  |   0
 .../actions/SparkRewritePositionDeleteRunner.java  |   0
 .../iceberg/spark/actions/SparkRewriteRunner.java  |   0
 .../actions/SparkShufflingDataRewritePlanner.java  |   0
 .../actions/SparkShufflingFileRewriteRunner.java   |   0
 .../spark/actions/SparkSizeBasedDataRewriter.java  |  67 ---
 .../spark/actions/SparkSortDataRewriter.java       |  64 --
 .../spark/actions/SparkSortFileRewriteRunner.java  |   0
 .../spark/actions/SparkZOrderDataRewriter.java     | 205 -------
 .../actions/SparkZOrderFileRewriteRunner.java      |   0
 .../apache/iceberg/spark/data/SparkAvroReader.java | 180 ------
 .../spark/data/vectorized/CometColumnReader.java   |   2 +-
 .../org/apache/iceberg/rest/RESTServerRule.java    | 107 ----
 .../apache/iceberg/spark/SparkCatalogTestBase.java |  72 ---
 .../org/apache/iceberg/spark/SparkTestBase.java    | 287 ---------
 .../iceberg/spark/SparkTestBaseWithCatalog.java    | 182 ------
 .../apache/iceberg/spark/SparkTestHelperBase.java  |  16 +-
 .../iceberg/spark/TestChangelogIterator.java       |  16 +-
 .../iceberg/spark/TestFileRewriteCoordinator.java  |  53 +-
 .../iceberg/spark/TestSparkCachedTableCatalog.java |  29 +-
 .../iceberg/spark/TestSparkCatalogOperations.java  |  52 +-
 .../TestSparkDistributionAndOrderingUtil.java      | 257 ++++----
 .../iceberg/spark/TestSparkExecutorCache.java      |  47 +-
 .../org/apache/iceberg/spark/TestSparkFilters.java |  95 +--
 .../apache/iceberg/spark/TestSparkSchemaUtil.java  |  34 +-
 .../apache/iceberg/spark/TestSparkTableUtil.java   |  35 +-
 .../apache/iceberg/spark/TestSparkV2Filters.java   | 137 +++--
 .../iceberg/spark/TestSparkValueConverter.java     |  12 +-
 .../apache/iceberg/spark/TestSparkWriteConf.java   |  65 +-
 .../spark/actions/TestExpireSnapshotsAction.java   |  11 +-
 .../spark/actions/TestMigrateTableAction.java      |  30 +-
 .../spark/actions/TestRewriteDataFilesAction.java  | 242 ++------
 .../TestRewritePositionDeleteFilesAction.java      |  62 +-
 .../spark/actions/TestSparkFileRewriteRunners.java |   0
 .../spark/actions/TestSparkFileRewriter.java       | 462 ---------------
 .../TestSparkShufflingDataRewritePlanner.java      |   3 +-
 .../apache/iceberg/spark/data/GenericsHelpers.java |  81 +--
 .../org/apache/iceberg/spark/data/TestHelpers.java | 131 ++--
 .../apache/iceberg/spark/data/TestOrcWrite.java    |  16 +-
 .../iceberg/spark/data/TestParquetAvroReader.java  |  26 +-
 .../iceberg/spark/data/TestParquetAvroWriter.java  |  16 +-
 .../iceberg/spark/data/TestSparkAvroEnums.java     |  17 +-
 .../iceberg/spark/data/TestSparkDateTimes.java     |  16 +-
 .../data/TestSparkOrcReadMetadataColumns.java      |  51 +-
 .../data/TestSparkParquetReadMetadataColumns.java  |  55 +-
 .../iceberg/spark/data/TestSparkParquetWriter.java |  53 +-
 ...naryFallbackToPlainEncodingVectorizedReads.java |   8 +-
 .../vectorized/TestParquetVectorizedReads.java     |  18 +-
 .../iceberg/spark/source/TestBaseReader.java       |  88 +--
 .../iceberg/spark/source/TestChangelogReader.java  |  32 +-
 .../spark/source/TestCompressionSettings.java      | 118 ++--
 .../spark/source/TestDataFrameWriterV2.java        |  40 +-
 .../source/TestDataFrameWriterV2Coercion.java      |  56 +-
 .../spark/source/TestDataSourceOptions.java        |  92 +--
 .../iceberg/spark/source/TestFilteredScan.java     | 142 +++--
 .../spark/source/TestForwardCompatibility.java     |  36 +-
 .../source/TestIcebergSourceHadoopTables.java      |  13 +-
 .../spark/source/TestIcebergSourceHiveTables.java  |   8 +-
 .../spark/source/TestIcebergSourceTablesBase.java  | 340 +++++++----
 .../iceberg/spark/source/TestIcebergSpark.java     | 186 +++---
 .../spark/source/TestIdentityPartitionData.java    | 120 ++--
 .../spark/source/TestInternalRowWrapper.java       |  17 +-
 .../source/TestMetadataTableReadableMetrics.java   |  45 +-
 .../TestMetadataTablesWithPartitionEvolution.java  |  89 ++-
 .../iceberg/spark/source/TestPartitionPruning.java | 112 ++--
 .../iceberg/spark/source/TestPartitionValues.java  | 138 +++--
 .../iceberg/spark/source/TestReadProjection.java   | 429 ++++++++------
 .../TestRequiredDistributionAndOrdering.java       |  35 +-
 .../iceberg/spark/source/TestRuntimeFiltering.java |  78 +--
 .../spark/source/TestSnapshotSelection.java        | 180 +++---
 .../iceberg/spark/source/TestSparkAggregates.java  |  16 +-
 .../source/TestSparkCatalogCacheExpiration.java    |  33 +-
 .../source/TestSparkCatalogHadoopOverrides.java    |  66 +--
 .../iceberg/spark/source/TestSparkDataFile.java    |  20 +-
 .../iceberg/spark/source/TestSparkDataWrite.java   | 225 ++++---
 .../spark/source/TestSparkMetadataColumns.java     |  96 +--
 .../spark/source/TestSparkPlanningUtil.java        |  32 +-
 .../iceberg/spark/source/TestSparkReadMetrics.java | 211 +++++--
 .../spark/source/TestSparkReadProjection.java      |  47 +-
 .../source/TestSparkReaderWithBloomFilter.java     |  68 ++-
 .../apache/iceberg/spark/source/TestSparkScan.java | 200 ++++---
 .../iceberg/spark/source/TestSparkStagedScan.java  |  39 +-
 .../iceberg/spark/source/TestSparkTable.java       |  31 +-
 .../iceberg/spark/source/TestStreamingOffset.java  |  14 +-
 .../spark/source/TestStructuredStreaming.java      |  48 +-
 .../spark/source/TestStructuredStreamingRead3.java | 129 ++--
 .../spark/source/TestTimestampWithoutZone.java     |  70 ++-
 .../spark/source/TestWriteMetricsConfig.java       | 103 ++--
 .../spark/sql/PartitionedWritesTestBase.java       | 106 ++--
 .../iceberg/spark/sql/TestPartitionedWrites.java   |  10 +-
 .../spark/sql/TestPartitionedWritesAsSelect.java   |  69 ++-
 .../spark/sql/TestPartitionedWritesToBranch.java   |  10 +-
 .../sql/TestPartitionedWritesToWapBranch.java      |  28 +-
 .../iceberg/spark/sql/TestUnpartitionedWrites.java |  10 +-
 .../spark/sql/TestUnpartitionedWritesToBranch.java |  15 +-
 .../spark/sql/UnpartitionedWritesTestBase.java     | 106 ++--
 spark/v3.5/build.gradle                            |   5 +-
 .../spark/extensions/TestAddFilesProcedure.java    | 108 ++++
 .../extensions/TestRewriteDataFilesProcedure.java  |  52 ++
 .../extensions/TestRewriteManifestsProcedure.java  |  57 ++
 .../java/org/apache/iceberg/spark/Spark3Util.java  |   3 +-
 .../org/apache/iceberg/spark/SparkTableUtil.java   | 119 +++-
 .../spark/actions/RewriteDataFilesSparkAction.java |   3 +-
 .../spark/data/vectorized/CometColumnReader.java   |   2 +-
 .../apache/iceberg/spark/SparkTestHelperBase.java  |   6 +-
 .../iceberg/spark/TestFileRewriteCoordinator.java  |  24 +-
 .../iceberg/spark/TestSparkCachedTableCatalog.java |   3 +
 .../iceberg/spark/TestSparkCatalogOperations.java  |   8 +-
 .../TestSparkDistributionAndOrderingUtil.java      |   3 +
 .../org/apache/iceberg/spark/TestSparkFilters.java |  42 +-
 .../apache/iceberg/spark/TestSparkSchemaUtil.java  |   7 +-
 .../apache/iceberg/spark/TestSparkTableUtil.java   |  18 +-
 .../apache/iceberg/spark/TestSparkV2Filters.java   |  67 ++-
 .../apache/iceberg/spark/TestSparkWriteConf.java   |   3 +
 .../TestSparkShufflingDataRewritePlanner.java      |   3 +-
 .../apache/iceberg/spark/data/GenericsHelpers.java |  44 +-
 .../org/apache/iceberg/spark/data/TestHelpers.java |  44 +-
 .../apache/iceberg/spark/data/TestOrcWrite.java    |   2 +-
 .../iceberg/spark/data/TestSparkDateTimes.java     |   4 +-
 .../iceberg/spark/data/TestSparkParquetWriter.java |   2 +-
 .../iceberg/spark/source/TestChangelogReader.java  |   2 +-
 .../spark/source/TestDataFrameWriterV2.java        |   3 +
 .../spark/source/TestDataSourceOptions.java        |  13 +-
 .../iceberg/spark/source/TestFilteredScan.java     |  21 +-
 .../spark/source/TestForwardCompatibility.java     |   8 +-
 .../source/TestIcebergSourceHadoopTables.java      |   2 +-
 .../spark/source/TestIcebergSourceTablesBase.java  | 157 +++--
 .../iceberg/spark/source/TestIcebergSpark.java     | 165 ++++--
 .../spark/source/TestIdentityPartitionData.java    |  15 +-
 .../source/TestMetadataTableReadableMetrics.java   |   7 +-
 .../iceberg/spark/source/TestPartitionPruning.java |  19 +-
 .../iceberg/spark/source/TestPartitionValues.java  |  37 +-
 .../iceberg/spark/source/TestReadProjection.java   | 116 ++--
 .../TestRequiredDistributionAndOrdering.java       |   3 +
 .../spark/source/TestSnapshotSelection.java        |  25 +-
 .../iceberg/spark/source/TestSparkAggregates.java  |  16 +-
 .../source/TestSparkCatalogCacheExpiration.java    |   3 +
 .../source/TestSparkCatalogHadoopOverrides.java    |   3 +
 .../iceberg/spark/source/TestSparkDataFile.java    |   2 +-
 .../iceberg/spark/source/TestSparkDataWrite.java   |  88 ++-
 .../spark/source/TestSparkMetadataColumns.java     |  15 +
 .../spark/source/TestSparkPlanningUtil.java        |  16 +-
 .../iceberg/spark/source/TestSparkReadMetrics.java | 195 ++++--
 .../apache/iceberg/spark/source/TestSparkScan.java |  88 +--
 .../iceberg/spark/source/TestSparkStagedScan.java  |   3 +
 .../iceberg/spark/source/TestSparkTable.java       |   3 +
 .../spark/source/TestStructuredStreaming.java      |   9 +-
 .../spark/source/TestTimestampWithoutZone.java     |  10 +-
 .../spark/source/TestWriteMetricsConfig.java       |  22 +-
 .../spark/sql/PartitionedWritesTestBase.java       |   3 +
 .../spark/sql/TestPartitionedWritesAsSelect.java   |   3 +
 .../spark/sql/TestPartitionedWritesToBranch.java   |   3 +
 .../sql/TestPartitionedWritesToWapBranch.java      |   8 +-
 .../spark/sql/TestUnpartitionedWritesToBranch.java |   3 +
 .../spark/sql/UnpartitionedWritesTestBase.java     |   3 +
 spark/{v3.5 => v4.0}/build.gradle                  |  19 +-
 .../apache/iceberg/DeleteFileIndexBenchmark.java   |   4 +-
 .../spark/MergeCardinalityCheckBenchmark.java      |   4 +-
 .../apache/iceberg/spark/PlanningBenchmark.java    |   4 +-
 .../iceberg/spark/TaskGroupPlanningBenchmark.java  |   4 +-
 .../iceberg/spark/UpdateProjectionBenchmark.java   |   0
 .../IcebergSqlExtensions.g4                        |   0
 .../extensions/IcebergSparkSessionExtensions.scala |   6 -
 .../spark/sql/catalyst/analysis/CheckViews.scala   |   5 +-
 .../analysis/ProcedureArgumentCoercion.scala       |   7 +-
 .../sql/catalyst/analysis/ResolveProcedures.scala  |  19 +-
 .../spark/sql/catalyst/analysis/ResolveViews.scala |   6 +-
 .../catalyst/analysis/RewriteViewCommands.scala    |  13 +-
 .../spark/sql/catalyst/analysis/ViewUtil.scala     |   0
 .../catalyst/optimizer/ReplaceStaticInvoke.scala   |   2 +-
 .../IcebergSparkSqlExtensionsParser.scala          |  13 +-
 .../IcebergSqlExtensionsAstBuilder.scala           |   8 +-
 .../catalyst/plans/logical/AddPartitionField.scala |   0
 .../sql/catalyst/plans/logical/BranchOptions.scala |   0
 .../plans/logical/CreateOrReplaceBranch.scala      |   0
 .../plans/logical/CreateOrReplaceTag.scala         |   0
 .../sql/catalyst/plans/logical/DropBranch.scala    |   0
 .../plans/logical/DropIdentifierFields.scala       |   0
 .../plans/logical/DropPartitionField.scala         |   0
 .../spark/sql/catalyst/plans/logical/DropTag.scala |   0
 .../sql/catalyst/plans/logical/IcebergCall.scala}  |   4 +-
 .../plans/logical/ReplacePartitionField.scala      |   0
 .../plans/logical/SetIdentifierFields.scala        |   0
 .../sql/catalyst/plans/logical/TagOptions.scala    |   0
 .../sql/catalyst/plans/logical/statements.scala    |   0
 .../plans/logical/views/CreateIcebergView.scala    |   0
 .../plans/logical/views/DropIcebergView.scala      |   0
 .../plans/logical/views/ResolvedV2View.scala       |   0
 .../plans/logical/views/ShowIcebergViews.scala     |   0
 .../datasources/v2/AddPartitionFieldExec.scala     |   0
 .../v2/AlterV2ViewSetPropertiesExec.scala          |   0
 .../v2/AlterV2ViewUnsetPropertiesExec.scala        |   3 +-
 .../sql/execution/datasources/v2/CallExec.scala    |   0
 .../datasources/v2/CreateOrReplaceBranchExec.scala |   0
 .../datasources/v2/CreateOrReplaceTagExec.scala    |   0
 .../datasources/v2/CreateV2ViewExec.scala          |   4 +-
 .../datasources/v2/DescribeV2ViewExec.scala        |   0
 .../execution/datasources/v2/DropBranchExec.scala  |   0
 .../datasources/v2/DropIdentifierFieldsExec.scala  |   0
 .../datasources/v2/DropPartitionFieldExec.scala    |   0
 .../sql/execution/datasources/v2/DropTagExec.scala |   0
 .../execution/datasources/v2/DropV2ViewExec.scala  |   0
 .../v2/ExtendedDataSourceV2Strategy.scala          |  12 +-
 .../datasources/v2/RenameV2ViewExec.scala          |   0
 .../datasources/v2/ReplacePartitionFieldExec.scala |   0
 .../datasources/v2/SetIdentifierFieldsExec.scala   |   0
 .../v2/SetWriteDistributionAndOrderingExec.scala   |   0
 .../datasources/v2/ShowCreateV2ViewExec.scala      |   0
 .../datasources/v2/ShowV2ViewPropertiesExec.scala  |   0
 .../execution/datasources/v2/ShowV2ViewsExec.scala |   3 +-
 .../apache/iceberg/spark/extensions/Employee.java  |   0
 .../spark/extensions/ExtensionsTestBase.java       |   2 +-
 .../iceberg/spark/extensions/ProcedureUtil.java    |   0
 .../iceberg/spark/extensions/SparkPlanUtil.java    |   0
 .../SparkRowLevelOperationsTestBase.java           |   0
 .../spark/extensions/TestAddFilesProcedure.java    | 108 ++++
 .../extensions/TestAlterTablePartitionFields.java  |   0
 .../spark/extensions/TestAlterTableSchema.java     |   0
 .../spark/extensions/TestAncestorsOfProcedure.java |   0
 .../iceberg/spark/extensions/TestBranchDDL.java    |   0
 .../spark/extensions/TestCallStatementParser.java  |  13 -
 .../spark/extensions/TestChangelogTable.java       |   0
 .../TestCherrypickSnapshotProcedure.java           |  12 +-
 .../extensions/TestComputeTableStatsProcedure.java |   0
 .../spark/extensions/TestConflictValidation.java   |   0
 .../spark/extensions/TestCopyOnWriteDelete.java    |   0
 .../spark/extensions/TestCopyOnWriteMerge.java     |   0
 .../spark/extensions/TestCopyOnWriteUpdate.java    |   0
 .../TestCreateChangelogViewProcedure.java          |   0
 .../iceberg/spark/extensions/TestDelete.java       |   0
 .../extensions/TestExpireSnapshotsProcedure.java   |  11 +-
 .../extensions/TestFastForwardBranchProcedure.java |  11 +-
 .../apache/iceberg/spark/extensions/TestMerge.java |  30 +-
 .../spark/extensions/TestMergeOnReadDelete.java    |   0
 .../spark/extensions/TestMergeOnReadMerge.java     |   0
 .../spark/extensions/TestMergeOnReadUpdate.java    |   0
 .../TestMetaColumnProjectionWithStageScan.java     |   0
 .../spark/extensions/TestMetadataTables.java       |   0
 .../extensions/TestMigrateTableProcedure.java      |   0
 .../extensions/TestPublishChangesProcedure.java    |  12 +-
 .../extensions/TestRegisterTableProcedure.java     |   0
 .../extensions/TestRemoveOrphanFilesProcedure.java |  12 +-
 .../spark/extensions/TestReplaceBranch.java        |   0
 .../TestRequiredDistributionAndOrdering.java       |   0
 .../extensions/TestRewriteDataFilesProcedure.java  |  65 +-
 .../extensions/TestRewriteManifestsProcedure.java  |  68 ++-
 .../extensions/TestRewritePositionDeleteFiles.java |   0
 .../TestRewritePositionDeleteFilesProcedure.java   |   2 +-
 .../extensions/TestRewriteTablePathProcedure.java  |   0
 .../TestRollbackToSnapshotProcedure.java           |  12 +-
 .../TestRollbackToTimestampProcedure.java          |  12 +-
 .../TestSetCurrentSnapshotProcedure.java           |  12 +-
 .../TestSetWriteDistributionAndOrdering.java       |   0
 .../extensions/TestSnapshotTableProcedure.java     |   0
 ...toragePartitionedJoinsInRowLevelOperations.java |   0
 .../extensions/TestSystemFunctionPushDownDQL.java  |   0
 ...SystemFunctionPushDownInRowLevelOperations.java |  23 +-
 .../iceberg/spark/extensions/TestTagDDL.java       |   0
 .../iceberg/spark/extensions/TestUpdate.java       |  12 +-
 .../apache/iceberg/spark/extensions/TestViews.java |  27 +-
 .../iceberg/spark/extensions/TestWriteAborts.java  |   0
 .../org/apache/iceberg/spark/source/PlanUtils.java |   0
 spark/{v3.4 => v4.0}/spark-runtime/LICENSE         |   0
 spark/{v3.4 => v4.0}/spark-runtime/NOTICE          |   0
 .../java/org/apache/iceberg/spark/SmokeTest.java   |   0
 .../apache/iceberg/spark/SparkBenchmarkUtil.java   |   0
 .../spark/action/DeleteOrphanFilesBenchmark.java   |   4 +-
 .../action/IcebergSortCompactionBenchmark.java     |   0
 .../iceberg/spark/action/RandomGeneratingUDF.java  |   0
 .../SparkParquetReadersFlatDataBenchmark.java      |   4 +-
 .../SparkParquetReadersNestedDataBenchmark.java    |   4 +-
 .../SparkParquetWritersFlatDataBenchmark.java      |   4 +-
 .../SparkParquetWritersNestedDataBenchmark.java    |   4 +-
 .../org/apache/iceberg/spark/source/Action.java    |   0
 .../iceberg/spark/source/DVReaderBenchmark.java    |   0
 .../iceberg/spark/source/DVWriterBenchmark.java    |   0
 .../spark/source/IcebergSourceBenchmark.java       |   0
 .../spark/source/IcebergSourceDeleteBenchmark.java |   0
 .../source/IcebergSourceFlatDataBenchmark.java     |   0
 .../source/IcebergSourceNestedDataBenchmark.java   |   0
 .../IcebergSourceNestedListDataBenchmark.java      |   0
 .../iceberg/spark/source/WritersBenchmark.java     |   0
 .../spark/source/avro/AvroWritersBenchmark.java    |   4 +-
 .../IcebergSourceFlatAvroDataReadBenchmark.java    |   4 +-
 .../IcebergSourceNestedAvroDataReadBenchmark.java  |   4 +-
 .../orc/IcebergSourceFlatORCDataBenchmark.java     |   0
 .../orc/IcebergSourceFlatORCDataReadBenchmark.java |   4 +-
 ...ebergSourceNestedListORCDataWriteBenchmark.java |   4 +-
 .../IcebergSourceNestedORCDataReadBenchmark.java   |   4 +-
 ...cebergSourceFlatParquetDataFilterBenchmark.java |   4 +-
 .../IcebergSourceFlatParquetDataReadBenchmark.java |   4 +-
 ...IcebergSourceFlatParquetDataWriteBenchmark.java |   4 +-
 ...gSourceNestedListParquetDataWriteBenchmark.java |   4 +-
 ...bergSourceNestedParquetDataFilterBenchmark.java |   4 +-
 ...cebergSourceNestedParquetDataReadBenchmark.java |   4 +-
 ...ebergSourceNestedParquetDataWriteBenchmark.java |   4 +-
 .../IcebergSourceParquetEqDeleteBenchmark.java     |   4 +-
 ...ebergSourceParquetMultiDeleteFileBenchmark.java |   4 +-
 .../IcebergSourceParquetPosDeleteBenchmark.java    |   4 +-
 ...gSourceParquetWithUnrelatedDeleteBenchmark.java |   4 +-
 .../source/parquet/ParquetWritersBenchmark.java    |   4 +-
 ...dDictionaryEncodedFlatParquetDataBenchmark.java |   4 +-
 .../VectorizedReadFlatParquetDataBenchmark.java    |   4 +-
 .../VectorizedReadParquetDecimalBenchmark.java     |   4 +-
 .../apache/iceberg/SparkDistributedDataScan.java   |   0
 .../java/org/apache/iceberg/spark/BaseCatalog.java |   0
 .../iceberg/spark/BaseFileRewriteCoordinator.java  |   0
 .../apache/iceberg/spark/ChangelogIterator.java    |   0
 .../org/apache/iceberg/spark/CommitMetadata.java   |   0
 .../iceberg/spark/ComputeUpdateIterator.java       |   0
 .../org/apache/iceberg/spark/ExtendedParser.java   |   0
 .../iceberg/spark/FileRewriteCoordinator.java      |   0
 .../org/apache/iceberg/spark/IcebergSpark.java     |   0
 .../org/apache/iceberg/spark/JobGroupInfo.java     |   0
 .../org/apache/iceberg/spark/JobGroupUtils.java    |   0
 .../org/apache/iceberg/spark/OrcBatchReadConf.java |   0
 .../apache/iceberg/spark/ParquetBatchReadConf.java |   0
 .../apache/iceberg/spark/ParquetReaderType.java    |   0
 .../org/apache/iceberg/spark/PathIdentifier.java   |   0
 .../spark/PositionDeletesRewriteCoordinator.java   |   0
 .../spark/PruneColumnsWithoutReordering.java       |   0
 .../iceberg/spark/RemoveCarryoverIterator.java     |   0
 .../iceberg/spark/RemoveNetCarryoverIterator.java  |   0
 .../apache/iceberg/spark/RollbackStagedTable.java  |   0
 .../apache/iceberg/spark/ScanTaskSetManager.java   |   0
 .../org/apache/iceberg/spark/SortOrderToSpark.java |   0
 .../java/org/apache/iceberg/spark/Spark3Util.java  |   3 +-
 .../org/apache/iceberg/spark/SparkAggregates.java  |   0
 .../iceberg/spark/SparkCachedTableCatalog.java     |   0
 .../org/apache/iceberg/spark/SparkCatalog.java     |  26 +-
 .../apache/iceberg/spark/SparkCompressionUtil.java |   0
 .../org/apache/iceberg/spark/SparkConfParser.java  |   2 +-
 .../org/apache/iceberg/spark/SparkContentFile.java |   0
 .../org/apache/iceberg/spark/SparkDataFile.java    |   0
 .../org/apache/iceberg/spark/SparkDeleteFile.java  |   0
 .../apache/iceberg/spark/SparkExceptionUtil.java   |   0
 .../apache/iceberg/spark/SparkExecutorCache.java   |   0
 .../org/apache/iceberg/spark/SparkFilters.java     |   0
 .../org/apache/iceberg/spark/SparkFixupTypes.java  |   0
 .../apache/iceberg/spark/SparkFunctionCatalog.java |   0
 .../org/apache/iceberg/spark/SparkReadConf.java    |   0
 .../org/apache/iceberg/spark/SparkReadOptions.java |   0
 .../apache/iceberg/spark/SparkSQLProperties.java   |   0
 .../org/apache/iceberg/spark/SparkSchemaUtil.java  |   0
 .../apache/iceberg/spark/SparkSessionCatalog.java  |  39 +-
 .../org/apache/iceberg/spark/SparkStructLike.java  |   0
 .../org/apache/iceberg/spark/SparkTableCache.java  |   0
 .../org/apache/iceberg/spark/SparkTableUtil.java   | 135 ++++-
 .../org/apache/iceberg/spark/SparkTypeToType.java  |   0
 .../org/apache/iceberg/spark/SparkTypeVisitor.java |   0
 .../java/org/apache/iceberg/spark/SparkUtil.java   |   3 +-
 .../org/apache/iceberg/spark/SparkV2Filters.java   |   0
 .../apache/iceberg/spark/SparkValueConverter.java  |   0
 .../org/apache/iceberg/spark/SparkWriteConf.java   |   0
 .../apache/iceberg/spark/SparkWriteOptions.java    |   0
 .../iceberg/spark/SparkWriteRequirements.java      |   0
 .../org/apache/iceberg/spark/SparkWriteUtil.java   |   0
 .../apache/iceberg/spark/SupportsFunctions.java    |   4 +-
 .../apache/iceberg/spark/SupportsReplaceView.java  |   0
 .../org/apache/iceberg/spark/TypeToSparkType.java  |   0
 .../actions/BaseSnapshotUpdateSparkAction.java     |   0
 .../iceberg/spark/actions/BaseSparkAction.java     |   0
 .../actions/BaseTableCreationSparkAction.java      |   0
 .../actions/ComputeTableStatsSparkAction.java      |   0
 .../actions/DeleteOrphanFilesSparkAction.java      |   0
 .../actions/DeleteReachableFilesSparkAction.java   |   0
 .../spark/actions/ExpireSnapshotsSparkAction.java  |   0
 .../org/apache/iceberg/spark/actions/FileInfo.java |   0
 .../iceberg/spark/actions/ManifestFileBean.java    |   0
 .../spark/actions/MigrateTableSparkAction.java     |   0
 .../iceberg/spark/actions/NDVSketchUtil.java       |   3 +-
 .../actions/RemoveDanglingDeletesSparkAction.java  |   0
 .../spark/actions/RewriteDataFilesSparkAction.java |   2 +-
 .../spark/actions/RewriteManifestsSparkAction.java |   0
 .../RewritePositionDeleteFilesSparkAction.java     |   0
 .../spark/actions/RewriteTablePathSparkAction.java |   0
 .../iceberg/spark/actions/SetAccumulator.java      |   0
 .../spark/actions/SnapshotTableSparkAction.java    |   0
 .../apache/iceberg/spark/actions/SparkActions.java |   0
 .../actions/SparkBinPackFileRewriteRunner.java     |   0
 .../spark/actions/SparkDataFileRewriteRunner.java  |   0
 .../actions/SparkRewritePositionDeleteRunner.java} |  41 +-
 .../iceberg/spark/actions/SparkRewriteRunner.java  |   0
 .../actions/SparkShufflingDataRewritePlanner.java  |   0
 .../actions/SparkShufflingFileRewriteRunner.java}  |  78 ++-
 .../spark/actions/SparkSortFileRewriteRunner.java  |   0
 .../actions/SparkZOrderFileRewriteRunner.java      |   0
 .../iceberg/spark/actions/SparkZOrderUDF.java      |   0
 .../spark/data/AvroWithSparkSchemaVisitor.java     |   0
 .../spark/data/ParquetWithSparkSchemaVisitor.java  |   0
 .../apache/iceberg/spark/data/SparkAvroWriter.java |   0
 .../apache/iceberg/spark/data/SparkOrcReader.java  |   0
 .../iceberg/spark/data/SparkOrcValueReaders.java   |   0
 .../iceberg/spark/data/SparkOrcValueWriters.java   |   0
 .../apache/iceberg/spark/data/SparkOrcWriter.java  |   0
 .../iceberg/spark/data/SparkParquetReaders.java    |   6 +
 .../iceberg/spark/data/SparkParquetWriters.java    |   0
 .../iceberg/spark/data/SparkPlannedAvroReader.java |   0
 .../iceberg/spark/data/SparkValueReaders.java      |   0
 .../iceberg/spark/data/SparkValueWriters.java      |   0
 .../vectorized/ArrowVectorAccessorFactory.java     |   0
 .../data/vectorized/ArrowVectorAccessors.java      |   0
 .../spark/data/vectorized/ColumnVectorBuilder.java |   0
 .../data/vectorized/ColumnVectorWithFilter.java    |   0
 .../spark/data/vectorized/ColumnarBatchReader.java |   0
 .../spark/data/vectorized/ColumnarBatchUtil.java   |   0
 .../spark/data/vectorized/CometColumnReader.java   |   2 +-
 .../data/vectorized/CometColumnarBatchReader.java  |   0
 .../data/vectorized/CometConstantColumnReader.java |   0
 .../data/vectorized/CometDeleteColumnReader.java   |   0
 .../data/vectorized/CometPositionColumnReader.java |   0
 .../vectorized/CometVectorizedReaderBuilder.java   |   0
 .../data/vectorized/ConstantColumnVector.java      |   0
 .../spark/data/vectorized/DeletedColumnVector.java |   0
 .../data/vectorized/IcebergArrowColumnVector.java  |   0
 .../data/vectorized/RowPositionColumnVector.java   |   0
 .../data/vectorized/VectorizedSparkOrcReaders.java |   0
 .../vectorized/VectorizedSparkParquetReaders.java  |   0
 .../spark/functions/BaseScalarFunction.java        |   0
 .../iceberg/spark/functions/BucketFunction.java    |   0
 .../iceberg/spark/functions/DaysFunction.java      |   0
 .../iceberg/spark/functions/HoursFunction.java     |   0
 .../spark/functions/IcebergVersionFunction.java    |   0
 .../iceberg/spark/functions/MonthsFunction.java    |   0
 .../iceberg/spark/functions/SparkFunctions.java    |   0
 .../iceberg/spark/functions/TruncateFunction.java  |   0
 .../spark/functions/UnaryUnboundFunction.java      |   0
 .../iceberg/spark/functions/YearsFunction.java     |   0
 .../spark/procedures/AddFilesProcedure.java        |   0
 .../spark/procedures/AncestorsOfProcedure.java     |   0
 .../iceberg/spark/procedures/BaseProcedure.java    |   2 +-
 .../procedures/CherrypickSnapshotProcedure.java    |   0
 .../procedures/ComputeTableStatsProcedure.java     |   0
 .../procedures/CreateChangelogViewProcedure.java   |  16 +-
 .../spark/procedures/ExpireSnapshotsProcedure.java |   0
 .../procedures/FastForwardBranchProcedure.java     |   0
 .../spark/procedures/MigrateTableProcedure.java    |   0
 .../iceberg/spark/procedures/ProcedureInput.java   |   0
 .../spark/procedures/PublishChangesProcedure.java  |   0
 .../spark/procedures/RegisterTableProcedure.java   |   0
 .../procedures/RemoveOrphanFilesProcedure.java     |   0
 .../procedures/RewriteDataFilesProcedure.java      |   0
 .../procedures/RewriteManifestsProcedure.java      |   0
 .../RewritePositionDeleteFilesProcedure.java       |   0
 .../procedures/RewriteTablePathProcedure.java      |   0
 .../procedures/RollbackToSnapshotProcedure.java    |   0
 .../procedures/RollbackToTimestampProcedure.java   |   0
 .../procedures/SetCurrentSnapshotProcedure.java    |   0
 .../spark/procedures/SnapshotTableProcedure.java   |   0
 .../iceberg/spark/procedures/SparkProcedures.java  |   0
 .../iceberg/spark/source/BaseBatchReader.java      |   0
 .../apache/iceberg/spark/source/BaseReader.java    |   0
 .../apache/iceberg/spark/source/BaseRowReader.java |   0
 .../iceberg/spark/source/BatchDataReader.java      |   0
 .../iceberg/spark/source/ChangelogRowReader.java   |   0
 .../apache/iceberg/spark/source/DVIterator.java    |   0
 .../spark/source/EqualityDeleteRowReader.java      |   0
 .../iceberg/spark/source/HasIcebergCatalog.java    |   0
 .../apache/iceberg/spark/source/IcebergSource.java |   4 +-
 .../iceberg/spark/source/InternalRowWrapper.java   |   0
 .../spark/source/PositionDeletesRowReader.java     |   0
 .../apache/iceberg/spark/source/RowDataReader.java |   0
 .../spark/source/SerializableTableWithSize.java    |   0
 .../apache/iceberg/spark/source/SparkBatch.java    |   0
 .../iceberg/spark/source/SparkBatchQueryScan.java  |   0
 .../iceberg/spark/source/SparkChangelogScan.java   |   0
 .../iceberg/spark/source/SparkChangelogTable.java  |   2 +-
 .../iceberg/spark/source/SparkCleanupUtil.java     |   0
 .../spark/source/SparkColumnStatistics.java        |   0
 .../spark/source/SparkColumnarReaderFactory.java   |   0
 .../spark/source/SparkCopyOnWriteOperation.java    |   0
 .../iceberg/spark/source/SparkCopyOnWriteScan.java |   0
 .../spark/source/SparkFileWriterFactory.java       |   0
 .../iceberg/spark/source/SparkInputPartition.java  |   0
 .../iceberg/spark/source/SparkLocalScan.java       |   0
 .../iceberg/spark/source/SparkMetadataColumn.java  |   0
 .../spark/source/SparkMicroBatchStream.java        |   0
 .../spark/source/SparkPartitionedFanoutWriter.java |   0
 .../spark/source/SparkPartitionedWriter.java       |   0
 .../spark/source/SparkPartitioningAwareScan.java   |   0
 .../iceberg/spark/source/SparkPlanningUtil.java    |   0
 .../spark/source/SparkPositionDeletesRewrite.java  |   0
 .../source/SparkPositionDeletesRewriteBuilder.java |   0
 .../spark/source/SparkPositionDeltaOperation.java  |   5 +
 .../spark/source/SparkPositionDeltaWrite.java      |   0
 .../source/SparkPositionDeltaWriteBuilder.java     |   8 +-
 .../source/SparkRowLevelOperationBuilder.java      |   0
 .../spark/source/SparkRowReaderFactory.java        |   0
 .../org/apache/iceberg/spark/source/SparkScan.java |   0
 .../iceberg/spark/source/SparkScanBuilder.java     |   0
 .../iceberg/spark/source/SparkStagedScan.java      |   0
 .../spark/source/SparkStagedScanBuilder.java       |   0
 .../apache/iceberg/spark/source/SparkTable.java    |  29 +-
 .../org/apache/iceberg/spark/source/SparkView.java |   0
 .../apache/iceberg/spark/source/SparkWrite.java    |   0
 .../iceberg/spark/source/SparkWriteBuilder.java    |   1 +
 .../iceberg/spark/source/StagedSparkTable.java     |   0
 .../org/apache/iceberg/spark/source/Stats.java     |   0
 .../iceberg/spark/source/StreamingOffset.java      |   0
 .../iceberg/spark/source/StructInternalRow.java    |   6 +
 .../spark/source/metrics/EqualityDeleteFiles.java  |   0
 .../spark/source/metrics/IndexedDeleteFiles.java   |   0
 .../iceberg/spark/source/metrics/NumDeletes.java   |   0
 .../iceberg/spark/source/metrics/NumSplits.java    |   0
 .../source/metrics/PositionalDeleteFiles.java      |   0
 .../spark/source/metrics/ResultDataFiles.java      |   0
 .../spark/source/metrics/ResultDeleteFiles.java    |   0
 .../spark/source/metrics/ScannedDataManifests.java |   0
 .../source/metrics/ScannedDeleteManifests.java     |   0
 .../spark/source/metrics/SkippedDataFiles.java     |   0
 .../spark/source/metrics/SkippedDataManifests.java |   0
 .../spark/source/metrics/SkippedDeleteFiles.java   |   0
 .../source/metrics/SkippedDeleteManifests.java     |   0
 .../source/metrics/TaskEqualityDeleteFiles.java    |   0
 .../source/metrics/TaskIndexedDeleteFiles.java     |   0
 .../spark/source/metrics/TaskNumDeletes.java       |   0
 .../spark/source/metrics/TaskNumSplits.java        |   0
 .../source/metrics/TaskPositionalDeleteFiles.java  |   0
 .../spark/source/metrics/TaskResultDataFiles.java  |   0
 .../source/metrics/TaskResultDeleteFiles.java      |   0
 .../source/metrics/TaskScannedDataManifests.java   |   0
 .../source/metrics/TaskScannedDeleteManifests.java |   0
 .../spark/source/metrics/TaskSkippedDataFiles.java |   0
 .../source/metrics/TaskSkippedDataManifests.java   |   0
 .../source/metrics/TaskSkippedDeleteFiles.java     |   0
 .../source/metrics/TaskSkippedDeleteManifests.java |   0
 .../source/metrics/TaskTotalDataFileSize.java      |   0
 .../source/metrics/TaskTotalDataManifests.java     |   0
 .../source/metrics/TaskTotalDeleteFileSize.java    |   0
 .../source/metrics/TaskTotalDeleteManifests.java   |   0
 .../source/metrics/TaskTotalPlanningDuration.java  |   0
 .../spark/source/metrics/TotalDataFileSize.java    |   0
 .../spark/source/metrics/TotalDataManifests.java   |   0
 .../spark/source/metrics/TotalDeleteFileSize.java  |   0
 .../spark/source/metrics/TotalDeleteManifests.java |   0
 .../source/metrics/TotalPlanningDuration.java      |   0
 .../analysis/IcebergAnalysisException.java}        |   9 +-
 .../analysis/NoSuchProcedureException.java         |   0
 .../sql/connector/iceberg/catalog/Procedure.java   |   0
 .../iceberg/catalog/ProcedureCatalog.java          |   0
 .../iceberg/catalog/ProcedureParameter.java        |   0
 .../iceberg/catalog/ProcedureParameterImpl.java    |   0
 ...org.apache.spark.sql.sources.DataSourceRegister |   0
 .../plans/logical/OrderAwareCoalesce.scala         |   0
 .../logical/SetWriteDistributionAndOrdering.scala  |   0
 .../plans/logical/SortOrderParserUtil.scala        |   0
 .../spark/sql/catalyst/utils/PlanUtils.scala       |   0
 .../sql/execution/OrderAwareCoalesceExec.scala     |   0
 .../datasources/SparkExpressionConverter.scala     |  12 +-
 .../apache/spark/sql/stats/ThetaSketchAgg.scala    |   3 +-
 .../test/java/org/apache/iceberg/KryoHelpers.java  |   0
 .../iceberg/SparkDistributedDataScanTestBase.java  |   0
 .../java/org/apache/iceberg/TaskCheckHelper.java   |   0
 .../apache/iceberg/TestDataFileSerialization.java  |   0
 .../apache/iceberg/TestFileIOSerialization.java    |   0
 .../TestHadoopMetricsContextSerialization.java     |   0
 .../iceberg/TestManifestFileSerialization.java     |   0
 .../apache/iceberg/TestScanTaskSerialization.java  |   0
 .../TestSparkDistributedDataScanDeletes.java       |   0
 .../TestSparkDistributedDataScanFilterFiles.java   |   0
 ...tSparkDistributedDataScanJavaSerialization.java |   0
 ...tSparkDistributedDataScanKryoSerialization.java |   0
 .../TestSparkDistributedDataScanReporting.java     |   0
 .../org/apache/iceberg/TestTableSerialization.java |   0
 .../java/org/apache/iceberg/ValidationHelpers.java |   0
 .../org/apache/iceberg/spark/CatalogTestBase.java  |   0
 .../java/org/apache/iceberg/spark/Employee.java    |   0
 .../apache/iceberg/spark/SparkCatalogConfig.java   |   0
 .../apache/iceberg/spark/SparkTestHelperBase.java  |   6 +-
 .../spark/SystemFunctionPushDownHelper.java        |   0
 .../java/org/apache/iceberg/spark/TestBase.java    |   0
 .../apache/iceberg/spark/TestBaseWithCatalog.java  |   0
 .../iceberg/spark/TestChangelogIterator.java       |   0
 .../iceberg/spark/TestFileRewriteCoordinator.java  |  24 +-
 .../apache/iceberg/spark/TestFunctionCatalog.java  |   8 +-
 .../org/apache/iceberg/spark/TestSpark3Util.java   |   0
 .../iceberg/spark/TestSparkCachedTableCatalog.java |   3 +
 .../iceberg/spark/TestSparkCatalogOperations.java  |   8 +-
 .../iceberg/spark/TestSparkCompressionUtil.java    |   0
 .../TestSparkDistributionAndOrderingUtil.java      |   3 +
 .../iceberg/spark/TestSparkExecutorCache.java      |   0
 .../org/apache/iceberg/spark/TestSparkFilters.java |  42 +-
 .../apache/iceberg/spark/TestSparkSchemaUtil.java  |   7 +-
 .../iceberg/spark/TestSparkSessionCatalog.java     |   0
 .../apache/iceberg/spark/TestSparkTableUtil.java   |  18 +-
 .../apache/iceberg/spark/TestSparkV2Filters.java   |  67 ++-
 .../iceberg/spark/TestSparkValueConverter.java     |   0
 .../apache/iceberg/spark/TestSparkWriteConf.java   |   3 +
 .../spark/actions/TestComputeTableStatsAction.java |   9 +-
 .../iceberg/spark/actions/TestCreateActions.java   |   0
 .../actions/TestDeleteReachableFilesAction.java    |   0
 .../spark/actions/TestExpireSnapshotsAction.java   |   0
 .../spark/actions/TestMigrateTableAction.java      |   0
 .../actions/TestRemoveDanglingDeleteAction.java    |   0
 .../spark/actions/TestRemoveOrphanFilesAction.java |   0
 .../actions/TestRemoveOrphanFilesAction3.java      |   0
 .../spark/actions/TestRewriteDataFilesAction.java  |   1 +
 .../spark/actions/TestRewriteManifestsAction.java  |   0
 .../TestRewritePositionDeleteFilesAction.java      |   0
 .../spark/actions/TestRewriteTablePathsAction.java |   0
 .../spark/actions/TestSnapshotTableAction.java     |   0
 .../spark/actions/TestSparkFileRewriteRunners.java |   0
 .../TestSparkShufflingDataRewritePlanner.java      |   3 +-
 .../apache/iceberg/spark/data/AvroDataTest.java    |   0
 .../apache/iceberg/spark/data/GenericsHelpers.java |  44 +-
 .../org/apache/iceberg/spark/data/RandomData.java  |   0
 .../org/apache/iceberg/spark/data/TestHelpers.java |  44 +-
 .../apache/iceberg/spark/data/TestOrcWrite.java    |   2 +-
 .../iceberg/spark/data/TestParquetAvroReader.java  |   0
 .../iceberg/spark/data/TestParquetAvroWriter.java  |   0
 .../iceberg/spark/data/TestSparkAvroEnums.java     |   0
 .../iceberg/spark/data/TestSparkAvroReader.java    |   0
 .../iceberg/spark/data/TestSparkDateTimes.java     |   4 +-
 .../data/TestSparkOrcReadMetadataColumns.java      |   0
 .../iceberg/spark/data/TestSparkOrcReader.java     |   0
 .../data/TestSparkParquetReadMetadataColumns.java  |   0
 .../iceberg/spark/data/TestSparkParquetReader.java |   0
 .../iceberg/spark/data/TestSparkParquetWriter.java |   2 +-
 .../spark/data/TestSparkRecordOrcReaderWriter.java |   0
 .../spark/data/TestVectorizedOrcDataReader.java    |   0
 ...estParquetDictionaryEncodedVectorizedReads.java |   0
 ...naryFallbackToPlainEncodingVectorizedReads.java |   0
 .../vectorized/TestParquetVectorizedReads.java     |   0
 .../spark/functions/TestSparkFunctions.java        |   0
 .../apache/iceberg/spark/source/ComplexRecord.java |   0
 .../spark/source/DataFrameWriteTestBase.java       |   9 +-
 .../spark/source/FilePathLastModifiedRecord.java   |   0
 .../iceberg/spark/source/FourColumnRecord.java     |   0
 .../apache/iceberg/spark/source/LogMessage.java    |   0
 .../apache/iceberg/spark/source/ManualSource.java  |   0
 .../apache/iceberg/spark/source/NestedRecord.java  |   0
 .../apache/iceberg/spark/source/ScanTestBase.java  |   0
 .../apache/iceberg/spark/source/SimpleRecord.java  |   0
 .../spark/source/SparkSQLExecutionHelper.java      |   0
 .../spark/source/TestAvroDataFrameWrite.java       |   0
 .../apache/iceberg/spark/source/TestAvroScan.java  |   0
 .../iceberg/spark/source/TestBaseReader.java       |   0
 .../iceberg/spark/source/TestChangelogReader.java  |   2 +-
 .../spark/source/TestCompressionSettings.java      |   0
 .../spark/source/TestDataFrameWriterV2.java        |  11 +-
 .../source/TestDataFrameWriterV2Coercion.java      |   0
 .../spark/source/TestDataSourceOptions.java        |  13 +-
 .../iceberg/spark/source/TestFilteredScan.java     |  21 +-
 .../spark/source/TestForwardCompatibility.java     |  10 +-
 .../iceberg/spark/source/TestIcebergSource.java    |   0
 .../source/TestIcebergSourceHadoopTables.java      |   2 +-
 .../spark/source/TestIcebergSourceHiveTables.java  |   0
 .../spark/source/TestIcebergSourceTablesBase.java  | 157 +++--
 .../iceberg/spark/source/TestIcebergSpark.java     | 165 ++++--
 .../spark/source/TestIdentityPartitionData.java    |  15 +-
 .../spark/source/TestInternalRowWrapper.java       |   0
 .../source/TestMetadataTableReadableMetrics.java   |   7 +-
 .../TestMetadataTablesWithPartitionEvolution.java  |   0
 .../spark/source/TestORCDataFrameWrite.java        |   0
 .../spark/source/TestParquetDataFrameWrite.java    |   0
 .../iceberg/spark/source/TestParquetScan.java      |   0
 .../spark/source/TestParquetVectorizedScan.java    |   0
 .../iceberg/spark/source/TestPartitionPruning.java |  30 +-
 .../iceberg/spark/source/TestPartitionValues.java  |  37 +-
 .../iceberg/spark/source/TestPathIdentifier.java   |   0
 .../spark/source/TestPositionDeletesReader.java    |   0
 .../spark/source/TestPositionDeletesTable.java     |  27 +-
 .../iceberg/spark/source/TestReadProjection.java   | 116 ++--
 .../TestRequiredDistributionAndOrdering.java       |   0
 .../iceberg/spark/source/TestRuntimeFiltering.java |   0
 .../spark/source/TestSnapshotSelection.java        |  25 +-
 .../iceberg/spark/source/TestSparkAggregates.java  |  16 +-
 .../iceberg/spark/source/TestSparkCatalog.java     |   0
 .../source/TestSparkCatalogCacheExpiration.java    |   3 +
 .../source/TestSparkCatalogHadoopOverrides.java    |   0
 .../iceberg/spark/source/TestSparkDVWriters.java   |   0
 .../iceberg/spark/source/TestSparkDataFile.java    |  13 +-
 .../iceberg/spark/source/TestSparkDataWrite.java   |  88 ++-
 .../spark/source/TestSparkFileWriterFactory.java   |   0
 .../spark/source/TestSparkMetadataColumns.java     |  23 +
 .../spark/source/TestSparkPartitioningWriters.java |   0
 .../spark/source/TestSparkPlanningUtil.java        |  16 +-
 .../source/TestSparkPositionDeltaWriters.java      |   0
 .../iceberg/spark/source/TestSparkReadMetrics.java | 279 +++++++++
 .../spark/source/TestSparkReadProjection.java      |   0
 .../spark/source/TestSparkReaderDeletes.java       |   0
 .../source/TestSparkReaderWithBloomFilter.java     |   0
 .../spark/source/TestSparkRollingFileWriters.java  |   0
 .../apache/iceberg/spark/source/TestSparkScan.java |  88 +--
 .../iceberg/spark/source/TestSparkStagedScan.java  |   0
 .../iceberg/spark/source/TestSparkTable.java       |   0
 .../spark/source/TestSparkWriterMetrics.java       |   0
 .../iceberg/spark/source/TestStreamingOffset.java  |   0
 .../spark/source/TestStructuredStreaming.java      |   9 +-
 .../spark/source/TestStructuredStreamingRead3.java |   0
 .../apache/iceberg/spark/source/TestTables.java    |   0
 .../spark/source/TestTimestampWithoutZone.java     |  10 +-
 .../spark/source/TestWriteMetricsConfig.java       |  31 +-
 .../iceberg/spark/source/ThreeColumnRecord.java    |   0
 .../spark/sql/PartitionedWritesTestBase.java       |   3 +
 .../iceberg/spark/sql/TestAggregatePushDown.java   |   2 +-
 .../apache/iceberg/spark/sql/TestAlterTable.java   |   0
 .../apache/iceberg/spark/sql/TestCreateTable.java  |   0
 .../iceberg/spark/sql/TestCreateTableAsSelect.java |   0
 .../apache/iceberg/spark/sql/TestDeleteFrom.java   |   0
 .../apache/iceberg/spark/sql/TestDropTable.java    |   0
 .../iceberg/spark/sql/TestFilterPushDown.java      |   0
 .../apache/iceberg/spark/sql/TestNamespaceSQL.java |   0
 .../iceberg/spark/sql/TestPartitionedWrites.java   |   0
 .../spark/sql/TestPartitionedWritesAsSelect.java   |   3 +
 .../spark/sql/TestPartitionedWritesToBranch.java   |   3 +
 .../sql/TestPartitionedWritesToWapBranch.java      |   8 +-
 .../apache/iceberg/spark/sql/TestRefreshTable.java |   8 +-
 .../org/apache/iceberg/spark/sql/TestSelect.java   |   0
 .../iceberg/spark/sql/TestSparkBucketFunction.java |  23 +-
 .../iceberg/spark/sql/TestSparkDaysFunction.java   |   0
 .../iceberg/spark/sql/TestSparkHoursFunction.java  |   0
 .../iceberg/spark/sql/TestSparkMonthsFunction.java |   4 +-
 .../spark/sql/TestSparkTruncateFunction.java       |  20 +-
 .../iceberg/spark/sql/TestSparkYearsFunction.java  |   4 +-
 .../spark/sql/TestStoragePartitionedJoins.java     |   9 +-
 .../spark/sql/TestTimestampWithoutZone.java        |   0
 .../iceberg/spark/sql/TestUnpartitionedWrites.java |   0
 .../spark/sql/TestUnpartitionedWritesToBranch.java |   3 +
 .../spark/sql/UnpartitionedWritesTestBase.java     |   3 +
 .../decimal_dict_and_plain_encoding.parquet        | Bin
 966 files changed, 21457 insertions(+), 8763 deletions(-)
 copy api/src/main/java/org/apache/iceberg/{variants/Serialized.java => encryption/EncryptedKey.java} (79%)
 delete mode 100644 aws/src/main/java/org/apache/iceberg/aws/RESTSigV4Signer.java
 create mode 100644 bigquery/src/main/java/org/apache/iceberg/gcp/bigquery/BigQueryMetastoreCatalog.java
 create mode 100644 bigquery/src/main/java/org/apache/iceberg/gcp/bigquery/BigQueryMetastoreClient.java
 create mode 100644 bigquery/src/main/java/org/apache/iceberg/gcp/bigquery/BigQueryMetastoreClientImpl.java
 create mode 100644 bigquery/src/main/java/org/apache/iceberg/gcp/bigquery/BigQueryMetastoreUtils.java
 create mode 100644 bigquery/src/main/java/org/apache/iceberg/gcp/bigquery/BigQueryTableOperations.java
 create mode 100644 bigquery/src/test/java/org/apache/iceberg/gcp/bigquery/FakeBigQueryMetastoreClient.java
 create mode 100644 bigquery/src/test/java/org/apache/iceberg/gcp/bigquery/TestBigQueryCatalog.java
 create mode 100644 bigquery/src/test/java/org/apache/iceberg/gcp/bigquery/TestBigQueryTableOperations.java
 create mode 100644 core/src/main/java/org/apache/iceberg/EncryptedKeyParser.java
 create mode 100644 core/src/main/java/org/apache/iceberg/PartitionStatsHandler.java
 delete mode 100644 core/src/main/java/org/apache/iceberg/actions/FileRewriter.java
 delete mode 100644 core/src/main/java/org/apache/iceberg/actions/SizeBasedDataRewriter.java
 delete mode 100644 core/src/main/java/org/apache/iceberg/actions/SizeBasedFileRewriter.java
 delete mode 100644 core/src/main/java/org/apache/iceberg/actions/SizeBasedPositionDeletesRewriter.java
 copy core/src/main/java/org/apache/iceberg/{puffin/FileMetadata.java => encryption/BaseEncryptedKey.java} (53%)
 create mode 100644 core/src/main/java/org/apache/iceberg/io/ImmutableStorageCredential.java
 rename data/src/test/java/org/apache/iceberg/data/TestPartitionStatsHandler.java => core/src/test/java/org/apache/iceberg/PartitionStatsHandlerTestBase.java (72%)
 create mode 100644 core/src/test/java/org/apache/iceberg/TestEncryptedKeyParser.java
 delete mode 100644 core/src/test/java/org/apache/iceberg/actions/TestSizeBasedRewriter.java
 copy core/src/{main/java/org/apache/iceberg/avro/ValueReader.java => test/java/org/apache/iceberg/avro/TestAvroPartitionStatsHandler.java} (77%)
 rename core/src/jmh/java/org/apache/iceberg/PartitionStatsUtilBenchmark.java => data/src/jmh/java/org/apache/iceberg/PartitionStatsHandlerBenchmark.java (81%)
 create mode 100644 data/src/test/java/org/apache/iceberg/data/TestTableMigrationUtil.java
 create mode 100644 flink/v1.19/flink/src/main/java/org/apache/iceberg/flink/maintenance/api/RewriteDataFiles.java
 create mode 100644 flink/v1.19/flink/src/main/java/org/apache/iceberg/flink/maintenance/api/ZkLockFactory.java
 create mode 100644 flink/v1.19/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/DataFileRewriteCommitter.java
 create mode 100644 flink/v1.19/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/DataFileRewritePlanner.java
 create mode 100644 flink/v1.19/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/DataFileRewriteRunner.java
 copy api/src/main/java/org/apache/iceberg/io/DelegatingInputStream.java => flink/v1.19/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/LogUtil.java (75%)
 create mode 100644 flink/v1.19/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/TaskResultAggregator.java
 create mode 100644 flink/v1.19/flink/src/test/java/org/apache/iceberg/flink/maintenance/api/TestRewriteDataFiles.java
 copy spark/v3.5/spark/src/test/java/org/apache/iceberg/spark/sql/TestPartitionedWritesToBranch.java => flink/v1.19/flink/src/test/java/org/apache/iceberg/flink/maintenance/api/TestZkLockFactory.java (55%)
 create mode 100644 flink/v1.19/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/RewriteUtil.java
 create mode 100644 flink/v1.19/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/TestDataFileRewriteCommitter.java
 create mode 100644 flink/v1.19/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/TestDataFileRewritePlanner.java
 create mode 100644 flink/v1.19/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/TestDataFileRewriteRunner.java
 create mode 100644 flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/maintenance/api/RewriteDataFiles.java
 create mode 100644 flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/maintenance/api/ZkLockFactory.java
 create mode 100644 flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/DataFileRewriteCommitter.java
 create mode 100644 flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/DataFileRewritePlanner.java
 create mode 100644 flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/DataFileRewriteRunner.java
 copy api/src/main/java/org/apache/iceberg/io/DelegatingInputStream.java => flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/LogUtil.java (75%)
 create mode 100644 flink/v1.20/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/TaskResultAggregator.java
 create mode 100644 flink/v1.20/flink/src/test/java/org/apache/iceberg/flink/maintenance/api/TestRewriteDataFiles.java
 copy spark/v3.5/spark/src/test/java/org/apache/iceberg/spark/sql/TestPartitionedWritesToBranch.java => flink/v1.20/flink/src/test/java/org/apache/iceberg/flink/maintenance/api/TestZkLockFactory.java (55%)
 create mode 100644 flink/v1.20/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/RewriteUtil.java
 create mode 100644 flink/v1.20/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/TestDataFileRewriteCommitter.java
 create mode 100644 flink/v1.20/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/TestDataFileRewritePlanner.java
 create mode 100644 flink/v1.20/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/TestDataFileRewriteRunner.java
 create mode 100644 flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/maintenance/api/RewriteDataFiles.java
 create mode 100644 flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/maintenance/api/ZkLockFactory.java
 create mode 100644 flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/DataFileRewriteCommitter.java
 create mode 100644 flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/DataFileRewritePlanner.java
 create mode 100644 flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/DataFileRewriteRunner.java
 copy api/src/main/java/org/apache/iceberg/io/DelegatingInputStream.java => flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/LogUtil.java (75%)
 create mode 100644 flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/maintenance/operator/TaskResultAggregator.java
 create mode 100644 flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/sink/dynamic/DynamicRecord.java
 create mode 100644 flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/sink/dynamic/DynamicRecordInternal.java
 create mode 100644 flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/sink/dynamic/DynamicRecordInternalSerializer.java
 create mode 100644 flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/sink/dynamic/DynamicRecordInternalType.java
 create mode 100644 flink/v2.0/flink/src/main/java/org/apache/iceberg/flink/sink/dynamic/TableSerializerCache.java
 create mode 100644 flink/v2.0/flink/src/test/java/org/apache/iceberg/flink/maintenance/api/TestRewriteDataFiles.java
 copy spark/v3.5/spark/src/test/java/org/apache/iceberg/spark/sql/TestPartitionedWritesToBranch.java => flink/v2.0/flink/src/test/java/org/apache/iceberg/flink/maintenance/api/TestZkLockFactory.java (55%)
 create mode 100644 flink/v2.0/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/RewriteUtil.java
 create mode 100644 flink/v2.0/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/TestDataFileRewriteCommitter.java
 create mode 100644 flink/v2.0/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/TestDataFileRewritePlanner.java
 create mode 100644 flink/v2.0/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/TestDataFileRewriteRunner.java
 create mode 100644 flink/v2.0/flink/src/test/java/org/apache/iceberg/flink/maintenance/operator/TestTaskResultAggregator.java
 create mode 100644 flink/v2.0/flink/src/test/java/org/apache/iceberg/flink/sink/dynamic/DynamicRecordInternalSerializerTestBase.java
 copy api/src/main/java/org/apache/iceberg/view/ViewRepresentation.java => flink/v2.0/flink/src/test/java/org/apache/iceberg/flink/sink/dynamic/TestDynamicRecordInternalSerializerWriteSchema.java (74%)
 copy api/src/main/java/org/apache/iceberg/view/ViewRepresentation.java => flink/v2.0/flink/src/test/java/org/apache/iceberg/flink/sink/dynamic/TestDynamicRecordInternalSerializerWriteSchemaId.java (73%)
 create mode 100644 flink/v2.0/flink/src/test/java/org/apache/iceberg/flink/sink/dynamic/TestTableSerializerCache.java
 create mode 100644 gcp/src/main/java/org/apache/iceberg/gcp/gcs/PrefixedStorage.java
 create mode 100644 gcp/src/test/java/org/apache/iceberg/gcp/gcs/TestPrefixedStorage.java
 create mode 100644 orc/src/test/java/org/apache/iceberg/TestOrcPartitionStatsHandler.java
 copy core/src/main/java/org/apache/iceberg/HasTableOperations.java => parquet/src/test/java/org/apache/iceberg/TestParquetPartitionStatsHandler.java (84%)
 delete mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkBinPackDataRewriter.java
 copy spark/{v3.5 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkBinPackFileRewriteRunner.java (100%)
 copy spark/{v3.5 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkDataFileRewriteRunner.java (100%)
 copy spark/{v3.5 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkRewritePositionDeleteRunner.java (100%)
 copy spark/{v3.5 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkRewriteRunner.java (100%)
 copy spark/{v3.5 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkShufflingDataRewritePlanner.java (100%)
 copy spark/{v3.5 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkShufflingFileRewriteRunner.java (100%)
 delete mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkSizeBasedDataRewriter.java
 delete mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkSortDataRewriter.java
 copy spark/{v3.5 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkSortFileRewriteRunner.java (100%)
 delete mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkZOrderDataRewriter.java
 copy spark/{v3.5 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkZOrderFileRewriteRunner.java (100%)
 delete mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroReader.java
 delete mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/rest/RESTServerRule.java
 delete mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/SparkCatalogTestBase.java
 delete mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/SparkTestBase.java
 delete mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/SparkTestBaseWithCatalog.java
 copy spark/{v3.5 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestSparkFileRewriteRunners.java (100%)
 delete mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/actions/TestSparkFileRewriter.java
 copy spark/{v3.5 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestSparkShufflingDataRewritePlanner.java (97%)
 copy spark/{v3.5 => v4.0}/build.gradle (95%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/jmh/java/org/apache/iceberg/DeleteFileIndexBenchmark.java (98%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/jmh/java/org/apache/iceberg/spark/MergeCardinalityCheckBenchmark.java (98%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/jmh/java/org/apache/iceberg/spark/PlanningBenchmark.java (99%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/jmh/java/org/apache/iceberg/spark/TaskGroupPlanningBenchmark.java (98%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/jmh/java/org/apache/iceberg/spark/UpdateProjectionBenchmark.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/antlr/org.apache.spark.sql.catalyst.parser.extensions/IcebergSqlExtensions.g4 (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/iceberg/spark/extensions/IcebergSparkSessionExtensions.scala (81%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckViews.scala (95%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/ProcedureArgumentCoercion.scala (90%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveProcedures.scala (88%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveViews.scala (97%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/RewriteViewCommands.scala (94%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/ViewUtil.scala (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/optimizer/ReplaceStaticInvoke.scala (98%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSparkSqlExtensionsParser.scala (96%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala (98%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/AddPartitionField.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/BranchOptions.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/CreateOrReplaceBranch.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/CreateOrReplaceTag.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/DropBranch.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/DropIdentifierFields.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/DropPartitionField.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/DropTag.scala (100%)
 copy spark/{v3.5/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/Call.scala => v4.0/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/IcebergCall.scala} (87%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/ReplacePartitionField.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/SetIdentifierFields.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/TagOptions.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/statements.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/views/CreateIcebergView.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/views/DropIcebergView.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/views/ResolvedV2View.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/views/ShowIcebergViews.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/AddPartitionFieldExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/AlterV2ViewSetPropertiesExec.scala (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/AlterV2ViewUnsetPropertiesExec.scala (91%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/CallExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/CreateOrReplaceBranchExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/CreateOrReplaceTagExec.scala (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/CreateV2ViewExec.scala (96%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/DescribeV2ViewExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/DropBranchExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/DropIdentifierFieldsExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/DropPartitionFieldExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/DropTagExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/DropV2ViewExec.scala (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ExtendedDataSourceV2Strategy.scala (96%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/RenameV2ViewExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ReplacePartitionFieldExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/SetIdentifierFieldsExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/SetWriteDistributionAndOrderingExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ShowCreateV2ViewExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ShowV2ViewPropertiesExec.scala (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ShowV2ViewsExec.scala (96%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/Employee.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/ExtensionsTestBase.java (99%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/ProcedureUtil.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/SparkPlanUtil.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/SparkRowLevelOperationsTestBase.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestAddFilesProcedure.java (92%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestAlterTablePartitionFields.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestAlterTableSchema.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestAncestorsOfProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestBranchDDL.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCallStatementParser.java (94%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestChangelogTable.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCherrypickSnapshotProcedure.java (92%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestComputeTableStatsProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestConflictValidation.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCopyOnWriteDelete.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCopyOnWriteMerge.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCopyOnWriteUpdate.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCreateChangelogViewProcedure.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestDelete.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestExpireSnapshotsProcedure.java (97%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestFastForwardBranchProcedure.java (95%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMerge.java (99%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMergeOnReadDelete.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMergeOnReadMerge.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMergeOnReadUpdate.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMetaColumnProjectionWithStageScan.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMetadataTables.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMigrateTableProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestPublishChangesProcedure.java (92%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRegisterTableProcedure.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRemoveOrphanFilesProcedure.java (98%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestReplaceBranch.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRequiredDistributionAndOrdering.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewriteDataFilesProcedure.java (93%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewriteManifestsProcedure.java (85%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewritePositionDeleteFiles.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewritePositionDeleteFilesProcedure.java (99%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewriteTablePathProcedure.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRollbackToSnapshotProcedure.java (94%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRollbackToTimestampProcedure.java (95%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestSetCurrentSnapshotProcedure.java (95%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestSetWriteDistributionAndOrdering.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestSnapshotTableProcedure.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestStoragePartitionedJoinsInRowLevelOperations.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestSystemFunctionPushDownDQL.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestSystemFunctionPushDownInRowLevelOperations.java (92%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java (100%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestUpdate.java (99%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestViews.java (98%)
 copy spark/{v3.5 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestWriteAborts.java (100%)
 copy spark/{v3.4 => v4.0}/spark-extensions/src/test/java/org/apache/iceberg/spark/source/PlanUtils.java (100%)
 copy spark/{v3.4 => v4.0}/spark-runtime/LICENSE (100%)
 copy spark/{v3.4 => v4.0}/spark-runtime/NOTICE (100%)
 copy spark/{v3.4 => v4.0}/spark-runtime/src/integration/java/org/apache/iceberg/spark/SmokeTest.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/SparkBenchmarkUtil.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/action/DeleteOrphanFilesBenchmark.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/action/IcebergSortCompactionBenchmark.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/action/RandomGeneratingUDF.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersFlatDataBenchmark.java (98%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersNestedDataBenchmark.java (98%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersFlatDataBenchmark.java (97%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersNestedDataBenchmark.java (97%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/Action.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/DVReaderBenchmark.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/DVWriterBenchmark.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceBenchmark.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceDeleteBenchmark.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceFlatDataBenchmark.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedDataBenchmark.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedListDataBenchmark.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/WritersBenchmark.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/AvroWritersBenchmark.java (91%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceFlatAvroDataReadBenchmark.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceNestedAvroDataReadBenchmark.java (97%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataBenchmark.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataReadBenchmark.java (98%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedListORCDataWriteBenchmark.java (96%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedORCDataReadBenchmark.java (98%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataFilterBenchmark.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataReadBenchmark.java (97%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataWriteBenchmark.java (96%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedListParquetDataWriteBenchmark.java (95%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataFilterBenchmark.java (97%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataReadBenchmark.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataWriteBenchmark.java (95%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceParquetEqDeleteBenchmark.java (95%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceParquetMultiDeleteFileBenchmark.java (95%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceParquetPosDeleteBenchmark.java (95%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceParquetWithUnrelatedDeleteBenchmark.java (95%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/ParquetWritersBenchmark.java (91%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadDictionaryEncodedFlatParquetDataBenchmark.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadFlatParquetDataBenchmark.java (98%)
 copy spark/{v3.4 => v4.0}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadParquetDecimalBenchmark.java (98%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/SparkDistributedDataScan.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/BaseCatalog.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/BaseFileRewriteCoordinator.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/ChangelogIterator.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/CommitMetadata.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/ComputeUpdateIterator.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/ExtendedParser.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/FileRewriteCoordinator.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/IcebergSpark.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/JobGroupInfo.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/JobGroupUtils.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/OrcBatchReadConf.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/ParquetBatchReadConf.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/ParquetReaderType.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/PathIdentifier.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/PositionDeletesRewriteCoordinator.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/PruneColumnsWithoutReordering.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/RemoveCarryoverIterator.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/RemoveNetCarryoverIterator.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/RollbackStagedTable.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/ScanTaskSetManager.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SortOrderToSpark.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/Spark3Util.java (99%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkAggregates.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkCachedTableCatalog.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java (98%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkCompressionUtil.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkConfParser.java (99%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkContentFile.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkDataFile.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkDeleteFile.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkExceptionUtil.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkExecutorCache.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkFilters.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkFixupTypes.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkFunctionCatalog.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkReadConf.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkReadOptions.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkSQLProperties.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkSchemaUtil.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkSessionCatalog.java (95%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkStructLike.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkTableCache.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java (91%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkTypeVisitor.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkUtil.java (99%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkV2Filters.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkValueConverter.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkWriteRequirements.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SparkWriteUtil.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SupportsFunctions.java (93%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/SupportsReplaceView.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/TypeToSparkType.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSnapshotUpdateSparkAction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/BaseTableCreationSparkAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/ComputeTableStatsSparkAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/DeleteOrphanFilesSparkAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/DeleteReachableFilesSparkAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/ExpireSnapshotsSparkAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/FileInfo.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/ManifestFileBean.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/MigrateTableSparkAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/NDVSketchUtil.java (96%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/RemoveDanglingDeletesSparkAction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteDataFilesSparkAction.java (99%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteManifestsSparkAction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/RewritePositionDeleteFilesSparkAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteTablePathSparkAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/SetAccumulator.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/SnapshotTableSparkAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkActions.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkBinPackFileRewriteRunner.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkDataFileRewriteRunner.java (100%)
 rename spark/{v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkBinPackPositionDeletesRewriter.java => v4.0/spark/src/main/java/org/apache/iceberg/spark/actions/SparkRewritePositionDeleteRunner.java} (77%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkRewriteRunner.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkShufflingDataRewritePlanner.java (100%)
 rename spark/{v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkShufflingDataRewriter.java => v4.0/spark/src/main/java/org/apache/iceberg/spark/actions/SparkShufflingFileRewriteRunner.java} (76%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkSortFileRewriteRunner.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkZOrderFileRewriteRunner.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkZOrderUDF.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/AvroWithSparkSchemaVisitor.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/ParquetWithSparkSchemaVisitor.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueReaders.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueWriters.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java (99%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/SparkPlannedAvroReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/SparkValueReaders.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/SparkValueWriters.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessorFactory.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessors.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnVectorBuilder.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnVectorWithFilter.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchUtil.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/CometColumnReader.java (98%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/CometColumnarBatchReader.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/CometConstantColumnReader.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/CometDeleteColumnReader.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/CometPositionColumnReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/CometVectorizedReaderBuilder.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/DeletedColumnVector.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/IcebergArrowColumnVector.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/functions/BaseScalarFunction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/functions/BucketFunction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/functions/DaysFunction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/functions/HoursFunction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/functions/IcebergVersionFunction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/functions/MonthsFunction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/functions/SparkFunctions.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/functions/TruncateFunction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/functions/UnaryUnboundFunction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/functions/YearsFunction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/AddFilesProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/AncestorsOfProcedure.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/BaseProcedure.java (99%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/CherrypickSnapshotProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/ComputeTableStatsProcedure.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/CreateChangelogViewProcedure.java (95%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/ExpireSnapshotsProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/FastForwardBranchProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/MigrateTableProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/ProcedureInput.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/PublishChangesProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/RegisterTableProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/RemoveOrphanFilesProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/RewriteDataFilesProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/RewriteManifestsProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/RewritePositionDeleteFilesProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/RewriteTablePathProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/RollbackToSnapshotProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/RollbackToTimestampProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/SetCurrentSnapshotProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/SnapshotTableProcedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/procedures/SparkProcedures.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/BaseBatchReader.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/BaseReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/BaseRowReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/BatchDataReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/ChangelogRowReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/DVIterator.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/EqualityDeleteRowReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/HasIcebergCatalog.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/IcebergSource.java (98%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/InternalRowWrapper.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/PositionDeletesRowReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/RowDataReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SerializableTableWithSize.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkBatch.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkBatchQueryScan.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkChangelogScan.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkChangelogTable.java (99%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkCleanupUtil.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkColumnStatistics.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkColumnarReaderFactory.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkCopyOnWriteOperation.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkCopyOnWriteScan.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkFileWriterFactory.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkInputPartition.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkLocalScan.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkMetadataColumn.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkMicroBatchStream.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedFanoutWriter.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedWriter.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitioningAwareScan.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPlanningUtil.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPositionDeletesRewrite.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPositionDeletesRewriteBuilder.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPositionDeltaOperation.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPositionDeltaWrite.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPositionDeltaWriteBuilder.java (93%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkRowLevelOperationBuilder.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkRowReaderFactory.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkScan.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkScanBuilder.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkStagedScan.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkStagedScanBuilder.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkTable.java (93%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkView.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkWrite.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/SparkWriteBuilder.java (99%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/StagedSparkTable.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/Stats.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/StreamingOffset.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java (98%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/EqualityDeleteFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/IndexedDeleteFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/NumDeletes.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/NumSplits.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/PositionalDeleteFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/ResultDataFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/ResultDeleteFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/ScannedDataManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/ScannedDeleteManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/SkippedDataFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/SkippedDataManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/SkippedDeleteFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/SkippedDeleteManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskEqualityDeleteFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskIndexedDeleteFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskNumDeletes.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskNumSplits.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskPositionalDeleteFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskResultDataFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskResultDeleteFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskScannedDataManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskScannedDeleteManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskSkippedDataFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskSkippedDataManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskSkippedDeleteFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskSkippedDeleteManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskTotalDataFileSize.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskTotalDataManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskTotalDeleteFileSize.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskTotalDeleteManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskTotalPlanningDuration.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TotalDataFileSize.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TotalDataManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TotalDeleteFileSize.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TotalDeleteManifests.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TotalPlanningDuration.java (100%)
 copy spark/{v3.5/spark/src/main/java/org/apache/spark/sql/catalyst/analysis/NoSuchProcedureException.java => v4.0/spark/src/main/java/org/apache/spark/sql/catalyst/analysis/IcebergAnalysisException.java} (82%)
 copy spark/{v3.5 => v4.0}/spark/src/main/java/org/apache/spark/sql/catalyst/analysis/NoSuchProcedureException.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/spark/sql/connector/iceberg/catalog/Procedure.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/spark/sql/connector/iceberg/catalog/ProcedureCatalog.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/spark/sql/connector/iceberg/catalog/ProcedureParameter.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/java/org/apache/spark/sql/connector/iceberg/catalog/ProcedureParameterImpl.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/resources/META-INF/services/org.apache.spark.sql.sources.DataSourceRegister (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/OrderAwareCoalesce.scala (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/SetWriteDistributionAndOrdering.scala (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/SortOrderParserUtil.scala (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/scala/org/apache/spark/sql/catalyst/utils/PlanUtils.scala (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/scala/org/apache/spark/sql/execution/OrderAwareCoalesceExec.scala (100%)
 copy spark/{v3.4 => v4.0}/spark/src/main/scala/org/apache/spark/sql/execution/datasources/SparkExpressionConverter.scala (89%)
 copy spark/{v3.4 => v4.0}/spark/src/main/scala/org/apache/spark/sql/stats/ThetaSketchAgg.scala (97%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/KryoHelpers.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/SparkDistributedDataScanTestBase.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/TaskCheckHelper.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/TestDataFileSerialization.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/TestFileIOSerialization.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/TestHadoopMetricsContextSerialization.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/TestManifestFileSerialization.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/TestScanTaskSerialization.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/TestSparkDistributedDataScanDeletes.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/TestSparkDistributedDataScanFilterFiles.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/TestSparkDistributedDataScanJavaSerialization.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/TestSparkDistributedDataScanKryoSerialization.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/TestSparkDistributedDataScanReporting.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/TestTableSerialization.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/ValidationHelpers.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/CatalogTestBase.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/Employee.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/SparkCatalogConfig.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/SparkTestHelperBase.java (94%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/SystemFunctionPushDownHelper.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestBase.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestBaseWithCatalog.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestChangelogIterator.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestFileRewriteCoordinator.java (94%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestFunctionCatalog.java (94%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSpark3Util.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkCachedTableCatalog.java (95%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkCatalogOperations.java (96%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkCompressionUtil.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkDistributionAndOrderingUtil.java (99%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkExecutorCache.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkFilters.java (89%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkSchemaUtil.java (93%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkSessionCatalog.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkTableUtil.java (90%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkV2Filters.java (96%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkValueConverter.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/TestSparkWriteConf.java (99%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestComputeTableStatsAction.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestCreateActions.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestDeleteReachableFilesAction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestExpireSnapshotsAction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestMigrateTableAction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRemoveDanglingDeleteAction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRemoveOrphanFilesAction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRemoveOrphanFilesAction3.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRewriteDataFilesAction.java (99%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRewriteManifestsAction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRewritePositionDeleteFilesAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRewriteTablePathsAction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestSnapshotTableAction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestSparkFileRewriteRunners.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/actions/TestSparkShufflingDataRewritePlanner.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/GenericsHelpers.java (90%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/RandomData.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java (95%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestOrcWrite.java (99%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroReader.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroWriter.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroEnums.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroReader.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java (96%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReadMetadataColumns.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReader.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReadMetadataColumns.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetWriter.java (99%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkRecordOrcReaderWriter.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/TestVectorizedOrcDataReader.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryEncodedVectorizedReads.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryFallbackToPlainEncodingVectorizedReads.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetVectorizedReads.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/functions/TestSparkFunctions.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/ComplexRecord.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/DataFrameWriteTestBase.java (92%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/FilePathLastModifiedRecord.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/FourColumnRecord.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/LogMessage.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/ManualSource.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/NestedRecord.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/ScanTestBase.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/SimpleRecord.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/SparkSQLExecutionHelper.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestAvroDataFrameWrite.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestAvroScan.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestBaseReader.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestChangelogReader.java (99%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestCompressionSettings.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWriterV2.java (96%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWriterV2Coercion.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestDataSourceOptions.java (98%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestFilteredScan.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java (97%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSource.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java (98%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java (94%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSpark.java (62%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestIdentityPartitionData.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestInternalRowWrapper.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestMetadataTableReadableMetrics.java (98%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestMetadataTablesWithPartitionEvolution.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestORCDataFrameWrite.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestParquetDataFrameWrite.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestParquetScan.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestParquetVectorizedScan.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionPruning.java (95%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionValues.java (95%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestPathIdentifier.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestPositionDeletesReader.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestPositionDeletesTable.java (99%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestReadProjection.java (90%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestRequiredDistributionAndOrdering.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestRuntimeFiltering.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSnapshotSelection.java (96%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkAggregates.java (84%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkCatalog.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkCatalogCacheExpiration.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkCatalogHadoopOverrides.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDVWriters.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataFile.java (96%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataWrite.java (89%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkFileWriterFactory.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkMetadataColumns.java (91%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPartitioningWriters.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPlanningUtil.java (95%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPositionDeltaWriters.java (100%)
 create mode 100644 spark/v4.0/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReadMetrics.java
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReadProjection.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderWithBloomFilter.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkRollingFileWriters.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkScan.java (92%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkStagedScan.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkTable.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkWriterMetrics.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestStreamingOffset.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java (96%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreamingRead3.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestTables.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestTimestampWithoutZone.java (98%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/TestWriteMetricsConfig.java (92%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/source/ThreeColumnRecord.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/PartitionedWritesTestBase.java (98%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestAggregatePushDown.java (99%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestAlterTable.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestCreateTable.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestCreateTableAsSelect.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestDeleteFrom.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestDropTable.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestFilterPushDown.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestNamespaceSQL.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestPartitionedWrites.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestPartitionedWritesAsSelect.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestPartitionedWritesToBranch.java (91%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestPartitionedWritesToWapBranch.java (95%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestRefreshTable.java (89%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSelect.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkBucketFunction.java (93%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkDaysFunction.java (100%)
 copy spark/{v3.4 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkHoursFunction.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkMonthsFunction.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkTruncateFunction.java (95%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkYearsFunction.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestStoragePartitionedJoins.java (98%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestTimestampWithoutZone.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestUnpartitionedWrites.java (100%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/TestUnpartitionedWritesToBranch.java (93%)
 copy spark/{v3.5 => v4.0}/spark/src/test/java/org/apache/iceberg/spark/sql/UnpartitionedWritesTestBase.java (97%)
 copy spark/{v3.5 => v4.0}/spark/src/test/resources/decimal_dict_and_plain_encoding.parquet (100%)