This is an automated email from the ASF dual-hosted git repository.
MartijnVisser pushed a commit to branch v4.1
in repository https://gitbox.apache.org/repos/asf/flink-connector-jdbc.git
The following commit(s) were added to refs/heads/v4.1 by this push:
new 9bf59aca [FLINK-40725][tests] Fix sink/catalog ITCases for Flink 2.3.0
`ON CONFLICT` validation
9bf59aca is described below
commit 9bf59acaf74b06c8fbd7b75e6b5f5fc636785112
Author: Purushottam Sinha <[email protected]>
AuthorDate: Mon Sep 21 16:44:18 2026 +0530
[FLINK-40725][tests] Fix sink/catalog ITCases for Flink 2.3.0 `ON CONFLICT`
validation
(cherry picked from commit 95816699623472e27797cc8901b4cf8c414e6d99)
---
.github/workflows/push_pr.yml | 2 +-
.../jdbc/core/table/sink/JdbcDynamicTableSinkITCase.java | 10 +++++++++-
.../jdbc/mysql/database/catalog/MySqlCatalogTestBase.java | 12 ++++++++++--
.../database/catalog/OceanBaseMysqlCatalogITCase.java | 12 ++++++++++--
4 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/push_pr.yml b/.github/workflows/push_pr.yml
index 1f3a58ae..409b72a4 100644
--- a/.github/workflows/push_pr.yml
+++ b/.github/workflows/push_pr.yml
@@ -28,7 +28,7 @@ jobs:
compile_and_test:
strategy:
matrix:
- flink: [2.0.1, 2.1.1]
+ flink: [2.0.1, 2.1.1, 2.3.0]
jdk: [ '17' ]
uses: apache/flink-connector-shared-utils/.github/workflows/ci.yml@ci_utils
with:
diff --git
a/flink-connector-jdbc-core/src/test/java/org/apache/flink/connector/jdbc/core/table/sink/JdbcDynamicTableSinkITCase.java
b/flink-connector-jdbc-core/src/test/java/org/apache/flink/connector/jdbc/core/table/sink/JdbcDynamicTableSinkITCase.java
index 5a36f435..52ce50ae 100644
---
a/flink-connector-jdbc-core/src/test/java/org/apache/flink/connector/jdbc/core/table/sink/JdbcDynamicTableSinkITCase.java
+++
b/flink-connector-jdbc-core/src/test/java/org/apache/flink/connector/jdbc/core/table/sink/JdbcDynamicTableSinkITCase.java
@@ -18,6 +18,7 @@
package org.apache.flink.connector.jdbc.core.table.sink;
+import org.apache.flink.FlinkVersion;
import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.functions.DefaultOpenContext;
import org.apache.flink.api.common.typeinfo.TypeInformation;
@@ -362,15 +363,22 @@ public abstract class JdbcDynamicTableSinkITCase extends
AbstractTestBase implem
"'sink.buffer-flush.max-rows' = '2'",
"'sink.buffer-flush.interval' = '0'")));
+ String onConflict = isFlip558Enabled() ? " ON CONFLICT DO DEDUPLICATE"
: "";
tEnv.executeSql(
String.format(
- "INSERT INTO %s SELECT * FROM %s",
userTableSink, userTableLogs))
+ "INSERT INTO %s SELECT * FROM %s%s",
+ userTableSink, userTableLogs, onConflict))
.await();
assertThat(userOutputTable.selectAllTable(getMetadata()))
.containsExactlyInAnyOrderElementsOf(testUserData());
}
+ /** Whether the Flink version under test has the FLIP-558 ON CONFLICT
validation (>= 2.3). */
+ private static boolean isFlip558Enabled() {
+ return FlinkVersion.current().toString().compareTo("2.3") >= 0;
+ }
+
protected Map<String, String> getOptions() {
Map<String, String> options = new HashMap<>();
options.put("connector", "jdbc");
diff --git
a/flink-connector-jdbc-mysql/src/test/java/org/apache/flink/connector/jdbc/mysql/database/catalog/MySqlCatalogTestBase.java
b/flink-connector-jdbc-mysql/src/test/java/org/apache/flink/connector/jdbc/mysql/database/catalog/MySqlCatalogTestBase.java
index 07477811..c00e920d 100644
---
a/flink-connector-jdbc-mysql/src/test/java/org/apache/flink/connector/jdbc/mysql/database/catalog/MySqlCatalogTestBase.java
+++
b/flink-connector-jdbc-mysql/src/test/java/org/apache/flink/connector/jdbc/mysql/database/catalog/MySqlCatalogTestBase.java
@@ -18,6 +18,7 @@
package org.apache.flink.connector.jdbc.mysql.database.catalog;
+import org.apache.flink.FlinkVersion;
import org.apache.flink.connector.jdbc.testutils.DatabaseTest;
import org.apache.flink.connector.jdbc.testutils.JdbcITCaseBase;
import org.apache.flink.connector.jdbc.testutils.TableManaged;
@@ -513,12 +514,14 @@ abstract class MySqlCatalogTestBase implements
JdbcITCaseBase, DatabaseTest {
@Test
void testGroupByInsert() throws Exception {
// Changes primary key for the next record.
+ String onConflict = isFlip558Enabled() ? " ON CONFLICT DO DEDUPLICATE"
: "";
tEnv.executeSql(
String.format(
"insert into `%s` select max(`pid`) `pid`,
`col_bigint` from `%s` "
- + "group by `col_bigint` ",
+ + "group by `col_bigint` %s",
TABLE_GROUPED_BY_SINK.getTableName(),
- TABLE_ALL_TYPES.getTableName()))
+ TABLE_ALL_TYPES.getTableName(),
+ onConflict))
.await();
List<Row> results =
@@ -532,4 +535,9 @@ abstract class MySqlCatalogTestBase implements
JdbcITCaseBase, DatabaseTest {
assertThat(results)
.isEqualTo(Collections.singletonList(Row.ofKind(RowKind.INSERT, 2L, -1L)));
}
+
+ /** Whether the Flink version under test has the FLIP-558 ON CONFLICT
validation (>= 2.3). */
+ private static boolean isFlip558Enabled() {
+ return FlinkVersion.current().toString().compareTo("2.3") >= 0;
+ }
}
diff --git
a/flink-connector-jdbc-oceanbase/src/test/java/org/apache/flink/connector/jdbc/oceanbase/database/catalog/OceanBaseMysqlCatalogITCase.java
b/flink-connector-jdbc-oceanbase/src/test/java/org/apache/flink/connector/jdbc/oceanbase/database/catalog/OceanBaseMysqlCatalogITCase.java
index dec4733a..b3db7e89 100644
---
a/flink-connector-jdbc-oceanbase/src/test/java/org/apache/flink/connector/jdbc/oceanbase/database/catalog/OceanBaseMysqlCatalogITCase.java
+++
b/flink-connector-jdbc-oceanbase/src/test/java/org/apache/flink/connector/jdbc/oceanbase/database/catalog/OceanBaseMysqlCatalogITCase.java
@@ -18,6 +18,7 @@
package org.apache.flink.connector.jdbc.oceanbase.database.catalog;
+import org.apache.flink.FlinkVersion;
import org.apache.flink.connector.jdbc.oceanbase.OceanBaseMysqlTestBase;
import
org.apache.flink.connector.jdbc.oceanbase.database.dialect.OceanBaseCompatibleMode;
import org.apache.flink.connector.jdbc.testutils.TableManaged;
@@ -354,12 +355,14 @@ public class OceanBaseMysqlCatalogITCase extends
OceanBaseCatalogITCaseBase
@Test
void testGroupByInsert() throws Exception {
// Changes primary key for the next record.
+ String onConflict = isFlip558Enabled() ? " ON CONFLICT DO DEDUPLICATE"
: "";
tEnv.executeSql(
String.format(
"insert into `%s` select max(`pid`) `pid`,
`col_bigint` from `%s` "
- + "group by `col_bigint` ",
+ + "group by `col_bigint` %s",
TABLE_GROUPED_BY_SINK.getTableName(),
- TABLE_ALL_TYPES.getTableName()))
+ TABLE_ALL_TYPES.getTableName(),
+ onConflict))
.await();
List<Row> results =
@@ -373,4 +376,9 @@ public class OceanBaseMysqlCatalogITCase extends
OceanBaseCatalogITCaseBase
assertThat(results)
.isEqualTo(Collections.singletonList(Row.ofKind(RowKind.INSERT, 2L, -1L)));
}
+
+ /** Whether the Flink version under test has the FLIP-558 ON CONFLICT
validation (>= 2.3). */
+ private static boolean isFlip558Enabled() {
+ return FlinkVersion.current().toString().compareTo("2.3") >= 0;
+ }
}