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/04/23 18:18:09 UTC

[iceberg] branch dependabot/pip/python/pandas-2.0.0 updated (3b86ba4175 -> f42536d77f)

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

github-bot pushed a change to branch dependabot/pip/python/pandas-2.0.0
in repository https://gitbox.apache.org/repos/asf/iceberg.git


 discard 3b86ba4175 Build: Bump pandas from 1.5.3 to 2.0.0 in /python
     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 f42536d77f Build: Bump pandas from 1.5.3 to 2.0.0 in /python

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   (3b86ba4175)
            \
             N -- N -- N   refs/heads/dependabot/pip/python/pandas-2.0.0 (f42536d77f)

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/jmh-benchmarks.yml               |    4 +-
 .github/workflows/publish-snapshot.yml             |    2 +-
 .github/workflows/recurring-jmh-benchmarks.yml     |    2 +-
 .github/workflows/spark-ci.yml                     |   30 +-
 .gitignore                                         |    2 +-
 .palantir/revapi.yml                               |    5 +
 .../main/java/org/apache/iceberg/SortOrder.java    |    1 +
 .../java/org/apache/iceberg/SortOrderBuilder.java  |   11 +
 .../iceberg/metrics/LoggingMetricsReporter.java    |    2 -
 .../iceberg/aws/glue/GlueTableOperations.java      |   21 +-
 .../iceberg/aws/glue/GlueToIcebergConverter.java   |   18 -
 .../aws/glue/TestGlueToIcebergConverter.java       |   20 +-
 .../org/apache/iceberg/BaseReplaceSortOrder.java   |    6 +
 .../java/org/apache/iceberg/LocationProviders.java |    4 +-
 .../java/org/apache/iceberg/MetadataUpdate.java    |    4 +-
 .../main/java/org/apache/iceberg/MicroBatches.java |  209 +-
 .../main/java/org/apache/iceberg/SnapshotScan.java |    5 +-
 .../java/org/apache/iceberg/TableScanContext.java  |   44 +-
 .../apache/iceberg/actions/BaseCommitService.java  |  221 ++
 .../actions/BaseRewriteDataFilesAction.java        |   31 +-
 .../actions/RewriteDataFilesCommitManager.java     |  162 +-
 .../apache/iceberg/metrics/MetricsReporters.java   |   85 +
 .../org/apache/iceberg/TestMicroBatchBuilder.java  |   20 +-
 .../iceberg/TestScanPlanningAndReporting.java      |   29 +
 .../java/org/apache/iceberg/TestSortOrder.java     |   27 +-
 .../iceberg/metrics/TestMetricsReporters.java      |  119 +
 .../apache/iceberg/util/TestParallelIterable.java  |   18 +-
 .../apache/iceberg/data/GenericAppenderHelper.java |    7 +
 dev/stage-binaries.sh                              |    3 +-
 docs/delta-lake-migration.md                       |  122 +
 docs/hive-migration.md                             |   60 +
 docs/hive.md                                       |    4 +-
 docs/spark-configuration.md                        |   10 -
 docs/spark-ddl.md                                  |   10 +-
 docs/spark-queries.md                              |   46 +-
 docs/spark-structured-streaming.md                 |    4 -
 docs/spark-writes.md                               |   48 +-
 docs/table-migration.md                            |   79 +
 .../apache/iceberg/flink/FlinkSourceFilter.java    |   49 +
 .../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    |   26 +
 .../enumerator/ContinuousSplitPlannerImpl.java     |    4 +-
 .../reader/AvroGenericRecordReaderFunction.java    |   29 +-
 .../flink/source/reader/RowDataReaderFunction.java |   34 +-
 .../flink/actions/TestRewriteDataFilesAction.java  |  110 +
 .../sink/shuffle/TestDataStatisticsOperator.java   |    0
 .../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 +
 .../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    |   29 +
 .../enumerator/ContinuousSplitPlannerImpl.java     |    4 +-
 .../reader/AvroGenericRecordReaderFunction.java    |   30 +-
 .../flink/source/reader/RowDataReaderFunction.java |   27 +-
 .../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 +
 .../apache/iceberg/flink/FlinkSourceFilter.java    |   49 +
 .../iceberg/flink/source/FlinkInputFormat.java     |    6 +-
 .../apache/iceberg/flink/source/IcebergSource.java |    3 +-
 .../flink/source/RowDataFileScanTaskReader.java    |   23 +-
 .../iceberg/flink/source/RowDataRewriter.java      |    4 +-
 .../reader/AvroGenericRecordReaderFunction.java    |   10 +-
 .../flink/source/reader/RowDataReaderFunction.java |    9 +-
 .../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 +-
 .../iceberg/flink/source/reader/ReaderUtil.java    |    4 +-
 .../source/reader/TestIcebergSourceReader.java     |    4 +-
 .../source/reader/TestRowDataReaderFunction.java   |    4 +-
 gradle.properties                                  |    4 +-
 jmh.gradle                                         |    8 +-
 open-api/rest-catalog-open-api.yaml                |   18 +-
 python/poetry.lock                                 |  101 +-
 python/pyproject.toml                              |    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/actions/SparkActions.java   |   34 -
 .../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 --
 .../org/apache/iceberg/spark/SparkReadConf.java    |  165 --
 .../org/apache/iceberg/spark/SparkReadOptions.java |   65 -
 .../apache/iceberg/spark/SparkSQLProperties.java   |   45 -
 .../org/apache/iceberg/spark/SparkSchemaUtil.java  |  308 ---
 .../org/apache/iceberg/spark/SparkTableUtil.java   |  792 ------
 .../java/org/apache/iceberg/spark/SparkUtil.java   |  202 --
 .../apache/iceberg/spark/SparkValueConverter.java  |  133 -
 .../org/apache/iceberg/spark/SparkWriteConf.java   |  152 --
 .../apache/iceberg/spark/SparkWriteOptions.java    |   53 -
 .../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/SparkParquetReaders.java    |  769 ------
 .../iceberg/spark/data/SparkParquetWriters.java    |  457 ----
 .../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 -
 .../data/vectorized/VectorizedSparkOrcReaders.java |  459 ----
 .../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 -
 .../actions/TestDeleteReachableFilesAction.java    |  331 ---
 .../spark/actions/TestExpireSnapshotsAction.java   | 1121 ---------
 .../spark/actions/TestRemoveOrphanFilesAction.java |  737 ------
 .../spark/actions/TestRewriteManifestsAction.java  |  604 -----
 .../apache/iceberg/spark/data/AvroDataTest.java    |  285 ---
 .../org/apache/iceberg/spark/data/TestHelpers.java |  770 ------
 .../iceberg/spark/data/TestSparkDateTimes.java     |   70 -
 .../data/TestSparkParquetReadMetadataColumns.java  |  237 --
 .../iceberg/spark/data/TestSparkParquetReader.java |  206 --
 .../vectorized/TestParquetVectorizedReads.java     |  352 ---
 .../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 ----
 .../spark/source/TestDataSourceOptions.java        |  409 ----
 .../iceberg/spark/source/TestFilteredScan.java     |  658 -----
 .../spark/source/TestForwardCompatibility.java     |  222 --
 .../iceberg/spark/source/TestIcebergSource.java    |   35 -
 .../source/TestIcebergSourceHadoopTables.java      |   67 -
 .../spark/source/TestIcebergSourceHiveTables.java  |   78 -
 .../spark/source/TestIcebergSourceTablesBase.java  | 1801 --------------
 .../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/SparkWriteConf.java   |   11 +-
 .../org/apache/iceberg/spark/SparkWriteConf.java   |    9 +-
 .../v2/SetWriteDistributionAndOrderingExec.scala   |    3 +-
 .../TestSetWriteDistributionAndOrdering.java       |   25 +
 .../org/apache/iceberg/spark/SparkReadConf.java    |   16 +
 .../org/apache/iceberg/spark/SparkReadOptions.java |    7 +
 .../org/apache/iceberg/spark/SparkWriteConf.java   |    9 +-
 .../spark/source/SparkMicroBatchStream.java        |  186 +-
 .../org/apache/iceberg/TestTableSerialization.java |   17 +-
 .../spark/source/TestStructuredStreamingRead3.java |  118 +-
 spark/v3.4/build.gradle                            |  289 +++
 .../IcebergSqlExtensions.g4                        |    0
 .../extensions/IcebergSparkSessionExtensions.scala |    0
 .../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
 .../analysis/RewriteDeleteFromIcebergTable.scala   |  118 +
 .../catalyst/analysis/RewriteMergeIntoTable.scala  |  459 ++++
 .../analysis/RewriteRowLevelIcebergCommand.scala   |   91 +
 .../sql/catalyst/analysis/RewriteUpdateTable.scala |  183 ++
 .../sql/catalyst/expressions/AssignmentUtils.scala |    0
 .../expressions/ExtendedV2ExpressionUtils.scala    |    0
 .../ExtendedReplaceNullWithFalseInPredicate.scala  |    0
 .../ExtendedSimplifyConditionalsInPredicate.scala  |    0
 .../IcebergSparkSqlExtensionsParser.scala          |  400 +++
 .../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
 .../plans/logical/DeleteFromIcebergTable.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
 .../connector/expressions/TruncateTransform.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          |  158 ++
 .../v2/ExtendedDistributionAndOrderingUtils.scala  |    0
 .../datasources/v2/ExtendedV2Writes.scala          |  150 ++
 .../execution/datasources/v2/MergeRowsExec.scala   |    0
 ...ptimizeMetadataOnlyDeleteFromIcebergTable.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   |    0
 .../RowLevelCommandDynamicPruning.scala            |  182 ++
 .../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       | 1177 +++++++++
 .../extensions/TestExpireSnapshotsProcedure.java   |    0
 .../spark/extensions/TestIcebergExpressions.java   |    0
 .../apache/iceberg/spark/extensions/TestMerge.java | 2561 ++++++++++++++++++++
 .../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  |    0
 .../extensions/TestRewriteManifestsProcedure.java  |    0
 .../TestRollbackToSnapshotProcedure.java           |    0
 .../TestRollbackToTimestampProcedure.java          |    0
 .../TestSetCurrentSnapshotProcedure.java           |    0
 .../TestSetWriteDistributionAndOrdering.java       |    0
 .../extensions/TestSnapshotTableProcedure.java     |  231 ++
 ...toragePartitionedJoinsInRowLevelOperations.java |    0
 .../iceberg/spark/extensions/TestTagDDL.java       |    0
 .../iceberg/spark/extensions/TestUpdate.java       | 1330 ++++++++++
 .../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 |    0
 .../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      |    0
 .../iceberg/spark/FileScanTaskSetManager.java      |    0
 .../org/apache/iceberg/spark/IcebergSpark.java     |    0
 .../org/apache/iceberg/spark/JobGroupInfo.java     |    0
 .../org/apache/iceberg/spark/JobGroupUtils.java    |    0
 .../org/apache/iceberg/spark/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 |    0
 .../java/org/apache/iceberg/spark/Spark3Util.java  |    0
 .../org/apache/iceberg/spark/SparkAggregates.java  |    0
 .../iceberg/spark/SparkCachedTableCatalog.java     |    0
 .../org/apache/iceberg/spark/SparkCatalog.java     |    0
 .../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
 .../org/apache/iceberg/spark/SparkReadConf.java    |    0
 .../org/apache/iceberg/spark/SparkReadOptions.java |    0
 .../apache/iceberg/spark/SparkSQLProperties.java   |    0
 .../org/apache/iceberg/spark/SparkSchemaUtil.java  |    0
 .../apache/iceberg/spark/SparkSessionCatalog.java  |    0
 .../org/apache/iceberg/spark/SparkStructLike.java  |    0
 .../org/apache/iceberg/spark/SparkTableCache.java  |    0
 .../org/apache/iceberg/spark/SparkTableUtil.java   |    0
 .../org/apache/iceberg/spark/SparkTypeToType.java  |    0
 .../org/apache/iceberg/spark/SparkTypeVisitor.java |    0
 .../java/org/apache/iceberg/spark/SparkUtil.java   |    0
 .../org/apache/iceberg/spark/SparkV2Filters.java   |    0
 .../apache/iceberg/spark/SparkValueConverter.java  |    0
 .../org/apache/iceberg/spark/SparkWriteConf.java   |    9 +-
 .../apache/iceberg/spark/SparkWriteOptions.java    |    0
 .../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 |    0
 .../spark/actions/RewriteManifestsSparkAction.java |    0
 .../iceberg/spark/actions/SetAccumulator.java      |    0
 .../spark/actions/SnapshotTableSparkAction.java    |    0
 .../apache/iceberg/spark/actions/SparkActions.java |    0
 .../spark/actions/SparkBinPackDataRewriter.java    |    0
 .../spark/actions/SparkBinPackStrategy.java        |    0
 .../spark/actions/SparkShufflingDataRewriter.java  |    0
 .../spark/actions/SparkSizeBasedDataRewriter.java  |    0
 .../spark/actions/SparkSortDataRewriter.java       |    0
 .../iceberg/spark/actions/SparkSortStrategy.java   |    0
 .../spark/actions/SparkZOrderDataRewriter.java     |    0
 .../iceberg/spark/actions/SparkZOrderStrategy.java |    0
 .../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 |    0
 .../apache/iceberg/spark/data/SparkOrcReader.java  |    0
 .../iceberg/spark/data/SparkOrcValueReaders.java   |    0
 .../iceberg/spark/data/SparkOrcValueWriters.java   |    0
 .../apache/iceberg/spark/data/SparkOrcWriter.java  |    0
 .../iceberg/spark/data/SparkParquetReaders.java    |    0
 .../iceberg/spark/data/SparkParquetWriters.java    |    0
 .../iceberg/spark/data/SparkValueReaders.java      |    0
 .../iceberg/spark/data/SparkValueWriters.java      |    0
 .../vectorized/ArrowVectorAccessorFactory.java     |    0
 .../data/vectorized/ArrowVectorAccessors.java      |    0
 .../spark/data/vectorized/ColumnVectorBuilder.java |    0
 .../data/vectorized/ColumnVectorWithFilter.java    |    0
 .../spark/data/vectorized/ColumnarBatchReader.java |    0
 .../data/vectorized/ConstantColumnVector.java      |    0
 .../spark/data/vectorized/DeletedColumnVector.java |    0
 .../data/vectorized/IcebergArrowColumnVector.java  |    0
 .../data/vectorized/RowPositionColumnVector.java   |    0
 .../data/vectorized/VectorizedSparkOrcReaders.java |    0
 .../vectorized/VectorizedSparkParquetReaders.java  |    0
 .../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        |   11 +-
 .../spark/source/SparkPartitionedFanoutWriter.java |    0
 .../spark/source/SparkPartitionedWriter.java       |    0
 .../spark/source/SparkPartitioningAwareScan.java   |    0
 .../spark/source/SparkPositionDeletesRewrite.java  |    0
 .../source/SparkPositionDeletesRewriteBuilder.java |    0
 .../spark/source/SparkPositionDeltaOperation.java  |  110 +
 .../spark/source/SparkPositionDeltaWrite.java      |  731 ++++++
 .../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    |    0
 .../iceberg/spark/source/SparkWriteBuilder.java    |    0
 .../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}        |   37 +-
 .../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
 .../expressions/TransformExpressions.scala         |    0
 .../logical/SetWriteDistributionAndOrdering.scala  |    0
 .../plans/logical/SortOrderParserUtil.scala        |    0
 .../utils/DistributionAndOrderingUtils.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  |    0
 .../apache/iceberg/spark/TestFunctionCatalog.java  |  140 ++
 .../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    |    0
 .../spark/actions/TestExpireSnapshotsAction.java   |    0
 .../spark/actions/TestRemoveOrphanFilesAction.java |    0
 .../actions/TestRemoveOrphanFilesAction3.java      |    0
 .../spark/actions/TestRewriteDataFilesAction.java  |    0
 .../spark/actions/TestRewriteManifestsAction.java  |    0
 .../spark/actions/TestSparkFileRewriter.java       |    0
 .../apache/iceberg/spark/data/AvroDataTest.java    |    0
 .../apache/iceberg/spark/data/GenericsHelpers.java |    0
 .../org/apache/iceberg/spark/data/RandomData.java  |    0
 .../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  |    0
 .../iceberg/spark/data/TestSparkParquetReader.java |    0
 .../iceberg/spark/data/TestSparkParquetWriter.java |    0
 .../spark/data/TestSparkRecordOrcReaderWriter.java |    0
 .../spark/data/TestVectorizedOrcDataReader.java    |    0
 ...estParquetDictionaryEncodedVectorizedReads.java |    0
 ...naryFallbackToPlainEncodingVectorizedReads.java |    0
 .../vectorized/TestParquetVectorizedReads.java     |    0
 .../apache/iceberg/spark/source/ComplexRecord.java |    0
 .../spark/source/FilePathLastModifiedRecord.java   |    0
 .../apache/iceberg/spark/source/LogMessage.java    |    0
 .../apache/iceberg/spark/source/ManualSource.java  |    0
 .../apache/iceberg/spark/source/NestedRecord.java  |    0
 .../apache/iceberg/spark/source/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        |    0
 .../iceberg/spark/source/TestDataFrameWrites.java  |    0
 .../spark/source/TestDataSourceOptions.java        |    0
 .../iceberg/spark/source/TestFilteredScan.java     |    0
 .../spark/source/TestForwardCompatibility.java     |    0
 .../iceberg/spark/source/TestIcebergSource.java    |    0
 .../source/TestIcebergSourceHadoopTables.java      |    0
 .../spark/source/TestIcebergSourceHiveTables.java  |    0
 .../spark/source/TestIcebergSourceTablesBase.java  |    0
 .../iceberg/spark/source/TestIcebergSpark.java     |    0
 .../spark/source/TestIdentityPartitionData.java    |    0
 .../spark/source/TestInternalRowWrapper.java       |    0
 .../source/TestMetadataTableReadableMetrics.java   |    0
 .../TestMetadataTablesWithPartitionEvolution.java  |    0
 .../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       |  327 +++
 .../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   |  150 +-
 .../spark/source/TestSparkFileWriterFactory.java   |    0
 .../spark/source/TestSparkMergingMetrics.java      |    0
 .../spark/source/TestSparkMetadataColumns.java     |    0
 .../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 |   42 +
 .../apache/iceberg/spark/source/TestTables.java    |    0
 .../spark/source/TestTimestampWithoutZone.java     |    0
 .../spark/source/TestWriteMetricsConfig.java       |    0
 .../iceberg/spark/source/ThreeColumnRecord.java    |    0
 .../spark/sql/PartitionedWritesTestBase.java       |    0
 .../iceberg/spark/sql/TestAggregatePushDown.java   |    0
 .../apache/iceberg/spark/sql/TestAlterTable.java   |    0
 .../apache/iceberg/spark/sql/TestCreateTable.java  |    0
 .../iceberg/spark/sql/TestCreateTableAsSelect.java |    0
 .../apache/iceberg/spark/sql/TestDeleteFrom.java   |    0
 .../apache/iceberg/spark/sql/TestDropTable.java    |  158 ++
 .../iceberg/spark/sql/TestFilterPushDown.java      |    0
 .../apache/iceberg/spark/sql/TestNamespaceSQL.java |    0
 .../iceberg/spark/sql/TestPartitionedWrites.java   |    0
 .../spark/sql/TestPartitionedWritesAsSelect.java   |    0
 .../spark/sql/TestPartitionedWritesToBranch.java   |    0
 .../sql/TestPartitionedWritesToWapBranch.java      |    0
 .../apache/iceberg/spark/sql/TestRefreshTable.java |    0
 .../org/apache/iceberg/spark/sql/TestSelect.java   |    0
 .../iceberg/spark/sql/TestSparkBucketFunction.java |    0
 .../iceberg/spark/sql/TestSparkDaysFunction.java   |    0
 .../iceberg/spark/sql/TestSparkHoursFunction.java  |    0
 .../iceberg/spark/sql/TestSparkMonthsFunction.java |    0
 .../spark/sql/TestSparkTruncateFunction.java       |    0
 .../iceberg/spark/sql/TestSparkYearsFunction.java  |    0
 .../spark/sql/TestStoragePartitionedJoins.java     |    0
 .../spark/sql/TestTimestampWithoutZone.java        |    0
 .../iceberg/spark/sql/TestUnpartitionedWrites.java |    0
 .../spark/sql/TestUnpartitionedWritesToBranch.java |    0
 .../spark/sql/UnpartitionedWritesTestBase.java     |    0
 versions.props                                     |    4 +-
 698 files changed, 14248 insertions(+), 30078 deletions(-)
 create mode 100644 core/src/main/java/org/apache/iceberg/actions/BaseCommitService.java
 create mode 100644 core/src/main/java/org/apache/iceberg/metrics/MetricsReporters.java
 create mode 100644 core/src/test/java/org/apache/iceberg/metrics/TestMetricsReporters.java
 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
 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/actions/SparkActions.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/SparkReadConf.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/SparkReadOptions.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/SparkTableUtil.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/SparkUtil.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/SparkWriteOptions.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/SparkParquetReaders.java
 delete mode 100644 spark/v2.4/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.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/VectorizedSparkOrcReaders.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/actions/TestDeleteReachableFilesAction.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/actions/TestExpireSnapshotsAction.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/actions/TestRemoveOrphanFilesAction.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/actions/TestRewriteManifestsAction.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.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/TestSparkParquetReadMetadataColumns.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/data/parquet/vectorized/TestParquetVectorizedReads.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/TestDataSourceOptions.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/TestForwardCompatibility.java
 delete mode 100644 spark/v2.4/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSource.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/TestIcebergSourceTablesBase.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
 create mode 100644 spark/v3.4/build.gradle
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/antlr/org.apache.spark.sql.catalyst.parser.extensions/IcebergSqlExtensions.g4 (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/iceberg/spark/extensions/IcebergSparkSessionExtensions.scala (100%)
 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/RewriteDeleteFromIcebergTable.scala
 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%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/expressions/ExtendedV2ExpressionUtils.scala (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/optimizer/ExtendedReplaceNullWithFalseInPredicate.scala (100%)
 copy spark/{v3.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/catalyst/optimizer/ExtendedSimplifyConditionalsInPredicate.scala (100%)
 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/DeleteFromIcebergTable.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/connector/expressions/TruncateTransform.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
 copy spark/{v3.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/ExtendedDistributionAndOrderingUtils.scala (100%)
 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.3 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/OptimizeMetadataOnlyDeleteFromIcebergTable.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.2 => v3.4}/spark-extensions/src/main/scala/org/apache/spark/sql/execution/datasources/v2/SetWriteDistributionAndOrderingExec.scala (100%)
 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%)
 copy spark/{v3.1 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestIcebergExpressions.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 (100%)
 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.1 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestSetWriteDistributionAndOrdering.java (100%)
 create mode 100644 spark/v3.4/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestSnapshotTableProcedure.java
 copy spark/{v3.3 => v3.4}/spark-extensions/src/test/java/org/apache/iceberg/spark/extensions/TestStoragePartitionedJoinsInRowLevelOperations.java (100%)
 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%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/BaseCatalog.java (100%)
 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%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/FileRewriteCoordinator.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/FileScanTaskSetManager.java (100%)
 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%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SortOrderToSpark.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/Spark3Util.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkAggregates.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkCachedTableCatalog.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkCatalog.java (100%)
 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%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkReadConf.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkReadOptions.java (100%)
 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%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java (100%)
 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%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkUtil.java (100%)
 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 (97%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java (100%)
 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 (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteManifestsSparkAction.java (100%)
 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%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkActions.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkBinPackDataRewriter.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkBinPackStrategy.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkShufflingDataRewriter.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkSizeBasedDataRewriter.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkSortDataRewriter.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkSortStrategy.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkZOrderDataRewriter.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/actions/SparkZOrderStrategy.java (100%)
 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 (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueReaders.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcValueWriters.java (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java (100%)
 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 (100%)
 rename spark/{v2.4 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/ArrowVectorAccessorFactory.java (100%)
 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%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkParquetReaders.java (100%)
 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 (97%)
 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%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPartitioningAwareScan.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkPositionDeletesRewrite.java (100%)
 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 (100%)
 copy spark/{v3.3 => v3.4}/spark/src/main/java/org/apache/iceberg/spark/source/SparkWriteBuilder.java (100%)
 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/spark/source/Stats.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.3 => v3.4}/spark/src/main/scala/org/apache/spark/sql/catalyst/expressions/TransformExpressions.scala (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/DistributionAndOrderingUtils.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%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/TestFileRewriteCoordinator.java (100%)
 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%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestDeleteReachableFilesAction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestExpireSnapshotsAction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRemoveOrphanFilesAction.java (100%)
 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 (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestRewriteManifestsAction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/actions/TestSparkFileRewriter.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/AvroDataTest.java (100%)
 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 (100%)
 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%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkParquetReadMetadataColumns.java (100%)
 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 (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestSparkRecordOrcReaderWriter.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/TestVectorizedOrcDataReader.java (100%)
 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%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/data/parquet/vectorized/TestParquetVectorizedReads.java (100%)
 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%)
 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%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWriterV2.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestDataFrameWrites.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestDataSourceOptions.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestFilteredScan.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestForwardCompatibility.java (100%)
 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%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java (100%)
 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 (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestMetadataTablesWithPartitionEvolution.java (100%)
 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 (82%)
 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%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestSparkMetadataColumns.java (100%)
 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.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestStructuredStreamingRead3.java (92%)
 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 (100%)
 rename spark/{v2.4 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/source/TestWriteMetricsConfig.java (100%)
 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 (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestAggregatePushDown.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestAlterTable.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestCreateTable.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestCreateTableAsSelect.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestDeleteFrom.java (100%)
 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%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestNamespaceSQL.java (100%)
 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 (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestRefreshTable.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSelect.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkBucketFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkDaysFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkHoursFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkMonthsFunction.java (100%)
 copy spark/{v3.2 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkTruncateFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestSparkYearsFunction.java (100%)
 copy spark/{v3.3 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestStoragePartitionedJoins.java (100%)
 copy spark/{v3.1 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/TestTimestampWithoutZone.java (100%)
 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 => v3.4}/spark/src/test/java/org/apache/iceberg/spark/sql/UnpartitionedWritesTestBase.java (100%)