enable long file paths on windows for the DB

This commit is contained in:
James Seibel
2025-12-02 07:07:17 -06:00
parent 3f287388d5
commit 4e9559f230
@@ -19,6 +19,7 @@
package com.seibel.distanthorizons.core.sql.repo;
import com.seibel.distanthorizons.core.jar.EPlatform;
import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.sql.DatabaseUpdater;
@@ -139,9 +140,18 @@ public abstract class AbstractDhRepo<TKey, TDTO extends IBaseDTO<TKey>> implemen
// connection setup //
//==================//
String filePath = this.databaseFile.getPath();
if (EPlatform.get() == EPlatform.WINDOWS)
{
// enable long file paths on windows to prevent edge cases where
// users' MC folder has a long file path (IE custom launchers)
// https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry
filePath = "\\\\?\\" + filePath;
}
// get or create the connection,
// reusing existing connections reduces the chance of locking the database during trivial queries
this.connectionString = this.databaseType+":"+this.databaseFile.getPath();
this.connectionString = this.databaseType+":"+filePath;
this.connection = CONNECTIONS_BY_CONNECTION_STRING.computeIfAbsent(this.connectionString, (connectionString) ->