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 2023/05/08 10:30:44 UTC

[iceberg] branch dependabot/gradle/com.diffplug.spotless-spotless-plugin-gradle-6.18.0 updated (521479a726 -> 82762dc52e)

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

github-bot pushed a change to branch dependabot/gradle/com.diffplug.spotless-spotless-plugin-gradle-6.18.0
in repository https://gitbox.apache.org/repos/asf/iceberg.git


 discard 521479a726 Build: Bump com.diffplug.spotless:spotless-plugin-gradle
     add ecc2492aa6 Infra: Update vote mail sample in source-release.sh (#7330)
     add db424ea5d6 Core: Add missing metrics reporters when creating BaseTable (#7341)
     add f53c4eeec5 Core, Spark 3.3: Add FileRewriter API (#7175)
     add 522480dc4d Spark: Accept an `output-spec-id` to write to a desired partition spec (#7120)
     add b756a5da35 ORC, Spark 3.3: Support selected vector with ORC row and batch readers (#7197)
     add b78d336163 Flink: use correct scan mode when in TABLE_SCAN_THEN_INCREMENTAL mode (#7338)
     add dc05e1f867 Build: Bump rich from 13.3.3 to 13.3.4 in /python (#7354)
     add 7d1bb55d35 Build: Bump pytest from 7.3.0 to 7.3.1 in /python (#7355)
     add 9dd00fab1d Build: Bump moto from 4.1.6 to 4.1.7 in /python (#7356)
     add d3f1ec31ec AWS: Fix Glue catalog integration with SparkSessionCatalog (#7277)
     add ec2c6ece6e Build: Bump Airlift from 0.21 to 0.24 (#7347)
     add 854f007641 Docs: clarify Hive on Tez configuration (#7282)
     add 2a087875bc Spark: Simplify checks of output-spec-id in SparkWriteConf (#7348)
     add 9b590cfb60 Core: Fix variable name in SetDefaultPartitionSpec (#7350)
     add 6910f70383 Core, Spark: Make ObjectStoreLocationProvider serializable (#7353)
     add 7301f38eaa Core: Parameterize RewriteDataFile's CommitService (#7343)
     add 5c85dd3459 Core: Fix flaky TestParallelIterable test (#7372)
     add c57952ecac Flink: Apply row level filtering (#7109)
     add 456c9264dc Spark: Surface better error message during streaming planning when checkpoint snapshot not found (#6480)
     add c7b2e95fb9 Flink: backport #7338 to 1.16 and 1.15 (#7373)
     add fd52bde36b Spark 3.4: Move 3.3 classes to 3.4 folder
     add 215293a3d4 Spark 3.3: Copy 3.3 classes back
     add a88079466b Spark 3.4: Initial support
     add 6504fd8091 Spark 3.3: Honor Spark case sensitivity in ALTER TABLE ... WRITE ORDERED (#7324)
     add 403efd11ef Spark 3.3: Surface better error message during streaming planning when checkpoint snapshot not found (#7381)
     add 37ec2df090 Spark 2.4: Remove module (#7385)
     add d04efee702 Build: Bump Hive to 2.3.9 (#7374)
     add 74b18ddded Core: Introduce CompositeMetricsReporter (#7337)
     add 7a91debf38 Flink: Use starting sequence number by default when rewriting data files (#7218)
     add 283107d360 Backport to Flink 1.15: Implement DataStatisticsOperator operator to collect and send traffic distribution for guiding smart shuffling (#7400)
     add a36d120d75 Flink: Backport row filter into 1.15 and 1.16 (#7397)
     add 029622b420 Spark 3.3: support rate limit in Spark Streaming (#4479)
     add 1168312e01 Spec: Add S3 configuration to REST table load (#7401)
     add 1531e59e57 Doc: Add a page explaining migration from other table formats to iceberg (#6600)
     add 38a636cbaf Doc: Fix typo in hive_migration.md (#7407)
     add bdcc55b731 Spark: Fix failing unit test (#7414)
     add 370f7fd54a Backport #7218 (#7404)
     add a9b8eff23b Build: Bump zstandard from 0.20.0 to 0.21.0 in /python (#7411)
     add 37cb7caa75 MR: Skip filter translation if there are no leaves (#7123)
     add 6a111717a0 Python: Add mkdocstrings (#7108)
     add 69c3249338 AWS: Fix default warehouse path in Dynamodb catalog (#7358)
     add 38cf2a105f Flink: sync 1.16 with 1.17 for backports missed or not ported identically (#7403)
     add 3a04faa54f Flink: sync 1.15 with 1.17 for missed backports previously (#7402)
     add e2c7e77310 Views: Clean up and clarify the view spec (#7416)
     add 8459fa0c9d Docs: Separate page for Branching and Tagging (#6723)
     add 973676a1bd Views: Fix SQL view representation field name (#7417)
     add c3232b6647 Hive: Use EnvironmentContext instead of Hive Locks to provide transactional commits after HIVE-26882 (#6570)
     add ce51d5f54a Python: Provide version ranges for each dependency (#7376)
     add f917e2800e Spark: Backport #6480 to Spark 3.2 and Spark 3.1 (#7425)
     add 50ca63bde8 API, Core: Move schemaID from ViewRepresentation to ViewVersion and make it required (#7421)
     add a13115d6dd Spark 3.4: Relax constraints in SparkPartitioningAwareScan (#7423)
     add 8e7381330c Core: Extract REST metrics reporter into its own class (#7339)
     add 14fc167d68 Spark 3.4: Add tests for SPJ when partition keys mismatch (#7424)
     add 1f0e493fbb Spark 3.4: Cherry pick case sensitivity backport (#7324)
     add f70e52cc72 Build: Run Iceberg with JDK 17 (#7391)
     add 455542d5ff Python: Use fsspec implementation of LocalFileSystem (#7432)
     add f475a6bef5 Views: Move 'operation' check to ViewVersion (#7428)
     add b4ad20f803 Docs: Add Java 17 to README.md (#7434)
     add bbacaf41e2 Hive: Clean up expired metastore clients (#7310)
     add 882459d488 Core: Make TableScanContext immutable (#5985)
     add 8ca688531c Core: Move table-creation-without-namespace-test to CatalogTests (#7349)
     add faddf308ed Spark: Refactor SparkReadConf to use primitive type (#7429)
     add 449509df46 Spark 3.4: Remove deprecated classes (#7448)
     add 97a99c3cf4 Arrow: Convert dict encoded vectors to their expected Arrow vector types (#3024)
     add 1969775f14 Spark: Fixed Typo in Spark Read Option Vectorization Javadoc (#7439)
     add 91327e7c57 Spark 3.4: Remove no longer needed write extensions (#7443)
     add b1d25db291 Delta: Add version and timestamp tags for each Delta Lake transaction (#7450)
     add 5f156d73bd Delta: Fix snapshotDataFilesCount and use Immutable for result (#7454)
     add ea416b25e6 Python: fix `mkdocs` warnings from `conversions.py` (#7462)
     add 3d651a1fc2 Spark 3.4: Support rate limit in Spark Streaming (#7422)
     add 78aafdb55e Python: fix mkdocs warnings from visitors.py (#7464)
     add 8c5605dfd1 Python: fix mkdocs warnings from sorting.py (#7467)
     add 251c9fa796 Spark: Fix failing Spark streaming rate limit unit test (#7470)
     add c8b80b0b31 Build: Bump ray from 2.3.1 to 2.4.0 in /python (#7479)
     add dc82f98f01 Build: Bump mkdocs-gen-files from 0.4.0 to 0.5.0 in /python (#7478)
     add 4d54f4cf8f Build: Bump mkdocstrings-python from 0.8.3 to 0.9.0 in /python (#7475)
     add 9414adc21d Build: Bump pyyaml from 5.4.1 to 6.0 in /python (#7477)
     add 5e6a0147d8 Build: Bump mkdocs-material from 9.1.5 to 9.1.8 in /python (#7476)
     add 9fb90acdac Python: Fix warnings in documentation (#7472)
     add 9de9a2ae77 Spark 3.4: Switch to built-in DELETE implementation (#7453)
     add 2b8850b619 Python: Fix code highlighting in docs (#7484)
     add a0b1df2866 Spark: Remove Usage of deprecated AssertHelpers in spark-sql (#7486)
     add f8b1601902 Spark 3.3: Remove deprecated FileScanTaskSetManager (#7489)
     add 4ce5318e5c Python: Update pre-commit to the latest version (#7436)
     add 79c88a1775 Hive: Support connecting to multiple HMS-Catalog on same HMS URL (#7441)
     add fc3cd2ed8c Spark 3.4: Add read and write support for UUIDs (#7399)
     add 6cf4d9e410 Python: Infer Iceberg schema from the Parquet file (#6997)
     add cad9c6e795 Hive: Remove deprecated AssertHelpers (#7482)
     add f9f85e7f26 Flink: Remove deprecated AssertHelpers (#7481)
     add 8a7a1ed99b Spark: Remove deprecated AssertHelpers usage (#7483)
     add c9bdae12ce Core: Remove compile-time dependency to ResolvingFileIO (#7488)
     add 5117b6bfa9 Docs: Update new catalog features (#7433)
     add c19e7e9d5d Spark 3.3: Add read and write support for UUIDs (#7496)
     add b58bf17ae3 Spark 3.2: Add read and write support for UUIDs (#7497)
     add 4f9584cea6 Spark 3.1: Add read and write support for UUIDs (#7508)
     add 3db4e89658 API: Remove deprecated AssertHelpers usage (#7468)
     add f0149a5860 API: Update Javadoc for listTables and listViews (#7336)
     add c751cb24b6 Core: Simplify partition coercion code in PartitionsTable (#7503)
     add 8d8db30aeb Python: Support Iceberg UUIDType from Parquet (#7523)
     add 4aa9e9fe3b Core, Spark: Add case-sensitivity configuration to CachingCatalog (#7469)
     add db3800d3c4 AWS: Add finalizer to S3FileIO (#7513)
     add c0253429d2 AWS: Move all S3FileIO related properties into a separate class S3FileIOProperties (#7505)
     add 7fa5fca9b1 Spark 3.4: Handle skew in writes (#7520)
     add d8142d1035 Spec: Update View spec to reflect that schema is defined at the version level  and is required (#7485)
     add 667fd86033 Spark 3.4: Action for rewriting position deletes (#7389)
     add 7e71c3fd98 Spark 3.4: Tests for coalescing small writing tasks (#7532)
     add 1cb1320e20 Core: Support delete file stats in partitions metadata table (#6661)
     add 7406098ee7 Core, Spark: Revert SparkCatalog case sensitive CachingCatalog default (#7535)
     add 445ee94e2c Core: Remove duplicate check for ManifestEntry.dataSequenceNumber() (#7538)
     add 3ab00171b4 Remove usages of S3 fields from AwsProperties within s3 package (#7534)
     add f5de7fb80c Build: Bump mkdocstrings from 0.20.0 to 0.21.2 in /python (#7547)
     add ed105e1b70 Build: Bump griffe from 0.26.0 to 0.27.3 in /python (#7546)
     add 9980ef7b6e Build: Bump rich from 13.3.4 to 13.3.5 in /python (#7545)
     add 475fc65b66 Build: Bump requests from 2.28.2 to 2.30.0 in /python (#7544)
     add 492d60e3ce Build: Bump mkdocs-material from 9.1.8 to 9.1.9 in /python (#7542)
     add 6a0732f7c4 Python: Add REST support for SigV4 (#7519)
     add 5da1bfaab7 Flink: fix typo in namespace (#7527)
     add 98f4bc427f Arrow: Fix errorprone warnings (#7498)
     add fbdbaec5a5 Spark: Use UUIDUtil.convertToByteBuffer to avoid rewinding buffer (#7525)
     add f3c90f9d53 Build: Bump me.champeau.jmh:jmh-gradle-plugin from 0.7.0 to 0.7.1 (#7408)
     add 82762dc52e Build: Bump com.diffplug.spotless:spotless-plugin-gradle

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   (521479a726)
            \
             N -- N -- N   refs/heads/dependabot/gradle/com.diffplug.spotless-spotless-plugin-gradle-6.18.0 (82762dc52e)

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:
 .github/workflows/delta-conversion-ci.yml          |    4 +-
 .github/workflows/hive-ci.yml                      |    2 +-
 .github/workflows/java-ci.yml                      |    4 +-
 .github/workflows/jmh-benchmarks.yml               |    4 +-
 .github/workflows/publish-snapshot.yml             |    2 +-
 .github/workflows/python-ci-docs.yml               |    2 +-
 .github/workflows/recurring-jmh-benchmarks.yml     |    2 +-
 .github/workflows/spark-ci.yml                     |   60 +-
 .gitignore                                         |    2 +-
 .palantir/revapi.yml                               |   30 +
 README.md                                          |    2 +-
 .../main/java/org/apache/iceberg/SortOrder.java    |    1 +
 .../java/org/apache/iceberg/SortOrderBuilder.java  |   11 +
 .../apache/iceberg/actions/ActionsProvider.java    |    6 +
 .../actions/RewritePositionDeleteFiles.java        |  125 +-
 .../java/org/apache/iceberg/catalog/Catalog.java   |    4 +-
 .../org/apache/iceberg/catalog/ViewCatalog.java    |    4 +-
 .../apache/iceberg/expressions/ExpressionUtil.java |    6 +-
 .../iceberg/metrics/LoggingMetricsReporter.java    |    2 -
 .../java/org/apache/iceberg/util/UUIDUtil.java     |   12 +-
 .../apache/iceberg/view/SQLViewRepresentation.java |    7 -
 .../java/org/apache/iceberg/view/ViewVersion.java  |   15 +-
 .../iceberg/TestPartitionSpecValidation.java       |  335 ++-
 .../java/org/apache/iceberg/TestSnapshotRef.java   |   58 +-
 .../org/apache/iceberg/catalog/TestNamespace.java  |   25 +-
 .../apache/iceberg/expressions/TestEvaluator.java  |  148 +-
 .../iceberg/expressions/TestExpressionHelpers.java |   26 +-
 .../iceberg/expressions/TestExpressionUtil.java    |    8 +-
 .../TestInclusiveManifestEvaluator.java            |   20 +-
 .../expressions/TestInclusiveMetricsEvaluator.java |   20 +-
 .../iceberg/expressions/TestPredicateBinding.java  |   17 +-
 .../expressions/TestStrictMetricsEvaluator.java    |   11 +-
 .../apache/iceberg/io/TestCloseableIterable.java   |    8 +-
 .../apache/iceberg/transforms/TestBucketing.java   |   10 +-
 .../apache/iceberg/transforms/TestProjection.java  |   21 +-
 .../apache/iceberg/transforms/TestTruncate.java    |   10 +-
 .../org/apache/iceberg/types/TestTypeUtil.java     |   43 +-
 .../java/org/apache/iceberg/util/RandomUtil.java   |    4 +
 .../iceberg/arrow/DictEncodedArrowConverter.java   |  225 ++
 .../iceberg/arrow/vectorized/ArrowReader.java      |    3 +-
 .../arrow/vectorized/ArrowVectorAccessors.java     |   22 +-
 .../iceberg/arrow/vectorized/ColumnVector.java     |   26 +-
 .../iceberg/arrow/vectorized/ColumnarBatch.java    |    2 +-
 .../GenericArrowVectorAccessorFactory.java         |   27 +-
 .../iceberg/arrow/vectorized/VectorHolder.java     |   26 +-
 .../arrow/vectorized/VectorizedArrowReader.java    |    4 +-
 .../iceberg/arrow/vectorized/ArrowReaderTest.java  |  122 +-
 .../iceberg/aws/dynamodb/TestDynamoDbCatalog.java  |   15 +
 .../iceberg/aws/s3/TestS3FileIOIntegration.java    |   52 +-
 .../iceberg/aws/s3/TestS3MultipartUpload.java      |   23 +-
 .../java/org/apache/iceberg/aws/AwsProperties.java |  431 +++-
 .../iceberg/aws/dynamodb/DynamoDbCatalog.java      |    2 +-
 .../iceberg/aws/glue/GlueTableOperations.java      |   21 +-
 .../iceberg/aws/glue/GlueToIcebergConverter.java   |   18 -
 .../java/org/apache/iceberg/aws/s3/BaseS3File.java |   14 +-
 .../java/org/apache/iceberg/aws/s3/S3FileIO.java   |   75 +-
 .../apache/iceberg/aws/s3/S3FileIOProperties.java  |  653 +++++
 .../org/apache/iceberg/aws/s3/S3InputFile.java     |   22 +-
 .../org/apache/iceberg/aws/s3/S3InputStream.java   |   14 +-
 .../org/apache/iceberg/aws/s3/S3OutputFile.java    |   19 +-
 .../org/apache/iceberg/aws/s3/S3OutputStream.java  |   30 +-
 .../org/apache/iceberg/aws/s3/S3RequestUtil.java   |   54 +-
 .../apache/iceberg/aws/TestAwsClientFactories.java |    7 +-
 .../iceberg/aws/dynamodb/TestDynamoDbCatalog.java  |  105 +
 .../aws/glue/TestGlueToIcebergConverter.java       |   20 +-
 .../org/apache/iceberg/aws/s3/TestS3FileIO.java    |    8 +
 .../iceberg/aws/s3/TestS3FileIOProperties.java     |  397 +++
 .../apache/iceberg/aws/s3/TestS3OutputStream.java  |   27 +-
 .../apache/iceberg/aws/s3/TestS3RequestUtil.java   |   33 +-
 baseline.gradle                                    |    1 +
 build.gradle                                       |   39 +-
 .../iceberg/BaseIncrementalChangelogScan.java      |    2 +-
 .../org/apache/iceberg/BaseMetadataTableScan.java  |    2 +-
 .../org/apache/iceberg/BaseMetastoreCatalog.java   |    4 +-
 .../org/apache/iceberg/BaseReplaceSortOrder.java   |    6 +
 .../main/java/org/apache/iceberg/BaseTable.java    |    5 +-
 .../java/org/apache/iceberg/CatalogProperties.java |    5 +
 .../main/java/org/apache/iceberg/CatalogUtil.java  |    2 +-
 .../java/org/apache/iceberg/ClientPoolImpl.java    |    4 +
 .../java/org/apache/iceberg/LocationProviders.java |    4 +-
 .../java/org/apache/iceberg/MetadataUpdate.java    |    4 +-
 .../main/java/org/apache/iceberg/MicroBatches.java |  209 +-
 .../java/org/apache/iceberg/PartitionsTable.java   |  244 +-
 .../org/apache/iceberg/PositionDeletesTable.java   |    2 +-
 .../main/java/org/apache/iceberg/SnapshotScan.java |    5 +-
 .../java/org/apache/iceberg/TableProperties.java   |    3 +
 .../java/org/apache/iceberg/TableScanContext.java  |  388 +--
 .../apache/iceberg/actions/BaseCommitService.java  |  221 ++
 .../actions/BaseRewriteDataFilesAction.java        |   31 +-
 .../apache/iceberg/actions/BinPackStrategy.java    |    3 +
 .../org/apache/iceberg/actions/FileRewriter.java   |   77 +
 .../actions/RewriteDataFilesCommitManager.java     |  162 +-
 .../actions/RewritePositionDeleteStrategy.java     |    7 +-
 .../RewritePositionDeletesCommitManager.java       |  129 +
 .../actions/RewritePositionDeletesGroup.java       |  125 +
 .../apache/iceberg/actions/RewriteStrategy.java    |    6 +
 .../iceberg/actions/SizeBasedDataRewriter.java     |  109 +
 .../iceberg/actions/SizeBasedFileRewriter.java     |  313 +++
 .../actions/SizeBasedPositionDeletesRewriter.java  |   58 +
 .../org/apache/iceberg/actions/SortStrategy.java   |    3 +
 .../java/org/apache/iceberg/avro/ValueWriters.java |    9 +-
 .../apache/iceberg/hadoop/ConfigProperties.java    |    1 +
 .../apache/iceberg/inmemory/InMemoryCatalog.java   |   14 +-
 .../apache/iceberg/metrics/MetricsReporters.java   |   85 +
 .../apache/iceberg/rest/RESTMetricsReporter.java   |   61 +
 .../apache/iceberg/rest/RESTSessionCatalog.java    |   42 +-
 .../org/apache/iceberg/util/PartitionUtil.java     |    2 +-
 .../iceberg/view/SQLViewRepresentationParser.java  |   13 +-
 .../iceberg/view/ViewRepresentationParser.java     |    7 +-
 .../org/apache/iceberg/view/ViewVersionParser.java |   40 +-
 .../apache/iceberg/MetadataTableScanTestBase.java  |   12 +-
 .../java/org/apache/iceberg/TableTestBase.java     |    8 -
 .../org/apache/iceberg/TestMetadataTableScans.java |  208 +-
 ...stMetadataTableScansWithPartitionEvolution.java |   18 +-
 .../org/apache/iceberg/TestMicroBatchBuilder.java  |   20 +-
 .../iceberg/TestScanPlanningAndReporting.java      |   29 +
 .../java/org/apache/iceberg/TestSortOrder.java     |   27 +-
 .../org/apache/iceberg/catalog/CatalogTests.java   |   12 +
 .../iceberg/inmemory/TestInMemoryCatalog.java      |   17 -
 .../iceberg/metrics/TestMetricsReporters.java      |  119 +
 .../apache/iceberg/util/TestParallelIterable.java  |   18 +-
 .../view/TestSQLViewRepresentationParser.java      |    6 +-
 .../iceberg/view/TestViewRepresentationParser.java |    4 +-
 .../apache/iceberg/view/TestViewVersionParser.java |   27 +-
 .../apache/iceberg/data/GenericAppenderHelper.java |    7 +
 .../iceberg/delta/TestSnapshotDeltaLakeTable.java  |  105 +-
 .../delta/BaseSnapshotDeltaLakeTableAction.java    |   58 +-
 .../iceberg/delta/SnapshotDeltaLakeTable.java      |    3 +
 dev/source-release.sh                              |    6 +-
 dev/stage-binaries.sh                              |    3 +-
 docs/branching-and-tagging.md                      |  122 +
 docs/configuration.md                              |   13 +
 docs/delta-lake-migration.md                       |  122 +
 docs/flink-configuration.md                        |    6 +-
 docs/flink-getting-started.md                      |   10 +
 docs/flink-queries.md                              |   46 +
 docs/flink-writes.md                               |   10 +
 docs/hive-migration.md                             |   60 +
 docs/hive.md                                       |    4 +-
 docs/java-api-quickstart.md                        |  124 +
 docs/spark-configuration.md                        |   28 +-
 docs/spark-ddl.md                                  |   72 +-
 docs/spark-queries.md                              |   46 +-
 docs/spark-structured-streaming.md                 |    4 -
 docs/spark-writes.md                               |   78 +-
 docs/table-migration.md                            |   79 +
 .../org/apache/iceberg/flink/CatalogLoader.java    |   12 +-
 .../iceberg/flink/FlinkEnvironmentContext.java     |    1 -
 .../apache/iceberg/flink/FlinkSourceFilter.java    |   49 +
 .../java/org/apache/iceberg/flink/TableLoader.java |   12 +-
 .../iceberg/flink/sink/IcebergFilesCommitter.java  |    3 +
 .../iceberg/flink/sink/shuffle/DataStatistics.java |    0
 .../flink/sink/shuffle/DataStatisticsEvent.java    |    0
 .../flink/sink/shuffle/DataStatisticsFactory.java  |    0
 .../flink/sink/shuffle/DataStatisticsOperator.java |    0
 .../flink/sink/shuffle/DataStatisticsOrRecord.java |    0
 .../flink/sink/shuffle/MapDataStatistics.java      |    0
 .../sink/shuffle/MapDataStatisticsFactory.java     |    0
 .../iceberg/flink/source/FlinkInputFormat.java     |    6 +-
 .../iceberg/flink/source/FlinkSplitPlanner.java    |   10 +-
 .../apache/iceberg/flink/source/IcebergSource.java |    3 +-
 .../flink/source/RowDataFileScanTaskReader.java    |   23 +-
 .../iceberg/flink/source/RowDataRewriter.java      |    4 +-
 .../enumerator/ContinuousSplitPlannerImpl.java     |    4 +-
 .../reader/AvroGenericRecordReaderFunction.java    |   10 +-
 .../flink/source/reader/RowDataReaderFunction.java |    9 +-
 .../apache/iceberg/flink/FlinkCatalogTestBase.java |    2 +-
 .../org/apache/iceberg/flink/FlinkTestBase.java    |   13 +
 .../apache/iceberg/flink/TestChangeLogTable.java   |    2 +-
 .../iceberg/flink/TestFlinkCatalogDatabase.java    |    4 +-
 .../iceberg/flink/TestFlinkCatalogTable.java       |    4 +-
 .../apache/iceberg/flink/TestFlinkHiveCatalog.java |    2 +-
 .../flink/actions/TestRewriteDataFilesAction.java  |  110 +
 .../sink/shuffle/TestDataStatisticsOperator.java   |    0
 .../flink/source/TestFlinkMergingMetrics.java      |    5 +-
 .../apache/iceberg/flink/source/TestFlinkScan.java |   43 +-
 .../iceberg/flink/source/TestFlinkSource.java      |    9 +-
 .../flink/source/TestIcebergSourceBounded.java     |    9 +-
 .../TestIcebergSourceBoundedGenericRecord.java     |    3 +-
 .../flink/source/TestIcebergSourceContinuous.java  |   51 +
 .../iceberg/flink/source/reader/ReaderUtil.java    |    4 +-
 .../source/reader/TestIcebergSourceReader.java     |    4 +-
 .../source/reader/TestRowDataReaderFunction.java   |    4 +-
 .../apache/iceberg/flink/FlinkSourceFilter.java    |   49 +
 .../iceberg/flink/source/FlinkInputFormat.java     |    6 +-
 .../iceberg/flink/source/FlinkSplitPlanner.java    |   10 +-
 .../apache/iceberg/flink/source/IcebergSource.java |    3 +-
 .../flink/source/RowDataFileScanTaskReader.java    |   23 +-
 .../iceberg/flink/source/RowDataRewriter.java      |    4 +-
 .../enumerator/ContinuousSplitPlannerImpl.java     |    4 +-
 .../reader/AvroGenericRecordReaderFunction.java    |   10 +-
 .../flink/source/reader/RowDataReaderFunction.java |    9 +-
 .../iceberg/flink/TestFlinkCatalogDatabase.java    |    4 +-
 .../iceberg/flink/TestFlinkCatalogTable.java       |    4 +-
 .../flink/actions/TestRewriteDataFilesAction.java  |  110 +
 .../apache/iceberg/flink/source/TestFlinkScan.java |   43 +-
 .../iceberg/flink/source/TestFlinkSource.java      |    9 +-
 .../flink/source/TestIcebergSourceBounded.java     |    9 +-
 .../TestIcebergSourceBoundedGenericRecord.java     |    3 +-
 .../flink/source/TestIcebergSourceContinuous.java  |   51 +
 .../iceberg/flink/source/reader/ReaderUtil.java    |    4 +-
 .../source/reader/TestIcebergSourceReader.java     |    4 +-
 .../source/reader/TestRowDataReaderFunction.java   |    4 +-
 .../apache/iceberg/flink/FlinkSourceFilter.java    |   49 +
 .../iceberg/flink/source/FlinkInputFormat.java     |    6 +-
 .../iceberg/flink/source/FlinkSplitPlanner.java    |   10 +-
 .../apache/iceberg/flink/source/IcebergSource.java |    3 +-
 .../flink/source/RowDataFileScanTaskReader.java    |   23 +-
 .../iceberg/flink/source/RowDataRewriter.java      |    4 +-
 .../enumerator/ContinuousSplitPlannerImpl.java     |    4 +-
 .../reader/AvroGenericRecordReaderFunction.java    |   10 +-
 .../flink/source/reader/RowDataReaderFunction.java |    9 +-
 .../iceberg/flink/TestFlinkCatalogDatabase.java    |   28 +-
 .../iceberg/flink/TestFlinkCatalogFactory.java     |   20 +-
 .../iceberg/flink/TestFlinkCatalogTable.java       |   33 +-
 .../flink/TestFlinkCatalogTablePartitions.java     |   10 +-
 .../apache/iceberg/flink/TestFlinkSchemaUtil.java  |   12 +-
 .../apache/iceberg/flink/TestIcebergConnector.java |   32 +-
 .../flink/actions/TestRewriteDataFilesAction.java  |  110 +
 .../iceberg/flink/data/TestRowDataProjection.java  |   29 +-
 .../iceberg/flink/sink/TestFlinkIcebergSink.java   |   41 +-
 .../iceberg/flink/sink/TestFlinkIcebergSinkV2.java |   29 +-
 .../flink/sink/TestFlinkIcebergSinkV2Base.java     |   55 +-
 .../apache/iceberg/flink/source/TestFlinkScan.java |   87 +-
 .../iceberg/flink/source/TestFlinkSource.java      |    9 +-
 .../flink/source/TestFlinkSourceConfig.java        |   14 +-
 .../iceberg/flink/source/TestFlinkTableSource.java |    8 +-
 .../flink/source/TestIcebergSourceBounded.java     |    9 +-
 .../TestIcebergSourceBoundedGenericRecord.java     |    3 +-
 .../flink/source/TestIcebergSourceContinuous.java  |   51 +
 .../iceberg/flink/source/TestStreamScanSql.java    |   34 +-
 .../flink/source/TestStreamingMonitorFunction.java |   24 +-
 .../enumerator/TestContinuousSplitPlannerImpl.java |   34 +-
 ...estContinuousSplitPlannerImplStartStrategy.java |   38 +-
 .../iceberg/flink/source/reader/ReaderUtil.java    |    4 +-
 .../source/reader/TestIcebergSourceReader.java     |    4 +-
 .../source/reader/TestRowDataReaderFunction.java   |    4 +-
 format/view-spec.md                                |  325 ++-
 gradle.properties                                  |    4 +-
 .../org/apache/iceberg/hive/CachedClientPool.java  |   15 +-
 .../java/org/apache/iceberg/hive/HiveCatalog.java  |    3 +
 .../apache/iceberg/hive/HiveTableOperations.java   |   66 +-
 .../org/apache/iceberg/hive/MetastoreUtil.java     |   28 +-
 .../main/java/org/apache/iceberg/hive/NoLock.java  |   28 +-
 .../iceberg/hive/HiveCreateReplaceTableTest.java   |   40 +-
 .../org/apache/iceberg/hive/HiveTableTest.java     |   33 +-
 .../apache/iceberg/hive/TestCachedClientPool.java  |   55 +
 .../org/apache/iceberg/hive/TestHiveCatalog.java   |  309 +--
 .../apache/iceberg/hive/TestHiveClientPool.java    |   18 +-
 .../apache/iceberg/hive/TestHiveCommitLocks.java   |  130 +-
 .../org/apache/iceberg/hive/TestHiveCommits.java   |   92 +-
 .../apache/iceberg/hive/TestHiveSchemaUtil.java    |   13 +-
 .../org/apache/hadoop/hive/ql/io/orc/OrcSplit.java |   12 +-
 jmh.gradle                                         |   12 +-
 .../iceberg/mr/hive/HiveIcebergFilterFactory.java  |    6 +
 .../mr/hive/TestHiveIcebergFilterFactory.java      |   74 +
 open-api/rest-catalog-open-api.yaml                |   18 +-
 .../java/org/apache/iceberg/orc/OrcIterable.java   |    6 +-
 .../org/apache/iceberg/orc/TestORCSchemaUtil.java  |   12 +-
 .../org/apache/iceberg/orc/TestOrcDataReader.java  |  170 ++
 python/.pre-commit-config.yaml                     |   17 +-
 python/mkdocs/docs/SUMMARY.md                      |   31 +
 python/mkdocs/docs/api.md                          |    5 +
 .../docs/assets/images/iceberg-logo-icon.png       |  Bin 0 -> 17608 bytes
 python/mkdocs/docs/cli.md                          |    5 +
 python/mkdocs/docs/configuration.md                |   14 +
 python/mkdocs/docs/contributing.md                 |    5 +
 python/mkdocs/docs/feature-support.md              |    5 +
 python/mkdocs/docs/index.md                        |    5 +
 python/mkdocs/gen_doc_stubs.py                     |   55 +
 python/mkdocs/mkdocs.yml                           |   50 +-
 python/mkdocs/requirements.txt                     |    9 +
 python/poetry.lock                                 |  750 +++---
 python/pyiceberg/catalog/rest.py                   |  123 +-
 python/pyiceberg/conversions.py                    |   16 +-
 python/pyiceberg/expressions/__init__.py           |    2 +-
 python/pyiceberg/expressions/literals.py           |   17 +-
 python/pyiceberg/expressions/visitors.py           |   38 +-
 python/pyiceberg/io/__init__.py                    |   24 +-
 python/pyiceberg/io/fsspec.py                      |   22 +-
 python/pyiceberg/io/pyarrow.py                     |  242 +-
 python/pyiceberg/schema.py                         |   29 +-
 python/pyiceberg/table/sorting.py                  |    4 +-
 python/pyiceberg/transforms.py                     |    6 +-
 python/pyiceberg/typedef.py                        |    2 +-
 python/pyiceberg/types.py                          |   12 +-
 python/pyiceberg/utils/decimal.py                  |    2 +-
 python/pyproject.toml                              |   44 +-
 python/tests/catalog/test_rest.py                  |   18 +-
 python/tests/io/test_pyarrow.py                    |  104 +-
 python/tests/io/test_pyarrow_visitor.py            |  271 ++
 python/tests/test_integration.py                   |   24 +
 python/tests/test_transforms.py                    |    8 +-
 python/tests/utils/test_bin_packing.py             |    2 +-
 settings.gradle                                    |   22 +-
 spark/build.gradle                                 |   10 +-
 spark/v2.4/build.gradle                            |  184 --
 spark/v2.4/spark-runtime/LICENSE                   |  606 -----
 .../SparkParquetReadersFlatDataBenchmark.java      |  222 --
 .../SparkParquetReadersNestedDataBenchmark.java    |  220 --
 .../SparkParquetWritersFlatDataBenchmark.java      |  128 -
 .../SparkParquetWritersNestedDataBenchmark.java    |  128 -
 .../spark/source/IcebergSourceBenchmark.java       |  199 --
 .../iceberg/spark/source/WritersBenchmark.java     |  366 ---
 .../spark/source/avro/AvroWritersBenchmark.java    |   39 -
 .../IcebergSourceFlatAvroDataReadBenchmark.java    |  142 -
 .../IcebergSourceNestedAvroDataReadBenchmark.java  |  142 -
 .../orc/IcebergSourceFlatORCDataReadBenchmark.java |  210 --
 ...ebergSourceNestedListORCDataWriteBenchmark.java |  109 -
 .../IcebergSourceNestedORCDataReadBenchmark.java   |  183 --
 ...cebergSourceFlatParquetDataFilterBenchmark.java |  129 -
 .../IcebergSourceFlatParquetDataReadBenchmark.java |  165 --
 ...IcebergSourceFlatParquetDataWriteBenchmark.java |   89 -
 ...gSourceNestedListParquetDataWriteBenchmark.java |   89 -
 ...bergSourceNestedParquetDataFilterBenchmark.java |  128 -
 ...cebergSourceNestedParquetDataReadBenchmark.java |  166 --
 ...ebergSourceNestedParquetDataWriteBenchmark.java |   88 -
 .../source/parquet/ParquetWritersBenchmark.java    |   39 -
 ...dDictionaryEncodedFlatParquetDataBenchmark.java |  141 -
 .../VectorizedReadFlatParquetDataBenchmark.java    |  333 ---
 .../java/org/apache/iceberg/actions/Actions.java   |  105 -
 .../iceberg/actions/RewriteDataFilesAction.java    |   70 -
 .../org/apache/iceberg/spark/IcebergSpark.java     |   43 -
 .../org/apache/iceberg/spark/SparkConfParser.java  |  186 --
 .../org/apache/iceberg/spark/SparkDataFile.java    |  208 --
 .../org/apache/iceberg/spark/SparkFilters.java     |  192 --
 .../apache/iceberg/spark/SparkSQLProperties.java   |   45 -
 .../org/apache/iceberg/spark/SparkSchemaUtil.java  |  308 ---
 .../apache/iceberg/spark/SparkValueConverter.java  |  133 -
 .../org/apache/iceberg/spark/SparkWriteConf.java   |  152 --
 .../org/apache/iceberg/spark/TypeToSparkType.java  |  122 -
 .../actions/BaseDeleteOrphanFilesSparkAction.java  |  299 ---
 .../BaseDeleteReachableFilesSparkAction.java       |  212 --
 .../actions/BaseExpireSnapshotsSparkAction.java    |  295 ---
 .../actions/BaseRewriteManifestsSparkAction.java   |  408 ---
 .../actions/BaseSnapshotUpdateSparkAction.java     |   45 -
 .../iceberg/spark/actions/BaseSparkAction.java     |  176 --
 .../iceberg/spark/actions/BaseSparkActions.java    |   60 -
 .../iceberg/spark/actions/ManifestFileBean.java    |  143 --
 .../apache/iceberg/spark/actions/SparkActions.java |   43 -
 .../iceberg/spark/data/SparkValueReaders.java      |  288 ---
 .../spark/data/vectorized/ColumnarBatchReader.java |   64 -
 .../data/vectorized/ConstantColumnVector.java      |  122 -
 .../data/vectorized/IcebergArrowColumnVector.java  |  159 --
 .../data/vectorized/RowPositionColumnVector.java   |  120 -
 .../vectorized/VectorizedSparkParquetReaders.java  |   53 -
 .../iceberg/spark/source/BaseDataReader.java       |  205 --
 .../iceberg/spark/source/BatchDataReader.java      |  130 -
 .../iceberg/spark/source/CustomCatalogs.java       |  111 -
 .../spark/source/EqualityDeleteRowReader.java      |   54 -
 .../apache/iceberg/spark/source/IcebergSource.java |  189 --
 .../org/apache/iceberg/spark/source/Reader.java    |  591 -----
 .../apache/iceberg/spark/source/RowDataReader.java |  197 --
 .../iceberg/spark/source/RowDataRewriter.java      |  179 --
 .../spark/source/SparkFileWriterFactory.java       |  276 --
 .../iceberg/spark/source/StreamingOffset.java      |  138 -
 .../iceberg/spark/source/StreamingWriter.java      |  120 -
 .../iceberg/spark/source/StructInternalRow.java    |  359 ---
 .../org/apache/iceberg/spark/source/Writer.java    |  375 ---
 .../java/org/apache/iceberg/TaskCheckHelper.java   |  109 -
 .../apache/iceberg/TestFileIOSerialization.java    |  108 -
 .../apache/iceberg/TestScanTaskSerialization.java  |  143 --
 .../actions/TestRewriteDataFilesAction.java        |  469 ----
 .../apache/iceberg/examples/ConcurrencyTest.java   |  123 -
 .../java/org/apache/iceberg/examples/README.md     |  195 --
 .../iceberg/examples/ReadAndWriteTablesTest.java   |  150 --
 .../iceberg/examples/SchemaEvolutionTest.java      |  214 --
 .../org/apache/iceberg/examples/SimpleRecord.java  |   78 -
 .../examples/SnapshotFunctionalityTest.java        |  147 --
 .../org/apache/iceberg/spark/SparkTestBase.java    |  219 --
 .../apache/iceberg/spark/TestSparkSchemaUtil.java  |   54 -
 .../org/apache/iceberg/spark/data/TestHelpers.java |  770 ------
 .../iceberg/spark/data/TestSparkDateTimes.java     |   70 -
 .../iceberg/spark/data/TestSparkParquetReader.java |  206 --
 .../apache/iceberg/spark/source/ManualSource.java  |  109 -
 .../apache/iceberg/spark/source/TestCatalog.java   |  128 -
 .../iceberg/spark/source/TestCustomCatalog.java    |  207 --
 .../iceberg/spark/source/TestDataFrameWrites.java  |  422 ---
 .../iceberg/spark/source/TestFilteredScan.java     |  658 -----
 .../source/TestIcebergSourceHadoopTables.java      |   67 -
 .../spark/source/TestIcebergSourceHiveTables.java  |   78 -
 .../iceberg/spark/source/TestIcebergSpark.java     |  205 --
 .../spark/source/TestNameMappingProjection.java    |  210 --
 .../iceberg/spark/source/TestPartitionPruning.java |  467 ----
 .../iceberg/spark/source/TestPartitionValues.java  |  493 ----
 .../apache/iceberg/spark/source/TestSelect.java    |  252 --
 .../spark/source/TestSnapshotSelection.java        |  227 --
 .../spark/source/TestSparkBaseDataReader.java      |  276 --
 .../spark/source/TestSparkReaderDeletes.java       |  245 --
 .../iceberg/spark/source/TestSparkSchema.java      |  182 --
 .../iceberg/spark/source/TestSparkTableUtil.java   |  571 -----
 .../TestSparkTableUtilWithInMemoryCatalog.java     |  580 -----
 .../iceberg/spark/source/TestStreamingOffset.java  |   62 -
 .../spark/source/TestStructuredStreaming.java      |  301 ---
 .../apache/iceberg/spark/source/TestTables.java    |  205 --
 .../v2.4/spark/src/test/resources/data/books.json  |    6 -
 .../spark/src/test/resources/data/new-books.json   |    4 -
 .../org/apache/iceberg/spark/SparkCatalog.java     |   12 +-
 .../org/apache/iceberg/spark/SparkReadConf.java    |    2 +-
 .../org/apache/iceberg/spark/SparkReadOptions.java |    2 +-
 .../java/org/apache/iceberg/spark/SparkUtil.java   |    4 +
 .../org/apache/iceberg/spark/SparkWriteConf.java   |   17 +
 .../apache/iceberg/spark/SparkWriteOptions.java    |    2 +
 .../apache/iceberg/spark/data/SparkAvroWriter.java |    2 +-
 .../apache/iceberg/spark/data/SparkOrcReader.java  |    3 +
 .../iceberg/spark/data/SparkOrcValueReaders.java   |   20 +
 .../iceberg/spark/data/SparkOrcValueWriters.java   |   20 +
 .../apache/iceberg/spark/data/SparkOrcWriter.java  |   12 +-
 .../iceberg/spark/data/SparkParquetReaders.java    |   17 +
 .../iceberg/spark/data/SparkParquetWriters.java    |   33 +
 .../iceberg/spark/data/SparkValueWriters.java      |    8 +-
 .../vectorized/ArrowVectorAccessorFactory.java     |    7 +
 .../data/vectorized/VectorizedSparkOrcReaders.java |    5 +-
 .../spark/source/SparkMicroBatchStream.java        |   17 +-
 .../apache/iceberg/spark/source/SparkWrite.java    |   15 +-
 .../apache/iceberg/spark/data/AvroDataTest.java    |    2 +-
 .../org/apache/iceberg/spark/data/RandomData.java  |    2 +
 .../iceberg/spark/data/TestSparkParquetWriter.java |    2 +-
 .../spark/source/TestIcebergSourceTablesBase.java  |   40 +-
 .../spark/source/TestStructuredStreamingRead3.java |   42 +
 .../iceberg/spark/sql/TestPartitionedWrites.java   |   85 +
 .../org/apache/iceberg/spark/SparkCatalog.java     |   12 +-
 .../org/apache/iceberg/spark/SparkReadConf.java    |    2 +-
 .../org/apache/iceberg/spark/SparkReadOptions.java |    2 +-
 .../org/apache/iceberg/spark/SparkWriteConf.java   |   15 +
 .../apache/iceberg/spark/SparkWriteOptions.java    |    2 +
 .../apache/iceberg/spark/data/SparkAvroWriter.java |    2 +-
 .../apache/iceberg/spark/data/SparkOrcReader.java  |    3 +
 .../iceberg/spark/data/SparkOrcValueReaders.java   |   20 +
 .../iceberg/spark/data/SparkOrcValueWriters.java   |   20 +
 .../apache/iceberg/spark/data/SparkOrcWriter.java  |   12 +-
 .../iceberg/spark/data/SparkParquetReaders.java    |   17 +
 .../iceberg/spark/data/SparkParquetWriters.java    |   33 +
 .../iceberg/spark/data/SparkValueWriters.java      |    8 +-
 .../vectorized/ArrowVectorAccessorFactory.java     |    7 +
 .../data/vectorized/VectorizedSparkOrcReaders.java |    5 +-
 .../spark/source/SparkMicroBatchStream.java        |   17 +-
 .../apache/iceberg/spark/source/SparkWrite.java    |    8 +-
 .../apache/iceberg/spark/data/AvroDataTest.java    |    2 +-
 .../org/apache/iceberg/spark/data/RandomData.java  |    2 +
 .../iceberg/spark/data/TestSparkParquetWriter.java |    2 +-
 .../spark/source/TestIcebergSourceTablesBase.java  |  198 +-
 .../spark/source/TestStructuredStreamingRead3.java |   42 +
 .../iceberg/spark/sql/TestPartitionedWrites.java   |   85 +
 spark/v3.3/build.gradle                            |    5 +
 .../v2/SetWriteDistributionAndOrderingExec.scala   |    3 +-
 .../extensions/TestRewriteDataFilesProcedure.java  |    6 +-
 .../TestSetWriteDistributionAndOrdering.java       |   25 +
 .../iceberg/spark/FileScanTaskSetManager.java      |   79 -
 .../org/apache/iceberg/spark/SparkCatalog.java     |   25 +-
 .../org/apache/iceberg/spark/SparkReadConf.java    |   18 +-
 .../org/apache/iceberg/spark/SparkReadOptions.java |    9 +-
 .../org/apache/iceberg/spark/SparkWriteConf.java   |   15 +
 .../apache/iceberg/spark/SparkWriteOptions.java    |    2 +
 .../spark/actions/RewriteDataFilesSparkAction.java |   66 +-
 .../spark/actions/SparkBinPackDataRewriter.java    |   70 +
 .../spark/actions/SparkBinPackStrategy.java        |    6 +
 .../spark/actions/SparkShufflingDataRewriter.java  |  138 +
 .../spark/actions/SparkSizeBasedDataRewriter.java  |   67 +
 .../spark/actions/SparkSortDataRewriter.java       |   60 +
 .../iceberg/spark/actions/SparkSortStrategy.java   |    6 +
 .../spark/actions/SparkZOrderDataRewriter.java     |  184 ++
 .../iceberg/spark/actions/SparkZOrderStrategy.java |    6 +
 .../apache/iceberg/spark/data/SparkAvroWriter.java |    2 +-
 .../apache/iceberg/spark/data/SparkOrcReader.java  |    3 +
 .../iceberg/spark/data/SparkOrcValueReaders.java   |   20 +
 .../iceberg/spark/data/SparkOrcValueWriters.java   |   20 +
 .../apache/iceberg/spark/data/SparkOrcWriter.java  |   12 +-
 .../iceberg/spark/data/SparkParquetReaders.java    |   17 +
 .../iceberg/spark/data/SparkParquetWriters.java    |   33 +
 .../iceberg/spark/data/SparkValueWriters.java      |    8 +-
 .../vectorized/ArrowVectorAccessorFactory.java     |    7 +
 .../data/vectorized/VectorizedSparkOrcReaders.java |   92 +-
 .../spark/source/SparkMicroBatchStream.java        |  194 +-
 .../apache/iceberg/spark/source/SparkWrite.java    |    8 +-
 .../org/apache/iceberg/TestTableSerialization.java |   17 +-
 .../spark/actions/TestRewriteDataFilesAction.java  |   12 +-
 .../spark/actions/TestSparkFileRewriter.java       |  396 +++
 .../apache/iceberg/spark/data/AvroDataTest.java    |    2 +-
 .../org/apache/iceberg/spark/data/RandomData.java  |    2 +
 .../iceberg/spark/data/TestSparkParquetWriter.java |    2 +-
 .../spark/data/TestVectorizedOrcDataReader.java    |  166 ++
 .../spark/source/TestIcebergSourceTablesBase.java  |  198 +-
 .../source/TestMetadataTableReadableMetrics.java   |   72 +-
 .../spark/source/TestStructuredStreamingRead3.java |  118 +-
 .../spark/sql/PartitionedWritesTestBase.java       |   96 +
 .../sql/TestPartitionedWritesToWapBranch.java      |    8 +
 spark/{v3.3 => v3.4}/build.gradle                  |    9 +-
 .../IcebergSqlExtensions.g4                        |    0
 .../extensions/IcebergSparkSessionExtensions.scala |   72 +
 .../analysis/AlignRowLevelCommandAssignments.scala |  113 +
 .../AlignedRowLevelIcebergCommandCheck.scala       |    0
 .../analysis/AssignmentAlignmentSupport.scala      |  205 ++
 .../analysis/CheckMergeIntoTableConditions.scala   |    0
 .../MergeIntoIcebergTableResolutionCheck.scala     |    0
 .../analysis/ProcedureArgumentCoercion.scala       |    0
 .../analysis/ResolveMergeIntoTableReferences.scala |  153 ++
 .../sql/catalyst/analysis/ResolveProcedures.scala  |    0
 .../catalyst/analysis/RewriteMergeIntoTable.scala  |  459 ++++
 .../analysis/RewriteRowLevelIcebergCommand.scala   |   91 +
 .../sql/catalyst/analysis/RewriteUpdateTable.scala |  183 ++
 .../sql/catalyst/expressions/AssignmentUtils.scala |    0
 .../ExtendedReplaceNullWithFalseInPredicate.scala  |  128 +
 .../ExtendedSimplifyConditionalsInPredicate.scala  |   91 +
 .../IcebergSparkSqlExtensionsParser.scala          |  395 +++
 .../IcebergSqlExtensionsAstBuilder.scala           |    0
 .../planning/RewrittenRowLevelCommand.scala        |  113 +
 .../catalyst/plans/logical/AddPartitionField.scala |    0
 .../sql/catalyst/plans/logical/BranchOptions.scala |    0
 .../spark/sql/catalyst/plans/logical/Call.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
 .../plans/logical/MergeIntoIcebergTable.scala      |    0
 .../sql/catalyst/plans/logical/MergeRows.scala     |    0
 .../catalyst/plans/logical/NoStatsUnaryNode.scala  |    0
 .../plans/logical/ReplaceIcebergData.scala         |    0
 .../plans/logical/ReplacePartitionField.scala      |    0
 .../catalyst/plans/logical/RowLevelCommand.scala   |    0
 .../plans/logical/SetIdentifierFields.scala        |    0
 .../sql/catalyst/plans/logical/TagOptions.scala    |    0
 .../logical/UnresolvedMergeIntoIcebergTable.scala  |    0
 .../plans/logical/UpdateIcebergTable.scala         |    0
 .../plans/logical/V2WriteCommandLike.scala         |    0
 .../catalyst/plans/logical/WriteIcebergDelta.scala |  126 +
 .../sql/catalyst/plans/logical/statements.scala    |    0
 .../datasources/v2/AddPartitionFieldExec.scala     |    0
 .../sql/execution/datasources/v2/CallExec.scala    |    0
 .../datasources/v2/CreateOrReplaceBranchExec.scala |    0
 .../datasources/v2/CreateOrReplaceTagExec.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
 .../v2/ExtendedDataSourceV2Implicits.scala         |    0
 .../v2/ExtendedDataSourceV2Strategy.scala          |  138 +
 .../datasources/v2/ExtendedV2Writes.scala          |   90 +
 .../execution/datasources/v2/MergeRowsExec.scala   |    0
 .../execution/datasources/v2/ReplaceDataExec.scala |    0
 .../datasources/v2/ReplacePartitionFieldExec.scala |    0
 .../v2/ReplaceRewrittenRowLevelCommand.scala       |    0
 .../v2/RowLevelCommandScanRelationPushDown.scala   |  195 ++
 .../datasources/v2/SetIdentifierFieldsExec.scala   |    0
 .../v2/SetWriteDistributionAndOrderingExec.scala   |    3 +-
 .../RowLevelCommandDynamicPruning.scala            |  178 ++
 .../apache/iceberg/spark/extensions/Employee.java  |    0
 .../spark/extensions/SparkExtensionsTestBase.java  |    0
 .../SparkRowLevelOperationsTestBase.java           |    0
 .../spark/extensions/TestAddFilesProcedure.java    |    0
 .../extensions/TestAlterTablePartitionFields.java  |    0
 .../spark/extensions/TestAlterTableSchema.java     |    0
 .../spark/extensions/TestAncestorsOfProcedure.java |    0
 .../iceberg/spark/extensions/TestBranchDDL.java    |    0
 .../spark/extensions/TestCallStatementParser.java  |    0
 .../spark/extensions/TestChangelogTable.java       |    0
 .../TestCherrypickSnapshotProcedure.java           |    0
 .../spark/extensions/TestConflictValidation.java   |  436 ++++
 .../spark/extensions/TestCopyOnWriteDelete.java    |    0
 .../spark/extensions/TestCopyOnWriteMerge.java     |    0
 .../spark/extensions/TestCopyOnWriteUpdate.java    |    0
 .../TestCreateChangelogViewProcedure.java          |    0
 .../iceberg/spark/extensions/TestDelete.java       | 1304 ++++++++++
 .../extensions/TestExpireSnapshotsProcedure.java   |    0
 .../apache/iceberg/spark/extensions/TestMerge.java | 2708 ++++++++++++++++++++
 .../spark/extensions/TestMergeOnReadDelete.java    |  158 ++
 .../spark/extensions/TestMergeOnReadMerge.java     |    0
 .../spark/extensions/TestMergeOnReadUpdate.java    |    0
 .../spark/extensions/TestMetadataTables.java       |    0
 .../extensions/TestMigrateTableProcedure.java      |    0
 .../extensions/TestPublishChangesProcedure.java    |    0
 .../extensions/TestRegisterTableProcedure.java     |    0
 .../extensions/TestRemoveOrphanFilesProcedure.java |  629 +++++
 .../spark/extensions/TestReplaceBranch.java        |    0
 .../TestRequiredDistributionAndOrdering.java       |  300 +++
 .../extensions/TestRewriteDataFilesProcedure.java  |   14 +-
 .../extensions/TestRewriteManifestsProcedure.java  |    0
 .../TestRollbackToSnapshotProcedure.java           |    0
 .../TestRollbackToTimestampProcedure.java          |    0
 .../TestSetCurrentSnapshotProcedure.java           |    0
 .../TestSetWriteDistributionAndOrdering.java       |   26 +
 .../extensions/TestSnapshotTableProcedure.java     |  231 ++
 ...toragePartitionedJoinsInRowLevelOperations.java |  309 +++
 .../iceberg/spark/extensions/TestTagDDL.java       |    0
 .../iceberg/spark/extensions/TestUpdate.java       | 1462 +++++++++++
 .../iceberg/spark/extensions/TestWriteAborts.java  |  193 ++
 spark/{v3.2 => v3.4}/spark-runtime/LICENSE         |    0
 spark/{v2.4 => v3.4}/spark-runtime/NOTICE          |    0
 .../java/org/apache/iceberg/spark/SmokeTest.java   |    0
 .../apache/iceberg/spark/SparkBenchmarkUtil.java   |    0
 .../spark/action/DeleteOrphanFilesBenchmark.java   |    0
 .../action/IcebergSortCompactionBenchmark.java     |    0
 .../iceberg/spark/action/RandomGeneratingUDF.java  |    0
 .../SparkParquetReadersFlatDataBenchmark.java      |    0
 .../SparkParquetReadersNestedDataBenchmark.java    |    0
 .../SparkParquetWritersFlatDataBenchmark.java      |    0
 .../SparkParquetWritersNestedDataBenchmark.java    |    0
 .../org/apache/iceberg/spark/source/Action.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    |    0
 .../IcebergSourceFlatAvroDataReadBenchmark.java    |    0
 .../IcebergSourceNestedAvroDataReadBenchmark.java  |    0
 .../orc/IcebergSourceFlatORCDataBenchmark.java     |    0
 .../orc/IcebergSourceFlatORCDataReadBenchmark.java |    0
 ...ebergSourceNestedListORCDataWriteBenchmark.java |    0
 .../IcebergSourceNestedORCDataReadBenchmark.java   |    0
 ...cebergSourceFlatParquetDataFilterBenchmark.java |    0
 .../IcebergSourceFlatParquetDataReadBenchmark.java |    0
 ...IcebergSourceFlatParquetDataWriteBenchmark.java |    0
 ...gSourceNestedListParquetDataWriteBenchmark.java |    0
 ...bergSourceNestedParquetDataFilterBenchmark.java |    0
 ...cebergSourceNestedParquetDataReadBenchmark.java |    0
 ...ebergSourceNestedParquetDataWriteBenchmark.java |    0
 .../IcebergSourceParquetEqDeleteBenchmark.java     |    0
 ...ebergSourceParquetMultiDeleteFileBenchmark.java |    0
 .../IcebergSourceParquetPosDeleteBenchmark.java    |    0
 ...gSourceParquetWithUnrelatedDeleteBenchmark.java |    0
 .../source/parquet/ParquetWritersBenchmark.java    |    0
 ...dDictionaryEncodedFlatParquetDataBenchmark.java |    0
 .../VectorizedReadFlatParquetDataBenchmark.java    |    0
 .../VectorizedReadParquetDecimalBenchmark.java     |    0
 .../java/org/apache/iceberg/spark/BaseCatalog.java |   72 +
 .../iceberg/spark/BaseFileRewriteCoordinator.java  |    0
 .../apache/iceberg/spark/ChangelogIterator.java    |    0
 .../org/apache/iceberg/spark/CommitMetadata.java   |    0
 .../org/apache/iceberg/spark/ExtendedParser.java   |    0
 .../iceberg/spark/FileRewriteCoordinator.java      |   17 +-
 .../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/PathIdentifier.java   |    0
 .../spark/PositionDeletesRewriteCoordinator.java   |    0
 .../iceberg/spark/PruneColumnsWithReordering.java  |    0
 .../spark/PruneColumnsWithoutReordering.java       |    0
 .../apache/iceberg/spark/RollbackStagedTable.java  |    0
 .../apache/iceberg/spark/ScanTaskSetManager.java   |    0
 .../org/apache/iceberg/spark/SortOrderToSpark.java |  101 +
 .../java/org/apache/iceberg/spark/Spark3Util.java  | 1003 ++++++++
 .../org/apache/iceberg/spark/SparkAggregates.java  |    0
 .../iceberg/spark/SparkCachedTableCatalog.java     |  211 ++
 .../org/apache/iceberg/spark/SparkCatalog.java     |   25 +-
 .../org/apache/iceberg/spark/SparkConfParser.java  |    0
 .../org/apache/iceberg/spark/SparkDataFile.java    |    0
 .../spark/SparkDistributionAndOrderingUtil.java    |    0
 .../apache/iceberg/spark/SparkExceptionUtil.java   |    0
 .../org/apache/iceberg/spark/SparkFilters.java     |    0
 .../iceberg/spark/SparkFixupTimestampType.java     |    0
 .../org/apache/iceberg/spark/SparkFixupTypes.java  |    0
 .../iceberg/spark/SparkFunctionCatalog.java}       |   28 +-
 .../org/apache/iceberg/spark/SparkReadConf.java    |  125 +
 .../org/apache/iceberg/spark/SparkReadOptions.java |   43 +-
 .../apache/iceberg/spark/SparkSQLProperties.java   |    0
 .../org/apache/iceberg/spark/SparkSchemaUtil.java  |    0
 .../apache/iceberg/spark/SparkSessionCatalog.java  |    0
 .../org/apache/iceberg/spark/SparkStructLike.java  |    0
 .../org/apache/iceberg/spark/SparkTableCache.java  |    0
 .../org/apache/iceberg/spark/SparkTableUtil.java   |  153 +-
 .../org/apache/iceberg/spark/SparkTypeToType.java  |    0
 .../org/apache/iceberg/spark/SparkTypeVisitor.java |    0
 .../java/org/apache/iceberg/spark/SparkUtil.java   |  129 +-
 .../org/apache/iceberg/spark/SparkV2Filters.java   |    0
 .../apache/iceberg/spark/SparkValueConverter.java  |    0
 .../org/apache/iceberg/spark/SparkWriteConf.java   |   15 +
 .../apache/iceberg/spark/SparkWriteOptions.java    |   29 +
 .../apache/iceberg/spark/SupportsFunctions.java    |   63 +
 .../org/apache/iceberg/spark/TypeToSparkType.java  |    0
 .../actions/BaseSnapshotUpdateSparkAction.java     |    0
 .../iceberg/spark/actions/BaseSparkAction.java     |    0
 .../actions/BaseTableCreationSparkAction.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
 .../spark/actions/RewriteDataFilesSparkAction.java |   66 +-
 .../spark/actions/RewriteManifestsSparkAction.java |    0
 .../actions/RewritePositionDeleteSparkAction.java} |  349 +--
 .../iceberg/spark/actions/SetAccumulator.java      |    0
 .../spark/actions/SnapshotTableSparkAction.java    |    0
 .../apache/iceberg/spark/actions/SparkActions.java |   99 +
 .../spark/actions/SparkBinPackDataRewriter.java    |   70 +
 .../SparkBinPackPositionDeletesRewriter.java       |  141 +
 .../spark/actions/SparkShufflingDataRewriter.java  |  179 ++
 .../spark/actions/SparkSizeBasedDataRewriter.java  |   67 +
 .../spark/actions/SparkSortDataRewriter.java       |   64 +
 .../spark/actions/SparkZOrderDataRewriter.java     |  189 ++
 .../iceberg/spark/actions/SparkZOrderUDF.java      |    0
 .../spark/data/AvroWithSparkSchemaVisitor.java     |    0
 .../spark/data/ParquetWithSparkSchemaVisitor.java  |    0
 .../apache/iceberg/spark/data/SparkAvroReader.java |    0
 .../apache/iceberg/spark/data/SparkAvroWriter.java |    2 +-
 .../apache/iceberg/spark/data/SparkOrcReader.java  |    3 +
 .../iceberg/spark/data/SparkOrcValueReaders.java   |   20 +
 .../iceberg/spark/data/SparkOrcValueWriters.java   |   20 +
 .../apache/iceberg/spark/data/SparkOrcWriter.java  |   12 +-
 .../iceberg/spark/data/SparkParquetReaders.java    |   25 +-
 .../iceberg/spark/data/SparkParquetWriters.java    |   38 +-
 .../iceberg/spark/data/SparkValueReaders.java      |    0
 .../iceberg/spark/data/SparkValueWriters.java      |    8 +-
 .../vectorized/ArrowVectorAccessorFactory.java     |    7 +
 .../data/vectorized/ArrowVectorAccessors.java      |    0
 .../spark/data/vectorized/ColumnVectorBuilder.java |    0
 .../data/vectorized/ColumnVectorWithFilter.java    |    0
 .../spark/data/vectorized/ColumnarBatchReader.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 |   92 +-
 .../vectorized/VectorizedSparkParquetReaders.java  |  161 ++
 .../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    |    0
 .../procedures/CherrypickSnapshotProcedure.java    |    0
 .../procedures/CreateChangelogViewProcedure.java   |    0
 .../spark/procedures/ExpireSnapshotsProcedure.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
 .../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
 .../spark/source/EqualityDeleteRowReader.java      |    0
 .../iceberg/spark/source/HasIcebergCatalog.java    |    0
 .../apache/iceberg/spark/source/IcebergSource.java |    0
 .../iceberg/spark/source/InternalRowWrapper.java   |    0
 .../spark/source/PositionDeletesRowReader.java     |    0
 .../apache/iceberg/spark/source/RowDataReader.java |    0
 .../spark/source/SerializableTableWithSize.java    |    0
 .../iceberg/spark/source/SparkAppenderFactory.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  |    0
 .../iceberg/spark/source/SparkCleanupUtil.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        |  194 +-
 .../spark/source/SparkPartitionedFanoutWriter.java |    0
 .../spark/source/SparkPartitionedWriter.java       |    0
 .../spark/source/SparkPartitioningAwareScan.java   |  251 ++
 .../spark/source/SparkPositionDeletesRewrite.java  |  413 +++
 .../source/SparkPositionDeletesRewriteBuilder.java |    0
 .../spark/source/SparkPositionDeltaOperation.java  |  110 +
 .../spark/source/SparkPositionDeltaWrite.java      |  736 ++++++
 .../source/SparkPositionDeltaWriteBuilder.java     |  153 ++
 .../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    |    0
 .../apache/iceberg/spark/source/SparkWrite.java    |   13 +-
 .../iceberg/spark/source/SparkWriteBuilder.java    |  261 ++
 .../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    |    0
 .../iceberg/spark/source/metrics/NumDeletes.java   |    0
 .../iceberg/spark/source/metrics/NumSplits.java    |    0
 .../spark/source/metrics/TaskNumDeletes.java       |    0
 .../spark/source/metrics/TaskNumSplits.java        |    0
 .../analysis/NoSuchProcedureException.java}        |   29 +-
 .../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
 .../logical/SetWriteDistributionAndOrdering.scala  |    0
 .../plans/logical/SortOrderParserUtil.scala        |    0
 .../spark/sql/catalyst/utils/PlanUtils.scala       |    0
 .../datasources/SparkExpressionConverter.scala     |    0
 .../test/java/org/apache/iceberg/KryoHelpers.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
 .../org/apache/iceberg/TestTableSerialization.java |   24 +-
 .../java/org/apache/iceberg/ValidationHelpers.java |    0
 .../apache/iceberg/spark/SparkCatalogConfig.java   |    0
 .../apache/iceberg/spark/SparkCatalogTestBase.java |    0
 .../org/apache/iceberg/spark/SparkTestBase.java    |    0
 .../iceberg/spark/SparkTestBaseWithCatalog.java    |    0
 .../apache/iceberg/spark/SparkTestHelperBase.java  |    0
 .../iceberg/spark/TestChangelogIterator.java       |    0
 .../iceberg/spark/TestFileRewriteCoordinator.java  |  273 ++
 .../apache/iceberg/spark/TestFunctionCatalog.java  |  136 +
 .../org/apache/iceberg/spark/TestSpark3Util.java   |    0
 .../iceberg/spark/TestSparkCachedTableCatalog.java |    0
 .../iceberg/spark/TestSparkCatalogOperations.java  |    0
 .../TestSparkDistributionAndOrderingUtil.java      |    0
 .../org/apache/iceberg/spark/TestSparkFilters.java |    0
 .../apache/iceberg/spark/TestSparkSchemaUtil.java  |    0
 .../iceberg/spark/TestSparkSessionCatalog.java     |    0
 .../apache/iceberg/spark/TestSparkTableUtil.java   |    0
 .../apache/iceberg/spark/TestSparkV2Filters.java   |    0
 .../iceberg/spark/TestSparkValueConverter.java     |    0
 .../apache/iceberg/spark/TestSparkWriteConf.java   |    0
 .../iceberg/spark/actions/TestCreateActions.java   |    0
 .../actions/TestDeleteReachableFilesAction.java    |  130 +-
 .../spark/actions/TestExpireSnapshotsAction.java   |  359 ++-
 .../spark/actions/TestRemoveOrphanFilesAction.java |  422 ++-
 .../actions/TestRemoveOrphanFilesAction3.java      |    0
 .../spark/actions/TestRewriteDataFilesAction.java  |  122 +-
 .../spark/actions/TestRewriteManifestsAction.java  |   47 +-
 .../TestRewritePositionDeleteFilesAction.java      |  742 ++++++
 .../spark/actions/TestSparkFileRewriter.java       |  396 +++
 .../apache/iceberg/spark/data/AvroDataTest.java    |   11 +-
 .../apache/iceberg/spark/data/GenericsHelpers.java |    0
 .../org/apache/iceberg/spark/data/RandomData.java  |    2 +
 .../org/apache/iceberg/spark/data/TestHelpers.java |    0
 .../apache/iceberg/spark/data/TestOrcWrite.java    |    0
 .../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     |    0
 .../data/TestSparkOrcReadMetadataColumns.java      |    0
 .../iceberg/spark/data/TestSparkOrcReader.java     |    0
 .../data/TestSparkParquetReadMetadataColumns.java  |   77 +-
 .../iceberg/spark/data/TestSparkParquetReader.java |    0
 .../iceberg/spark/data/TestSparkParquetWriter.java |    2 +-
 .../spark/data/TestSparkRecordOrcReaderWriter.java |    0
 .../spark/data/TestVectorizedOrcDataReader.java    |  166 ++
 ...estParquetDictionaryEncodedVectorizedReads.java |    0
 ...naryFallbackToPlainEncodingVectorizedReads.java |    0
 .../vectorized/TestParquetVectorizedReads.java     |   50 +-
 .../apache/iceberg/spark/source/ComplexRecord.java |    0
 .../spark/source/FilePathLastModifiedRecord.java   |    0
 .../iceberg/spark/source/FourColumnRecord.java}    |   37 +-
 .../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/SimpleRecord.java  |    0
 .../spark/source/SparkSQLExecutionHelper.java      |    0
 .../apache/iceberg/spark/source/TestAvroScan.java  |    0
 .../iceberg/spark/source/TestBaseReader.java       |    0
 .../iceberg/spark/source/TestChangelogReader.java  |    0
 .../spark/source/TestDataFrameWriterV2.java        |  212 ++
 .../iceberg/spark/source/TestDataFrameWrites.java  |    0
 .../spark/source/TestDataSourceOptions.java        |  125 +-
 .../iceberg/spark/source/TestFilteredScan.java     |    0
 .../spark/source/TestForwardCompatibility.java     |   39 +-
 .../iceberg/spark/source/TestIcebergSource.java    |    0
 .../source/TestIcebergSourceHadoopTables.java      |    0
 .../spark/source/TestIcebergSourceHiveTables.java  |    0
 .../spark/source/TestIcebergSourceTablesBase.java  |  505 +++-
 .../iceberg/spark/source/TestIcebergSpark.java     |    0
 .../spark/source/TestIdentityPartitionData.java    |    0
 .../spark/source/TestInternalRowWrapper.java       |    0
 .../source/TestMetadataTableReadableMetrics.java   |   72 +-
 .../TestMetadataTablesWithPartitionEvolution.java  |  757 ++++++
 .../iceberg/spark/source/TestParquetScan.java      |    0
 .../iceberg/spark/source/TestPartitionPruning.java |    0
 .../iceberg/spark/source/TestPartitionValues.java  |    0
 .../iceberg/spark/source/TestPathIdentifier.java   |    0
 .../spark/source/TestPositionDeletesTable.java     |    0
 .../iceberg/spark/source/TestReadProjection.java   |    0
 .../TestRequiredDistributionAndOrdering.java       |  311 +++
 .../iceberg/spark/source/TestRuntimeFiltering.java |    0
 .../spark/source/TestSnapshotSelection.java        |    0
 .../iceberg/spark/source/TestSparkAggregates.java  |    0
 .../spark/source/TestSparkAppenderFactory.java     |    0
 .../iceberg/spark/source/TestSparkCatalog.java     |    0
 .../source/TestSparkCatalogCacheExpiration.java    |    0
 .../source/TestSparkCatalogHadoopOverrides.java    |    0
 .../iceberg/spark/source/TestSparkDataFile.java    |    0
 .../iceberg/spark/source/TestSparkDataWrite.java   |  168 +-
 .../spark/source/TestSparkFileWriterFactory.java   |    0
 .../spark/source/TestSparkMergingMetrics.java      |    0
 .../spark/source/TestSparkMetadataColumns.java     |  285 ++
 .../spark/source/TestSparkPartitioningWriters.java |    0
 .../source/TestSparkPositionDeltaWriters.java      |    0
 .../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 |    0
 .../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      |    0
 .../spark/source/TestStructuredStreamingRead3.java |  145 +-
 .../apache/iceberg/spark/source/TestTables.java    |    0
 .../spark/source/TestTimestampWithoutZone.java     |   67 +-
 .../spark/source/TestWriteMetricsConfig.java       |   12 +-
 .../iceberg/spark/source/ThreeColumnRecord.java    |    0
 .../spark/sql/PartitionedWritesTestBase.java       |   96 +
 .../iceberg/spark/sql/TestAggregatePushDown.java   |    0
 .../apache/iceberg/spark/sql/TestAlterTable.java   |  328 +++
 .../apache/iceberg/spark/sql/TestCreateTable.java  |  343 +++
 .../iceberg/spark/sql/TestCreateTableAsSelect.java |    0
 .../apache/iceberg/spark/sql/TestDeleteFrom.java   |  169 ++
 .../apache/iceberg/spark/sql/TestDropTable.java    |  157 ++
 .../iceberg/spark/sql/TestFilterPushDown.java      |    0
 .../apache/iceberg/spark/sql/TestNamespaceSQL.java |  243 ++
 .../iceberg/spark/sql/TestPartitionedWrites.java   |    0
 .../spark/sql/TestPartitionedWritesAsSelect.java   |    0
 .../spark/sql/TestPartitionedWritesToBranch.java   |    0
 .../sql/TestPartitionedWritesToWapBranch.java      |    8 +
 .../apache/iceberg/spark/sql/TestRefreshTable.java |    0
 .../org/apache/iceberg/spark/sql/TestSelect.java   |  485 ++++
 .../iceberg/spark/sql/TestSparkBucketFunction.java |  351 +++
 .../iceberg/spark/sql/TestSparkDaysFunction.java   |   95 +
 .../iceberg/spark/sql/TestSparkHoursFunction.java  |   78 +
 .../iceberg/spark/sql/TestSparkMonthsFunction.java |  111 +
 .../spark/sql/TestSparkTruncateFunction.java       |  466 ++++
 .../iceberg/spark/sql/TestSparkYearsFunction.java  |  113 +
 .../spark/sql/TestStoragePartitionedJoins.java     |  621 +++++
 .../spark/sql/TestTimestampWithoutZone.java        |  234 ++
 .../iceberg/spark/sql/TestUnpartitionedWrites.java |    0
 .../spark/sql/TestUnpartitionedWritesToBranch.java |    0
 .../spark/sql/UnpartitionedWritesTestBase.java}    |   80 +-
 versions.props                                     |    4 +-
 951 files changed, 37039 insertions(+), 24973 deletions(-)
 create mode 100644 arrow/src/main/java/org/apache/iceberg/arrow/DictEncodedArrowConverter.java
 create mode 100644 aws/src/main/java/org/apache/iceberg/aws/s3/S3FileIOProperties.java
 create mode 100644 aws/src/test/java/org/apache/iceberg/aws/dynamodb/TestDynamoDbCatalog.java
 create mode 100644 aws/src/test/java/org/apache/iceberg/aws/s3/TestS3FileIOProperties.java
 create mode 100644 core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java
 create mode 100644 core/src/main/java/org/apache/iceberg/actions/FileRewriter.java
 create mode 100644 core/src/main/java/org/apache/iceberg/actions/RewritePositionDeletesCommitManager.java
 create mode 100644 core/src/main/java/org/apache/iceberg/actions/RewritePositionDeletesGroup.java
 create mode 100644 core/src/main/java/org/apache/iceberg/actions/SizeBasedDataRewriter.java
 create mode 100644 core/src/main/java/org/apache/iceberg/actions/SizeBasedFileRewriter.java
 create mode 100644 core/src/main/java/org/apache/iceberg/actions/SizeBasedPositionDeletesRewriter.java
 create mode 100644 core/src/main/java/org/apache/iceberg/metrics/MetricsReporters.java
 create mode 100644 core/src/main/java/org/apache/iceberg/rest/RESTMetricsReporter.java
 create mode 100644 core/src/test/java/org/apache/iceberg/metrics/TestMetricsReporters.java
 create mode 100644 docs/branching-and-tagging.md
 create mode 100644 docs/delta-lake-migration.md
 create mode 100644 docs/hive-migration.md
 create mode 100644 docs/table-migration.md
 create mode 100644 flink/v1.15/flink/src/main/java/org/apache/iceberg/flink/FlinkSourceFilter.java
 copy flink/{v1.16 => v1.15}/flink/src/main/java/org/apache/iceberg/flink/sink/shuffle/DataStatistics.java (100%)
 copy flink/{v1.16 => v1.15}/flink/src/main/java/org/apache/iceberg/flink/sink/shuffle/DataStatisticsEvent.java (100%)
 copy flink/{v1.16 => v1.15}/flink/src/main/java/org/apache/iceberg/flink/sink/shuffle/DataStatisticsFactory.java (100%)
 copy flink/{v1.16 => v1.15}/flink/src/main/java/org/apache/iceberg/flink/sink/shuffle/DataStatisticsOperator.java (100%)
 copy flink/{v1.16 => v1.15}/flink/src/main/java/org/apache/iceberg/flink/sink/shuffle/DataStatisticsOrRecord.java (100%)
 copy flink/{v1.16 => v1.15}/flink/src/main/java/org/apache/iceberg/flink/sink/shuffle/MapDataStatistics.java (100%)
 copy flink/{v1.16 => v1.15}/flink/src/main/java/org/apache/iceberg/flink/sink/shuffle/MapDataStatisticsFactory.java (100%)
 copy flink/{v1.16 => v1.15}/flink/src/test/java/org/apache/iceberg/flink/sink/shuffle/TestDataStatisticsOperator.java (100%)
 create mode 100644 flink/v1.16/flink/src/main/java/org/apache/iceberg/flink/FlinkSourceFilter.java
 create mode 100644 flink/v1.17/flink/src/main/java/org/apache/iceberg/flink/FlinkSourceFilter.java
 rename spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/Stats.java => hive-metastore/src/main/java/org/apache/iceberg/hive/NoLock.java (62%)
 create mode 100644 orc/src/test/java/org/apache/iceberg/orc/TestOrcDataReader.java
 create mode 100644 python/mkdocs/docs/SUMMARY.md
 create mode 100644 python/mkdocs/docs/assets/images/iceberg-logo-icon.png
 create mode 100644 python/mkdocs/gen_doc_stubs.py
 create mode 100644 python/tests/io/test_pyarrow_visitor.py
 delete mode 100644 spark/v2.4/build.gradle
 delete mode 100644 spark/v2.4/spark-runtime/LICENSE
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersFlatDataBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersNestedDataBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersFlatDataBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersNestedDataBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/WritersBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/AvroWritersBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceFlatAvroDataReadBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceNestedAvroDataReadBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataReadBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedListORCDataWriteBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedORCDataReadBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataFilterBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataReadBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataWriteBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedListParquetDataWriteBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataFilterBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataReadBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataWriteBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/ParquetWritersBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadDictionaryEncodedFlatParquetDataBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadFlatParquetDataBenchmark.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/actions/Actions.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/actions/RewriteDataFilesAction.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/IcebergSpark.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/SparkConfParser.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/SparkDataFile.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/SparkFilters.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/SparkSQLProperties.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/SparkSchemaUtil.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/SparkValueConverter.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/TypeToSparkType.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteOrphanFilesSparkAction.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/actions/BaseDeleteReachableFilesSparkAction.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/actions/BaseExpireSnapshotsSparkAction.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/actions/BaseRewriteManifestsSparkAction.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSnapshotUpdateSparkAction.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkActions.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/actions/ManifestFileBean.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkActions.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/data/SparkValueReaders.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchReader.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/IcebergArrowColumnVector.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/BaseDataReader.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/BatchDataReader.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/CustomCatalogs.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/EqualityDeleteRowReader.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/IcebergSource.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/Reader.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/RowDataReader.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/RowDataRewriter.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/SparkFileWriterFactory.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/StreamingOffset.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/StreamingWriter.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/source/Writer.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/TaskCheckHelper.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/TestFileIOSerialization.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/TestScanTaskSerialization.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/examples/ConcurrencyTest.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/examples/README.md
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/examples/ReadAndWriteTablesTest.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/examples/SchemaEvolutionTest.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/examples/SimpleRecord.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/examples/SnapshotFunctionalityTest.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/SparkTestBase.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/TestSparkSchemaUtil.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/ManualSource.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestCatalog.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestCustomCatalog.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWrites.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestFilteredScan.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSpark.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestNameMappingProjection.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionPruning.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionValues.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestSelect.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestSnapshotSelection.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkBaseDataReader.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkSchema.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkTableUtil.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkTableUtilWithInMemoryCatalog.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestStreamingOffset.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestTables.java
 delete mode 100644 spark/v2.4/spark/src/test/resources/data/books.json
 delete mode 100644 spark/v2.4/spark/src/test/resources/data/new-books.json
 delete mode 100644 spark/v3.3/spark/src/main/java/org/apache/iceberg/spark/FileScanTaskSetManager.java
 create mode 100644 spark/v3.3/spark/src/main/java/org/apache/iceberg/spark/actions/SparkBinPackDataRewriter.java
 create mode 100644 spark/v3.3/spark/src/main/java/org/apache/iceberg/spark/actions/SparkShufflingDataRewriter.java
 create mode 100644 spark/v3.3/spark/src/main/java/org/apache/iceberg/spark/actions/SparkSizeBasedDataRewriter.java
 create mode 100644 spark/v3.3/spark/src/main/java/org/apache/iceberg/spark/actions/SparkSortDataRewriter.java
 create mode 100644 spark/v3.3/spark/src/main/java/org/apache/iceberg/spark/actions/SparkZOrderDataRewriter.java
 create mode 100644 spark/v3.3/spark/src/test/java/org/apache/iceberg/spark/actions/TestSparkFileRewriter.java
 create mode 100644 spark/v3.3/spark/src/test/java/org/apache/iceberg/spark/data/TestVectorizedOrcDataReader.java
 copy spark/{v3.3 => v3.4}/build.gradle (98%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/antlr/org.apache.spark.sql.catalyst.parser.extensions/IcebergSqlExtensions.g4 (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/iceberg/spark/extensions/IcebergSparkSessionExtensions.scala
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/AlignRowLevelCommandAssignments.scala
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/AlignedRowLevelIcebergCommandCheck.scala (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/AssignmentAlignmentSupport.scala
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckMergeIntoTableConditions.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/MergeIntoIcebergTableResolutionCheck.scala (100%)
 copy spark/{v3.1 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/ProcedureArgumentCoercion.scala (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveMergeIntoTableReferences.scala
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveProcedures.scala (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/RewriteMergeIntoTable.scala
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/RewriteRowLevelIcebergCommand.scala
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/analysis/RewriteUpdateTable.scala
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/expressions/AssignmentUtils.scala (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/optimizer/ExtendedReplaceNullWithFalseInPredicate.scala
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/optimizer/ExtendedSimplifyConditionalsInPredicate.scala
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSparkSqlExtensionsParser.scala
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/parser/extensions/IcebergSqlExtensionsAstBuilder.scala (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/planning/RewrittenRowLevelCommand.scala
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/AddPartitionField.scala (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/BranchOptions.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/Call.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/CreateOrReplaceBranch.scala (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/CreateOrReplaceTag.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/DropBranch.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/DropIdentifierFields.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/DropPartitionField.scala (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/DropTag.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/MergeIntoIcebergTable.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/MergeRows.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/NoStatsUnaryNode.scala (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/ReplaceIcebergData.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/ReplacePartitionField.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/RowLevelCommand.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/SetIdentifierFields.scala (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/TagOptions.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/UnresolvedMergeIntoIcebergTable.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/UpdateIcebergTable.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/V2WriteCommandLike.scala (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/WriteIcebergDelta.scala
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/statements.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/AddPartitionFieldExec.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/CallExec.scala (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/CreateOrReplaceBranchExec.scala (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/CreateOrReplaceTagExec.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/DropBranchExec.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/DropIdentifierFieldsExec.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/DropPartitionFieldExec.scala (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/DropTagExec.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ExtendedDataSourceV2Implicits.scala (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ExtendedDataSourceV2Strategy.scala
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ExtendedV2Writes.scala
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/MergeRowsExec.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ReplaceDataExec.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ReplacePartitionFieldExec.scala (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ReplaceRewrittenRowLevelCommand.scala (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/RowLevelCommandScanRelationPushDown.scala
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/SetIdentifierFieldsExec.scala (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/SetWriteDistributionAndOrderingExec.scala (95%)
 create mode 100644 spark/v3.4/spark-extensions/src/main/scala/org/apache/spark/sql/execution/dynamicpruning/RowLevelCommandDynamicPruning.scala
 copy spark/{v3.1 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/Employee.java (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/SparkExtensionsTestBase.java (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/SparkRowLevelOperationsTestBase.java (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestAddFilesProcedure.java (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestAlterTablePartitionFields.java (100%)
 copy spark/{v3.1 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestAlterTableSchema.java (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestAncestorsOfProcedure.java (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestBranchDDL.java (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCallStatementParser.java (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestChangelogTable.java (100%)
 copy spark/{v3.1 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCherrypickSnapshotProcedure.java (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestConflictValidation.java
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCopyOnWriteDelete.java (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCopyOnWriteMerge.java (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCopyOnWriteUpdate.java (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestCreateChangelogViewProcedure.java (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestDelete.java
 copy spark/{v3.2 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestExpireSnapshotsProcedure.java (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMerge.java
 create mode 100644 spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMergeOnReadDelete.java
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMergeOnReadMerge.java (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMergeOnReadUpdate.java (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMetadataTables.java (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestMigrateTableProcedure.java (100%)
 copy spark/{v3.1 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestPublishChangesProcedure.java (100%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRegisterTableProcedure.java (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRemoveOrphanFilesProcedure.java
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestReplaceBranch.java (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRequiredDistributionAndOrdering.java
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewriteDataFilesProcedure.java (98%)
 copy spark/{v3.2 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRewriteManifestsProcedure.java (100%)
 copy spark/{v3.1 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRollbackToSnapshotProcedure.java (100%)
 copy spark/{v3.1 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestRollbackToTimestampProcedure.java (100%)
 copy spark/{v3.1 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestSetCurrentSnapshotProcedure.java (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestSetWriteDistributionAndOrdering.java (90%)
 create mode 100644 spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestSnapshotTableProcedure.java
 create mode 100644 spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestStoragePartitionedJoinsInRowLevelOperations.java
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestTagDDL.java (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestUpdate.java
 create mode 100644 spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestWriteAborts.java
 copy spark/{v3.2 => v3.4}/spark-runtime/LICENSE (100%)
 rename spark/{v2.4 => v3.4}/spark-runtime/NOTICE (100%)
 copy spark/{v3.1 => v3.4}/spark-runtime/src/integration/java/org/apache/iceberg/spark/SmokeTest.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/SparkBenchmarkUtil.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/action/DeleteOrphanFilesBenchmark.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/action/IcebergSortCompactionBenchmark.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/action/RandomGeneratingUDF.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersFlatDataBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetReadersNestedDataBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersFlatDataBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/data/parquet/SparkParquetWritersNestedDataBenchmark.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/Action.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceBenchmark.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceDeleteBenchmark.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceFlatDataBenchmark.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedDataBenchmark.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/IcebergSourceNestedListDataBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/WritersBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/AvroWritersBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceFlatAvroDataReadBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/avro/IcebergSourceNestedAvroDataReadBenchmark.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceFlatORCDataReadBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedListORCDataWriteBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/orc/IcebergSourceNestedORCDataReadBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataFilterBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataReadBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceFlatParquetDataWriteBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedListParquetDataWriteBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataFilterBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataReadBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceNestedParquetDataWriteBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceParquetEqDeleteBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceParquetMultiDeleteFileBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceParquetPosDeleteBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/IcebergSourceParquetWithUnrelatedDeleteBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/ParquetWritersBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadDictionaryEncodedFlatParquetDataBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadFlatParquetDataBenchmark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/jmh/java/org/apache/iceberg/spark/source/parquet/vectorized/VectorizedReadParquetDecimalBenchmark.java (100%)
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/BaseCatalog.java
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/BaseFileRewriteCoordinator.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/ChangelogIterator.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/CommitMetadata.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/ExtendedParser.java (100%)
 rename delta-lake/src/main/java/org/apache/iceberg/delta/BaseSnapshotDeltaLakeTableActionResult.java => spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/FileRewriteCoordinator.java (67%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/IcebergSpark.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/JobGroupInfo.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/JobGroupUtils.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/PathIdentifier.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/PositionDeletesRewriteCoordinator.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/PruneColumnsWithReordering.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/PruneColumnsWithoutReordering.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/RollbackStagedTable.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/ScanTaskSetManager.java (100%)
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/SortOrderToSpark.java
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/Spark3Util.java
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkAggregates.java (100%)
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/SparkCachedTableCatalog.java
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java (96%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkConfParser.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkDataFile.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkDistributionAndOrderingUtil.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkExceptionUtil.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkFilters.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkFixupTimestampType.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkFixupTypes.java (100%)
 rename spark/{v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSource.java => v3.4/spark/src/main/java/org/apache/iceberg/spark/SparkFunctionCatalog.java} (57%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkReadConf.java (59%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkReadOptions.java (60%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkSQLProperties.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkSchemaUtil.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkSessionCatalog.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkStructLike.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkTableCache.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java (85%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkTypeVisitor.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkUtil.java (64%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkV2Filters.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkValueConverter.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java (96%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java (62%)
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/SupportsFunctions.java
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/TypeToSparkType.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSnapshotUpdateSparkAction.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/BaseTableCreationSparkAction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/DeleteOrphanFilesSparkAction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/DeleteReachableFilesSparkAction.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/ExpireSnapshotsSparkAction.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/FileInfo.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/ManifestFileBean.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/MigrateTableSparkAction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteDataFilesSparkAction.java (91%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteManifestsSparkAction.java (100%)
 copy spark/{v3.3/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteDataFilesSparkAction.java => v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/RewritePositionDeleteSparkAction.java} (53%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SetAccumulator.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SnapshotTableSparkAction.java (100%)
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkActions.java
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkBinPackDataRewriter.java
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkBinPackPositionDeletesRewriter.java
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkShufflingDataRewriter.java
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkSizeBasedDataRewriter.java
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkSortDataRewriter.java
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/actions/SparkZOrderDataRewriter.java
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkZOrderUDF.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/AvroWithSparkSchemaVisitor.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/ParquetWithSparkSchemaVisitor.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroReader.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java (99%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java (97%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueReaders.java (92%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueWriters.java (90%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java (94%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java (96%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java (91%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkValueReaders.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkValueWriters.java (97%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessorFactory.java (93%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessors.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnVectorBuilder.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnVectorWithFilter.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ColumnarBatchReader.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ConstantColumnVector.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/DeletedColumnVector.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/IcebergArrowColumnVector.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/RowPositionColumnVector.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java (82%)
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/functions/BucketFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/functions/DaysFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/functions/HoursFunction.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/functions/IcebergVersionFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/functions/MonthsFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/functions/SparkFunctions.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/functions/TruncateFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/functions/UnaryUnboundFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/functions/YearsFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/AddFilesProcedure.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/AncestorsOfProcedure.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/BaseProcedure.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/CherrypickSnapshotProcedure.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/CreateChangelogViewProcedure.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/ExpireSnapshotsProcedure.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/MigrateTableProcedure.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/ProcedureInput.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/PublishChangesProcedure.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/RegisterTableProcedure.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/RemoveOrphanFilesProcedure.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/RewriteDataFilesProcedure.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/RewriteManifestsProcedure.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/RollbackToSnapshotProcedure.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/RollbackToTimestampProcedure.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/SetCurrentSnapshotProcedure.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/SnapshotTableProcedure.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/procedures/SparkProcedures.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/BaseBatchReader.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/BaseReader.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/BaseRowReader.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/BatchDataReader.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/ChangelogRowReader.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/EqualityDeleteRowReader.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/HasIcebergCatalog.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/IcebergSource.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/InternalRowWrapper.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/PositionDeletesRowReader.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/RowDataReader.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SerializableTableWithSize.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkAppenderFactory.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkBatch.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkBatchQueryScan.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkChangelogScan.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkChangelogTable.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkCleanupUtil.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkColumnarReaderFactory.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkCopyOnWriteOperation.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkCopyOnWriteScan.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkFileWriterFactory.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkInputPartition.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkLocalScan.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkMetadataColumn.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkMicroBatchStream.java (61%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedFanoutWriter.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitionedWriter.java (100%)
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitioningAwareScan.java
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/source/SparkPositionDeletesRewrite.java
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPositionDeletesRewriteBuilder.java (100%)
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/source/SparkPositionDeltaOperation.java
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/source/SparkPositionDeltaWrite.java
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/source/SparkPositionDeltaWriteBuilder.java
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkRowLevelOperationBuilder.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkRowReaderFactory.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkScan.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkScanBuilder.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkStagedScan.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkStagedScanBuilder.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkTable.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkWrite.java (98%)
 create mode 100644 spark/v3.4/spark/src/main/java/org/apache/iceberg/spark/source/SparkWriteBuilder.java
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/StagedSparkTable.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/Stats.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/StreamingOffset.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/NumDeletes.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/NumSplits.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskNumDeletes.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/metrics/TaskNumSplits.java (100%)
 rename spark/{v2.4/spark/src/main/java/org/apache/iceberg/actions/SparkActions.java => v3.4/spark/src/main/java/org/apache/spark/sql/catalyst/analysis/NoSuchProcedureException.java} (56%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/spark/sql/connector/iceberg/catalog/Procedure.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/spark/sql/connector/iceberg/catalog/ProcedureCatalog.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/spark/sql/connector/iceberg/catalog/ProcedureParameter.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/spark/sql/connector/iceberg/catalog/ProcedureParameterImpl.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/resources/META-INF/services/org.apache.spark.sql.sources.DataSourceRegister (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/SetWriteDistributionAndOrdering.scala (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/SortOrderParserUtil.scala (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/scala/org/apache/spark/sql/catalyst/utils/PlanUtils.scala (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/scala/org/apache/spark/sql/execution/datasources/SparkExpressionConverter.scala (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/KryoHelpers.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/TaskCheckHelper.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/TestDataFileSerialization.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/TestFileIOSerialization.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/TestHadoopMetricsContextSerialization.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/TestManifestFileSerialization.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/TestScanTaskSerialization.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/TestTableSerialization.java (79%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/ValidationHelpers.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/SparkCatalogConfig.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/SparkCatalogTestBase.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/SparkTestBase.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/SparkTestBaseWithCatalog.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/SparkTestHelperBase.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestChangelogIterator.java (100%)
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/TestFileRewriteCoordinator.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/TestFunctionCatalog.java
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestSpark3Util.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestSparkCachedTableCatalog.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestSparkCatalogOperations.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestSparkDistributionAndOrderingUtil.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestSparkFilters.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestSparkSchemaUtil.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestSparkSessionCatalog.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestSparkTableUtil.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestSparkV2Filters.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestSparkValueConverter.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestSparkWriteConf.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestCreateActions.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestDeleteReachableFilesAction.java (73%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestExpireSnapshotsAction.java (75%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRemoveOrphanFilesAction.java (63%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRemoveOrphanFilesAction3.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRewriteDataFilesAction.java (95%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRewriteManifestsAction.java (93%)
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/actions/TestRewritePositionDeleteFilesAction.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/actions/TestSparkFileRewriter.java
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.java (96%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/GenericsHelpers.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/RandomData.java (99%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestOrcWrite.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroReader.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestParquetAvroWriter.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroEnums.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkAvroReader.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkDateTimes.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReadMetadataColumns.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkOrcReader.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReadMetadataColumns.java (78%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReader.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetWriter.java (98%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkRecordOrcReaderWriter.java (100%)
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/data/TestVectorizedOrcDataReader.java
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryEncodedVectorizedReads.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetDictionaryFallbackToPlainEncodingVectorizedReads.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetVectorizedReads.java (89%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/ComplexRecord.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/FilePathLastModifiedRecord.java (100%)
 copy spark/{v2.4/spark/src/test/java/org/apache/iceberg/spark/source/ThreeColumnRecord.java => v3.4/spark/src/test/java/org/apache/iceberg/spark/source/FourColumnRecord.java} (71%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/LogMessage.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/ManualSource.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/NestedRecord.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/SimpleRecord.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/SparkSQLExecutionHelper.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestAvroScan.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestBaseReader.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestChangelogReader.java (100%)
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWriterV2.java
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWrites.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestDataSourceOptions.java (79%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestFilteredScan.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java (89%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSource.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java (80%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSpark.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestIdentityPartitionData.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestInternalRowWrapper.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestMetadataTableReadableMetrics.java (83%)
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/source/TestMetadataTablesWithPartitionEvolution.java
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestParquetScan.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionPruning.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestPartitionValues.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestPathIdentifier.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestPositionDeletesTable.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestReadProjection.java (100%)
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/source/TestRequiredDistributionAndOrdering.java
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestRuntimeFiltering.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSnapshotSelection.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkAggregates.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkAppenderFactory.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkCatalog.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkCatalogCacheExpiration.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkCatalogHadoopOverrides.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataFile.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkDataWrite.java (81%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkFileWriterFactory.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkMergingMetrics.java (100%)
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkMetadataColumns.java
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPartitioningWriters.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkPositionDeltaWriters.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReadProjection.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderDeletes.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkReaderWithBloomFilter.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkRollingFileWriters.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkScan.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkStagedScan.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkTable.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkWriterMetrics.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestStreamingOffset.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreaming.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreamingRead3.java (79%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestTables.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestTimestampWithoutZone.java (84%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestWriteMetricsConfig.java (97%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/ThreeColumnRecord.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/PartitionedWritesTestBase.java (62%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestAggregatePushDown.java (100%)
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestAlterTable.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestCreateTable.java
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestCreateTableAsSelect.java (100%)
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestDeleteFrom.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestDropTable.java
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestFilterPushDown.java (100%)
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestNamespaceSQL.java
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestPartitionedWrites.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestPartitionedWritesAsSelect.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestPartitionedWritesToBranch.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestPartitionedWritesToWapBranch.java (90%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestRefreshTable.java (100%)
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestSelect.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkBucketFunction.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkDaysFunction.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkHoursFunction.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkMonthsFunction.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkTruncateFunction.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkYearsFunction.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestStoragePartitionedJoins.java
 create mode 100644 spark/v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/TestTimestampWithoutZone.java
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestUnpartitionedWrites.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestUnpartitionedWritesToBranch.java (100%)
 copy spark/{v3.3/spark/src/test/java/org/apache/iceberg/spark/sql/PartitionedWritesTestBase.java => v3.4/spark/src/test/java/org/apache/iceberg/spark/sql/UnpartitionedWritesTestBase.java} (73%)