aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Pet
diff options
context:
space:
mode:
authorleak <leak@bitmx.net>2012-03-24 01:25:08 +0100
committerleak <leak@bitmx.net>2012-03-24 01:25:08 +0100
commit12e55a04bb14f4a56576dcc0ead35e996d7dcc7d (patch)
treee99f4982d0f249d30ae51479c3f6975f757bb851 /src/server/game/Entities/Pet
parent8e96b86715ac78e18d8fa5e14d9e7b9a3f2dc125 (diff)
Core/DBLayer: Convert PQuery() queries to prepared statements
Diffstat (limited to 'src/server/game/Entities/Pet')
-rwxr-xr-xsrc/server/game/Entities/Pet/Pet.cpp80
1 files changed, 51 insertions, 29 deletions
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index 1a3c1a3fbb3..cad38d5c23f 100755
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -97,30 +97,42 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petentry, uint32 petnumber, bool c
uint32 ownerid = owner->GetGUIDLow();
- QueryResult result;
+ PreparedStatement* stmt;
+ PreparedQueryResult result;
if (petnumber)
- // known petnumber entry 0 1 2(?) 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- result = CharacterDatabase.PQuery("SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, curhappiness, abdata, savetime, CreatedBySpell, PetType "
- "FROM character_pet WHERE owner = '%u' AND id = '%u'",
- ownerid, petnumber);
+ {
+ // Known petnumber entry
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PET_BY_ENTRY);
+ stmt->setUInt32(0, ownerid);
+ stmt->setUInt8(1, uint8(petnumber));
+ }
else if (current)
- // current pet (slot 0) 0 1 2(?) 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- result = CharacterDatabase.PQuery("SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, curhappiness, abdata, savetime, CreatedBySpell, PetType "
- "FROM character_pet WHERE owner = '%u' AND slot = '%u'",
- ownerid, PET_SAVE_AS_CURRENT);
+ {
+ // Current pet (slot 0)
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PET_BY_ENTRY);
+ stmt->setUInt32(0, ownerid);
+ stmt->setUInt8(1, uint8(PET_SAVE_AS_CURRENT));
+ }
else if (petentry)
+ {
// known petentry entry (unique for summoned pet, but non unique for hunter pet (only from current or not stabled pets)
- // 0 1 2(?) 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- result = CharacterDatabase.PQuery("SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, curhappiness, abdata, savetime, CreatedBySpell, PetType "
- "FROM character_pet WHERE owner = '%u' AND entry = '%u' AND (slot = '%u' OR slot > '%u') ",
- ownerid, petentry, PET_SAVE_AS_CURRENT, PET_SAVE_LAST_STABLE_SLOT);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PET_BY_ENTRY_AND_SLOT);
+ stmt->setUInt32(0, ownerid);
+ stmt->setUInt32(1, petentry);
+ stmt->setUInt8(2, uint8(PET_SAVE_AS_CURRENT));
+ stmt->setUInt8(3, uint8(PET_SAVE_LAST_STABLE_SLOT));
+ }
else
- // any current or other non-stabled pet (for hunter "call pet")
- // 0 1 2(?) 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- result = CharacterDatabase.PQuery("SELECT id, entry, owner, modelid, level, exp, Reactstate, slot, name, renamed, curhealth, curmana, curhappiness, abdata, savetime, CreatedBySpell, PetType "
- "FROM character_pet WHERE owner = '%u' AND (slot = '%u' OR slot > '%u') ",
- ownerid, PET_SAVE_AS_CURRENT, PET_SAVE_LAST_STABLE_SLOT);
+ {
+ // Any current or other non-stabled pet (for hunter "call pet")
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PET_BY_SLOT);
+ stmt->setUInt32(0, ownerid);
+ stmt->setUInt8(1, uint8(PET_SAVE_AS_CURRENT));
+ stmt->setUInt8(2, uint8(PET_SAVE_LAST_STABLE_SLOT));
+ }
+
+ result = CharacterDatabase.Query(stmt);
if (!result)
{
@@ -310,7 +322,10 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petentry, uint32 petnumber, bool c
if (getPetType() == HUNTER_PET)
{
- result = CharacterDatabase.PQuery("SELECT genitive, dative, accusative, instrumental, prepositional FROM character_pet_declinedname WHERE owner = '%u' AND id = '%u'", owner->GetGUIDLow(), GetCharmInfo()->GetPetNumber());
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_DECLINED_NAME);
+ stmt->setUInt32(0, owner->GetGUIDLow());
+ stmt->setUInt32(1, GetCharmInfo()->GetPetNumber());
+ PreparedQueryResult result = CharacterDatabase.Query(stmt);
if (result)
{
@@ -1037,7 +1052,9 @@ void Pet::_LoadSpellCooldowns()
m_CreatureSpellCooldowns.clear();
m_CreatureCategoryCooldowns.clear();
- QueryResult result = CharacterDatabase.PQuery("SELECT spell, time FROM pet_spell_cooldown WHERE guid = '%u'", m_charmInfo->GetPetNumber());
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_SPELL_COOLDOWN);
+ stmt->setUInt32(0, m_charmInfo->GetPetNumber());
+ PreparedQueryResult result = CharacterDatabase.Query(stmt);
if (result)
{
@@ -1099,7 +1116,9 @@ void Pet::_SaveSpellCooldowns(SQLTransaction& trans)
void Pet::_LoadSpells()
{
- QueryResult result = CharacterDatabase.PQuery("SELECT spell, active FROM pet_spell WHERE guid = '%u'", m_charmInfo->GetPetNumber());
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_SPELL);
+ stmt->setUInt32(0, m_charmInfo->GetPetNumber());
+ PreparedQueryResult result = CharacterDatabase.Query(stmt);
if (result)
{
@@ -1147,7 +1166,9 @@ void Pet::_LoadAuras(uint32 timediff)
{
sLog->outDebug(LOG_FILTER_PETS, "Loading auras for pet %u", GetGUIDLow());
- QueryResult result = CharacterDatabase.PQuery("SELECT caster_guid, spell, effect_mask, recalculate_mask, stackcount, amount0, amount1, amount2, base_amount0, base_amount1, base_amount2, maxduration, remaintime, remaincharges FROM pet_aura WHERE guid = '%u'", m_charmInfo->GetPetNumber());
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_AURA);
+ stmt->setUInt32(0, m_charmInfo->GetPetNumber());
+ PreparedQueryResult result = CharacterDatabase.Query(stmt);
if (result)
{
@@ -1630,18 +1651,19 @@ void Pet::resetTalentsForAllPetsOf(Player* owner, Pet* online_pet /*= NULL*/)
// now need only reset for offline pets (all pets except online case)
uint32 except_petnumber = online_pet ? online_pet->GetCharmInfo()->GetPetNumber() : 0;
- QueryResult resultPets = CharacterDatabase.PQuery(
- "SELECT id FROM character_pet WHERE owner = '%u' AND id <> '%u'",
- owner->GetGUIDLow(), except_petnumber);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PET);
+ stmt->setUInt32(0, owner->GetGUIDLow());
+ stmt->setUInt32(1, except_petnumber);
+ PreparedQueryResult resultPets = CharacterDatabase.Query(stmt);
// no offline pets
if (!resultPets)
return;
- QueryResult result = CharacterDatabase.PQuery(
- "SELECT DISTINCT pet_spell.spell FROM pet_spell, character_pet "
- "WHERE character_pet.owner = '%u' AND character_pet.id = pet_spell.guid AND character_pet.id <> %u",
- owner->GetGUIDLow(), except_petnumber);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_SPELL_LIST);
+ stmt->setUInt32(0, owner->GetGUIDLow());
+ stmt->setUInt32(0, except_petnumber);
+ PreparedQueryResult result = CharacterDatabase.Query(stmt);
if (!result)
return;