private void doDelete(SourceRecord record) throws SQLException {
        String sinkTableName = mappingSourceSinkTables.get(getSourceTableName(record).toLowerCase());
        String[] pks = getSourcePrimaryKeys(record);

        if (batchPS == null) {

            StringBuilder sqlCmd = new StringBuilder();
            sqlCmd.append("DELETE FROM " + sinkTableName + " WHERE ");
            for (int i = 0; i <= pks.length - 1; i++) {
                if (i > 0) sqlCmd.append(" AND ");
                sqlCmd.append(pks[i].toLowerCase()).append("=?");
            }

            LOG.info("Deleting record with " + sqlCmd);
            batchPS = this.getConnection().prepareStatement(String.valueOf(sqlCmd));
        }

        Struct value = ((Struct) record.value()).getStruct("before");
        for (int i = 0; i <= pks.length - 1; i++) {
            // TODO: If the PK is a date we may have an error?
            try {
                batchPS.setObject(i + 1, value.get(pks[i]));
            } catch (DataException e) {
                try {
                    batchPS.setObject(i + 1, value.get(pks[i].toLowerCase()));
                } catch (DataException ex) {
                    batchPS.setObject(i + 1, value.get(pks[i].toUpperCase()));
                }
            }
        }
        batchPS.addBatch();

    }
Constructs the SqlManager.

@param opts   the ReplicaDB ToolOptions describing the user's requested action.
@param dsType
src/main/java/org/replicadb/manager/cdc/OracleManagerCDC.java