private void retryEntireBatch() throws SQLException, JsonProcessingException {
        // clear parameters to make sure the batch is always clean in the end.
        st.clearParameters();
        for (RowData rowData : batch) {
            try {
                converter.toExternal(rowData, st);
                st.addBatch();
                st.executeBatch();
                if (!multipleSink) {
                    sinkMetricData.invokeWithEstimate(rowData);
                } else {
                    metric[0] += 1;
                    metric[1] += CalculateObjectSizeUtils.getDataSize(rowData);
                }
            } catch (Exception e) {
                st.clearParameters();
                invokeDirty(rowData, e);
            }
        }
        batch.clear();
        st.clearParameters();
    }
A {@link JdbcBatchStatementExecutor} that simply adds the records into batches of {@link
java.sql.PreparedStatement} and doesn't buffer records in memory. Only used in Table/SQL API.
Supported executors:TableBufferedStatementExecutor, TableBufferReducedStatementExecutor, TableSimpleStatementExecutor
inlong-sort/sort-flink/sort-flink-v1.13/sort-connectors/jdbc/src/main/java/org/apache/inlong/sort/jdbc/internal/TableMetricStatementExecutor.java