PREPARE_STATEMENT(CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEM,"DELETE FROM guild_bank_item WHERE guildid = ? AND TabId = ? AND SlotId = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_EXPIRED_BANS,"UPDATE character_banned SET active = 0 WHERE unbandate <= UNIX_TIMESTAMP() AND unbandate <> bandate",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_GUID_BY_NAME,"SELECT guid FROM characters WHERE name = ?",CONNECTION_BOTH);
PREPARE_STATEMENT(CHAR_SEL_CHECK_NAME,"SELECT 1 FROM characters WHERE name = ?",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_SEL_SUM_CHARS,"SELECT COUNT(guid) FROM characters WHERE account = ?",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_SEL_CHAR_CREATE_INFO,"SELECT level, race, class FROM characters WHERE account = ? LIMIT 0, ?",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_INS_CHARACTER_BAN,"INSERT INTO character_banned VALUES (?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()+?, ?, ?, 1)",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_UPD_CHARACTER_BAN,"UPDATE character_banned SET active = 0 WHERE guid = ? AND active != 0",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_BANINFO,"SELECT FROM_UNIXTIME(bandate), unbandate-bandate, active, unbandate, banreason, bannedby FROM character_banned WHERE guid = ? ORDER BY bandate ASC",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_SEL_GUID_BY_NAME_FILTER,"SELECT guid, name FROM characters WHERE name LIKE CONCAT('%', ?, '%')",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_SEL_BANINFO_LIST,"SELECT bandate, unbandate, bannedby, banreason FROM character_banned WHERE guid = ? ORDER BY unbandate",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_SEL_BANNED_NAME,"SELECT characters.name FROM characters, character_banned WHERE character_banned.guid = ? AND character_banned.guid = characters.guid",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_SEL_ENUM,"SELECT c.guid, c.name, c.race, c.class, c.gender, c.playerBytes, c.playerBytes2, c.level, c.zone, c.map, c.position_x, c.position_y, c.position_z, gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level, c.equipmentCache, cb.guid FROM characters AS c LEFT JOIN character_pet AS cp ON c.guid = cp.owner AND cp.slot = ? LEFT JOIN guild_member AS gm ON c.guid = gm.guid LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? ORDER BY c.guid",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_SEL_ENUM_DECLINED_NAME,"SELECT c.guid, c.name, c.race, c.class, c.gender, c.playerBytes, c.playerBytes2, c.level, c.zone, c.map, c.position_x, c.position_y, c.position_z, gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level, c.equipmentCache, cb.guid, cd.genitive FROM characters AS c LEFT JOIN character_pet AS cp ON c.guid = cp.owner AND cp.slot = ? LEFT JOIN character_declinedname AS cd ON c.guid = cd.guid LEFT JOIN guild_member AS gm ON c.guid = gm.guid LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? ORDER BY c.guid",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_SEL_PET_SLOTS,"SELECT owner, slot FROM character_pet WHERE owner = ? AND slot >= ? AND slot <= ? ORDER BY slot",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_SEL_PET_SLOTS_DETAIL,"SELECT owner, id, entry, level, name FROM character_pet WHERE owner = ? AND slot >= ? AND slot <= ? ORDER BY slot",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_SEL_PET_ENTRY,"SELECT entry FROM character_pet WHERE owner = ? AND id = ? AND slot >= ? AND slot <= ?",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_SEL_PET_SLOT_BY_ID,"SELECT slot, entry FROM character_pet WHERE owner = ? AND id = ?",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_SEL_FREE_NAME,"SELECT guid, name FROM characters WHERE guid = ? AND account = ? AND (at_login & ?) = ? AND NOT EXISTS (SELECT NULL FROM characters WHERE name = ?)",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_SEL_GUID_RACE_ACC_BY_NAME,"SELECT guid, race, account FROM characters WHERE name = ?",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_SEL_GROUP_MEMBER,"SELECT guid FROM group_member WHERE memberGuid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_INSTANCE,"SELECT id, permanent, map, difficulty, resettime FROM character_instance LEFT JOIN instance ON instance = id WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_ACTIONS,"SELECT a.button, a.action, a.type FROM character_action as a, characters as c WHERE a.guid = c.guid AND a.spec = c.activespec AND a.guid = ? ORDER BY button",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_MAILCOUNT,"SELECT COUNT(id) FROM mail WHERE receiver = ? AND (checked & 1) = 0 AND deliver_time <= ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_MAILDATE,"SELECT MIN(deliver_time) FROM mail WHERE receiver = ? AND (checked & 1) = 0",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_SOCIALLIST,"SELECT friend, flags, note FROM character_social JOIN characters ON characters.guid = character_social.friend WHERE character_social.guid = ? AND deleteinfos_name IS NULL LIMIT 255",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_HOMEBIND,"SELECT mapId, zoneId, posX, posY, posZ FROM character_homebind WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_SPELLCOOLDOWNS,"SELECT spell, item, time FROM character_spell_cooldown WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_DECLINEDNAMES,"SELECT genitive, dative, accusative, instrumental, prepositional FROM character_declinedname WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_GUILD_MEMBER,"SELECT guildid, rank FROM guild_member WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_ACHIEVEMENTS,"SELECT achievement, date FROM character_achievement WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_CRITERIAPROGRESS,"SELECT criteria, counter, date FROM character_achievement_progress WHERE guid = ?",CONNECTION_ASYNC)
"item9, item10, item11, item12, item13, item14, item15, item16, item17, item18 FROM character_equipmentsets WHERE guid = ? ORDER BY setindex",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_BGDATA,"SELECT instanceId, team, joinX, joinY, joinZ, joinO, joinMapId, taxiStart, taxiEnd, mountSpell FROM character_battleground_data WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_GLYPHS,"SELECT spec, glyph1, glyph2, glyph3, glyph4, glyph5, glyph6 FROM character_glyphs WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_TALENTS,"SELECT spell, spec FROM character_talent WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_SKILLS,"SELECT skill, value, max FROM character_skills WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_RANDOMBG,"SELECT guid FROM character_battleground_random WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_BANNED,"SELECT guid FROM character_banned WHERE guid = ? AND active = 1",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_QUESTSTATUSREW,"SELECT quest FROM character_queststatus_rewarded WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_ACCOUNT_INSTANCELOCKTIMES,"SELECT instanceId, releaseTime FROM account_instance_times WHERE accountId = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_SEL_CHARACTER_ACTIONS_SPEC,"SELECT button, action, type FROM character_action WHERE guid = ? AND spec = ? ORDER BY button",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_SEL_MAILITEMS,"SELECT creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text, item_guid, itemEntry, owner_guid FROM mail_items mi JOIN item_instance ii ON mi.item_guid = ii.guid WHERE mail_id = ?",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_SEL_AUCTION_ITEMS,"SELECT creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text, itemguid, itemEntry FROM auctionhouse ah JOIN item_instance ii ON ah.itemguid = ii.guid",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_SEL_AUCTIONS,"SELECT id, auctioneerguid, itemguid, itemEntry, itemowner, buyoutprice, time, buyguid, lastbid, startbid, deposit FROM auctionhouse ah INNER JOIN item_instance ii ON ii.guid = ah.itemguid",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_SEL_EXPIRED_MAIL,"SELECT id, messageType, sender, receiver, has_items, expire_time, cod, checked, mailTemplateId FROM mail WHERE expire_time < ?",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_SEL_EXPIRED_MAIL_ITEMS,"SELECT item_guid, itemEntry, mail_id FROM mail_items mi INNER JOIN item_instance ii ON ii.guid = mi.item_guid LEFT JOIN mail mm ON mi.mail_id = mm.id WHERE mm.id IS NOT NULL AND mm.expire_time < ?",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_UPD_MAIL_RETURNED,"UPDATE mail SET sender = ?, receiver = ?, expire_time = ?, deliver_time = ?, cod = 0, checked = ? WHERE id = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_UPD_MAIL_ITEM_RECEIVER,"UPDATE mail_items SET receiver = ? WHERE item_guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_UPD_ITEM_OWNER,"UPDATE item_instance SET owner_guid = ? WHERE guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_GUILD_BANK_RIGHT,"DELETE FROM guild_bank_right WHERE guildid = ? AND TabId = ? AND rid = ?",CONNECTION_ASYNC)// 0: uint32, 1: uint8, 2: uint8
PREPARE_STATEMENT(CHAR_DEL_GUILD_BANK_RIGHTS,"DELETE FROM guild_bank_right WHERE guildid = ?",CONNECTION_ASYNC)// 0: uint32
PREPARE_STATEMENT(CHAR_DEL_GUILD_BANK_RIGHTS_FOR_RANK,"DELETE FROM guild_bank_right WHERE guildid = ? AND rid = ?",CONNECTION_ASYNC)// 0: uint32, 1: uint8
PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_PNOTE,"UPDATE guild_member SET pnote = ? WHERE guid = ?",CONNECTION_ASYNC)// 0: string, 1: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_OFFNOTE,"UPDATE guild_member SET offnote = ? WHERE guid = ?",CONNECTION_ASYNC)// 0: string, 1: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_RANK,"UPDATE guild_member SET rank = ? WHERE guid = ?",CONNECTION_ASYNC)// 0: uint8, 1: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_MOTD,"UPDATE guild SET motd = ? WHERE guildid = ?",CONNECTION_ASYNC)// 0: string, 1: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_INFO,"UPDATE guild SET info = ? WHERE guildid = ?",CONNECTION_ASYNC)// 0: string, 1: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_LEADER,"UPDATE guild SET leaderguid = ? WHERE guildid = ?",CONNECTION_ASYNC)// 0: uint32, 1: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_NAME,"UPDATE guild_rank SET rname = ? WHERE rid = ? AND guildid = ?",CONNECTION_ASYNC)// 0: string, 1: uint8, 2: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_RIGHTS,"UPDATE guild_rank SET rights = ? WHERE rid = ? AND guildid = ?",CONNECTION_ASYNC)// 0: uint32, 1: uint8, 2: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_BANK_EVENTLOG_TAB,"UPDATE guild_bank_eventlog SET TabId = ? WHERE guildid = ? AND TabId = ? AND LogGuid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_MONEY,"UPDATE guild_member SET BankRemMoney = ? WHERE guildid = ? AND guid = ?",CONNECTION_ASYNC)// 0: uint32, 1: uint32, 2: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_TIME_MONEY,"UPDATE guild_member SET BankResetTimeMoney = ?, BankRemMoney = ? WHERE guildid = ? AND guid = ?",CONNECTION_ASYNC)// 0: uint32, 1: uint32, 2: uint32, 3: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_BANK_RESET_TIME,"UPDATE guild_member SET BankResetTimeMoney = 0 WHERE guildid = ? AND rank = ?",CONNECTION_ASYNC)// 0: uint32, 1: uint8
PREPARE_STATEMENT(CHAR_UPD_GUILD_RANK_BANK_MONEY,"UPDATE guild_rank SET BankMoneyPerDay = ? WHERE rid = ? AND guildid = ?",CONNECTION_ASYNC)// 0: uint32, 1: uint8, 2: uint32
PREPARE_STATEMENT(CHAR_UPD_GUILD_BANK_TAB_TEXT,"UPDATE guild_bank_tab SET TabText = ? WHERE guildid = ? AND TabId = ?",CONNECTION_ASYNC)// 0: string, 1: uint32, 2: uint8
PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS0,"UPDATE guild_member SET BankRemSlotsTab0 = ? WHERE guildid = ? AND guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS1,"UPDATE guild_member SET BankRemSlotsTab1 = ? WHERE guildid = ? AND guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS2,"UPDATE guild_member SET BankRemSlotsTab2 = ? WHERE guildid = ? AND guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS3,"UPDATE guild_member SET BankRemSlotsTab3 = ? WHERE guildid = ? AND guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS4,"UPDATE guild_member SET BankRemSlotsTab4 = ? WHERE guildid = ? AND guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_UPD_GUILD_MEMBER_BANK_REM_SLOTS5,"UPDATE guild_member SET BankRemSlotsTab5 = ? WHERE guildid = ? AND guid = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_ALL_GAME_EVENT_CONDITION_SAVE,"DELETE FROM game_event_condition_save WHERE eventEntry = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_GAME_EVENT_CONDITION_SAVE,"DELETE FROM game_event_condition_save WHERE eventEntry = ? AND condition_id = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_UPD_ARENA_TEAM_MEMBER,"UPDATE arena_team_member SET personalRating = ?, weekGames = ?, weekWins = ?, seasonGames = ?, seasonWins = ? WHERE arenaTeamId = ? AND guid = ?",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_REP_CHARACTER_ARENA_STATS,"REPLACE INTO character_arena_stats (guid, slot, matchMakerRating) VALUES (?, ?, ?)",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_SEL_PLAYER_ARENA_TEAMS,"SELECT arena_team_member.arenaTeamId FROM arena_team_member JOIN arena_team ON arena_team_member.arenaTeamId = arena_team.arenaTeamId WHERE guid = ?",CONNECTION_SYNCH);
PREPARE_STATEMENT(CHAR_UPD_NONEXISTENT_INSTANCE_FOR_CORPSES,"UPDATE corpse SET instanceId = 0 WHERE instanceId > 0 AND instanceId NOT IN (SELECT id FROM instance)",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_SEL_MAX_CREATURE_RESPAWNS,"SELECT MAX(respawnTime), instanceId FROM creature_respawn WHERE instanceId > 0 GROUP BY instanceId",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_DEL_NONEXISTENT_INSTANCE_CREATURE_RESPAWNS,"DELETE FROM creature_respawn WHERE instanceId > 0 AND instanceId NOT IN (SELECT instanceId FROM instance)",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_DEL_GO_RESPAWN,"DELETE FROM gameobject_respawn WHERE guid = ? AND instanceId = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_GO_RESPAWN_BY_INSTANCE,"DELETE FROM gameobject_respawn WHERE instanceId = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_EXPIRED_GO_RESPAWNS,"DELETE FROM gameobject_respawn WHERE respawnTime <= UNIX_TIMESTAMP(NOW())",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_DEL_NONEXISTENT_INSTANCE_GO_RESPAWNS,"DELETE FROM gameobject_respawn WHERE instanceId > 0 AND instanceId NOT IN (SELECT instanceId FROM instance)",CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_UPD_CHARACTER,"UPDATE characters SET name=?,race=?,class=?,gender=?,level=?,xp=?,money=?,playerBytes=?,playerBytes2=?,playerFlags=?,"
PREPARE_STATEMENT(CHAR_DEL_GROUP_MEMBER,"DELETE FROM group_member WHERE memberGuid = ?",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_DEL_GROUP_INSTANCE_PERM_BINDING,"DELETE FROM group_instance WHERE guid = ? AND (permanent = 1 OR instance IN (SELECT instance FROM character_instance WHERE guid = ?))",CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_UDP_RESTORE_DELETE_INFO,"UPDATE characters SET name = ?, account = ?, deleteDate = NULL, deleteInfos_Name = NULL, deleteInfos_Account = NULL WHERE deleteDate IS NOT NULL AND guid = ?",CONNECTION_ASYNC);