aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.cpp798
-rw-r--r--src/server/database/Database/Implementation/HotfixDatabase.h252
-rw-r--r--src/server/shared/DataStores/DB2DatabaseLoader.cpp10
3 files changed, 768 insertions, 292 deletions
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp
index fbc14556cf5..ada118d4830 100644
--- a/src/server/database/Database/Implementation/HotfixDatabase.cpp
+++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp
@@ -21,9 +21,14 @@
#include "HotfixDatabase.h"
#include "MySQLPreparedStatement.h"
-// Force locale statments to appear exactly in locale declaration order, right after normal data fetch statement
+// Force max id statements to appear exactly right after normal data fetch statement
+#define PREPARE_MAX_ID_STMT(stmtBase, sql, con) \
+ static_assert(stmtBase + 1 == stmtBase##_MAX_ID, "Invalid prepared statement index for " #stmtBase "_MAX_ID"); \
+ PrepareStatement(stmtBase##_MAX_ID, sql, con);
+
+// Force locale statements to be right after max id fetch statement
#define PREPARE_LOCALE_STMT(stmtBase, sql, con) \
- static_assert(stmtBase + 1 == stmtBase##_LOCALE, "Invalid prepared statement index for " #stmtBase "_LOCALE"); \
+ static_assert(stmtBase + 2 == stmtBase##_LOCALE, "Invalid prepared statement index for " #stmtBase "_LOCALE"); \
PrepareStatement(stmtBase##_LOCALE, sql, con);
void HotfixDatabaseConnection::DoPrepareStatements()
@@ -33,206 +38,248 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// Achievement.db2
PrepareStatement(HOTFIX_SEL_ACHIEVEMENT, "SELECT Description, Title, Reward, ID, InstanceID, Faction, Supercedes, Category, MinimumCriteria, "
- "Points, Flags, UiOrder, IconFileID, RewardItemID, CriteriaTree, SharesCriteria FROM achievement ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Points, Flags, UiOrder, IconFileID, RewardItemID, CriteriaTree, SharesCriteria FROM achievement", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT MAX(ID) + 1 FROM achievement", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT ID, Description_lang, Title_lang, Reward_lang FROM achievement_locale WHERE locale = ?", CONNECTION_SYNCH);
// AnimationData.db2
- PrepareStatement(HOTFIX_SEL_ANIMATION_DATA, "SELECT ID, BehaviorID, BehaviorTier, Fallback, Flags1, Flags2 FROM animation_data ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ANIMATION_DATA, "SELECT ID, BehaviorID, BehaviorTier, Fallback, Flags1, Flags2 FROM animation_data", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ANIMATION_DATA, "SELECT MAX(ID) + 1 FROM animation_data", CONNECTION_SYNCH);
// AnimKit.db2
- PrepareStatement(HOTFIX_SEL_ANIM_KIT, "SELECT ID, OneShotDuration, OneShotStopAnimKitID, LowDefAnimKitID FROM anim_kit ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ANIM_KIT, "SELECT ID, OneShotDuration, OneShotStopAnimKitID, LowDefAnimKitID FROM anim_kit", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ANIM_KIT, "SELECT MAX(ID) + 1 FROM anim_kit", CONNECTION_SYNCH);
// AreaGroupMember.db2
- PrepareStatement(HOTFIX_SEL_AREA_GROUP_MEMBER, "SELECT ID, AreaID, AreaGroupID FROM area_group_member ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_AREA_GROUP_MEMBER, "SELECT ID, AreaID, AreaGroupID FROM area_group_member", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AREA_GROUP_MEMBER, "SELECT MAX(ID) + 1 FROM area_group_member", CONNECTION_SYNCH);
// AreaTable.db2
PrepareStatement(HOTFIX_SEL_AREA_TABLE, "SELECT ID, ZoneName, AreaName, ContinentID, ParentAreaID, AreaBit, SoundProviderPref, "
"SoundProviderPrefUnderwater, AmbienceID, UwAmbience, ZoneMusic, UwZoneMusic, ExplorationLevel, IntroSound, UwIntroSound, FactionGroupMask, "
"AmbientMultiplier, MountFlags, PvpCombatWorldStateID, WildBattlePetLevelMin, WildBattlePetLevelMax, WindSettingsID, Flags1, Flags2, "
- "LiquidTypeID1, LiquidTypeID2, LiquidTypeID3, LiquidTypeID4 FROM area_table ORDER BY ID DESC", CONNECTION_SYNCH);
+ "LiquidTypeID1, LiquidTypeID2, LiquidTypeID3, LiquidTypeID4 FROM area_table", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AREA_TABLE, "SELECT MAX(ID) + 1 FROM area_table", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_AREA_TABLE, "SELECT ID, AreaName_lang FROM area_table_locale WHERE locale = ?", CONNECTION_SYNCH);
// AreaTrigger.db2
PrepareStatement(HOTFIX_SEL_AREA_TRIGGER, "SELECT PosX, PosY, PosZ, ID, ContinentID, PhaseUseFlags, PhaseID, PhaseGroupID, Radius, BoxLength, "
- "BoxWidth, BoxHeight, BoxYaw, ShapeType, ShapeID, AreaTriggerActionSetID, Flags FROM area_trigger ORDER BY ID DESC", CONNECTION_SYNCH);
+ "BoxWidth, BoxHeight, BoxYaw, ShapeType, ShapeID, AreaTriggerActionSetID, Flags FROM area_trigger", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AREA_TRIGGER, "SELECT MAX(ID) + 1 FROM area_trigger", CONNECTION_SYNCH);
// ArmorLocation.db2
- PrepareStatement(HOTFIX_SEL_ARMOR_LOCATION, "SELECT ID, Clothmodifier, Leathermodifier, Chainmodifier, Platemodifier, Modifier FROM armor_location"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ARMOR_LOCATION, "SELECT ID, Clothmodifier, Leathermodifier, Chainmodifier, Platemodifier, Modifier FROM armor_location", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARMOR_LOCATION, "SELECT MAX(ID) + 1 FROM armor_location", CONNECTION_SYNCH);
// Artifact.db2
PrepareStatement(HOTFIX_SEL_ARTIFACT, "SELECT Name, ID, UiTextureKitID, UiNameColor, UiBarOverlayColor, UiBarBackgroundColor, "
- "ChrSpecializationID, Flags, ArtifactCategoryID, UiModelSceneID, SpellVisualKitID FROM artifact ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ChrSpecializationID, Flags, ArtifactCategoryID, UiModelSceneID, SpellVisualKitID FROM artifact", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT, "SELECT MAX(ID) + 1 FROM artifact", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ARTIFACT, "SELECT ID, Name_lang FROM artifact_locale WHERE locale = ?", CONNECTION_SYNCH);
// ArtifactAppearance.db2
PrepareStatement(HOTFIX_SEL_ARTIFACT_APPEARANCE, "SELECT Name, ID, ArtifactAppearanceSetID, DisplayIndex, UnlockPlayerConditionID, "
"ItemAppearanceModifierID, UiSwatchColor, UiModelSaturation, UiModelOpacity, OverrideShapeshiftFormID, OverrideShapeshiftDisplayID, "
- "UiItemAppearanceID, UiAltItemAppearanceID, Flags, UiCameraID, UsablePlayerConditionID FROM artifact_appearance ORDER BY ID DESC", CONNECTION_SYNCH);
+ "UiItemAppearanceID, UiAltItemAppearanceID, Flags, UiCameraID, UsablePlayerConditionID FROM artifact_appearance", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT_APPEARANCE, "SELECT MAX(ID) + 1 FROM artifact_appearance", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ARTIFACT_APPEARANCE, "SELECT ID, Name_lang FROM artifact_appearance_locale WHERE locale = ?", CONNECTION_SYNCH);
// ArtifactAppearanceSet.db2
PrepareStatement(HOTFIX_SEL_ARTIFACT_APPEARANCE_SET, "SELECT Name, Description, ID, DisplayIndex, UiCameraID, AltHandUICameraID, "
- "ForgeAttachmentOverride, Flags, ArtifactID FROM artifact_appearance_set ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ForgeAttachmentOverride, Flags, ArtifactID FROM artifact_appearance_set", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT_APPEARANCE_SET, "SELECT MAX(ID) + 1 FROM artifact_appearance_set", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ARTIFACT_APPEARANCE_SET, "SELECT ID, Name_lang, Description_lang FROM artifact_appearance_set_locale"
" WHERE locale = ?", CONNECTION_SYNCH);
// ArtifactCategory.db2
- PrepareStatement(HOTFIX_SEL_ARTIFACT_CATEGORY, "SELECT ID, XpMultCurrencyID, XpMultCurveID FROM artifact_category ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ARTIFACT_CATEGORY, "SELECT ID, XpMultCurrencyID, XpMultCurveID FROM artifact_category", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT_CATEGORY, "SELECT MAX(ID) + 1 FROM artifact_category", CONNECTION_SYNCH);
// ArtifactPower.db2
PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER, "SELECT DisplayPosX, DisplayPosY, ID, ArtifactID, MaxPurchasableRank, Label, Flags, Tier"
- " FROM artifact_power ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM artifact_power", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT_POWER, "SELECT MAX(ID) + 1 FROM artifact_power", CONNECTION_SYNCH);
// ArtifactPowerLink.db2
- PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER_LINK, "SELECT ID, PowerA, PowerB FROM artifact_power_link ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER_LINK, "SELECT ID, PowerA, PowerB FROM artifact_power_link", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT_POWER_LINK, "SELECT MAX(ID) + 1 FROM artifact_power_link", CONNECTION_SYNCH);
// ArtifactPowerPicker.db2
- PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER_PICKER, "SELECT ID, PlayerConditionID FROM artifact_power_picker ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER_PICKER, "SELECT ID, PlayerConditionID FROM artifact_power_picker", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT_POWER_PICKER, "SELECT MAX(ID) + 1 FROM artifact_power_picker", CONNECTION_SYNCH);
// ArtifactPowerRank.db2
PrepareStatement(HOTFIX_SEL_ARTIFACT_POWER_RANK, "SELECT ID, RankIndex, SpellID, ItemBonusListID, AuraPointsOverride, ArtifactPowerID"
- " FROM artifact_power_rank ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM artifact_power_rank", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT_POWER_RANK, "SELECT MAX(ID) + 1 FROM artifact_power_rank", CONNECTION_SYNCH);
// ArtifactQuestXp.db2
PrepareStatement(HOTFIX_SEL_ARTIFACT_QUEST_XP, "SELECT ID, Difficulty1, Difficulty2, Difficulty3, Difficulty4, Difficulty5, Difficulty6, "
- "Difficulty7, Difficulty8, Difficulty9, Difficulty10 FROM artifact_quest_xp ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Difficulty7, Difficulty8, Difficulty9, Difficulty10 FROM artifact_quest_xp", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT_QUEST_XP, "SELECT MAX(ID) + 1 FROM artifact_quest_xp", CONNECTION_SYNCH);
// ArtifactTier.db2
PrepareStatement(HOTFIX_SEL_ARTIFACT_TIER, "SELECT ID, ArtifactTier, MaxNumTraits, MaxArtifactKnowledge, KnowledgePlayerCondition, "
- "MinimumEmpowerKnowledge FROM artifact_tier ORDER BY ID DESC", CONNECTION_SYNCH);
+ "MinimumEmpowerKnowledge FROM artifact_tier", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT_TIER, "SELECT MAX(ID) + 1 FROM artifact_tier", CONNECTION_SYNCH);
// ArtifactUnlock.db2
- PrepareStatement(HOTFIX_SEL_ARTIFACT_UNLOCK, "SELECT ID, PowerID, PowerRank, ItemBonusListID, PlayerConditionID, ArtifactID FROM artifact_unlock"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ARTIFACT_UNLOCK, "SELECT ID, PowerID, PowerRank, ItemBonusListID, PlayerConditionID, ArtifactID FROM artifact_unlock", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ARTIFACT_UNLOCK, "SELECT MAX(ID) + 1 FROM artifact_unlock", CONNECTION_SYNCH);
// AuctionHouse.db2
- PrepareStatement(HOTFIX_SEL_AUCTION_HOUSE, "SELECT ID, Name, FactionID, DepositRate, ConsignmentRate FROM auction_house ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_AUCTION_HOUSE, "SELECT ID, Name, FactionID, DepositRate, ConsignmentRate FROM auction_house", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AUCTION_HOUSE, "SELECT MAX(ID) + 1 FROM auction_house", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_AUCTION_HOUSE, "SELECT ID, Name_lang FROM auction_house_locale WHERE locale = ?", CONNECTION_SYNCH);
// AzeriteEmpoweredItem.db2
- PrepareStatement(HOTFIX_SEL_AZERITE_EMPOWERED_ITEM, "SELECT ID, ItemID, AzeriteTierUnlockSetID, AzeritePowerSetID FROM azerite_empowered_item"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_AZERITE_EMPOWERED_ITEM, "SELECT ID, ItemID, AzeriteTierUnlockSetID, AzeritePowerSetID FROM azerite_empowered_item", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_EMPOWERED_ITEM, "SELECT MAX(ID) + 1 FROM azerite_empowered_item", CONNECTION_SYNCH);
// AzeriteEssence.db2
- PrepareStatement(HOTFIX_SEL_AZERITE_ESSENCE, "SELECT Name, Description, ID, SpecSetID FROM azerite_essence ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_AZERITE_ESSENCE, "SELECT Name, Description, ID, SpecSetID FROM azerite_essence", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_ESSENCE, "SELECT MAX(ID) + 1 FROM azerite_essence", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_AZERITE_ESSENCE, "SELECT ID, Name_lang, Description_lang FROM azerite_essence_locale WHERE locale = ?", CONNECTION_SYNCH);
// AzeriteEssencePower.db2
PrepareStatement(HOTFIX_SEL_AZERITE_ESSENCE_POWER, "SELECT ID, SourceAlliance, SourceHorde, AzeriteEssenceID, Tier, MajorPowerDescription, "
- "MinorPowerDescription, MajorPowerActual, MinorPowerActual FROM azerite_essence_power ORDER BY ID DESC", CONNECTION_SYNCH);
+ "MinorPowerDescription, MajorPowerActual, MinorPowerActual FROM azerite_essence_power", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_ESSENCE_POWER, "SELECT MAX(ID) + 1 FROM azerite_essence_power", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_AZERITE_ESSENCE_POWER, "SELECT ID, SourceAlliance_lang, SourceHorde_lang FROM azerite_essence_power_locale"
" WHERE locale = ?", CONNECTION_SYNCH);
// AzeriteItem.db2
- PrepareStatement(HOTFIX_SEL_AZERITE_ITEM, "SELECT ID, ItemID FROM azerite_item ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_AZERITE_ITEM, "SELECT ID, ItemID FROM azerite_item", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_ITEM, "SELECT MAX(ID) + 1 FROM azerite_item", CONNECTION_SYNCH);
// AzeriteItemMilestonePower.db2
PrepareStatement(HOTFIX_SEL_AZERITE_ITEM_MILESTONE_POWER, "SELECT ID, RequiredLevel, AzeritePowerID, Type, AutoUnlock"
- " FROM azerite_item_milestone_power ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM azerite_item_milestone_power", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_ITEM_MILESTONE_POWER, "SELECT MAX(ID) + 1 FROM azerite_item_milestone_power", CONNECTION_SYNCH);
// AzeriteKnowledgeMultiplier.db2
- PrepareStatement(HOTFIX_SEL_AZERITE_KNOWLEDGE_MULTIPLIER, "SELECT ID, Multiplier FROM azerite_knowledge_multiplier ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_AZERITE_KNOWLEDGE_MULTIPLIER, "SELECT ID, Multiplier FROM azerite_knowledge_multiplier", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_KNOWLEDGE_MULTIPLIER, "SELECT MAX(ID) + 1 FROM azerite_knowledge_multiplier", CONNECTION_SYNCH);
// AzeriteLevelInfo.db2
PrepareStatement(HOTFIX_SEL_AZERITE_LEVEL_INFO, "SELECT ID, BaseExperienceToNextLevel, MinimumExperienceToNextLevel, ItemLevel"
- " FROM azerite_level_info ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM azerite_level_info", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_LEVEL_INFO, "SELECT MAX(ID) + 1 FROM azerite_level_info", CONNECTION_SYNCH);
// AzeritePower.db2
- PrepareStatement(HOTFIX_SEL_AZERITE_POWER, "SELECT ID, SpellID, ItemBonusListID, SpecSetID, Flags FROM azerite_power ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_AZERITE_POWER, "SELECT ID, SpellID, ItemBonusListID, SpecSetID, Flags FROM azerite_power", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_POWER, "SELECT MAX(ID) + 1 FROM azerite_power", CONNECTION_SYNCH);
// AzeritePowerSetMember.db2
PrepareStatement(HOTFIX_SEL_AZERITE_POWER_SET_MEMBER, "SELECT ID, AzeritePowerSetID, AzeritePowerID, Class, Tier, OrderIndex"
- " FROM azerite_power_set_member ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM azerite_power_set_member", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_POWER_SET_MEMBER, "SELECT MAX(ID) + 1 FROM azerite_power_set_member", CONNECTION_SYNCH);
// AzeriteTierUnlock.db2
PrepareStatement(HOTFIX_SEL_AZERITE_TIER_UNLOCK, "SELECT ID, ItemCreationContext, Tier, AzeriteLevel, AzeriteTierUnlockSetID"
- " FROM azerite_tier_unlock ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM azerite_tier_unlock", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_TIER_UNLOCK, "SELECT MAX(ID) + 1 FROM azerite_tier_unlock", CONNECTION_SYNCH);
// AzeriteTierUnlockSet.db2
- PrepareStatement(HOTFIX_SEL_AZERITE_TIER_UNLOCK_SET, "SELECT ID, Flags FROM azerite_tier_unlock_set ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_AZERITE_TIER_UNLOCK_SET, "SELECT ID, Flags FROM azerite_tier_unlock_set", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_TIER_UNLOCK_SET, "SELECT MAX(ID) + 1 FROM azerite_tier_unlock_set", CONNECTION_SYNCH);
// AzeriteUnlockMapping.db2
PrepareStatement(HOTFIX_SEL_AZERITE_UNLOCK_MAPPING, "SELECT ID, ItemLevel, ItemBonusListHead, ItemBonusListShoulders, ItemBonusListChest, "
- "AzeriteUnlockMappingSetID FROM azerite_unlock_mapping ORDER BY ID DESC", CONNECTION_SYNCH);
+ "AzeriteUnlockMappingSetID FROM azerite_unlock_mapping", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_AZERITE_UNLOCK_MAPPING, "SELECT MAX(ID) + 1 FROM azerite_unlock_mapping", CONNECTION_SYNCH);
// BankBagSlotPrices.db2
- PrepareStatement(HOTFIX_SEL_BANK_BAG_SLOT_PRICES, "SELECT ID, Cost FROM bank_bag_slot_prices ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_BANK_BAG_SLOT_PRICES, "SELECT ID, Cost FROM bank_bag_slot_prices", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_BANK_BAG_SLOT_PRICES, "SELECT MAX(ID) + 1 FROM bank_bag_slot_prices", CONNECTION_SYNCH);
// BannedAddons.db2
- PrepareStatement(HOTFIX_SEL_BANNED_ADDONS, "SELECT ID, Name, Version, Flags FROM banned_addons ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_BANNED_ADDONS, "SELECT ID, Name, Version, Flags FROM banned_addons", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_BANNED_ADDONS, "SELECT MAX(ID) + 1 FROM banned_addons", CONNECTION_SYNCH);
// BarberShopStyle.db2
- PrepareStatement(HOTFIX_SEL_BARBER_SHOP_STYLE, "SELECT DisplayName, Description, ID, Type, CostModifier, Race, Sex, Data FROM barber_shop_style"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_BARBER_SHOP_STYLE, "SELECT DisplayName, Description, ID, Type, CostModifier, Race, Sex, Data FROM barber_shop_style", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_BARBER_SHOP_STYLE, "SELECT MAX(ID) + 1 FROM barber_shop_style", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_BARBER_SHOP_STYLE, "SELECT ID, DisplayName_lang, Description_lang FROM barber_shop_style_locale WHERE locale = ?", CONNECTION_SYNCH);
// BattlePetBreedQuality.db2
- PrepareStatement(HOTFIX_SEL_BATTLE_PET_BREED_QUALITY, "SELECT ID, StateMultiplier, QualityEnum FROM battle_pet_breed_quality ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_BATTLE_PET_BREED_QUALITY, "SELECT ID, StateMultiplier, QualityEnum FROM battle_pet_breed_quality", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_BATTLE_PET_BREED_QUALITY, "SELECT MAX(ID) + 1 FROM battle_pet_breed_quality", CONNECTION_SYNCH);
// BattlePetBreedState.db2
- PrepareStatement(HOTFIX_SEL_BATTLE_PET_BREED_STATE, "SELECT ID, BattlePetStateID, Value, BattlePetBreedID FROM battle_pet_breed_state"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_BATTLE_PET_BREED_STATE, "SELECT ID, BattlePetStateID, Value, BattlePetBreedID FROM battle_pet_breed_state", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_BATTLE_PET_BREED_STATE, "SELECT MAX(ID) + 1 FROM battle_pet_breed_state", CONNECTION_SYNCH);
// BattlePetSpecies.db2
PrepareStatement(HOTFIX_SEL_BATTLE_PET_SPECIES, "SELECT Description, SourceText, ID, CreatureID, SummonSpellID, IconFileDataID, PetTypeEnum, "
- "Flags, SourceTypeEnum, CardUIModelSceneID, LoadoutUIModelSceneID FROM battle_pet_species ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Flags, SourceTypeEnum, CardUIModelSceneID, LoadoutUIModelSceneID FROM battle_pet_species", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_BATTLE_PET_SPECIES, "SELECT MAX(ID) + 1 FROM battle_pet_species", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_BATTLE_PET_SPECIES, "SELECT ID, Description_lang, SourceText_lang FROM battle_pet_species_locale WHERE locale = ?", CONNECTION_SYNCH);
// BattlePetSpeciesState.db2
- PrepareStatement(HOTFIX_SEL_BATTLE_PET_SPECIES_STATE, "SELECT ID, BattlePetStateID, Value, BattlePetSpeciesID FROM battle_pet_species_state"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_BATTLE_PET_SPECIES_STATE, "SELECT ID, BattlePetStateID, Value, BattlePetSpeciesID FROM battle_pet_species_state", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_BATTLE_PET_SPECIES_STATE, "SELECT MAX(ID) + 1 FROM battle_pet_species_state", CONNECTION_SYNCH);
// BattlemasterList.db2
PrepareStatement(HOTFIX_SEL_BATTLEMASTER_LIST, "SELECT ID, Name, GameType, ShortDescription, LongDescription, InstanceType, MinLevel, MaxLevel, "
"RatedPlayers, MinPlayers, MaxPlayers, GroupsAllowed, MaxGroupSize, HolidayWorldState, Flags, IconFileDataID, RequiredPlayerConditionID, "
"MapID1, MapID2, MapID3, MapID4, MapID5, MapID6, MapID7, MapID8, MapID9, MapID10, MapID11, MapID12, MapID13, MapID14, MapID15, MapID16"
- " FROM battlemaster_list ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM battlemaster_list", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_BATTLEMASTER_LIST, "SELECT MAX(ID) + 1 FROM battlemaster_list", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_BATTLEMASTER_LIST, "SELECT ID, Name_lang, GameType_lang, ShortDescription_lang, LongDescription_lang"
" FROM battlemaster_list_locale WHERE locale = ?", CONNECTION_SYNCH);
// BroadcastText.db2
PrepareStatement(HOTFIX_SEL_BROADCAST_TEXT, "SELECT Text, Text1, ID, LanguageID, ConditionID, EmotesID, Flags, ChatBubbleDurationMs, "
- "SoundEntriesID1, SoundEntriesID2, EmoteID1, EmoteID2, EmoteID3, EmoteDelay1, EmoteDelay2, EmoteDelay3 FROM broadcast_text ORDER BY ID DESC", CONNECTION_SYNCH);
+ "SoundEntriesID1, SoundEntriesID2, EmoteID1, EmoteID2, EmoteID3, EmoteDelay1, EmoteDelay2, EmoteDelay3 FROM broadcast_text", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_BROADCAST_TEXT, "SELECT MAX(ID) + 1 FROM broadcast_text", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_BROADCAST_TEXT, "SELECT ID, Text_lang, Text1_lang FROM broadcast_text_locale WHERE locale = ?", CONNECTION_SYNCH);
// CfgRegions.db2
- PrepareStatement(HOTFIX_SEL_CFG_REGIONS, "SELECT ID, Tag, RegionID, Raidorigin, RegionGroupMask, ChallengeOrigin FROM cfg_regions ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CFG_REGIONS, "SELECT ID, Tag, RegionID, Raidorigin, RegionGroupMask, ChallengeOrigin FROM cfg_regions", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CFG_REGIONS, "SELECT MAX(ID) + 1 FROM cfg_regions", CONNECTION_SYNCH);
// CharacterFacialHairStyles.db2
PrepareStatement(HOTFIX_SEL_CHARACTER_FACIAL_HAIR_STYLES, "SELECT ID, Geoset1, Geoset2, Geoset3, Geoset4, Geoset5, RaceID, SexID, VariationID"
- " FROM character_facial_hair_styles ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM character_facial_hair_styles", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHARACTER_FACIAL_HAIR_STYLES, "SELECT MAX(ID) + 1 FROM character_facial_hair_styles", CONNECTION_SYNCH);
// CharBaseSection.db2
- PrepareStatement(HOTFIX_SEL_CHAR_BASE_SECTION, "SELECT ID, LayoutResType, VariationEnum, ResolutionVariationEnum FROM char_base_section"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CHAR_BASE_SECTION, "SELECT ID, LayoutResType, VariationEnum, ResolutionVariationEnum FROM char_base_section", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHAR_BASE_SECTION, "SELECT MAX(ID) + 1 FROM char_base_section", CONNECTION_SYNCH);
// CharSections.db2
PrepareStatement(HOTFIX_SEL_CHAR_SECTIONS, "SELECT ID, RaceID, SexID, BaseSection, VariationIndex, ColorIndex, Flags, MaterialResourcesID1, "
- "MaterialResourcesID2, MaterialResourcesID3 FROM char_sections ORDER BY ID DESC", CONNECTION_SYNCH);
+ "MaterialResourcesID2, MaterialResourcesID3 FROM char_sections", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHAR_SECTIONS, "SELECT MAX(ID) + 1 FROM char_sections", CONNECTION_SYNCH);
// CharStartOutfit.db2
PrepareStatement(HOTFIX_SEL_CHAR_START_OUTFIT, "SELECT ID, ClassID, SexID, OutfitID, PetDisplayID, PetFamilyID, ItemID1, ItemID2, ItemID3, "
"ItemID4, ItemID5, ItemID6, ItemID7, ItemID8, ItemID9, ItemID10, ItemID11, ItemID12, ItemID13, ItemID14, ItemID15, ItemID16, ItemID17, "
- "ItemID18, ItemID19, ItemID20, ItemID21, ItemID22, ItemID23, ItemID24, RaceID FROM char_start_outfit ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ItemID18, ItemID19, ItemID20, ItemID21, ItemID22, ItemID23, ItemID24, RaceID FROM char_start_outfit", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHAR_START_OUTFIT, "SELECT MAX(ID) + 1 FROM char_start_outfit", CONNECTION_SYNCH);
// CharTitles.db2
- PrepareStatement(HOTFIX_SEL_CHAR_TITLES, "SELECT ID, Name, Name1, MaskID, Flags FROM char_titles ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CHAR_TITLES, "SELECT ID, Name, Name1, MaskID, Flags FROM char_titles", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHAR_TITLES, "SELECT MAX(ID) + 1 FROM char_titles", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CHAR_TITLES, "SELECT ID, Name_lang, Name1_lang FROM char_titles_locale WHERE locale = ?", CONNECTION_SYNCH);
// ChatChannels.db2
- PrepareStatement(HOTFIX_SEL_CHAT_CHANNELS, "SELECT ID, Name, Shortcut, Flags, FactionGroup FROM chat_channels ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CHAT_CHANNELS, "SELECT ID, Name, Shortcut, Flags, FactionGroup FROM chat_channels", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHAT_CHANNELS, "SELECT MAX(ID) + 1 FROM chat_channels", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CHAT_CHANNELS, "SELECT ID, Name_lang, Shortcut_lang FROM chat_channels_locale WHERE locale = ?", CONNECTION_SYNCH);
// ChrClasses.db2
PrepareStatement(HOTFIX_SEL_CHR_CLASSES, "SELECT Name, Filename, NameMale, NameFemale, PetNameToken, ID, CreateScreenFileDataID, "
"SelectScreenFileDataID, IconFileDataID, LowResScreenFileDataID, StartingLevel, SpellTextureBlobFileDataID, Flags, CinematicSequenceID, "
"DefaultSpec, PrimaryStatPriority, DisplayPower, RangedAttackPowerPerAgility, AttackPowerPerAgility, AttackPowerPerStrength, SpellClassSet"
- " FROM chr_classes ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM chr_classes", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CLASSES, "SELECT MAX(ID) + 1 FROM chr_classes", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CLASSES, "SELECT ID, Name_lang, NameMale_lang, NameFemale_lang FROM chr_classes_locale WHERE locale = ?", CONNECTION_SYNCH);
// ChrClassesXPowerTypes.db2
- PrepareStatement(HOTFIX_SEL_CHR_CLASSES_X_POWER_TYPES, "SELECT ID, PowerType, ClassID FROM chr_classes_x_power_types ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CHR_CLASSES_X_POWER_TYPES, "SELECT ID, PowerType, ClassID FROM chr_classes_x_power_types", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CLASSES_X_POWER_TYPES, "SELECT MAX(ID) + 1 FROM chr_classes_x_power_types", CONNECTION_SYNCH);
// ChrRaces.db2
PrepareStatement(HOTFIX_SEL_CHR_RACES, "SELECT ClientPrefix, ClientFileString, Name, NameFemale, NameLowercase, NameFemaleLowercase, ID, Flags, "
@@ -244,50 +291,59 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"CinematicSequenceID, ResSicknessSpellID, SplashSoundID, BaseLanguage, CreatureType, Alliance, RaceRelated, UnalteredVisualRaceID, "
"CharComponentTextureLayoutID, CharComponentTexLayoutHiResID, DefaultClassID, NeutralRaceID, MaleModelFallbackRaceID, MaleModelFallbackSex, "
"FemaleModelFallbackRaceID, FemaleModelFallbackSex, MaleTextureFallbackRaceID, MaleTextureFallbackSex, FemaleTextureFallbackRaceID, "
- "FemaleTextureFallbackSex FROM chr_races ORDER BY ID DESC", CONNECTION_SYNCH);
+ "FemaleTextureFallbackSex FROM chr_races", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_RACES, "SELECT MAX(ID) + 1 FROM chr_races", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_RACES, "SELECT ID, Name_lang, NameFemale_lang, NameLowercase_lang, NameFemaleLowercase_lang"
" FROM chr_races_locale WHERE locale = ?", CONNECTION_SYNCH);
// ChrSpecialization.db2
PrepareStatement(HOTFIX_SEL_CHR_SPECIALIZATION, "SELECT Name, FemaleName, Description, ID, ClassID, OrderIndex, PetTalentType, Role, Flags, "
- "SpellIconFileID, PrimaryStatPriority, AnimReplacements, MasterySpellID1, MasterySpellID2 FROM chr_specialization ORDER BY ID DESC", CONNECTION_SYNCH);
+ "SpellIconFileID, PrimaryStatPriority, AnimReplacements, MasterySpellID1, MasterySpellID2 FROM chr_specialization", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_SPECIALIZATION, "SELECT MAX(ID) + 1 FROM chr_specialization", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_SPECIALIZATION, "SELECT ID, Name_lang, FemaleName_lang, Description_lang FROM chr_specialization_locale"
" WHERE locale = ?", CONNECTION_SYNCH);
// CinematicCamera.db2
- PrepareStatement(HOTFIX_SEL_CINEMATIC_CAMERA, "SELECT ID, OriginX, OriginY, OriginZ, SoundID, OriginFacing, FileDataID FROM cinematic_camera"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CINEMATIC_CAMERA, "SELECT ID, OriginX, OriginY, OriginZ, SoundID, OriginFacing, FileDataID FROM cinematic_camera", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CINEMATIC_CAMERA, "SELECT MAX(ID) + 1 FROM cinematic_camera", CONNECTION_SYNCH);
// CinematicSequences.db2
PrepareStatement(HOTFIX_SEL_CINEMATIC_SEQUENCES, "SELECT ID, SoundID, Camera1, Camera2, Camera3, Camera4, Camera5, Camera6, Camera7, Camera8"
- " FROM cinematic_sequences ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM cinematic_sequences", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CINEMATIC_SEQUENCES, "SELECT MAX(ID) + 1 FROM cinematic_sequences", CONNECTION_SYNCH);
// ContentTuning.db2
- PrepareStatement(HOTFIX_SEL_CONTENT_TUNING, "SELECT ID, MinLevel, MaxLevel, Flags, ExpansionID FROM content_tuning ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CONTENT_TUNING, "SELECT ID, MinLevel, MaxLevel, Flags, ExpansionID FROM content_tuning", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONTENT_TUNING, "SELECT MAX(ID) + 1 FROM content_tuning", CONNECTION_SYNCH);
// ContentTuningXExpected.db2
PrepareStatement(HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED, "SELECT ID, ExpectedStatModID, MythicPlusSeasonID, ContentTuningID"
- " FROM content_tuning_x_expected ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM content_tuning_x_expected", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED, "SELECT MAX(ID) + 1 FROM content_tuning_x_expected", CONNECTION_SYNCH);
// ConversationLine.db2
PrepareStatement(HOTFIX_SEL_CONVERSATION_LINE, "SELECT ID, BroadcastTextID, SpellVisualKitID, AdditionalDuration, NextConversationLineID, "
- "AnimKitID, SpeechType, StartAnimation, EndAnimation FROM conversation_line ORDER BY ID DESC", CONNECTION_SYNCH);
+ "AnimKitID, SpeechType, StartAnimation, EndAnimation FROM conversation_line", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CONVERSATION_LINE, "SELECT MAX(ID) + 1 FROM conversation_line", CONNECTION_SYNCH);
// CreatureDisplayInfo.db2
PrepareStatement(HOTFIX_SEL_CREATURE_DISPLAY_INFO, "SELECT ID, ModelID, SoundID, SizeClass, CreatureModelScale, CreatureModelAlpha, BloodID, "
"ExtendedDisplayInfoID, NPCSoundID, ParticleColorID, PortraitCreatureDisplayInfoID, PortraitTextureFileDataID, ObjectEffectPackageID, "
"AnimReplacementSetID, Flags, StateSpellVisualKitID, PlayerOverrideScale, PetInstanceScale, UnarmedWeaponType, MountPoofSpellVisualKitID, "
"DissolveEffectID, Gender, DissolveOutEffectID, CreatureModelMinLod, TextureVariationFileDataID1, TextureVariationFileDataID2, "
- "TextureVariationFileDataID3 FROM creature_display_info ORDER BY ID DESC", CONNECTION_SYNCH);
+ "TextureVariationFileDataID3 FROM creature_display_info", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CREATURE_DISPLAY_INFO, "SELECT MAX(ID) + 1 FROM creature_display_info", CONNECTION_SYNCH);
// CreatureDisplayInfoExtra.db2
PrepareStatement(HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA, "SELECT ID, DisplayRaceID, DisplaySexID, DisplayClassID, SkinID, FaceID, HairStyleID, "
"HairColorID, FacialHairID, Flags, BakeMaterialResourcesID, HDBakeMaterialResourcesID, CustomDisplayOption1, CustomDisplayOption2, "
- "CustomDisplayOption3 FROM creature_display_info_extra ORDER BY ID DESC", CONNECTION_SYNCH);
+ "CustomDisplayOption3 FROM creature_display_info_extra", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA, "SELECT MAX(ID) + 1 FROM creature_display_info_extra", CONNECTION_SYNCH);
// CreatureFamily.db2
PrepareStatement(HOTFIX_SEL_CREATURE_FAMILY, "SELECT ID, Name, MinScale, MinScaleLevel, MaxScale, MaxScaleLevel, PetFoodMask, PetTalentType, "
- "IconFileID, SkillLine1, SkillLine2 FROM creature_family ORDER BY ID DESC", CONNECTION_SYNCH);
+ "IconFileID, SkillLine1, SkillLine2 FROM creature_family", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CREATURE_FAMILY, "SELECT MAX(ID) + 1 FROM creature_family", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CREATURE_FAMILY, "SELECT ID, Name_lang FROM creature_family_locale WHERE locale = ?", CONNECTION_SYNCH);
// CreatureModelData.db2
@@ -296,49 +352,55 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"DeathThudCameraEffectID, SoundID, SizeClass, CollisionWidth, CollisionHeight, WorldEffectScale, CreatureGeosetDataID, HoverHeight, "
"AttachedEffectScale, ModelScale, MissileCollisionRadius, MissileCollisionPush, MissileCollisionRaise, MountHeight, OverrideLootEffectScale, "
"OverrideNameScale, OverrideSelectionRadius, TamedPetBaseScale, Unknown820_1, Unknown820_2, Unknown820_31, Unknown820_32"
- " FROM creature_model_data ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM creature_model_data", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CREATURE_MODEL_DATA, "SELECT MAX(ID) + 1 FROM creature_model_data", CONNECTION_SYNCH);
// CreatureType.db2
- PrepareStatement(HOTFIX_SEL_CREATURE_TYPE, "SELECT ID, Name, Flags FROM creature_type ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CREATURE_TYPE, "SELECT ID, Name, Flags FROM creature_type", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CREATURE_TYPE, "SELECT MAX(ID) + 1 FROM creature_type", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CREATURE_TYPE, "SELECT ID, Name_lang FROM creature_type_locale WHERE locale = ?", CONNECTION_SYNCH);
// Criteria.db2
PrepareStatement(HOTFIX_SEL_CRITERIA, "SELECT ID, Type, Asset, ModifierTreeId, StartEvent, StartAsset, StartTimer, FailEvent, FailAsset, Flags, "
- "EligibilityWorldStateID, EligibilityWorldStateValue FROM criteria ORDER BY ID DESC", CONNECTION_SYNCH);
+ "EligibilityWorldStateID, EligibilityWorldStateValue FROM criteria", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CRITERIA, "SELECT MAX(ID) + 1 FROM criteria", CONNECTION_SYNCH);
// CriteriaTree.db2
- PrepareStatement(HOTFIX_SEL_CRITERIA_TREE, "SELECT ID, Description, Parent, Amount, Operator, CriteriaID, OrderIndex, Flags FROM criteria_tree"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CRITERIA_TREE, "SELECT ID, Description, Parent, Amount, Operator, CriteriaID, OrderIndex, Flags FROM criteria_tree", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CRITERIA_TREE, "SELECT MAX(ID) + 1 FROM criteria_tree", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CRITERIA_TREE, "SELECT ID, Description_lang FROM criteria_tree_locale WHERE locale = ?", CONNECTION_SYNCH);
// CurrencyTypes.db2
PrepareStatement(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, CategoryID, InventoryIconFileID, SpellWeight, SpellCategory, MaxQty, "
- "MaxEarnablePerWeek, Flags, Quality, FactionID, ItemGroupSoundsID, ConvertToPlayerExperience, PlayerConditionID FROM currency_types"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ "MaxEarnablePerWeek, Flags, Quality, FactionID, ItemGroupSoundsID, ConvertToPlayerExperience, PlayerConditionID FROM currency_types", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CURRENCY_TYPES, "SELECT MAX(ID) + 1 FROM currency_types", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name_lang, Description_lang FROM currency_types_locale WHERE locale = ?", CONNECTION_SYNCH);
// Curve.db2
- PrepareStatement(HOTFIX_SEL_CURVE, "SELECT ID, Type, Flags FROM curve ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CURVE, "SELECT ID, Type, Flags FROM curve", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CURVE, "SELECT MAX(ID) + 1 FROM curve", CONNECTION_SYNCH);
// CurvePoint.db2
- PrepareStatement(HOTFIX_SEL_CURVE_POINT, "SELECT ID, PosX, PosY, CurveID, OrderIndex FROM curve_point ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_CURVE_POINT, "SELECT ID, PosX, PosY, CurveID, OrderIndex FROM curve_point", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_CURVE_POINT, "SELECT MAX(ID) + 1 FROM curve_point", CONNECTION_SYNCH);
// DestructibleModelData.db2
PrepareStatement(HOTFIX_SEL_DESTRUCTIBLE_MODEL_DATA, "SELECT ID, State0ImpactEffectDoodadSet, State0AmbientDoodadSet, State1Wmo, "
"State1DestructionDoodadSet, State1ImpactEffectDoodadSet, State1AmbientDoodadSet, State2Wmo, State2DestructionDoodadSet, "
"State2ImpactEffectDoodadSet, State2AmbientDoodadSet, State3Wmo, State3InitDoodadSet, State3AmbientDoodadSet, EjectDirection, DoNotHighlight, "
- "State0Wmo, HealEffect, HealEffectSpeed, State0NameSet, State1NameSet, State2NameSet, State3NameSet FROM destructible_model_data"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ "State0Wmo, HealEffect, HealEffectSpeed, State0NameSet, State1NameSet, State2NameSet, State3NameSet FROM destructible_model_data", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_DESTRUCTIBLE_MODEL_DATA, "SELECT MAX(ID) + 1 FROM destructible_model_data", CONNECTION_SYNCH);
// Difficulty.db2
PrepareStatement(HOTFIX_SEL_DIFFICULTY, "SELECT ID, Name, InstanceType, OrderIndex, OldEnumValue, FallbackDifficultyID, MinPlayers, MaxPlayers, "
- "Flags, ItemContext, ToggleDifficultyID, GroupSizeHealthCurveID, GroupSizeDmgCurveID, GroupSizeSpellPointsCurveID FROM difficulty"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Flags, ItemContext, ToggleDifficultyID, GroupSizeHealthCurveID, GroupSizeDmgCurveID, GroupSizeSpellPointsCurveID FROM difficulty", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_DIFFICULTY, "SELECT MAX(ID) + 1 FROM difficulty", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_DIFFICULTY, "SELECT ID, Name_lang FROM difficulty_locale WHERE locale = ?", CONNECTION_SYNCH);
// DungeonEncounter.db2
PrepareStatement(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT Name, ID, MapID, DifficultyID, OrderIndex, CompleteWorldStateID, Bit, CreatureDisplayID, "
- "Flags, SpellIconFileID, Faction FROM dungeon_encounter ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Flags, SpellIconFileID, Faction FROM dungeon_encounter", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT MAX(ID) + 1 FROM dungeon_encounter", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT ID, Name_lang FROM dungeon_encounter_locale WHERE locale = ?", CONNECTION_SYNCH);
// DurabilityCosts.db2
@@ -347,71 +409,86 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"WeaponSubClassCost11, WeaponSubClassCost12, WeaponSubClassCost13, WeaponSubClassCost14, WeaponSubClassCost15, WeaponSubClassCost16, "
"WeaponSubClassCost17, WeaponSubClassCost18, WeaponSubClassCost19, WeaponSubClassCost20, WeaponSubClassCost21, ArmorSubClassCost1, "
"ArmorSubClassCost2, ArmorSubClassCost3, ArmorSubClassCost4, ArmorSubClassCost5, ArmorSubClassCost6, ArmorSubClassCost7, ArmorSubClassCost8"
- " FROM durability_costs ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM durability_costs", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_DURABILITY_COSTS, "SELECT MAX(ID) + 1 FROM durability_costs", CONNECTION_SYNCH);
// DurabilityQuality.db2
- PrepareStatement(HOTFIX_SEL_DURABILITY_QUALITY, "SELECT ID, Data FROM durability_quality ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_DURABILITY_QUALITY, "SELECT ID, Data FROM durability_quality", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_DURABILITY_QUALITY, "SELECT MAX(ID) + 1 FROM durability_quality", CONNECTION_SYNCH);
// Emotes.db2
PrepareStatement(HOTFIX_SEL_EMOTES, "SELECT ID, RaceMask, EmoteSlashCommand, AnimID, EmoteFlags, EmoteSpecProc, EmoteSpecProcParam, EventSoundID, "
- "SpellVisualKitID, ClassMask FROM emotes ORDER BY ID DESC", CONNECTION_SYNCH);
+ "SpellVisualKitID, ClassMask FROM emotes", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_EMOTES, "SELECT MAX(ID) + 1 FROM emotes", CONNECTION_SYNCH);
// EmotesText.db2
- PrepareStatement(HOTFIX_SEL_EMOTES_TEXT, "SELECT ID, Name, EmoteID FROM emotes_text ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_EMOTES_TEXT, "SELECT ID, Name, EmoteID FROM emotes_text", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_EMOTES_TEXT, "SELECT MAX(ID) + 1 FROM emotes_text", CONNECTION_SYNCH);
// EmotesTextSound.db2
- PrepareStatement(HOTFIX_SEL_EMOTES_TEXT_SOUND, "SELECT ID, RaceID, ClassID, SexID, SoundID, EmotesTextID FROM emotes_text_sound ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_EMOTES_TEXT_SOUND, "SELECT ID, RaceID, ClassID, SexID, SoundID, EmotesTextID FROM emotes_text_sound", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_EMOTES_TEXT_SOUND, "SELECT MAX(ID) + 1 FROM emotes_text_sound", CONNECTION_SYNCH);
// ExpectedStat.db2
PrepareStatement(HOTFIX_SEL_EXPECTED_STAT, "SELECT ID, ExpansionID, CreatureHealth, PlayerHealth, CreatureAutoAttackDps, CreatureArmor, "
- "PlayerMana, PlayerPrimaryStat, PlayerSecondaryStat, ArmorConstant, CreatureSpellDamage, Lvl FROM expected_stat ORDER BY ID DESC", CONNECTION_SYNCH);
+ "PlayerMana, PlayerPrimaryStat, PlayerSecondaryStat, ArmorConstant, CreatureSpellDamage, Lvl FROM expected_stat", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_EXPECTED_STAT, "SELECT MAX(ID) + 1 FROM expected_stat", CONNECTION_SYNCH);
// ExpectedStatMod.db2
PrepareStatement(HOTFIX_SEL_EXPECTED_STAT_MOD, "SELECT ID, CreatureHealthMod, PlayerHealthMod, CreatureAutoAttackDPSMod, CreatureArmorMod, "
- "PlayerManaMod, PlayerPrimaryStatMod, PlayerSecondaryStatMod, ArmorConstantMod, CreatureSpellDamageMod FROM expected_stat_mod ORDER BY ID DESC", CONNECTION_SYNCH);
+ "PlayerManaMod, PlayerPrimaryStatMod, PlayerSecondaryStatMod, ArmorConstantMod, CreatureSpellDamageMod FROM expected_stat_mod", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_EXPECTED_STAT_MOD, "SELECT MAX(ID) + 1 FROM expected_stat_mod", CONNECTION_SYNCH);
// Faction.db2
PrepareStatement(HOTFIX_SEL_FACTION, "SELECT ReputationRaceMask1, ReputationRaceMask2, ReputationRaceMask3, ReputationRaceMask4, Name, "
"Description, ID, ReputationIndex, ParentFactionID, Expansion, FriendshipRepID, Flags, ParagonFactionID, ReputationClassMask1, "
"ReputationClassMask2, ReputationClassMask3, ReputationClassMask4, ReputationFlags1, ReputationFlags2, ReputationFlags3, ReputationFlags4, "
"ReputationBase1, ReputationBase2, ReputationBase3, ReputationBase4, ReputationMax1, ReputationMax2, ReputationMax3, ReputationMax4, "
- "ParentFactionMod1, ParentFactionMod2, ParentFactionCap1, ParentFactionCap2 FROM faction ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ParentFactionMod1, ParentFactionMod2, ParentFactionCap1, ParentFactionCap2 FROM faction", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_FACTION, "SELECT MAX(ID) + 1 FROM faction", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_FACTION, "SELECT ID, Name_lang, Description_lang FROM faction_locale WHERE locale = ?", CONNECTION_SYNCH);
// FactionTemplate.db2
PrepareStatement(HOTFIX_SEL_FACTION_TEMPLATE, "SELECT ID, Faction, Flags, FactionGroup, FriendGroup, EnemyGroup, Enemies1, Enemies2, Enemies3, "
- "Enemies4, Friend1, Friend2, Friend3, Friend4 FROM faction_template ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Enemies4, Friend1, Friend2, Friend3, Friend4 FROM faction_template", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_FACTION_TEMPLATE, "SELECT MAX(ID) + 1 FROM faction_template", CONNECTION_SYNCH);
// GameobjectDisplayInfo.db2
PrepareStatement(HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT ID, GeoBoxMinX, GeoBoxMinY, GeoBoxMinZ, GeoBoxMaxX, GeoBoxMaxY, GeoBoxMaxZ, "
- "FileDataID, ObjectEffectPackageID, OverrideLootEffectScale, OverrideNameScale FROM gameobject_display_info ORDER BY ID DESC", CONNECTION_SYNCH);
+ "FileDataID, ObjectEffectPackageID, OverrideLootEffectScale, OverrideNameScale FROM gameobject_display_info", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT MAX(ID) + 1 FROM gameobject_display_info", CONNECTION_SYNCH);
// Gameobjects.db2
PrepareStatement(HOTFIX_SEL_GAMEOBJECTS, "SELECT Name, PosX, PosY, PosZ, Rot1, Rot2, Rot3, Rot4, ID, OwnerID, DisplayID, Scale, TypeID, "
"PhaseUseFlags, PhaseID, PhaseGroupID, PropValue1, PropValue2, PropValue3, PropValue4, PropValue5, PropValue6, PropValue7, PropValue8"
- " FROM gameobjects ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM gameobjects", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GAMEOBJECTS, "SELECT MAX(ID) + 1 FROM gameobjects", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_GAMEOBJECTS, "SELECT ID, Name_lang FROM gameobjects_locale WHERE locale = ?", CONNECTION_SYNCH);
// GarrAbility.db2
PrepareStatement(HOTFIX_SEL_GARR_ABILITY, "SELECT Name, Description, ID, GarrAbilityCategoryID, GarrFollowerTypeID, IconFileDataID, "
- "FactionChangeGarrAbilityID, Flags FROM garr_ability ORDER BY ID DESC", CONNECTION_SYNCH);
+ "FactionChangeGarrAbilityID, Flags FROM garr_ability", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_ABILITY, "SELECT MAX(ID) + 1 FROM garr_ability", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_ABILITY, "SELECT ID, Name_lang, Description_lang FROM garr_ability_locale WHERE locale = ?", CONNECTION_SYNCH);
// GarrBuilding.db2
PrepareStatement(HOTFIX_SEL_GARR_BUILDING, "SELECT ID, HordeName, AllianceName, Description, Tooltip, GarrTypeID, BuildingType, "
"HordeGameObjectID, AllianceGameObjectID, GarrSiteID, UpgradeLevel, BuildSeconds, CurrencyTypeID, CurrencyQty, HordeUiTextureKitID, "
"AllianceUiTextureKitID, IconFileDataID, AllianceSceneScriptPackageID, HordeSceneScriptPackageID, MaxAssignments, ShipmentCapacity, "
- "GarrAbilityID, BonusGarrAbilityID, GoldCost, Flags FROM garr_building ORDER BY ID DESC", CONNECTION_SYNCH);
+ "GarrAbilityID, BonusGarrAbilityID, GoldCost, Flags FROM garr_building", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_BUILDING, "SELECT MAX(ID) + 1 FROM garr_building", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_BUILDING, "SELECT ID, HordeName_lang, AllianceName_lang, Description_lang, Tooltip_lang"
" FROM garr_building_locale WHERE locale = ?", CONNECTION_SYNCH);
// GarrBuildingPlotInst.db2
PrepareStatement(HOTFIX_SEL_GARR_BUILDING_PLOT_INST, "SELECT MapOffsetX, MapOffsetY, ID, GarrBuildingID, GarrSiteLevelPlotInstID, "
- "UiTextureAtlasMemberID FROM garr_building_plot_inst ORDER BY ID DESC", CONNECTION_SYNCH);
+ "UiTextureAtlasMemberID FROM garr_building_plot_inst", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_BUILDING_PLOT_INST, "SELECT MAX(ID) + 1 FROM garr_building_plot_inst", CONNECTION_SYNCH);
// GarrClassSpec.db2
PrepareStatement(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT ClassSpec, ClassSpecMale, ClassSpecFemale, ID, UiTextureAtlasMemberID, GarrFollItemSetID, "
- "FollowerClassLimit, Flags FROM garr_class_spec ORDER BY ID DESC", CONNECTION_SYNCH);
+ "FollowerClassLimit, Flags FROM garr_class_spec", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT MAX(ID) + 1 FROM garr_class_spec", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_CLASS_SPEC, "SELECT ID, ClassSpec_lang, ClassSpecMale_lang, ClassSpecFemale_lang FROM garr_class_spec_locale"
" WHERE locale = ?", CONNECTION_SYNCH);
@@ -420,62 +497,76 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"HordeCreatureID, AllianceCreatureID, HordeGarrFollRaceID, AllianceGarrFollRaceID, HordeGarrClassSpecID, AllianceGarrClassSpecID, Quality, "
"FollowerLevel, ItemLevelWeapon, ItemLevelArmor, HordeSourceTypeEnum, AllianceSourceTypeEnum, HordeIconFileDataID, AllianceIconFileDataID, "
"HordeGarrFollItemSetID, AllianceGarrFollItemSetID, HordeUITextureKitID, AllianceUITextureKitID, Vitality, HordeFlavorGarrStringID, "
- "AllianceFlavorGarrStringID, HordeSlottingBroadcastTextID, AllySlottingBroadcastTextID, ChrClassID, Flags, Gender FROM garr_follower"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ "AllianceFlavorGarrStringID, HordeSlottingBroadcastTextID, AllySlottingBroadcastTextID, ChrClassID, Flags, Gender FROM garr_follower", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_FOLLOWER, "SELECT MAX(ID) + 1 FROM garr_follower", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_GARR_FOLLOWER, "SELECT ID, HordeSourceText_lang, AllianceSourceText_lang, TitleName_lang FROM garr_follower_locale"
" WHERE locale = ?", CONNECTION_SYNCH);
// GarrFollowerXAbility.db2
PrepareStatement(HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY, "SELECT ID, OrderIndex, FactionIndex, GarrAbilityID, GarrFollowerID"
- " FROM garr_follower_x_ability ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM garr_follower_x_ability", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY, "SELECT MAX(ID) + 1 FROM garr_follower_x_ability", CONNECTION_SYNCH);
// GarrPlot.db2
PrepareStatement(HOTFIX_SEL_GARR_PLOT, "SELECT ID, Name, PlotType, HordeConstructObjID, AllianceConstructObjID, Flags, UiCategoryID, "
- "UpgradeRequirement1, UpgradeRequirement2 FROM garr_plot ORDER BY ID DESC", CONNECTION_SYNCH);
+ "UpgradeRequirement1, UpgradeRequirement2 FROM garr_plot", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_PLOT, "SELECT MAX(ID) + 1 FROM garr_plot", CONNECTION_SYNCH);
// GarrPlotBuilding.db2
- PrepareStatement(HOTFIX_SEL_GARR_PLOT_BUILDING, "SELECT ID, GarrPlotID, GarrBuildingID FROM garr_plot_building ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_GARR_PLOT_BUILDING, "SELECT ID, GarrPlotID, GarrBuildingID FROM garr_plot_building", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_PLOT_BUILDING, "SELECT MAX(ID) + 1 FROM garr_plot_building", CONNECTION_SYNCH);
// GarrPlotInstance.db2
- PrepareStatement(HOTFIX_SEL_GARR_PLOT_INSTANCE, "SELECT ID, Name, GarrPlotID FROM garr_plot_instance ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_GARR_PLOT_INSTANCE, "SELECT ID, Name, GarrPlotID FROM garr_plot_instance", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_PLOT_INSTANCE, "SELECT MAX(ID) + 1 FROM garr_plot_instance", CONNECTION_SYNCH);
// GarrSiteLevel.db2
PrepareStatement(HOTFIX_SEL_GARR_SITE_LEVEL, "SELECT ID, TownHallUiPosX, TownHallUiPosY, GarrSiteID, GarrLevel, MapID, UpgradeMovieID, "
- "UiTextureKitID, MaxBuildingLevel, UpgradeCost, UpgradeGoldCost FROM garr_site_level ORDER BY ID DESC", CONNECTION_SYNCH);
+ "UiTextureKitID, MaxBuildingLevel, UpgradeCost, UpgradeGoldCost FROM garr_site_level", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_SITE_LEVEL, "SELECT MAX(ID) + 1 FROM garr_site_level", CONNECTION_SYNCH);
// GarrSiteLevelPlotInst.db2
PrepareStatement(HOTFIX_SEL_GARR_SITE_LEVEL_PLOT_INST, "SELECT ID, UiMarkerPosX, UiMarkerPosY, GarrSiteLevelID, GarrPlotInstanceID, UiMarkerSize"
- " FROM garr_site_level_plot_inst ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM garr_site_level_plot_inst", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GARR_SITE_LEVEL_PLOT_INST, "SELECT MAX(ID) + 1 FROM garr_site_level_plot_inst", CONNECTION_SYNCH);
// GemProperties.db2
- PrepareStatement(HOTFIX_SEL_GEM_PROPERTIES, "SELECT ID, EnchantId, Type, MinItemLevel FROM gem_properties ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_GEM_PROPERTIES, "SELECT ID, EnchantId, Type, MinItemLevel FROM gem_properties", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GEM_PROPERTIES, "SELECT MAX(ID) + 1 FROM gem_properties", CONNECTION_SYNCH);
// GlyphBindableSpell.db2
- PrepareStatement(HOTFIX_SEL_GLYPH_BINDABLE_SPELL, "SELECT ID, SpellID, GlyphPropertiesID FROM glyph_bindable_spell ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_GLYPH_BINDABLE_SPELL, "SELECT ID, SpellID, GlyphPropertiesID FROM glyph_bindable_spell", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GLYPH_BINDABLE_SPELL, "SELECT MAX(ID) + 1 FROM glyph_bindable_spell", CONNECTION_SYNCH);
// GlyphProperties.db2
- PrepareStatement(HOTFIX_SEL_GLYPH_PROPERTIES, "SELECT ID, SpellID, GlyphType, GlyphExclusiveCategoryID, SpellIconFileDataID FROM glyph_properties"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_GLYPH_PROPERTIES, "SELECT ID, SpellID, GlyphType, GlyphExclusiveCategoryID, SpellIconFileDataID FROM glyph_properties", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GLYPH_PROPERTIES, "SELECT MAX(ID) + 1 FROM glyph_properties", CONNECTION_SYNCH);
// GlyphRequiredSpec.db2
- PrepareStatement(HOTFIX_SEL_GLYPH_REQUIRED_SPEC, "SELECT ID, ChrSpecializationID, GlyphPropertiesID FROM glyph_required_spec ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_GLYPH_REQUIRED_SPEC, "SELECT ID, ChrSpecializationID, GlyphPropertiesID FROM glyph_required_spec", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GLYPH_REQUIRED_SPEC, "SELECT MAX(ID) + 1 FROM glyph_required_spec", CONNECTION_SYNCH);
// GuildColorBackground.db2
- PrepareStatement(HOTFIX_SEL_GUILD_COLOR_BACKGROUND, "SELECT ID, Red, Blue, Green FROM guild_color_background ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_GUILD_COLOR_BACKGROUND, "SELECT ID, Red, Blue, Green FROM guild_color_background", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GUILD_COLOR_BACKGROUND, "SELECT MAX(ID) + 1 FROM guild_color_background", CONNECTION_SYNCH);
// GuildColorBorder.db2
- PrepareStatement(HOTFIX_SEL_GUILD_COLOR_BORDER, "SELECT ID, Red, Blue, Green FROM guild_color_border ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_GUILD_COLOR_BORDER, "SELECT ID, Red, Blue, Green FROM guild_color_border", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GUILD_COLOR_BORDER, "SELECT MAX(ID) + 1 FROM guild_color_border", CONNECTION_SYNCH);
// GuildColorEmblem.db2
- PrepareStatement(HOTFIX_SEL_GUILD_COLOR_EMBLEM, "SELECT ID, Red, Blue, Green FROM guild_color_emblem ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_GUILD_COLOR_EMBLEM, "SELECT ID, Red, Blue, Green FROM guild_color_emblem", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GUILD_COLOR_EMBLEM, "SELECT MAX(ID) + 1 FROM guild_color_emblem", CONNECTION_SYNCH);
// GuildPerkSpells.db2
- PrepareStatement(HOTFIX_SEL_GUILD_PERK_SPELLS, "SELECT ID, SpellID FROM guild_perk_spells ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_GUILD_PERK_SPELLS, "SELECT ID, SpellID FROM guild_perk_spells", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_GUILD_PERK_SPELLS, "SELECT MAX(ID) + 1 FROM guild_perk_spells", CONNECTION_SYNCH);
// Heirloom.db2
PrepareStatement(HOTFIX_SEL_HEIRLOOM, "SELECT SourceText, ID, ItemID, LegacyUpgradedItemID, StaticUpgradedItemID, SourceTypeEnum, Flags, "
"LegacyItemID, UpgradeItemID1, UpgradeItemID2, UpgradeItemID3, UpgradeItemID4, UpgradeItemBonusListID1, UpgradeItemBonusListID2, "
- "UpgradeItemBonusListID3, UpgradeItemBonusListID4 FROM heirloom ORDER BY ID DESC", CONNECTION_SYNCH);
+ "UpgradeItemBonusListID3, UpgradeItemBonusListID4 FROM heirloom", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_HEIRLOOM, "SELECT MAX(ID) + 1 FROM heirloom", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_HEIRLOOM, "SELECT ID, SourceText_lang FROM heirloom_locale WHERE locale = ?", CONNECTION_SYNCH);
// Holidays.db2
@@ -483,145 +574,175 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"Duration1, Duration2, Duration3, Duration4, Duration5, Duration6, Duration7, Duration8, Duration9, Duration10, Date1, Date2, Date3, Date4, "
"Date5, Date6, Date7, Date8, Date9, Date10, Date11, Date12, Date13, Date14, Date15, Date16, Date17, Date18, Date19, Date20, Date21, Date22, "
"Date23, Date24, Date25, Date26, CalendarFlags1, CalendarFlags2, CalendarFlags3, CalendarFlags4, CalendarFlags5, CalendarFlags6, "
- "CalendarFlags7, CalendarFlags8, CalendarFlags9, CalendarFlags10, TextureFileDataID1, TextureFileDataID2, TextureFileDataID3 FROM holidays"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ "CalendarFlags7, CalendarFlags8, CalendarFlags9, CalendarFlags10, TextureFileDataID1, TextureFileDataID2, TextureFileDataID3 FROM holidays", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_HOLIDAYS, "SELECT MAX(ID) + 1 FROM holidays", CONNECTION_SYNCH);
// ImportPriceArmor.db2
- PrepareStatement(HOTFIX_SEL_IMPORT_PRICE_ARMOR, "SELECT ID, ClothModifier, LeatherModifier, ChainModifier, PlateModifier FROM import_price_armor"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_IMPORT_PRICE_ARMOR, "SELECT ID, ClothModifier, LeatherModifier, ChainModifier, PlateModifier FROM import_price_armor", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_IMPORT_PRICE_ARMOR, "SELECT MAX(ID) + 1 FROM import_price_armor", CONNECTION_SYNCH);
// ImportPriceQuality.db2
- PrepareStatement(HOTFIX_SEL_IMPORT_PRICE_QUALITY, "SELECT ID, Data FROM import_price_quality ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_IMPORT_PRICE_QUALITY, "SELECT ID, Data FROM import_price_quality", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_IMPORT_PRICE_QUALITY, "SELECT MAX(ID) + 1 FROM import_price_quality", CONNECTION_SYNCH);
// ImportPriceShield.db2
- PrepareStatement(HOTFIX_SEL_IMPORT_PRICE_SHIELD, "SELECT ID, Data FROM import_price_shield ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_IMPORT_PRICE_SHIELD, "SELECT ID, Data FROM import_price_shield", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_IMPORT_PRICE_SHIELD, "SELECT MAX(ID) + 1 FROM import_price_shield", CONNECTION_SYNCH);
// ImportPriceWeapon.db2
- PrepareStatement(HOTFIX_SEL_IMPORT_PRICE_WEAPON, "SELECT ID, Data FROM import_price_weapon ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_IMPORT_PRICE_WEAPON, "SELECT ID, Data FROM import_price_weapon", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_IMPORT_PRICE_WEAPON, "SELECT MAX(ID) + 1 FROM import_price_weapon", CONNECTION_SYNCH);
// Item.db2
PrepareStatement(HOTFIX_SEL_ITEM, "SELECT ID, ClassID, SubclassID, Material, InventoryType, SheatheType, SoundOverrideSubclassID, IconFileDataID, "
- "ItemGroupSoundsID FROM item ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ItemGroupSoundsID FROM item", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM, "SELECT MAX(ID) + 1 FROM item", CONNECTION_SYNCH);
// ItemAppearance.db2
- PrepareStatement(HOTFIX_SEL_ITEM_APPEARANCE, "SELECT ID, DisplayType, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder FROM item_appearance"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_APPEARANCE, "SELECT ID, DisplayType, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder FROM item_appearance", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_APPEARANCE, "SELECT MAX(ID) + 1 FROM item_appearance", CONNECTION_SYNCH);
// ItemArmorQuality.db2
PrepareStatement(HOTFIX_SEL_ITEM_ARMOR_QUALITY, "SELECT ID, Qualitymod1, Qualitymod2, Qualitymod3, Qualitymod4, Qualitymod5, Qualitymod6, "
- "Qualitymod7 FROM item_armor_quality ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Qualitymod7 FROM item_armor_quality", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_ARMOR_QUALITY, "SELECT MAX(ID) + 1 FROM item_armor_quality", CONNECTION_SYNCH);
// ItemArmorShield.db2
PrepareStatement(HOTFIX_SEL_ITEM_ARMOR_SHIELD, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, ItemLevel"
- " FROM item_armor_shield ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM item_armor_shield", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_ARMOR_SHIELD, "SELECT MAX(ID) + 1 FROM item_armor_shield", CONNECTION_SYNCH);
// ItemArmorTotal.db2
- PrepareStatement(HOTFIX_SEL_ITEM_ARMOR_TOTAL, "SELECT ID, ItemLevel, Cloth, Leather, Mail, Plate FROM item_armor_total ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_ARMOR_TOTAL, "SELECT ID, ItemLevel, Cloth, Leather, Mail, Plate FROM item_armor_total", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_ARMOR_TOTAL, "SELECT MAX(ID) + 1 FROM item_armor_total", CONNECTION_SYNCH);
// ItemBagFamily.db2
- PrepareStatement(HOTFIX_SEL_ITEM_BAG_FAMILY, "SELECT ID, Name FROM item_bag_family ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_BAG_FAMILY, "SELECT ID, Name FROM item_bag_family", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_BAG_FAMILY, "SELECT MAX(ID) + 1 FROM item_bag_family", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_BAG_FAMILY, "SELECT ID, Name_lang FROM item_bag_family_locale WHERE locale = ?", CONNECTION_SYNCH);
// ItemBonus.db2
- PrepareStatement(HOTFIX_SEL_ITEM_BONUS, "SELECT ID, Value1, Value2, Value3, ParentItemBonusListID, Type, OrderIndex FROM item_bonus"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_BONUS, "SELECT ID, Value1, Value2, Value3, ParentItemBonusListID, Type, OrderIndex FROM item_bonus", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_BONUS, "SELECT MAX(ID) + 1 FROM item_bonus", CONNECTION_SYNCH);
// ItemBonusListLevelDelta.db2
- PrepareStatement(HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA, "SELECT ItemLevelDelta, ID FROM item_bonus_list_level_delta ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA, "SELECT ItemLevelDelta, ID FROM item_bonus_list_level_delta", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA, "SELECT MAX(ID) + 1 FROM item_bonus_list_level_delta", CONNECTION_SYNCH);
// ItemBonusTreeNode.db2
PrepareStatement(HOTFIX_SEL_ITEM_BONUS_TREE_NODE, "SELECT ID, ItemContext, ChildItemBonusTreeID, ChildItemBonusListID, ChildItemLevelSelectorID, "
- "ParentItemBonusTreeID FROM item_bonus_tree_node ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ParentItemBonusTreeID FROM item_bonus_tree_node", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_BONUS_TREE_NODE, "SELECT MAX(ID) + 1 FROM item_bonus_tree_node", CONNECTION_SYNCH);
// ItemChildEquipment.db2
- PrepareStatement(HOTFIX_SEL_ITEM_CHILD_EQUIPMENT, "SELECT ID, ParentItemID, ChildItemID, ChildItemEquipSlot FROM item_child_equipment"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_CHILD_EQUIPMENT, "SELECT ID, ParentItemID, ChildItemID, ChildItemEquipSlot FROM item_child_equipment", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_CHILD_EQUIPMENT, "SELECT MAX(ID) + 1 FROM item_child_equipment", CONNECTION_SYNCH);
// ItemClass.db2
- PrepareStatement(HOTFIX_SEL_ITEM_CLASS, "SELECT ID, ClassName, ClassID, PriceModifier, Flags FROM item_class ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_CLASS, "SELECT ID, ClassName, ClassID, PriceModifier, Flags FROM item_class", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_CLASS, "SELECT MAX(ID) + 1 FROM item_class", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_CLASS, "SELECT ID, ClassName_lang FROM item_class_locale WHERE locale = ?", CONNECTION_SYNCH);
// ItemCurrencyCost.db2
- PrepareStatement(HOTFIX_SEL_ITEM_CURRENCY_COST, "SELECT ID, ItemID FROM item_currency_cost ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_CURRENCY_COST, "SELECT ID, ItemID FROM item_currency_cost", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_CURRENCY_COST, "SELECT MAX(ID) + 1 FROM item_currency_cost", CONNECTION_SYNCH);
// ItemDamageAmmo.db2
PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_AMMO, "SELECT ID, ItemLevel, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7"
- " FROM item_damage_ammo ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM item_damage_ammo", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_DAMAGE_AMMO, "SELECT MAX(ID) + 1 FROM item_damage_ammo", CONNECTION_SYNCH);
// ItemDamageOneHand.db2
PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND, "SELECT ID, ItemLevel, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7"
- " FROM item_damage_one_hand ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM item_damage_one_hand", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND, "SELECT MAX(ID) + 1 FROM item_damage_one_hand", CONNECTION_SYNCH);
// ItemDamageOneHandCaster.db2
PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND_CASTER, "SELECT ID, ItemLevel, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, "
- "Quality7 FROM item_damage_one_hand_caster ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Quality7 FROM item_damage_one_hand_caster", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND_CASTER, "SELECT MAX(ID) + 1 FROM item_damage_one_hand_caster", CONNECTION_SYNCH);
// ItemDamageTwoHand.db2
PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND, "SELECT ID, ItemLevel, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7"
- " FROM item_damage_two_hand ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM item_damage_two_hand", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND, "SELECT MAX(ID) + 1 FROM item_damage_two_hand", CONNECTION_SYNCH);
// ItemDamageTwoHandCaster.db2
PrepareStatement(HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND_CASTER, "SELECT ID, ItemLevel, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, "
- "Quality7 FROM item_damage_two_hand_caster ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Quality7 FROM item_damage_two_hand_caster", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND_CASTER, "SELECT MAX(ID) + 1 FROM item_damage_two_hand_caster", CONNECTION_SYNCH);
// ItemDisenchantLoot.db2
PrepareStatement(HOTFIX_SEL_ITEM_DISENCHANT_LOOT, "SELECT ID, Subclass, Quality, MinLevel, MaxLevel, SkillRequired, ExpansionID, Class"
- " FROM item_disenchant_loot ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM item_disenchant_loot", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_DISENCHANT_LOOT, "SELECT MAX(ID) + 1 FROM item_disenchant_loot", CONNECTION_SYNCH);
// ItemEffect.db2
PrepareStatement(HOTFIX_SEL_ITEM_EFFECT, "SELECT ID, LegacySlotIndex, TriggerType, Charges, CoolDownMSec, CategoryCoolDownMSec, SpellCategoryID, "
- "SpellID, ChrSpecializationID, ParentItemID FROM item_effect ORDER BY ID DESC", CONNECTION_SYNCH);
+ "SpellID, ChrSpecializationID, ParentItemID FROM item_effect", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_EFFECT, "SELECT MAX(ID) + 1 FROM item_effect", CONNECTION_SYNCH);
// ItemExtendedCost.db2
PrepareStatement(HOTFIX_SEL_ITEM_EXTENDED_COST, "SELECT ID, RequiredArenaRating, ArenaBracket, Flags, MinFactionID, MinReputation, "
"RequiredAchievement, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, ItemCount1, ItemCount2, ItemCount3, ItemCount4, ItemCount5, CurrencyID1, "
"CurrencyID2, CurrencyID3, CurrencyID4, CurrencyID5, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, CurrencyCount5"
- " FROM item_extended_cost ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM item_extended_cost", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_EXTENDED_COST, "SELECT MAX(ID) + 1 FROM item_extended_cost", CONNECTION_SYNCH);
// ItemLevelSelector.db2
PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR, "SELECT ID, MinItemLevel, ItemLevelSelectorQualitySetID, AzeriteUnlockMappingSet"
- " FROM item_level_selector ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM item_level_selector", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_LEVEL_SELECTOR, "SELECT MAX(ID) + 1 FROM item_level_selector", CONNECTION_SYNCH);
// ItemLevelSelectorQuality.db2
PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY, "SELECT ID, QualityItemBonusListID, Quality, ParentILSQualitySetID"
- " FROM item_level_selector_quality ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM item_level_selector_quality", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY, "SELECT MAX(ID) + 1 FROM item_level_selector_quality", CONNECTION_SYNCH);
// ItemLevelSelectorQualitySet.db2
- PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY_SET, "SELECT ID, IlvlRare, IlvlEpic FROM item_level_selector_quality_set ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY_SET, "SELECT ID, IlvlRare, IlvlEpic FROM item_level_selector_quality_set", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY_SET, "SELECT MAX(ID) + 1 FROM item_level_selector_quality_set", CONNECTION_SYNCH);
// ItemLimitCategory.db2
- PrepareStatement(HOTFIX_SEL_ITEM_LIMIT_CATEGORY, "SELECT ID, Name, Quantity, Flags FROM item_limit_category ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_LIMIT_CATEGORY, "SELECT ID, Name, Quantity, Flags FROM item_limit_category", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_LIMIT_CATEGORY, "SELECT MAX(ID) + 1 FROM item_limit_category", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_LIMIT_CATEGORY, "SELECT ID, Name_lang FROM item_limit_category_locale WHERE locale = ?", CONNECTION_SYNCH);
// ItemLimitCategoryCondition.db2
PrepareStatement(HOTFIX_SEL_ITEM_LIMIT_CATEGORY_CONDITION, "SELECT ID, AddQuantity, PlayerConditionID, ParentItemLimitCategoryID"
- " FROM item_limit_category_condition ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM item_limit_category_condition", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_LIMIT_CATEGORY_CONDITION, "SELECT MAX(ID) + 1 FROM item_limit_category_condition", CONNECTION_SYNCH);
// ItemModifiedAppearance.db2
PrepareStatement(HOTFIX_SEL_ITEM_MODIFIED_APPEARANCE, "SELECT ID, ItemID, ItemAppearanceModifierID, ItemAppearanceID, OrderIndex, "
- "TransmogSourceTypeEnum FROM item_modified_appearance ORDER BY ID DESC", CONNECTION_SYNCH);
+ "TransmogSourceTypeEnum FROM item_modified_appearance", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_MODIFIED_APPEARANCE, "SELECT MAX(ID) + 1 FROM item_modified_appearance", CONNECTION_SYNCH);
// ItemNameDescription.db2
- PrepareStatement(HOTFIX_SEL_ITEM_NAME_DESCRIPTION, "SELECT ID, Description, Color FROM item_name_description ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_NAME_DESCRIPTION, "SELECT ID, Description, Color FROM item_name_description", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_NAME_DESCRIPTION, "SELECT MAX(ID) + 1 FROM item_name_description", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_NAME_DESCRIPTION, "SELECT ID, Description_lang FROM item_name_description_locale WHERE locale = ?", CONNECTION_SYNCH);
// ItemPriceBase.db2
- PrepareStatement(HOTFIX_SEL_ITEM_PRICE_BASE, "SELECT ID, ItemLevel, Armor, Weapon FROM item_price_base ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_PRICE_BASE, "SELECT ID, ItemLevel, Armor, Weapon FROM item_price_base", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_PRICE_BASE, "SELECT MAX(ID) + 1 FROM item_price_base", CONNECTION_SYNCH);
// ItemSearchName.db2
PrepareStatement(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT AllowableRace, Display, ID, OverallQualityID, ExpansionID, MinFactionID, MinReputation, "
"AllowableClass, RequiredLevel, RequiredSkill, RequiredSkillRank, RequiredAbility, ItemLevel, Flags1, Flags2, Flags3, Flags4"
- " FROM item_search_name ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM item_search_name", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT MAX(ID) + 1 FROM item_search_name", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT ID, Display_lang FROM item_search_name_locale WHERE locale = ?", CONNECTION_SYNCH);
// ItemSet.db2
PrepareStatement(HOTFIX_SEL_ITEM_SET, "SELECT ID, Name, SetFlags, RequiredSkill, RequiredSkillRank, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, "
- "ItemID6, ItemID7, ItemID8, ItemID9, ItemID10, ItemID11, ItemID12, ItemID13, ItemID14, ItemID15, ItemID16, ItemID17 FROM item_set"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ItemID6, ItemID7, ItemID8, ItemID9, ItemID10, ItemID11, ItemID12, ItemID13, ItemID14, ItemID15, ItemID16, ItemID17 FROM item_set", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SET, "SELECT MAX(ID) + 1 FROM item_set", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SET, "SELECT ID, Name_lang FROM item_set_locale WHERE locale = ?", CONNECTION_SYNCH);
// ItemSetSpell.db2
- PrepareStatement(HOTFIX_SEL_ITEM_SET_SPELL, "SELECT ID, ChrSpecID, SpellID, Threshold, ItemSetID FROM item_set_spell ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_SET_SPELL, "SELECT ID, ChrSpecID, SpellID, Threshold, ItemSetID FROM item_set_spell", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SET_SPELL, "SELECT MAX(ID) + 1 FROM item_set_spell", CONNECTION_SYNCH);
// ItemSparse.db2
PrepareStatement(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, AllowableRace, Description, Display3, Display2, Display1, Display, DmgVariance, "
@@ -636,36 +757,40 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"SocketType1, SocketType2, SocketType3, SheatheType, Material, PageMaterialID, LanguageID, Bonding, DamageDamageType, StatModifierBonusStat1, "
"StatModifierBonusStat2, StatModifierBonusStat3, StatModifierBonusStat4, StatModifierBonusStat5, StatModifierBonusStat6, "
"StatModifierBonusStat7, StatModifierBonusStat8, StatModifierBonusStat9, StatModifierBonusStat10, ContainerSlots, MinReputation, "
- "RequiredPVPMedal, RequiredPVPRank, RequiredLevel, InventoryType, OverallQualityID FROM item_sparse ORDER BY ID DESC", CONNECTION_SYNCH);
+ "RequiredPVPMedal, RequiredPVPRank, RequiredLevel, InventoryType, OverallQualityID FROM item_sparse", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SPARSE, "SELECT MAX(ID) + 1 FROM item_sparse", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, Description_lang, Display3_lang, Display2_lang, Display1_lang, Display_lang"
" FROM item_sparse_locale WHERE locale = ?", CONNECTION_SYNCH);
// ItemSpec.db2
- PrepareStatement(HOTFIX_SEL_ITEM_SPEC, "SELECT ID, MinLevel, MaxLevel, ItemType, PrimaryStat, SecondaryStat, SpecializationID FROM item_spec"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_SPEC, "SELECT ID, MinLevel, MaxLevel, ItemType, PrimaryStat, SecondaryStat, SpecializationID FROM item_spec", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SPEC, "SELECT MAX(ID) + 1 FROM item_spec", CONNECTION_SYNCH);
// ItemSpecOverride.db2
- PrepareStatement(HOTFIX_SEL_ITEM_SPEC_OVERRIDE, "SELECT ID, SpecID, ItemID FROM item_spec_override ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_SPEC_OVERRIDE, "SELECT ID, SpecID, ItemID FROM item_spec_override", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SPEC_OVERRIDE, "SELECT MAX(ID) + 1 FROM item_spec_override", CONNECTION_SYNCH);
// ItemXBonusTree.db2
- PrepareStatement(HOTFIX_SEL_ITEM_X_BONUS_TREE, "SELECT ID, ItemBonusTreeID, ItemID FROM item_x_bonus_tree ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_ITEM_X_BONUS_TREE, "SELECT ID, ItemBonusTreeID, ItemID FROM item_x_bonus_tree", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_X_BONUS_TREE, "SELECT MAX(ID) + 1 FROM item_x_bonus_tree", CONNECTION_SYNCH);
// Keychain.db2
PrepareStatement(HOTFIX_SEL_KEYCHAIN, "SELECT ID, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8, Key9, Key10, Key11, Key12, Key13, Key14, Key15, "
- "Key16, Key17, Key18, Key19, Key20, Key21, Key22, Key23, Key24, Key25, Key26, Key27, Key28, Key29, Key30, Key31, Key32 FROM keychain"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Key16, Key17, Key18, Key19, Key20, Key21, Key22, Key23, Key24, Key25, Key26, Key27, Key28, Key29, Key30, Key31, Key32 FROM keychain", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_KEYCHAIN, "SELECT MAX(ID) + 1 FROM keychain", CONNECTION_SYNCH);
// LfgDungeons.db2
PrepareStatement(HOTFIX_SEL_LFG_DUNGEONS, "SELECT ID, Name, Description, MinLevel, MaxLevel, TypeID, Subtype, Faction, IconTextureFileID, "
"RewardsBgTextureFileID, PopupBgTextureFileID, ExpansionLevel, MapID, DifficultyID, MinGear, GroupID, OrderIndex, RequiredPlayerConditionId, "
"TargetLevel, TargetLevelMin, TargetLevelMax, RandomID, ScenarioID, FinalEncounterID, CountTank, CountHealer, CountDamage, MinCountTank, "
- "MinCountHealer, MinCountDamage, BonusReputationAmount, MentorItemLevel, MentorCharLevel, Flags1, Flags2 FROM lfg_dungeons ORDER BY ID DESC", CONNECTION_SYNCH);
+ "MinCountHealer, MinCountDamage, BonusReputationAmount, MentorItemLevel, MentorCharLevel, Flags1, Flags2 FROM lfg_dungeons", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_LFG_DUNGEONS, "SELECT MAX(ID) + 1 FROM lfg_dungeons", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_LFG_DUNGEONS, "SELECT ID, Name_lang, Description_lang FROM lfg_dungeons_locale WHERE locale = ?", CONNECTION_SYNCH);
// Light.db2
PrepareStatement(HOTFIX_SEL_LIGHT, "SELECT ID, GameCoordsX, GameCoordsY, GameCoordsZ, GameFalloffStart, GameFalloffEnd, ContinentID, "
- "LightParamsID1, LightParamsID2, LightParamsID3, LightParamsID4, LightParamsID5, LightParamsID6, LightParamsID7, LightParamsID8 FROM light"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ "LightParamsID1, LightParamsID2, LightParamsID3, LightParamsID4, LightParamsID5, LightParamsID6, LightParamsID7, LightParamsID8 FROM light", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_LIGHT, "SELECT MAX(ID) + 1 FROM light", CONNECTION_SYNCH);
// LiquidType.db2
PrepareStatement(HOTFIX_SEL_LIQUID_TYPE, "SELECT ID, Name, Texture1, Texture2, Texture3, Texture4, Texture5, Texture6, Flags, SoundBank, SoundID, "
@@ -673,77 +798,93 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"ParticleTexSlots, MaterialID, MinimapStaticCol, FrameCountTexture1, FrameCountTexture2, FrameCountTexture3, FrameCountTexture4, "
"FrameCountTexture5, FrameCountTexture6, Color1, Color2, Float1, Float2, Float3, `Float4`, Float5, Float6, Float7, `Float8`, Float9, Float10, "
"Float11, Float12, Float13, Float14, Float15, Float16, Float17, Float18, `Int1`, `Int2`, `Int3`, `Int4`, Coefficient1, Coefficient2, "
- "Coefficient3, Coefficient4 FROM liquid_type ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Coefficient3, Coefficient4 FROM liquid_type", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_LIQUID_TYPE, "SELECT MAX(ID) + 1 FROM liquid_type", CONNECTION_SYNCH);
// Lock.db2
PrepareStatement(HOTFIX_SEL_LOCK, "SELECT ID, Index1, Index2, Index3, Index4, Index5, Index6, Index7, Index8, Skill1, Skill2, Skill3, Skill4, "
"Skill5, Skill6, Skill7, Skill8, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Action1, Action2, Action3, Action4, Action5, "
- "Action6, Action7, Action8 FROM `lock` ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Action6, Action7, Action8 FROM `lock`", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_LOCK, "SELECT MAX(ID) + 1 FROM `lock`", CONNECTION_SYNCH);
// MailTemplate.db2
- PrepareStatement(HOTFIX_SEL_MAIL_TEMPLATE, "SELECT ID, Body FROM mail_template ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_MAIL_TEMPLATE, "SELECT ID, Body FROM mail_template", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_MAIL_TEMPLATE, "SELECT MAX(ID) + 1 FROM mail_template", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_MAIL_TEMPLATE, "SELECT ID, Body_lang FROM mail_template_locale WHERE locale = ?", CONNECTION_SYNCH);
// Map.db2
PrepareStatement(HOTFIX_SEL_MAP, "SELECT ID, Directory, MapName, MapDescription0, MapDescription1, PvpShortDescription, PvpLongDescription, "
"CorpseX, CorpseY, MapType, InstanceType, ExpansionID, AreaTableID, LoadingScreenID, TimeOfDayOverride, ParentMapID, CosmeticParentMapID, "
- "TimeOffset, MinimapIconScale, CorpseMapID, MaxPlayers, WindSettingsID, ZmpFileDataID, WdtFileDataID, Flags1, Flags2 FROM map ORDER BY ID DESC", CONNECTION_SYNCH);
+ "TimeOffset, MinimapIconScale, CorpseMapID, MaxPlayers, WindSettingsID, ZmpFileDataID, WdtFileDataID, Flags1, Flags2 FROM map", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_MAP, "SELECT MAX(ID) + 1 FROM map", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_MAP, "SELECT ID, MapName_lang, MapDescription0_lang, MapDescription1_lang, PvpShortDescription_lang, "
"PvpLongDescription_lang FROM map_locale WHERE locale = ?", CONNECTION_SYNCH);
// MapDifficulty.db2
PrepareStatement(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message, DifficultyID, LockID, ResetInterval, MaxPlayers, ItemContext, "
- "ItemContextPickerID, Flags, ContentTuningID, MapID FROM map_difficulty ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ItemContextPickerID, Flags, ContentTuningID, MapID FROM map_difficulty", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT MAX(ID) + 1 FROM map_difficulty", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message_lang FROM map_difficulty_locale WHERE locale = ?", CONNECTION_SYNCH);
// ModifierTree.db2
- PrepareStatement(HOTFIX_SEL_MODIFIER_TREE, "SELECT ID, Parent, Operator, Amount, Type, Asset, SecondaryAsset, TertiaryAsset FROM modifier_tree"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_MODIFIER_TREE, "SELECT ID, Parent, Operator, Amount, Type, Asset, SecondaryAsset, TertiaryAsset FROM modifier_tree", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_MODIFIER_TREE, "SELECT MAX(ID) + 1 FROM modifier_tree", CONNECTION_SYNCH);
// Mount.db2
PrepareStatement(HOTFIX_SEL_MOUNT, "SELECT Name, SourceText, Description, ID, MountTypeID, Flags, SourceTypeEnum, SourceSpellID, "
- "PlayerConditionID, MountFlyRideHeight, UiModelSceneID, MountSpecialRiderAnimKitID, MountSpecialSpellVisualKitID FROM mount ORDER BY ID DESC", CONNECTION_SYNCH);
+ "PlayerConditionID, MountFlyRideHeight, UiModelSceneID, MountSpecialRiderAnimKitID, MountSpecialSpellVisualKitID FROM mount", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOUNT, "SELECT MAX(ID) + 1 FROM mount", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_MOUNT, "SELECT ID, Name_lang, SourceText_lang, Description_lang FROM mount_locale WHERE locale = ?", CONNECTION_SYNCH);
// MountCapability.db2
PrepareStatement(HOTFIX_SEL_MOUNT_CAPABILITY, "SELECT ID, Flags, ReqRidingSkill, ReqAreaID, ReqSpellAuraID, ReqSpellKnownID, ModSpellAuraID, "
- "ReqMapID, PlayerConditionID FROM mount_capability ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ReqMapID, PlayerConditionID FROM mount_capability", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOUNT_CAPABILITY, "SELECT MAX(ID) + 1 FROM mount_capability", CONNECTION_SYNCH);
// MountTypeXCapability.db2
- PrepareStatement(HOTFIX_SEL_MOUNT_TYPE_X_CAPABILITY, "SELECT ID, MountTypeID, MountCapabilityID, OrderIndex FROM mount_type_x_capability"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_MOUNT_TYPE_X_CAPABILITY, "SELECT ID, MountTypeID, MountCapabilityID, OrderIndex FROM mount_type_x_capability", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOUNT_TYPE_X_CAPABILITY, "SELECT MAX(ID) + 1 FROM mount_type_x_capability", CONNECTION_SYNCH);
// MountXDisplay.db2
- PrepareStatement(HOTFIX_SEL_MOUNT_X_DISPLAY, "SELECT ID, CreatureDisplayInfoID, PlayerConditionID, MountID FROM mount_x_display ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_MOUNT_X_DISPLAY, "SELECT ID, CreatureDisplayInfoID, PlayerConditionID, MountID FROM mount_x_display", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOUNT_X_DISPLAY, "SELECT MAX(ID) + 1 FROM mount_x_display", CONNECTION_SYNCH);
// Movie.db2
- PrepareStatement(HOTFIX_SEL_MOVIE, "SELECT ID, Volume, KeyID, AudioFileDataID, SubtitleFileDataID FROM movie ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_MOVIE, "SELECT ID, Volume, KeyID, AudioFileDataID, SubtitleFileDataID FROM movie", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOVIE, "SELECT MAX(ID) + 1 FROM movie", CONNECTION_SYNCH);
// NameGen.db2
- PrepareStatement(HOTFIX_SEL_NAME_GEN, "SELECT ID, Name, RaceID, Sex FROM name_gen ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_NAME_GEN, "SELECT ID, Name, RaceID, Sex FROM name_gen", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_NAME_GEN, "SELECT MAX(ID) + 1 FROM name_gen", CONNECTION_SYNCH);
// NamesProfanity.db2
- PrepareStatement(HOTFIX_SEL_NAMES_PROFANITY, "SELECT ID, Name, Language FROM names_profanity ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_NAMES_PROFANITY, "SELECT ID, Name, Language FROM names_profanity", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_NAMES_PROFANITY, "SELECT MAX(ID) + 1 FROM names_profanity", CONNECTION_SYNCH);
// NamesReserved.db2
- PrepareStatement(HOTFIX_SEL_NAMES_RESERVED, "SELECT ID, Name FROM names_reserved ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_NAMES_RESERVED, "SELECT ID, Name FROM names_reserved", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_NAMES_RESERVED, "SELECT MAX(ID) + 1 FROM names_reserved", CONNECTION_SYNCH);
// NamesReservedLocale.db2
- PrepareStatement(HOTFIX_SEL_NAMES_RESERVED_LOCALE, "SELECT ID, Name, LocaleMask FROM names_reserved_locale ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_NAMES_RESERVED_LOCALE, "SELECT ID, Name, LocaleMask FROM names_reserved_locale", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_NAMES_RESERVED_LOCALE, "SELECT MAX(ID) + 1 FROM names_reserved_locale", CONNECTION_SYNCH);
// NumTalentsAtLevel.db2
- PrepareStatement(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter FROM num_talents_at_level"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter FROM num_talents_at_level", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT MAX(ID) + 1 FROM num_talents_at_level", CONNECTION_SYNCH);
// OverrideSpellData.db2
PrepareStatement(HOTFIX_SEL_OVERRIDE_SPELL_DATA, "SELECT ID, Spells1, Spells2, Spells3, Spells4, Spells5, Spells6, Spells7, Spells8, Spells9, "
- "Spells10, PlayerActionBarFileDataID, Flags FROM override_spell_data ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Spells10, PlayerActionBarFileDataID, Flags FROM override_spell_data", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_OVERRIDE_SPELL_DATA, "SELECT MAX(ID) + 1 FROM override_spell_data", CONNECTION_SYNCH);
// Phase.db2
- PrepareStatement(HOTFIX_SEL_PHASE, "SELECT ID, Flags FROM phase ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_PHASE, "SELECT ID, Flags FROM phase", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_PHASE, "SELECT MAX(ID) + 1 FROM phase", CONNECTION_SYNCH);
// PhaseXPhaseGroup.db2
- PrepareStatement(HOTFIX_SEL_PHASE_X_PHASE_GROUP, "SELECT ID, PhaseID, PhaseGroupID FROM phase_x_phase_group ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_PHASE_X_PHASE_GROUP, "SELECT ID, PhaseID, PhaseGroupID FROM phase_x_phase_group", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_PHASE_X_PHASE_GROUP, "SELECT MAX(ID) + 1 FROM phase_x_phase_group", CONNECTION_SYNCH);
// PlayerCondition.db2
PrepareStatement(HOTFIX_SEL_PLAYER_CONDITION, "SELECT RaceMask, FailureDescription, ID, MinLevel, MaxLevel, ClassMask, SkillLogic, LanguageID, "
@@ -762,164 +903,203 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, LfgCompare2, LfgCompare3, LfgCompare4, LfgValue1, LfgValue2, LfgValue3, LfgValue4, "
"CurrencyID1, CurrencyID2, CurrencyID3, CurrencyID4, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, QuestKillMonster1, "
"QuestKillMonster2, QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, QuestKillMonster6, MovementFlags1, MovementFlags2"
- " FROM player_condition ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM player_condition", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_PLAYER_CONDITION, "SELECT MAX(ID) + 1 FROM player_condition", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_PLAYER_CONDITION, "SELECT ID, FailureDescription_lang FROM player_condition_locale WHERE locale = ?", CONNECTION_SYNCH);
// PowerDisplay.db2
- PrepareStatement(HOTFIX_SEL_POWER_DISPLAY, "SELECT ID, GlobalStringBaseTag, ActualType, Red, Green, Blue FROM power_display ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_POWER_DISPLAY, "SELECT ID, GlobalStringBaseTag, ActualType, Red, Green, Blue FROM power_display", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_POWER_DISPLAY, "SELECT MAX(ID) + 1 FROM power_display", CONNECTION_SYNCH);
// PowerType.db2
PrepareStatement(HOTFIX_SEL_POWER_TYPE, "SELECT NameGlobalStringTag, CostGlobalStringTag, ID, PowerTypeEnum, MinPower, MaxBasePower, CenterPower, "
- "DefaultPower, DisplayModifier, RegenInterruptTimeMS, RegenPeace, RegenCombat, Flags FROM power_type ORDER BY ID DESC", CONNECTION_SYNCH);
+ "DefaultPower, DisplayModifier, RegenInterruptTimeMS, RegenPeace, RegenCombat, Flags FROM power_type", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_POWER_TYPE, "SELECT MAX(ID) + 1 FROM power_type", CONNECTION_SYNCH);
// PrestigeLevelInfo.db2
PrepareStatement(HOTFIX_SEL_PRESTIGE_LEVEL_INFO, "SELECT ID, Name, PrestigeLevel, BadgeTextureFileDataID, Flags, AwardedAchievementID"
- " FROM prestige_level_info ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM prestige_level_info", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_PRESTIGE_LEVEL_INFO, "SELECT MAX(ID) + 1 FROM prestige_level_info", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_PRESTIGE_LEVEL_INFO, "SELECT ID, Name_lang FROM prestige_level_info_locale WHERE locale = ?", CONNECTION_SYNCH);
// PvpDifficulty.db2
- PrepareStatement(HOTFIX_SEL_PVP_DIFFICULTY, "SELECT ID, RangeIndex, MinLevel, MaxLevel, MapID FROM pvp_difficulty ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_PVP_DIFFICULTY, "SELECT ID, RangeIndex, MinLevel, MaxLevel, MapID FROM pvp_difficulty", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_PVP_DIFFICULTY, "SELECT MAX(ID) + 1 FROM pvp_difficulty", CONNECTION_SYNCH);
// PvpItem.db2
- PrepareStatement(HOTFIX_SEL_PVP_ITEM, "SELECT ID, ItemID, ItemLevelDelta FROM pvp_item ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_PVP_ITEM, "SELECT ID, ItemID, ItemLevelDelta FROM pvp_item", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_PVP_ITEM, "SELECT MAX(ID) + 1 FROM pvp_item", CONNECTION_SYNCH);
// PvpTalent.db2
PrepareStatement(HOTFIX_SEL_PVP_TALENT, "SELECT Description, ID, SpecID, SpellID, OverridesSpellID, Flags, ActionBarSpellID, PvpTalentCategoryID, "
- "LevelRequired FROM pvp_talent ORDER BY ID DESC", CONNECTION_SYNCH);
+ "LevelRequired FROM pvp_talent", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_PVP_TALENT, "SELECT MAX(ID) + 1 FROM pvp_talent", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_PVP_TALENT, "SELECT ID, Description_lang FROM pvp_talent_locale WHERE locale = ?", CONNECTION_SYNCH);
// PvpTalentCategory.db2
- PrepareStatement(HOTFIX_SEL_PVP_TALENT_CATEGORY, "SELECT ID, TalentSlotMask FROM pvp_talent_category ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_PVP_TALENT_CATEGORY, "SELECT ID, TalentSlotMask FROM pvp_talent_category", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_PVP_TALENT_CATEGORY, "SELECT MAX(ID) + 1 FROM pvp_talent_category", CONNECTION_SYNCH);
// PvpTalentSlotUnlock.db2
PrepareStatement(HOTFIX_SEL_PVP_TALENT_SLOT_UNLOCK, "SELECT ID, Slot, LevelRequired, DeathKnightLevelRequired, DemonHunterLevelRequired"
- " FROM pvp_talent_slot_unlock ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM pvp_talent_slot_unlock", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_PVP_TALENT_SLOT_UNLOCK, "SELECT MAX(ID) + 1 FROM pvp_talent_slot_unlock", CONNECTION_SYNCH);
// QuestFactionReward.db2
PrepareStatement(HOTFIX_SEL_QUEST_FACTION_REWARD, "SELECT ID, Difficulty1, Difficulty2, Difficulty3, Difficulty4, Difficulty5, Difficulty6, "
- "Difficulty7, Difficulty8, Difficulty9, Difficulty10 FROM quest_faction_reward ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Difficulty7, Difficulty8, Difficulty9, Difficulty10 FROM quest_faction_reward", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_QUEST_FACTION_REWARD, "SELECT MAX(ID) + 1 FROM quest_faction_reward", CONNECTION_SYNCH);
// QuestMoneyReward.db2
PrepareStatement(HOTFIX_SEL_QUEST_MONEY_REWARD, "SELECT ID, Difficulty1, Difficulty2, Difficulty3, Difficulty4, Difficulty5, Difficulty6, "
- "Difficulty7, Difficulty8, Difficulty9, Difficulty10 FROM quest_money_reward ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Difficulty7, Difficulty8, Difficulty9, Difficulty10 FROM quest_money_reward", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_QUEST_MONEY_REWARD, "SELECT MAX(ID) + 1 FROM quest_money_reward", CONNECTION_SYNCH);
// QuestPackageItem.db2
- PrepareStatement(HOTFIX_SEL_QUEST_PACKAGE_ITEM, "SELECT ID, PackageID, ItemID, ItemQuantity, DisplayType FROM quest_package_item ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_QUEST_PACKAGE_ITEM, "SELECT ID, PackageID, ItemID, ItemQuantity, DisplayType FROM quest_package_item", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_QUEST_PACKAGE_ITEM, "SELECT MAX(ID) + 1 FROM quest_package_item", CONNECTION_SYNCH);
// QuestSort.db2
- PrepareStatement(HOTFIX_SEL_QUEST_SORT, "SELECT ID, SortName, UiOrderIndex FROM quest_sort ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_QUEST_SORT, "SELECT ID, SortName, UiOrderIndex FROM quest_sort", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_QUEST_SORT, "SELECT MAX(ID) + 1 FROM quest_sort", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_QUEST_SORT, "SELECT ID, SortName_lang FROM quest_sort_locale WHERE locale = ?", CONNECTION_SYNCH);
// QuestV2.db2
- PrepareStatement(HOTFIX_SEL_QUEST_V2, "SELECT ID, UniqueBitFlag FROM quest_v2 ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_QUEST_V2, "SELECT ID, UniqueBitFlag FROM quest_v2", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_QUEST_V2, "SELECT MAX(ID) + 1 FROM quest_v2", CONNECTION_SYNCH);
// QuestXp.db2
PrepareStatement(HOTFIX_SEL_QUEST_XP, "SELECT ID, Difficulty1, Difficulty2, Difficulty3, Difficulty4, Difficulty5, Difficulty6, Difficulty7, "
- "Difficulty8, Difficulty9, Difficulty10 FROM quest_xp ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Difficulty8, Difficulty9, Difficulty10 FROM quest_xp", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_QUEST_XP, "SELECT MAX(ID) + 1 FROM quest_xp", CONNECTION_SYNCH);
// RandPropPoints.db2
PrepareStatement(HOTFIX_SEL_RAND_PROP_POINTS, "SELECT ID, DamageReplaceStat, DamageSecondary, Epic1, Epic2, Epic3, Epic4, Epic5, Superior1, "
- "Superior2, Superior3, Superior4, Superior5, Good1, Good2, Good3, Good4, Good5 FROM rand_prop_points ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Superior2, Superior3, Superior4, Superior5, Good1, Good2, Good3, Good4, Good5 FROM rand_prop_points", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_RAND_PROP_POINTS, "SELECT MAX(ID) + 1 FROM rand_prop_points", CONNECTION_SYNCH);
// RewardPack.db2
PrepareStatement(HOTFIX_SEL_REWARD_PACK, "SELECT ID, CharTitleID, Money, ArtifactXPDifficulty, ArtifactXPMultiplier, ArtifactXPCategoryID, "
- "TreasurePickerID FROM reward_pack ORDER BY ID DESC", CONNECTION_SYNCH);
+ "TreasurePickerID FROM reward_pack", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_REWARD_PACK, "SELECT MAX(ID) + 1 FROM reward_pack", CONNECTION_SYNCH);
// RewardPackXCurrencyType.db2
- PrepareStatement(HOTFIX_SEL_REWARD_PACK_X_CURRENCY_TYPE, "SELECT ID, CurrencyTypeID, Quantity, RewardPackID FROM reward_pack_x_currency_type"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_REWARD_PACK_X_CURRENCY_TYPE, "SELECT ID, CurrencyTypeID, Quantity, RewardPackID FROM reward_pack_x_currency_type", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_REWARD_PACK_X_CURRENCY_TYPE, "SELECT MAX(ID) + 1 FROM reward_pack_x_currency_type", CONNECTION_SYNCH);
// RewardPackXItem.db2
- PrepareStatement(HOTFIX_SEL_REWARD_PACK_X_ITEM, "SELECT ID, ItemID, ItemQuantity, RewardPackID FROM reward_pack_x_item ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_REWARD_PACK_X_ITEM, "SELECT ID, ItemID, ItemQuantity, RewardPackID FROM reward_pack_x_item", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_REWARD_PACK_X_ITEM, "SELECT MAX(ID) + 1 FROM reward_pack_x_item", CONNECTION_SYNCH);
// ScalingStatDistribution.db2
PrepareStatement(HOTFIX_SEL_SCALING_STAT_DISTRIBUTION, "SELECT ID, PlayerLevelToItemLevelCurveID, MinLevel, MaxLevel"
- " FROM scaling_stat_distribution ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM scaling_stat_distribution", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCALING_STAT_DISTRIBUTION, "SELECT MAX(ID) + 1 FROM scaling_stat_distribution", CONNECTION_SYNCH);
// Scenario.db2
- PrepareStatement(HOTFIX_SEL_SCENARIO, "SELECT ID, Name, AreaTableID, Type, Flags, UiTextureKitID FROM scenario ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SCENARIO, "SELECT ID, Name, AreaTableID, Type, Flags, UiTextureKitID FROM scenario", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCENARIO, "SELECT MAX(ID) + 1 FROM scenario", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SCENARIO, "SELECT ID, Name_lang FROM scenario_locale WHERE locale = ?", CONNECTION_SYNCH);
// ScenarioStep.db2
PrepareStatement(HOTFIX_SEL_SCENARIO_STEP, "SELECT ID, Description, Title, ScenarioID, Criteriatreeid, RewardQuestID, RelatedStep, Supersedes, "
- "OrderIndex, Flags, VisibilityPlayerConditionID, WidgetSetID FROM scenario_step ORDER BY ID DESC", CONNECTION_SYNCH);
+ "OrderIndex, Flags, VisibilityPlayerConditionID, WidgetSetID FROM scenario_step", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCENARIO_STEP, "SELECT MAX(ID) + 1 FROM scenario_step", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SCENARIO_STEP, "SELECT ID, Description_lang, Title_lang FROM scenario_step_locale WHERE locale = ?", CONNECTION_SYNCH);
// SceneScript.db2
- PrepareStatement(HOTFIX_SEL_SCENE_SCRIPT, "SELECT ID, FirstSceneScriptID, NextSceneScriptID FROM scene_script ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SCENE_SCRIPT, "SELECT ID, FirstSceneScriptID, NextSceneScriptID FROM scene_script", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCENE_SCRIPT, "SELECT MAX(ID) + 1 FROM scene_script", CONNECTION_SYNCH);
// SceneScriptGlobalText.db2
- PrepareStatement(HOTFIX_SEL_SCENE_SCRIPT_GLOBAL_TEXT, "SELECT ID, Name, Script FROM scene_script_global_text ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SCENE_SCRIPT_GLOBAL_TEXT, "SELECT ID, Name, Script FROM scene_script_global_text", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCENE_SCRIPT_GLOBAL_TEXT, "SELECT MAX(ID) + 1 FROM scene_script_global_text", CONNECTION_SYNCH);
// SceneScriptPackage.db2
- PrepareStatement(HOTFIX_SEL_SCENE_SCRIPT_PACKAGE, "SELECT ID, Name FROM scene_script_package ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SCENE_SCRIPT_PACKAGE, "SELECT ID, Name FROM scene_script_package", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCENE_SCRIPT_PACKAGE, "SELECT MAX(ID) + 1 FROM scene_script_package", CONNECTION_SYNCH);
// SceneScriptText.db2
- PrepareStatement(HOTFIX_SEL_SCENE_SCRIPT_TEXT, "SELECT ID, Name, Script FROM scene_script_text ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SCENE_SCRIPT_TEXT, "SELECT ID, Name, Script FROM scene_script_text", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCENE_SCRIPT_TEXT, "SELECT MAX(ID) + 1 FROM scene_script_text", CONNECTION_SYNCH);
// SkillLine.db2
PrepareStatement(HOTFIX_SEL_SKILL_LINE, "SELECT DisplayName, AlternateVerb, Description, HordeDisplayName, OverrideSourceInfoDisplayName, ID, "
- "CategoryID, SpellIconFileID, CanLink, ParentSkillLineID, ParentTierIndex, Flags, SpellBookSpellID FROM skill_line ORDER BY ID DESC", CONNECTION_SYNCH);
+ "CategoryID, SpellIconFileID, CanLink, ParentSkillLineID, ParentTierIndex, Flags, SpellBookSpellID FROM skill_line", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SKILL_LINE, "SELECT MAX(ID) + 1 FROM skill_line", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SKILL_LINE, "SELECT ID, DisplayName_lang, AlternateVerb_lang, Description_lang, HordeDisplayName_lang"
" FROM skill_line_locale WHERE locale = ?", CONNECTION_SYNCH);
// SkillLineAbility.db2
PrepareStatement(HOTFIX_SEL_SKILL_LINE_ABILITY, "SELECT RaceMask, ID, SkillLine, Spell, MinSkillLineRank, ClassMask, SupercedesSpell, "
"AcquireMethod, TrivialSkillLineRankHigh, TrivialSkillLineRankLow, Flags, NumSkillUps, UniqueBit, TradeSkillCategoryID, SkillupSkillLineID"
- " FROM skill_line_ability ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM skill_line_ability", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SKILL_LINE_ABILITY, "SELECT MAX(ID) + 1 FROM skill_line_ability", CONNECTION_SYNCH);
// SkillRaceClassInfo.db2
PrepareStatement(HOTFIX_SEL_SKILL_RACE_CLASS_INFO, "SELECT ID, RaceMask, SkillID, ClassMask, Flags, Availability, MinLevel, SkillTierID"
- " FROM skill_race_class_info ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM skill_race_class_info", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SKILL_RACE_CLASS_INFO, "SELECT MAX(ID) + 1 FROM skill_race_class_info", CONNECTION_SYNCH);
// SoundKit.db2
PrepareStatement(HOTFIX_SEL_SOUND_KIT, "SELECT ID, SoundType, VolumeFloat, Flags, MinDistance, DistanceCutoff, EAXDef, SoundKitAdvancedID, "
"VolumeVariationPlus, VolumeVariationMinus, PitchVariationPlus, PitchVariationMinus, DialogType, PitchAdjust, BusOverwriteID, MaxInstances"
- " FROM sound_kit ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM sound_kit", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SOUND_KIT, "SELECT MAX(ID) + 1 FROM sound_kit", CONNECTION_SYNCH);
// SpecializationSpells.db2
PrepareStatement(HOTFIX_SEL_SPECIALIZATION_SPELLS, "SELECT Description, ID, SpecID, SpellID, OverridesSpellID, DisplayOrder"
- " FROM specialization_spells ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM specialization_spells", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPECIALIZATION_SPELLS, "SELECT MAX(ID) + 1 FROM specialization_spells", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SPECIALIZATION_SPELLS, "SELECT ID, Description_lang FROM specialization_spells_locale WHERE locale = ?", CONNECTION_SYNCH);
// SpecSetMember.db2
- PrepareStatement(HOTFIX_SEL_SPEC_SET_MEMBER, "SELECT ID, ChrSpecializationID, SpecSetID FROM spec_set_member ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPEC_SET_MEMBER, "SELECT ID, ChrSpecializationID, SpecSetID FROM spec_set_member", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPEC_SET_MEMBER, "SELECT MAX(ID) + 1 FROM spec_set_member", CONNECTION_SYNCH);
// SpellAuraOptions.db2
PrepareStatement(HOTFIX_SEL_SPELL_AURA_OPTIONS, "SELECT ID, DifficultyID, CumulativeAura, ProcCategoryRecovery, ProcChance, ProcCharges, "
- "SpellProcsPerMinuteID, ProcTypeMask1, ProcTypeMask2, SpellID FROM spell_aura_options ORDER BY ID DESC", CONNECTION_SYNCH);
+ "SpellProcsPerMinuteID, ProcTypeMask1, ProcTypeMask2, SpellID FROM spell_aura_options", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_AURA_OPTIONS, "SELECT MAX(ID) + 1 FROM spell_aura_options", CONNECTION_SYNCH);
// SpellAuraRestrictions.db2
PrepareStatement(HOTFIX_SEL_SPELL_AURA_RESTRICTIONS, "SELECT ID, DifficultyID, CasterAuraState, TargetAuraState, ExcludeCasterAuraState, "
"ExcludeTargetAuraState, CasterAuraSpell, TargetAuraSpell, ExcludeCasterAuraSpell, ExcludeTargetAuraSpell, SpellID"
- " FROM spell_aura_restrictions ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM spell_aura_restrictions", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_AURA_RESTRICTIONS, "SELECT MAX(ID) + 1 FROM spell_aura_restrictions", CONNECTION_SYNCH);
// SpellCastTimes.db2
- PrepareStatement(HOTFIX_SEL_SPELL_CAST_TIMES, "SELECT ID, Base, PerLevel, Minimum FROM spell_cast_times ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPELL_CAST_TIMES, "SELECT ID, Base, PerLevel, Minimum FROM spell_cast_times", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_CAST_TIMES, "SELECT MAX(ID) + 1 FROM spell_cast_times", CONNECTION_SYNCH);
// SpellCastingRequirements.db2
PrepareStatement(HOTFIX_SEL_SPELL_CASTING_REQUIREMENTS, "SELECT ID, SpellID, FacingCasterFlags, MinFactionID, MinReputation, RequiredAreasID, "
- "RequiredAuraVision, RequiresSpellFocus FROM spell_casting_requirements ORDER BY ID DESC", CONNECTION_SYNCH);
+ "RequiredAuraVision, RequiresSpellFocus FROM spell_casting_requirements", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_CASTING_REQUIREMENTS, "SELECT MAX(ID) + 1 FROM spell_casting_requirements", CONNECTION_SYNCH);
// SpellCategories.db2
PrepareStatement(HOTFIX_SEL_SPELL_CATEGORIES, "SELECT ID, DifficultyID, Category, DefenseType, DispelType, Mechanic, PreventionType, "
- "StartRecoveryCategory, ChargeCategory, SpellID FROM spell_categories ORDER BY ID DESC", CONNECTION_SYNCH);
+ "StartRecoveryCategory, ChargeCategory, SpellID FROM spell_categories", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_CATEGORIES, "SELECT MAX(ID) + 1 FROM spell_categories", CONNECTION_SYNCH);
// SpellCategory.db2
- PrepareStatement(HOTFIX_SEL_SPELL_CATEGORY, "SELECT ID, Name, Flags, UsesPerWeek, MaxCharges, ChargeRecoveryTime, TypeMask FROM spell_category"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPELL_CATEGORY, "SELECT ID, Name, Flags, UsesPerWeek, MaxCharges, ChargeRecoveryTime, TypeMask FROM spell_category", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_CATEGORY, "SELECT MAX(ID) + 1 FROM spell_category", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_CATEGORY, "SELECT ID, Name_lang FROM spell_category_locale WHERE locale = ?", CONNECTION_SYNCH);
// SpellClassOptions.db2
PrepareStatement(HOTFIX_SEL_SPELL_CLASS_OPTIONS, "SELECT ID, SpellID, ModalNextSpell, SpellClassSet, SpellClassMask1, SpellClassMask2, "
- "SpellClassMask3, SpellClassMask4 FROM spell_class_options ORDER BY ID DESC", CONNECTION_SYNCH);
+ "SpellClassMask3, SpellClassMask4 FROM spell_class_options", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_CLASS_OPTIONS, "SELECT MAX(ID) + 1 FROM spell_class_options", CONNECTION_SYNCH);
// SpellCooldowns.db2
PrepareStatement(HOTFIX_SEL_SPELL_COOLDOWNS, "SELECT ID, DifficultyID, CategoryRecoveryTime, RecoveryTime, StartRecoveryTime, SpellID"
- " FROM spell_cooldowns ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM spell_cooldowns", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_COOLDOWNS, "SELECT MAX(ID) + 1 FROM spell_cooldowns", CONNECTION_SYNCH);
// SpellDuration.db2
- PrepareStatement(HOTFIX_SEL_SPELL_DURATION, "SELECT ID, Duration, DurationPerLevel, MaxDuration FROM spell_duration ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPELL_DURATION, "SELECT ID, Duration, DurationPerLevel, MaxDuration FROM spell_duration", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_DURATION, "SELECT MAX(ID) + 1 FROM spell_duration", CONNECTION_SYNCH);
// SpellEffect.db2
PrepareStatement(HOTFIX_SEL_SPELL_EFFECT, "SELECT ID, EffectAura, DifficultyID, EffectIndex, Effect, EffectAmplitude, EffectAttributes, "
@@ -927,184 +1107,222 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"EffectPosFacing, EffectRealPointsPerLevel, EffectTriggerSpell, BonusCoefficientFromAP, PvpMultiplier, Coefficient, Variance, "
"ResourceCoefficient, GroupSizeBasePointsCoefficient, EffectBasePoints, EffectMiscValue1, EffectMiscValue2, EffectRadiusIndex1, "
"EffectRadiusIndex2, EffectSpellClassMask1, EffectSpellClassMask2, EffectSpellClassMask3, EffectSpellClassMask4, ImplicitTarget1, "
- "ImplicitTarget2, SpellID FROM spell_effect ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ImplicitTarget2, SpellID FROM spell_effect", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_EFFECT, "SELECT MAX(ID) + 1 FROM spell_effect", CONNECTION_SYNCH);
// SpellEquippedItems.db2
PrepareStatement(HOTFIX_SEL_SPELL_EQUIPPED_ITEMS, "SELECT ID, SpellID, EquippedItemClass, EquippedItemInvTypes, EquippedItemSubclass"
- " FROM spell_equipped_items ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM spell_equipped_items", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_EQUIPPED_ITEMS, "SELECT MAX(ID) + 1 FROM spell_equipped_items", CONNECTION_SYNCH);
// SpellFocusObject.db2
- PrepareStatement(HOTFIX_SEL_SPELL_FOCUS_OBJECT, "SELECT ID, Name FROM spell_focus_object ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPELL_FOCUS_OBJECT, "SELECT ID, Name FROM spell_focus_object", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_FOCUS_OBJECT, "SELECT MAX(ID) + 1 FROM spell_focus_object", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_FOCUS_OBJECT, "SELECT ID, Name_lang FROM spell_focus_object_locale WHERE locale = ?", CONNECTION_SYNCH);
// SpellInterrupts.db2
PrepareStatement(HOTFIX_SEL_SPELL_INTERRUPTS, "SELECT ID, DifficultyID, InterruptFlags, AuraInterruptFlags1, AuraInterruptFlags2, "
- "ChannelInterruptFlags1, ChannelInterruptFlags2, SpellID FROM spell_interrupts ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ChannelInterruptFlags1, ChannelInterruptFlags2, SpellID FROM spell_interrupts", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_INTERRUPTS, "SELECT MAX(ID) + 1 FROM spell_interrupts", CONNECTION_SYNCH);
// SpellItemEnchantment.db2
PrepareStatement(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name, HordeName, EffectArg1, EffectArg2, EffectArg3, EffectScalingPoints1, "
"EffectScalingPoints2, EffectScalingPoints3, TransmogPlayerConditionID, TransmogCost, IconFileDataID, EffectPointsMin1, EffectPointsMin2, "
"EffectPointsMin3, ItemVisual, Flags, RequiredSkillID, RequiredSkillRank, ItemLevel, Charges, Effect1, Effect2, Effect3, ScalingClass, "
- "ScalingClassRestricted, ConditionID, MinLevel, MaxLevel FROM spell_item_enchantment ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ScalingClassRestricted, ConditionID, MinLevel, MaxLevel FROM spell_item_enchantment", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT, "SELECT MAX(ID) + 1 FROM spell_item_enchantment", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name_lang, HordeName_lang FROM spell_item_enchantment_locale WHERE locale = ?", CONNECTION_SYNCH);
// SpellItemEnchantmentCondition.db2
PrepareStatement(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT_CONDITION, "SELECT ID, LtOperandType1, LtOperandType2, LtOperandType3, LtOperandType4, "
"LtOperandType5, LtOperand1, LtOperand2, LtOperand3, LtOperand4, LtOperand5, Operator1, Operator2, Operator3, Operator4, Operator5, "
"RtOperandType1, RtOperandType2, RtOperandType3, RtOperandType4, RtOperandType5, RtOperand1, RtOperand2, RtOperand3, RtOperand4, RtOperand5, "
- "Logic1, Logic2, Logic3, Logic4, Logic5 FROM spell_item_enchantment_condition ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Logic1, Logic2, Logic3, Logic4, Logic5 FROM spell_item_enchantment_condition", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT_CONDITION, "SELECT MAX(ID) + 1 FROM spell_item_enchantment_condition", CONNECTION_SYNCH);
// SpellLearnSpell.db2
- PrepareStatement(HOTFIX_SEL_SPELL_LEARN_SPELL, "SELECT ID, SpellID, LearnSpellID, OverridesSpellID FROM spell_learn_spell ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPELL_LEARN_SPELL, "SELECT ID, SpellID, LearnSpellID, OverridesSpellID FROM spell_learn_spell", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_LEARN_SPELL, "SELECT MAX(ID) + 1 FROM spell_learn_spell", CONNECTION_SYNCH);
// SpellLevels.db2
PrepareStatement(HOTFIX_SEL_SPELL_LEVELS, "SELECT ID, DifficultyID, BaseLevel, MaxLevel, SpellLevel, MaxPassiveAuraLevel, SpellID"
- " FROM spell_levels ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM spell_levels", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_LEVELS, "SELECT MAX(ID) + 1 FROM spell_levels", CONNECTION_SYNCH);
// SpellMisc.db2
PrepareStatement(HOTFIX_SEL_SPELL_MISC, "SELECT ID, Attributes1, Attributes2, Attributes3, Attributes4, Attributes5, Attributes6, Attributes7, "
"Attributes8, Attributes9, Attributes10, Attributes11, Attributes12, Attributes13, Attributes14, DifficultyID, CastingTimeIndex, "
"DurationIndex, RangeIndex, SchoolMask, Speed, LaunchDelay, MinDuration, SpellIconFileDataID, ActiveIconFileDataID, ContentTuningID, SpellID"
- " FROM spell_misc ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM spell_misc", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_MISC, "SELECT MAX(ID) + 1 FROM spell_misc", CONNECTION_SYNCH);
// SpellName.db2
- PrepareStatement(HOTFIX_SEL_SPELL_NAME, "SELECT ID, Name FROM spell_name ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPELL_NAME, "SELECT ID, Name FROM spell_name", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_NAME, "SELECT MAX(ID) + 1 FROM spell_name", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_NAME, "SELECT ID, Name_lang FROM spell_name_locale WHERE locale = ?", CONNECTION_SYNCH);
// SpellPower.db2
PrepareStatement(HOTFIX_SEL_SPELL_POWER, "SELECT ID, OrderIndex, ManaCost, ManaCostPerLevel, ManaPerSecond, PowerDisplayID, AltPowerBarID, "
- "PowerCostPct, PowerCostMaxPct, PowerPctPerSecond, PowerType, RequiredAuraSpellID, OptionalCost, SpellID FROM spell_power ORDER BY ID DESC", CONNECTION_SYNCH);
+ "PowerCostPct, PowerCostMaxPct, PowerPctPerSecond, PowerType, RequiredAuraSpellID, OptionalCost, SpellID FROM spell_power", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_POWER, "SELECT MAX(ID) + 1 FROM spell_power", CONNECTION_SYNCH);
// SpellPowerDifficulty.db2
- PrepareStatement(HOTFIX_SEL_SPELL_POWER_DIFFICULTY, "SELECT ID, DifficultyID, OrderIndex FROM spell_power_difficulty ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPELL_POWER_DIFFICULTY, "SELECT ID, DifficultyID, OrderIndex FROM spell_power_difficulty", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_POWER_DIFFICULTY, "SELECT MAX(ID) + 1 FROM spell_power_difficulty", CONNECTION_SYNCH);
// SpellProcsPerMinute.db2
- PrepareStatement(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE, "SELECT ID, BaseProcRate, Flags FROM spell_procs_per_minute ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE, "SELECT ID, BaseProcRate, Flags FROM spell_procs_per_minute", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE, "SELECT MAX(ID) + 1 FROM spell_procs_per_minute", CONNECTION_SYNCH);
// SpellProcsPerMinuteMod.db2
- PrepareStatement(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MOD, "SELECT ID, Type, Param, Coeff, SpellProcsPerMinuteID FROM spell_procs_per_minute_mod"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MOD, "SELECT ID, Type, Param, Coeff, SpellProcsPerMinuteID FROM spell_procs_per_minute_mod", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MOD, "SELECT MAX(ID) + 1 FROM spell_procs_per_minute_mod", CONNECTION_SYNCH);
// SpellRadius.db2
- PrepareStatement(HOTFIX_SEL_SPELL_RADIUS, "SELECT ID, Radius, RadiusPerLevel, RadiusMin, RadiusMax FROM spell_radius ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPELL_RADIUS, "SELECT ID, Radius, RadiusPerLevel, RadiusMin, RadiusMax FROM spell_radius", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_RADIUS, "SELECT MAX(ID) + 1 FROM spell_radius", CONNECTION_SYNCH);
// SpellRange.db2
PrepareStatement(HOTFIX_SEL_SPELL_RANGE, "SELECT ID, DisplayName, DisplayNameShort, Flags, RangeMin1, RangeMin2, RangeMax1, RangeMax2"
- " FROM spell_range ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM spell_range", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_RANGE, "SELECT MAX(ID) + 1 FROM spell_range", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_RANGE, "SELECT ID, DisplayName_lang, DisplayNameShort_lang FROM spell_range_locale WHERE locale = ?", CONNECTION_SYNCH);
// SpellReagents.db2
PrepareStatement(HOTFIX_SEL_SPELL_REAGENTS, "SELECT ID, SpellID, Reagent1, Reagent2, Reagent3, Reagent4, Reagent5, Reagent6, Reagent7, Reagent8, "
- "ReagentCount1, ReagentCount2, ReagentCount3, ReagentCount4, ReagentCount5, ReagentCount6, ReagentCount7, ReagentCount8 FROM spell_reagents"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ReagentCount1, ReagentCount2, ReagentCount3, ReagentCount4, ReagentCount5, ReagentCount6, ReagentCount7, ReagentCount8 FROM spell_reagents", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_REAGENTS, "SELECT MAX(ID) + 1 FROM spell_reagents", CONNECTION_SYNCH);
// SpellScaling.db2
- PrepareStatement(HOTFIX_SEL_SPELL_SCALING, "SELECT ID, SpellID, Class, MinScalingLevel, MaxScalingLevel, ScalesFromItemLevel FROM spell_scaling"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SPELL_SCALING, "SELECT ID, SpellID, Class, MinScalingLevel, MaxScalingLevel, ScalesFromItemLevel FROM spell_scaling", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_SCALING, "SELECT MAX(ID) + 1 FROM spell_scaling", CONNECTION_SYNCH);
// SpellShapeshift.db2
PrepareStatement(HOTFIX_SEL_SPELL_SHAPESHIFT, "SELECT ID, SpellID, StanceBarOrder, ShapeshiftExclude1, ShapeshiftExclude2, ShapeshiftMask1, "
- "ShapeshiftMask2 FROM spell_shapeshift ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ShapeshiftMask2 FROM spell_shapeshift", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_SHAPESHIFT, "SELECT MAX(ID) + 1 FROM spell_shapeshift", CONNECTION_SYNCH);
// SpellShapeshiftForm.db2
PrepareStatement(HOTFIX_SEL_SPELL_SHAPESHIFT_FORM, "SELECT ID, Name, CreatureType, Flags, AttackIconFileID, BonusActionBar, CombatRoundTime, "
"DamageVariance, MountTypeID, CreatureDisplayID1, CreatureDisplayID2, CreatureDisplayID3, CreatureDisplayID4, PresetSpellID1, PresetSpellID2, "
- "PresetSpellID3, PresetSpellID4, PresetSpellID5, PresetSpellID6, PresetSpellID7, PresetSpellID8 FROM spell_shapeshift_form ORDER BY ID DESC", CONNECTION_SYNCH);
+ "PresetSpellID3, PresetSpellID4, PresetSpellID5, PresetSpellID6, PresetSpellID7, PresetSpellID8 FROM spell_shapeshift_form", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_SHAPESHIFT_FORM, "SELECT MAX(ID) + 1 FROM spell_shapeshift_form", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SPELL_SHAPESHIFT_FORM, "SELECT ID, Name_lang FROM spell_shapeshift_form_locale WHERE locale = ?", CONNECTION_SYNCH);
// SpellTargetRestrictions.db2
PrepareStatement(HOTFIX_SEL_SPELL_TARGET_RESTRICTIONS, "SELECT ID, DifficultyID, ConeDegrees, MaxTargets, MaxTargetLevel, TargetCreatureType, "
- "Targets, Width, SpellID FROM spell_target_restrictions ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Targets, Width, SpellID FROM spell_target_restrictions", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_TARGET_RESTRICTIONS, "SELECT MAX(ID) + 1 FROM spell_target_restrictions", CONNECTION_SYNCH);
// SpellTotems.db2
PrepareStatement(HOTFIX_SEL_SPELL_TOTEMS, "SELECT ID, SpellID, RequiredTotemCategoryID1, RequiredTotemCategoryID2, Totem1, Totem2"
- " FROM spell_totems ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM spell_totems", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_TOTEMS, "SELECT MAX(ID) + 1 FROM spell_totems", CONNECTION_SYNCH);
// SpellVisualKit.db2
PrepareStatement(HOTFIX_SEL_SPELL_VISUAL_KIT, "SELECT ID, FallbackPriority, FallbackSpellVisualKitId, DelayMin, DelayMax, Flags1, Flags2"
- " FROM spell_visual_kit ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM spell_visual_kit", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_VISUAL_KIT, "SELECT MAX(ID) + 1 FROM spell_visual_kit", CONNECTION_SYNCH);
// SpellXSpellVisual.db2
PrepareStatement(HOTFIX_SEL_SPELL_X_SPELL_VISUAL, "SELECT ID, DifficultyID, SpellVisualID, Probability, Flags, Priority, SpellIconFileID, "
"ActiveIconFileID, ViewerUnitConditionID, ViewerPlayerConditionID, CasterUnitConditionID, CasterPlayerConditionID, SpellID"
- " FROM spell_x_spell_visual ORDER BY ID DESC", CONNECTION_SYNCH);
+ " FROM spell_x_spell_visual", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SPELL_X_SPELL_VISUAL, "SELECT MAX(ID) + 1 FROM spell_x_spell_visual", CONNECTION_SYNCH);
// SummonProperties.db2
- PrepareStatement(HOTFIX_SEL_SUMMON_PROPERTIES, "SELECT ID, Control, Faction, Title, Slot, Flags FROM summon_properties ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_SUMMON_PROPERTIES, "SELECT ID, Control, Faction, Title, Slot, Flags FROM summon_properties", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_SUMMON_PROPERTIES, "SELECT MAX(ID) + 1 FROM summon_properties", CONNECTION_SYNCH);
// TactKey.db2
PrepareStatement(HOTFIX_SEL_TACT_KEY, "SELECT ID, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8, Key9, Key10, Key11, Key12, Key13, Key14, Key15, "
- "Key16 FROM tact_key ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Key16 FROM tact_key", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TACT_KEY, "SELECT MAX(ID) + 1 FROM tact_key", CONNECTION_SYNCH);
// Talent.db2
PrepareStatement(HOTFIX_SEL_TALENT, "SELECT ID, Description, TierID, Flags, ColumnIndex, ClassID, SpecID, SpellID, OverridesSpellID, "
- "CategoryMask1, CategoryMask2 FROM talent ORDER BY ID DESC", CONNECTION_SYNCH);
+ "CategoryMask1, CategoryMask2 FROM talent", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TALENT, "SELECT MAX(ID) + 1 FROM talent", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_TALENT, "SELECT ID, Description_lang FROM talent_locale WHERE locale = ?", CONNECTION_SYNCH);
// TaxiNodes.db2
PrepareStatement(HOTFIX_SEL_TAXI_NODES, "SELECT Name, PosX, PosY, PosZ, MapOffsetX, MapOffsetY, FlightMapOffsetX, FlightMapOffsetY, ID, "
"ContinentID, ConditionID, CharacterBitNumber, Flags, UiTextureKitID, MinimapAtlasMemberID, Facing, SpecialIconConditionID, "
- "VisibilityConditionID, MountCreatureID1, MountCreatureID2 FROM taxi_nodes ORDER BY ID DESC", CONNECTION_SYNCH);
+ "VisibilityConditionID, MountCreatureID1, MountCreatureID2 FROM taxi_nodes", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TAXI_NODES, "SELECT MAX(ID) + 1 FROM taxi_nodes", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_TAXI_NODES, "SELECT ID, Name_lang FROM taxi_nodes_locale WHERE locale = ?", CONNECTION_SYNCH);
// TaxiPath.db2
- PrepareStatement(HOTFIX_SEL_TAXI_PATH, "SELECT ID, FromTaxiNode, ToTaxiNode, Cost FROM taxi_path ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_TAXI_PATH, "SELECT ID, FromTaxiNode, ToTaxiNode, Cost FROM taxi_path", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TAXI_PATH, "SELECT MAX(ID) + 1 FROM taxi_path", CONNECTION_SYNCH);
// TaxiPathNode.db2
PrepareStatement(HOTFIX_SEL_TAXI_PATH_NODE, "SELECT LocX, LocY, LocZ, ID, PathID, NodeIndex, ContinentID, Flags, Delay, ArrivalEventID, "
- "DepartureEventID FROM taxi_path_node ORDER BY ID DESC", CONNECTION_SYNCH);
+ "DepartureEventID FROM taxi_path_node", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TAXI_PATH_NODE, "SELECT MAX(ID) + 1 FROM taxi_path_node", CONNECTION_SYNCH);
// TotemCategory.db2
- PrepareStatement(HOTFIX_SEL_TOTEM_CATEGORY, "SELECT ID, Name, TotemCategoryType, TotemCategoryMask FROM totem_category ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_TOTEM_CATEGORY, "SELECT ID, Name, TotemCategoryType, TotemCategoryMask FROM totem_category", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TOTEM_CATEGORY, "SELECT MAX(ID) + 1 FROM totem_category", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_TOTEM_CATEGORY, "SELECT ID, Name_lang FROM totem_category_locale WHERE locale = ?", CONNECTION_SYNCH);
// Toy.db2
- PrepareStatement(HOTFIX_SEL_TOY, "SELECT SourceText, ID, ItemID, Flags, SourceTypeEnum FROM toy ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_TOY, "SELECT SourceText, ID, ItemID, Flags, SourceTypeEnum FROM toy", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TOY, "SELECT MAX(ID) + 1 FROM toy", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_TOY, "SELECT ID, SourceText_lang FROM toy_locale WHERE locale = ?", CONNECTION_SYNCH);
// TransmogHoliday.db2
- PrepareStatement(HOTFIX_SEL_TRANSMOG_HOLIDAY, "SELECT ID, RequiredTransmogHoliday FROM transmog_holiday ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_TRANSMOG_HOLIDAY, "SELECT ID, RequiredTransmogHoliday FROM transmog_holiday", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_HOLIDAY, "SELECT MAX(ID) + 1 FROM transmog_holiday", CONNECTION_SYNCH);
// TransmogSet.db2
PrepareStatement(HOTFIX_SEL_TRANSMOG_SET, "SELECT Name, ID, ClassMask, TrackingQuestID, Flags, TransmogSetGroupID, ItemNameDescriptionID, "
- "ParentTransmogSetID, Unknown810, ExpansionID, PatchID, UiOrder, PlayerConditionID FROM transmog_set ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ParentTransmogSetID, Unknown810, ExpansionID, PatchID, UiOrder, PlayerConditionID FROM transmog_set", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_SET, "SELECT MAX(ID) + 1 FROM transmog_set", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_TRANSMOG_SET, "SELECT ID, Name_lang FROM transmog_set_locale WHERE locale = ?", CONNECTION_SYNCH);
// TransmogSetGroup.db2
- PrepareStatement(HOTFIX_SEL_TRANSMOG_SET_GROUP, "SELECT Name, ID FROM transmog_set_group ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_TRANSMOG_SET_GROUP, "SELECT Name, ID FROM transmog_set_group", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_SET_GROUP, "SELECT MAX(ID) + 1 FROM transmog_set_group", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_TRANSMOG_SET_GROUP, "SELECT ID, Name_lang FROM transmog_set_group_locale WHERE locale = ?", CONNECTION_SYNCH);
// TransmogSetItem.db2
- PrepareStatement(HOTFIX_SEL_TRANSMOG_SET_ITEM, "SELECT ID, TransmogSetID, ItemModifiedAppearanceID, Flags FROM transmog_set_item ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_TRANSMOG_SET_ITEM, "SELECT ID, TransmogSetID, ItemModifiedAppearanceID, Flags FROM transmog_set_item", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_SET_ITEM, "SELECT MAX(ID) + 1 FROM transmog_set_item", CONNECTION_SYNCH);
// TransportAnimation.db2
- PrepareStatement(HOTFIX_SEL_TRANSPORT_ANIMATION, "SELECT ID, PosX, PosY, PosZ, SequenceID, TimeIndex, TransportID FROM transport_animation"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_TRANSPORT_ANIMATION, "SELECT ID, PosX, PosY, PosZ, SequenceID, TimeIndex, TransportID FROM transport_animation", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSPORT_ANIMATION, "SELECT MAX(ID) + 1 FROM transport_animation", CONNECTION_SYNCH);
// TransportRotation.db2
- PrepareStatement(HOTFIX_SEL_TRANSPORT_ROTATION, "SELECT ID, Rot1, Rot2, Rot3, Rot4, TimeIndex, GameObjectsID FROM transport_rotation"
- " ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_TRANSPORT_ROTATION, "SELECT ID, Rot1, Rot2, Rot3, Rot4, TimeIndex, GameObjectsID FROM transport_rotation", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSPORT_ROTATION, "SELECT MAX(ID) + 1 FROM transport_rotation", CONNECTION_SYNCH);
// UiMap.db2
PrepareStatement(HOTFIX_SEL_UI_MAP, "SELECT Name, ID, ParentUiMapID, Flags, `System`, Type, LevelRangeMin, LevelRangeMax, BountySetID, "
- "BountyDisplayLocation, VisibilityPlayerConditionID, HelpTextPosition, BkgAtlasID, AlternateUiMapGroup FROM ui_map ORDER BY ID DESC", CONNECTION_SYNCH);
+ "BountyDisplayLocation, VisibilityPlayerConditionID, HelpTextPosition, BkgAtlasID, AlternateUiMapGroup FROM ui_map", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_UI_MAP, "SELECT MAX(ID) + 1 FROM ui_map", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_UI_MAP, "SELECT ID, Name_lang FROM ui_map_locale WHERE locale = ?", CONNECTION_SYNCH);
// UiMapAssignment.db2
PrepareStatement(HOTFIX_SEL_UI_MAP_ASSIGNMENT, "SELECT UiMinX, UiMinY, UiMaxX, UiMaxY, Region1X, Region1Y, Region1Z, Region2X, Region2Y, "
- "Region2Z, ID, UiMapID, OrderIndex, MapID, AreaID, WmoDoodadPlacementID, WmoGroupID FROM ui_map_assignment ORDER BY ID DESC", CONNECTION_SYNCH);
+ "Region2Z, ID, UiMapID, OrderIndex, MapID, AreaID, WmoDoodadPlacementID, WmoGroupID FROM ui_map_assignment", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_UI_MAP_ASSIGNMENT, "SELECT MAX(ID) + 1 FROM ui_map_assignment", CONNECTION_SYNCH);
// UiMapLink.db2
PrepareStatement(HOTFIX_SEL_UI_MAP_LINK, "SELECT UiMinX, UiMinY, UiMaxX, UiMaxY, ID, ParentUiMapID, OrderIndex, ChildUiMapID, "
- "OverrideHighlightFileDataID, OverrideHighlightAtlasID FROM ui_map_link ORDER BY ID DESC", CONNECTION_SYNCH);
+ "OverrideHighlightFileDataID, OverrideHighlightAtlasID FROM ui_map_link", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_UI_MAP_LINK, "SELECT MAX(ID) + 1 FROM ui_map_link", CONNECTION_SYNCH);
// UiMapXMapArt.db2
- PrepareStatement(HOTFIX_SEL_UI_MAP_X_MAP_ART, "SELECT ID, PhaseID, UiMapArtID, UiMapID FROM ui_map_x_map_art ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_UI_MAP_X_MAP_ART, "SELECT ID, PhaseID, UiMapArtID, UiMapID FROM ui_map_x_map_art", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_UI_MAP_X_MAP_ART, "SELECT MAX(ID) + 1 FROM ui_map_x_map_art", CONNECTION_SYNCH);
// UnitPowerBar.db2
PrepareStatement(HOTFIX_SEL_UNIT_POWER_BAR, "SELECT ID, Name, Cost, OutOfError, ToolTip, MinPower, MaxPower, StartPower, CenterPower, "
"RegenerationPeace, RegenerationCombat, BarType, Flags, StartInset, EndInset, FileDataID1, FileDataID2, FileDataID3, FileDataID4, "
- "FileDataID5, FileDataID6, Color1, Color2, Color3, Color4, Color5, Color6 FROM unit_power_bar ORDER BY ID DESC", CONNECTION_SYNCH);
+ "FileDataID5, FileDataID6, Color1, Color2, Color3, Color4, Color5, Color6 FROM unit_power_bar", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_UNIT_POWER_BAR, "SELECT MAX(ID) + 1 FROM unit_power_bar", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_UNIT_POWER_BAR, "SELECT ID, Name_lang, Cost_lang, OutOfError_lang, ToolTip_lang FROM unit_power_bar_locale"
" WHERE locale = ?", CONNECTION_SYNCH);
@@ -1112,7 +1330,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PrepareStatement(HOTFIX_SEL_VEHICLE, "SELECT ID, Flags, FlagsB, TurnSpeed, PitchSpeed, PitchMin, PitchMax, MouseLookOffsetPitch, "
"CameraFadeDistScalarMin, CameraFadeDistScalarMax, CameraPitchOffset, FacingLimitRight, FacingLimitLeft, CameraYawOffset, UiLocomotionType, "
"VehicleUIIndicatorID, MissileTargetingID, SeatID1, SeatID2, SeatID3, SeatID4, SeatID5, SeatID6, SeatID7, SeatID8, PowerDisplayID1, "
- "PowerDisplayID2, PowerDisplayID3 FROM vehicle ORDER BY ID DESC", CONNECTION_SYNCH);
+ "PowerDisplayID2, PowerDisplayID3 FROM vehicle", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_VEHICLE, "SELECT MAX(ID) + 1 FROM vehicle", CONNECTION_SYNCH);
// VehicleSeat.db2
PrepareStatement(HOTFIX_SEL_VEHICLE_SEAT, "SELECT ID, AttachmentOffsetX, AttachmentOffsetY, AttachmentOffsetZ, CameraOffsetX, CameraOffsetY, "
@@ -1123,23 +1342,28 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"PassengerAttachmentID, PassengerYaw, PassengerPitch, PassengerRoll, VehicleEnterAnimDelay, VehicleExitAnimDelay, VehicleAbilityDisplay, "
"EnterUISoundID, ExitUISoundID, UiSkinFileDataID, CameraEnteringDelay, CameraEnteringDuration, CameraExitingDelay, CameraExitingDuration, "
"CameraPosChaseRate, CameraFacingChaseRate, CameraEnteringZoom, CameraSeatZoomMin, CameraSeatZoomMax, EnterAnimKitID, RideAnimKitID, "
- "ExitAnimKitID, VehicleEnterAnimKitID, VehicleRideAnimKitID, VehicleExitAnimKitID, CameraModeID FROM vehicle_seat ORDER BY ID DESC", CONNECTION_SYNCH);
+ "ExitAnimKitID, VehicleEnterAnimKitID, VehicleRideAnimKitID, VehicleExitAnimKitID, CameraModeID FROM vehicle_seat", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_VEHICLE_SEAT, "SELECT MAX(ID) + 1 FROM vehicle_seat", CONNECTION_SYNCH);
// WmoAreaTable.db2
PrepareStatement(HOTFIX_SEL_WMO_AREA_TABLE, "SELECT AreaName, ID, WmoID, NameSetID, WmoGroupID, SoundProviderPref, SoundProviderPrefUnderwater, "
- "AmbienceID, UwAmbience, ZoneMusic, UwZoneMusic, IntroSound, UwIntroSound, AreaTableID, Flags FROM wmo_area_table ORDER BY ID DESC", CONNECTION_SYNCH);
+ "AmbienceID, UwAmbience, ZoneMusic, UwZoneMusic, IntroSound, UwIntroSound, AreaTableID, Flags FROM wmo_area_table", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_WMO_AREA_TABLE, "SELECT MAX(ID) + 1 FROM wmo_area_table", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_WMO_AREA_TABLE, "SELECT ID, AreaName_lang FROM wmo_area_table_locale WHERE locale = ?", CONNECTION_SYNCH);
// WorldEffect.db2
PrepareStatement(HOTFIX_SEL_WORLD_EFFECT, "SELECT ID, QuestFeedbackEffectID, WhenToDisplay, TargetType, TargetAsset, PlayerConditionID, "
- "CombatConditionID FROM world_effect ORDER BY ID DESC", CONNECTION_SYNCH);
+ "CombatConditionID FROM world_effect", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_WORLD_EFFECT, "SELECT MAX(ID) + 1 FROM world_effect", CONNECTION_SYNCH);
// WorldMapOverlay.db2
PrepareStatement(HOTFIX_SEL_WORLD_MAP_OVERLAY, "SELECT ID, UiMapArtID, TextureWidth, TextureHeight, OffsetX, OffsetY, HitRectTop, HitRectBottom, "
- "HitRectLeft, HitRectRight, PlayerConditionID, Flags, AreaID1, AreaID2, AreaID3, AreaID4 FROM world_map_overlay ORDER BY ID DESC", CONNECTION_SYNCH);
+ "HitRectLeft, HitRectRight, PlayerConditionID, Flags, AreaID1, AreaID2, AreaID3, AreaID4 FROM world_map_overlay", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_WORLD_MAP_OVERLAY, "SELECT MAX(ID) + 1 FROM world_map_overlay", CONNECTION_SYNCH);
// WorldStateExpression.db2
- PrepareStatement(HOTFIX_SEL_WORLD_STATE_EXPRESSION, "SELECT ID, Expression FROM world_state_expression ORDER BY ID DESC", CONNECTION_SYNCH);
+ PrepareStatement(HOTFIX_SEL_WORLD_STATE_EXPRESSION, "SELECT ID, Expression FROM world_state_expression", CONNECTION_SYNCH);
+ PREPARE_MAX_ID_STMT(HOTFIX_SEL_WORLD_STATE_EXPRESSION, "SELECT MAX(ID) + 1 FROM world_state_expression", CONNECTION_SYNCH);
}
HotfixDatabaseConnection::HotfixDatabaseConnection(MySQLConnectionInfo& connInfo) : MySQLConnection(connInfo)
diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h
index de9a7b7f330..00828c3b89e 100644
--- a/src/server/database/Database/Implementation/HotfixDatabase.h
+++ b/src/server/database/Database/Implementation/HotfixDatabase.h
@@ -32,573 +32,825 @@ enum HotfixDatabaseStatements : uint32
*/
HOTFIX_SEL_ACHIEVEMENT,
+ HOTFIX_SEL_ACHIEVEMENT_MAX_ID,
HOTFIX_SEL_ACHIEVEMENT_LOCALE,
HOTFIX_SEL_ANIMATION_DATA,
+ HOTFIX_SEL_ANIMATION_DATA_MAX_ID,
HOTFIX_SEL_ANIM_KIT,
+ HOTFIX_SEL_ANIM_KIT_MAX_ID,
HOTFIX_SEL_AREA_GROUP_MEMBER,
+ HOTFIX_SEL_AREA_GROUP_MEMBER_MAX_ID,
HOTFIX_SEL_AREA_TABLE,
+ HOTFIX_SEL_AREA_TABLE_MAX_ID,
HOTFIX_SEL_AREA_TABLE_LOCALE,
HOTFIX_SEL_AREA_TRIGGER,
+ HOTFIX_SEL_AREA_TRIGGER_MAX_ID,
HOTFIX_SEL_ARMOR_LOCATION,
+ HOTFIX_SEL_ARMOR_LOCATION_MAX_ID,
HOTFIX_SEL_ARTIFACT,
+ HOTFIX_SEL_ARTIFACT_MAX_ID,
HOTFIX_SEL_ARTIFACT_LOCALE,
HOTFIX_SEL_ARTIFACT_APPEARANCE,
+ HOTFIX_SEL_ARTIFACT_APPEARANCE_MAX_ID,
HOTFIX_SEL_ARTIFACT_APPEARANCE_LOCALE,
HOTFIX_SEL_ARTIFACT_APPEARANCE_SET,
+ HOTFIX_SEL_ARTIFACT_APPEARANCE_SET_MAX_ID,
HOTFIX_SEL_ARTIFACT_APPEARANCE_SET_LOCALE,
HOTFIX_SEL_ARTIFACT_CATEGORY,
+ HOTFIX_SEL_ARTIFACT_CATEGORY_MAX_ID,
HOTFIX_SEL_ARTIFACT_POWER,
+ HOTFIX_SEL_ARTIFACT_POWER_MAX_ID,
HOTFIX_SEL_ARTIFACT_POWER_LINK,
+ HOTFIX_SEL_ARTIFACT_POWER_LINK_MAX_ID,
HOTFIX_SEL_ARTIFACT_POWER_PICKER,
+ HOTFIX_SEL_ARTIFACT_POWER_PICKER_MAX_ID,
HOTFIX_SEL_ARTIFACT_POWER_RANK,
+ HOTFIX_SEL_ARTIFACT_POWER_RANK_MAX_ID,
HOTFIX_SEL_ARTIFACT_QUEST_XP,
+ HOTFIX_SEL_ARTIFACT_QUEST_XP_MAX_ID,
HOTFIX_SEL_ARTIFACT_TIER,
+ HOTFIX_SEL_ARTIFACT_TIER_MAX_ID,
HOTFIX_SEL_ARTIFACT_UNLOCK,
+ HOTFIX_SEL_ARTIFACT_UNLOCK_MAX_ID,
HOTFIX_SEL_AUCTION_HOUSE,
+ HOTFIX_SEL_AUCTION_HOUSE_MAX_ID,
HOTFIX_SEL_AUCTION_HOUSE_LOCALE,
HOTFIX_SEL_AZERITE_EMPOWERED_ITEM,
+ HOTFIX_SEL_AZERITE_EMPOWERED_ITEM_MAX_ID,
HOTFIX_SEL_AZERITE_ESSENCE,
+ HOTFIX_SEL_AZERITE_ESSENCE_MAX_ID,
HOTFIX_SEL_AZERITE_ESSENCE_LOCALE,
HOTFIX_SEL_AZERITE_ESSENCE_POWER,
+ HOTFIX_SEL_AZERITE_ESSENCE_POWER_MAX_ID,
HOTFIX_SEL_AZERITE_ESSENCE_POWER_LOCALE,
HOTFIX_SEL_AZERITE_ITEM,
+ HOTFIX_SEL_AZERITE_ITEM_MAX_ID,
HOTFIX_SEL_AZERITE_ITEM_MILESTONE_POWER,
+ HOTFIX_SEL_AZERITE_ITEM_MILESTONE_POWER_MAX_ID,
HOTFIX_SEL_AZERITE_KNOWLEDGE_MULTIPLIER,
+ HOTFIX_SEL_AZERITE_KNOWLEDGE_MULTIPLIER_MAX_ID,
HOTFIX_SEL_AZERITE_LEVEL_INFO,
+ HOTFIX_SEL_AZERITE_LEVEL_INFO_MAX_ID,
HOTFIX_SEL_AZERITE_POWER,
+ HOTFIX_SEL_AZERITE_POWER_MAX_ID,
HOTFIX_SEL_AZERITE_POWER_SET_MEMBER,
+ HOTFIX_SEL_AZERITE_POWER_SET_MEMBER_MAX_ID,
HOTFIX_SEL_AZERITE_TIER_UNLOCK,
+ HOTFIX_SEL_AZERITE_TIER_UNLOCK_MAX_ID,
HOTFIX_SEL_AZERITE_TIER_UNLOCK_SET,
+ HOTFIX_SEL_AZERITE_TIER_UNLOCK_SET_MAX_ID,
HOTFIX_SEL_AZERITE_UNLOCK_MAPPING,
+ HOTFIX_SEL_AZERITE_UNLOCK_MAPPING_MAX_ID,
HOTFIX_SEL_BANK_BAG_SLOT_PRICES,
+ HOTFIX_SEL_BANK_BAG_SLOT_PRICES_MAX_ID,
HOTFIX_SEL_BANNED_ADDONS,
+ HOTFIX_SEL_BANNED_ADDONS_MAX_ID,
HOTFIX_SEL_BARBER_SHOP_STYLE,
+ HOTFIX_SEL_BARBER_SHOP_STYLE_MAX_ID,
HOTFIX_SEL_BARBER_SHOP_STYLE_LOCALE,
HOTFIX_SEL_BATTLE_PET_BREED_QUALITY,
+ HOTFIX_SEL_BATTLE_PET_BREED_QUALITY_MAX_ID,
HOTFIX_SEL_BATTLE_PET_BREED_STATE,
+ HOTFIX_SEL_BATTLE_PET_BREED_STATE_MAX_ID,
HOTFIX_SEL_BATTLE_PET_SPECIES,
+ HOTFIX_SEL_BATTLE_PET_SPECIES_MAX_ID,
HOTFIX_SEL_BATTLE_PET_SPECIES_LOCALE,
HOTFIX_SEL_BATTLE_PET_SPECIES_STATE,
+ HOTFIX_SEL_BATTLE_PET_SPECIES_STATE_MAX_ID,
HOTFIX_SEL_BATTLEMASTER_LIST,
+ HOTFIX_SEL_BATTLEMASTER_LIST_MAX_ID,
HOTFIX_SEL_BATTLEMASTER_LIST_LOCALE,
HOTFIX_SEL_BROADCAST_TEXT,
+ HOTFIX_SEL_BROADCAST_TEXT_MAX_ID,
HOTFIX_SEL_BROADCAST_TEXT_LOCALE,
HOTFIX_SEL_CFG_REGIONS,
+ HOTFIX_SEL_CFG_REGIONS_MAX_ID,
HOTFIX_SEL_CHARACTER_FACIAL_HAIR_STYLES,
+ HOTFIX_SEL_CHARACTER_FACIAL_HAIR_STYLES_MAX_ID,
HOTFIX_SEL_CHAR_BASE_SECTION,
+ HOTFIX_SEL_CHAR_BASE_SECTION_MAX_ID,
HOTFIX_SEL_CHAR_SECTIONS,
+ HOTFIX_SEL_CHAR_SECTIONS_MAX_ID,
HOTFIX_SEL_CHAR_START_OUTFIT,
+ HOTFIX_SEL_CHAR_START_OUTFIT_MAX_ID,
HOTFIX_SEL_CHAR_TITLES,
+ HOTFIX_SEL_CHAR_TITLES_MAX_ID,
HOTFIX_SEL_CHAR_TITLES_LOCALE,
HOTFIX_SEL_CHAT_CHANNELS,
+ HOTFIX_SEL_CHAT_CHANNELS_MAX_ID,
HOTFIX_SEL_CHAT_CHANNELS_LOCALE,
HOTFIX_SEL_CHR_CLASSES,
+ HOTFIX_SEL_CHR_CLASSES_MAX_ID,
HOTFIX_SEL_CHR_CLASSES_LOCALE,
HOTFIX_SEL_CHR_CLASSES_X_POWER_TYPES,
+ HOTFIX_SEL_CHR_CLASSES_X_POWER_TYPES_MAX_ID,
HOTFIX_SEL_CHR_RACES,
+ HOTFIX_SEL_CHR_RACES_MAX_ID,
HOTFIX_SEL_CHR_RACES_LOCALE,
HOTFIX_SEL_CHR_SPECIALIZATION,
+ HOTFIX_SEL_CHR_SPECIALIZATION_MAX_ID,
HOTFIX_SEL_CHR_SPECIALIZATION_LOCALE,
HOTFIX_SEL_CINEMATIC_CAMERA,
+ HOTFIX_SEL_CINEMATIC_CAMERA_MAX_ID,
HOTFIX_SEL_CINEMATIC_SEQUENCES,
+ HOTFIX_SEL_CINEMATIC_SEQUENCES_MAX_ID,
HOTFIX_SEL_CONTENT_TUNING,
+ HOTFIX_SEL_CONTENT_TUNING_MAX_ID,
HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED,
+ HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED_MAX_ID,
HOTFIX_SEL_CONVERSATION_LINE,
+ HOTFIX_SEL_CONVERSATION_LINE_MAX_ID,
HOTFIX_SEL_CREATURE_DISPLAY_INFO,
+ HOTFIX_SEL_CREATURE_DISPLAY_INFO_MAX_ID,
HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA,
+ HOTFIX_SEL_CREATURE_DISPLAY_INFO_EXTRA_MAX_ID,
HOTFIX_SEL_CREATURE_FAMILY,
+ HOTFIX_SEL_CREATURE_FAMILY_MAX_ID,
HOTFIX_SEL_CREATURE_FAMILY_LOCALE,
HOTFIX_SEL_CREATURE_MODEL_DATA,
+ HOTFIX_SEL_CREATURE_MODEL_DATA_MAX_ID,
HOTFIX_SEL_CREATURE_TYPE,
+ HOTFIX_SEL_CREATURE_TYPE_MAX_ID,
HOTFIX_SEL_CREATURE_TYPE_LOCALE,
HOTFIX_SEL_CRITERIA,
+ HOTFIX_SEL_CRITERIA_MAX_ID,
HOTFIX_SEL_CRITERIA_TREE,
+ HOTFIX_SEL_CRITERIA_TREE_MAX_ID,
HOTFIX_SEL_CRITERIA_TREE_LOCALE,
HOTFIX_SEL_CURRENCY_TYPES,
+ HOTFIX_SEL_CURRENCY_TYPES_MAX_ID,
HOTFIX_SEL_CURRENCY_TYPES_LOCALE,
HOTFIX_SEL_CURVE,
+ HOTFIX_SEL_CURVE_MAX_ID,
HOTFIX_SEL_CURVE_POINT,
+ HOTFIX_SEL_CURVE_POINT_MAX_ID,
HOTFIX_SEL_DESTRUCTIBLE_MODEL_DATA,
+ HOTFIX_SEL_DESTRUCTIBLE_MODEL_DATA_MAX_ID,
HOTFIX_SEL_DIFFICULTY,
+ HOTFIX_SEL_DIFFICULTY_MAX_ID,
HOTFIX_SEL_DIFFICULTY_LOCALE,
HOTFIX_SEL_DUNGEON_ENCOUNTER,
+ HOTFIX_SEL_DUNGEON_ENCOUNTER_MAX_ID,
HOTFIX_SEL_DUNGEON_ENCOUNTER_LOCALE,
HOTFIX_SEL_DURABILITY_COSTS,
+ HOTFIX_SEL_DURABILITY_COSTS_MAX_ID,
HOTFIX_SEL_DURABILITY_QUALITY,
+ HOTFIX_SEL_DURABILITY_QUALITY_MAX_ID,
HOTFIX_SEL_EMOTES,
+ HOTFIX_SEL_EMOTES_MAX_ID,
HOTFIX_SEL_EMOTES_TEXT,
+ HOTFIX_SEL_EMOTES_TEXT_MAX_ID,
HOTFIX_SEL_EMOTES_TEXT_SOUND,
+ HOTFIX_SEL_EMOTES_TEXT_SOUND_MAX_ID,
HOTFIX_SEL_EXPECTED_STAT,
+ HOTFIX_SEL_EXPECTED_STAT_MAX_ID,
HOTFIX_SEL_EXPECTED_STAT_MOD,
+ HOTFIX_SEL_EXPECTED_STAT_MOD_MAX_ID,
HOTFIX_SEL_FACTION,
+ HOTFIX_SEL_FACTION_MAX_ID,
HOTFIX_SEL_FACTION_LOCALE,
HOTFIX_SEL_FACTION_TEMPLATE,
+ HOTFIX_SEL_FACTION_TEMPLATE_MAX_ID,
HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO,
+ HOTFIX_SEL_GAMEOBJECT_DISPLAY_INFO_MAX_ID,
HOTFIX_SEL_GAMEOBJECTS,
+ HOTFIX_SEL_GAMEOBJECTS_MAX_ID,
HOTFIX_SEL_GAMEOBJECTS_LOCALE,
HOTFIX_SEL_GARR_ABILITY,
+ HOTFIX_SEL_GARR_ABILITY_MAX_ID,
HOTFIX_SEL_GARR_ABILITY_LOCALE,
HOTFIX_SEL_GARR_BUILDING,
+ HOTFIX_SEL_GARR_BUILDING_MAX_ID,
HOTFIX_SEL_GARR_BUILDING_LOCALE,
HOTFIX_SEL_GARR_BUILDING_PLOT_INST,
+ HOTFIX_SEL_GARR_BUILDING_PLOT_INST_MAX_ID,
HOTFIX_SEL_GARR_CLASS_SPEC,
+ HOTFIX_SEL_GARR_CLASS_SPEC_MAX_ID,
HOTFIX_SEL_GARR_CLASS_SPEC_LOCALE,
HOTFIX_SEL_GARR_FOLLOWER,
+ HOTFIX_SEL_GARR_FOLLOWER_MAX_ID,
HOTFIX_SEL_GARR_FOLLOWER_LOCALE,
HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY,
+ HOTFIX_SEL_GARR_FOLLOWER_X_ABILITY_MAX_ID,
HOTFIX_SEL_GARR_PLOT,
+ HOTFIX_SEL_GARR_PLOT_MAX_ID,
HOTFIX_SEL_GARR_PLOT_BUILDING,
+ HOTFIX_SEL_GARR_PLOT_BUILDING_MAX_ID,
HOTFIX_SEL_GARR_PLOT_INSTANCE,
+ HOTFIX_SEL_GARR_PLOT_INSTANCE_MAX_ID,
HOTFIX_SEL_GARR_SITE_LEVEL,
+ HOTFIX_SEL_GARR_SITE_LEVEL_MAX_ID,
HOTFIX_SEL_GARR_SITE_LEVEL_PLOT_INST,
+ HOTFIX_SEL_GARR_SITE_LEVEL_PLOT_INST_MAX_ID,
HOTFIX_SEL_GEM_PROPERTIES,
+ HOTFIX_SEL_GEM_PROPERTIES_MAX_ID,
HOTFIX_SEL_GLYPH_BINDABLE_SPELL,
+ HOTFIX_SEL_GLYPH_BINDABLE_SPELL_MAX_ID,
HOTFIX_SEL_GLYPH_PROPERTIES,
+ HOTFIX_SEL_GLYPH_PROPERTIES_MAX_ID,
HOTFIX_SEL_GLYPH_REQUIRED_SPEC,
+ HOTFIX_SEL_GLYPH_REQUIRED_SPEC_MAX_ID,
HOTFIX_SEL_GUILD_COLOR_BACKGROUND,
+ HOTFIX_SEL_GUILD_COLOR_BACKGROUND_MAX_ID,
HOTFIX_SEL_GUILD_COLOR_BORDER,
+ HOTFIX_SEL_GUILD_COLOR_BORDER_MAX_ID,
HOTFIX_SEL_GUILD_COLOR_EMBLEM,
+ HOTFIX_SEL_GUILD_COLOR_EMBLEM_MAX_ID,
HOTFIX_SEL_GUILD_PERK_SPELLS,
+ HOTFIX_SEL_GUILD_PERK_SPELLS_MAX_ID,
HOTFIX_SEL_HEIRLOOM,
+ HOTFIX_SEL_HEIRLOOM_MAX_ID,
HOTFIX_SEL_HEIRLOOM_LOCALE,
HOTFIX_SEL_HOLIDAYS,
+ HOTFIX_SEL_HOLIDAYS_MAX_ID,
HOTFIX_SEL_IMPORT_PRICE_ARMOR,
+ HOTFIX_SEL_IMPORT_PRICE_ARMOR_MAX_ID,
HOTFIX_SEL_IMPORT_PRICE_QUALITY,
+ HOTFIX_SEL_IMPORT_PRICE_QUALITY_MAX_ID,
HOTFIX_SEL_IMPORT_PRICE_SHIELD,
+ HOTFIX_SEL_IMPORT_PRICE_SHIELD_MAX_ID,
HOTFIX_SEL_IMPORT_PRICE_WEAPON,
+ HOTFIX_SEL_IMPORT_PRICE_WEAPON_MAX_ID,
HOTFIX_SEL_ITEM,
+ HOTFIX_SEL_ITEM_MAX_ID,
HOTFIX_SEL_ITEM_APPEARANCE,
+ HOTFIX_SEL_ITEM_APPEARANCE_MAX_ID,
HOTFIX_SEL_ITEM_ARMOR_QUALITY,
+ HOTFIX_SEL_ITEM_ARMOR_QUALITY_MAX_ID,
HOTFIX_SEL_ITEM_ARMOR_SHIELD,
+ HOTFIX_SEL_ITEM_ARMOR_SHIELD_MAX_ID,
HOTFIX_SEL_ITEM_ARMOR_TOTAL,
+ HOTFIX_SEL_ITEM_ARMOR_TOTAL_MAX_ID,
HOTFIX_SEL_ITEM_BAG_FAMILY,
+ HOTFIX_SEL_ITEM_BAG_FAMILY_MAX_ID,
HOTFIX_SEL_ITEM_BAG_FAMILY_LOCALE,
HOTFIX_SEL_ITEM_BONUS,
+ HOTFIX_SEL_ITEM_BONUS_MAX_ID,
HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA,
+ HOTFIX_SEL_ITEM_BONUS_LIST_LEVEL_DELTA_MAX_ID,
HOTFIX_SEL_ITEM_BONUS_TREE_NODE,
+ HOTFIX_SEL_ITEM_BONUS_TREE_NODE_MAX_ID,
HOTFIX_SEL_ITEM_CHILD_EQUIPMENT,
+ HOTFIX_SEL_ITEM_CHILD_EQUIPMENT_MAX_ID,
HOTFIX_SEL_ITEM_CLASS,
+ HOTFIX_SEL_ITEM_CLASS_MAX_ID,
HOTFIX_SEL_ITEM_CLASS_LOCALE,
HOTFIX_SEL_ITEM_CURRENCY_COST,
+ HOTFIX_SEL_ITEM_CURRENCY_COST_MAX_ID,
HOTFIX_SEL_ITEM_DAMAGE_AMMO,
+ HOTFIX_SEL_ITEM_DAMAGE_AMMO_MAX_ID,
HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND,
+ HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND_MAX_ID,
HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND_CASTER,
+ HOTFIX_SEL_ITEM_DAMAGE_ONE_HAND_CASTER_MAX_ID,
HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND,
+ HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND_MAX_ID,
HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND_CASTER,
+ HOTFIX_SEL_ITEM_DAMAGE_TWO_HAND_CASTER_MAX_ID,
HOTFIX_SEL_ITEM_DISENCHANT_LOOT,
+ HOTFIX_SEL_ITEM_DISENCHANT_LOOT_MAX_ID,
HOTFIX_SEL_ITEM_EFFECT,
+ HOTFIX_SEL_ITEM_EFFECT_MAX_ID,
HOTFIX_SEL_ITEM_EXTENDED_COST,
+ HOTFIX_SEL_ITEM_EXTENDED_COST_MAX_ID,
HOTFIX_SEL_ITEM_LEVEL_SELECTOR,
+ HOTFIX_SEL_ITEM_LEVEL_SELECTOR_MAX_ID,
HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY,
+ HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY_MAX_ID,
HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY_SET,
+ HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY_SET_MAX_ID,
HOTFIX_SEL_ITEM_LIMIT_CATEGORY,
+ HOTFIX_SEL_ITEM_LIMIT_CATEGORY_MAX_ID,
HOTFIX_SEL_ITEM_LIMIT_CATEGORY_LOCALE,
HOTFIX_SEL_ITEM_LIMIT_CATEGORY_CONDITION,
+ HOTFIX_SEL_ITEM_LIMIT_CATEGORY_CONDITION_MAX_ID,
HOTFIX_SEL_ITEM_MODIFIED_APPEARANCE,
+ HOTFIX_SEL_ITEM_MODIFIED_APPEARANCE_MAX_ID,
HOTFIX_SEL_ITEM_NAME_DESCRIPTION,
+ HOTFIX_SEL_ITEM_NAME_DESCRIPTION_MAX_ID,
HOTFIX_SEL_ITEM_NAME_DESCRIPTION_LOCALE,
HOTFIX_SEL_ITEM_PRICE_BASE,
+ HOTFIX_SEL_ITEM_PRICE_BASE_MAX_ID,
HOTFIX_SEL_ITEM_SEARCH_NAME,
+ HOTFIX_SEL_ITEM_SEARCH_NAME_MAX_ID,
HOTFIX_SEL_ITEM_SEARCH_NAME_LOCALE,
HOTFIX_SEL_ITEM_SET,
+ HOTFIX_SEL_ITEM_SET_MAX_ID,
HOTFIX_SEL_ITEM_SET_LOCALE,
HOTFIX_SEL_ITEM_SET_SPELL,
+ HOTFIX_SEL_ITEM_SET_SPELL_MAX_ID,
HOTFIX_SEL_ITEM_SPARSE,
+ HOTFIX_SEL_ITEM_SPARSE_MAX_ID,
HOTFIX_SEL_ITEM_SPARSE_LOCALE,
HOTFIX_SEL_ITEM_SPEC,
+ HOTFIX_SEL_ITEM_SPEC_MAX_ID,
HOTFIX_SEL_ITEM_SPEC_OVERRIDE,
+ HOTFIX_SEL_ITEM_SPEC_OVERRIDE_MAX_ID,
HOTFIX_SEL_ITEM_X_BONUS_TREE,
+ HOTFIX_SEL_ITEM_X_BONUS_TREE_MAX_ID,
HOTFIX_SEL_KEYCHAIN,
+ HOTFIX_SEL_KEYCHAIN_MAX_ID,
HOTFIX_SEL_LFG_DUNGEONS,
+ HOTFIX_SEL_LFG_DUNGEONS_MAX_ID,
HOTFIX_SEL_LFG_DUNGEONS_LOCALE,
HOTFIX_SEL_LIGHT,
+ HOTFIX_SEL_LIGHT_MAX_ID,
HOTFIX_SEL_LIQUID_TYPE,
+ HOTFIX_SEL_LIQUID_TYPE_MAX_ID,
HOTFIX_SEL_LOCK,
+ HOTFIX_SEL_LOCK_MAX_ID,
HOTFIX_SEL_MAIL_TEMPLATE,
+ HOTFIX_SEL_MAIL_TEMPLATE_MAX_ID,
HOTFIX_SEL_MAIL_TEMPLATE_LOCALE,
HOTFIX_SEL_MAP,
+ HOTFIX_SEL_MAP_MAX_ID,
HOTFIX_SEL_MAP_LOCALE,
HOTFIX_SEL_MAP_DIFFICULTY,
+ HOTFIX_SEL_MAP_DIFFICULTY_MAX_ID,
HOTFIX_SEL_MAP_DIFFICULTY_LOCALE,
HOTFIX_SEL_MODIFIER_TREE,
+ HOTFIX_SEL_MODIFIER_TREE_MAX_ID,
HOTFIX_SEL_MOUNT,
+ HOTFIX_SEL_MOUNT_MAX_ID,
HOTFIX_SEL_MOUNT_LOCALE,
HOTFIX_SEL_MOUNT_CAPABILITY,
+ HOTFIX_SEL_MOUNT_CAPABILITY_MAX_ID,
HOTFIX_SEL_MOUNT_TYPE_X_CAPABILITY,
+ HOTFIX_SEL_MOUNT_TYPE_X_CAPABILITY_MAX_ID,
HOTFIX_SEL_MOUNT_X_DISPLAY,
+ HOTFIX_SEL_MOUNT_X_DISPLAY_MAX_ID,
HOTFIX_SEL_MOVIE,
+ HOTFIX_SEL_MOVIE_MAX_ID,
HOTFIX_SEL_NAME_GEN,
+ HOTFIX_SEL_NAME_GEN_MAX_ID,
HOTFIX_SEL_NAMES_PROFANITY,
+ HOTFIX_SEL_NAMES_PROFANITY_MAX_ID,
HOTFIX_SEL_NAMES_RESERVED,
+ HOTFIX_SEL_NAMES_RESERVED_MAX_ID,
HOTFIX_SEL_NAMES_RESERVED_LOCALE,
+ HOTFIX_SEL_NAMES_RESERVED_LOCALE_MAX_ID,
HOTFIX_SEL_NUM_TALENTS_AT_LEVEL,
+ HOTFIX_SEL_NUM_TALENTS_AT_LEVEL_MAX_ID,
HOTFIX_SEL_OVERRIDE_SPELL_DATA,
+ HOTFIX_SEL_OVERRIDE_SPELL_DATA_MAX_ID,
HOTFIX_SEL_PHASE,
+ HOTFIX_SEL_PHASE_MAX_ID,
HOTFIX_SEL_PHASE_X_PHASE_GROUP,
+ HOTFIX_SEL_PHASE_X_PHASE_GROUP_MAX_ID,
HOTFIX_SEL_PLAYER_CONDITION,
+ HOTFIX_SEL_PLAYER_CONDITION_MAX_ID,
HOTFIX_SEL_PLAYER_CONDITION_LOCALE,
HOTFIX_SEL_POWER_DISPLAY,
+ HOTFIX_SEL_POWER_DISPLAY_MAX_ID,
HOTFIX_SEL_POWER_TYPE,
+ HOTFIX_SEL_POWER_TYPE_MAX_ID,
HOTFIX_SEL_PRESTIGE_LEVEL_INFO,
+ HOTFIX_SEL_PRESTIGE_LEVEL_INFO_MAX_ID,
HOTFIX_SEL_PRESTIGE_LEVEL_INFO_LOCALE,
HOTFIX_SEL_PVP_DIFFICULTY,
+ HOTFIX_SEL_PVP_DIFFICULTY_MAX_ID,
HOTFIX_SEL_PVP_ITEM,
+ HOTFIX_SEL_PVP_ITEM_MAX_ID,
HOTFIX_SEL_PVP_TALENT,
+ HOTFIX_SEL_PVP_TALENT_MAX_ID,
HOTFIX_SEL_PVP_TALENT_LOCALE,
HOTFIX_SEL_PVP_TALENT_CATEGORY,
+ HOTFIX_SEL_PVP_TALENT_CATEGORY_MAX_ID,
HOTFIX_SEL_PVP_TALENT_SLOT_UNLOCK,
+ HOTFIX_SEL_PVP_TALENT_SLOT_UNLOCK_MAX_ID,
HOTFIX_SEL_QUEST_FACTION_REWARD,
+ HOTFIX_SEL_QUEST_FACTION_REWARD_MAX_ID,
HOTFIX_SEL_QUEST_MONEY_REWARD,
+ HOTFIX_SEL_QUEST_MONEY_REWARD_MAX_ID,
HOTFIX_SEL_QUEST_PACKAGE_ITEM,
+ HOTFIX_SEL_QUEST_PACKAGE_ITEM_MAX_ID,
HOTFIX_SEL_QUEST_SORT,
+ HOTFIX_SEL_QUEST_SORT_MAX_ID,
HOTFIX_SEL_QUEST_SORT_LOCALE,
HOTFIX_SEL_QUEST_V2,
+ HOTFIX_SEL_QUEST_V2_MAX_ID,
HOTFIX_SEL_QUEST_XP,
+ HOTFIX_SEL_QUEST_XP_MAX_ID,
HOTFIX_SEL_RAND_PROP_POINTS,
+ HOTFIX_SEL_RAND_PROP_POINTS_MAX_ID,
HOTFIX_SEL_REWARD_PACK,
+ HOTFIX_SEL_REWARD_PACK_MAX_ID,
HOTFIX_SEL_REWARD_PACK_X_CURRENCY_TYPE,
+ HOTFIX_SEL_REWARD_PACK_X_CURRENCY_TYPE_MAX_ID,
HOTFIX_SEL_REWARD_PACK_X_ITEM,
+ HOTFIX_SEL_REWARD_PACK_X_ITEM_MAX_ID,
HOTFIX_SEL_SCALING_STAT_DISTRIBUTION,
+ HOTFIX_SEL_SCALING_STAT_DISTRIBUTION_MAX_ID,
HOTFIX_SEL_SCENARIO,
+ HOTFIX_SEL_SCENARIO_MAX_ID,
HOTFIX_SEL_SCENARIO_LOCALE,
HOTFIX_SEL_SCENARIO_STEP,
+ HOTFIX_SEL_SCENARIO_STEP_MAX_ID,
HOTFIX_SEL_SCENARIO_STEP_LOCALE,
HOTFIX_SEL_SCENE_SCRIPT,
+ HOTFIX_SEL_SCENE_SCRIPT_MAX_ID,
HOTFIX_SEL_SCENE_SCRIPT_GLOBAL_TEXT,
+ HOTFIX_SEL_SCENE_SCRIPT_GLOBAL_TEXT_MAX_ID,
HOTFIX_SEL_SCENE_SCRIPT_PACKAGE,
+ HOTFIX_SEL_SCENE_SCRIPT_PACKAGE_MAX_ID,
HOTFIX_SEL_SCENE_SCRIPT_TEXT,
+ HOTFIX_SEL_SCENE_SCRIPT_TEXT_MAX_ID,
HOTFIX_SEL_SKILL_LINE,
+ HOTFIX_SEL_SKILL_LINE_MAX_ID,
HOTFIX_SEL_SKILL_LINE_LOCALE,
HOTFIX_SEL_SKILL_LINE_ABILITY,
+ HOTFIX_SEL_SKILL_LINE_ABILITY_MAX_ID,
HOTFIX_SEL_SKILL_RACE_CLASS_INFO,
+ HOTFIX_SEL_SKILL_RACE_CLASS_INFO_MAX_ID,
HOTFIX_SEL_SOUND_KIT,
+ HOTFIX_SEL_SOUND_KIT_MAX_ID,
HOTFIX_SEL_SPECIALIZATION_SPELLS,
+ HOTFIX_SEL_SPECIALIZATION_SPELLS_MAX_ID,
HOTFIX_SEL_SPECIALIZATION_SPELLS_LOCALE,
HOTFIX_SEL_SPEC_SET_MEMBER,
+ HOTFIX_SEL_SPEC_SET_MEMBER_MAX_ID,
HOTFIX_SEL_SPELL_AURA_OPTIONS,
+ HOTFIX_SEL_SPELL_AURA_OPTIONS_MAX_ID,
HOTFIX_SEL_SPELL_AURA_RESTRICTIONS,
+ HOTFIX_SEL_SPELL_AURA_RESTRICTIONS_MAX_ID,
HOTFIX_SEL_SPELL_CAST_TIMES,
+ HOTFIX_SEL_SPELL_CAST_TIMES_MAX_ID,
HOTFIX_SEL_SPELL_CASTING_REQUIREMENTS,
+ HOTFIX_SEL_SPELL_CASTING_REQUIREMENTS_MAX_ID,
HOTFIX_SEL_SPELL_CATEGORIES,
+ HOTFIX_SEL_SPELL_CATEGORIES_MAX_ID,
HOTFIX_SEL_SPELL_CATEGORY,
+ HOTFIX_SEL_SPELL_CATEGORY_MAX_ID,
HOTFIX_SEL_SPELL_CATEGORY_LOCALE,
HOTFIX_SEL_SPELL_CLASS_OPTIONS,
+ HOTFIX_SEL_SPELL_CLASS_OPTIONS_MAX_ID,
HOTFIX_SEL_SPELL_COOLDOWNS,
+ HOTFIX_SEL_SPELL_COOLDOWNS_MAX_ID,
HOTFIX_SEL_SPELL_DURATION,
+ HOTFIX_SEL_SPELL_DURATION_MAX_ID,
HOTFIX_SEL_SPELL_EFFECT,
+ HOTFIX_SEL_SPELL_EFFECT_MAX_ID,
HOTFIX_SEL_SPELL_EQUIPPED_ITEMS,
+ HOTFIX_SEL_SPELL_EQUIPPED_ITEMS_MAX_ID,
HOTFIX_SEL_SPELL_FOCUS_OBJECT,
+ HOTFIX_SEL_SPELL_FOCUS_OBJECT_MAX_ID,
HOTFIX_SEL_SPELL_FOCUS_OBJECT_LOCALE,
HOTFIX_SEL_SPELL_INTERRUPTS,
+ HOTFIX_SEL_SPELL_INTERRUPTS_MAX_ID,
HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT,
+ HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT_MAX_ID,
HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT_LOCALE,
HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT_CONDITION,
+ HOTFIX_SEL_SPELL_ITEM_ENCHANTMENT_CONDITION_MAX_ID,
HOTFIX_SEL_SPELL_LEARN_SPELL,
+ HOTFIX_SEL_SPELL_LEARN_SPELL_MAX_ID,
HOTFIX_SEL_SPELL_LEVELS,
+ HOTFIX_SEL_SPELL_LEVELS_MAX_ID,
HOTFIX_SEL_SPELL_MISC,
+ HOTFIX_SEL_SPELL_MISC_MAX_ID,
HOTFIX_SEL_SPELL_NAME,
+ HOTFIX_SEL_SPELL_NAME_MAX_ID,
HOTFIX_SEL_SPELL_NAME_LOCALE,
HOTFIX_SEL_SPELL_POWER,
+ HOTFIX_SEL_SPELL_POWER_MAX_ID,
HOTFIX_SEL_SPELL_POWER_DIFFICULTY,
+ HOTFIX_SEL_SPELL_POWER_DIFFICULTY_MAX_ID,
HOTFIX_SEL_SPELL_PROCS_PER_MINUTE,
+ HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MAX_ID,
HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MOD,
+ HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MOD_MAX_ID,
HOTFIX_SEL_SPELL_RADIUS,
+ HOTFIX_SEL_SPELL_RADIUS_MAX_ID,
HOTFIX_SEL_SPELL_RANGE,
+ HOTFIX_SEL_SPELL_RANGE_MAX_ID,
HOTFIX_SEL_SPELL_RANGE_LOCALE,
HOTFIX_SEL_SPELL_REAGENTS,
+ HOTFIX_SEL_SPELL_REAGENTS_MAX_ID,
HOTFIX_SEL_SPELL_SCALING,
+ HOTFIX_SEL_SPELL_SCALING_MAX_ID,
HOTFIX_SEL_SPELL_SHAPESHIFT,
+ HOTFIX_SEL_SPELL_SHAPESHIFT_MAX_ID,
HOTFIX_SEL_SPELL_SHAPESHIFT_FORM,
+ HOTFIX_SEL_SPELL_SHAPESHIFT_FORM_MAX_ID,
HOTFIX_SEL_SPELL_SHAPESHIFT_FORM_LOCALE,
HOTFIX_SEL_SPELL_TARGET_RESTRICTIONS,
+ HOTFIX_SEL_SPELL_TARGET_RESTRICTIONS_MAX_ID,
HOTFIX_SEL_SPELL_TOTEMS,
+ HOTFIX_SEL_SPELL_TOTEMS_MAX_ID,
HOTFIX_SEL_SPELL_VISUAL_KIT,
+ HOTFIX_SEL_SPELL_VISUAL_KIT_MAX_ID,
HOTFIX_SEL_SPELL_X_SPELL_VISUAL,
+ HOTFIX_SEL_SPELL_X_SPELL_VISUAL_MAX_ID,
HOTFIX_SEL_SUMMON_PROPERTIES,
+ HOTFIX_SEL_SUMMON_PROPERTIES_MAX_ID,
HOTFIX_SEL_TACT_KEY,
+ HOTFIX_SEL_TACT_KEY_MAX_ID,
HOTFIX_SEL_TALENT,
+ HOTFIX_SEL_TALENT_MAX_ID,
HOTFIX_SEL_TALENT_LOCALE,
HOTFIX_SEL_TAXI_NODES,
+ HOTFIX_SEL_TAXI_NODES_MAX_ID,
HOTFIX_SEL_TAXI_NODES_LOCALE,
HOTFIX_SEL_TAXI_PATH,
+ HOTFIX_SEL_TAXI_PATH_MAX_ID,
HOTFIX_SEL_TAXI_PATH_NODE,
+ HOTFIX_SEL_TAXI_PATH_NODE_MAX_ID,
HOTFIX_SEL_TOTEM_CATEGORY,
+ HOTFIX_SEL_TOTEM_CATEGORY_MAX_ID,
HOTFIX_SEL_TOTEM_CATEGORY_LOCALE,
HOTFIX_SEL_TOY,
+ HOTFIX_SEL_TOY_MAX_ID,
HOTFIX_SEL_TOY_LOCALE,
HOTFIX_SEL_TRANSMOG_HOLIDAY,
+ HOTFIX_SEL_TRANSMOG_HOLIDAY_MAX_ID,
HOTFIX_SEL_TRANSMOG_SET,
+ HOTFIX_SEL_TRANSMOG_SET_MAX_ID,
HOTFIX_SEL_TRANSMOG_SET_LOCALE,
HOTFIX_SEL_TRANSMOG_SET_GROUP,
+ HOTFIX_SEL_TRANSMOG_SET_GROUP_MAX_ID,
HOTFIX_SEL_TRANSMOG_SET_GROUP_LOCALE,
HOTFIX_SEL_TRANSMOG_SET_ITEM,
+ HOTFIX_SEL_TRANSMOG_SET_ITEM_MAX_ID,
HOTFIX_SEL_TRANSPORT_ANIMATION,
+ HOTFIX_SEL_TRANSPORT_ANIMATION_MAX_ID,
HOTFIX_SEL_TRANSPORT_ROTATION,
+ HOTFIX_SEL_TRANSPORT_ROTATION_MAX_ID,
HOTFIX_SEL_UI_MAP,
+ HOTFIX_SEL_UI_MAP_MAX_ID,
HOTFIX_SEL_UI_MAP_LOCALE,
HOTFIX_SEL_UI_MAP_ASSIGNMENT,
+ HOTFIX_SEL_UI_MAP_ASSIGNMENT_MAX_ID,
HOTFIX_SEL_UI_MAP_LINK,
+ HOTFIX_SEL_UI_MAP_LINK_MAX_ID,
HOTFIX_SEL_UI_MAP_X_MAP_ART,
+ HOTFIX_SEL_UI_MAP_X_MAP_ART_MAX_ID,
HOTFIX_SEL_UNIT_POWER_BAR,
+ HOTFIX_SEL_UNIT_POWER_BAR_MAX_ID,
HOTFIX_SEL_UNIT_POWER_BAR_LOCALE,
HOTFIX_SEL_VEHICLE,
+ HOTFIX_SEL_VEHICLE_MAX_ID,
HOTFIX_SEL_VEHICLE_SEAT,
+ HOTFIX_SEL_VEHICLE_SEAT_MAX_ID,
HOTFIX_SEL_WMO_AREA_TABLE,
+ HOTFIX_SEL_WMO_AREA_TABLE_MAX_ID,
HOTFIX_SEL_WMO_AREA_TABLE_LOCALE,
HOTFIX_SEL_WORLD_EFFECT,
+ HOTFIX_SEL_WORLD_EFFECT_MAX_ID,
HOTFIX_SEL_WORLD_MAP_OVERLAY,
+ HOTFIX_SEL_WORLD_MAP_OVERLAY_MAX_ID,
HOTFIX_SEL_WORLD_STATE_EXPRESSION,
+ HOTFIX_SEL_WORLD_STATE_EXPRESSION_MAX_ID,
MAX_HOTFIXDATABASE_STATEMENTS
};
diff --git a/src/server/shared/DataStores/DB2DatabaseLoader.cpp b/src/server/shared/DataStores/DB2DatabaseLoader.cpp
index 04b8e80313f..a147b12aae4 100644
--- a/src/server/shared/DataStores/DB2DatabaseLoader.cpp
+++ b/src/server/shared/DataStores/DB2DatabaseLoader.cpp
@@ -67,10 +67,10 @@ char* DB2DatabaseLoader::Load(uint32& records, char**& indexTable, char*& string
stringHolders = nullptr;
// Resize index table
- // database query *MUST* contain ORDER BY `index_field` DESC clause
- uint32 indexTableSize = (*result)[indexField].GetUInt32() + 1;
- if (indexTableSize < records)
- indexTableSize = records;
+ uint32 indexTableSize = records;
+ if (PreparedQueryResult maxIdResult = HotfixDatabase.Query(HotfixDatabase.GetPreparedStatement(HotfixDatabaseStatements(_loadInfo->Statement + 1))))
+ if ((*maxIdResult)[0].GetUInt32() > records)
+ indexTableSize = (*maxIdResult)[0].GetUInt32();
if (indexTableSize > records)
{
@@ -202,7 +202,7 @@ char* DB2DatabaseLoader::Load(uint32& records, char**& indexTable, char*& string
void DB2DatabaseLoader::LoadStrings(uint32 locale, uint32 records, char** indexTable, std::vector<char*>& stringPool)
{
- HotfixDatabasePreparedStatement* stmt = HotfixDatabase.GetPreparedStatement(HotfixDatabaseStatements(_loadInfo->Statement + 1));
+ HotfixDatabasePreparedStatement* stmt = HotfixDatabase.GetPreparedStatement(HotfixDatabaseStatements(_loadInfo->Statement + 2));
stmt->setString(0, localeNames[locale]);
PreparedQueryResult result = HotfixDatabase.Query(stmt);
if (!result)