Skip to content

Commit 84d06ee

Browse files
andyphonepanyuepeng
authored andcommitted
[hotfix][JDBC] Fix db2 Db2Dialect error.
Removed the semicolon from the SQL query as it caused a syntax error . ( Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=;;columnA, SOURCE.columnB);END-OF-STATEMENT, DRIVER=4.26.14 )
1 parent cdb528b commit 84d06ee

2 files changed

Lines changed: 3 additions & 2 deletions

File tree

flink-connector-jdbc-db2/src/main/java/org/apache/flink/connector/jdbc/db2/database/dialect/Db2Dialect.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public Optional<String> getUpsertStatement(
111111
+ " WHEN MATCHED THEN"
112112
+ " UPDATE SET %s"
113113
+ " WHEN NOT MATCHED THEN"
114-
+ " INSERT (%s) VALUES (%s);",
114+
+ " INSERT (%s) VALUES (%s)",
115115
quoteIdentifier(tableName),
116116
valuesBinding,
117117
columnBinding,

flink-connector-jdbc-db2/src/test/java/org/apache/flink/connector/jdbc/db2/database/dialect/Db2PreparedStatementTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ void testUpsertStatement() {
7474
String upsertStmt = dialect.getUpsertStatement(tableName, fieldNames, keyFields).get();
7575
assertThat(upsertStmt)
7676
.isEqualTo(
77-
"MERGE INTO tbl AS TARGET USING TABLE (VALUES ( :id, :name, :email, :ts, :field1, :field_2, :__field_3__ )) AS SOURCE ( id, name, email, ts, field1, field_2, __field_3__ ) ON (TARGET.id= SOURCE.id AND TARGET.__field_3__= SOURCE.__field_3__) WHEN MATCHED THEN UPDATE SET TARGET.name= SOURCE.name, TARGET.email= SOURCE.email, TARGET.ts= SOURCE.ts, TARGET.field1= SOURCE.field1, TARGET.field_2= SOURCE.field_2 WHEN NOT MATCHED THEN INSERT (id, name, email, ts, field1, field_2, __field_3__) VALUES (SOURCE.id, SOURCE.name, SOURCE.email, SOURCE.ts, SOURCE.field1, SOURCE.field_2, SOURCE.__field_3__);");
77+
"MERGE INTO tbl AS TARGET USING TABLE (VALUES ( :id, :name, :email, :ts, :field1, :field_2, :__field_3__ )) AS SOURCE ( id, name, email, ts, field1, field_2, __field_3__ ) ON (TARGET.id= SOURCE.id AND TARGET.__field_3__= SOURCE.__field_3__) WHEN MATCHED THEN UPDATE SET TARGET.name= SOURCE.name, TARGET.email= SOURCE.email, TARGET.ts= SOURCE.ts, TARGET.field1= SOURCE.field1, TARGET.field_2= SOURCE.field_2 WHEN NOT MATCHED THEN INSERT (id, name, email, ts, field1, field_2, __field_3__) VALUES (SOURCE.id, SOURCE.name, SOURCE.email, SOURCE.ts, SOURCE.field1, SOURCE.field_2, SOURCE.__field_3__)")
78+
.doesNotEndWith(";");
7879
}
7980

8081
@Test

0 commit comments

Comments
 (0)