From 2cd5cf956401975bce1bd7d3d165dc098c28a5fb Mon Sep 17 00:00:00 2001 From: Risto Lahtela <24460436+Rsl1122@users.noreply.github.com> Date: Wed, 3 Feb 2021 18:40:37 +0200 Subject: [PATCH] Fixed duplicate rows in query table Applied the previous fix from NetworkTablePlayersQuery to the same issue --- .../playertable/QueryTablePlayersQuery.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/queries/objects/playertable/QueryTablePlayersQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/queries/objects/playertable/QueryTablePlayersQuery.java index 8a099b7e0..18002c1a3 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/queries/objects/playertable/QueryTablePlayersQuery.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/queries/objects/playertable/QueryTablePlayersQuery.java @@ -96,18 +96,23 @@ public class QueryTablePlayersQuery implements Query> { uuidsInSet + GROUP_BY + "s." + SessionsTable.USER_UUID; + String selectBanned = SELECT + DISTINCT + "ub." + UserInfoTable.USER_UUID + + FROM + UserInfoTable.TABLE_NAME + " ub" + + WHERE + UserInfoTable.BANNED + "=?" + + AND + UserInfoTable.USER_UUID + uuidsInSet; + String selectBaseUsers = SELECT + "u." + UsersTable.USER_UUID + ',' + "u." + UsersTable.USER_NAME + ',' + "u." + UsersTable.REGISTERED + ',' + - UserInfoTable.BANNED + ',' + + "ban." + UserInfoTable.USER_UUID + " as banned," + "geoloc." + GeoInfoTable.GEOLOCATION + ',' + "ses.last_seen," + "ses.count," + "ses.active_playtime," + "act.activity_index" + FROM + UsersTable.TABLE_NAME + " u" + - INNER_JOIN + UserInfoTable.TABLE_NAME + " on u." + UsersTable.USER_UUID + "=" + UserInfoTable.TABLE_NAME + '.' + UserInfoTable.USER_UUID + + LEFT_JOIN + '(' + selectBanned + ") ban on ban." + UserInfoTable.USER_UUID + "=u." + UsersTable.USER_UUID + LEFT_JOIN + '(' + selectLatestGeolocations + ") geoloc on geoloc." + GeoInfoTable.USER_UUID + "=u." + UsersTable.USER_UUID + LEFT_JOIN + '(' + selectSessionData + ") ses on ses." + SessionsTable.USER_UUID + "=u." + UsersTable.USER_UUID + LEFT_JOIN + '(' + NetworkActivityIndexQueries.selectActivityIndexSQL() + ") act on u." + SessionsTable.USER_UUID + "=act." + UserInfoTable.USER_UUID + @@ -118,9 +123,10 @@ public class QueryTablePlayersQuery implements Query> { return db.query(new QueryStatement>(selectBaseUsers, 1000) { @Override public void prepare(PreparedStatement statement) throws SQLException { - statement.setLong(1, afterDate); - statement.setLong(2, beforeDate); - NetworkActivityIndexQueries.setSelectActivityIndexSQLParameters(statement, 3, activeMsThreshold, beforeDate); + statement.setBoolean(1, true); + statement.setLong(2, afterDate); + statement.setLong(3, beforeDate); + NetworkActivityIndexQueries.setSelectActivityIndexSQLParameters(statement, 4, activeMsThreshold, beforeDate); } @Override @@ -136,7 +142,7 @@ public class QueryTablePlayersQuery implements Query> { .sessionCount(set.getInt("count")) .activePlaytime(set.getLong("active_playtime")) .activityIndex(new ActivityIndex(set.getDouble("activity_index"), beforeDate)); - if (set.getBoolean(UserInfoTable.BANNED)) { + if (set.getString("banned") != null) { player.banned(); } players.add(player.build());