PREPARE_STATEMENT(LOGIN_SEL_REALMLIST,"SELECT id, name, address, port, icon, flag, timezone, allowedSecurityLevel, population, gamebuild FROM realmlist WHERE flag <> 3 ORDER BY name",CONNECTION_SYNCH)
PREPARE_STATEMENT(LOGIN_DEL_EXPIRED_IP_BANS,"DELETE FROM ip_banned WHERE unbandate<>bandate AND unbandate<=UNIX_TIMESTAMP()",CONNECTION_ASYNC)
PREPARE_STATEMENT(LOGIN_UPD_EXPIRED_ACCOUNT_BANS,"UPDATE account_banned SET active = 0 WHERE active = 1 AND unbandate<>bandate AND unbandate<=UNIX_TIMESTAMP()",CONNECTION_ASYNC)
PREPARE_STATEMENT(LOGIN_SEL_IP_BANNED,"SELECT * FROM ip_banned WHERE ip = ?",CONNECTION_SYNCH)
PREPARE_STATEMENT(LOGIN_SEL_IP_BANNED_ALL,"SELECT ip, bandate, unbandate, bannedby, banreason FROM ip_banned WHERE (bandate = unbandate OR unbandate > UNIX_TIMESTAMP()) ORDER BY unbandate",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_IP_BANNED_BY_IP,"SELECT ip, bandate, unbandate, bannedby, banreason FROM ip_banned WHERE (bandate = unbandate OR unbandate > UNIX_TIMESTAMP()) AND ip LIKE CONCAT('%%', ?, '%%') ORDER BY unbandate",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_ACCOUNT_BANNED_ALL,"SELECT account.id, username FROM account, account_banned WHERE account.id = account_banned.id AND active = 1 GROUP BY account.id",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_ACCOUNT_BANNED_BY_USERNAME,"SELECT account.id, username FROM account, account_banned WHERE account.id = account_banned.id AND active = 1 AND username LIKE CONCAT('%%', ?, '%%') GROUP BY account.id",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_SESSIONKEY,"SELECT a.sessionkey, a.id, aa.gmlevel FROM account a LEFT JOIN account_access aa ON (a.id = aa.id) WHERE username = ?",CONNECTION_SYNCH)
PREPARE_STATEMENT(LOGIN_UPD_VS,"UPDATE account SET v = ?, s = ? WHERE username = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(LOGIN_SEL_LOGONCHALLENGE,"SELECT a.sha_pass_hash, a.id, a.locked, a.last_ip, aa.gmlevel, a.v, a.s FROM account a LEFT JOIN account_access aa ON (a.id = aa.id) WHERE a.username = ?",CONNECTION_SYNCH)
PREPARE_STATEMENT(LOGIN_UPD_FAILEDLOGINS,"UPDATE account SET failed_logins = failed_logins + 1 WHERE username = ?",CONNECTION_ASYNC)
PREPARE_STATEMENT(LOGIN_SEL_FAILEDLOGINS,"SELECT id, failed_logins FROM account WHERE username = ?",CONNECTION_SYNCH)
PREPARE_STATEMENT(LOGIN_SEL_ACCOUNT_ID_BY_NAME,"SELECT id FROM account WHERE username = ?",CONNECTION_SYNCH)
PREPARE_STATEMENT(LOGIN_INS_REALM_CHARACTERS,"INSERT INTO realmcharacters (numchars, acctid, realmid) VALUES (?, ?, ?)",CONNECTION_ASYNC)
PREPARE_STATEMENT(LOGIN_SEL_SUM_REALM_CHARACTERS,"SELECT SUM(numchars) FROM realmcharacters WHERE acctid = ?",CONNECTION_ASYNC);
PREPARE_STATEMENT(LOGIN_INS_ACCOUNT,"INSERT INTO account(username, sha_pass_hash, joindate) VALUES(?, ?, NOW())",CONNECTION_ASYNC);
PREPARE_STATEMENT(LOGIN_INS_REALM_CHARACTERS_INIT,"INSERT INTO realmcharacters (realmid, acctid, numchars) SELECT realmlist.id, account.id, 0 FROM realmlist, account LEFT JOIN realmcharacters ON acctid=account.id WHERE acctid IS NULL",CONNECTION_ASYNC);
PREPARE_STATEMENT(LOGIN_UPD_EXPANSION,"UPDATE account SET expansion = ? WHERE id = ?",CONNECTION_ASYNC);
PREPARE_STATEMENT(LOGIN_UPD_ACCOUNT_LOCK,"UPDATE account SET locked = ? WHERE id = ?",CONNECTION_ASYNC);
PREPARE_STATEMENT(LOGIN_SEL_PINFO,"SELECT a.username, aa.gmlevel, a.email, a.last_ip, DATE_FORMAT(a.last_login, '%Y-%m-%d %T'), a.mutetime FROM account a LEFT JOIN account_access aa ON (a.id = aa.id AND (aa.RealmID = ? OR aa.RealmID = -1)) WHERE a.id = ?",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_PINFO_BANS,"SELECT unbandate, bandate = unbandate, bannedby, banreason FROM account_banned WHERE id = ? AND active ORDER BY bandate ASC LIMIT 1",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_GM_ACCOUNTS,"SELECT a.username, aa.gmlevel FROM account a, account_access aa WHERE a.id=aa.id AND aa.gmlevel >= ? AND (aa.realmid = -1 OR aa.realmid = ?)",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_ACCOUNT_INFO,"SELECT a.username, a.last_ip, aa.gmlevel, a.expansion FROM account a LEFT JOIN account_access aa ON (a.id = aa.id) WHERE a.id = ?",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_ACCOUNT_ACCESS_GMLEVEL_TEST,"SELECT 1 FROM account_access WHERE id = ? AND gmlevel > ?",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_ACCOUNT_ACCESS,"SELECT a.id, aa.gmlevel, aa.RealmID FROM account a LEFT JOIN account_access aa ON (a.id = aa.id) WHERE a.username = ?",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_ACCOUNT_RECRUITER,"SELECT 1 FROM account WHERE recruiter = ?",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_BANS,"SELECT 1 FROM account_banned WHERE id = ? AND active = 1 UNION SELECT 1 FROM ip_banned WHERE ip = ?",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_ACCOUNT_WHOIS,"SELECT username, email, last_ip FROM account WHERE id = ?",CONNECTION_SYNCH);
PREPARE_STATEMENT(LOGIN_SEL_REALMLIST_SECURITY_LEVEL,"SELECT allowedSecurityLevel from realmlist WHERE id = ?",CONNECTION_SYNCH);