diff options
-rw-r--r-- | include/odhtdb/sql/Sql.hpp | 3 | ||||
-rw-r--r-- | project.conf | 3 | ||||
-rw-r--r-- | src/Database.cpp | 2 | ||||
-rw-r--r-- | src/sql/Sql.cpp | 17 | ||||
-rw-r--r-- | src/sql/SqlExec.cpp | 11 | ||||
-rw-r--r-- | src/sql/SqlQuery.cpp | 11 |
6 files changed, 46 insertions, 1 deletions
diff --git a/include/odhtdb/sql/Sql.hpp b/include/odhtdb/sql/Sql.hpp index cb740a4..21517e4 100644 --- a/include/odhtdb/sql/Sql.hpp +++ b/include/odhtdb/sql/Sql.hpp @@ -1,6 +1,7 @@ #pragma once #include "../DataView.hpp" +#include <string> class sqlite3; class sqlite3_stmt; @@ -24,6 +25,8 @@ namespace odhtdb SqlArg(u64 data) : uinteger64(data), type(Type::UINT64) {} int bind(sqlite3_stmt *stmt, int paramIndex) const; + + std::string toString() const; private: union { diff --git a/project.conf b/project.conf index b3e01cc..6c4316a 100644 --- a/project.conf +++ b/project.conf @@ -8,6 +8,9 @@ tests = "tests" [config] expose_include_dirs = ["include"] +[define] +ODHTDB_SQL_DEBUG = "1" + [dependencies] opendht = "1.7.0" libsodium = "1.0.16" diff --git a/src/Database.cpp b/src/Database.cpp index 169c066..27caba0 100644 --- a/src/Database.cpp +++ b/src/Database.cpp @@ -412,7 +412,7 @@ namespace odhtdb databaseStorage.fetchNodeUserLatestActionCounter(*nodeToSeed.getRequestHash(), [&userLatestActionCounter](const DataView userPublicKeyRaw, u64 latestActionCounter) { Signature::PublicKey userPublicKey((const char*)userPublicKeyRaw.data, userPublicKeyRaw.size); - userLatestActionCounter[userPublicKey] = std::max(userLatestActionCounter[userPublicKey], latestActionCounter); + userLatestActionCounter[userPublicKey] = std::max(userLatestActionCounter[userPublicKey], latestActionCounter + 1); }); for(auto userLatestActionCounterData : userLatestActionCounter) diff --git a/src/sql/Sql.cpp b/src/sql/Sql.cpp index 4e65ddb..0bfbbe6 100644 --- a/src/sql/Sql.cpp +++ b/src/sql/Sql.cpp @@ -21,6 +21,23 @@ namespace odhtdb return SQLITE_OK; } + std::string SqlArg::toString() const + { + switch(type) + { + case Type::DATA_VIEW: + return std::string((const char*)dataView.data, dataView.size); + case Type::INT: + return std::to_string(integer); + case Type::INT64: + return std::to_string(integer64); + case Type::UINT64: // TODO: Find a way to use u64 in sqlite + return std::to_string(uinteger64); + default: + return ""; + } + } + SqlTransaction::SqlTransaction(sqlite3 *_db) : db(_db) { diff --git a/src/sql/SqlExec.cpp b/src/sql/SqlExec.cpp index bdb0fbd..52d953f 100644 --- a/src/sql/SqlExec.cpp +++ b/src/sql/SqlExec.cpp @@ -1,4 +1,5 @@ #include "../../include/odhtdb/sql/SqlExec.hpp" +#include "../../include/odhtdb/Log.hpp" #include <sqlite3.h> namespace odhtdb @@ -39,6 +40,16 @@ namespace odhtdb throw SqlExecException(errMsg); } +#ifdef ODHTDB_SQL_DEBUG + Log::debug("Executing sql exec: %s; args(%u): ", sqlite3_sql(stmt), args.size()); + usize i = 0; + for(const SqlArg &arg : args) + { + Log::debug("arg(%u): %s", i, arg.toString().c_str()); + ++i; + } +#endif + int paramIndex = 1; for(const SqlArg &arg : args) { diff --git a/src/sql/SqlQuery.cpp b/src/sql/SqlQuery.cpp index 6201332..24694db 100644 --- a/src/sql/SqlQuery.cpp +++ b/src/sql/SqlQuery.cpp @@ -1,4 +1,5 @@ #include "../../include/odhtdb/sql/SqlQuery.hpp" +#include "../../include/odhtdb/Log.hpp" #include <sqlite3.h> namespace odhtdb @@ -29,6 +30,16 @@ namespace odhtdb throw SqlQueryException(errMsg); } +#ifdef ODHTDB_SQL_DEBUG + Log::debug("Executing sql query: %s; args(%u): ", sql, args.size()); + usize i = 0; + for(const SqlArg &arg : args) + { + Log::debug("arg(%u): %s", i, arg.toString().c_str()); + ++i; + } +#endif + int paramIndex = 1; for(const SqlArg &arg : args) { |