diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java index a21c06c032a..3907291c21e 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java @@ -651,6 +651,8 @@ private void createTemporaryTable(Session session, final Dialect dialect, final private String createDeleteQuery(String objectTable, String tempTable, String idColumnName) { if (getConfiguration().isUsingMySqlCompatible()) { return createDeleteQueryAsJoin(objectTable, tempTable, idColumnName); + } else if (getConfiguration().isUsingPostgreSQL()) { + return createDeleteQueryAsJoinPostgreSQL(objectTable, tempTable, idColumnName); } else { // todo consider using join for other databases as well return createDeleteQueryAsSubquery(objectTable, tempTable, idColumnName); @@ -662,6 +664,10 @@ private String createDeleteQueryAsJoin(String objectTable, String tempTable, Str + "WHERE main." + idColumnName + " = temp.id"; } + private String createDeleteQueryAsJoinPostgreSQL(String objectTable, String tempTable, String idColumnName) { + return "delete from " + objectTable + " main using " + tempTable + " temp where main." + idColumnName + " = temp.id"; + } + private String createDeleteQueryAsSubquery(String objectTable, String tempTable, String idColumnName) { StringBuilder sb = new StringBuilder(); sb.append("delete from ").append(objectTable);