Allow forcing SQLite prefix when generating indexes

This commit is contained in:
Intelli 2025-03-22 15:15:24 -06:00
parent 16b7d35fac
commit e4db0e9c61
5 changed files with 37 additions and 42 deletions

View file

@ -36,13 +36,8 @@ public class Bukkit_v1_21 extends Bukkit_v1_20 implements BukkitInterface {
* Updates container, interaction, and update state blocks with new 1.21 blocks. * Updates container, interaction, and update state blocks with new 1.21 blocks.
*/ */
private void initializeBlockGroups() { private void initializeBlockGroups() {
// Add the CRAFTER to CONTAINERS instead of replacing the entire set
addToBlockGroupIfMissing(Material.CRAFTER, BlockGroup.CONTAINERS); addToBlockGroupIfMissing(Material.CRAFTER, BlockGroup.CONTAINERS);
// Add the CRAFTER to INTERACT_BLOCKS instead of replacing the entire set
addToBlockGroupIfMissing(Material.CRAFTER, BlockGroup.INTERACT_BLOCKS); addToBlockGroupIfMissing(Material.CRAFTER, BlockGroup.INTERACT_BLOCKS);
// Add the CRAFTER to UPDATE_STATE instead of replacing the entire set
addToBlockGroupIfMissing(Material.CRAFTER, BlockGroup.UPDATE_STATE); addToBlockGroupIfMissing(Material.CRAFTER, BlockGroup.UPDATE_STATE);
} }

View file

@ -257,7 +257,7 @@ public class PurgeCommand extends Consumer {
} }
} }
Database.createDatabaseTables(purgePrefix, null, Config.getGlobal().MYSQL, true); Database.createDatabaseTables(purgePrefix, false, null, Config.getGlobal().MYSQL, true);
} }
List<String> purgeTables = Arrays.asList("sign", "container", "item", "skull", "session", "chat", "command", "entity", "block"); List<String> purgeTables = Arrays.asList("sign", "container", "item", "skull", "session", "chat", "command", "entity", "block");

View file

