mirror of
https://github.com/mangosfour/server.git
synced 2025-12-22 04:37:01 +00:00
[11284] Implement prepared statements for INSERT+DELETE+UPDATE SQL requests. Should improve player save performance + lower MySQL server CPU usage.
Note: PostgreSQL does not have prepared statements implemented using native APIs. Huge thanks to Undergarun, kero99 and Vinolentus. Signed-off-by: Ambal <pogrebniak@gala.net>
This commit is contained in:
parent
d9374d936f
commit
40ef9cbf2f
24 changed files with 1823 additions and 488 deletions
|
|
@ -749,15 +749,32 @@ void WorldSession::SendTutorialsData()
|
|||
|
||||
void WorldSession::SaveTutorialsData()
|
||||
{
|
||||
static SqlStatementID updTutorial ;
|
||||
static SqlStatementID insTutorial ;
|
||||
|
||||
switch(m_tutorialState)
|
||||
{
|
||||
case TUTORIALDATA_CHANGED:
|
||||
CharacterDatabase.PExecute("UPDATE character_tutorial SET tut0='%u', tut1='%u', tut2='%u', tut3='%u', tut4='%u', tut5='%u', tut6='%u', tut7='%u' WHERE account = '%u'",
|
||||
m_Tutorials[0], m_Tutorials[1], m_Tutorials[2], m_Tutorials[3], m_Tutorials[4], m_Tutorials[5], m_Tutorials[6], m_Tutorials[7], GetAccountId());
|
||||
{
|
||||
SqlStatement stmt = CharacterDatabase.CreateStatement(updTutorial, "UPDATE character_tutorial SET tut0=?, tut1=?, tut2=?, tut3=?, tut4=?, tut5=?, tut6=?, tut7=? WHERE account = ?");
|
||||
for (int i = 0; i < 8; ++i)
|
||||
stmt.addUInt32(m_Tutorials[i]);
|
||||
|
||||
stmt.addUInt32(GetAccountId());
|
||||
stmt.Execute();
|
||||
}
|
||||
break;
|
||||
|
||||
case TUTORIALDATA_NEW:
|
||||
CharacterDatabase.PExecute("INSERT INTO character_tutorial (account,tut0,tut1,tut2,tut3,tut4,tut5,tut6,tut7) VALUES ('%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u')",
|
||||
GetAccountId(), m_Tutorials[0], m_Tutorials[1], m_Tutorials[2], m_Tutorials[3], m_Tutorials[4], m_Tutorials[5], m_Tutorials[6], m_Tutorials[7]);
|
||||
{
|
||||
SqlStatement stmt = CharacterDatabase.CreateStatement(insTutorial, "INSERT INTO character_tutorial (account,tut0,tut1,tut2,tut3,tut4,tut5,tut6,tut7) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
|
||||
stmt.addUInt32(GetAccountId());
|
||||
for (int i = 0; i < 8; ++i)
|
||||
stmt.addUInt32(m_Tutorials[i]);
|
||||
|
||||
stmt.Execute();
|
||||
}
|
||||
break;
|
||||
case TUTORIALDATA_UNCHANGED:
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue