From c0fcb2fa25139f2ed37234dbbf4992a124af8d88 Mon Sep 17 00:00:00 2001 From: Arnost Starosta Date: Tue, 13 Nov 2018 15:40:05 +0100 Subject: [PATCH] Fixed deleting audit events from large audit database on postgresql --- .../com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) 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);