You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by bl...@apache.org on 2021/11/07 18:58:27 UTC
[iceberg] branch master updated: Flink: Separate the 1.13 code from
1.12 (#3476)
This is an automated email from the ASF dual-hosted git repository.
blue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/master by this push:
new 1d81643 Flink: Separate the 1.13 code from 1.12 (#3476)
1d81643 is described below
commit 1d8164383baf0e343ade13b21ed0e4d4d02c56cd
Author: openinx <op...@gmail.com>
AuthorDate: Mon Nov 8 02:58:16 2021 +0800
Flink: Separate the 1.13 code from 1.12 (#3476)
---
.github/workflows/flink-ci.yml | 26 -------
flink/build.gradle | 89 ----------------------
flink/v1.12/build.gradle | 13 ----
.../org/apache/iceberg/flink/CatalogLoader.java | 0
.../org/apache/iceberg/flink/FlinkCatalog.java | 0
.../apache/iceberg/flink/FlinkCatalogFactory.java | 0
.../apache/iceberg/flink/FlinkConfigOptions.java | 0
.../iceberg/flink/FlinkDynamicTableFactory.java | 0
.../org/apache/iceberg/flink/FlinkFilters.java | 0
.../org/apache/iceberg/flink/FlinkFixupTypes.java | 0
.../org/apache/iceberg/flink/FlinkSchemaUtil.java | 0
.../org/apache/iceberg/flink/FlinkTypeToType.java | 0
.../org/apache/iceberg/flink/FlinkTypeVisitor.java | 0
.../org/apache/iceberg/flink/IcebergTableSink.java | 0
.../apache/iceberg/flink/IcebergTableSource.java | 0
.../org/apache/iceberg/flink/RowDataWrapper.java | 0
.../java/org/apache/iceberg/flink/TableLoader.java | 0
.../org/apache/iceberg/flink/TypeToFlinkType.java | 0
.../org/apache/iceberg/flink/actions/Actions.java | 0
.../flink/actions/RewriteDataFilesAction.java | 0
.../flink/data/AvroWithFlinkSchemaVisitor.java | 0
.../apache/iceberg/flink/data/FlinkAvroReader.java | 0
.../apache/iceberg/flink/data/FlinkAvroWriter.java | 0
.../apache/iceberg/flink/data/FlinkOrcReader.java | 0
.../apache/iceberg/flink/data/FlinkOrcReaders.java | 0
.../apache/iceberg/flink/data/FlinkOrcWriter.java | 0
.../apache/iceberg/flink/data/FlinkOrcWriters.java | 0
.../iceberg/flink/data/FlinkParquetReaders.java | 0
.../iceberg/flink/data/FlinkParquetWriters.java | 0
.../iceberg/flink/data/FlinkSchemaVisitor.java | 0
.../iceberg/flink/data/FlinkValueReaders.java | 0
.../iceberg/flink/data/FlinkValueWriters.java | 0
.../flink/data/ParquetWithFlinkSchemaVisitor.java | 0
.../iceberg/flink/data/RowDataProjection.java | 0
.../org/apache/iceberg/flink/data/RowDataUtil.java | 0
.../iceberg/flink/sink/BaseDeltaTaskWriter.java | 0
.../apache/iceberg/flink/sink/DeltaManifests.java | 0
.../flink/sink/DeltaManifestsSerializer.java | 0
.../iceberg/flink/sink/FlinkAppenderFactory.java | 0
.../iceberg/flink/sink/FlinkFileWriterFactory.java | 0
.../iceberg/flink/sink/FlinkManifestUtil.java | 0
.../org/apache/iceberg/flink/sink/FlinkSink.java | 0
.../iceberg/flink/sink/IcebergFilesCommitter.java | 0
.../iceberg/flink/sink/IcebergStreamWriter.java | 0
.../flink/sink/ManifestOutputFileFactory.java | 0
.../iceberg/flink/sink/PartitionKeySelector.java | 0
.../iceberg/flink/sink/PartitionedDeltaWriter.java | 0
.../flink/sink/RowDataTaskWriterFactory.java | 0
.../iceberg/flink/sink/TaskWriterFactory.java | 0
.../flink/sink/UnpartitionedDeltaWriter.java | 0
.../apache/iceberg/flink/source/DataIterator.java | 0
.../iceberg/flink/source/FileScanTaskReader.java | 0
.../iceberg/flink/source/FlinkInputFormat.java | 0
.../iceberg/flink/source/FlinkInputSplit.java | 0
.../apache/iceberg/flink/source/FlinkSource.java | 0
.../iceberg/flink/source/FlinkSplitGenerator.java | 0
.../flink/source/RowDataFileScanTaskReader.java | 0
.../iceberg/flink/source/RowDataRewriter.java | 0
.../apache/iceberg/flink/source/ScanContext.java | 0
.../flink/source/StreamingMonitorFunction.java | 0
.../flink/source/StreamingReaderOperator.java | 0
.../iceberg/flink/util/FlinkCompatibilityUtil.java | 0
.../org.apache.flink.table.factories.Factory | 0
.../org.apache.flink.table.factories.TableFactory | 0
.../apache/iceberg/flink/FlinkCatalogTestBase.java | 0
.../org/apache/iceberg/flink/FlinkTestBase.java | 0
.../apache/iceberg/flink/MiniClusterResource.java | 0
.../org/apache/iceberg/flink/RowDataConverter.java | 0
.../org/apache/iceberg/flink/SimpleDataUtil.java | 0
.../iceberg/flink/TestCatalogTableLoader.java | 0
.../apache/iceberg/flink/TestChangeLogTable.java | 0
.../iceberg/flink/TestDataFileSerialization.java | 0
.../org/apache/iceberg/flink/TestFixtures.java | 0
.../iceberg/flink/TestFlinkCatalogDatabase.java | 0
.../iceberg/flink/TestFlinkCatalogFactory.java | 0
.../iceberg/flink/TestFlinkCatalogTable.java | 0
.../flink/TestFlinkCatalogTablePartitions.java | 0
.../org/apache/iceberg/flink/TestFlinkFilters.java | 0
.../apache/iceberg/flink/TestFlinkHiveCatalog.java | 0
.../apache/iceberg/flink/TestFlinkSchemaUtil.java | 0
.../apache/iceberg/flink/TestFlinkTableSink.java | 0
.../apache/iceberg/flink/TestFlinkTableSource.java | 0
.../java/org/apache/iceberg/flink/TestHelpers.java | 0
.../apache/iceberg/flink/TestIcebergConnector.java | 0
.../flink/TestManifestFileSerialization.java | 0
.../apache/iceberg/flink/TestRowDataWrapper.java | 0
.../org/apache/iceberg/flink/TestTableLoader.java | 0
.../flink/actions/TestRewriteDataFilesAction.java | 0
.../apache/iceberg/flink/data/RandomRowData.java | 0
.../flink/data/TestFlinkAvroReaderWriter.java | 0
.../flink/data/TestFlinkOrcReaderWriter.java | 0
.../iceberg/flink/data/TestFlinkParquetReader.java | 0
.../iceberg/flink/data/TestFlinkParquetWriter.java | 0
.../iceberg/flink/data/TestRowDataProjection.java | 0
.../iceberg/flink/data/TestRowProjection.java | 0
.../iceberg/flink/sink/TestDeltaTaskWriter.java | 0
.../flink/sink/TestFlinkAppenderFactory.java | 0
.../flink/sink/TestFlinkFileWriterFactory.java | 0
.../iceberg/flink/sink/TestFlinkIcebergSink.java | 0
.../iceberg/flink/sink/TestFlinkIcebergSinkV2.java | 0
.../iceberg/flink/sink/TestFlinkManifest.java | 0
.../flink/sink/TestFlinkPartitioningWriters.java | 0
.../flink/sink/TestFlinkPositionDeltaWriters.java | 0
.../flink/sink/TestFlinkRollingFileWriters.java | 0
.../iceberg/flink/sink/TestFlinkWriterMetrics.java | 0
.../flink/sink/TestIcebergFilesCommitter.java | 0
.../flink/sink/TestIcebergStreamWriter.java | 0
.../flink/sink/TestRowDataPartitionKey.java | 0
.../apache/iceberg/flink/sink/TestTaskWriters.java | 0
.../iceberg/flink/source/BoundedTableFactory.java | 0
.../iceberg/flink/source/BoundedTestSource.java | 0
.../flink/source/ChangeLogTableTestBase.java | 0
.../flink/source/TestBoundedTableFactory.java | 0
.../iceberg/flink/source/TestFlinkInputFormat.java | 0
.../source/TestFlinkInputFormatReaderDeletes.java | 0
.../flink/source/TestFlinkMergingMetrics.java | 0
.../flink/source/TestFlinkReaderDeletesBase.java | 0
.../apache/iceberg/flink/source/TestFlinkScan.java | 0
.../iceberg/flink/source/TestFlinkScanSql.java | 0
.../iceberg/flink/source/TestFlinkSource.java | 0
.../iceberg/flink/source/TestStreamScanSql.java | 0
.../flink/source/TestStreamingMonitorFunction.java | 0
.../flink/source/TestStreamingReaderOperator.java | 0
.../org.apache.flink.table.factories.Factory | 0
flink/v1.13/build.gradle | 13 ----
.../org/apache/iceberg/flink/CatalogLoader.java | 0
.../org/apache/iceberg/flink/FlinkCatalog.java | 0
.../apache/iceberg/flink/FlinkCatalogFactory.java | 0
.../apache/iceberg/flink/FlinkConfigOptions.java | 0
.../iceberg/flink/FlinkDynamicTableFactory.java | 0
.../org/apache/iceberg/flink/FlinkFilters.java | 0
.../org/apache/iceberg/flink/FlinkFixupTypes.java | 0
.../org/apache/iceberg/flink/FlinkSchemaUtil.java | 0
.../org/apache/iceberg/flink/FlinkTypeToType.java | 0
.../org/apache/iceberg/flink/FlinkTypeVisitor.java | 0
.../org/apache/iceberg/flink/IcebergTableSink.java | 0
.../apache/iceberg/flink/IcebergTableSource.java | 0
.../org/apache/iceberg/flink/RowDataWrapper.java | 0
.../java/org/apache/iceberg/flink/TableLoader.java | 0
.../org/apache/iceberg/flink/TypeToFlinkType.java | 0
.../org/apache/iceberg/flink/actions/Actions.java | 0
.../flink/actions/RewriteDataFilesAction.java | 0
.../flink/data/AvroWithFlinkSchemaVisitor.java | 0
.../apache/iceberg/flink/data/FlinkAvroReader.java | 0
.../apache/iceberg/flink/data/FlinkAvroWriter.java | 0
.../apache/iceberg/flink/data/FlinkOrcReader.java | 0
.../apache/iceberg/flink/data/FlinkOrcReaders.java | 0
.../apache/iceberg/flink/data/FlinkOrcWriter.java | 0
.../apache/iceberg/flink/data/FlinkOrcWriters.java | 0
.../iceberg/flink/data/FlinkParquetReaders.java | 0
.../iceberg/flink/data/FlinkParquetWriters.java | 0
.../iceberg/flink/data/FlinkSchemaVisitor.java | 0
.../iceberg/flink/data/FlinkValueReaders.java | 0
.../iceberg/flink/data/FlinkValueWriters.java | 0
.../flink/data/ParquetWithFlinkSchemaVisitor.java | 0
.../iceberg/flink/data/RowDataProjection.java | 0
.../org/apache/iceberg/flink/data/RowDataUtil.java | 0
.../iceberg/flink/sink/BaseDeltaTaskWriter.java | 0
.../apache/iceberg/flink/sink/DeltaManifests.java | 0
.../flink/sink/DeltaManifestsSerializer.java | 0
.../iceberg/flink/sink/FlinkAppenderFactory.java | 0
.../iceberg/flink/sink/FlinkFileWriterFactory.java | 0
.../iceberg/flink/sink/FlinkManifestUtil.java | 0
.../org/apache/iceberg/flink/sink/FlinkSink.java | 0
.../iceberg/flink/sink/IcebergFilesCommitter.java | 0
.../iceberg/flink/sink/IcebergStreamWriter.java | 0
.../flink/sink/ManifestOutputFileFactory.java | 0
.../iceberg/flink/sink/PartitionKeySelector.java | 0
.../iceberg/flink/sink/PartitionedDeltaWriter.java | 0
.../flink/sink/RowDataTaskWriterFactory.java | 0
.../iceberg/flink/sink/TaskWriterFactory.java | 0
.../flink/sink/UnpartitionedDeltaWriter.java | 0
.../apache/iceberg/flink/source/DataIterator.java | 0
.../iceberg/flink/source/FileScanTaskReader.java | 0
.../iceberg/flink/source/FlinkInputFormat.java | 0
.../iceberg/flink/source/FlinkInputSplit.java | 0
.../apache/iceberg/flink/source/FlinkSource.java | 0
.../iceberg/flink/source/FlinkSplitGenerator.java | 0
.../flink/source/RowDataFileScanTaskReader.java | 0
.../iceberg/flink/source/RowDataRewriter.java | 0
.../apache/iceberg/flink/source/ScanContext.java | 0
.../flink/source/StreamingMonitorFunction.java | 0
.../flink/source/StreamingReaderOperator.java | 0
.../iceberg/flink/util/FlinkCompatibilityUtil.java | 0
.../org.apache.flink.table.factories.Factory | 0
.../org.apache.flink.table.factories.TableFactory | 0
.../apache/iceberg/flink/FlinkCatalogTestBase.java | 0
.../org/apache/iceberg/flink/FlinkTestBase.java | 0
.../apache/iceberg/flink/MiniClusterResource.java | 0
.../org/apache/iceberg/flink/RowDataConverter.java | 0
.../org/apache/iceberg/flink/SimpleDataUtil.java | 0
.../iceberg/flink/TestCatalogTableLoader.java | 0
.../apache/iceberg/flink/TestChangeLogTable.java | 0
.../iceberg/flink/TestDataFileSerialization.java | 0
.../org/apache/iceberg/flink/TestFixtures.java | 0
.../iceberg/flink/TestFlinkCatalogDatabase.java | 0
.../iceberg/flink/TestFlinkCatalogFactory.java | 0
.../iceberg/flink/TestFlinkCatalogTable.java | 0
.../flink/TestFlinkCatalogTablePartitions.java | 0
.../org/apache/iceberg/flink/TestFlinkFilters.java | 0
.../apache/iceberg/flink/TestFlinkHiveCatalog.java | 0
.../apache/iceberg/flink/TestFlinkSchemaUtil.java | 0
.../apache/iceberg/flink/TestFlinkTableSink.java | 0
.../apache/iceberg/flink/TestFlinkTableSource.java | 0
.../java/org/apache/iceberg/flink/TestHelpers.java | 0
.../apache/iceberg/flink/TestIcebergConnector.java | 0
.../flink/TestManifestFileSerialization.java | 0
.../apache/iceberg/flink/TestRowDataWrapper.java | 0
.../org/apache/iceberg/flink/TestTableLoader.java | 0
.../flink/actions/TestRewriteDataFilesAction.java | 0
.../apache/iceberg/flink/data/RandomRowData.java | 0
.../flink/data/TestFlinkAvroReaderWriter.java | 0
.../flink/data/TestFlinkOrcReaderWriter.java | 0
.../iceberg/flink/data/TestFlinkParquetReader.java | 0
.../iceberg/flink/data/TestFlinkParquetWriter.java | 0
.../iceberg/flink/data/TestRowDataProjection.java | 0
.../iceberg/flink/data/TestRowProjection.java | 0
.../iceberg/flink/sink/TestDeltaTaskWriter.java | 0
.../flink/sink/TestFlinkAppenderFactory.java | 0
.../flink/sink/TestFlinkFileWriterFactory.java | 0
.../iceberg/flink/sink/TestFlinkIcebergSink.java | 0
.../iceberg/flink/sink/TestFlinkIcebergSinkV2.java | 0
.../iceberg/flink/sink/TestFlinkManifest.java | 0
.../flink/sink/TestFlinkPartitioningWriters.java | 0
.../flink/sink/TestFlinkPositionDeltaWriters.java | 0
.../flink/sink/TestFlinkRollingFileWriters.java | 0
.../iceberg/flink/sink/TestFlinkWriterMetrics.java | 0
.../flink/sink/TestIcebergFilesCommitter.java | 0
.../flink/sink/TestIcebergStreamWriter.java | 0
.../flink/sink/TestRowDataPartitionKey.java | 0
.../apache/iceberg/flink/sink/TestTaskWriters.java | 0
.../iceberg/flink/source/BoundedTableFactory.java | 0
.../iceberg/flink/source/BoundedTestSource.java | 0
.../flink/source/ChangeLogTableTestBase.java | 0
.../flink/source/TestBoundedTableFactory.java | 0
.../iceberg/flink/source/TestFlinkInputFormat.java | 0
.../source/TestFlinkInputFormatReaderDeletes.java | 0
.../flink/source/TestFlinkMergingMetrics.java | 0
.../flink/source/TestFlinkReaderDeletesBase.java | 0
.../apache/iceberg/flink/source/TestFlinkScan.java | 0
.../iceberg/flink/source/TestFlinkScanSql.java | 0
.../iceberg/flink/source/TestFlinkSource.java | 0
.../iceberg/flink/source/TestStreamScanSql.java | 0
.../flink/source/TestStreamingMonitorFunction.java | 0
.../flink/source/TestStreamingReaderOperator.java | 0
.../org.apache.flink.table.factories.Factory | 0
246 files changed, 141 deletions(-)
diff --git a/.github/workflows/flink-ci.yml b/.github/workflows/flink-ci.yml
index e703370..3edd270 100644
--- a/.github/workflows/flink-ci.yml
+++ b/.github/workflows/flink-ci.yml
@@ -52,32 +52,6 @@ on:
- 'site/**'
jobs:
- flink-common-tests:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- jvm: [8, 11]
- env:
- SPARK_LOCAL_IP: localhost
- steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-java@v1
- with:
- java-version: ${{ matrix.jvm }}
- - uses: actions/cache@v2
- with:
- path: ~/.gradle/caches
- key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
- restore-keys: ${{ runner.os }}-gradle
- - run: echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
- - run: ./gradlew -DsparkVersions= -DhiveVersions= :iceberg-flink:check -Pquick=true -x javadoc
- - uses: actions/upload-artifact@v2
- if: failure()
- with:
- name: test logs
- path: |
- **/build/testlogs
-
flink-tests:
runs-on: ubuntu-latest
strategy:
diff --git a/flink/build.gradle b/flink/build.gradle
index bbf6517..41b9e63 100644
--- a/flink/build.gradle
+++ b/flink/build.gradle
@@ -17,95 +17,6 @@
* under the License.
*/
-project(':iceberg-flink') {
- dependencies {
- implementation project(path: ':iceberg-bundled-guava', configuration: 'shadow')
- api project(':iceberg-api')
- implementation project(':iceberg-common')
- implementation project(':iceberg-core')
- api project(':iceberg-data')
- implementation project(':iceberg-orc')
- implementation project(':iceberg-parquet')
- implementation project(':iceberg-hive-metastore')
-
- compileOnly "org.apache.flink:flink-streaming-java_2.12"
- compileOnly "org.apache.flink:flink-streaming-java_2.12::tests"
- compileOnly "org.apache.flink:flink-table-api-java-bridge_2.12"
- compileOnly "org.apache.flink:flink-table-planner-blink_2.12"
- compileOnly "org.apache.flink:flink-table-planner_2.12"
- compileOnly "org.apache.hadoop:hadoop-hdfs"
- compileOnly "org.apache.hadoop:hadoop-common"
- compileOnly("org.apache.hadoop:hadoop-minicluster") {
- exclude group: 'org.apache.avro', module: 'avro'
- }
-
- implementation("org.apache.parquet:parquet-avro") {
- exclude group: 'org.apache.avro', module: 'avro'
- // already shaded by Parquet
- exclude group: 'it.unimi.dsi'
- exclude group: 'org.codehaus.jackson'
- }
-
- compileOnly "org.apache.avro:avro"
-
- implementation("org.apache.orc:orc-core::nohive") {
- exclude group: 'org.apache.hadoop'
- exclude group: 'commons-lang'
- // These artifacts are shaded and included in the orc-core fat jar
- exclude group: 'com.google.protobuf', module: 'protobuf-java'
- exclude group: 'org.apache.hive', module: 'hive-storage-api'
- }
-
- testImplementation "org.apache.flink:flink-core"
- testImplementation "org.apache.flink:flink-runtime_2.12"
- testImplementation "org.apache.flink:flink-table-planner-blink_2.12"
- testImplementation("org.apache.flink:flink-test-utils-junit") {
- exclude group: 'junit'
- }
- testImplementation("org.apache.flink:flink-test-utils_2.12") {
- exclude group: "org.apache.curator", module: 'curator-test'
- exclude group: 'junit'
- }
-
- testImplementation project(path: ':iceberg-hive-metastore', configuration: 'testArtifacts')
- testImplementation project(path: ':iceberg-api', configuration: 'testArtifacts')
- testImplementation project(path: ':iceberg-core', configuration: 'testArtifacts')
- testImplementation project(path: ':iceberg-data', configuration: 'testArtifacts')
-
- // By default, hive-exec is a fat/uber jar and it exports a guava library
- // that's really old. We use the core classifier to be able to override our guava
- // version. Luckily, hive-exec seems to work okay so far with this version of guava
- // See: https://github.com/apache/hive/blob/master/ql/pom.xml#L911 for more context.
- testImplementation("org.apache.hive:hive-exec::core") {
- exclude group: 'org.apache.avro', module: 'avro'
- exclude group: 'org.slf4j', module: 'slf4j-log4j12'
- exclude group: 'org.pentaho' // missing dependency
- exclude group: 'org.apache.hive', module: 'hive-llap-tez'
- exclude group: 'org.apache.logging.log4j'
- exclude group: 'com.google.protobuf', module: 'protobuf-java'
- exclude group: 'org.apache.calcite'
- exclude group: 'org.apache.calcite.avatica'
- exclude group: 'com.google.code.findbugs', module: 'jsr305'
- }
-
- testImplementation("org.apache.hive:hive-metastore") {
- exclude group: 'org.apache.avro', module: 'avro'
- exclude group: 'org.slf4j', module: 'slf4j-log4j12'
- exclude group: 'org.pentaho' // missing dependency
- exclude group: 'org.apache.hbase'
- exclude group: 'org.apache.logging.log4j'
- exclude group: 'co.cask.tephra'
- exclude group: 'com.google.code.findbugs', module: 'jsr305'
- exclude group: 'org.eclipse.jetty.aggregate', module: 'jetty-all'
- exclude group: 'org.eclipse.jetty.orbit', module: 'javax.servlet'
- exclude group: 'org.apache.parquet', module: 'parquet-hadoop-bundle'
- exclude group: 'com.tdunning', module: 'json'
- exclude group: 'javax.transaction', module: 'transaction-api'
- exclude group: 'com.zaxxer', module: 'HikariCP'
- }
- }
-}
-
def flinkVersions = (System.getProperty("flinkVersions") != null ? System.getProperty("flinkVersions") : System.getProperty("defaultFlinkVersions")).split(",")
if (flinkVersions.contains("1.12")) {
diff --git a/flink/v1.12/build.gradle b/flink/v1.12/build.gradle
index 46cefa8..2dd474e 100644
--- a/flink/v1.12/build.gradle
+++ b/flink/v1.12/build.gradle
@@ -30,19 +30,6 @@ configure(flinkProjects) {
project(':iceberg-flink:iceberg-flink-1.12') {
- sourceSets {
- main {
- java.srcDirs = [
- "${project(':iceberg-flink').projectDir}/src/main/java",
- "src/main/java"
- ]
- resources.srcDirs = [
- "${project(':iceberg-flink').projectDir}/src/main/resources",
- "src/main/resources"
- ]
- }
- }
-
dependencies {
implementation project(path: ':iceberg-bundled-guava', configuration: 'shadow')
api project(':iceberg-api')
diff --git a/flink/src/main/java/org/apache/iceberg/flink/CatalogLoader.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/CatalogLoader.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/CatalogLoader.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/CatalogLoader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalog.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalog.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/FlinkCatalog.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalog.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkConfigOptions.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkConfigOptions.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/FlinkConfigOptions.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkConfigOptions.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkDynamicTableFactory.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkDynamicTableFactory.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/FlinkDynamicTableFactory.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkDynamicTableFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkFilters.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkFilters.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/FlinkFilters.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkFilters.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkFixupTypes.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkFixupTypes.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/FlinkFixupTypes.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkFixupTypes.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkSchemaUtil.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkSchemaUtil.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/FlinkSchemaUtil.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkSchemaUtil.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeVisitor.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeVisitor.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/FlinkTypeVisitor.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeVisitor.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSink.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSink.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/IcebergTableSink.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSink.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSource.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSource.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/IcebergTableSource.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSource.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/RowDataWrapper.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/RowDataWrapper.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/RowDataWrapper.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/RowDataWrapper.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/TableLoader.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/TableLoader.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/TableLoader.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/TableLoader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/TypeToFlinkType.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/TypeToFlinkType.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/TypeToFlinkType.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/TypeToFlinkType.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/actions/Actions.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/actions/Actions.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/actions/Actions.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/actions/Actions.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/actions/RewriteDataFilesAction.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/actions/RewriteDataFilesAction.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/actions/RewriteDataFilesAction.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/actions/RewriteDataFilesAction.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/AvroWithFlinkSchemaVisitor.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/AvroWithFlinkSchemaVisitor.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/AvroWithFlinkSchemaVisitor.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/AvroWithFlinkSchemaVisitor.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroReader.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroReader.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroReader.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroReader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroWriter.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroWriter.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroWriter.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReader.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReader.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReader.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReaders.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReaders.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReaders.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReaders.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriter.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriter.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriter.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriters.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriters.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriters.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriters.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetReaders.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetReaders.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetReaders.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetReaders.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetWriters.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetWriters.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetWriters.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetWriters.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkSchemaVisitor.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkSchemaVisitor.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/FlinkSchemaVisitor.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkSchemaVisitor.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueReaders.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueReaders.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueReaders.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueReaders.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueWriters.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueWriters.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueWriters.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueWriters.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/ParquetWithFlinkSchemaVisitor.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/ParquetWithFlinkSchemaVisitor.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/ParquetWithFlinkSchemaVisitor.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/ParquetWithFlinkSchemaVisitor.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/RowDataProjection.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/RowDataProjection.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/RowDataProjection.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/RowDataProjection.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/RowDataUtil.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/RowDataUtil.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/data/RowDataUtil.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/data/RowDataUtil.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/BaseDeltaTaskWriter.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/BaseDeltaTaskWriter.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/BaseDeltaTaskWriter.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/BaseDeltaTaskWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifests.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifests.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifests.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifests.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifestsSerializer.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifestsSerializer.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifestsSerializer.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifestsSerializer.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkAppenderFactory.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkAppenderFactory.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/FlinkAppenderFactory.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkAppenderFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkFileWriterFactory.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkFileWriterFactory.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/FlinkFileWriterFactory.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkFileWriterFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkManifestUtil.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkManifestUtil.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/FlinkManifestUtil.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkManifestUtil.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkSink.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkSink.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/FlinkSink.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkSink.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergFilesCommitter.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergFilesCommitter.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/IcebergFilesCommitter.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergFilesCommitter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergStreamWriter.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergStreamWriter.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/IcebergStreamWriter.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergStreamWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/ManifestOutputFileFactory.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/ManifestOutputFileFactory.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/ManifestOutputFileFactory.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/ManifestOutputFileFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionKeySelector.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionKeySelector.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/PartitionKeySelector.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionKeySelector.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionedDeltaWriter.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionedDeltaWriter.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/PartitionedDeltaWriter.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionedDeltaWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/RowDataTaskWriterFactory.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/RowDataTaskWriterFactory.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/RowDataTaskWriterFactory.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/RowDataTaskWriterFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/TaskWriterFactory.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/TaskWriterFactory.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/TaskWriterFactory.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/TaskWriterFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/UnpartitionedDeltaWriter.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/UnpartitionedDeltaWriter.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/sink/UnpartitionedDeltaWriter.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/sink/UnpartitionedDeltaWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/DataIterator.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/DataIterator.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/source/DataIterator.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/DataIterator.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/FileScanTaskReader.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/FileScanTaskReader.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/source/FileScanTaskReader.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/FileScanTaskReader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputFormat.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputFormat.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputFormat.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputFormat.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputSplit.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputSplit.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputSplit.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputSplit.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSource.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSource.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/source/FlinkSource.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSource.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSplitGenerator.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSplitGenerator.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/source/FlinkSplitGenerator.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSplitGenerator.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/RowDataFileScanTaskReader.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/RowDataFileScanTaskReader.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/source/RowDataFileScanTaskReader.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/RowDataFileScanTaskReader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/RowDataRewriter.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/RowDataRewriter.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/source/RowDataRewriter.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/RowDataRewriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/ScanContext.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/ScanContext.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/source/ScanContext.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/ScanContext.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/StreamingMonitorFunction.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/StreamingMonitorFunction.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/source/StreamingMonitorFunction.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/StreamingMonitorFunction.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/StreamingReaderOperator.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/StreamingReaderOperator.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/source/StreamingReaderOperator.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/source/StreamingReaderOperator.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/util/FlinkCompatibilityUtil.java b/flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/util/FlinkCompatibilityUtil.java
similarity index 100%
copy from flink/src/main/java/org/apache/iceberg/flink/util/FlinkCompatibilityUtil.java
copy to flink/v1.12/flink/src/main/java/org/apache/iceberg/flink/util/FlinkCompatibilityUtil.java
diff --git a/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory b/flink/v1.12/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
similarity index 100%
copy from flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
copy to flink/v1.12/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
diff --git a/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.TableFactory b/flink/v1.12/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.TableFactory
similarity index 100%
copy from flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.TableFactory
copy to flink/v1.12/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.TableFactory
diff --git a/flink/src/test/java/org/apache/iceberg/flink/FlinkCatalogTestBase.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/FlinkCatalogTestBase.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/FlinkCatalogTestBase.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/FlinkCatalogTestBase.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/FlinkTestBase.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/FlinkTestBase.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/FlinkTestBase.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/FlinkTestBase.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/MiniClusterResource.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/MiniClusterResource.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/MiniClusterResource.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/MiniClusterResource.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/RowDataConverter.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/RowDataConverter.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/RowDataConverter.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/RowDataConverter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/SimpleDataUtil.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/SimpleDataUtil.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/SimpleDataUtil.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/SimpleDataUtil.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestCatalogTableLoader.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestCatalogTableLoader.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestCatalogTableLoader.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestCatalogTableLoader.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestChangeLogTable.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestChangeLogTable.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestChangeLogTable.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestChangeLogTable.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestDataFileSerialization.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestDataFileSerialization.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestDataFileSerialization.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestDataFileSerialization.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFixtures.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFixtures.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestFixtures.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFixtures.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogDatabase.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogDatabase.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogDatabase.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogDatabase.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogFactory.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogFactory.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogFactory.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogFactory.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTable.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTable.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTable.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTable.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTablePartitions.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTablePartitions.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTablePartitions.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTablePartitions.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkFilters.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkFilters.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestFlinkFilters.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkFilters.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkHiveCatalog.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkHiveCatalog.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestFlinkHiveCatalog.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkHiveCatalog.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkSchemaUtil.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkSchemaUtil.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestFlinkSchemaUtil.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkSchemaUtil.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSink.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSink.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSink.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSink.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSource.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSource.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSource.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSource.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestHelpers.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestHelpers.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestHelpers.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestHelpers.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestIcebergConnector.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestIcebergConnector.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestIcebergConnector.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestIcebergConnector.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestManifestFileSerialization.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestManifestFileSerialization.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestManifestFileSerialization.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestManifestFileSerialization.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestRowDataWrapper.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestRowDataWrapper.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestRowDataWrapper.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestRowDataWrapper.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestTableLoader.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestTableLoader.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/TestTableLoader.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/TestTableLoader.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/actions/TestRewriteDataFilesAction.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/actions/TestRewriteDataFilesAction.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/actions/TestRewriteDataFilesAction.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/actions/TestRewriteDataFilesAction.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/RandomRowData.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/RandomRowData.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/data/RandomRowData.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/RandomRowData.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkAvroReaderWriter.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkAvroReaderWriter.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkAvroReaderWriter.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkAvroReaderWriter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkOrcReaderWriter.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkOrcReaderWriter.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkOrcReaderWriter.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkOrcReaderWriter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetReader.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetReader.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetReader.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetReader.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetWriter.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetWriter.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetWriter.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetWriter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestRowDataProjection.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestRowDataProjection.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/data/TestRowDataProjection.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestRowDataProjection.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestRowProjection.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestRowProjection.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/data/TestRowProjection.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/data/TestRowProjection.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestDeltaTaskWriter.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestDeltaTaskWriter.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestDeltaTaskWriter.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestDeltaTaskWriter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkAppenderFactory.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkAppenderFactory.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkAppenderFactory.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkAppenderFactory.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkFileWriterFactory.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkFileWriterFactory.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkFileWriterFactory.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkFileWriterFactory.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSink.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSink.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSink.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSink.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSinkV2.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSinkV2.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSinkV2.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSinkV2.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkManifest.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkManifest.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkManifest.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkManifest.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPartitioningWriters.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPartitioningWriters.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPartitioningWriters.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPartitioningWriters.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPositionDeltaWriters.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPositionDeltaWriters.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPositionDeltaWriters.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPositionDeltaWriters.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkRollingFileWriters.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkRollingFileWriters.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkRollingFileWriters.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkRollingFileWriters.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkWriterMetrics.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkWriterMetrics.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkWriterMetrics.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkWriterMetrics.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergFilesCommitter.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergFilesCommitter.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergFilesCommitter.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergFilesCommitter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergStreamWriter.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergStreamWriter.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergStreamWriter.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergStreamWriter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestRowDataPartitionKey.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestRowDataPartitionKey.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestRowDataPartitionKey.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestRowDataPartitionKey.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestTaskWriters.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestTaskWriters.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/sink/TestTaskWriters.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/sink/TestTaskWriters.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTableFactory.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTableFactory.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/BoundedTableFactory.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTableFactory.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTestSource.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTestSource.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/BoundedTestSource.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTestSource.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/ChangeLogTableTestBase.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/ChangeLogTableTestBase.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/ChangeLogTableTestBase.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/ChangeLogTableTestBase.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestBoundedTableFactory.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestBoundedTableFactory.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/TestBoundedTableFactory.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestBoundedTableFactory.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormat.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormat.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormat.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormat.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormatReaderDeletes.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormatReaderDeletes.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormatReaderDeletes.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormatReaderDeletes.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkMergingMetrics.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkMergingMetrics.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkMergingMetrics.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkMergingMetrics.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkReaderDeletesBase.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkReaderDeletesBase.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkReaderDeletesBase.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkReaderDeletesBase.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScan.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScan.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScan.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScan.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScanSql.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScanSql.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScanSql.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScanSql.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkSource.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkSource.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkSource.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkSource.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamScanSql.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamScanSql.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/TestStreamScanSql.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamScanSql.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingMonitorFunction.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingMonitorFunction.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingMonitorFunction.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingMonitorFunction.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingReaderOperator.java b/flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingReaderOperator.java
similarity index 100%
copy from flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingReaderOperator.java
copy to flink/v1.12/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingReaderOperator.java
diff --git a/flink/src/test/resources/META-INF/services/org.apache.flink.table.factories.Factory b/flink/v1.12/flink/src/test/resources/META-INF/services/org.apache.flink.table.factories.Factory
similarity index 100%
copy from flink/src/test/resources/META-INF/services/org.apache.flink.table.factories.Factory
copy to flink/v1.12/flink/src/test/resources/META-INF/services/org.apache.flink.table.factories.Factory
diff --git a/flink/v1.13/build.gradle b/flink/v1.13/build.gradle
index b2c24d4..0e97de3 100644
--- a/flink/v1.13/build.gradle
+++ b/flink/v1.13/build.gradle
@@ -30,19 +30,6 @@ configure(flinkProjects) {
project(':iceberg-flink:iceberg-flink-1.13') {
- sourceSets {
- main {
- java.srcDirs = [
- "${project(':iceberg-flink').projectDir}/src/main/java",
- "src/main/java"
- ]
- resources.srcDirs = [
- "${project(':iceberg-flink').projectDir}/src/main/resources",
- "src/main/resources"
- ]
- }
- }
-
dependencies {
implementation project(path: ':iceberg-bundled-guava', configuration: 'shadow')
api project(':iceberg-api')
diff --git a/flink/src/main/java/org/apache/iceberg/flink/CatalogLoader.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/CatalogLoader.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/CatalogLoader.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/CatalogLoader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalog.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalog.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/FlinkCatalog.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalog.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkCatalogFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkConfigOptions.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkConfigOptions.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/FlinkConfigOptions.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkConfigOptions.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkDynamicTableFactory.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkDynamicTableFactory.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/FlinkDynamicTableFactory.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkDynamicTableFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkFilters.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkFilters.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/FlinkFilters.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkFilters.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkFixupTypes.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkFixupTypes.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/FlinkFixupTypes.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkFixupTypes.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkSchemaUtil.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkSchemaUtil.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/FlinkSchemaUtil.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkSchemaUtil.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeVisitor.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeVisitor.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/FlinkTypeVisitor.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeVisitor.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSink.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSink.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/IcebergTableSink.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSink.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSource.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSource.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/IcebergTableSource.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/IcebergTableSource.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/RowDataWrapper.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/RowDataWrapper.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/RowDataWrapper.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/RowDataWrapper.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/TableLoader.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/TableLoader.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/TableLoader.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/TableLoader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/TypeToFlinkType.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/TypeToFlinkType.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/TypeToFlinkType.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/TypeToFlinkType.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/actions/Actions.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/actions/Actions.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/actions/Actions.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/actions/Actions.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/actions/RewriteDataFilesAction.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/actions/RewriteDataFilesAction.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/actions/RewriteDataFilesAction.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/actions/RewriteDataFilesAction.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/AvroWithFlinkSchemaVisitor.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/AvroWithFlinkSchemaVisitor.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/AvroWithFlinkSchemaVisitor.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/AvroWithFlinkSchemaVisitor.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroReader.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroReader.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroReader.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroReader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroWriter.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroWriter.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroWriter.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkAvroWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReader.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReader.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReader.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReaders.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReaders.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReaders.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcReaders.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriter.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriter.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriter.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriters.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriters.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriters.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkOrcWriters.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetReaders.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetReaders.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetReaders.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetReaders.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetWriters.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetWriters.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetWriters.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkParquetWriters.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkSchemaVisitor.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkSchemaVisitor.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/FlinkSchemaVisitor.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkSchemaVisitor.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueReaders.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueReaders.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueReaders.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueReaders.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueWriters.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueWriters.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueWriters.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/FlinkValueWriters.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/ParquetWithFlinkSchemaVisitor.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/ParquetWithFlinkSchemaVisitor.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/ParquetWithFlinkSchemaVisitor.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/ParquetWithFlinkSchemaVisitor.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/RowDataProjection.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/RowDataProjection.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/RowDataProjection.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/RowDataProjection.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/data/RowDataUtil.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/RowDataUtil.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/data/RowDataUtil.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/data/RowDataUtil.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/BaseDeltaTaskWriter.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/BaseDeltaTaskWriter.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/BaseDeltaTaskWriter.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/BaseDeltaTaskWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifests.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifests.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifests.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifests.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifestsSerializer.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifestsSerializer.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifestsSerializer.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/DeltaManifestsSerializer.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkAppenderFactory.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkAppenderFactory.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/FlinkAppenderFactory.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkAppenderFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkFileWriterFactory.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkFileWriterFactory.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/FlinkFileWriterFactory.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkFileWriterFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkManifestUtil.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkManifestUtil.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/FlinkManifestUtil.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkManifestUtil.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkSink.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkSink.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/FlinkSink.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/FlinkSink.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergFilesCommitter.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergFilesCommitter.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/IcebergFilesCommitter.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergFilesCommitter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergStreamWriter.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergStreamWriter.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/IcebergStreamWriter.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/IcebergStreamWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/ManifestOutputFileFactory.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/ManifestOutputFileFactory.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/ManifestOutputFileFactory.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/ManifestOutputFileFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionKeySelector.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionKeySelector.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/PartitionKeySelector.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionKeySelector.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionedDeltaWriter.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionedDeltaWriter.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/PartitionedDeltaWriter.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/PartitionedDeltaWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/RowDataTaskWriterFactory.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/RowDataTaskWriterFactory.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/RowDataTaskWriterFactory.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/RowDataTaskWriterFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/TaskWriterFactory.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/TaskWriterFactory.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/TaskWriterFactory.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/TaskWriterFactory.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/sink/UnpartitionedDeltaWriter.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/UnpartitionedDeltaWriter.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/sink/UnpartitionedDeltaWriter.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/sink/UnpartitionedDeltaWriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/DataIterator.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/DataIterator.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/source/DataIterator.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/DataIterator.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/FileScanTaskReader.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/FileScanTaskReader.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/source/FileScanTaskReader.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/FileScanTaskReader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputFormat.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputFormat.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputFormat.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputFormat.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputSplit.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputSplit.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputSplit.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/FlinkInputSplit.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSource.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSource.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/source/FlinkSource.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSource.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSplitGenerator.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSplitGenerator.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/source/FlinkSplitGenerator.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/FlinkSplitGenerator.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/RowDataFileScanTaskReader.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/RowDataFileScanTaskReader.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/source/RowDataFileScanTaskReader.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/RowDataFileScanTaskReader.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/RowDataRewriter.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/RowDataRewriter.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/source/RowDataRewriter.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/RowDataRewriter.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/ScanContext.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/ScanContext.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/source/ScanContext.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/ScanContext.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/StreamingMonitorFunction.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/StreamingMonitorFunction.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/source/StreamingMonitorFunction.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/StreamingMonitorFunction.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/source/StreamingReaderOperator.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/StreamingReaderOperator.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/source/StreamingReaderOperator.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/source/StreamingReaderOperator.java
diff --git a/flink/src/main/java/org/apache/iceberg/flink/util/FlinkCompatibilityUtil.java b/flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/util/FlinkCompatibilityUtil.java
similarity index 100%
rename from flink/src/main/java/org/apache/iceberg/flink/util/FlinkCompatibilityUtil.java
rename to flink/v1.13/flink/src/main/java/org/apache/iceberg/flink/util/FlinkCompatibilityUtil.java
diff --git a/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory b/flink/v1.13/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
similarity index 100%
rename from flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
rename to flink/v1.13/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
diff --git a/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.TableFactory b/flink/v1.13/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.TableFactory
similarity index 100%
rename from flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.TableFactory
rename to flink/v1.13/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.TableFactory
diff --git a/flink/src/test/java/org/apache/iceberg/flink/FlinkCatalogTestBase.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/FlinkCatalogTestBase.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/FlinkCatalogTestBase.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/FlinkCatalogTestBase.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/FlinkTestBase.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/FlinkTestBase.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/FlinkTestBase.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/FlinkTestBase.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/MiniClusterResource.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/MiniClusterResource.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/MiniClusterResource.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/MiniClusterResource.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/RowDataConverter.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/RowDataConverter.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/RowDataConverter.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/RowDataConverter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/SimpleDataUtil.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/SimpleDataUtil.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/SimpleDataUtil.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/SimpleDataUtil.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestCatalogTableLoader.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestCatalogTableLoader.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestCatalogTableLoader.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestCatalogTableLoader.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestChangeLogTable.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestChangeLogTable.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestChangeLogTable.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestChangeLogTable.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestDataFileSerialization.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestDataFileSerialization.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestDataFileSerialization.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestDataFileSerialization.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFixtures.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFixtures.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestFixtures.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFixtures.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogDatabase.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogDatabase.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogDatabase.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogDatabase.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogFactory.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogFactory.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogFactory.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogFactory.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTable.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTable.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTable.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTable.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTablePartitions.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTablePartitions.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTablePartitions.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkCatalogTablePartitions.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkFilters.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkFilters.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestFlinkFilters.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkFilters.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkHiveCatalog.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkHiveCatalog.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestFlinkHiveCatalog.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkHiveCatalog.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkSchemaUtil.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkSchemaUtil.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestFlinkSchemaUtil.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkSchemaUtil.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSink.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSink.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSink.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSink.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSource.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSource.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSource.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestFlinkTableSource.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestHelpers.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestHelpers.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestHelpers.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestHelpers.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestIcebergConnector.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestIcebergConnector.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestIcebergConnector.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestIcebergConnector.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestManifestFileSerialization.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestManifestFileSerialization.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestManifestFileSerialization.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestManifestFileSerialization.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestRowDataWrapper.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestRowDataWrapper.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestRowDataWrapper.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestRowDataWrapper.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/TestTableLoader.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestTableLoader.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/TestTableLoader.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/TestTableLoader.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/actions/TestRewriteDataFilesAction.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/actions/TestRewriteDataFilesAction.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/actions/TestRewriteDataFilesAction.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/actions/TestRewriteDataFilesAction.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/RandomRowData.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/RandomRowData.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/data/RandomRowData.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/RandomRowData.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkAvroReaderWriter.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkAvroReaderWriter.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkAvroReaderWriter.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkAvroReaderWriter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkOrcReaderWriter.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkOrcReaderWriter.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkOrcReaderWriter.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkOrcReaderWriter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetReader.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetReader.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetReader.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetReader.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetWriter.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetWriter.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetWriter.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestFlinkParquetWriter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestRowDataProjection.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestRowDataProjection.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/data/TestRowDataProjection.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestRowDataProjection.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/data/TestRowProjection.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestRowProjection.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/data/TestRowProjection.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/data/TestRowProjection.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestDeltaTaskWriter.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestDeltaTaskWriter.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestDeltaTaskWriter.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestDeltaTaskWriter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkAppenderFactory.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkAppenderFactory.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkAppenderFactory.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkAppenderFactory.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkFileWriterFactory.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkFileWriterFactory.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkFileWriterFactory.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkFileWriterFactory.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSink.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSink.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSink.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSink.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSinkV2.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSinkV2.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSinkV2.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkIcebergSinkV2.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkManifest.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkManifest.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkManifest.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkManifest.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPartitioningWriters.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPartitioningWriters.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPartitioningWriters.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPartitioningWriters.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPositionDeltaWriters.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPositionDeltaWriters.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPositionDeltaWriters.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkPositionDeltaWriters.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkRollingFileWriters.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkRollingFileWriters.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkRollingFileWriters.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkRollingFileWriters.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkWriterMetrics.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkWriterMetrics.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkWriterMetrics.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestFlinkWriterMetrics.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergFilesCommitter.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergFilesCommitter.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergFilesCommitter.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergFilesCommitter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergStreamWriter.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergStreamWriter.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergStreamWriter.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestIcebergStreamWriter.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestRowDataPartitionKey.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestRowDataPartitionKey.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestRowDataPartitionKey.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestRowDataPartitionKey.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/sink/TestTaskWriters.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestTaskWriters.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/sink/TestTaskWriters.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/sink/TestTaskWriters.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTableFactory.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTableFactory.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/BoundedTableFactory.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTableFactory.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTestSource.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTestSource.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/BoundedTestSource.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/BoundedTestSource.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/ChangeLogTableTestBase.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/ChangeLogTableTestBase.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/ChangeLogTableTestBase.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/ChangeLogTableTestBase.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestBoundedTableFactory.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestBoundedTableFactory.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/TestBoundedTableFactory.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestBoundedTableFactory.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormat.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormat.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormat.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormat.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormatReaderDeletes.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormatReaderDeletes.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormatReaderDeletes.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkInputFormatReaderDeletes.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkMergingMetrics.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkMergingMetrics.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkMergingMetrics.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkMergingMetrics.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkReaderDeletesBase.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkReaderDeletesBase.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkReaderDeletesBase.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkReaderDeletesBase.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScan.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScan.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScan.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScan.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScanSql.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScanSql.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScanSql.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkScanSql.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkSource.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkSource.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkSource.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestFlinkSource.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamScanSql.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamScanSql.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/TestStreamScanSql.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamScanSql.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingMonitorFunction.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingMonitorFunction.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingMonitorFunction.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingMonitorFunction.java
diff --git a/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingReaderOperator.java b/flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingReaderOperator.java
similarity index 100%
rename from flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingReaderOperator.java
rename to flink/v1.13/flink/src/test/java/org/apache/iceberg/flink/source/TestStreamingReaderOperator.java
diff --git a/flink/src/test/resources/META-INF/services/org.apache.flink.table.factories.Factory b/flink/v1.13/flink/src/test/resources/META-INF/services/org.apache.flink.table.factories.Factory
similarity index 100%
rename from flink/src/test/resources/META-INF/services/org.apache.flink.table.factories.Factory
rename to flink/v1.13/flink/src/test/resources/META-INF/services/org.apache.flink.table.factories.Factory