From: Maxim Mamontov Date: Fri, 26 Jul 2013 18:53:47 +0000 (+0300) Subject: Merge branch 'master' into full-month-stats X-Git-Url: https://git.stg.codes/stg.git/commitdiff_plain/9a834ba2e0caea6edffec5c1db403cf9832ea96e Merge branch 'master' into full-month-stats Conflicts: projects/stargazer/plugins/store/postgresql/postgresql_store_users.cpp --- 9a834ba2e0caea6edffec5c1db403cf9832ea96e diff --cc projects/stargazer/plugins/store/postgresql/postgresql_store.h index 654de146,72a2c22c..4585bbdf --- a/projects/stargazer/plugins/store/postgresql/postgresql_store.h +++ b/projects/stargazer/plugins/store/postgresql/postgresql_store.h @@@ -38,12 -37,10 +37,10 @@@ #include "stg/store.h" #include "stg/logger.h" -// Minimal DB version is 5 -// Recommended DB version is 6 (support FreeMb logging on disconnects) -#define DB_MIN_VERSION 5 +// Minimal DB version is 7 +// Recommended DB version is 7 (support full month stats) +#define DB_MIN_VERSION 7 - extern "C" STORE * GetStore(); - class POSTGRESQL_STORE : public STORE { public: POSTGRESQL_STORE(); diff --cc projects/stargazer/plugins/store/postgresql/postgresql_store_users.cpp index df802eea,0722cc4c..f8eba5c1 --- a/projects/stargazer/plugins/store/postgresql/postgresql_store_users.cpp +++ b/projects/stargazer/plugins/store/postgresql/postgresql_store_users.cpp @@@ -623,14 -640,16 +625,16 @@@ if (EscapeString(elogin) return -1; } - std::stringstream query; - query << "SELECT pk_user, cash, free_mb, " - "last_activity_time, last_cash_add, " - "last_cash_add_time, passive_time " - "FROM tb_users " - "WHERE name = '" << elogin << "'"; + { + std::ostringstream query; - query << "SELECT cash, free_mb, " ++ query << "SELECT pk_user, cash, free_mb, " + "last_activity_time, last_cash_add, " + "last_cash_add_time, passive_time " + "FROM tb_users " + "WHERE name = '" << elogin << "'"; - result = PQexec(connection, query.str().c_str()); + result = PQexec(connection, query.str().c_str()); + } if (PQresultStatus(result) != PGRES_TUPLES_OK) { @@@ -658,32 -677,32 +662,35 @@@ if (tuples != 1 return -1; } - std::stringstream tuple; - tuple << PQgetvalue(result, 0, 0) << " "; - tuple << PQgetvalue(result, 0, 1) << " "; - tuple << PQgetvalue(result, 0, 2) << " "; - stat->lastActivityTime = TS2Int(PQgetvalue(result, 0, 3)); - tuple << PQgetvalue(result, 0, 4) << " "; - stat->lastCashAddTime = TS2Int(PQgetvalue(result, 0, 5)); - tuple << PQgetvalue(result, 0, 6); - - PQclear(result); - +uint32_t uid; + - tuple >> uid - >> stat->cash - >> stat->freeMb - >> stat->lastCashAdd - >> stat->passiveTime; + { + std::stringstream tuple; + tuple << PQgetvalue(result, 0, 0) << " "; + tuple << PQgetvalue(result, 0, 1) << " "; - stat->lastActivityTime = TS2Int(PQgetvalue(result, 0, 2)); - tuple << PQgetvalue(result, 0, 3) << " "; - stat->lastCashAddTime = TS2Int(PQgetvalue(result, 0, 4)); - tuple << PQgetvalue(result, 0, 5) << " "; ++ tuple << PQgetvalue(result, 0, 2) << " "; ++ stat->lastActivityTime = TS2Int(PQgetvalue(result, 0, 3)); ++ tuple << PQgetvalue(result, 0, 4) << " "; ++ stat->lastCashAddTime = TS2Int(PQgetvalue(result, 0, 5)); ++ tuple << PQgetvalue(result, 0, 6) << " "; - query.str(""); + PQclear(result); - query << "SELECT dir_num, upload, download " - "FROM tb_stats_traffic " - "WHERE fk_user = " << uid; - tuple >> stat->cash ++ tuple >> uid ++ >> stat->cash + >> stat->freeMb + >> stat->lastCashAdd + >> stat->passiveTime; + } - result = PQexec(connection, query.str().c_str()); + { + std::ostringstream query; + query << "SELECT dir_num, upload, download " + "FROM tb_stats_traffic " - "WHERE fk_user IN (SELECT pk_user FROM tb_users WHERE name = '" << elogin << "') AND " - "DATE_TRUNC('month', stats_date) = DATE_TRUNC('month', CAST('" << Int2TS(stgTime) << "' AS TIMESTAMP))"; ++ "WHERE fk_user = " << uid; + + result = PQexec(connection, query.str().c_str()); + } if (PQresultStatus(result) != PGRES_TUPLES_OK) {