Fixed ticket reading when using PGSQL

Optimized ticket deleting by its position
Signed-off-by: ApoC <apoc@nymfe.net>
This commit is contained in:
ApoC 2008-10-26 12:26:22 +01:00
parent 03621bf5f3
commit 4658b2b38e
2 changed files with 9 additions and 10 deletions

View file

@ -1950,7 +1950,7 @@ bool ChatHandler::HandleTicketCommand(const char* args)
int num = atoi(px);
if(num > 0)
{
QueryResult *result = CharacterDatabase.PQuery("SELECT guid,ticket_text,ticket_lastchange FROM character_ticket ORDER BY ticket_id ASC LIMIT %d,1",num-1);
QueryResult *result = CharacterDatabase.PQuery("SELECT guid,ticket_text,ticket_lastchange FROM character_ticket ORDER BY ticket_id ASC "_OFFSET_, num-1);
if(!result)
{
@ -2062,9 +2062,9 @@ bool ChatHandler::HandleDelTicketCommand(const char *args)
// delticket #num
if(num > 0)
{
QueryResult *result = CharacterDatabase.PQuery("SELECT ticket_id,guid FROM character_ticket LIMIT %i",num);
QueryResult *result = CharacterDatabase.PQuery("SELECT ticket_id,guid FROM character_ticket ORDER BY ticket_id ASC "_OFFSET_,num-1);
if(!result || uint64(num) > result->GetRowCount())
if(!result)
{
PSendSysMessage(LANG_COMMAND_TICKENOTEXIST, num);
delete result;
@ -2072,9 +2072,6 @@ bool ChatHandler::HandleDelTicketCommand(const char *args)
return false;
}
for(int i = 1; i < num; ++i)
result->NextRow();
Field* fields = result->Fetch();
uint32 id = fields[0].GetUInt32();

View file

@ -32,9 +32,10 @@
#include "Database/Database.h"
#include "Database/DatabasePostgre.h"
typedef DatabasePostgre DatabaseType;
#define _LIKE_ "ILIKE"
#define _TABLE_SIM_ "\""
#define _LIKE_ "ILIKE"
#define _TABLE_SIM_ "\""
#define _CONCAT3_(A,B,C) "( " A " || " B " || " C " )"
#define _OFFSET_ "LIMIT 1 OFFSET %d"
#else
#include "Database/QueryResultMysql.h"
#include "Database/QueryResultSqlite.h"
@ -42,9 +43,10 @@ typedef DatabasePostgre DatabaseType;
#include "Database/DatabaseMysql.h"
#include "Database/DatabaseSqlite.h"
typedef DatabaseMysql DatabaseType;
#define _LIKE_ "LIKE"
#define _TABLE_SIM_ "`"
#define _LIKE_ "LIKE"
#define _TABLE_SIM_ "`"
#define _CONCAT3_(A,B,C) "CONCAT( " A " , " B " , " C " )"
#define _OFFSET_ "LIMIT %d,1"
#endif
extern DatabaseType WorldDatabase;