X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fdb%2Fsqlite3statement.cpp;h=7ef5e278d61f0c9da3443dfd1030cdb602dc3f7e;hb=59a5414ec47a2932a7802fcd1d98c4d80166564f;hp=fea3d76849c968adbbee3fb8546e4eae4dad1e04;hpb=63376b2a82c3f6cdf2df56b1f134bd7df0aaab3a;p=fms.git diff --git a/src/db/sqlite3statement.cpp b/src/db/sqlite3statement.cpp index fea3d76..7ef5e27 100644 --- a/src/db/sqlite3statement.cpp +++ b/src/db/sqlite3statement.cpp @@ -1,5 +1,13 @@ #include "../../include/db/sqlite3db/sqlite3statement.h" +#ifdef QUERY_LOG +#include +#include +#include +#include +#include "../../include/stringfunctions.h" +#endif + #ifdef XMEM #include #endif @@ -7,65 +15,40 @@ namespace SQLite3DB { +Poco::FastMutex Statement::m_mutex; std::map Statement::m_statementcount; -Statement::Statement() +Statement::Statement():m_statement(0),m_parametercount(0),m_resultcolumncount(0),m_rowreturned(false),m_lastinsertrowid(-1) { - m_statement=NULL; - m_parametercount=0; - m_resultcolumncount=0; - m_rowreturned=false; - m_lastinsertrowid=-1; + } -Statement::Statement(sqlite3_stmt *statement) +Statement::Statement(sqlite3_stmt *statement):m_statement(statement),m_rowreturned(false),m_lastinsertrowid(-1) { - m_statement=statement; m_parametercount=sqlite3_bind_parameter_count(m_statement); m_resultcolumncount=sqlite3_column_count(m_statement); - m_rowreturned=false; - m_lastinsertrowid=-1; - + if(m_statement) { + Poco::ScopedLock g(m_mutex); m_statementcount[m_statement]++; } } -Statement::Statement(const Statement &rhs) +Statement::Statement(const Statement &rhs):m_statement(0),m_parametercount(0),m_resultcolumncount(0),m_rowreturned(false),m_lastinsertrowid(-1) { - m_statement=NULL; - m_parametercount=0; - m_resultcolumncount=0; - m_rowreturned=false; - m_lastinsertrowid=-1; *this=rhs; } Statement::~Statement() { - Finalize(); - - /* - std::vector::iterator i; - for(i=textptrs.begin(); i!=textptrs.end(); i++) - { - if((*i)) - { - delete [] (*i); - } - } - */ - } const bool Statement::Bind(const int column) { if(Valid() && column>=0 && column g(DB::instance()->m_mutex); - //PThread::Guard g(DB::Instance()->m_mutex); if(sqlite3_bind_null(m_statement,column+1)==SQLITE_OK) { return true; @@ -85,8 +68,6 @@ const bool Statement::Bind(const int column, const int value) { if(Valid() && column>=0 && column g(DB::instance()->m_mutex); - //PThread::Guard g(DB::Instance()->m_mutex); if(sqlite3_bind_int(m_statement,column+1,value)==SQLITE_OK) { return true; @@ -106,8 +87,6 @@ const bool Statement::Bind(const int column, const double value) { if(Valid() && column>=0 && column g(DB::instance()->m_mutex); - //PThread::Guard g(DB::Instance()->m_mutex); if(sqlite3_bind_double(m_statement,column+1,value)==SQLITE_OK) { return true; @@ -127,8 +106,6 @@ const bool Statement::Bind(const int column, const std::string &value) { if(Valid() && column>=0 && column g(DB::instance()->m_mutex); - //PThread::Guard g(DB::Instance()->m_mutex); if(sqlite3_bind_text(m_statement,column+1,value.c_str(),value.size(),SQLITE_TRANSIENT)==SQLITE_OK) { return true; @@ -148,8 +125,6 @@ const bool Statement::Bind(const int column, const void *data, const int length) { if(Valid() && column>=0 && column g(DB::instance()->m_mutex); - //PThread::Guard g(DB::Instance()->m_mutex); if(sqlite3_bind_blob(m_statement,column+1,data,length,SQLITE_TRANSIENT)==SQLITE_OK) { return true; @@ -169,8 +144,7 @@ void Statement::Finalize() { if(m_statement) { - //ZThread::Guard g(DB::instance()->m_mutex); - PThread::Guard g(DB::Instance()->m_mutex); + Poco::ScopedLock g(m_mutex); m_statementcount[m_statement]--; if(m_statementcount[m_statement]<=0) { @@ -191,11 +165,11 @@ Statement &Statement::operator=(const Statement &rhs) m_parametercount=rhs.m_parametercount; m_resultcolumncount=rhs.m_resultcolumncount; m_rowreturned=rhs.m_rowreturned; + m_lastinsertrowid=rhs.m_lastinsertrowid; if(m_statement) { - //ZThread::Guard g(DB::instance()->m_mutex); - PThread::Guard g(DB::Instance()->m_mutex); + Poco::ScopedLock g(m_mutex); m_statementcount[m_statement]++; } } @@ -206,8 +180,6 @@ const bool Statement::Reset() { if(Valid()) { - //ZThread::Guard g(DB::instance()->m_mutex); - PThread::Guard g(DB::Instance()->m_mutex); if(sqlite3_reset(m_statement)==SQLITE_OK) { return true; @@ -227,8 +199,6 @@ const bool Statement::ResultBlob(const int column, void *data, int &length) { if(Valid() && column>=0 && column g(DB::instance()->m_mutex); - //PThread::Guard g(DB::Instance()->m_mutex); int bloblength=sqlite3_column_bytes(m_statement,column); if(bloblength>length) { @@ -259,8 +229,6 @@ const bool Statement::ResultDouble(const int column, double &result) { if(Valid() && column>=0 && column g(DB::instance()->m_mutex); - //PThread::Guard g(DB::Instance()->m_mutex); result=sqlite3_column_double(m_statement,column); return true; } @@ -274,8 +242,6 @@ const bool Statement::ResultInt(const int column, int &result) { if(Valid() && column>=0 && column g(DB::instance()->m_mutex); - //PThread::Guard g(DB::Instance()->m_mutex); result=sqlite3_column_int(m_statement,column); return true; } @@ -289,8 +255,6 @@ const bool Statement::ResultNull(const int column) { if(Valid() && column>=0 && column g(DB::instance()->m_mutex); - //PThread::Guard g(DB::Instance()->m_mutex); if(sqlite3_column_type(m_statement,column)==SQLITE_NULL) { return true; @@ -310,8 +274,6 @@ const bool Statement::ResultText(const int column, std::string &result) { if(Valid() && column>=0 && column g(DB::instance()->m_mutex); - //PThread::Guard g(DB::Instance()->m_mutex); const unsigned char *cresult=sqlite3_column_text(m_statement,column); if(cresult) { @@ -334,9 +296,13 @@ const bool Statement::Step(const bool saveinsertrowid) m_rowreturned=false; if(Valid()) { - //ZThread::Guard g(DB::instance()->m_mutex); - PThread::Guard g(DB::Instance()->m_mutex); int result=sqlite3_step(m_statement); +#ifdef QUERY_LOG + size_t temp=reinterpret_cast(m_statement); + std::string tempstr(""); + StringFunctions::Convert(temp,tempstr); + Poco::Logger::get("querylog").information("Step : "+tempstr); +#endif if(result==SQLITE_OK || result==SQLITE_ROW || result==SQLITE_DONE) { if(result==SQLITE_ROW) @@ -345,7 +311,7 @@ const bool Statement::Step(const bool saveinsertrowid) } if(saveinsertrowid) { - m_lastinsertrowid=sqlite3_last_insert_rowid(DB::Instance()->GetDB()); + m_lastinsertrowid=sqlite3_last_insert_rowid(sqlite3_db_handle(m_statement)); } return true; } @@ -362,8 +328,6 @@ const bool Statement::Step(const bool saveinsertrowid) const bool Statement::Valid() { - //ZThread::Guard g(DB::instance()->m_mutex); - PThread::Guard g(DB::Instance()->m_mutex); return m_statement ? true : false ; }