Allow forcing SQLite prefix when generating indexes
This commit is contained in:
parent
16b7d35fac
commit
e4db0e9c61
5 changed files with 37 additions and 42 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue