diff --git a/.github/workflows/ci-flink.yaml b/.github/workflows/ci-flink.yaml
deleted file mode 100644
index 95ab7833ab..0000000000
--- a/.github/workflows/ci-flink.yaml
+++ /dev/null
@@ -1,55 +0,0 @@
-################################################################################
-# Copyright (c) 2025 Alibaba Group Holding Ltd.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-################################################################################
-name: Tests for Flink
-on:
- push:
- branches:
- - main
- - release-**
- - ci-**
- pull_request:
- paths-ignore:
- - 'website/**'
- - '**/*.md'
-concurrency:
- group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.number || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- build:
- runs-on: self-hosted
- strategy:
- fail-fast: false
- matrix:
- version: [1.19, 1.18]
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Build
- run: mvn -T 1C -B clean install -DskipTests -Pflink-${{ matrix.version }}
- - name: Test Flink ${{ matrix.version }}
- timeout-minutes: 60
- run: |
- mvn -B verify -Pflink-${{ matrix.version }} -pl fluss-connectors/fluss-connector-flink -Dlog.dir=${{ runner.temp }}/fluss-logs -Dlog4j.configurationFile=${{ github.workspace }}/tools/ci/log4j.properties
- env:
- MAVEN_OPTS: -Xmx4096m
- - name: Upload build logs
- uses: actions/upload-artifact@v4
- if: ${{ failure() }}
- with:
- name: logs-flink-${{ matrix.version }}-test-${{ github.run_number}}#${{ github.run_attempt }}
- path: ${{ runner.temp }}/fluss-logs/*
\ No newline at end of file
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index c9041b381f..b201c4116e 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
################################################################################
-name: Tests on JDK 8
+name: CI
on:
push:
branches:
@@ -31,13 +31,22 @@ concurrency:
jobs:
build:
runs-on: self-hosted
+ strategy:
+ fail-fast: false
+ matrix:
+ module: [ core, flink ]
steps:
- name: Checkout code
uses: actions/checkout@v2
+ - name: Build
+ run: |
+ mvn -T 1C -B clean install -DskipTests
- name: Test
timeout-minutes: 60
run: |
- mvn -B verify -Ptest-coverage -Dlog.dir=${{ runner.temp }}/fluss-logs -Dlog4j.configurationFile=${{ github.workspace }}/tools/ci/log4j.properties
+ TEST_MODULES=$(./.github/workflows/stage.sh ${{ matrix.module }})
+ echo "Start testing modules: $TEST_MODULES"
+ mvn -B verify $TEST_MODULES -Ptest-coverage -Ptest-${{ matrix.module }} -Dlog.dir=${{ runner.temp }}/fluss-logs -Dlog4j.configurationFile=${{ github.workspace }}/tools/ci/log4j.properties
env:
MAVEN_OPTS: -Xmx4096m
ARTIFACTS_OSS_ENDPOINT: ${{ secrets.ARTIFACTS_OSS_ENDPOINT }}
@@ -51,5 +60,5 @@ jobs:
uses: actions/upload-artifact@v4
if: ${{ failure() }}
with:
- name: logs-test-${{ github.run_number}}#${{ github.run_attempt }}
+ name: logs-test-${{ matrix.module }}-${{ github.run_number}}#${{ github.run_attempt }}
path: ${{ runner.temp }}/fluss-logs/*
\ No newline at end of file
diff --git a/.github/workflows/stage.sh b/.github/workflows/stage.sh
new file mode 100755
index 0000000000..718fc8f81c
--- /dev/null
+++ b/.github/workflows/stage.sh
@@ -0,0 +1,49 @@
+#!/usr/bin/env bash
+################################################################################
+# Copyright (c) 2025 Alibaba Group Holding Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################
+
+STAGE_CORE="core"
+STAGE_FLINK="flink"
+
+MODULES_FLINK="\
+fluss-flink,\
+fluss-flink/fluss-flink-common,\
+fluss-flink/fluss-flink-1.20,\
+fluss-flink/fluss-flink-1.19,\
+fluss-flink/fluss-flink-1.18,\
+fluss-lakehouse,\
+fluss-lakehouse/fluss-lakehouse-cli,\
+fluss-lakehouse/fluss-lakehouse-paimon,\
+fluss-lake,\
+"
+
+function get_test_modules_for_stage() {
+ local stage=$1
+
+ local modules_flink=$MODULES_FLINK
+ local modules_core=\!${MODULES_FLINK//,/,\!}
+
+ case ${stage} in
+ (${STAGE_CORE})
+ echo "-pl $modules_core"
+ ;;
+ (${STAGE_FLINK})
+ echo "-pl fluss-test-coverage,$modules_flink"
+ ;;
+ esac
+}
+
+get_test_modules_for_stage $1
diff --git a/fluss-flink/README.md b/fluss-flink/README.md
new file mode 100644
index 0000000000..f7e1858acf
--- /dev/null
+++ b/fluss-flink/README.md
@@ -0,0 +1,24 @@
+
+
+# Multi-Version Support for Flink Engine
+
+Fluss supports multiple versions of Apache Flink by providing dedicated modules for each version.
+The `fluss-flink-common` module always targets the latest version of Flink, while the `fluss-flink-${flink.version}` modules depend on both `fluss-flink-common` and the corresponding Flink version.
+
+Occasionally, Flink's interfaces may change across versions. For example, the class `org.apache.flink.api.connector.sink2.WriterInitContext` was
+introduced in Flink v1.19, while older APIs were deprecated or removed. In such cases, we address compatibility issues within the specific `fluss-flink-${flink.version}` module.
+This may involve introducing placeholder classes, such as `org.apache.flink.api.connector.sink2.WriterInitContext`, to ensure successful compilation.
\ No newline at end of file
diff --git a/fluss-flink/fluss-flink-1.18/pom.xml b/fluss-flink/fluss-flink-1.18/pom.xml
new file mode 100644
index 0000000000..a98a887619
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.18/pom.xml
@@ -0,0 +1,174 @@
+
+
+
+
+ 4.0.0
+
+ com.alibaba.fluss
+ fluss-flink
+ 0.7-SNAPSHOT
+
+
+ fluss-flink-1.18
+
+ Fluss : Engine Flink : 1.18
+
+
+ 1.18
+ 1.18.1
+
+
+
+
+
+ com.alibaba.fluss
+ fluss-client
+ ${project.version}
+
+
+
+ com.alibaba.fluss
+ fluss-flink-common
+ ${project.version}
+
+
+ *
+ *
+
+
+
+
+
+
+ org.apache.flink
+ flink-core
+ ${flink.minor.version}
+ provided
+
+
+
+ org.apache.flink
+ flink-table-common
+ ${flink.minor.version}
+ provided
+
+
+
+
+ com.alibaba.fluss
+ fluss-flink-common
+ ${project.version}
+ test
+ test-jar
+
+
+
+ com.alibaba.fluss
+ fluss-server
+ ${project.version}
+ test
+
+
+
+ org.apache.flink
+ flink-table-test-utils
+ ${flink.minor.version}
+ test
+
+
+
+ org.apache.flink
+ flink-connector-base
+ ${flink.minor.version}
+ test
+
+
+
+
+ com.alibaba.fluss
+ fluss-server
+ ${project.version}
+ test
+ test-jar
+
+
+
+
+ org.apache.curator
+ curator-test
+ ${curator.version}
+ test
+
+
+
+ org.apache.flink
+ flink-table-common
+ ${flink.minor.version}
+ test
+ test-jar
+
+
+
+ org.apache.flink
+ flink-connector-test-utils
+ ${flink.minor.version}
+ test
+
+
+
+
+ com.alibaba.fluss
+ fluss-test-utils
+
+
+
+ com.alibaba.fluss
+ fluss-common
+ ${project.version}
+ test
+ test-jar
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+ shade-fluss
+ package
+
+ shade
+
+
+
+
+ com.alibaba.fluss:fluss-client
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/org/apache/flink/api/common/JobInfo.java b/fluss-flink/fluss-flink-1.18/src/main/java/org/apache/flink/api/connector/sink2/WriterInitContext.java
similarity index 86%
rename from fluss-connectors/fluss-connector-flink/src/test/java/org/apache/flink/api/common/JobInfo.java
rename to fluss-flink/fluss-flink-1.18/src/main/java/org/apache/flink/api/connector/sink2/WriterInitContext.java
index e0fe6670de..4fdc786238 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/org/apache/flink/api/common/JobInfo.java
+++ b/fluss-flink/fluss-flink-1.18/src/main/java/org/apache/flink/api/connector/sink2/WriterInitContext.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.apache.flink.api.common;
+package org.apache.flink.api.connector.sink2;
/** Placeholder class to resolve compatibility issues. */
-public interface JobInfo {}
+public interface WriterInitContext extends Sink.InitContext {}
diff --git a/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/catalog/Flink118CatalogITCase.java b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/catalog/Flink118CatalogITCase.java
new file mode 100644
index 0000000000..7f7b8915fa
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/catalog/Flink118CatalogITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.catalog;
+
+/** IT case for catalog in Flink 1.18. */
+public class Flink118CatalogITCase extends FlinkCatalogITCase {}
diff --git a/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/metrics/Flink118MetricsITCase.java b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/metrics/Flink118MetricsITCase.java
new file mode 100644
index 0000000000..bbd0518335
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/metrics/Flink118MetricsITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.metrics;
+
+/** IT case for metrics in Flink 1.18. */
+public class Flink118MetricsITCase extends FlinkMetricsITCase {}
diff --git a/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/sink/Flink118TableSinkITCase.java b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/sink/Flink118TableSinkITCase.java
new file mode 100644
index 0000000000..a43494062c
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/sink/Flink118TableSinkITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.sink;
+
+/** IT case for {@link FlinkTableSink} in Flink 1.18. */
+public class Flink118TableSinkITCase extends FlinkTableSinkITCase {}
diff --git a/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/source/Flink118TableSourceBatchITCase.java b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/source/Flink118TableSourceBatchITCase.java
new file mode 100644
index 0000000000..e0d0e8ca66
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/source/Flink118TableSourceBatchITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.source;
+
+/** IT case for batch source in Flink 1.18. */
+public class Flink118TableSourceBatchITCase extends FlinkTableSourceBatchITCase {}
diff --git a/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/source/Flink118TableSourceFailOverITCase.java b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/source/Flink118TableSourceFailOverITCase.java
new file mode 100644
index 0000000000..9f24735389
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/source/Flink118TableSourceFailOverITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.source;
+
+/** IT case for source failover and recovery in Flink 1.18. */
+public class Flink118TableSourceFailOverITCase extends FlinkTableSourceFailOverITCase {}
diff --git a/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/source/Flink118TableSourceITCase.java b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/source/Flink118TableSourceITCase.java
new file mode 100644
index 0000000000..19edfd9a37
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.18/src/test/java/com/alibaba/fluss/flink/source/Flink118TableSourceITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.source;
+
+/** IT case for {@link FlinkTableSource} in Flink 1.18. */
+public class Flink118TableSourceITCase extends FlinkTableSourceITCase {}
diff --git a/fluss-connectors/fluss-connector-flink/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/fluss-flink/fluss-flink-1.18/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
similarity index 100%
rename from fluss-connectors/fluss-connector-flink/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
rename to fluss-flink/fluss-flink-1.18/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
diff --git a/fluss-flink/fluss-flink-1.18/src/test/resources/log4j2-test.properties b/fluss-flink/fluss-flink-1.18/src/test/resources/log4j2-test.properties
new file mode 100644
index 0000000000..0d5a765b70
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.18/src/test/resources/log4j2-test.properties
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 2025 Alibaba Group Holding Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Set root logger level to OFF to not flood build logs
+# set manually to INFO for debugging purposes
+rootLogger.level = OFF
+rootLogger.appenderRef.test.ref = TestLogger
+
+appender.testlogger.name = TestLogger
+appender.testlogger.type = CONSOLE
+appender.testlogger.target = SYSTEM_ERR
+appender.testlogger.layout.type = PatternLayout
+appender.testlogger.layout.pattern = %-4r [%t] %-5p %c %x - %m%n
+
+# suppress the duplicated logger extension
+logger.flink.name = org.apache.flink.util.TestLoggerExtension
+logger.flink.level = OFF
\ No newline at end of file
diff --git a/fluss-flink/fluss-flink-1.19/pom.xml b/fluss-flink/fluss-flink-1.19/pom.xml
new file mode 100644
index 0000000000..49e8c207de
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.19/pom.xml
@@ -0,0 +1,174 @@
+
+
+
+
+ 4.0.0
+
+ com.alibaba.fluss
+ fluss-flink
+ 0.7-SNAPSHOT
+
+
+ fluss-flink-1.19
+
+ Fluss : Engine Flink : 1.19
+
+
+ 1.19
+ 1.19.2
+
+
+
+
+
+ com.alibaba.fluss
+ fluss-client
+ ${project.version}
+
+
+
+ com.alibaba.fluss
+ fluss-flink-common
+ ${project.version}
+
+
+ *
+ *
+
+
+
+
+
+
+ org.apache.flink
+ flink-core
+ ${flink.minor.version}
+ provided
+
+
+
+ org.apache.flink
+ flink-table-common
+ ${flink.minor.version}
+ provided
+
+
+
+
+
+ com.alibaba.fluss
+ fluss-flink-common
+ ${project.version}
+ test
+ test-jar
+
+
+
+ com.alibaba.fluss
+ fluss-server
+ ${project.version}
+ test
+
+
+
+ org.apache.flink
+ flink-table-test-utils
+ ${flink.minor.version}
+ test
+
+
+
+ org.apache.flink
+ flink-connector-base
+ ${flink.minor.version}
+ test
+
+
+
+ com.alibaba.fluss
+ fluss-server
+ ${project.version}
+ test
+ test-jar
+
+
+
+
+ org.apache.curator
+ curator-test
+ ${curator.version}
+ test
+
+
+
+ org.apache.flink
+ flink-table-common
+ ${flink.minor.version}
+ test
+ test-jar
+
+
+
+ org.apache.flink
+ flink-connector-test-utils
+ ${flink.minor.version}
+ test
+
+
+
+
+ com.alibaba.fluss
+ fluss-test-utils
+
+
+
+ com.alibaba.fluss
+ fluss-common
+ ${project.version}
+ test
+ test-jar
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+ shade-fluss
+ package
+
+ shade
+
+
+
+
+ com.alibaba.fluss:fluss-client
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/catalog/Flink119CatalogITCase.java b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/catalog/Flink119CatalogITCase.java
new file mode 100644
index 0000000000..2d18a9f71c
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/catalog/Flink119CatalogITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.catalog;
+
+/** IT case for catalog in Flink 1.19. */
+public class Flink119CatalogITCase extends FlinkCatalogITCase {}
diff --git a/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/metrics/Flink119MetricsITCase.java b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/metrics/Flink119MetricsITCase.java
new file mode 100644
index 0000000000..2c930a7b72
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/metrics/Flink119MetricsITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.metrics;
+
+/** IT case for metrics in Flink 1.19. */
+public class Flink119MetricsITCase extends FlinkMetricsITCase {}
diff --git a/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/sink/Flink119TableSinkITCase.java b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/sink/Flink119TableSinkITCase.java
new file mode 100644
index 0000000000..e32d2a38bc
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/sink/Flink119TableSinkITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.sink;
+
+/** IT case for {@link FlinkTableSink} in Flink 1.19. */
+public class Flink119TableSinkITCase extends FlinkTableSinkITCase {}
diff --git a/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/source/Flink119TableSourceBatchITCase.java b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/source/Flink119TableSourceBatchITCase.java
new file mode 100644
index 0000000000..f8c82e67f6
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/source/Flink119TableSourceBatchITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.source;
+
+/** IT case for batch source in Flink 1.19. */
+public class Flink119TableSourceBatchITCase extends FlinkTableSourceBatchITCase {}
diff --git a/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/source/Flink119TableSourceFailOverITCase.java b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/source/Flink119TableSourceFailOverITCase.java
new file mode 100644
index 0000000000..4018c7fe06
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/source/Flink119TableSourceFailOverITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.source;
+
+/** IT case for source failover and recovery in Flink 1.19. */
+public class Flink119TableSourceFailOverITCase extends FlinkTableSourceFailOverITCase {}
diff --git a/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/source/Flink119TableSourceITCase.java b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/source/Flink119TableSourceITCase.java
new file mode 100644
index 0000000000..bd0bbda3aa
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.19/src/test/java/com/alibaba/fluss/flink/source/Flink119TableSourceITCase.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.source;
+
+/** IT case for {@link FlinkTableSource} in Flink 1.19. */
+public class Flink119TableSourceITCase extends FlinkTableSourceITCase {}
diff --git a/fluss-flink/fluss-flink-1.19/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/fluss-flink/fluss-flink-1.19/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
new file mode 100644
index 0000000000..2070249a19
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.19/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
@@ -0,0 +1,17 @@
+#
+# Copyright (c) 2025 Alibaba Group Holding Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+com.alibaba.fluss.testutils.common.TestLoggerExtension
\ No newline at end of file
diff --git a/fluss-flink/fluss-flink-1.19/src/test/resources/log4j2-test.properties b/fluss-flink/fluss-flink-1.19/src/test/resources/log4j2-test.properties
new file mode 100644
index 0000000000..73334fd259
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.19/src/test/resources/log4j2-test.properties
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 2025 Alibaba Group Holding Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Set root logger level to OFF to not flood build logs
+# set manually to INFO for debugging purposes
+rootLogger.level = OFF
+rootLogger.appenderRef.test.ref = TestLogger
+
+appender.testlogger.name = TestLogger
+appender.testlogger.type = CONSOLE
+appender.testlogger.target = SYSTEM_ERR
+appender.testlogger.layout.type = PatternLayout
+appender.testlogger.layout.pattern = %-4r [%t] %-5p %c %x - %m%n
+
+# suppress the duplicated logger extension
+logger.flink.name = org.apache.flink.util.TestLoggerExtension
+logger.flink.level = OFF
diff --git a/fluss-flink/fluss-flink-1.20/pom.xml b/fluss-flink/fluss-flink-1.20/pom.xml
new file mode 100644
index 0000000000..7e7f823424
--- /dev/null
+++ b/fluss-flink/fluss-flink-1.20/pom.xml
@@ -0,0 +1,165 @@
+
+
+
+
+ 4.0.0
+
+ com.alibaba.fluss
+ fluss-flink
+ 0.7-SNAPSHOT
+
+
+ fluss-flink-1.20
+
+ Fluss : Engine Flink : 1.20
+
+
+ 1.20
+ 1.20.1
+
+
+
+
+
+ com.alibaba.fluss
+ fluss-client
+ ${project.version}
+
+
+
+ com.alibaba.fluss
+ fluss-flink-common
+ ${project.version}
+
+
+ *
+ *
+
+
+
+
+
+
+ org.apache.flink
+ flink-core
+ ${flink.minor.version}
+ provided
+
+
+
+ org.apache.flink
+ flink-table-common
+ ${flink.minor.version}
+ provided
+
+
+
+
+ com.alibaba.fluss
+ fluss-server
+ ${project.version}
+ test
+
+
+
+ org.apache.flink
+ flink-table-test-utils
+ ${flink.minor.version}
+ test
+
+
+
+ org.apache.flink
+ flink-connector-base
+ ${flink.minor.version}
+ test
+
+
+
+ com.alibaba.fluss
+ fluss-server
+ ${project.version}
+ test
+ test-jar
+
+
+
+
+ org.apache.curator
+ curator-test
+ ${curator.version}
+ test
+
+
+
+ org.apache.flink
+ flink-table-common
+ ${flink.minor.version}
+ test
+ test-jar
+
+
+
+ org.apache.flink
+ flink-connector-test-utils
+ ${flink.minor.version}
+ test
+
+
+
+
+ com.alibaba.fluss
+ fluss-test-utils
+
+
+
+ com.alibaba.fluss
+ fluss-common
+ ${project.version}
+ test
+ test-jar
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+ shade-fluss
+ package
+
+ shade
+
+
+
+
+ com.alibaba.fluss:fluss-client
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fluss-connectors/fluss-connector-flink/pom.xml b/fluss-flink/fluss-flink-common/pom.xml
similarity index 78%
rename from fluss-connectors/fluss-connector-flink/pom.xml
rename to fluss-flink/fluss-flink-common/pom.xml
index ed0e147cc7..4adc76a75e 100644
--- a/fluss-connectors/fluss-connector-flink/pom.xml
+++ b/fluss-flink/fluss-flink-common/pom.xml
@@ -21,13 +21,13 @@
4.0.0
com.alibaba.fluss
- fluss-connectors
+ fluss-flink
0.7-SNAPSHOT
- fluss-connector-flink
+ fluss-flink-common
- Fluss : Connector : Flink
+ Fluss : Engine Flink : Common
1.20
@@ -69,6 +69,7 @@
org.apache.flink
flink-connector-base
${flink.minor.version}
+ provided
@@ -108,6 +109,13 @@
test
+
+ org.apache.flink
+ flink-connector-base
+ ${flink.minor.version}
+ test
+
+
com.alibaba.fluss
fluss-server
@@ -155,47 +163,8 @@
-
-
- flink-1.18
-
- 1.18
- 1.18.1
-
-
-
-
- flink-1.19
-
- 1.19
- 1.19.2
-
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
-
-
- shade-fluss
- package
-
- shade
-
-
-
-
- com.alibaba.fluss:fluss-client
-
-
-
-
-
-
-
org.apache.maven.plugins
maven-jar-plugin
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/FlinkConnectorOptions.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/FlinkConnectorOptions.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/FlinkConnectorOptions.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/FlinkConnectorOptions.java
index a0727ee10f..f8299c59ab 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/FlinkConnectorOptions.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/FlinkConnectorOptions.java
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink;
+package com.alibaba.fluss.flink;
import com.alibaba.fluss.config.FlussConfigUtils;
-import com.alibaba.fluss.connector.flink.utils.FlinkConversions;
+import com.alibaba.fluss.flink.utils.FlinkConversions;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.configuration.ConfigOptions;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalog.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkCatalog.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalog.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkCatalog.java
index 88f310f758..680aede3ce 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalog.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkCatalog.java
@@ -14,18 +14,18 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.catalog;
+package com.alibaba.fluss.flink.catalog;
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.ConnectionFactory;
import com.alibaba.fluss.client.admin.Admin;
import com.alibaba.fluss.config.ConfigOptions;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.lakehouse.LakeCatalog;
-import com.alibaba.fluss.connector.flink.utils.CatalogExceptionUtils;
-import com.alibaba.fluss.connector.flink.utils.DataLakeUtils;
-import com.alibaba.fluss.connector.flink.utils.FlinkConversions;
import com.alibaba.fluss.exception.FlussRuntimeException;
+import com.alibaba.fluss.flink.lakehouse.LakeCatalog;
+import com.alibaba.fluss.flink.utils.CatalogExceptionUtils;
+import com.alibaba.fluss.flink.utils.DataLakeUtils;
+import com.alibaba.fluss.flink.utils.FlinkConversions;
import com.alibaba.fluss.metadata.DatabaseDescriptor;
import com.alibaba.fluss.metadata.PartitionInfo;
import com.alibaba.fluss.metadata.PartitionSpec;
@@ -74,12 +74,12 @@
import java.util.Optional;
import static com.alibaba.fluss.config.ConfigOptions.BOOTSTRAP_SERVERS;
-import static com.alibaba.fluss.connector.flink.utils.CatalogExceptionUtils.isPartitionAlreadyExists;
-import static com.alibaba.fluss.connector.flink.utils.CatalogExceptionUtils.isPartitionInvalid;
-import static com.alibaba.fluss.connector.flink.utils.CatalogExceptionUtils.isPartitionNotExist;
-import static com.alibaba.fluss.connector.flink.utils.CatalogExceptionUtils.isTableNotExist;
-import static com.alibaba.fluss.connector.flink.utils.CatalogExceptionUtils.isTableNotPartitioned;
-import static com.alibaba.fluss.connector.flink.utils.FlinkConversions.toFlussDatabase;
+import static com.alibaba.fluss.flink.utils.CatalogExceptionUtils.isPartitionAlreadyExists;
+import static com.alibaba.fluss.flink.utils.CatalogExceptionUtils.isPartitionInvalid;
+import static com.alibaba.fluss.flink.utils.CatalogExceptionUtils.isPartitionNotExist;
+import static com.alibaba.fluss.flink.utils.CatalogExceptionUtils.isTableNotExist;
+import static com.alibaba.fluss.flink.utils.CatalogExceptionUtils.isTableNotPartitioned;
+import static com.alibaba.fluss.flink.utils.FlinkConversions.toFlussDatabase;
import static org.apache.flink.util.Preconditions.checkArgument;
/** A Flink Catalog for fluss. */
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogFactory.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkCatalogFactory.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogFactory.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkCatalogFactory.java
index 504fc9604d..e2ff813119 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogFactory.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkCatalogFactory.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.catalog;
+package com.alibaba.fluss.flink.catalog;
-import com.alibaba.fluss.connector.flink.FlinkConnectorOptions;
+import com.alibaba.fluss.flink.FlinkConnectorOptions;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.table.factories.CatalogFactory;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogOptions.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkCatalogOptions.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogOptions.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkCatalogOptions.java
index 110c39881c..2f919958a2 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogOptions.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkCatalogOptions.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.catalog;
+package com.alibaba.fluss.flink.catalog;
import org.apache.flink.configuration.ConfigOption;
import org.apache.flink.configuration.ConfigOptions;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkTableFactory.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkTableFactory.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkTableFactory.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkTableFactory.java
index 529c02200b..790e61a6f4 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/catalog/FlinkTableFactory.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/catalog/FlinkTableFactory.java
@@ -14,15 +14,15 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.catalog;
+package com.alibaba.fluss.flink.catalog;
import com.alibaba.fluss.config.ConfigOptions;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.FlinkConnectorOptions;
-import com.alibaba.fluss.connector.flink.lakehouse.LakeTableFactory;
-import com.alibaba.fluss.connector.flink.sink.FlinkTableSink;
-import com.alibaba.fluss.connector.flink.source.FlinkTableSource;
-import com.alibaba.fluss.connector.flink.utils.FlinkConnectorOptionsUtils;
+import com.alibaba.fluss.flink.FlinkConnectorOptions;
+import com.alibaba.fluss.flink.lakehouse.LakeTableFactory;
+import com.alibaba.fluss.flink.sink.FlinkTableSink;
+import com.alibaba.fluss.flink.source.FlinkTableSource;
+import com.alibaba.fluss.flink.utils.FlinkConnectorOptionsUtils;
import com.alibaba.fluss.metadata.TablePath;
import org.apache.flink.api.common.RuntimeExecutionMode;
@@ -51,8 +51,8 @@
import java.util.HashSet;
import java.util.Set;
-import static com.alibaba.fluss.connector.flink.catalog.FlinkCatalog.LAKE_TABLE_SPLITTER;
-import static com.alibaba.fluss.connector.flink.utils.FlinkConversions.toFlinkOption;
+import static com.alibaba.fluss.flink.catalog.FlinkCatalog.LAKE_TABLE_SPLITTER;
+import static com.alibaba.fluss.flink.utils.FlinkConversions.toFlinkOption;
/** Factory to create table source and table sink for Fluss. */
public class FlinkTableFactory implements DynamicTableSourceFactory, DynamicTableSinkFactory {
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeCatalog.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeCatalog.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeCatalog.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeCatalog.java
index 9e0bacbdbe..4ed0b48815 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeCatalog.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeCatalog.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse;
+package com.alibaba.fluss.flink.lakehouse;
import org.apache.flink.table.catalog.CatalogBaseTable;
import org.apache.flink.table.catalog.ObjectPath;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeRecordRecordEmitter.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeRecordRecordEmitter.java
similarity index 83%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeRecordRecordEmitter.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeRecordRecordEmitter.java
index f5d0079a2b..dba4ca6e6c 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeRecordRecordEmitter.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeRecordRecordEmitter.java
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse;
+package com.alibaba.fluss.flink.lakehouse;
import com.alibaba.fluss.client.table.scanner.ScanRecord;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplitState;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotSplitState;
-import com.alibaba.fluss.connector.flink.source.reader.RecordAndPos;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitState;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplitState;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotSplitState;
+import com.alibaba.fluss.flink.source.reader.RecordAndPos;
+import com.alibaba.fluss.flink.source.split.SourceSplitState;
import org.apache.flink.api.connector.source.SourceOutput;
import org.apache.flink.table.data.RowData;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitGenerator.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitGenerator.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitGenerator.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitGenerator.java
index 8235748b9a..58821aadfe 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitGenerator.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitGenerator.java
@@ -14,15 +14,15 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse;
+package com.alibaba.fluss.flink.lakehouse;
import com.alibaba.fluss.client.admin.Admin;
import com.alibaba.fluss.client.metadata.LakeSnapshot;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotSplit;
-import com.alibaba.fluss.connector.flink.source.enumerator.initializer.OffsetsInitializer;
-import com.alibaba.fluss.connector.flink.source.split.LogSplit;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotSplit;
+import com.alibaba.fluss.flink.source.enumerator.initializer.OffsetsInitializer;
+import com.alibaba.fluss.flink.source.split.LogSplit;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
import com.alibaba.fluss.metadata.PartitionInfo;
import com.alibaba.fluss.metadata.TableBucket;
import com.alibaba.fluss.metadata.TableInfo;
@@ -48,7 +48,7 @@
import java.util.stream.IntStream;
import static com.alibaba.fluss.client.table.scanner.log.LogScanner.EARLIEST_OFFSET;
-import static com.alibaba.fluss.connector.flink.utils.DataLakeUtils.extractLakeCatalogProperties;
+import static com.alibaba.fluss.flink.utils.DataLakeUtils.extractLakeCatalogProperties;
import static com.alibaba.fluss.utils.Preconditions.checkState;
/**
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitReaderGenerator.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitReaderGenerator.java
similarity index 89%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitReaderGenerator.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitReaderGenerator.java
index af81828583..683b116376 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitReaderGenerator.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitReaderGenerator.java
@@ -14,17 +14,17 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse;
+package com.alibaba.fluss.flink.lakehouse;
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.table.Table;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.reader.PaimonSnapshotAndLogSplitScanner;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.reader.PaimonSnapshotScanner;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotSplit;
-import com.alibaba.fluss.connector.flink.source.reader.BoundedSplitReader;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
-import com.alibaba.fluss.connector.flink.utils.DataLakeUtils;
+import com.alibaba.fluss.flink.lakehouse.paimon.reader.PaimonSnapshotAndLogSplitScanner;
+import com.alibaba.fluss.flink.lakehouse.paimon.reader.PaimonSnapshotScanner;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotSplit;
+import com.alibaba.fluss.flink.source.reader.BoundedSplitReader;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.utils.DataLakeUtils;
import com.alibaba.fluss.metadata.TablePath;
import org.apache.flink.util.ExceptionUtils;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitSerializer.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitSerializer.java
similarity index 88%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitSerializer.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitSerializer.java
index 00c2622139..229a115a17 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitSerializer.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitSerializer.java
@@ -14,12 +14,12 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse;
+package com.alibaba.fluss.flink.lakehouse;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotSplit;
-import com.alibaba.fluss.connector.flink.source.split.LogSplit;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotSplit;
+import com.alibaba.fluss.flink.source.split.LogSplit;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
import com.alibaba.fluss.metadata.TableBucket;
import org.apache.flink.core.memory.DataInputDeserializer;
@@ -31,8 +31,8 @@
import java.io.IOException;
-import static com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit.PAIMON_SNAPSHOT_FLUSS_LOG_SPLIT_KIND;
-import static com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotSplit.PAIMON_SNAPSHOT_SPLIT_KIND;
+import static com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit.PAIMON_SNAPSHOT_FLUSS_LOG_SPLIT_KIND;
+import static com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotSplit.PAIMON_SNAPSHOT_SPLIT_KIND;
/** A serializer for lake split. */
public class LakeSplitSerializer {
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitStateInitializer.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitStateInitializer.java
similarity index 67%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitStateInitializer.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitStateInitializer.java
index f52193dd07..da6f510f30 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeSplitStateInitializer.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeSplitStateInitializer.java
@@ -14,14 +14,14 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse;
+package com.alibaba.fluss.flink.lakehouse;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplitState;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotSplit;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotSplitState;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitState;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplitState;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotSplit;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotSplitState;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.source.split.SourceSplitState;
/** The state initializer for lake split. */
public class LakeSplitStateInitializer {
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeTableFactory.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeTableFactory.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeTableFactory.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeTableFactory.java
index dbbee17405..0114cdf85f 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/LakeTableFactory.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/LakeTableFactory.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse;
+package com.alibaba.fluss.flink.lakehouse;
import org.apache.flink.table.catalog.ObjectIdentifier;
import org.apache.flink.table.connector.source.DynamicTableSource;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/KeyValueRow.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/KeyValueRow.java
similarity index 95%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/KeyValueRow.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/KeyValueRow.java
index 796ee30c9d..52976ffe8e 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/KeyValueRow.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/KeyValueRow.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse.paimon.reader;
+package com.alibaba.fluss.flink.lakehouse.paimon.reader;
import org.apache.paimon.data.InternalRow;
import org.apache.paimon.utils.ProjectedRow;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/PaimonRowWrapper.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/PaimonRowWrapper.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/PaimonRowWrapper.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/PaimonRowWrapper.java
index fad4516843..0e9a2ad4cf 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/PaimonRowWrapper.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/PaimonRowWrapper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse.paimon.reader;
+package com.alibaba.fluss.flink.lakehouse.paimon.reader;
import com.alibaba.fluss.row.BinaryString;
import com.alibaba.fluss.row.Decimal;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/PaimonSnapshotAndLogSplitScanner.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/PaimonSnapshotAndLogSplitScanner.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/PaimonSnapshotAndLogSplitScanner.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/PaimonSnapshotAndLogSplitScanner.java
index 1069589d51..7f9ad88f12 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/PaimonSnapshotAndLogSplitScanner.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/PaimonSnapshotAndLogSplitScanner.java
@@ -14,14 +14,14 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse.paimon.reader;
+package com.alibaba.fluss.flink.lakehouse.paimon.reader;
import com.alibaba.fluss.client.table.Table;
import com.alibaba.fluss.client.table.scanner.ScanRecord;
import com.alibaba.fluss.client.table.scanner.batch.BatchScanner;
import com.alibaba.fluss.client.table.scanner.log.LogScanner;
import com.alibaba.fluss.client.table.scanner.log.ScanRecords;
-import com.alibaba.fluss.connector.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit;
+import com.alibaba.fluss.flink.lakehouse.paimon.split.PaimonSnapshotAndFlussLogSplit;
import com.alibaba.fluss.metadata.TableBucket;
import com.alibaba.fluss.record.ChangeType;
import com.alibaba.fluss.utils.CloseableIterator;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/PaimonSnapshotScanner.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/PaimonSnapshotScanner.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/PaimonSnapshotScanner.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/PaimonSnapshotScanner.java
index e9397eb741..50e02a3f19 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/PaimonSnapshotScanner.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/PaimonSnapshotScanner.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse.paimon.reader;
+package com.alibaba.fluss.flink.lakehouse.paimon.reader;
import com.alibaba.fluss.client.table.scanner.batch.BatchScanner;
import com.alibaba.fluss.utils.CloseableIterator;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/ScanRecordWrapper.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/ScanRecordWrapper.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/ScanRecordWrapper.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/ScanRecordWrapper.java
index 97ceb6b263..4836b445e4 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/ScanRecordWrapper.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/ScanRecordWrapper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse.paimon.reader;
+package com.alibaba.fluss.flink.lakehouse.paimon.reader;
import com.alibaba.fluss.client.table.scanner.ScanRecord;
import com.alibaba.fluss.record.ChangeType;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/SortMergeReader.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/SortMergeReader.java
similarity index 99%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/SortMergeReader.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/SortMergeReader.java
index abae121ff1..0130b133eb 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/reader/SortMergeReader.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/reader/SortMergeReader.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse.paimon.reader;
+package com.alibaba.fluss.flink.lakehouse.paimon.reader;
import com.alibaba.fluss.utils.CloseableIterator;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplit.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplit.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplit.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplit.java
index 7ad74e8580..0d23c42d2c 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplit.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplit.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse.paimon.split;
+package com.alibaba.fluss.flink.lakehouse.paimon.split;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
import com.alibaba.fluss.metadata.TableBucket;
import org.apache.paimon.flink.source.FileStoreSourceSplit;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplitState.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplitState.java
similarity index 91%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplitState.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplitState.java
index 55d37613a6..bc2631ba9b 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplitState.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotAndFlussLogSplitState.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse.paimon.split;
+package com.alibaba.fluss.flink.lakehouse.paimon.split;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitState;
+import com.alibaba.fluss.flink.source.split.SourceSplitState;
/** State of {@link PaimonSnapshotAndFlussLogSplit}. */
public class PaimonSnapshotAndFlussLogSplitState extends SourceSplitState {
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotSplit.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotSplit.java
similarity index 95%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotSplit.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotSplit.java
index b3a582f3d2..9c33c14f96 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotSplit.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotSplit.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse.paimon.split;
+package com.alibaba.fluss.flink.lakehouse.paimon.split;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
import com.alibaba.fluss.metadata.TableBucket;
import org.apache.paimon.flink.source.FileStoreSourceSplit;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotSplitState.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotSplitState.java
similarity index 92%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotSplitState.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotSplitState.java
index f70b324bae..d1c20678ab 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/lakehouse/paimon/split/PaimonSnapshotSplitState.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/lakehouse/paimon/split/PaimonSnapshotSplitState.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.lakehouse.paimon.split;
+package com.alibaba.fluss.flink.lakehouse.paimon.split;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitState;
+import com.alibaba.fluss.flink.source.split.SourceSplitState;
import org.apache.paimon.flink.source.FileStoreSourceSplit;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkCounter.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkCounter.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkCounter.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkCounter.java
index 12e8f8a25b..75f220a24a 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkCounter.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkCounter.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.metrics;
+package com.alibaba.fluss.flink.metrics;
import org.apache.flink.metrics.Counter;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkGauge.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkGauge.java
similarity index 95%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkGauge.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkGauge.java
index e062fe0524..5f2214a1af 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkGauge.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkGauge.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.metrics;
+package com.alibaba.fluss.flink.metrics;
import org.apache.flink.metrics.Gauge;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkHistogram.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkHistogram.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkHistogram.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkHistogram.java
index 3ab99db6b6..05efc04ef9 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkHistogram.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkHistogram.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.metrics;
+package com.alibaba.fluss.flink.metrics;
import org.apache.flink.metrics.Histogram;
import org.apache.flink.metrics.HistogramStatistics;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkMeter.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkMeter.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkMeter.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkMeter.java
index 26d3b34afb..f39cadfd50 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkMeter.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkMeter.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.metrics;
+package com.alibaba.fluss.flink.metrics;
import org.apache.flink.metrics.Meter;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkMetricRegistry.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkMetricRegistry.java
similarity index 99%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkMetricRegistry.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkMetricRegistry.java
index 1ce3b36667..011865fac5 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/metrics/FlinkMetricRegistry.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/metrics/FlinkMetricRegistry.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.metrics;
+package com.alibaba.fluss.flink.metrics;
import com.alibaba.fluss.metrics.CharacterFilter;
import com.alibaba.fluss.metrics.Counter;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/row/FlinkAsFlussRow.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/row/FlinkAsFlussRow.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/row/FlinkAsFlussRow.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/row/FlinkAsFlussRow.java
index 6d366d66be..06c27d0e46 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/row/FlinkAsFlussRow.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/row/FlinkAsFlussRow.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.row;
+package com.alibaba.fluss.flink.row;
import com.alibaba.fluss.row.BinaryString;
import com.alibaba.fluss.row.Decimal;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/FlinkSink.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/FlinkSink.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/FlinkSink.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/FlinkSink.java
index 8695316b53..7985a99b86 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/FlinkSink.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/FlinkSink.java
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.sink;
+package com.alibaba.fluss.flink.sink;
import com.alibaba.fluss.annotation.Internal;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.sink.writer.AppendSinkWriter;
-import com.alibaba.fluss.connector.flink.sink.writer.FlinkSinkWriter;
-import com.alibaba.fluss.connector.flink.sink.writer.UpsertSinkWriter;
+import com.alibaba.fluss.flink.sink.writer.AppendSinkWriter;
+import com.alibaba.fluss.flink.sink.writer.FlinkSinkWriter;
+import com.alibaba.fluss.flink.sink.writer.UpsertSinkWriter;
import com.alibaba.fluss.metadata.TablePath;
import org.apache.flink.api.connector.sink2.Sink;
@@ -54,6 +54,7 @@ public SinkWriter createWriter(InitContext context) throws IOException
return flinkSinkWriter;
}
+ @Override
public SinkWriter createWriter(WriterInitContext context) throws IOException {
FlinkSinkWriter flinkSinkWriter = builder.createWriter();
flinkSinkWriter.initialize(InternalSinkWriterMetricGroup.wrap(context.metricGroup()));
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/FlinkTableSink.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/FlinkTableSink.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/FlinkTableSink.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/FlinkTableSink.java
index 2612637806..e4f370f276 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/FlinkTableSink.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/FlinkTableSink.java
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.sink;
+package com.alibaba.fluss.flink.sink;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.sink.writer.FlinkSinkWriter;
-import com.alibaba.fluss.connector.flink.utils.PushdownUtils;
-import com.alibaba.fluss.connector.flink.utils.PushdownUtils.FieldEqual;
-import com.alibaba.fluss.connector.flink.utils.PushdownUtils.ValueConversion;
+import com.alibaba.fluss.flink.sink.writer.FlinkSinkWriter;
+import com.alibaba.fluss.flink.utils.PushdownUtils;
+import com.alibaba.fluss.flink.utils.PushdownUtils.FieldEqual;
+import com.alibaba.fluss.flink.utils.PushdownUtils.ValueConversion;
import com.alibaba.fluss.metadata.MergeEngineType;
import com.alibaba.fluss.metadata.TablePath;
import com.alibaba.fluss.row.GenericRow;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/writer/AppendSinkWriter.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/writer/AppendSinkWriter.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/writer/AppendSinkWriter.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/writer/AppendSinkWriter.java
index 94a458615a..35405bfb92 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/writer/AppendSinkWriter.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/writer/AppendSinkWriter.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.sink.writer;
+package com.alibaba.fluss.flink.sink.writer;
import com.alibaba.fluss.client.table.writer.AppendWriter;
import com.alibaba.fluss.config.Configuration;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/writer/FlinkSinkWriter.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/writer/FlinkSinkWriter.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/writer/FlinkSinkWriter.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/writer/FlinkSinkWriter.java
index 1ecbda51b3..93969432e1 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/writer/FlinkSinkWriter.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/writer/FlinkSinkWriter.java
@@ -14,15 +14,15 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.sink.writer;
+package com.alibaba.fluss.flink.sink.writer;
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.ConnectionFactory;
import com.alibaba.fluss.client.table.Table;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.metrics.FlinkMetricRegistry;
-import com.alibaba.fluss.connector.flink.row.FlinkAsFlussRow;
-import com.alibaba.fluss.connector.flink.utils.FlinkConversions;
+import com.alibaba.fluss.flink.metrics.FlinkMetricRegistry;
+import com.alibaba.fluss.flink.row.FlinkAsFlussRow;
+import com.alibaba.fluss.flink.utils.FlinkConversions;
import com.alibaba.fluss.metadata.TableInfo;
import com.alibaba.fluss.metadata.TablePath;
import com.alibaba.fluss.metrics.Gauge;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/writer/UpsertSinkWriter.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/writer/UpsertSinkWriter.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/writer/UpsertSinkWriter.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/writer/UpsertSinkWriter.java
index ac1c4d8c51..48ef62e550 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/sink/writer/UpsertSinkWriter.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/sink/writer/UpsertSinkWriter.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.sink.writer;
+package com.alibaba.fluss.flink.sink.writer;
import com.alibaba.fluss.client.table.writer.Upsert;
import com.alibaba.fluss.client.table.writer.UpsertWriter;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/FlinkSource.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/FlinkSource.java
similarity index 87%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/FlinkSource.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/FlinkSource.java
index be3067963e..a06b3c1b86 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/FlinkSource.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/FlinkSource.java
@@ -14,18 +14,18 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source;
+package com.alibaba.fluss.flink.source;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.source.enumerator.FlinkSourceEnumerator;
-import com.alibaba.fluss.connector.flink.source.enumerator.initializer.OffsetsInitializer;
-import com.alibaba.fluss.connector.flink.source.metrics.FlinkSourceReaderMetrics;
-import com.alibaba.fluss.connector.flink.source.reader.FlinkSourceReader;
-import com.alibaba.fluss.connector.flink.source.reader.RecordAndPos;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitSerializer;
-import com.alibaba.fluss.connector.flink.source.state.FlussSourceEnumeratorStateSerializer;
-import com.alibaba.fluss.connector.flink.source.state.SourceEnumeratorState;
+import com.alibaba.fluss.flink.source.enumerator.FlinkSourceEnumerator;
+import com.alibaba.fluss.flink.source.enumerator.initializer.OffsetsInitializer;
+import com.alibaba.fluss.flink.source.metrics.FlinkSourceReaderMetrics;
+import com.alibaba.fluss.flink.source.reader.FlinkSourceReader;
+import com.alibaba.fluss.flink.source.reader.RecordAndPos;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.source.split.SourceSplitSerializer;
+import com.alibaba.fluss.flink.source.state.FlussSourceEnumeratorStateSerializer;
+import com.alibaba.fluss.flink.source.state.SourceEnumeratorState;
import com.alibaba.fluss.metadata.TablePath;
import com.alibaba.fluss.types.RowType;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/FlinkTableSource.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/FlinkTableSource.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/FlinkTableSource.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/FlinkTableSource.java
index 2fe67c59fc..d1b8e5c926 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/FlinkTableSource.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/FlinkTableSource.java
@@ -14,18 +14,18 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source;
+package com.alibaba.fluss.flink.source;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.FlinkConnectorOptions;
-import com.alibaba.fluss.connector.flink.source.enumerator.initializer.OffsetsInitializer;
-import com.alibaba.fluss.connector.flink.source.lookup.FlinkAsyncLookupFunction;
-import com.alibaba.fluss.connector.flink.source.lookup.FlinkLookupFunction;
-import com.alibaba.fluss.connector.flink.source.lookup.LookupNormalizer;
-import com.alibaba.fluss.connector.flink.utils.FlinkConnectorOptionsUtils;
-import com.alibaba.fluss.connector.flink.utils.FlinkConversions;
-import com.alibaba.fluss.connector.flink.utils.PushdownUtils;
-import com.alibaba.fluss.connector.flink.utils.PushdownUtils.ValueConversion;
+import com.alibaba.fluss.flink.FlinkConnectorOptions;
+import com.alibaba.fluss.flink.source.enumerator.initializer.OffsetsInitializer;
+import com.alibaba.fluss.flink.source.lookup.FlinkAsyncLookupFunction;
+import com.alibaba.fluss.flink.source.lookup.FlinkLookupFunction;
+import com.alibaba.fluss.flink.source.lookup.LookupNormalizer;
+import com.alibaba.fluss.flink.utils.FlinkConnectorOptionsUtils;
+import com.alibaba.fluss.flink.utils.FlinkConversions;
+import com.alibaba.fluss.flink.utils.PushdownUtils;
+import com.alibaba.fluss.flink.utils.PushdownUtils.ValueConversion;
import com.alibaba.fluss.metadata.MergeEngineType;
import com.alibaba.fluss.metadata.TablePath;
import com.alibaba.fluss.types.RowType;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/emitter/FlinkRecordEmitter.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/emitter/FlinkRecordEmitter.java
similarity index 88%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/emitter/FlinkRecordEmitter.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/emitter/FlinkRecordEmitter.java
index ac1ea3a91b..5eaecb8cc8 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/emitter/FlinkRecordEmitter.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/emitter/FlinkRecordEmitter.java
@@ -14,15 +14,15 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.emitter;
+package com.alibaba.fluss.flink.source.emitter;
import com.alibaba.fluss.client.table.scanner.ScanRecord;
-import com.alibaba.fluss.connector.flink.lakehouse.LakeRecordRecordEmitter;
-import com.alibaba.fluss.connector.flink.source.reader.FlinkSourceReader;
-import com.alibaba.fluss.connector.flink.source.reader.RecordAndPos;
-import com.alibaba.fluss.connector.flink.source.split.HybridSnapshotLogSplitState;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitState;
-import com.alibaba.fluss.connector.flink.utils.FlussRowToFlinkRowConverter;
+import com.alibaba.fluss.flink.lakehouse.LakeRecordRecordEmitter;
+import com.alibaba.fluss.flink.source.reader.FlinkSourceReader;
+import com.alibaba.fluss.flink.source.reader.RecordAndPos;
+import com.alibaba.fluss.flink.source.split.HybridSnapshotLogSplitState;
+import com.alibaba.fluss.flink.source.split.SourceSplitState;
+import com.alibaba.fluss.flink.utils.FlussRowToFlinkRowConverter;
import com.alibaba.fluss.types.RowType;
import org.apache.flink.api.connector.source.SourceOutput;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/FlinkSourceEnumerator.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/FlinkSourceEnumerator.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/FlinkSourceEnumerator.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/FlinkSourceEnumerator.java
index b7b1b3de3f..f7b5a6c240 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/FlinkSourceEnumerator.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/FlinkSourceEnumerator.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.enumerator;
+package com.alibaba.fluss.flink.source.enumerator;
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.ConnectionFactory;
@@ -22,18 +22,18 @@
import com.alibaba.fluss.client.metadata.KvSnapshots;
import com.alibaba.fluss.config.ConfigOptions;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.lakehouse.LakeSplitGenerator;
-import com.alibaba.fluss.connector.flink.source.enumerator.initializer.BucketOffsetsRetrieverImpl;
-import com.alibaba.fluss.connector.flink.source.enumerator.initializer.NoStoppingOffsetsInitializer;
-import com.alibaba.fluss.connector.flink.source.enumerator.initializer.OffsetsInitializer;
-import com.alibaba.fluss.connector.flink.source.enumerator.initializer.OffsetsInitializer.BucketOffsetsRetriever;
-import com.alibaba.fluss.connector.flink.source.enumerator.initializer.SnapshotOffsetsInitializer;
-import com.alibaba.fluss.connector.flink.source.event.PartitionBucketsUnsubscribedEvent;
-import com.alibaba.fluss.connector.flink.source.event.PartitionsRemovedEvent;
-import com.alibaba.fluss.connector.flink.source.split.HybridSnapshotLogSplit;
-import com.alibaba.fluss.connector.flink.source.split.LogSplit;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
-import com.alibaba.fluss.connector.flink.source.state.SourceEnumeratorState;
+import com.alibaba.fluss.flink.lakehouse.LakeSplitGenerator;
+import com.alibaba.fluss.flink.source.enumerator.initializer.BucketOffsetsRetrieverImpl;
+import com.alibaba.fluss.flink.source.enumerator.initializer.NoStoppingOffsetsInitializer;
+import com.alibaba.fluss.flink.source.enumerator.initializer.OffsetsInitializer;
+import com.alibaba.fluss.flink.source.enumerator.initializer.OffsetsInitializer.BucketOffsetsRetriever;
+import com.alibaba.fluss.flink.source.enumerator.initializer.SnapshotOffsetsInitializer;
+import com.alibaba.fluss.flink.source.event.PartitionBucketsUnsubscribedEvent;
+import com.alibaba.fluss.flink.source.event.PartitionsRemovedEvent;
+import com.alibaba.fluss.flink.source.split.HybridSnapshotLogSplit;
+import com.alibaba.fluss.flink.source.split.LogSplit;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.source.state.SourceEnumeratorState;
import com.alibaba.fluss.metadata.PartitionInfo;
import com.alibaba.fluss.metadata.TableBucket;
import com.alibaba.fluss.metadata.TableInfo;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/BucketOffsetsRetrieverImpl.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/BucketOffsetsRetrieverImpl.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/BucketOffsetsRetrieverImpl.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/BucketOffsetsRetrieverImpl.java
index 076d192b81..04f82c2fb3 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/BucketOffsetsRetrieverImpl.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/BucketOffsetsRetrieverImpl.java
@@ -14,12 +14,12 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.enumerator.initializer;
+package com.alibaba.fluss.flink.source.enumerator.initializer;
import com.alibaba.fluss.client.admin.Admin;
import com.alibaba.fluss.client.admin.ListOffsetsResult;
import com.alibaba.fluss.client.admin.OffsetSpec;
-import com.alibaba.fluss.connector.flink.source.enumerator.initializer.OffsetsInitializer.BucketOffsetsRetriever;
+import com.alibaba.fluss.flink.source.enumerator.initializer.OffsetsInitializer.BucketOffsetsRetriever;
import com.alibaba.fluss.metadata.TablePath;
import org.apache.flink.util.FlinkRuntimeException;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/EarliestOffsetsInitializer.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/EarliestOffsetsInitializer.java
similarity index 87%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/EarliestOffsetsInitializer.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/EarliestOffsetsInitializer.java
index f320c9d508..3e5af8a7ad 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/EarliestOffsetsInitializer.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/EarliestOffsetsInitializer.java
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.enumerator.initializer;
+package com.alibaba.fluss.flink.source.enumerator.initializer;
-import com.alibaba.fluss.connector.flink.source.enumerator.FlinkSourceEnumerator;
-import com.alibaba.fluss.connector.flink.source.reader.FlinkSourceSplitReader;
+import com.alibaba.fluss.flink.source.enumerator.FlinkSourceEnumerator;
+import com.alibaba.fluss.flink.source.reader.FlinkSourceSplitReader;
import javax.annotation.Nullable;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/LatestOffsetsInitializer.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/LatestOffsetsInitializer.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/LatestOffsetsInitializer.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/LatestOffsetsInitializer.java
index 8a1ff14ceb..59ecc0d4b1 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/LatestOffsetsInitializer.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/LatestOffsetsInitializer.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.enumerator.initializer;
+package com.alibaba.fluss.flink.source.enumerator.initializer;
import javax.annotation.Nullable;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/NoStoppingOffsetsInitializer.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/NoStoppingOffsetsInitializer.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/NoStoppingOffsetsInitializer.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/NoStoppingOffsetsInitializer.java
index a58b9e26e3..cb3ad5841c 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/NoStoppingOffsetsInitializer.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/NoStoppingOffsetsInitializer.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.enumerator.initializer;
+package com.alibaba.fluss.flink.source.enumerator.initializer;
import javax.annotation.Nullable;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/OffsetsInitializer.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/OffsetsInitializer.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/OffsetsInitializer.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/OffsetsInitializer.java
index 47d360c04a..265824590d 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/OffsetsInitializer.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/OffsetsInitializer.java
@@ -14,11 +14,11 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.enumerator.initializer;
+package com.alibaba.fluss.flink.source.enumerator.initializer;
import com.alibaba.fluss.client.admin.Admin;
import com.alibaba.fluss.client.admin.OffsetSpec;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
import com.alibaba.fluss.metadata.TablePath;
import javax.annotation.Nullable;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/SnapshotOffsetsInitializer.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/SnapshotOffsetsInitializer.java
similarity index 95%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/SnapshotOffsetsInitializer.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/SnapshotOffsetsInitializer.java
index 0c3b7d07af..b211f367fd 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/SnapshotOffsetsInitializer.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/SnapshotOffsetsInitializer.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.enumerator.initializer;
+package com.alibaba.fluss.flink.source.enumerator.initializer;
import javax.annotation.Nullable;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/TimestampOffsetsInitializer.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/TimestampOffsetsInitializer.java
similarity index 95%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/TimestampOffsetsInitializer.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/TimestampOffsetsInitializer.java
index 0161e42a8e..e70eeb2bb0 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/enumerator/initializer/TimestampOffsetsInitializer.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/enumerator/initializer/TimestampOffsetsInitializer.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.enumerator.initializer;
+package com.alibaba.fluss.flink.source.enumerator.initializer;
import javax.annotation.Nullable;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/event/PartitionBucketsUnsubscribedEvent.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/event/PartitionBucketsUnsubscribedEvent.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/event/PartitionBucketsUnsubscribedEvent.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/event/PartitionBucketsUnsubscribedEvent.java
index 9125c7630e..236c54d355 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/event/PartitionBucketsUnsubscribedEvent.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/event/PartitionBucketsUnsubscribedEvent.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.event;
+package com.alibaba.fluss.flink.source.event;
import com.alibaba.fluss.metadata.TableBucket;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/event/PartitionsRemovedEvent.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/event/PartitionsRemovedEvent.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/event/PartitionsRemovedEvent.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/event/PartitionsRemovedEvent.java
index 2e48e2fecb..f1c220b673 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/event/PartitionsRemovedEvent.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/event/PartitionsRemovedEvent.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.event;
+package com.alibaba.fluss.flink.source.event;
import org.apache.flink.api.connector.source.SourceEvent;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/lookup/FlinkAsyncLookupFunction.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/lookup/FlinkAsyncLookupFunction.java
similarity index 95%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/lookup/FlinkAsyncLookupFunction.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/lookup/FlinkAsyncLookupFunction.java
index 39da737e56..1e279e4d95 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/lookup/FlinkAsyncLookupFunction.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/lookup/FlinkAsyncLookupFunction.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.lookup;
+package com.alibaba.fluss.flink.source.lookup;
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.ConnectionFactory;
@@ -23,12 +23,12 @@
import com.alibaba.fluss.client.lookup.Lookuper;
import com.alibaba.fluss.client.table.Table;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.row.FlinkAsFlussRow;
-import com.alibaba.fluss.connector.flink.source.lookup.LookupNormalizer.RemainingFilter;
-import com.alibaba.fluss.connector.flink.utils.FlinkConversions;
-import com.alibaba.fluss.connector.flink.utils.FlinkUtils;
-import com.alibaba.fluss.connector.flink.utils.FlussRowToFlinkRowConverter;
import com.alibaba.fluss.exception.TableNotExistException;
+import com.alibaba.fluss.flink.row.FlinkAsFlussRow;
+import com.alibaba.fluss.flink.source.lookup.LookupNormalizer.RemainingFilter;
+import com.alibaba.fluss.flink.utils.FlinkConversions;
+import com.alibaba.fluss.flink.utils.FlinkUtils;
+import com.alibaba.fluss.flink.utils.FlussRowToFlinkRowConverter;
import com.alibaba.fluss.metadata.TablePath;
import com.alibaba.fluss.row.InternalRow;
import com.alibaba.fluss.row.ProjectedRow;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/lookup/FlinkLookupFunction.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/lookup/FlinkLookupFunction.java
similarity index 95%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/lookup/FlinkLookupFunction.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/lookup/FlinkLookupFunction.java
index 5ef5df9c7f..e904324903 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/lookup/FlinkLookupFunction.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/lookup/FlinkLookupFunction.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.lookup;
+package com.alibaba.fluss.flink.source.lookup;
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.ConnectionFactory;
@@ -23,10 +23,10 @@
import com.alibaba.fluss.client.lookup.Lookuper;
import com.alibaba.fluss.client.table.Table;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.row.FlinkAsFlussRow;
-import com.alibaba.fluss.connector.flink.utils.FlinkConversions;
-import com.alibaba.fluss.connector.flink.utils.FlinkUtils;
-import com.alibaba.fluss.connector.flink.utils.FlussRowToFlinkRowConverter;
+import com.alibaba.fluss.flink.row.FlinkAsFlussRow;
+import com.alibaba.fluss.flink.utils.FlinkConversions;
+import com.alibaba.fluss.flink.utils.FlinkUtils;
+import com.alibaba.fluss.flink.utils.FlussRowToFlinkRowConverter;
import com.alibaba.fluss.metadata.TablePath;
import com.alibaba.fluss.row.InternalRow;
import com.alibaba.fluss.row.ProjectedRow;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/lookup/LookupNormalizer.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/lookup/LookupNormalizer.java
similarity index 99%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/lookup/LookupNormalizer.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/lookup/LookupNormalizer.java
index a9c942b40a..132cf3c41f 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/lookup/LookupNormalizer.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/lookup/LookupNormalizer.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.lookup;
+package com.alibaba.fluss.flink.source.lookup;
import com.alibaba.fluss.client.lookup.LookupType;
import com.alibaba.fluss.utils.ArrayUtils;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/metrics/FlinkSourceReaderMetrics.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/metrics/FlinkSourceReaderMetrics.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/metrics/FlinkSourceReaderMetrics.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/metrics/FlinkSourceReaderMetrics.java
index 351478be2c..5e6b4394ff 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/metrics/FlinkSourceReaderMetrics.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/metrics/FlinkSourceReaderMetrics.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.metrics;
+package com.alibaba.fluss.flink.source.metrics;
-import com.alibaba.fluss.connector.flink.source.reader.FlinkSourceReader;
+import com.alibaba.fluss.flink.source.reader.FlinkSourceReader;
import com.alibaba.fluss.metadata.TableBucket;
import org.apache.flink.metrics.MetricGroup;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/BoundedSplitReader.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/BoundedSplitReader.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/BoundedSplitReader.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/BoundedSplitReader.java
index a9cacf33f5..5b46c81019 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/BoundedSplitReader.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/BoundedSplitReader.java
@@ -14,11 +14,11 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.reader;
+package com.alibaba.fluss.flink.source.reader;
import com.alibaba.fluss.client.table.scanner.ScanRecord;
import com.alibaba.fluss.client.table.scanner.batch.BatchScanner;
-import com.alibaba.fluss.connector.flink.source.split.SnapshotSplit;
+import com.alibaba.fluss.flink.source.split.SnapshotSplit;
import com.alibaba.fluss.row.InternalRow;
import com.alibaba.fluss.utils.CloseableIterator;
@@ -30,7 +30,7 @@
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
-import static com.alibaba.fluss.connector.flink.source.reader.RecordAndPos.NO_READ_RECORDS_COUNT;
+import static com.alibaba.fluss.flink.source.reader.RecordAndPos.NO_READ_RECORDS_COUNT;
/**
* A bounded reader to reading Fluss's bounded split (e.g., {@link SnapshotSplit}) into {@link
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/FlinkRecordsWithSplitIds.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/FlinkRecordsWithSplitIds.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/FlinkRecordsWithSplitIds.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/FlinkRecordsWithSplitIds.java
index ee00674fa8..b4ad135ed8 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/FlinkRecordsWithSplitIds.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/FlinkRecordsWithSplitIds.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.reader;
+package com.alibaba.fluss.flink.source.reader;
-import com.alibaba.fluss.connector.flink.source.metrics.FlinkSourceReaderMetrics;
+import com.alibaba.fluss.flink.source.metrics.FlinkSourceReaderMetrics;
import com.alibaba.fluss.metadata.TableBucket;
import com.alibaba.fluss.utils.CloseableIterator;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceReader.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/FlinkSourceReader.java
similarity index 83%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceReader.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/FlinkSourceReader.java
index 6d25180367..10c199989f 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceReader.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/FlinkSourceReader.java
@@ -14,19 +14,19 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.reader;
+package com.alibaba.fluss.flink.source.reader;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.lakehouse.LakeSplitStateInitializer;
-import com.alibaba.fluss.connector.flink.source.emitter.FlinkRecordEmitter;
-import com.alibaba.fluss.connector.flink.source.event.PartitionBucketsUnsubscribedEvent;
-import com.alibaba.fluss.connector.flink.source.event.PartitionsRemovedEvent;
-import com.alibaba.fluss.connector.flink.source.metrics.FlinkSourceReaderMetrics;
-import com.alibaba.fluss.connector.flink.source.reader.fetcher.FlinkSourceFetcherManager;
-import com.alibaba.fluss.connector.flink.source.split.HybridSnapshotLogSplitState;
-import com.alibaba.fluss.connector.flink.source.split.LogSplitState;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitState;
+import com.alibaba.fluss.flink.lakehouse.LakeSplitStateInitializer;
+import com.alibaba.fluss.flink.source.emitter.FlinkRecordEmitter;
+import com.alibaba.fluss.flink.source.event.PartitionBucketsUnsubscribedEvent;
+import com.alibaba.fluss.flink.source.event.PartitionsRemovedEvent;
+import com.alibaba.fluss.flink.source.metrics.FlinkSourceReaderMetrics;
+import com.alibaba.fluss.flink.source.reader.fetcher.FlinkSourceFetcherManager;
+import com.alibaba.fluss.flink.source.split.HybridSnapshotLogSplitState;
+import com.alibaba.fluss.flink.source.split.LogSplitState;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.source.split.SourceSplitState;
import com.alibaba.fluss.metadata.TableBucket;
import com.alibaba.fluss.metadata.TablePath;
import com.alibaba.fluss.types.RowType;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceSplitReader.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/FlinkSourceSplitReader.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceSplitReader.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/FlinkSourceSplitReader.java
index 3d5f6ba96e..2ff51c41a3 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceSplitReader.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/FlinkSourceSplitReader.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.reader;
+package com.alibaba.fluss.flink.source.reader;
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.ConnectionFactory;
@@ -24,14 +24,14 @@
import com.alibaba.fluss.client.table.scanner.log.LogScanner;
import com.alibaba.fluss.client.table.scanner.log.ScanRecords;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.lakehouse.LakeSplitReaderGenerator;
-import com.alibaba.fluss.connector.flink.metrics.FlinkMetricRegistry;
-import com.alibaba.fluss.connector.flink.source.metrics.FlinkSourceReaderMetrics;
-import com.alibaba.fluss.connector.flink.source.split.HybridSnapshotLogSplit;
-import com.alibaba.fluss.connector.flink.source.split.LogSplit;
-import com.alibaba.fluss.connector.flink.source.split.SnapshotSplit;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
import com.alibaba.fluss.exception.PartitionNotExistException;
+import com.alibaba.fluss.flink.lakehouse.LakeSplitReaderGenerator;
+import com.alibaba.fluss.flink.metrics.FlinkMetricRegistry;
+import com.alibaba.fluss.flink.source.metrics.FlinkSourceReaderMetrics;
+import com.alibaba.fluss.flink.source.split.HybridSnapshotLogSplit;
+import com.alibaba.fluss.flink.source.split.LogSplit;
+import com.alibaba.fluss.flink.source.split.SnapshotSplit;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
import com.alibaba.fluss.metadata.TableBucket;
import com.alibaba.fluss.metadata.TablePath;
import com.alibaba.fluss.types.RowType;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/MutableRecordAndPos.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/MutableRecordAndPos.java
similarity index 95%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/MutableRecordAndPos.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/MutableRecordAndPos.java
index 197090ff7c..bb8c3a8e02 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/MutableRecordAndPos.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/MutableRecordAndPos.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.reader;
+package com.alibaba.fluss.flink.source.reader;
import com.alibaba.fluss.client.table.scanner.ScanRecord;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/RecordAndPos.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/RecordAndPos.java
similarity index 95%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/RecordAndPos.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/RecordAndPos.java
index aff58c7a99..40864c4b7b 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/RecordAndPos.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/RecordAndPos.java
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.reader;
+package com.alibaba.fluss.flink.source.reader;
import com.alibaba.fluss.client.table.scanner.ScanRecord;
-import com.alibaba.fluss.connector.flink.source.emitter.FlinkRecordEmitter;
+import com.alibaba.fluss.flink.source.emitter.FlinkRecordEmitter;
import java.util.Objects;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/SplitScanner.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/SplitScanner.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/SplitScanner.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/SplitScanner.java
index 2c1f5808a1..1a2cb32215 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/SplitScanner.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/SplitScanner.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.reader;
+package com.alibaba.fluss.flink.source.reader;
import com.alibaba.fluss.client.table.scanner.ScanRecord;
import com.alibaba.fluss.utils.CloseableIterator;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/fetcher/FlinkSourceFetcherManager.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/fetcher/FlinkSourceFetcherManager.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/fetcher/FlinkSourceFetcherManager.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/fetcher/FlinkSourceFetcherManager.java
index 9831bcd37a..448f53bcf9 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/reader/fetcher/FlinkSourceFetcherManager.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/reader/fetcher/FlinkSourceFetcherManager.java
@@ -14,11 +14,11 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.reader.fetcher;
+package com.alibaba.fluss.flink.source.reader.fetcher;
-import com.alibaba.fluss.connector.flink.source.reader.FlinkSourceSplitReader;
-import com.alibaba.fluss.connector.flink.source.reader.RecordAndPos;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.source.reader.FlinkSourceSplitReader;
+import com.alibaba.fluss.flink.source.reader.RecordAndPos;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
import com.alibaba.fluss.metadata.TableBucket;
import org.apache.flink.annotation.Internal;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/HybridSnapshotLogSplit.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/HybridSnapshotLogSplit.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/HybridSnapshotLogSplit.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/HybridSnapshotLogSplit.java
index 001573be02..f23f6187ca 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/HybridSnapshotLogSplit.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/HybridSnapshotLogSplit.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.split;
+package com.alibaba.fluss.flink.source.split;
import com.alibaba.fluss.metadata.TableBucket;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/HybridSnapshotLogSplitState.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/HybridSnapshotLogSplitState.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/HybridSnapshotLogSplitState.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/HybridSnapshotLogSplitState.java
index 2bc3165ca4..78bbd10287 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/HybridSnapshotLogSplitState.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/HybridSnapshotLogSplitState.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.split;
+package com.alibaba.fluss.flink.source.split;
/** The state of {@link HybridSnapshotLogSplit}. */
public class HybridSnapshotLogSplitState extends SourceSplitState {
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/LogSplit.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/LogSplit.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/LogSplit.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/LogSplit.java
index c37eb71b8a..058a6f5f61 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/LogSplit.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/LogSplit.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.split;
+package com.alibaba.fluss.flink.source.split;
import com.alibaba.fluss.metadata.TableBucket;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/LogSplitState.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/LogSplitState.java
similarity index 90%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/LogSplitState.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/LogSplitState.java
index e78ebcf34e..5597da6a7f 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/LogSplitState.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/LogSplitState.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.split;
+package com.alibaba.fluss.flink.source.split;
-import static com.alibaba.fluss.connector.flink.source.split.LogSplit.NO_STOPPING_OFFSET;
+import static com.alibaba.fluss.flink.source.split.LogSplit.NO_STOPPING_OFFSET;
/** The state of {@link LogSplit}. */
public class LogSplitState extends SourceSplitState {
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SnapshotSplit.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SnapshotSplit.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SnapshotSplit.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SnapshotSplit.java
index 263239238d..a306585836 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SnapshotSplit.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SnapshotSplit.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.split;
+package com.alibaba.fluss.flink.source.split;
import com.alibaba.fluss.metadata.TableBucket;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitBase.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SourceSplitBase.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitBase.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SourceSplitBase.java
index 984356ce55..6bbb6b1ecf 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitBase.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SourceSplitBase.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.split;
+package com.alibaba.fluss.flink.source.split;
import com.alibaba.fluss.metadata.TableBucket;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitSerializer.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SourceSplitSerializer.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitSerializer.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SourceSplitSerializer.java
index aab3832714..c10b1537bf 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitSerializer.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SourceSplitSerializer.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.split;
+package com.alibaba.fluss.flink.source.split;
-import com.alibaba.fluss.connector.flink.lakehouse.LakeSplitSerializer;
+import com.alibaba.fluss.flink.lakehouse.LakeSplitSerializer;
import com.alibaba.fluss.metadata.TableBucket;
import org.apache.flink.core.io.SimpleVersionedSerializer;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitState.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SourceSplitState.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitState.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SourceSplitState.java
index 1220eb1bb9..5c540a1882 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitState.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/split/SourceSplitState.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.split;
+package com.alibaba.fluss.flink.source.split;
/** State of the reader, essentially a mutable version of the {@link SourceSplitBase}. */
public abstract class SourceSplitState {
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/state/FlussSourceEnumeratorStateSerializer.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/state/FlussSourceEnumeratorStateSerializer.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/state/FlussSourceEnumeratorStateSerializer.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/state/FlussSourceEnumeratorStateSerializer.java
index 2a322a90f4..66a6feadec 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/state/FlussSourceEnumeratorStateSerializer.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/state/FlussSourceEnumeratorStateSerializer.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.state;
+package com.alibaba.fluss.flink.source.state;
import com.alibaba.fluss.metadata.TableBucket;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/state/SourceEnumeratorState.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/state/SourceEnumeratorState.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/state/SourceEnumeratorState.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/state/SourceEnumeratorState.java
index 3b99bc0ffe..c0fcf9b451 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/source/state/SourceEnumeratorState.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/source/state/SourceEnumeratorState.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.state;
+package com.alibaba.fluss.flink.source.state;
import com.alibaba.fluss.metadata.TableBucket;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/CatalogExceptionUtils.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/CatalogExceptionUtils.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/CatalogExceptionUtils.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/CatalogExceptionUtils.java
index 4e8251d129..af4a3c2926 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/CatalogExceptionUtils.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/CatalogExceptionUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import com.alibaba.fluss.exception.DatabaseAlreadyExistException;
import com.alibaba.fluss.exception.DatabaseNotEmptyException;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/CatalogPropertiesUtils.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/CatalogPropertiesUtils.java
similarity index 99%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/CatalogPropertiesUtils.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/CatalogPropertiesUtils.java
index 251b0227ae..9835add5af 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/CatalogPropertiesUtils.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/CatalogPropertiesUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import org.apache.flink.table.api.Schema;
import org.apache.flink.table.api.TableException;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/DataLakeUtils.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/DataLakeUtils.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/DataLakeUtils.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/DataLakeUtils.java
index a793b2d542..42e8eb9bba 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/DataLakeUtils.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/DataLakeUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import com.alibaba.fluss.config.ConfigOptions;
import com.alibaba.fluss.config.Configuration;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkConnectorOptionsUtils.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkConnectorOptionsUtils.java
similarity index 91%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkConnectorOptionsUtils.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkConnectorOptionsUtils.java
index 33ed226c9f..323efbcce4 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkConnectorOptionsUtils.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkConnectorOptionsUtils.java
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
-import com.alibaba.fluss.connector.flink.FlinkConnectorOptions;
-import com.alibaba.fluss.connector.flink.FlinkConnectorOptions.ScanStartupMode;
+import com.alibaba.fluss.flink.FlinkConnectorOptions;
+import com.alibaba.fluss.flink.FlinkConnectorOptions.ScanStartupMode;
import org.apache.flink.configuration.ReadableConfig;
import org.apache.flink.table.api.ValidationException;
@@ -29,9 +29,9 @@
import java.time.format.DateTimeFormatter;
import java.util.Optional;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.SCAN_STARTUP_MODE;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.SCAN_STARTUP_TIMESTAMP;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.ScanStartupMode.TIMESTAMP;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.SCAN_STARTUP_MODE;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.SCAN_STARTUP_TIMESTAMP;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.ScanStartupMode.TIMESTAMP;
/** Utility class for {@link FlinkConnectorOptions}. */
public class FlinkConnectorOptionsUtils {
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkConversions.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkConversions.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkConversions.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkConversions.java
index 7d04ad09c5..4bf3085b4e 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkConversions.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkConversions.java
@@ -14,15 +14,15 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import com.alibaba.fluss.annotation.VisibleForTesting;
import com.alibaba.fluss.config.ConfigOption;
import com.alibaba.fluss.config.FlussConfigUtils;
import com.alibaba.fluss.config.MemorySize;
import com.alibaba.fluss.config.Password;
-import com.alibaba.fluss.connector.flink.FlinkConnectorOptions;
-import com.alibaba.fluss.connector.flink.catalog.FlinkCatalogFactory;
+import com.alibaba.fluss.flink.FlinkConnectorOptions;
+import com.alibaba.fluss.flink.catalog.FlinkCatalogFactory;
import com.alibaba.fluss.metadata.DatabaseDescriptor;
import com.alibaba.fluss.metadata.Schema;
import com.alibaba.fluss.metadata.TableDescriptor;
@@ -52,8 +52,8 @@
import java.util.Map;
import java.util.stream.Collectors;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BUCKET_KEY;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BUCKET_NUMBER;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BUCKET_KEY;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BUCKET_NUMBER;
import static org.apache.flink.table.factories.FactoryUtil.CONNECTOR;
/** Utils for conversion between Flink and Fluss. */
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkRowToFlussRowConverter.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkRowToFlussRowConverter.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkRowToFlussRowConverter.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkRowToFlussRowConverter.java
index c6df6a0557..c317a9f6e5 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkRowToFlussRowConverter.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkRowToFlussRowConverter.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
-import com.alibaba.fluss.connector.flink.row.FlinkAsFlussRow;
+import com.alibaba.fluss.flink.row.FlinkAsFlussRow;
import com.alibaba.fluss.metadata.KvFormat;
import com.alibaba.fluss.row.BinaryString;
import com.alibaba.fluss.row.Decimal;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkTypeToFlussType.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkTypeToFlussType.java
similarity index 99%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkTypeToFlussType.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkTypeToFlussType.java
index 0b423bfdc8..8d38604d1e 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkTypeToFlussType.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkTypeToFlussType.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import com.alibaba.fluss.types.BytesType;
import com.alibaba.fluss.types.DataField;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkUtils.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkUtils.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkUtils.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkUtils.java
index 6af31ec4f5..d0bccc887e 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlinkUtils.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlinkUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import org.apache.flink.table.types.logical.LogicalType;
import org.apache.flink.table.types.logical.RowType;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlussRowToFlinkRowConverter.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlussRowToFlinkRowConverter.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlussRowToFlinkRowConverter.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlussRowToFlinkRowConverter.java
index 8bc222aa33..99fc6679b5 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlussRowToFlinkRowConverter.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlussRowToFlinkRowConverter.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import com.alibaba.fluss.client.table.scanner.ScanRecord;
import com.alibaba.fluss.row.BinaryString;
@@ -34,7 +34,7 @@
import java.io.Serializable;
-import static com.alibaba.fluss.connector.flink.utils.FlinkConversions.toFlinkRowKind;
+import static com.alibaba.fluss.flink.utils.FlinkConversions.toFlinkRowKind;
/**
* A converter to convert Fluss's {@link InternalRow} to Flink's {@link RowData}.
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlussTypeToFlinkType.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlussTypeToFlinkType.java
similarity index 99%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlussTypeToFlinkType.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlussTypeToFlinkType.java
index 537e025c26..4aa45059d9 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/FlussTypeToFlinkType.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/FlussTypeToFlinkType.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import com.alibaba.fluss.types.ArrayType;
import com.alibaba.fluss.types.BigIntType;
diff --git a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/PushdownUtils.java b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/PushdownUtils.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/PushdownUtils.java
rename to fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/PushdownUtils.java
index 24418ab45e..131a1b3fd1 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/java/com/alibaba/fluss/connector/flink/utils/PushdownUtils.java
+++ b/fluss-flink/fluss-flink-common/src/main/java/com/alibaba/fluss/flink/utils/PushdownUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.ConnectionFactory;
@@ -29,9 +29,9 @@
import com.alibaba.fluss.client.table.scanner.batch.BatchScanner;
import com.alibaba.fluss.client.table.writer.UpsertWriter;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.source.lookup.FlinkLookupFunction;
-import com.alibaba.fluss.connector.flink.source.lookup.LookupNormalizer;
import com.alibaba.fluss.exception.FlussRuntimeException;
+import com.alibaba.fluss.flink.source.lookup.FlinkLookupFunction;
+import com.alibaba.fluss.flink.source.lookup.LookupNormalizer;
import com.alibaba.fluss.metadata.PartitionInfo;
import com.alibaba.fluss.metadata.TableBucket;
import com.alibaba.fluss.metadata.TableInfo;
@@ -73,7 +73,7 @@
import java.util.stream.Collectors;
import java.util.stream.IntStream;
-import static com.alibaba.fluss.connector.flink.source.lookup.LookupNormalizer.createPrimaryKeyLookupNormalizer;
+import static com.alibaba.fluss.flink.source.lookup.LookupNormalizer.createPrimaryKeyLookupNormalizer;
/** Utilities for pushdown abilities. */
public class PushdownUtils {
diff --git a/fluss-connectors/fluss-connector-flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory b/fluss-flink/fluss-flink-common/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
similarity index 90%
rename from fluss-connectors/fluss-connector-flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
rename to fluss-flink/fluss-flink-common/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
index 28bbcd7d6a..a66665d1a8 100644
--- a/fluss-connectors/fluss-connector-flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
+++ b/fluss-flink/fluss-flink-common/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory
@@ -15,4 +15,4 @@
#
-com.alibaba.fluss.connector.flink.catalog.FlinkCatalogFactory
\ No newline at end of file
+com.alibaba.fluss.flink.catalog.FlinkCatalogFactory
\ No newline at end of file
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogITCase.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/catalog/FlinkCatalogITCase.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogITCase.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/catalog/FlinkCatalogITCase.java
index 7c9973fecc..a301a7930c 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogITCase.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/catalog/FlinkCatalogITCase.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.catalog;
+package com.alibaba.fluss.flink.catalog;
import com.alibaba.fluss.config.ConfigOptions;
import com.alibaba.fluss.config.Configuration;
@@ -46,14 +46,14 @@
import java.util.List;
import java.util.Map;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BUCKET_KEY;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BUCKET_NUMBER;
-import static com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase.assertResultsIgnoreOrder;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BUCKET_KEY;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BUCKET_NUMBER;
+import static com.alibaba.fluss.flink.source.testutils.FlinkTestBase.assertResultsIgnoreOrder;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
-/** IT case for {@link com.alibaba.fluss.connector.flink.catalog.FlinkCatalog}. */
+/** IT case for {@link com.alibaba.fluss.flink.catalog.FlinkCatalog}. */
class FlinkCatalogITCase {
@RegisterExtension
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/catalog/FlinkCatalogTest.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/catalog/FlinkCatalogTest.java
index aa13d57348..27e58f7c36 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/catalog/FlinkCatalogTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/catalog/FlinkCatalogTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.catalog;
+package com.alibaba.fluss.flink.catalog;
import com.alibaba.fluss.config.ConfigOptions;
import com.alibaba.fluss.config.Configuration;
@@ -56,12 +56,12 @@
import java.util.List;
import java.util.Map;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BUCKET_KEY;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BUCKET_NUMBER;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.SCAN_STARTUP_MODE;
-import static com.alibaba.fluss.connector.flink.utils.CatalogTableTestUtils.addOptions;
-import static com.alibaba.fluss.connector.flink.utils.CatalogTableTestUtils.checkEqualsIgnoreSchema;
-import static com.alibaba.fluss.connector.flink.utils.CatalogTableTestUtils.checkEqualsRespectSchema;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BUCKET_KEY;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BUCKET_NUMBER;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.SCAN_STARTUP_MODE;
+import static com.alibaba.fluss.flink.utils.CatalogTableTestUtils.addOptions;
+import static com.alibaba.fluss.flink.utils.CatalogTableTestUtils.checkEqualsIgnoreSchema;
+import static com.alibaba.fluss.flink.utils.CatalogTableTestUtils.checkEqualsRespectSchema;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/catalog/TestSchemaResolver.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/catalog/TestSchemaResolver.java
similarity index 99%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/catalog/TestSchemaResolver.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/catalog/TestSchemaResolver.java
index 3d7c9713d3..2b5efbc3a0 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/catalog/TestSchemaResolver.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/catalog/TestSchemaResolver.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.catalog;
+package com.alibaba.fluss.flink.catalog;
import org.apache.flink.table.api.Schema;
import org.apache.flink.table.catalog.Column;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/metrics/FlinkMetricsITCase.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/metrics/FlinkMetricsITCase.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/metrics/FlinkMetricsITCase.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/metrics/FlinkMetricsITCase.java
index f89995f6d3..a83db4d1ba 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/metrics/FlinkMetricsITCase.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/metrics/FlinkMetricsITCase.java
@@ -14,11 +14,11 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.metrics;
+package com.alibaba.fluss.flink.metrics;
import com.alibaba.fluss.config.ConfigOptions;
-import com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase;
import com.alibaba.fluss.exception.FlussRuntimeException;
+import com.alibaba.fluss.flink.source.testutils.FlinkTestBase;
import com.alibaba.fluss.metadata.Schema;
import com.alibaba.fluss.metadata.TableDescriptor;
import com.alibaba.fluss.metadata.TablePath;
@@ -47,7 +47,7 @@
import java.util.Arrays;
import java.util.List;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
import static com.alibaba.fluss.server.testutils.FlussClusterExtension.BUILTIN_DATABASE;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/row/FlinkAsFlussRowTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/row/FlinkAsFlussRowTest.java
similarity index 99%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/row/FlinkAsFlussRowTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/row/FlinkAsFlussRowTest.java
index 5ed4edddd2..7f443b6473 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/row/FlinkAsFlussRowTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/row/FlinkAsFlussRowTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.row;
+package com.alibaba.fluss.flink.row;
import com.alibaba.fluss.row.BinaryString;
import com.alibaba.fluss.row.Decimal;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/sink/FlinkSinkWriterTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/sink/FlinkSinkWriterTest.java
similarity index 55%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/sink/FlinkSinkWriterTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/sink/FlinkSinkWriterTest.java
index a0b82a489c..d18f6cb804 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/sink/FlinkSinkWriterTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/sink/FlinkSinkWriterTest.java
@@ -14,51 +14,40 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.sink;
+package com.alibaba.fluss.flink.sink;
import com.alibaba.fluss.config.ConfigOptions;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.sink.writer.AppendSinkWriter;
-import com.alibaba.fluss.connector.flink.sink.writer.FlinkSinkWriter;
-import com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase;
+import com.alibaba.fluss.flink.sink.writer.AppendSinkWriter;
+import com.alibaba.fluss.flink.sink.writer.FlinkSinkWriter;
+import com.alibaba.fluss.flink.source.testutils.FlinkTestBase;
import com.alibaba.fluss.metadata.DatabaseDescriptor;
import com.alibaba.fluss.metadata.Schema;
import com.alibaba.fluss.metadata.TableDescriptor;
import com.alibaba.fluss.metadata.TablePath;
-import org.apache.flink.api.common.JobID;
-import org.apache.flink.api.common.JobInfo;
-import org.apache.flink.api.common.TaskInfo;
-import org.apache.flink.api.common.operators.MailboxExecutor;
-import org.apache.flink.api.common.operators.ProcessingTimeService;
-import org.apache.flink.api.common.serialization.SerializationSchema;
-import org.apache.flink.api.common.typeutils.TypeSerializer;
+import org.apache.flink.api.common.functions.RuntimeContext;
import org.apache.flink.api.connector.sink2.SinkWriter;
import org.apache.flink.api.connector.sink2.WriterInitContext;
import org.apache.flink.metrics.Counter;
import org.apache.flink.metrics.Gauge;
import org.apache.flink.metrics.Metric;
import org.apache.flink.metrics.groups.OperatorMetricGroup;
-import org.apache.flink.metrics.groups.SinkWriterMetricGroup;
import org.apache.flink.runtime.metrics.MetricNames;
-import org.apache.flink.runtime.metrics.groups.InternalSinkWriterMetricGroup;
import org.apache.flink.runtime.metrics.util.InterceptingOperatorMetricGroup;
import org.apache.flink.streaming.util.MockStreamingRuntimeContext;
import org.apache.flink.table.api.DataTypes;
import org.apache.flink.table.data.GenericRowData;
import org.apache.flink.table.data.StringData;
import org.apache.flink.table.types.logical.RowType;
-import org.apache.flink.util.UserCodeClassLoader;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import java.util.Arrays;
-import java.util.OptionalLong;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.fail;
-/** Test for {@link com.alibaba.fluss.connector.flink.sink.writer.FlinkSinkWriter}. */
+/** Test for {@link com.alibaba.fluss.flink.sink.writer.FlinkSinkWriter}. */
public class FlinkSinkWriterTest extends FlinkTestBase {
@ParameterizedTest
@@ -96,8 +85,8 @@ public OperatorMetricGroup getMetricGroup() {
return interceptingOperatorMetricGroup;
}
};
- MockWriterInitContext mockWriterInitContext =
- new MockWriterInitContext(mockStreamingRuntimeContext);
+ WriterInitContext mockWriterInitContext =
+ mockWriterInitContext(mockStreamingRuntimeContext);
flinkSinkWriter.initialize(mockWriterInitContext.metricGroup());
flinkSinkWriter.write(
@@ -116,6 +105,10 @@ public OperatorMetricGroup getMetricGroup() {
flinkSinkWriter.close();
}
+ protected WriterInitContext mockWriterInitContext(RuntimeContext runtimeContext) {
+ return new MockWriterInitContext(runtimeContext);
+ }
+
static class MockSinkWriterContext implements SinkWriter.Context {
@Override
public long currentWatermark() {
@@ -127,94 +120,4 @@ public Long timestamp() {
return 0L;
}
}
-
- static class MockWriterInitContext implements WriterInitContext {
-
- private static final String UNEXPECTED_METHOD_CALL_MESSAGE =
- "Unexpected method call. Expected that this method will never be called by a test case.";
-
- private final MockStreamingRuntimeContext mockStreamingRuntimeContext;
-
- public MockWriterInitContext(MockStreamingRuntimeContext mockStreamingRuntimeContext) {
- this.mockStreamingRuntimeContext = mockStreamingRuntimeContext;
- }
-
- @Override
- public UserCodeClassLoader getUserCodeClassLoader() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return null;
- }
-
- @Override
- public MailboxExecutor getMailboxExecutor() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return null;
- }
-
- @Override
- public ProcessingTimeService getProcessingTimeService() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return null;
- }
-
- @Override
- public SinkWriterMetricGroup metricGroup() {
- return InternalSinkWriterMetricGroup.wrap(mockStreamingRuntimeContext.getMetricGroup());
- }
-
- @Override
- public SerializationSchema.InitializationContext
- asSerializationSchemaInitializationContext() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return null;
- }
-
- @Override
- public boolean isObjectReuseEnabled() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return false;
- }
-
- @Override
- public TypeSerializer createInputSerializer() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return null;
- }
-
- @Override
- public OptionalLong getRestoredCheckpointId() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return OptionalLong.empty();
- }
-
- public JobInfo getJobInfo() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return null;
- }
-
- public TaskInfo getTaskInfo() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return null;
- }
-
- public int getSubtaskId() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return 0;
- }
-
- public int getNumberOfParallelSubtasks() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return 0;
- }
-
- public int getAttemptNumber() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return 0;
- }
-
- public JobID getJobId() {
- fail(UNEXPECTED_METHOD_CALL_MESSAGE);
- return null;
- }
- }
}
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/sink/FlinkTableSinkITCase.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/sink/FlinkTableSinkITCase.java
similarity index 99%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/sink/FlinkTableSinkITCase.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/sink/FlinkTableSinkITCase.java
index 66cabe4f0c..982d113298 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/sink/FlinkTableSinkITCase.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/sink/FlinkTableSinkITCase.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.sink;
+package com.alibaba.fluss.flink.sink;
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.ConnectionFactory;
@@ -60,9 +60,9 @@
import java.util.Map;
import java.util.stream.Collectors;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
-import static com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase.assertResultsIgnoreOrder;
-import static com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase.waitUntilPartitions;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
+import static com.alibaba.fluss.flink.source.testutils.FlinkTestBase.assertResultsIgnoreOrder;
+import static com.alibaba.fluss.flink.source.testutils.FlinkTestBase.waitUntilPartitions;
import static com.alibaba.fluss.server.testutils.FlussClusterExtension.BUILTIN_DATABASE;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/sink/MockWriterInitContext.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/sink/MockWriterInitContext.java
new file mode 100644
index 0000000000..52e193cfec
--- /dev/null
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/sink/MockWriterInitContext.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2025 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.alibaba.fluss.flink.sink;
+
+import org.apache.flink.api.common.JobInfo;
+import org.apache.flink.api.common.TaskInfo;
+import org.apache.flink.api.common.functions.RuntimeContext;
+import org.apache.flink.api.common.operators.MailboxExecutor;
+import org.apache.flink.api.common.operators.ProcessingTimeService;
+import org.apache.flink.api.common.serialization.SerializationSchema;
+import org.apache.flink.api.common.typeutils.TypeSerializer;
+import org.apache.flink.api.connector.sink2.WriterInitContext;
+import org.apache.flink.metrics.groups.SinkWriterMetricGroup;
+import org.apache.flink.runtime.metrics.groups.InternalSinkWriterMetricGroup;
+import org.apache.flink.util.UserCodeClassLoader;
+
+import java.util.OptionalLong;
+
+import static org.assertj.core.api.Assertions.fail;
+
+/** A mock implementation of {@link WriterInitContext} for testing purposes. */
+public class MockWriterInitContext implements WriterInitContext {
+ private static final String UNEXPECTED_METHOD_CALL_MESSAGE =
+ "Unexpected method call. Expected that this method will never be called by a test case.";
+
+ private final RuntimeContext runtimeContext;
+
+ public MockWriterInitContext(RuntimeContext runtimeContext) {
+ this.runtimeContext = runtimeContext;
+ }
+
+ @Override
+ public UserCodeClassLoader getUserCodeClassLoader() {
+ fail(UNEXPECTED_METHOD_CALL_MESSAGE);
+ return null;
+ }
+
+ @Override
+ public MailboxExecutor getMailboxExecutor() {
+ fail(UNEXPECTED_METHOD_CALL_MESSAGE);
+ return null;
+ }
+
+ @Override
+ public ProcessingTimeService getProcessingTimeService() {
+ fail(UNEXPECTED_METHOD_CALL_MESSAGE);
+ return null;
+ }
+
+ @Override
+ public SinkWriterMetricGroup metricGroup() {
+ return InternalSinkWriterMetricGroup.wrap(runtimeContext.getMetricGroup());
+ }
+
+ @Override
+ public SerializationSchema.InitializationContext asSerializationSchemaInitializationContext() {
+ fail(UNEXPECTED_METHOD_CALL_MESSAGE);
+ return null;
+ }
+
+ @Override
+ public boolean isObjectReuseEnabled() {
+ fail(UNEXPECTED_METHOD_CALL_MESSAGE);
+ return false;
+ }
+
+ @Override
+ public TypeSerializer createInputSerializer() {
+ fail(UNEXPECTED_METHOD_CALL_MESSAGE);
+ return null;
+ }
+
+ @Override
+ public OptionalLong getRestoredCheckpointId() {
+ fail(UNEXPECTED_METHOD_CALL_MESSAGE);
+ return OptionalLong.empty();
+ }
+
+ @Override
+ public JobInfo getJobInfo() {
+ fail(UNEXPECTED_METHOD_CALL_MESSAGE);
+ return null;
+ }
+
+ @Override
+ public TaskInfo getTaskInfo() {
+ fail(UNEXPECTED_METHOD_CALL_MESSAGE);
+ return null;
+ }
+}
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/FlinkTableSourceBatchITCase.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/FlinkTableSourceBatchITCase.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/FlinkTableSourceBatchITCase.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/FlinkTableSourceBatchITCase.java
index 00d8b80dda..bf99eb834b 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/FlinkTableSourceBatchITCase.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/FlinkTableSourceBatchITCase.java
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source;
+package com.alibaba.fluss.flink.source;
import com.alibaba.fluss.client.table.Table;
import com.alibaba.fluss.client.table.writer.AppendWriter;
import com.alibaba.fluss.client.table.writer.UpsertWriter;
import com.alibaba.fluss.config.ConfigOptions;
-import com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase;
+import com.alibaba.fluss.flink.source.testutils.FlinkTestBase;
import com.alibaba.fluss.metadata.TablePath;
import org.apache.commons.lang3.RandomUtils;
@@ -44,7 +44,7 @@
import java.util.List;
import java.util.Map;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
import static com.alibaba.fluss.server.testutils.FlussClusterExtension.BUILTIN_DATABASE;
import static com.alibaba.fluss.testutils.DataTestUtils.row;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/FlinkTableSourceFailOverITCase.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/FlinkTableSourceFailOverITCase.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/FlinkTableSourceFailOverITCase.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/FlinkTableSourceFailOverITCase.java
index 4459e24b22..a15586b80d 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/FlinkTableSourceFailOverITCase.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/FlinkTableSourceFailOverITCase.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source;
+package com.alibaba.fluss.flink.source;
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.ConnectionFactory;
@@ -53,11 +53,11 @@
import java.util.Collections;
import java.util.List;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
-import static com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase.assertResultsIgnoreOrder;
-import static com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase.createPartitions;
-import static com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase.dropPartitions;
-import static com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase.waitUntilPartitions;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
+import static com.alibaba.fluss.flink.source.testutils.FlinkTestBase.assertResultsIgnoreOrder;
+import static com.alibaba.fluss.flink.source.testutils.FlinkTestBase.createPartitions;
+import static com.alibaba.fluss.flink.source.testutils.FlinkTestBase.dropPartitions;
+import static com.alibaba.fluss.flink.source.testutils.FlinkTestBase.waitUntilPartitions;
import static com.alibaba.fluss.testutils.DataTestUtils.row;
/** IT case for flink table source fail over. */
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/FlinkTableSourceITCase.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/FlinkTableSourceITCase.java
similarity index 99%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/FlinkTableSourceITCase.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/FlinkTableSourceITCase.java
index b3a65cbb64..9959705238 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/FlinkTableSourceITCase.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/FlinkTableSourceITCase.java
@@ -14,14 +14,14 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source;
+package com.alibaba.fluss.flink.source;
import com.alibaba.fluss.client.admin.Admin;
import com.alibaba.fluss.client.metadata.KvSnapshots;
import com.alibaba.fluss.client.table.Table;
import com.alibaba.fluss.client.table.writer.UpsertWriter;
import com.alibaba.fluss.config.ConfigOptions;
-import com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase;
+import com.alibaba.fluss.flink.source.testutils.FlinkTestBase;
import com.alibaba.fluss.metadata.TablePath;
import com.alibaba.fluss.row.GenericRow;
import com.alibaba.fluss.row.InternalRow;
@@ -62,7 +62,7 @@
import java.util.Map;
import java.util.stream.Stream;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BOOTSTRAP_SERVERS;
import static com.alibaba.fluss.server.testutils.FlussClusterExtension.BUILTIN_DATABASE;
import static com.alibaba.fluss.testutils.DataTestUtils.row;
import static com.alibaba.fluss.testutils.common.CommonTestUtils.waitUtil;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/enumerator/FlinkSourceEnumeratorTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/enumerator/FlinkSourceEnumeratorTest.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/enumerator/FlinkSourceEnumeratorTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/enumerator/FlinkSourceEnumeratorTest.java
index b3e1fdba3d..109614d5d0 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/enumerator/FlinkSourceEnumeratorTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/enumerator/FlinkSourceEnumeratorTest.java
@@ -14,21 +14,21 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.enumerator;
+package com.alibaba.fluss.flink.source.enumerator;
import com.alibaba.fluss.client.table.Table;
import com.alibaba.fluss.client.table.writer.UpsertWriter;
import com.alibaba.fluss.client.write.HashBucketAssigner;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.FlinkConnectorOptions;
-import com.alibaba.fluss.connector.flink.source.enumerator.initializer.OffsetsInitializer;
-import com.alibaba.fluss.connector.flink.source.event.PartitionBucketsUnsubscribedEvent;
-import com.alibaba.fluss.connector.flink.source.event.PartitionsRemovedEvent;
-import com.alibaba.fluss.connector.flink.source.split.HybridSnapshotLogSplit;
-import com.alibaba.fluss.connector.flink.source.split.LogSplit;
-import com.alibaba.fluss.connector.flink.source.split.SnapshotSplit;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
-import com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase;
+import com.alibaba.fluss.flink.FlinkConnectorOptions;
+import com.alibaba.fluss.flink.source.enumerator.initializer.OffsetsInitializer;
+import com.alibaba.fluss.flink.source.event.PartitionBucketsUnsubscribedEvent;
+import com.alibaba.fluss.flink.source.event.PartitionsRemovedEvent;
+import com.alibaba.fluss.flink.source.split.HybridSnapshotLogSplit;
+import com.alibaba.fluss.flink.source.split.LogSplit;
+import com.alibaba.fluss.flink.source.split.SnapshotSplit;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.source.testutils.FlinkTestBase;
import com.alibaba.fluss.metadata.Schema;
import com.alibaba.fluss.metadata.TableBucket;
import com.alibaba.fluss.metadata.TableDescriptor;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/lookup/FlinkLookupFunctionTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/lookup/FlinkLookupFunctionTest.java
similarity index 95%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/lookup/FlinkLookupFunctionTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/lookup/FlinkLookupFunctionTest.java
index 8a6d396b72..4760760b4d 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/lookup/FlinkLookupFunctionTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/lookup/FlinkLookupFunctionTest.java
@@ -14,12 +14,12 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.lookup;
+package com.alibaba.fluss.flink.source.lookup;
import com.alibaba.fluss.client.table.Table;
import com.alibaba.fluss.client.table.writer.UpsertWriter;
-import com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase;
-import com.alibaba.fluss.connector.flink.utils.FlinkConversions;
+import com.alibaba.fluss.flink.source.testutils.FlinkTestBase;
+import com.alibaba.fluss.flink.utils.FlinkConversions;
import com.alibaba.fluss.metadata.TablePath;
import org.apache.flink.table.connector.source.lookup.LookupOptions;
@@ -37,7 +37,7 @@
import java.util.concurrent.CountDownLatch;
import java.util.stream.Collectors;
-import static com.alibaba.fluss.connector.flink.source.lookup.LookupNormalizer.createPrimaryKeyLookupNormalizer;
+import static com.alibaba.fluss.flink.source.lookup.LookupNormalizer.createPrimaryKeyLookupNormalizer;
import static com.alibaba.fluss.testutils.DataTestUtils.row;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/metrics/FlinkSourceReaderMetricsTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/metrics/FlinkSourceReaderMetricsTest.java
similarity index 85%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/metrics/FlinkSourceReaderMetricsTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/metrics/FlinkSourceReaderMetricsTest.java
index c2c8e4c08e..9651b93c8e 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/metrics/FlinkSourceReaderMetricsTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/metrics/FlinkSourceReaderMetricsTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.metrics;
+package com.alibaba.fluss.flink.source.metrics;
import com.alibaba.fluss.metadata.TableBucket;
@@ -25,15 +25,13 @@
import java.util.Optional;
-import static com.alibaba.fluss.connector.flink.source.metrics.FlinkSourceReaderMetrics.BUCKET_GROUP;
-import static com.alibaba.fluss.connector.flink.source.metrics.FlinkSourceReaderMetrics.FLUSS_METRIC_GROUP;
-import static com.alibaba.fluss.connector.flink.source.metrics.FlinkSourceReaderMetrics.PARTITION_GROUP;
-import static com.alibaba.fluss.connector.flink.source.metrics.FlinkSourceReaderMetrics.READER_METRIC_GROUP;
+import static com.alibaba.fluss.flink.source.metrics.FlinkSourceReaderMetrics.BUCKET_GROUP;
+import static com.alibaba.fluss.flink.source.metrics.FlinkSourceReaderMetrics.FLUSS_METRIC_GROUP;
+import static com.alibaba.fluss.flink.source.metrics.FlinkSourceReaderMetrics.PARTITION_GROUP;
+import static com.alibaba.fluss.flink.source.metrics.FlinkSourceReaderMetrics.READER_METRIC_GROUP;
import static org.assertj.core.api.Assertions.assertThat;
-/**
- * Unit test for {@link com.alibaba.fluss.connector.flink.source.metrics.FlinkSourceReaderMetrics}.
- */
+/** Unit test for {@link com.alibaba.fluss.flink.source.metrics.FlinkSourceReaderMetrics}. */
class FlinkSourceReaderMetricsTest {
@Test
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/reader/BoundedSplitReaderTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/reader/BoundedSplitReaderTest.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/reader/BoundedSplitReaderTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/reader/BoundedSplitReaderTest.java
index 0eee0f649e..dcac66f408 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/reader/BoundedSplitReaderTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/reader/BoundedSplitReaderTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.reader;
+package com.alibaba.fluss.flink.source.reader;
import com.alibaba.fluss.client.table.scanner.batch.BatchScanner;
import com.alibaba.fluss.row.InternalRow;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceReaderTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/reader/FlinkSourceReaderTest.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceReaderTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/reader/FlinkSourceReaderTest.java
index b9e7b20342..67b7ce1b62 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceReaderTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/reader/FlinkSourceReaderTest.java
@@ -14,14 +14,14 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.reader;
+package com.alibaba.fluss.flink.source.reader;
import com.alibaba.fluss.config.Configuration;
-import com.alibaba.fluss.connector.flink.source.event.PartitionBucketsUnsubscribedEvent;
-import com.alibaba.fluss.connector.flink.source.event.PartitionsRemovedEvent;
-import com.alibaba.fluss.connector.flink.source.metrics.FlinkSourceReaderMetrics;
-import com.alibaba.fluss.connector.flink.source.split.LogSplit;
-import com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase;
+import com.alibaba.fluss.flink.source.event.PartitionBucketsUnsubscribedEvent;
+import com.alibaba.fluss.flink.source.event.PartitionsRemovedEvent;
+import com.alibaba.fluss.flink.source.metrics.FlinkSourceReaderMetrics;
+import com.alibaba.fluss.flink.source.split.LogSplit;
+import com.alibaba.fluss.flink.source.testutils.FlinkTestBase;
import com.alibaba.fluss.metadata.TableBucket;
import com.alibaba.fluss.metadata.TableDescriptor;
import com.alibaba.fluss.metadata.TablePath;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceSplitReaderTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/reader/FlinkSourceSplitReaderTest.java
similarity index 97%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceSplitReaderTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/reader/FlinkSourceSplitReaderTest.java
index 65081bbbce..57e789e971 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/reader/FlinkSourceSplitReaderTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/reader/FlinkSourceSplitReaderTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.reader;
+package com.alibaba.fluss.flink.source.reader;
import com.alibaba.fluss.client.metadata.KvSnapshots;
import com.alibaba.fluss.client.table.Table;
@@ -22,11 +22,11 @@
import com.alibaba.fluss.client.table.writer.AppendWriter;
import com.alibaba.fluss.client.table.writer.UpsertWriter;
import com.alibaba.fluss.client.write.HashBucketAssigner;
-import com.alibaba.fluss.connector.flink.source.metrics.FlinkSourceReaderMetrics;
-import com.alibaba.fluss.connector.flink.source.split.HybridSnapshotLogSplit;
-import com.alibaba.fluss.connector.flink.source.split.LogSplit;
-import com.alibaba.fluss.connector.flink.source.split.SourceSplitBase;
-import com.alibaba.fluss.connector.flink.source.testutils.FlinkTestBase;
+import com.alibaba.fluss.flink.source.metrics.FlinkSourceReaderMetrics;
+import com.alibaba.fluss.flink.source.split.HybridSnapshotLogSplit;
+import com.alibaba.fluss.flink.source.split.LogSplit;
+import com.alibaba.fluss.flink.source.split.SourceSplitBase;
+import com.alibaba.fluss.flink.source.testutils.FlinkTestBase;
import com.alibaba.fluss.metadata.Schema;
import com.alibaba.fluss.metadata.TableBucket;
import com.alibaba.fluss.metadata.TableDescriptor;
@@ -57,7 +57,7 @@
import java.util.Set;
import static com.alibaba.fluss.client.table.scanner.log.LogScanner.EARLIEST_OFFSET;
-import static com.alibaba.fluss.connector.flink.source.testutils.RecordAndPosAssert.assertThatRecordAndPos;
+import static com.alibaba.fluss.flink.source.testutils.RecordAndPosAssert.assertThatRecordAndPos;
import static com.alibaba.fluss.testutils.DataTestUtils.row;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitSerializerTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/split/SourceSplitSerializerTest.java
similarity index 90%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitSerializerTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/split/SourceSplitSerializerTest.java
index b321faa9c0..4665ce92c7 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/split/SourceSplitSerializerTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/split/SourceSplitSerializerTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.split;
+package com.alibaba.fluss.flink.source.split;
import com.alibaba.fluss.metadata.TableBucket;
@@ -24,9 +24,9 @@
import static org.assertj.core.api.Assertions.assertThat;
/**
- * Unit tests for {@link com.alibaba.fluss.connector.flink.source.split.SourceSplitSerializer} of
- * serializing {@link com.alibaba.fluss.connector.flink.source.split.SnapshotSplit} and {@link
- * com.alibaba.fluss.connector.flink.source.split.LogSplit}.
+ * Unit tests for {@link com.alibaba.fluss.flink.source.split.SourceSplitSerializer} of serializing
+ * {@link com.alibaba.fluss.flink.source.split.SnapshotSplit} and {@link
+ * com.alibaba.fluss.flink.source.split.LogSplit}.
*/
class SourceSplitSerializerTest {
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/state/SourceEnumeratorStateSerializerTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/state/SourceEnumeratorStateSerializerTest.java
similarity index 92%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/state/SourceEnumeratorStateSerializerTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/state/SourceEnumeratorStateSerializerTest.java
index 230efd54ef..9e3d7507d7 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/state/SourceEnumeratorStateSerializerTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/state/SourceEnumeratorStateSerializerTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.state;
+package com.alibaba.fluss.flink.source.state;
import com.alibaba.fluss.metadata.TableBucket;
@@ -29,8 +29,7 @@
import static org.assertj.core.api.Assertions.assertThat;
/**
- * Unit tests for {@link
- * com.alibaba.fluss.connector.flink.source.state.FlussSourceEnumeratorStateSerializer}.
+ * Unit tests for {@link com.alibaba.fluss.flink.source.state.FlussSourceEnumeratorStateSerializer}.
*/
class SourceEnumeratorStateSerializerTest {
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/state/SourceSplitStateTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/state/SourceSplitStateTest.java
similarity index 92%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/state/SourceSplitStateTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/state/SourceSplitStateTest.java
index d775cb31b3..739afa06a9 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/state/SourceSplitStateTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/state/SourceSplitStateTest.java
@@ -14,12 +14,12 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.state;
+package com.alibaba.fluss.flink.source.state;
-import com.alibaba.fluss.connector.flink.source.split.HybridSnapshotLogSplit;
-import com.alibaba.fluss.connector.flink.source.split.HybridSnapshotLogSplitState;
-import com.alibaba.fluss.connector.flink.source.split.LogSplit;
-import com.alibaba.fluss.connector.flink.source.split.LogSplitState;
+import com.alibaba.fluss.flink.source.split.HybridSnapshotLogSplit;
+import com.alibaba.fluss.flink.source.split.HybridSnapshotLogSplitState;
+import com.alibaba.fluss.flink.source.split.LogSplit;
+import com.alibaba.fluss.flink.source.split.LogSplitState;
import com.alibaba.fluss.metadata.TableBucket;
import org.junit.jupiter.api.Test;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/testutils/FlinkTestBase.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/testutils/FlinkTestBase.java
similarity index 99%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/testutils/FlinkTestBase.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/testutils/FlinkTestBase.java
index 095d32ffe2..9c3bd390a6 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/testutils/FlinkTestBase.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/testutils/FlinkTestBase.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.testutils;
+package com.alibaba.fluss.flink.source.testutils;
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.ConnectionFactory;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/testutils/RecordAndPosAssert.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/testutils/RecordAndPosAssert.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/testutils/RecordAndPosAssert.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/testutils/RecordAndPosAssert.java
index ded0bfb4fd..3059c601d9 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/source/testutils/RecordAndPosAssert.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/source/testutils/RecordAndPosAssert.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.source.testutils;
+package com.alibaba.fluss.flink.source.testutils;
-import com.alibaba.fluss.connector.flink.source.reader.RecordAndPos;
+import com.alibaba.fluss.flink.source.reader.RecordAndPos;
import com.alibaba.fluss.types.RowType;
import org.assertj.core.api.AbstractAssert;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/CatalogTableTestUtils.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/CatalogTableTestUtils.java
similarity index 98%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/CatalogTableTestUtils.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/CatalogTableTestUtils.java
index 64da9d08c5..b544a32577 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/CatalogTableTestUtils.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/CatalogTableTestUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import org.apache.flink.table.catalog.CatalogTable;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlinkConnectorOptionsUtilTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlinkConnectorOptionsUtilTest.java
similarity index 90%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlinkConnectorOptionsUtilTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlinkConnectorOptionsUtilTest.java
index 407aac311a..a3ad746a81 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlinkConnectorOptionsUtilTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlinkConnectorOptionsUtilTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import org.apache.flink.table.api.ValidationException;
import org.junit.jupiter.api.Test;
@@ -22,8 +22,8 @@
import java.time.ZoneId;
import java.util.TimeZone;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.SCAN_STARTUP_TIMESTAMP;
-import static com.alibaba.fluss.connector.flink.utils.FlinkConnectorOptionsUtils.parseTimestamp;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.SCAN_STARTUP_TIMESTAMP;
+import static com.alibaba.fluss.flink.utils.FlinkConnectorOptionsUtils.parseTimestamp;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlinkConversionsTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlinkConversionsTest.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlinkConversionsTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlinkConversionsTest.java
index 94b7a8ab5c..607eedd7ef 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlinkConversionsTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlinkConversionsTest.java
@@ -14,10 +14,10 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import com.alibaba.fluss.config.ConfigOptions;
-import com.alibaba.fluss.connector.flink.catalog.TestSchemaResolver;
+import com.alibaba.fluss.flink.catalog.TestSchemaResolver;
import com.alibaba.fluss.metadata.KvFormat;
import com.alibaba.fluss.metadata.TableDescriptor;
import com.alibaba.fluss.metadata.TableInfo;
@@ -44,10 +44,10 @@
import java.util.List;
import java.util.Map;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BUCKET_KEY;
-import static com.alibaba.fluss.connector.flink.FlinkConnectorOptions.BUCKET_NUMBER;
-import static com.alibaba.fluss.connector.flink.utils.CatalogTableTestUtils.addOptions;
-import static com.alibaba.fluss.connector.flink.utils.CatalogTableTestUtils.checkEqualsIgnoreSchema;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BUCKET_KEY;
+import static com.alibaba.fluss.flink.FlinkConnectorOptions.BUCKET_NUMBER;
+import static com.alibaba.fluss.flink.utils.CatalogTableTestUtils.addOptions;
+import static com.alibaba.fluss.flink.utils.CatalogTableTestUtils.checkEqualsIgnoreSchema;
import static org.apache.flink.table.api.DataTypes.VARBINARY;
import static org.apache.flink.table.api.DataTypes.VARCHAR;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlinkRowToFlussRowConverterTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlinkRowToFlussRowConverterTest.java
similarity index 94%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlinkRowToFlussRowConverterTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlinkRowToFlussRowConverterTest.java
index 366f871ec3..99eac9f2df 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlinkRowToFlussRowConverterTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlinkRowToFlussRowConverterTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import com.alibaba.fluss.metadata.KvFormat;
import com.alibaba.fluss.row.InternalRow;
@@ -33,12 +33,12 @@
import java.math.BigInteger;
import java.time.LocalDateTime;
-import static com.alibaba.fluss.connector.flink.utils.FlinkConversions.toFlinkRowType;
+import static com.alibaba.fluss.flink.utils.FlinkConversions.toFlinkRowType;
import static com.alibaba.fluss.row.TestInternalRowGenerator.createAllRowType;
import static com.alibaba.fluss.row.indexed.IndexedRowTest.assertAllTypeEquals;
import static org.assertj.core.api.Assertions.assertThat;
-/** Test for {@link com.alibaba.fluss.connector.flink.utils.FlinkRowToFlussRowConverter}. */
+/** Test for {@link com.alibaba.fluss.flink.utils.FlinkRowToFlussRowConverter}. */
public class FlinkRowToFlussRowConverterTest {
@Test
diff --git a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlussRowToFlinkRowConverterTest.java b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlussRowToFlinkRowConverterTest.java
similarity index 96%
rename from fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlussRowToFlinkRowConverterTest.java
rename to fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlussRowToFlinkRowConverterTest.java
index e1851006db..b82b80bc25 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/java/com/alibaba/fluss/connector/flink/utils/FlussRowToFlinkRowConverterTest.java
+++ b/fluss-flink/fluss-flink-common/src/test/java/com/alibaba/fluss/flink/utils/FlussRowToFlinkRowConverterTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.alibaba.fluss.connector.flink.utils;
+package com.alibaba.fluss.flink.utils;
import com.alibaba.fluss.client.table.scanner.ScanRecord;
import com.alibaba.fluss.record.ChangeType;
@@ -38,7 +38,7 @@
import static com.alibaba.fluss.row.indexed.IndexedRowTest.genRecordForAllTypes;
import static org.assertj.core.api.Assertions.assertThat;
-/** Unit test for {@link com.alibaba.fluss.connector.flink.utils.FlussRowToFlinkRowConverter}. */
+/** Unit test for {@link com.alibaba.fluss.flink.utils.FlussRowToFlinkRowConverter}. */
class FlussRowToFlinkRowConverterTest {
@Test
diff --git a/fluss-flink/fluss-flink-common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/fluss-flink/fluss-flink-common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
new file mode 100644
index 0000000000..2070249a19
--- /dev/null
+++ b/fluss-flink/fluss-flink-common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension
@@ -0,0 +1,17 @@
+#
+# Copyright (c) 2025 Alibaba Group Holding Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+com.alibaba.fluss.testutils.common.TestLoggerExtension
\ No newline at end of file
diff --git a/fluss-connectors/fluss-connector-flink/src/test/resources/log4j2-test.properties b/fluss-flink/fluss-flink-common/src/test/resources/log4j2-test.properties
similarity index 88%
rename from fluss-connectors/fluss-connector-flink/src/test/resources/log4j2-test.properties
rename to fluss-flink/fluss-flink-common/src/test/resources/log4j2-test.properties
index b948a090f1..9c15a082bf 100644
--- a/fluss-connectors/fluss-connector-flink/src/test/resources/log4j2-test.properties
+++ b/fluss-flink/fluss-flink-common/src/test/resources/log4j2-test.properties
@@ -25,3 +25,6 @@ appender.testlogger.target = SYSTEM_ERR
appender.testlogger.layout.type = PatternLayout
appender.testlogger.layout.pattern = %-4r [%t] %-5p %c %x - %m%n
+# suppress the duplicated logger extension
+logger.flink.name = org.apache.flink.util.TestLoggerExtension
+logger.flink.level = OFF
\ No newline at end of file
diff --git a/fluss-connectors/pom.xml b/fluss-flink/pom.xml
similarity index 90%
rename from fluss-connectors/pom.xml
rename to fluss-flink/pom.xml
index a0344339ed..81645e7c99 100644
--- a/fluss-connectors/pom.xml
+++ b/fluss-flink/pom.xml
@@ -25,12 +25,15 @@
0.7-SNAPSHOT
- fluss-connectors
- Fluss : Connector :
+ fluss-flink
+ Fluss : Engine Flink :
pom
- fluss-connector-flink
+ fluss-flink-common
+ fluss-flink-1.20
+ fluss-flink-1.19
+ fluss-flink-1.18
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ copy-class-files
+ generate-resources
+
+ copy-resources
+
+
+ false
+
+
+ ${project.basedir}/../
+
+ **/target/classes/**
+
+
+ fluss-test-coverage/**
+ fluss-test-utils/**
+ fluss-flink/**
+ fluss-lakehouse/**
+ fluss-lake/**
+
+
+
+ ${project.build.directory}/classes
+
+
+
+
+
+
+
+
+
+ test-flink
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ copy-class-files
+ generate-resources
+
+ copy-resources
+
+
+ false
+
+
+ ${project.basedir}/../
+
+ fluss-flink/**/target/classes/**
+ fluss-lakehouse/**/target/classes/**
+ fluss-lake/**/target/classes/**
+
+
+ fluss-test-coverage/**
+ fluss-test-utils/**
+
+
+
+ ${project.build.directory}/classes
+
+
+
+
+
+
+
+
+
-
-
- org.apache.maven.plugins
- maven-resources-plugin
-
-
- copy-class-files
- generate-resources
-
- copy-resources
-
-
- false
-
-
- ${project.basedir}/../
-
- **/target/classes/**
-
-
- fluss-test-coverage/**
- fluss-test-utils/**
-
-
-
- ${project.build.directory}/classes
-
-
-
-
+
@@ -193,6 +269,7 @@
com.alibaba.fluss.record.*
com.alibaba.fluss.kv.*
com.alibaba.fluss.io.*
+ com.alibaba.fluss.bucketing.BucketingFunction
com.alibaba.fluss.server.ServerBase
com.alibaba.fluss.server.utils.ShutdownHookUtil
@@ -212,44 +289,44 @@
com.alibaba.fluss.remote.*
com.alibaba.fluss.compression.*
- com.alibaba.fluss.connector.flink.catalog.*
+ com.alibaba.fluss.flink.catalog.*
- com.alibaba.fluss.connector.flink.utils.*
- com.alibaba.fluss.connector.flink.source.*
+ com.alibaba.fluss.flink.utils.*
+ com.alibaba.fluss.flink.source.*
- com.alibaba.fluss.connector.flink.catalog.FlinkCatalog
+ com.alibaba.fluss.flink.catalog.FlinkCatalog
- com.alibaba.fluss.connector.flink.catalog.FlinkCatalogOptions
+ com.alibaba.fluss.flink.catalog.FlinkCatalogOptions
- com.alibaba.fluss.connector.flink.source.FlinkTableSource.*
+ com.alibaba.fluss.flink.source.FlinkTableSource.*
- com.alibaba.fluss.connector.flink.source.split.HybridSnapshotLogSplitState
+ com.alibaba.fluss.flink.source.split.HybridSnapshotLogSplitState
- com.alibaba.fluss.connector.flink.source.split.LogSplitState
+ com.alibaba.fluss.flink.source.split.LogSplitState
- com.alibaba.fluss.connector.flink.source.state.SourceEnumeratorState
+ com.alibaba.fluss.flink.source.state.SourceEnumeratorState
- com.alibaba.fluss.connector.flink.source.event.PartitionBucketsUnsubscribedEvent
+ com.alibaba.fluss.flink.source.event.PartitionBucketsUnsubscribedEvent
- com.alibaba.fluss.connector.flink.source.emitter.FlinkRecordEmitter
+ com.alibaba.fluss.flink.source.emitter.FlinkRecordEmitter
- com.alibaba.fluss.connector.flink.source.reader.FlinkSourceReader
+ com.alibaba.fluss.flink.source.reader.FlinkSourceReader
- com.alibaba.fluss.connector.flink.source.reader.RecordAndPos
+ com.alibaba.fluss.flink.source.reader.RecordAndPos
- com.alibaba.fluss.connector.flink.sink.FlinkSink
+ com.alibaba.fluss.flink.sink.FlinkSink
- com.alibaba.fluss.connector.flink.metrics.*
+ com.alibaba.fluss.flink.metrics.*
com.alibaba.fluss.fs.hdfs.HadoopFsPlugin
@@ -266,9 +343,10 @@
com.alibaba.fluss.lakehouse.*
- com.alibaba.fluss.connector.flink.lakehouse.*
+ com.alibaba.fluss.flink.lakehouse.*
com.alibaba.fluss.lakehouse.cli.*
+ com.alibaba.fluss.kafka.*
diff --git a/pom.xml b/pom.xml
index d035e35f38..45a04c4007 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,7 +69,7 @@
fluss-test-utils
fluss-test-coverage
fluss-server
- fluss-connectors
+ fluss-flink
fluss-protogen
fluss-benchmark
fluss-lake
diff --git a/tools/ci/log4j.properties b/tools/ci/log4j.properties
index 802c9410d7..0357c167d5 100644
--- a/tools/ci/log4j.properties
+++ b/tools/ci/log4j.properties
@@ -44,6 +44,10 @@ appender.zk_client.layout.type = PatternLayout
appender.zk_client.layout.pattern = %d{HH:mm:ss,SSS} [%20t] %-5p %-60c %x - %m%n
appender.zk_client.createOnDemand = true
+# suppress the duplicated logger extension
+logger.flink.name = org.apache.flink.util.TestLoggerExtension
+logger.flink.level = OFF
+
# suppress the irrelevant (wrong) warnings from the netty channel handler
logger.netty.name = org.jboss.netty.channel.DefaultChannelPipeline
logger.netty.level = ERROR
diff --git a/website/docs/engine-flink/getting-started.md b/website/docs/engine-flink/getting-started.md
index 350b0806c6..81b1ba2cac 100644
--- a/website/docs/engine-flink/getting-started.md
+++ b/website/docs/engine-flink/getting-started.md
@@ -57,12 +57,12 @@ If you haven’t downloaded Flink, you can download [the binary release](https:/
```shell
tar -xzf flink-1.20.1-bin-scala_2.12.tgz
```
-- **Copy Fluss Connector Jar**
+- **Copy Fluss Flink Bundled Jar**
-Download [Fluss connector jar](/downloads#fluss-connector) and copy to the lib directory of your Flink home.
+Download [Fluss Flink Bundled jar](/downloads) and copy to the `lib` directory of your Flink home.
```shell
-cp fluss-connector-flink-$FLUSS_VERSION$.jar /lib/
+cp fluss-flink-$FLUSS_VERSION$.jar /lib/
```
:::note
If you use [Amazon S3](http://aws.amazon.com/s3/), [Aliyun OSS](https://www.aliyun.com/product/oss) or [HDFS(Hadoop Distributed File System)](https://hadoop.apache.org/docs/stable/) as Fluss's [remote storage](maintenance/tiered-storage/remote-storage.md),
diff --git a/website/docs/quickstart/flink.md b/website/docs/quickstart/flink.md
index 06849d7278..7b78ea8323 100644
--- a/website/docs/quickstart/flink.md
+++ b/website/docs/quickstart/flink.md
@@ -129,7 +129,7 @@ The Docker Compose environment consists of the following containers:
- **Flink Cluster**: a Flink `JobManager` and a Flink `TaskManager` container to execute queries.
**Note:** The `fluss/quickstart-flink` image is based on [flink:1.20.1-java17](https://hub.docker.com/layers/library/flink/1.20-java17/images/sha256:bf1af6406c4f4ad8faa46efe2b3d0a0bf811d1034849c42c1e3484712bc83505) and
-includes the [fluss-connector-flink](engine-flink/getting-started.md), [paimon-flink](https://paimon.apache.org/docs/1.0/flink/quick-start/) and
+includes the [fluss-flink](engine-flink/getting-started.md), [paimon-flink](https://paimon.apache.org/docs/1.0/flink/quick-start/) and
[flink-connector-faker](https://flink-packages.org/packages/flink-faker) to simplify this guide.
3. To start all containers, run:
@@ -148,7 +148,7 @@ You can also visit http://localhost:8083/ to see if Flink is running normally.
:::note
- If you want to additionally use an observability stack, follow one of the provided quickstart guides [here](maintenance/observability/quickstart.md) and then continue with this guide.
-- If you want to run with your own Flink environment, remember to download the [fluss-connector-flink](/downloads), [flink-connector-faker](https://github.com/knaufk/flink-faker/releases), [paimon-flink](https://paimon.apache.org/docs/1.0/flink/quick-start/) connector jars and then put them to `FLINK_HOME/lib/`.
+- If you want to run with your own Flink environment, remember to download the [fluss-flink connector jar](/downloads), [flink-connector-faker](https://github.com/knaufk/flink-faker/releases), [paimon-flink connector jar](https://paimon.apache.org/docs/1.0/flink/quick-start/) and then put them to `FLINK_HOME/lib/`.
- All the following commands involving `docker compose` should be executed in the created working directory that contains the `docker-compose.yml` file.
:::