version 0.3.29
[fms.git] / src / db / sqlite3statement.cpp
index 31c6ea5..7ef5e27 100644 (file)
@@ -1,5 +1,13 @@
 #include "../../include/db/sqlite3db/sqlite3statement.h"\r
 \r
+#ifdef QUERY_LOG\r
+#include <Poco/Logger.h>\r
+#include <Poco/FormattingChannel.h>\r
+#include <Poco/PatternFormatter.h>\r
+#include <Poco/FileChannel.h>\r
+#include "../../include/stringfunctions.h"\r
+#endif\r
+\r
 #ifdef XMEM\r
        #include <xmem.h>\r
 #endif\r
@@ -7,6 +15,7 @@
 namespace SQLite3DB\r
 {\r
 \r
+Poco::FastMutex Statement::m_mutex;\r
 std::map<sqlite3_stmt *, long> Statement::m_statementcount;\r
 \r
 Statement::Statement():m_statement(0),m_parametercount(0),m_resultcolumncount(0),m_rowreturned(false),m_lastinsertrowid(-1)\r
@@ -21,6 +30,7 @@ Statement::Statement(sqlite3_stmt *statement):m_statement(statement),m_rowreturn
 \r
        if(m_statement)\r
        {\r
+               Poco::ScopedLock<Poco::FastMutex> g(m_mutex);\r
                m_statementcount[m_statement]++;\r
        }\r
 }\r
@@ -134,7 +144,7 @@ void Statement::Finalize()
 {\r
        if(m_statement)\r
        {\r
-               Poco::ScopedLock<Poco::FastMutex> g(DB::Instance()->m_mutex);\r
+               Poco::ScopedLock<Poco::FastMutex> g(m_mutex);\r
                m_statementcount[m_statement]--;\r
                if(m_statementcount[m_statement]<=0)\r
                {\r
@@ -159,7 +169,7 @@ Statement &Statement::operator=(const Statement &rhs)
 \r
                if(m_statement)\r
                {\r
-                       Poco::ScopedLock<Poco::FastMutex> g(DB::Instance()->m_mutex);\r
+                       Poco::ScopedLock<Poco::FastMutex> g(m_mutex);\r
                        m_statementcount[m_statement]++;\r
                }\r
        }\r
@@ -170,7 +180,6 @@ const bool Statement::Reset()
 {\r
        if(Valid())\r
        {\r
-               Poco::ScopedLock<Poco::FastMutex> g(DB::Instance()->m_mutex);\r
                if(sqlite3_reset(m_statement)==SQLITE_OK)\r
                {\r
                        return true;\r
@@ -287,8 +296,13 @@ const bool Statement::Step(const bool saveinsertrowid)
        m_rowreturned=false;\r
        if(Valid())\r
        {\r
-               Poco::ScopedLock<Poco::FastMutex> g(DB::Instance()->m_mutex);\r
                int result=sqlite3_step(m_statement);\r
+#ifdef QUERY_LOG\r
+               size_t temp=reinterpret_cast<size_t>(m_statement);\r
+               std::string tempstr("");\r
+               StringFunctions::Convert(temp,tempstr);\r
+               Poco::Logger::get("querylog").information("Step : "+tempstr);\r
+#endif\r
                if(result==SQLITE_OK || result==SQLITE_ROW || result==SQLITE_DONE)\r
                {\r
                        if(result==SQLITE_ROW)\r
@@ -297,7 +311,7 @@ const bool Statement::Step(const bool saveinsertrowid)
                        }\r
                        if(saveinsertrowid)\r
                        {\r
-                               m_lastinsertrowid=sqlite3_last_insert_rowid(DB::Instance()->GetDB());\r
+                               m_lastinsertrowid=sqlite3_last_insert_rowid(sqlite3_db_handle(m_statement));\r
                        }\r
                        return true;\r
                }\r
@@ -314,7 +328,6 @@ const bool Statement::Step(const bool saveinsertrowid)
 \r
 const bool Statement::Valid()\r
 {\r
-       Poco::ScopedLock<Poco::FastMutex> g(DB::Instance()->m_mutex);\r
        return m_statement ? true : false ;\r
 }\r
 \r