[#9710] feat(flink-connector): add Flink 1.19 and 1.20 support - #11071
Conversation
Code Coverage Report
Files |
|
Hi @FANNG1 when will this be ready for review. We want to get this merged in 1.3.0 release. |
I will polish it today and make it ready to review as soon as possible |
There was a problem hiding this comment.
Pull request overview
This pull request extends the versioned Flink connector layout (introduced with the 1.18 baseline) to add build + runtime artifacts and integration-test coverage for Flink 1.19 and 1.20, including a Flink 1.20-specific compatibility hook for CatalogTable construction.
Changes:
- Adds new Gradle modules for
flink-1.19/flink-runtime-1.19andflink-1.20/flink-runtime-1.20, plus version-specific catalog/factory entry points and SPI descriptors. - Introduces Flink 1.20
CatalogCompatimplementation usingCatalogTable.newBuilder()and adjusts version-specific IT expectations where Flink 1.20 changes exception types. - Expands CI workflows to execute Flink integration tests across 1.18/1.19/1.20 and excludes the new modules from unrelated Trino workflows.
Reviewed changes
Copilot reviewed 53 out of 53 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| settings.gradle.kts | Includes new Flink 1.19/1.20 connector and runtime modules in the multi-version build. |
| gradle/libs.versions.toml | Adds Flink 1.19/1.20 and corresponding JDBC connector version coordinates. |
| flink-connector/v1.20/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/paimon/FlinkPaimonLocalFileSystemBackendIT120.java | Adds Flink 1.20 Paimon filesystem IT entry class. |
| flink-connector/v1.20/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/paimon/FlinkPaimonJdbcBackendIT120.java | Adds Flink 1.20 Paimon JDBC IT entry class. |
| flink-connector/v1.20/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/paimon/FlinkPaimonHiveBackendIT120.java | Adds Flink 1.20 Paimon Hive IT entry class. |
| flink-connector/v1.20/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/jdbc/FlinkJdbcMysqlCatalogIT120.java | Overrides JDBC missing-options assertion for Flink 1.20 exception behavior. |
| flink-connector/v1.20/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/iceberg/FlinkIcebergRestCatalogIT120.java | Adds Flink 1.20 Iceberg REST IT entry class. |
| flink-connector/v1.20/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/iceberg/FlinkIcebergHiveCatalogIT120.java | Adds Flink 1.20 Iceberg Hive IT entry class. |
| flink-connector/v1.20/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveKerberosClientIT120.java | Adds Flink 1.20 Hive Kerberos IT entry class. |
| flink-connector/v1.20/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveCatalogIT120.java | Overrides Hive missing-options assertion for Flink 1.20 exception behavior. |
| flink-connector/v1.20/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/catalog/GravitinoCatalogManagerIT120.java | Adds Flink 1.20 catalog manager IT entry class. |
| flink-connector/v1.20/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory | Declares Flink 1.20 version-specific catalog factories for Flink SPI discovery. |
| flink-connector/v1.20/flink/src/main/java/org/apache/gravitino/flink/connector/utils/CatalogCompatFlink120.java | Implements Flink 1.20 CatalogCompat using the CatalogTable builder API. |
| flink-connector/v1.20/flink/src/main/java/org/apache/gravitino/flink/connector/paimon/GravitinoPaimonCatalogFlink120.java | Adds Flink 1.20 Paimon catalog entry implementation and selects 1.20 compat hook. |
| flink-connector/v1.20/flink/src/main/java/org/apache/gravitino/flink/connector/paimon/GravitinoPaimonCatalogFactoryFlink120.java | Adds Flink 1.20 Paimon factory entry point. |
| flink-connector/v1.20/flink/src/main/java/org/apache/gravitino/flink/connector/jdbc/postgresql/GravitinoPostgresJdbcCatalogFactoryFlink120.java | Adds Flink 1.20 Postgres JDBC factory entry point. |
| flink-connector/v1.20/flink/src/main/java/org/apache/gravitino/flink/connector/jdbc/mysql/GravitinoMysqlJdbcCatalogFactoryFlink120.java | Adds Flink 1.20 MySQL JDBC factory entry point. |
| flink-connector/v1.20/flink/src/main/java/org/apache/gravitino/flink/connector/jdbc/GravitinoJdbcCatalogFlink120.java | Adds Flink 1.20 JDBC catalog using relocated Flink JDBC factory packages. |
| flink-connector/v1.20/flink/src/main/java/org/apache/gravitino/flink/connector/iceberg/GravitinoIcebergCatalogFlink120.java | Adds Flink 1.20 Iceberg catalog entry implementation and selects 1.20 compat hook. |
| flink-connector/v1.20/flink/src/main/java/org/apache/gravitino/flink/connector/iceberg/GravitinoIcebergCatalogFactoryFlink120.java | Adds Flink 1.20 Iceberg factory entry point. |
| flink-connector/v1.20/flink/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFlink120.java | Adds Flink 1.20 Hive catalog entry implementation and selects 1.20 compat hook. |
| flink-connector/v1.20/flink/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFactoryFlink120.java | Adds Flink 1.20 Hive factory entry point. |
| flink-connector/v1.20/flink/build.gradle.kts | Defines Flink 1.20 module dependencies, publication coordinates, and shared test execution wiring. |
| flink-connector/v1.20/flink-runtime/src/test/java/org/apache/gravitino/flink/runtime/TestRuntimeJarDependencies.java | Adds runtime-jar assertions for Flink 1.20 shaded artifact behavior. |
| flink-connector/v1.20/flink-runtime/build.gradle.kts | Defines Flink 1.20 runtime shaded jar build/publish and dependency constraints. |
| flink-connector/v1.19/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/paimon/FlinkPaimonLocalFileSystemBackendIT119.java | Adds Flink 1.19 Paimon filesystem IT entry class. |
| flink-connector/v1.19/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/paimon/FlinkPaimonJdbcBackendIT119.java | Adds Flink 1.19 Paimon JDBC IT entry class. |
| flink-connector/v1.19/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/paimon/FlinkPaimonHiveBackendIT119.java | Adds Flink 1.19 Paimon Hive IT entry class. |
| flink-connector/v1.19/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/jdbc/FlinkJdbcMysqlCatalogIT119.java | Adds Flink 1.19 JDBC MySQL IT entry class. |
| flink-connector/v1.19/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/iceberg/FlinkIcebergRestCatalogIT119.java | Adds Flink 1.19 Iceberg REST IT entry class. |
| flink-connector/v1.19/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/iceberg/FlinkIcebergHiveCatalogIT119.java | Adds Flink 1.19 Iceberg Hive IT entry class. |
| flink-connector/v1.19/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveKerberosClientIT119.java | Adds Flink 1.19 Hive Kerberos IT entry class. |
| flink-connector/v1.19/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/hive/FlinkHiveCatalogIT119.java | Adds Flink 1.19 Hive IT entry class. |
| flink-connector/v1.19/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/catalog/GravitinoCatalogManagerIT119.java | Adds Flink 1.19 catalog manager IT entry class. |
| flink-connector/v1.19/flink/src/main/resources/META-INF/services/org.apache.flink.table.factories.Factory | Declares Flink 1.19 version-specific catalog factories for Flink SPI discovery. |
| flink-connector/v1.19/flink/src/main/java/org/apache/gravitino/flink/connector/paimon/GravitinoPaimonCatalogFlink119.java | Adds Flink 1.19 Paimon catalog entry implementation. |
| flink-connector/v1.19/flink/src/main/java/org/apache/gravitino/flink/connector/paimon/GravitinoPaimonCatalogFactoryFlink119.java | Adds Flink 1.19 Paimon factory entry point. |
| flink-connector/v1.19/flink/src/main/java/org/apache/gravitino/flink/connector/jdbc/postgresql/GravitinoPostgresJdbcCatalogFactoryFlink119.java | Adds Flink 1.19 Postgres JDBC factory entry point. |
| flink-connector/v1.19/flink/src/main/java/org/apache/gravitino/flink/connector/jdbc/mysql/GravitinoMysqlJdbcCatalogFactoryFlink119.java | Adds Flink 1.19 MySQL JDBC factory entry point. |
| flink-connector/v1.19/flink/src/main/java/org/apache/gravitino/flink/connector/jdbc/GravitinoJdbcCatalogFlink119.java | Adds Flink 1.19 JDBC catalog using relocated Flink JDBC factory packages. |
| flink-connector/v1.19/flink/src/main/java/org/apache/gravitino/flink/connector/iceberg/GravitinoIcebergCatalogFlink119.java | Adds Flink 1.19 Iceberg catalog entry implementation. |
| flink-connector/v1.19/flink/src/main/java/org/apache/gravitino/flink/connector/iceberg/GravitinoIcebergCatalogFactoryFlink119.java | Adds Flink 1.19 Iceberg factory entry point. |
| flink-connector/v1.19/flink/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFlink119.java | Adds Flink 1.19 Hive catalog entry implementation. |
| flink-connector/v1.19/flink/src/main/java/org/apache/gravitino/flink/connector/hive/GravitinoHiveCatalogFactoryFlink119.java | Adds Flink 1.19 Hive factory entry point. |
| flink-connector/v1.19/flink/build.gradle.kts | Defines Flink 1.19 module dependencies, publication coordinates, and shared test execution wiring. |
| flink-connector/v1.19/flink-runtime/src/test/java/org/apache/gravitino/flink/runtime/TestRuntimeJarDependencies.java | Adds runtime-jar assertions for Flink 1.19 shaded artifact behavior. |
| flink-connector/v1.19/flink-runtime/build.gradle.kts | Defines Flink 1.19 runtime shaded jar build/publish and dependency constraints. |
| flink-connector/v1.18/flink/src/test/java/org/apache/gravitino/flink/connector/integration/test/iceberg/FlinkIcebergRestCatalogIT118.java | Refactors Flink 1.18 Iceberg REST IT entry class to rely on shared abstract base test logic. |
| flink-connector/flink-common/src/test/java/org/apache/gravitino/flink/connector/integration/test/iceberg/FlinkIcebergRestCatalogIT.java | Moves shared Iceberg REST SQL create-catalog IT into the abstract base class for reuse across versions. |
| .github/workflows/trino-multi-version-test.yml | Excludes new Flink 1.19/1.20 modules from Trino multi-version workflow to keep CI scope focused. |
| .github/workflows/trino-integration-test.yml | Excludes new Flink 1.19/1.20 modules from Trino integration workflow to keep CI scope focused. |
| .github/workflows/flink-integration-test-action.yml | Runs Flink integration tests for 1.18/1.19/1.20 in both embedded and deploy modes and uploads per-version logs. |
| .github/workflows/backend-integration-test-action.yml | Excludes Flink 1.19/1.20 test tasks from backend integration workflows to avoid redundant execution. |
|
@jerryshao @polzyos @lasdf1234 @diqiu50 PTAL, thx |
|
Do we need to update the root |
|
Hi @FANNG1 , this PR is quite straightforward, I have no further comments. I think we still need to update the doc. Will you do it in this PR or the next one? |
| public void testCreateGravitinoHiveCatalogRequireOptions() { | ||
| // Flink 1.20 reports missing required catalog options through IllegalArgumentException | ||
| // rather than the ValidationException thrown by older minor versions. | ||
| tableEnv.useCatalog(DEFAULT_CATALOG); | ||
|
|
||
| String catalogName = "gravitino_hive_sql2"; | ||
| Assertions.assertThrows( | ||
| IllegalArgumentException.class, | ||
| () -> |
There was a problem hiding this comment.
Fixed in fc89277. The Flink 1.20 override now keeps the IllegalArgumentException assertion and also verifies the exception message chain contains metastore.uris, which is the required Gravitino catalog property surfaced by this code path.
|
@jerryshao For package building, I think no root For docs, I will track the Flink documentation update in #10543 instead of expanding this PR. |
|
I have no further comments, @yuqi1129 do you want to take another look? |
| + "'default-database'='%s'" | ||
| + ")", | ||
| catalogName, mysqlUrl, mysqlUsername, mysqlDefaultDatabase))); | ||
|
|
||
| Assertions.assertTrue(exception.getMessage().contains("jdbc-password")); | ||
| Assertions.assertFalse(metalake.catalogExists(catalogName)); |
There was a problem hiding this comment.
Fixed in 94d8486. The Flink 1.20 JDBC missing-option assertion now checks for password, which covers the Flink SQL option key while still matching the current Gravitino-side error message.
|
|
||
| val flinkVersion: String = libs.versions.flink119.get() | ||
| val flinkMajorVersion: String = flinkVersion.substringBeforeLast(".") | ||
| val scalaVersion: String = "2.12" |
There was a problem hiding this comment.
Will we plan to support multiple scale versions?
There was a problem hiding this comment.
No, not in this PR. Flink 1.18+ is still wired only for Scala 2.12 here. The 119 / 120 aliases are intended to make the Flink minor version explicit (1.19 / 1.20) and avoid ambiguity with the Scala suffix used in artifact names.
| dependsOn(":catalogs:catalog-hive:runtimeJars") | ||
| dependsOn(":catalogs:catalog-lakehouse-iceberg:jar") | ||
| dependsOn(":catalogs:catalog-lakehouse-iceberg:runtimeJars") | ||
| dependsOn(":iceberg:iceberg-rest-server:jar") |
There was a problem hiding this comment.
Why does it depend on iceberg-rest-server?
There was a problem hiding this comment.
This is needed by the Iceberg REST catalog IT path. FlinkEnvIT enables the iceberg-rest auxiliary service for the lakehouse-iceberg provider, and MiniGravitino loads that service from iceberg/iceberg-rest-server/build/libs. The explicit :iceberg:iceberg-rest-server:jar dependency guarantees that jar exists before the Flink IT starts. This is copied from the Flink 1.18 module wiring.
|
@yuqi1129 can you take another look? |
…pache#11071) ### What changes were proposed in this pull request? This PR adds Gravitino Flink connector support for Flink 1.19 and Flink 1.20 on top of the versioned-layout baseline established for Flink 1.18 (apache#10517). Main changes: - Add `flink-connector/v1.19/flink` + `flink-connector/v1.19/flink-runtime` modules. - Add `flink-connector/v1.20/flink` + `flink-connector/v1.20/flink-runtime` modules. - Add version-specific catalog/factory entry classes (`*Flink119` / `*Flink120`) for Hive, Iceberg, JDBC-MySQL, JDBC-Postgres, and Paimon. - Reuse `DefaultCatalogCompat` for Flink 1.19 and add `CatalogCompatFlink120` that uses `CatalogTable.newBuilder(...)` because `CatalogTable.of(...)` is deprecated in Flink 1.20. - The JDBC catalog for 1.19 / 1.20 uses the relocated `org.apache.flink.connector.jdbc.core.*` factory packages shipped in `flink-connector-jdbc 3.3.0-1.19` / `3.3.0-1.20`. - Add provider-specific integration-test entry classes for each new minor version. - Add Flink 1.20-specific overrides for missing required catalog options where Flink 1.20 reports `IllegalArgumentException` rather than the `ValidationException` thrown by older minor versions. - Extend the Flink CI job to run embedded and deploy mode integration tests across 1.18, 1.19, and 1.20. - Exclude the new Flink modules from unrelated Backend IT and Trino CI jobs. No `flink-common` production changes are required; the 1.18 baseline already exposes the necessary extension hooks (`BaseCatalog#catalogCompat()`, the protected `GravitinoJdbcCatalog(Context, ..., AbstractCatalog)` constructor, etc.). The shared Iceberg REST SQL integration test now lives in the common abstract IT base so the 1.18 / 1.19 / 1.20 entry classes can remain thin stubs. This PR supersedes apache#11061 (closed) and the now-stale apache#10501. ### Why are the changes needed? The Flink 1.18 baseline (apache#10517) was intentionally limited to one minor and deferred 1.19 / 1.20 to follow-up work under parent issue apache#9710. This PR is that follow-up, so users can target the two currently-maintained Flink minor versions. Fix: apache#9710 ### Does this PR introduce _any_ user-facing change? Yes. Two new connector artifacts are produced: - `gravitino-flink-connector-runtime-1.19_2.12` - `gravitino-flink-connector-runtime-1.20_2.12` The user-facing SQL syntax is unchanged. ### How was this patch tested? Local validations (all green): - `./gradlew spotlessApply` - `./gradlew :flink-connector:flink-1.19:test -PskipITs` - `./gradlew :flink-connector:flink-1.20:test -PskipITs` - `./gradlew :flink-connector:flink-runtime-1.19:test` - `./gradlew :flink-connector:flink-runtime-1.20:test` - `./gradlew :flink-connector:flink-runtime-1.19:shadowJar :flink-connector:flink-runtime-1.20:shadowJar` - `./gradlew :spotlessKotlinGradleCheck :flink-connector:flink-1.20:test -PskipITs` - `./gradlew :flink-connector:flink-common:compileTestJava :flink-connector:flink-1.19:compileJava :flink-connector:flink-1.19:compileTestJava :flink-connector:flink-1.20:compileTestJava :flink-connector:flink-common:spotlessJavaCheck :flink-connector:flink-1.19:spotlessJavaCheck :flink-connector:flink-1.20:spotlessJavaCheck -PskipITs` The runtime-jar tests verify that the version-specific SPI descriptors (`META-INF/services/org.apache.flink.table.factories.Factory`) are merged into the shaded uber-jar. The full Hive / Iceberg / JDBC / Paimon integration tests for both new minor versions will run in CI via the updated `.github/workflows/flink-integration-test-action.yml`. --------- Co-authored-by: fanng <“fanng@apache.org”>
…pache#11071) ### What changes were proposed in this pull request? This PR adds Gravitino Flink connector support for Flink 1.19 and Flink 1.20 on top of the versioned-layout baseline established for Flink 1.18 (apache#10517). Main changes: - Add `flink-connector/v1.19/flink` + `flink-connector/v1.19/flink-runtime` modules. - Add `flink-connector/v1.20/flink` + `flink-connector/v1.20/flink-runtime` modules. - Add version-specific catalog/factory entry classes (`*Flink119` / `*Flink120`) for Hive, Iceberg, JDBC-MySQL, JDBC-Postgres, and Paimon. - Reuse `DefaultCatalogCompat` for Flink 1.19 and add `CatalogCompatFlink120` that uses `CatalogTable.newBuilder(...)` because `CatalogTable.of(...)` is deprecated in Flink 1.20. - The JDBC catalog for 1.19 / 1.20 uses the relocated `org.apache.flink.connector.jdbc.core.*` factory packages shipped in `flink-connector-jdbc 3.3.0-1.19` / `3.3.0-1.20`. - Add provider-specific integration-test entry classes for each new minor version. - Add Flink 1.20-specific overrides for missing required catalog options where Flink 1.20 reports `IllegalArgumentException` rather than the `ValidationException` thrown by older minor versions. - Extend the Flink CI job to run embedded and deploy mode integration tests across 1.18, 1.19, and 1.20. - Exclude the new Flink modules from unrelated Backend IT and Trino CI jobs. No `flink-common` production changes are required; the 1.18 baseline already exposes the necessary extension hooks (`BaseCatalog#catalogCompat()`, the protected `GravitinoJdbcCatalog(Context, ..., AbstractCatalog)` constructor, etc.). The shared Iceberg REST SQL integration test now lives in the common abstract IT base so the 1.18 / 1.19 / 1.20 entry classes can remain thin stubs. This PR supersedes apache#11061 (closed) and the now-stale apache#10501. ### Why are the changes needed? The Flink 1.18 baseline (apache#10517) was intentionally limited to one minor and deferred 1.19 / 1.20 to follow-up work under parent issue apache#9710. This PR is that follow-up, so users can target the two currently-maintained Flink minor versions. Fix: apache#9710 ### Does this PR introduce _any_ user-facing change? Yes. Two new connector artifacts are produced: - `gravitino-flink-connector-runtime-1.19_2.12` - `gravitino-flink-connector-runtime-1.20_2.12` The user-facing SQL syntax is unchanged. ### How was this patch tested? Local validations (all green): - `./gradlew spotlessApply` - `./gradlew :flink-connector:flink-1.19:test -PskipITs` - `./gradlew :flink-connector:flink-1.20:test -PskipITs` - `./gradlew :flink-connector:flink-runtime-1.19:test` - `./gradlew :flink-connector:flink-runtime-1.20:test` - `./gradlew :flink-connector:flink-runtime-1.19:shadowJar :flink-connector:flink-runtime-1.20:shadowJar` - `./gradlew :spotlessKotlinGradleCheck :flink-connector:flink-1.20:test -PskipITs` - `./gradlew :flink-connector:flink-common:compileTestJava :flink-connector:flink-1.19:compileJava :flink-connector:flink-1.19:compileTestJava :flink-connector:flink-1.20:compileTestJava :flink-connector:flink-common:spotlessJavaCheck :flink-connector:flink-1.19:spotlessJavaCheck :flink-connector:flink-1.20:spotlessJavaCheck -PskipITs` The runtime-jar tests verify that the version-specific SPI descriptors (`META-INF/services/org.apache.flink.table.factories.Factory`) are merged into the shaded uber-jar. The full Hive / Iceberg / JDBC / Paimon integration tests for both new minor versions will run in CI via the updated `.github/workflows/flink-integration-test-action.yml`. --------- Co-authored-by: fanng <“fanng@apache.org”>
What changes were proposed in this pull request?
This PR adds Gravitino Flink connector support for Flink 1.19 and Flink 1.20
on top of the versioned-layout baseline established for Flink 1.18 (#10517).
Main changes:
flink-connector/v1.19/flink+flink-connector/v1.19/flink-runtimemodules.
flink-connector/v1.20/flink+flink-connector/v1.20/flink-runtimemodules.
*Flink119/*Flink120) for Hive, Iceberg, JDBC-MySQL, JDBC-Postgres, and Paimon.DefaultCatalogCompatfor Flink 1.19 and addCatalogCompatFlink120that uses
CatalogTable.newBuilder(...)becauseCatalogTable.of(...)isdeprecated in Flink 1.20.
org.apache.flink.connector.jdbc.core.*factory packages shipped inflink-connector-jdbc 3.3.0-1.19/3.3.0-1.20.version.
Flink 1.20 reports
IllegalArgumentExceptionrather than theValidationExceptionthrown by older minor versions.tests across 1.18, 1.19, and 1.20.
No
flink-commonproduction changes are required; the 1.18 baseline alreadyexposes the necessary extension hooks (
BaseCatalog#catalogCompat(), theprotected
GravitinoJdbcCatalog(Context, ..., AbstractCatalog)constructor,etc.). The shared Iceberg REST SQL integration test now lives in the common
abstract IT base so the 1.18 / 1.19 / 1.20 entry classes can remain thin stubs.
This PR supersedes #11061 (closed) and the now-stale #10501.
Why are the changes needed?
The Flink 1.18 baseline (#10517) was intentionally limited to one minor and
deferred 1.19 / 1.20 to follow-up work under parent issue #9710. This PR
is that follow-up, so users can target the two currently-maintained Flink
minor versions.
Fix: #9710
Does this PR introduce any user-facing change?
Yes. Two new connector artifacts are produced:
gravitino-flink-connector-runtime-1.19_2.12gravitino-flink-connector-runtime-1.20_2.12The user-facing SQL syntax is unchanged.
How was this patch tested?
Local validations (all green):
./gradlew spotlessApply./gradlew :flink-connector:flink-1.19:test -PskipITs./gradlew :flink-connector:flink-1.20:test -PskipITs./gradlew :flink-connector:flink-runtime-1.19:test./gradlew :flink-connector:flink-runtime-1.20:test./gradlew :flink-connector:flink-runtime-1.19:shadowJar :flink-connector:flink-runtime-1.20:shadowJar./gradlew :spotlessKotlinGradleCheck :flink-connector:flink-1.20:test -PskipITs./gradlew :flink-connector:flink-common:compileTestJava :flink-connector:flink-1.19:compileJava :flink-connector:flink-1.19:compileTestJava :flink-connector:flink-1.20:compileTestJava :flink-connector:flink-common:spotlessJavaCheck :flink-connector:flink-1.19:spotlessJavaCheck :flink-connector:flink-1.20:spotlessJavaCheck -PskipITsThe runtime-jar tests verify that the version-specific SPI descriptors
(
META-INF/services/org.apache.flink.table.factories.Factory) are mergedinto the shaded uber-jar.
The full Hive / Iceberg / JDBC / Paimon integration tests for both new
minor versions will run in CI via the updated
.github/workflows/flink-integration-test-action.yml.