[ https://issues.apache.org/jira/browse/FLINK-24626?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17454639#comment-17454639 ]
Alexander Fedulov commented on FLINK-24626: ------------------------------------------- [~Kenyore]Could you detail a sample SQL join query and which updates were performed on the tables that led to the erroneous behavior? > Flink JDBC Sink may lose data in left join > ------------------------------------------ > > Key: FLINK-24626 > URL: https://issues.apache.org/jira/browse/FLINK-24626 > Project: Flink > Issue Type: Bug > Components: Connectors / JDBC > Reporter: Kenyore > Priority: Major > Labels: correctness > > The JDBC sink will lose some data while using > TableBufferReducedStatementExecutor and left join. > Here are a snippet of executeBatch. > {code:java} > @Override > public void executeBatch() throws SQLException { > for (Map.Entry<RowData, Tuple2<Boolean, RowData>> entry : > reduceBuffer.entrySet()) { > if (entry.getValue().f0) { > upsertExecutor.addToBatch(entry.getValue().f1); > } else { > // delete by key > deleteExecutor.addToBatch(entry.getKey()); > } > } > upsertExecutor.executeBatch(); > deleteExecutor.executeBatch(); > reduceBuffer.clear(); > } > {code} > Left join will generate a DETETE row before upsert row and the executeBatch > will excute them in a wrong order.Whitch may causes data lose. -- This message was sent by Atlassian Jira (v8.20.1#820001)