bool MySQLConnection::Execute(const char* sql) { if (!m_Mysql) return false; { // guarded block for thread-safe mySQL request ACE_Guard<ACE_Thread_Mutex> query_connection_guard(m_Mutex); #ifdef SQLQUERY_LOG uint32 _s = getMSTime(); #endif if (mysql_query(m_Mysql, sql)) { sLog.outSQLDriver("SQL: %s", sql); sLog.outSQLDriver("SQL ERROR: %s", mysql_error(m_Mysql)); return false; } else { #ifdef SQLQUERY_LOG sLog.outSQLDriver("[%u ms] SQL: %s", getMSTimeDiff(_s, getMSTime()), sql); #endif } } return true; }
bool DatabaseMysql::DirectExecute(const char* sql) { if (!mMysql) return false; { // guarded block for thread-safe mySQL request ACE_Guard<ACE_Thread_Mutex> query_connection_guard(mMutex); #ifdef TRINITY_DEBUG uint32 _s = getMSTime(); #endif if (mysql_query(mMysql, sql)) { sLog.outErrorDb("SQL: %s", sql); sLog.outErrorDb("SQL ERROR: %s", mysql_error(mMysql)); return false; } else { #ifdef TRINITY_DEBUG sLog.outDebug("[%u ms] SQL: %s", getMSTimeDiff(_s,getMSTime()), sql); #endif } } return true; }
bool DatabasePostgre::DirectExecute(const char* sql) { if (!mPGconn) return false; { // guarded block for thread-safe request ACE_Guard<ACE_Thread_Mutex> query_connection_guard(mMutex); #ifdef MANGOS_DEBUG uint32 _s = getMSTime(); #endif PGresult *res = PQexec(mPGconn, sql); if (PQresultStatus(res) != PGRES_COMMAND_OK) { sLog.outErrorDb( "SQL: %s", sql ); sLog.outErrorDb( "SQL %s", PQerrorMessage(mPGconn) ); return false; } else { #ifdef MANGOS_DEBUG sLog.outDebug("[%u ms] SQL: %s", getMSTime() - _s, sql ); #endif } PQclear(res); // end guarded block } return true; }
bool DatabaseMysql::DirectExecute(const char* sql) { if (!mMysql) return false; { // guarded block for thread-safe mySQL request ACE_Guard<ACE_Thread_Mutex> query_connection_guard(mMutex); uint32 _s = getMSTime(); if (mysql_query(mMysql, sql)) { sLog.outErrorDb("SQL: %s", sql); sLog.outErrorDb("SQL ERROR: %s", mysql_error(mMysql)); return false; } else { DEBUG_FILTER_LOG(LOG_FILTER_SQL_TEXT, "[%u ms] SQL: %s", getMSTimeDiff(_s,getMSTime()), sql ); } // end guarded block } return true; }
bool DatabaseMysql::DirectExecute(const char* sql) { if (!mMysql) return false; { // guarded block for thread-safe mySQL request ZThread::Guard<ZThread::FastMutex> query_connection_guard(mMutex); #ifdef MANGOS_DEBUG uint32 _s = getMSTime(); #endif if(mysql_query(mMysql, sql)) { sLog.outErrorDb("SQL: %s", sql); sLog.outErrorDb("SQL ERROR: %s", mysql_error(mMysql)); return false; } else { #ifdef MANGOS_DEBUG sLog.outDebug("[%u ms] SQL: %s", getMSTime() - _s, sql ); #endif } // end guarded block } return true; }
QueryResult* DatabaseMysql::Query(const char *sql) { if (!mMysql) return 0; MYSQL_RES *result = 0; uint64 rowCount = 0; uint32 fieldCount = 0; { // guarded block for thread-safe mySQL request ZThread::Guard<ZThread::FastMutex> query_connection_guard(mMutex); #ifdef MANGOS_DEBUG uint32 _s = getMSTime(); #endif if(mysql_query(mMysql, sql)) { sLog.outErrorDb( "SQL: %s", sql ); sLog.outErrorDb("query ERROR: %s", mysql_error(mMysql)); return NULL; } else { #ifdef MANGOS_DEBUG sLog.outDebug("[%u ms] SQL: %s", getMSTimeDiff(_s,getMSTime()), sql ); #endif } result = mysql_store_result(mMysql); rowCount = mysql_affected_rows(mMysql); fieldCount = mysql_field_count(mMysql); // end guarded block } if (!result ) return NULL; if (!rowCount) { mysql_free_result(result); return NULL; } QueryResultMysql *queryResult = new QueryResultMysql(result, rowCount, fieldCount); queryResult->NextRow(); return queryResult; }
QueryResult* DatabasePostgre::Query(const char *sql) { if (!mPGconn) return 0; uint64 rowCount = 0; uint32 fieldCount = 0; // guarded block for thread-safe request ACE_Guard<ACE_Thread_Mutex> query_connection_guard(mMutex); #ifdef MANGOS_DEBUG uint32 _s = getMSTime(); #endif // Send the query PGresult * result = PQexec(mPGconn, sql); if (!result ) { return NULL; } if (PQresultStatus(result) != PGRES_TUPLES_OK) { sLog.outErrorDb( "SQL : %s", sql ); sLog.outErrorDb( "SQL %s", PQerrorMessage(mPGconn)); PQclear(result); return NULL; } else { #ifdef MANGOS_DEBUG sLog.outDebug("[%u ms] SQL: %s", getMSTime() - _s, sql ); #endif } rowCount = PQntuples(result); fieldCount = PQnfields(result); // end guarded block if (!rowCount) { PQclear(result); return NULL; } QueryResultPostgre * queryResult = new QueryResultPostgre(result, rowCount, fieldCount); queryResult->NextRow(); return queryResult; }
bool MySQLConnection::Execute(PreparedStatement* stmt) { if (!m_Mysql) return false; uint32 index = stmt->m_index; { // guarded block for thread-safe mySQL request ACE_Guard<ACE_Thread_Mutex> query_connection_guard(m_Mutex); MySQLPreparedStatement* m_mStmt = GetPreparedStatement(index); ASSERT(m_mStmt); // Can only be null if preparation failed, server side error or bad query m_mStmt->m_stmt = stmt; // Cross reference them for debug output stmt->m_stmt = m_mStmt; // TODO: Cleaner way stmt->BindParameters(); MYSQL_STMT* msql_STMT = m_mStmt->GetSTMT(); MYSQL_BIND* msql_BIND = m_mStmt->GetBind(); #ifdef SQLQUERY_LOG uint32 _s = getMSTime(); #endif if (mysql_stmt_bind_param(msql_STMT, msql_BIND)) { sLog.outSQLDriver("[ERROR]: PreparedStatement (id: %u) error binding params: %s", index, mysql_stmt_error(msql_STMT)); m_mStmt->ClearParameters(); return false; } if (mysql_stmt_execute(msql_STMT)) { sLog.outSQLDriver("[ERROR]: PreparedStatement (id: %u) error executing: %s", index, mysql_stmt_error(msql_STMT)); m_mStmt->ClearParameters(); return false; } else { #ifdef SQLQUERY_LOG sLog.outSQLDriver("[%u ms] Prepared SQL: %u", getMSTimeDiff(_s, getMSTime()), index); #endif m_mStmt->ClearParameters(); return true; } } }
bool DatabaseMysql::_Query(const char *sql, MYSQL_RES **pResult, MYSQL_FIELD **pFields, uint64* pRowCount, uint32* pFieldCount) { if (!mMysql) return 0; { // guarded block for thread-safe mySQL request ACE_Guard<ACE_Thread_Mutex> query_connection_guard(mMutex); uint32 _s = getMSTime(); if(mysql_query(mMysql, sql)) { sLog.outErrorDb( "SQL: %s", sql ); sLog.outErrorDb("query ERROR: %s", mysql_error(mMysql)); return false; } else { if (getMSTimeDiff(_s, getMSTime()) > 1000) sLog.outError("[%u ms] SQL: %s", getMSTimeDiff(_s,getMSTime()), sql ); #ifdef MANGOS_DEBUG sLog.outDebug("[%u ms] SQL: %s", getMSTimeDiff(_s,getMSTime()), sql ); #endif } *pResult = mysql_store_result(mMysql); *pRowCount = mysql_affected_rows(mMysql); *pFieldCount = mysql_field_count(mMysql); // end guarded block } if (!*pResult ) return false; if (!*pRowCount) { mysql_free_result(*pResult); return false; } *pFields = mysql_fetch_fields(*pResult); return true; }
bool MySQLConnection::_Query(const char *sql, MYSQL_RES **pResult, MYSQL_FIELD **pFields, uint64* pRowCount, uint32* pFieldCount) { if (!m_Mysql) return false; { // guarded block for thread-safe mySQL request ACE_Guard<ACE_Thread_Mutex> query_connection_guard(m_Mutex); #ifdef SQLQUERY_LOG uint32 _s = getMSTime(); #endif if (mysql_query(m_Mysql, sql)) { sLog.outSQLDriver("SQL: %s", sql); sLog.outSQLDriver("query ERROR: %s", mysql_error(m_Mysql)); return false; } else { #ifdef SQLQUERY_LOG sLog.outSQLDriver("[%u ms] SQL: %s", getMSTimeDiff(_s,getMSTime()), sql); #endif } *pResult = mysql_store_result(m_Mysql); *pRowCount = mysql_affected_rows(m_Mysql); *pFieldCount = mysql_field_count(m_Mysql); } if (!*pResult ) return false; if (!*pRowCount) { mysql_free_result(*pResult); return false; } *pFields = mysql_fetch_fields(*pResult); return true; }
bool DatabasePostgre::_Query(const char *sql, PGresult** pResult, uint64* pRowCount, uint32* pFieldCount) { if (!mPGconn) return 0; // guarded block for thread-safe request ACE_Guard<ACE_Thread_Mutex> query_connection_guard(mMutex); #ifdef MANGOS_DEBUG uint32 _s = getMSTime(); #endif // Send the query *pResult = PQexec(mPGconn, sql); if(!*pResult ) return false; if (PQresultStatus(*pResult) != PGRES_TUPLES_OK) { sLog.outErrorDb( "SQL : %s", sql ); sLog.outErrorDb( "SQL %s", PQerrorMessage(mPGconn)); PQclear(*pResult); return false; } else { #ifdef MANGOS_DEBUG sLog.outDebug("[%u ms] SQL: %s", getMSTime() - _s, sql ); #endif } *pRowCount = PQntuples(*pResult); *pFieldCount = PQnfields(*pResult); // end guarded block if (!*pRowCount) { PQclear(*pResult); return false; } return true; }