diff options
Diffstat (limited to 'src/base/stats/mysql.cc')
-rw-r--r-- | src/base/stats/mysql.cc | 52 |
1 files changed, 32 insertions, 20 deletions
diff --git a/src/base/stats/mysql.cc b/src/base/stats/mysql.cc index c08394605..9f9a862d4 100644 --- a/src/base/stats/mysql.cc +++ b/src/base/stats/mysql.cc @@ -395,7 +395,8 @@ MySql::configure() list<Info *>::const_iterator i, end = statsList().end(); for (i = statsList().begin(); i != end; ++i) { - (*i)->visit(*this); + Info *info = *i; + info->visit(*this); } for (i = statsList().begin(); i != end; ++i) { @@ -606,7 +607,7 @@ MySql::valid() const } void -MySql::output() +MySql::begin() { assert(valid()); @@ -615,21 +616,23 @@ MySql::output() // store sample # newdata.tick = curTick(); +} - MySQL::Connection &mysql = run->conn(); - - list<Info *>::const_iterator i, end = statsList().end(); - for (i = statsList().begin(); i != end; ++i) { - Info *stat = *i; - stat->visit(*this); - if (mysql.commit()) - panic("could not commit transaction\n%s\n", mysql.error); - } - +void +MySql::end() +{ newdata.flush(); } void +MySql::commit() +{ + MySQL::Connection &mysql = run->conn(); + if (mysql.commit()) + panic("could not commit transaction\n%s\n", mysql.error); +} + +void MySql::output(const ScalarInfo &info) { if (!(info.flags & display)) @@ -641,6 +644,8 @@ MySql::output(const ScalarInfo &info) newdata.data = info.value(); newdata.insert(); + + commit(); } void @@ -659,6 +664,8 @@ MySql::output(const VectorInfo &info) newdata.data = cvec[x]; newdata.insert(); } + + commit(); } void @@ -708,6 +715,8 @@ MySql::output(const DistData &data, const DistParams *params) newdata.insert(); } } + + commit(); } void @@ -719,6 +728,8 @@ MySql::output(const DistInfo &info) newdata.stat = find(info.id); newdata.y = 0; output(info.data, safe_cast<const DistParams *>(info.storageParams)); + + commit(); } void @@ -735,6 +746,8 @@ MySql::output(const VectorDistInfo &info) output(info.data[y], safe_cast<const DistParams *>(info.storageParams)); } + + commit(); } void @@ -754,6 +767,8 @@ MySql::output(const Vector2dInfo &info) newdata.insert(); } } + + commit(); } void @@ -821,20 +836,17 @@ MySql::visit(const FormulaInfo &info) output(info); } -bool +Output * initMySQL(string host, string user, string password, string database, string project, string name, string sample) { - extern list<Output *> OutputList; static MySql mysql; - if (mysql.connected()) - return false; - - mysql.connect(host, user, password, database, name, sample, project); - OutputList.push_back(&mysql); + if (mysql.connected()) { + mysql.connect(host, user, password, database, name, sample, project); + } - return true; + return &mysql; } } // namespace Stats |