@ -265,7 +265,7 @@ public class ConfigHandler extends Queue {
ConfigHandler.hikariDataSource = new HikariDataSource(config); ConfigHandler.hikariDataSource = new HikariDataSource(config);
} }
Database.createDatabaseTables(ConfigHandler.prefix, null, Config.getGlobal().MYSQL, false); Database.createDatabaseTables(ConfigHandler.prefix, false, null, Config.getGlobal().MYSQL, false);
} }
public static void loadTypes(Statement statement) { public static void loadTypes(Statement statement) {

View file

@ -308,7 +308,7 @@ public class Database extends Queue {
private static final List<String> DATABASE_TABLES = Arrays.asList("art_map", "block", "chat", "command", "container", "item", "database_lock", "entity", "entity_map", "material_map", "blockdata_map", "session", "sign", "skull", "user", "username_log", "version", "world"); private static final List<String> DATABASE_TABLES = Arrays.asList("art_map", "block", "chat", "command", "container", "item", "database_lock", "entity", "entity_map", "material_map", "blockdata_map", "session", "sign", "skull", "user", "username_log", "version", "world");
public static void createDatabaseTables(String prefix, Connection forceConnection, boolean mySQL, boolean purge) { public static void createDatabaseTables(String prefix, boolean forcePrefix, Connection forceConnection, boolean mySQL, boolean purge) {
ConfigHandler.databaseTables.clear(); ConfigHandler.databaseTables.clear();
ConfigHandler.databaseTables.addAll(DATABASE_TABLES); ConfigHandler.databaseTables.addAll(DATABASE_TABLES);
@ -316,7 +316,7 @@ public class Database extends Queue {
createMySQLTables(prefix, forceConnection, purge); createMySQLTables(prefix, forceConnection, purge);
} }
else { else {
createSQLiteTables(prefix, forceConnection, purge); createSQLiteTables(prefix, forcePrefix, forceConnection, purge);
} }
} }
@ -413,7 +413,7 @@ public class Database extends Queue {
statement.executeUpdate("CREATE TABLE IF NOT EXISTS " + prefix + "world(rowid int NOT NULL AUTO_INCREMENT,PRIMARY KEY(rowid),id int,world varchar(255)" + index + ") ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4"); statement.executeUpdate("CREATE TABLE IF NOT EXISTS " + prefix + "world(rowid int NOT NULL AUTO_INCREMENT,PRIMARY KEY(rowid),id int,world varchar(255)" + index + ") ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4");
} }
private static void createSQLiteTables(String prefix, Connection forceConnection, boolean purge) { private static void createSQLiteTables(String prefix, boolean forcePrefix, Connection forceConnection, boolean purge) {
try (Connection connection = (forceConnection != null ? forceConnection : Database.getConnection(true, 0))) { try (Connection connection = (forceConnection != null ? forceConnection : Database.getConnection(true, 0))) {
Statement statement = connection.createStatement(); Statement statement = connection.createStatement();
List<String> tableData = new ArrayList<>(); List<String> tableData = new ArrayList<>();
@ -430,7 +430,7 @@ public class Database extends Queue {
identifyExistingTablesAndIndexes(statement, attachDatabase, tableData, indexData); identifyExistingTablesAndIndexes(statement, attachDatabase, tableData, indexData);
createSQLiteTableStructures(prefix, statement, tableData); createSQLiteTableStructures(prefix, statement, tableData);
createSQLiteIndexes(prefix, statement, indexData, attachDatabase, purge); createSQLiteIndexes(forcePrefix == true ? prefix : ConfigHandler.prefix, statement, indexData, attachDatabase, purge);
if (!purge && forceConnection == null) { if (!purge && forceConnection == null) {
initializeTables(prefix, statement); initializeTables(prefix, statement);
@ -516,36 +516,36 @@ public class Database extends Queue {
private static void createSQLiteIndexes(String prefix, Statement statement, List<String> indexData, String attachDatabase, boolean purge) { private static void createSQLiteIndexes(String prefix, Statement statement, List<String> indexData, String attachDatabase, boolean purge) {
try { try {
createSQLiteIndex(statement, indexData, attachDatabase, "art_map_id_index", ConfigHandler.prefix + "art_map(id)"); createSQLiteIndex(statement, indexData, attachDatabase, "art_map_id_index", prefix + "art_map(id)");
createSQLiteIndex(statement, indexData, attachDatabase, "block_index", ConfigHandler.prefix + "block(wid,x,z,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "block_index", prefix + "block(wid,x,z,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "block_user_index", ConfigHandler.prefix + "block(user,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "block_user_index", prefix + "block(user,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "block_type_index", ConfigHandler.prefix + "block(type,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "block_type_index", prefix + "block(type,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "blockdata_map_id_index", ConfigHandler.prefix + "blockdata_map(id)"); createSQLiteIndex(statement, indexData, attachDatabase, "blockdata_map_id_index", prefix + "blockdata_map(id)");
createSQLiteIndex(statement, indexData, attachDatabase, "chat_index", ConfigHandler.prefix + "chat(time)"); createSQLiteIndex(statement, indexData, attachDatabase, "chat_index", prefix + "chat(time)");
createSQLiteIndex(statement, indexData, attachDatabase, "chat_user_index", ConfigHandler.prefix + "chat(user,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "chat_user_index", prefix + "chat(user,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "chat_wid_index", ConfigHandler.prefix + "chat(wid,x,z,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "chat_wid_index", prefix + "chat(wid,x,z,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "command_index", ConfigHandler.prefix + "command(time)"); createSQLiteIndex(statement, indexData, attachDatabase, "command_index", prefix + "command(time)");
createSQLiteIndex(statement, indexData, attachDatabase, "command_user_index", ConfigHandler.prefix + "command(user,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "command_user_index", prefix + "command(user,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "command_wid_index", ConfigHandler.prefix + "command(wid,x,z,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "command_wid_index", prefix + "command(wid,x,z,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "container_index", ConfigHandler.prefix + "container(wid,x,z,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "container_index", prefix + "container(wid,x,z,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "container_user_index", ConfigHandler.prefix + "container(user,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "container_user_index", prefix + "container(user,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "container_type_index", ConfigHandler.prefix + "container(type,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "container_type_index", prefix + "container(type,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "item_index", ConfigHandler.prefix + "item(wid,x,z,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "item_index", prefix + "item(wid,x,z,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "item_user_index", ConfigHandler.prefix + "item(user,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "item_user_index", prefix + "item(user,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "item_type_index", ConfigHandler.prefix + "item(type,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "item_type_index", prefix + "item(type,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "entity_map_id_index", ConfigHandler.prefix + "entity_map(id)"); createSQLiteIndex(statement, indexData, attachDatabase, "entity_map_id_index", prefix + "entity_map(id)");
createSQLiteIndex(statement, indexData, attachDatabase, "material_map_id_index", ConfigHandler.prefix + "material_map(id)"); createSQLiteIndex(statement, indexData, attachDatabase, "material_map_id_index", prefix + "material_map(id)");
createSQLiteIndex(statement, indexData, attachDatabase, "session_index", ConfigHandler.prefix + "session(wid,x,z,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "session_index", prefix + "session(wid,x,z,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "session_action_index", ConfigHandler.prefix + "session(action,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "session_action_index", prefix + "session(action,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "session_user_index", ConfigHandler.prefix + "session(user,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "session_user_index", prefix + "session(user,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "session_time_index", ConfigHandler.prefix + "session(time)"); createSQLiteIndex(statement, indexData, attachDatabase, "session_time_index", prefix + "session(time)");
createSQLiteIndex(statement, indexData, attachDatabase, "sign_index", ConfigHandler.prefix + "sign(wid,x,z,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "sign_index", prefix + "sign(wid,x,z,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "sign_user_index", ConfigHandler.prefix + "sign(user,time)"); createSQLiteIndex(statement, indexData, attachDatabase, "sign_user_index", prefix + "sign(user,time)");
createSQLiteIndex(statement, indexData, attachDatabase, "sign_time_index", ConfigHandler.prefix + "sign(time)"); createSQLiteIndex(statement, indexData, attachDatabase, "sign_time_index", prefix + "sign(time)");
createSQLiteIndex(statement, indexData, attachDatabase, "user_index", ConfigHandler.prefix + "user(user)"); createSQLiteIndex(statement, indexData, attachDatabase, "user_index", prefix + "user(user)");
createSQLiteIndex(statement, indexData, attachDatabase, "uuid_index", ConfigHandler.prefix + "user(uuid)"); createSQLiteIndex(statement, indexData, attachDatabase, "uuid_index", prefix + "user(uuid)");
createSQLiteIndex(statement, indexData, attachDatabase, "username_log_uuid_index", ConfigHandler.prefix + "username_log(uuid,user)"); createSQLiteIndex(statement, indexData, attachDatabase, "username_log_uuid_index", prefix + "username_log(uuid,user)");
createSQLiteIndex(statement, indexData, attachDatabase, "world_id_index", ConfigHandler.prefix + "world(id)"); createSQLiteIndex(statement, indexData, attachDatabase, "world_id_index", prefix + "world(id)");
} }
catch (Exception e) { catch (Exception e) {
Chat.console(Phrase.build(Phrase.DATABASE_INDEX_ERROR)); Chat.console(Phrase.build(Phrase.DATABASE_INDEX_ERROR));

View file

@ -10,7 +10,7 @@ public class Extensions {
public static void runDatabaseMigration(String command, CommandSender user, String[] argumentArray) { public static void runDatabaseMigration(String command, CommandSender user, String[] argumentArray) {
try { try {
Class<?> patchClass = Class.forName("net.coreprotect.extensions.DatabaseMigration"); Class<?> patchClass = Class.forName("net.coreprotect.utility.extensions.DatabaseMigration");
Method patchMethod = patchClass.getDeclaredMethod("runCommand", CommandSender.class, String[].class); Method patchMethod = patchClass.getDeclaredMethod("runCommand", CommandSender.class, String[].class);
patchMethod.invoke(null, user, argumentArray); patchMethod.invoke(null, user, argumentArray);
} }