From 63f9e43385a58bb4f6420aba4d58eddd79f235a9 Mon Sep 17 00:00:00 2001 From: Vinolentus <655ff4c91d8e57f5@gmail.com> Date: Tue, 25 Oct 2011 20:39:43 +0300 Subject: [PATCH] [11835] Fix SqlStatement::addBool MYSQL_TYPE_BIT is not one of the allowable input values, so we have to pass it using an integer variable Signed-off-by: SilverIce --- src/shared/Database/DatabaseMysql.cpp | 5 +++-- src/shared/Database/SqlPreparedStatement.h | 6 +++--- src/shared/revision_nr.h | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/shared/Database/DatabaseMysql.cpp b/src/shared/Database/DatabaseMysql.cpp index 78110a6bc..8fa8126ba 100644 --- a/src/shared/Database/DatabaseMysql.cpp +++ b/src/shared/Database/DatabaseMysql.cpp @@ -481,9 +481,10 @@ enum_field_types MySqlPreparedStatement::ToMySQLType( const SqlStmtFieldData &da switch (data.type()) { case FIELD_NONE: dataType = MYSQL_TYPE_NULL; break; - case FIELD_BOOL: dataType = MYSQL_TYPE_BIT; bUnsigned = 1; break; - case FIELD_I8: dataType = MYSQL_TYPE_TINY; break; + // MySQL does not support MYSQL_TYPE_BIT as input type + case FIELD_BOOL: //dataType = MYSQL_TYPE_BIT; bUnsigned = 1; break; case FIELD_UI8: dataType = MYSQL_TYPE_TINY; bUnsigned = 1; break; + case FIELD_I8: dataType = MYSQL_TYPE_TINY; break; case FIELD_I16: dataType = MYSQL_TYPE_SHORT; break; case FIELD_UI16: dataType = MYSQL_TYPE_SHORT; bUnsigned = 1; break; case FIELD_I32: dataType = MYSQL_TYPE_LONG; break; diff --git a/src/shared/Database/SqlPreparedStatement.h b/src/shared/Database/SqlPreparedStatement.h index 7f6b974c2..22f0d8f83 100644 --- a/src/shared/Database/SqlPreparedStatement.h +++ b/src/shared/Database/SqlPreparedStatement.h @@ -75,7 +75,7 @@ class MANGOS_DLL_SPEC SqlStmtFieldData void set(T1 param1); //getters - bool toBool() const { MANGOS_ASSERT(m_type == FIELD_BOOL); return m_binaryData.boolean; } + bool toBool() const { MANGOS_ASSERT(m_type == FIELD_BOOL); return static_cast(m_binaryData.ui8); } uint8 toUint8() const { MANGOS_ASSERT(m_type == FIELD_UI8); return m_binaryData.ui8; } int8 toInt8() const { MANGOS_ASSERT(m_type == FIELD_I8); return m_binaryData.i8; } uint16 toUint16() const { MANGOS_ASSERT(m_type == FIELD_UI16); return m_binaryData.ui16; } @@ -99,7 +99,7 @@ class MANGOS_DLL_SPEC SqlStmtFieldData switch (m_type) { case FIELD_NONE: return 0; - case FIELD_BOOL: return sizeof(bool); + case FIELD_BOOL: //return sizeof(bool); case FIELD_UI8: return sizeof(uint8); case FIELD_UI16: return sizeof(uint16); case FIELD_UI32: return sizeof(uint32); @@ -124,7 +124,7 @@ class MANGOS_DLL_SPEC SqlStmtFieldData }; //template specialization -template<> inline void SqlStmtFieldData::set(bool val) { m_type = FIELD_BOOL; m_binaryData.boolean = val; } +template<> inline void SqlStmtFieldData::set(bool val) { m_type = FIELD_BOOL; m_binaryData.ui8 = val; } template<> inline void SqlStmtFieldData::set(uint8 val) { m_type = FIELD_UI8; m_binaryData.ui8 = val; } template<> inline void SqlStmtFieldData::set(int8 val) { m_type = FIELD_I8; m_binaryData.i8 = val; } template<> inline void SqlStmtFieldData::set(uint16 val) { m_type = FIELD_UI16; m_binaryData.ui16 = val; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 088c1bafb..7d5bb4fc4 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11834" + #define REVISION_NR "11835" #endif // __REVISION_NR_H__