Skip to content

Commit

Permalink
0004647: Postgres Conflict Resolution blocks when trying to resolve
Browse files Browse the repository at this point in the history
  • Loading branch information
erilong committed Nov 20, 2020
1 parent 99553ed commit efa3c33
Showing 1 changed file with 16 additions and 13 deletions.
Expand Up @@ -223,8 +223,8 @@ protected LoadStatus insert(CsvData data) {
if (count > 0) {
return LoadStatus.SUCCESS;
} else {
context.put(CUR_DATA,getCurData(getTransaction()));
context.setLastError(getInsertException2(data, values));
context.put(CUR_DATA, getCurData(getTransaction()));
context.setLastError(getInsertException(data, values));
return LoadStatus.CONFLICT;
}
} catch (SqlException ex) {
Expand All @@ -250,21 +250,24 @@ protected LoadStatus insert(CsvData data) {
}
}

private SqlException getInsertException2(CsvData data, String[] values) {
private SqlException getInsertException(CsvData data, String[] values) {
SqlException ret = null;
String sql = currentDmlStatement.getSql(false);
Object[] dmlValues = getPlatform().getObjectValues(batch.getBinaryEncoding(), values,
currentDmlStatement.getMetaData(), false, writerSettings.isFitToColumn());
try {
getPlatform().getSqlTemplate().update(sql, dmlValues);
} catch(SqlException ex) {
ret = ex;
if (getPlatform().getDatabaseInfo().isRequiresSavePointsInTransaction()) {
try {
getTransaction().execute("savepoint sym");
getTransaction().prepare(currentDmlStatement.getSql(false));
getTransaction().addRow(data, currentDmlValues, currentDmlStatement.getTypes());
} catch (SqlException ex) {
ret = ex;
getTransaction().execute("rollback to savepoint sym");
} finally {
getTransaction().execute("release savepoint sym");
}
}

return ret;
}
private boolean isUniqueIndexViolation(Throwable ex, Table targetTable) {

private boolean isUniqueIndexViolation(Throwable ex, Table targetTable) {
String violatedIndexName = getPlatform().getSqlTemplate().getUniqueKeyViolationIndexName(ex);
for (IIndex index : targetTable.getIndices()) {
if (index.isUnique() && (index.getName().equals(violatedIndexName))) {
Expand Down

0 comments on commit efa3c33

Please sign in to comment.