From c484b4cf4dc42984325ea3ca653fe75f93abd805 Mon Sep 17 00:00:00 2001 From: Jules Date: Tue, 28 Oct 2025 21:59:39 +0100 Subject: [PATCH] Fix SQL memory leaks --- .../manager/data/sql/PlayerDataTableUpdater.java | 11 +++++------ .../mmocore/manager/data/sql/SQLDatabaseImpl.java | 5 ++--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/PlayerDataTableUpdater.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/PlayerDataTableUpdater.java index 51d6c3c9..d456707b 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/PlayerDataTableUpdater.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/PlayerDataTableUpdater.java @@ -9,8 +9,6 @@ import net.Indyuce.mmocore.manager.data.yaml.YAMLDatabaseImpl; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.sql.Connection; -import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.*; import java.util.logging.Level; @@ -32,13 +30,14 @@ public class PlayerDataTableUpdater { + ") VALUES('" + effectiveId + "'," + formatCollection(requestMap.values(), true) + ")" + " ON DUPLICATE KEY UPDATE " + formatMap() + ";"; - try (Connection connection = provider.getConnection()) { - final PreparedStatement statement = connection.prepareStatement(request); + try (var connection = provider.getConnection(); + var statement = connection.prepareStatement(request)) { statement.executeUpdate(); } catch (SQLException exception) { - MMOCore.log(Level.WARNING, "Could not save player data of " + effectiveId + ", saving through YAML instead"); - new YAMLDatabaseImpl().saveData(playerData, saveReason); + MMOCore.log(Level.WARNING, "Could not save player data of " + effectiveId + ", saving to YAML instead"); exception.printStackTrace(); + + new YAMLDatabaseImpl().saveData(playerData, saveReason); } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/SQLDatabaseImpl.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/SQLDatabaseImpl.java index af686973..346d7fe1 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/SQLDatabaseImpl.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/data/sql/SQLDatabaseImpl.java @@ -36,7 +36,7 @@ public class SQLDatabaseImpl extends SQLDatabase public static final String UUID_FIELD_NAME = "uuid"; public SQLDatabaseImpl() { - super(MMOCore.plugin, UUID_FIELD_NAME); + super(MMOCore.plugin, UUID_FIELD_NAME); } private static final String[] NEW_COLUMNS = new String[]{ @@ -53,8 +53,7 @@ public class SQLDatabaseImpl extends SQLDatabase "stellium", "FLOAT"}; @Override - public void setup() { - + protected void setupSQL() throws SQLException { // Fully create table executeUpdate("CREATE TABLE IF NOT EXISTS " + userdataTableName + "(" + UUID_FIELD_NAME + " VARCHAR(36)," +