stats: delete mysql support
authorNathan Binkert <nate@binkert.org>
Thu, 12 May 2011 18:19:35 +0000 (11:19 -0700)
committerNathan Binkert <nate@binkert.org>
Thu, 12 May 2011 18:19:35 +0000 (11:19 -0700)
we can add it back within python in some future changeset

SConstruct
src/base/SConscript
src/base/mysql.cc [deleted file]
src/base/mysql.hh [deleted file]
src/base/stats/mysql.cc [deleted file]
src/base/stats/mysql.hh [deleted file]
src/base/stats/mysql_run.hh [deleted file]
src/python/m5/stats/__init__.py
src/python/swig/stats.i

index 9e1e03ccdf40fb17c3d810d2f93c1249763880bf..de5777bb547b790c7127a9db8f75edf3a14db7d3 100755 (executable)
@@ -708,32 +708,6 @@ if not have_fenv:
     print "Warning: Header file <fenv.h> not found."
     print "         This host has no IEEE FP rounding mode control."
 
-######################################################################
-#
-# Check for mysql.
-#
-mysql_config = WhereIs('mysql_config')
-have_mysql = bool(mysql_config)
-
-# Check MySQL version.
-if have_mysql:
-    mysql_version = readCommand(mysql_config + ' --version')
-    min_mysql_version = '4.1'
-    if compareVersions(mysql_version, min_mysql_version) < 0:
-        print 'Warning: MySQL', min_mysql_version, 'or newer required.'
-        print '         Version', mysql_version, 'detected.'
-        have_mysql = False
-
-# Set up mysql_config commands.
-if have_mysql:
-    mysql_config_include = mysql_config + ' --include'
-    if os.system(mysql_config_include + ' > /dev/null') != 0:
-        # older mysql_config versions don't support --include, use
-        # --cflags instead
-        mysql_config_include = mysql_config + ' --cflags | sed s/\\\'//g'
-    # This seems to work in all versions
-    mysql_config_libs = mysql_config + ' --libs'
-
 ######################################################################
 #
 # Finish the configuration
@@ -820,7 +794,6 @@ sticky_vars.AddVariables(
     BoolVariable('USE_SSE2',
                  'Compile for SSE2 (-msse2) to get IEEE FP on x86 hosts',
                  False),
-    BoolVariable('USE_MYSQL', 'Use MySQL for stats output', have_mysql),
     BoolVariable('USE_POSIX_CLOCK', 'Use POSIX Clocks', have_posix_clock),
     BoolVariable('USE_FENV', 'Use <fenv.h> IEEE mode control', have_fenv),
     BoolVariable('USE_CHECKER', 'Use checker for detailed CPU models', False),
@@ -829,7 +802,7 @@ sticky_vars.AddVariables(
     )
 
 # These variables get exported to #defines in config/*.hh (see src/SConscript).
-export_vars += ['FULL_SYSTEM', 'USE_FENV', 'USE_MYSQL',
+export_vars += ['FULL_SYSTEM', 'USE_FENV',
                 'NO_FAST_ALLOC', 'FORCE_FAST_ALLOC', 'FAST_ALLOC_STATS',
                 'SS_COMPATIBLE_FP', 'USE_CHECKER', 'TARGET_ISA', 'CP_ANNOTATE',
                 'USE_POSIX_CLOCK' ]
@@ -994,16 +967,6 @@ for variant_path in variant_paths:
     if env['EFENCE']:
         env.Append(LIBS=['efence'])
 
-    if env['USE_MYSQL']:
-        if not have_mysql:
-            print "Warning: MySQL not available; " \
-                  "forcing USE_MYSQL to False in", variant_dir + "."
-            env['USE_MYSQL'] = False
-        else:
-            print "Compiling in", variant_dir, "with MySQL support."
-            env.ParseConfig(mysql_config_libs)
-            env.ParseConfig(mysql_config_include)
-
     # Save sticky variable settings back to current variables file
     sticky_vars.Save(current_vars_file, env)
 
index 7835ec71feb36f8732c0845a759cb8282a32c93e..b6112e8c0a49197acbb446843d988f068c0243b6 100644 (file)
@@ -73,10 +73,6 @@ Source('loader/symtab.cc')
 
 Source('stats/text.cc')
 
-if env['USE_MYSQL']:
-    Source('mysql.cc')
-    Source('stats/mysql.cc')
-
 TraceFlag('Annotate', "State machine annotation debugging")
 TraceFlag('AnnotateQ', "State machine annotation queue debugging")
 TraceFlag('AnnotateVerbose', "Dump all state machine annotation details")
diff --git a/src/base/mysql.cc b/src/base/mysql.cc
deleted file mode 100644 (file)
index a029c13..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 2004-2005 The Regents of The University of Michigan
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met: redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer;
- * redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution;
- * neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Authors: Nathan Binkert
- */
-
-#include <iostream>
-
-#include "base/mysql.hh"
-#include "base/trace.hh"
-#include "debug/SQL.hh"
-
-using namespace std;
-
-namespace MySQL {
-
-inline const char *
-charstar(const string &string)
-{
-    return string.empty() ? NULL : string.c_str();
-}
-
-ostream &
-operator<<(ostream &stream, const Error &error)
-{
-    stream << error.string();
-    return stream;
-}
-
-/*
- * The connection class
- */
-Connection::Connection()
-    : valid(false)
-{
-}
-
-Connection::~Connection()
-{
-    if (valid)
-        close();
-}
-
-
-bool
-Connection::connect(const string &xhost, const string &xuser,
-                    const string &xpasswd, const string &xdatabase)
-{
-    if (connected())
-        return error.set("Already Connected");
-
-    _host = xhost;
-    _user = xuser;
-    _passwd = xpasswd;
-    _database = xdatabase;
-
-    error.clear();
-
-    mysql_init(&mysql);
-    mysql_options(&mysql, MYSQL_OPT_COMPRESS, 0); // might want to be 1
-    mysql_options(&mysql, MYSQL_READ_DEFAULT_GROUP, "odbc");
-    if (!mysql_real_connect(&mysql, charstar(_host), charstar(_user),
-                            charstar(_passwd), charstar(_database),
-                            0, NULL, 0))
-        return error.set(mysql_error(&mysql));
-
-    valid = true;
-    return false;
-}
-
-void
-Connection::close()
-{
-    mysql_close(&mysql);
-}
-
-bool
-Connection::query(const string &sql)
-{
-    DPRINTF(SQL, "Sending SQL query to server:\n%s", sql);
-    error.clear();
-    if (mysql_real_query(&mysql, sql.c_str(), sql.size()))
-        error.set(mysql_error(&mysql));
-
-    return error;
-}
-
-
-} // namespace MySQL
diff --git a/src/base/mysql.hh b/src/base/mysql.hh
deleted file mode 100644 (file)
index c8ffba7..0000000
+++ /dev/null
@@ -1,426 +0,0 @@
-/*
- * Copyright (c) 2004-2005 The Regents of The University of Michigan
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met: redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer;
- * redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution;
- * neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Authors: Nathan Binkert
- */
-
-#ifndef __BASE_MYSQL_HH__
-#define __BASE_MYSQL_HH__
-
-#define TO_BE_INCLUDED_LATER 0
-
-#include <mysql.h>
-#include <mysql_version.h>
-
-#include <cassert>
-#include <iosfwd>
-#include <sstream>
-#include <string>
-
-namespace MySQL {
-
-class Error
-{
-  protected:
-    const char *error;
-
-  public:
-    Error() : error(NULL) {}
-
-    Error &clear() { error = NULL; return *this; }
-    Error &set(const char *err) { error = err; return *this; }
-
-    const char *string() const { return error; }
-
-    operator bool() const { return error != NULL; }
-    bool operator!() const { return error == NULL; }
-};
-
-std::ostream &operator<<(std::ostream &stream, const Error &error);
-
-class Result
-{
-  private:
-    MYSQL_RES *result;
-    int *refcount;
-
-    void
-    decref()
-    {
-        if (!refcount)
-            return;
-
-        *refcount -= 1;
-        if (*refcount == 0) {
-            mysql_free_result(result);
-            delete refcount;
-        }
-
-        refcount = NULL;
-    }
-
-  public:
-    Result()
-        : result(0), refcount(NULL)
-    { }
-
-    Result(MYSQL_RES *res)
-        : result(res)
-    {
-        if (result)
-            refcount = new int(1);
-        else
-            refcount = NULL;
-    }
-
-    Result(const Result &result)
-        : result(result.result), refcount(result.refcount)
-    {
-        if (result)
-            *refcount += 1;
-    }
-
-    ~Result()
-    {
-        decref();
-    }
-
-    const Result &
-    operator=(MYSQL_RES *res)
-    {
-        decref();
-        result = res;
-        if (result)
-            refcount = new int(1);
-
-        return *this;
-    }
-
-    const Result &
-    operator=(const Result &res)
-    {
-        decref();
-        result = res.result;
-        refcount = res.refcount;
-        if (result)
-            *refcount += 1;
-
-        return *this;
-    }
-
-    operator bool() const { return result != NULL; }
-    bool operator!() const { return result == NULL; }
-
-    unsigned
-    num_fields()
-    {
-        assert(result);
-        return mysql_num_fields(result);
-    }
-
-    MYSQL_ROW
-    fetch_row()
-    {
-        return mysql_fetch_row(result);
-    }
-
-    unsigned long *
-    fetch_lengths()
-    {
-        return mysql_fetch_lengths(result);
-    }
-};
-
-typedef MYSQL_ROW Row;
-
-class Connection
-{
-  protected:
-    MYSQL mysql;
-    bool valid;
-
-  protected:
-    std::string _host;
-    std::string _user;
-    std::string _passwd;
-    std::string _database;
-
-  public:
-    Connection();
-    virtual ~Connection();
-
-    bool connected() const { return valid; }
-    bool connect(const std::string &host, const std::string &user,
-                 const std::string &passwd, const std::string &database);
-    void close();
-
-  public:
-    Error error;
-    operator MYSQL *() { return &mysql; }
-
-  public:
-    bool query(const std::string &sql);
-
-    bool
-    query(const std::stringstream &sql)
-    {
-        return query(sql.str());
-    }
-
-    bool
-    autocommit(bool mode)
-    {
-        return mysql_autocommit(&mysql, mode);
-    }
-
-    bool
-    commit()
-    {
-        return mysql_commit(&mysql);
-    }
-
-    bool
-    rollback()
-    {
-        return mysql_rollback(&mysql);
-    }
-
-    unsigned
-    field_count()
-    {
-        return mysql_field_count(&mysql);
-    }
-
-    unsigned
-    affected_rows()
-    {
-        return mysql_affected_rows(&mysql);
-    }
-
-    unsigned
-    insert_id()
-    {
-        return mysql_insert_id(&mysql);
-    }
-
-
-    Result
-    store_result()
-    {
-        error.clear();
-        Result result = mysql_store_result(&mysql);
-        if (!result)
-            error.set(mysql_error(&mysql));
-
-        return result;
-    }
-};
-
-#if 0
-class BindProxy
-{
-    MYSQL_BIND *bind;
-    BindProxy(MYSQL_BIND *b) : bind(b) {}
-
-    void operator=(bool &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_TINY;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(int8_t &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_TINY;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(int16_t &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_SHORT;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(int32_t &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_LONG;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(int64_t &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_LONGLONG;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(uint8_t &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_TINY;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(uint16_t &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_SHORT;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(uint32_t &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_LONG;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(uint64_t &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_LONGLONG;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(float &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_FLOAT;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(double &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_DOUBLE;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(Time &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_DATE;
-        bind->buffer = (char *)&buffer;
-    }
-
-    void operator=(const char *buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_VAR_STRING;
-        bind->buffer = buffer;
-    }
-
-    void operator=(const std::string &buffer)
-    {
-        bind->buffer_type = MYSQL_TYPE_VAR_STRING;
-        bind->buffer = (char *)&buffer;
-        bind->length = buffer.length;
-    }
-
-    bool
-    set_null(bool null)
-    {
-        bind->is_null = null;
-    }
-};
-
-class Statement
-{
-  protected:
-    Error &error;
-    MYSQL_STMT *stmt;
-    MYSQL_BIND *bind;
-    int size;
-
-  public:
-    Statement(Connection &mysql)
-        : error(mysql.error), bind(NULL), size(0)
-    {
-        stmt = mysql_stmt_init(mysql);
-        assert(valid() && "mysql_stmt_init(), out of memory\n");
-    }
-
-    ~Statement()
-    {
-        assert(valid());
-        error.clear();
-        if (mysql_stmt_close(stmt))
-            error.set(mysql_stmt_error(stmt));
-
-        if (bind)
-            delete [] bind;
-    }
-
-    bool valid()
-    {
-        return stmt != NULL;
-    }
-
-    void prepare(const std::string &query)
-    {
-        assert(valid());
-        mysql.error.clear();
-        if (mysql_stmt_prepare(mysql, query, strlen(query)))
-            mysql.error.set(mysql_stmt_error(stmt));
-
-        int size = count();
-        bind = new MYSQL_BIND[size];
-    }
-
-    unsigned count()
-    {
-        assert(valid());
-        return mysql_stmt_param_count(stmt);
-    }
-
-    unsigned affected()
-    {
-        assert(valid());
-        return mysql_stmt_affected_rows(stmt);
-    }
-
-    void bind(MYSQL_BIND *bind)
-    {
-        mysql.error.clear();
-        if (mysql_stmt_bind_param(stmt, bind))
-            mysql.error.set(mysql_stmt_error(stmt));
-    }
-
-    BindProxy operator[](int index)
-    {
-        assert(index > 0 && index < N);
-        return &bind[N];
-    }
-
-    operator MYSQL_BIND *()
-    {
-        return bind;
-    }
-
-    void operator()()
-    {
-        assert(valid());
-        error.clear();
-        if (mysql_stmt_execute(stmt))
-            error.set(mysql_stmt_error(stmt));
-    }
-}
-#endif
-
-} // namespace MySQL
-
-#endif // __BASE_MYSQL_HH__
diff --git a/src/base/stats/mysql.cc b/src/base/stats/mysql.cc
deleted file mode 100644 (file)
index 9f9a862..0000000
+++ /dev/null
@@ -1,852 +0,0 @@
-/*
- * Copyright (c) 2004-2005 The Regents of The University of Michigan
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met: redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer;
- * redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution;
- * neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Authors: Nathan Binkert
- */
-
-#include <cassert>
-#include <cstdio>
-#include <map>
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include "base/stats/info.hh"
-#include "base/stats/mysql.hh"
-#include "base/stats/mysql_run.hh"
-#include "base/stats/types.hh"
-#include "base/misc.hh"
-#include "base/mysql.hh"
-#include "base/statistics.hh"
-#include "base/str.hh"
-#include "base/types.hh"
-#include "base/userinfo.hh"
-#include "sim/core.hh"
-
-using namespace std;
-
-namespace Stats {
-
-void
-MySqlRun::connect(const string &host, const string &user, const string &passwd,
-                  const string &db, const string &name, const string &sample,
-                  const string &project)
-{
-    if (connected())
-        panic("can only get one database connection at this time!");
-
-    mysql.connect(host, user, passwd, db);
-    if (mysql.error)
-        panic("could not connect to database server\n%s\n", mysql.error);
-
-    if (mysql.autocommit(false))
-        panic("could not set autocommit\n%s\n", mysql.error);
-
-    remove(name);
-    //cleanup();
-    setup(name, sample, user, project);
-}
-
-void
-MySqlRun::setup(const string &name, const string &sample, const string &user,
-                const string &project)
-{
-    assert(mysql.connected());
-
-    stringstream insert;
-    ccprintf(insert,
-             "INSERT INTO "
-             "runs(rn_name,rn_sample,rn_user,rn_project,rn_date,rn_expire)"
-             "values(\"%s\", \"%s\", \"%s\", \"%s\", NOW(),"
-             "DATE_ADD(CURDATE(), INTERVAL 31 DAY))",
-             name, sample, user, project);
-
-    mysql.query(insert);
-    if (mysql.error)
-        panic("could not get a run\n%s\n", mysql.error);
-
-    run_id = mysql.insert_id();
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
-}
-
-void
-MySqlRun::remove(const string &name)
-{
-    assert(mysql.connected());
-    stringstream sql;
-    ccprintf(sql, "DELETE FROM runs WHERE rn_name=\"%s\"", name);
-    mysql.query(sql);
-    if (mysql.error)
-        panic("could not delete run\n%s\n", mysql.error);
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
-}
-
-void
-MySqlRun::cleanup()
-{
-    assert(mysql.connected());
-
-    mysql.query("DELETE data "
-                "FROM data "
-                "LEFT JOIN runs ON dt_run=rn_id "
-                "WHERE rn_id IS NULL");
-
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
-
-    mysql.query("DELETE formula_ref "
-                "FROM formula_ref "
-                "LEFT JOIN runs ON fr_run=rn_id "
-                "WHERE rn_id IS NULL");
-
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
-
-    mysql.query("DELETE formulas "
-                "FROM formulas "
-                "LEFT JOIN formula_ref ON fm_stat=fr_stat "
-                "WHERE fr_stat IS NULL");
-
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
-
-    mysql.query("DELETE stats "
-                "FROM stats "
-                "LEFT JOIN data ON st_id=dt_stat "
-                "WHERE dt_stat IS NULL");
-
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
-
-    mysql.query("DELETE subdata "
-                "FROM subdata "
-                "LEFT JOIN data ON sd_stat=dt_stat "
-                "WHERE dt_stat IS NULL");
-
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
-}
-
-void
-SetupStat::init()
-{
-    name = "";
-    descr = "";
-    type = "";
-    print = false;
-    prereq = 0;
-    prec = -1;
-    nozero = false;
-    nonan = false;
-    total = false;
-    pdf = false;
-    cdf = false;
-    min = 0;
-    max = 0;
-    bktsize = 0;
-    size = 0;
-}
-
-unsigned
-SetupStat::setup(MySqlRun *run)
-{
-    MySQL::Connection &mysql = run->conn();
-
-    stringstream insert;
-    ccprintf(insert,
-             "INSERT INTO "
-             "stats(st_name, st_descr, st_type, st_print, st_prereq, "
-             "st_prec, st_nozero, st_nonan, st_total, st_pdf, st_cdf, "
-             "st_min, st_max, st_bktsize, st_size)"
-             "values(\"%s\",\"%s\",\"%s\","
-             "        %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)",
-             name, descr, type, print, prereq, (int)prec, nozero, nonan,
-             total, pdf, cdf,
-             min, max, bktsize, size);
-
-    mysql.query(insert);
-    if (!mysql.error) {
-        int id = mysql.insert_id();
-        if (mysql.commit())
-            panic("could not commit transaction\n%s\n", mysql.error);
-        return id;
-    }
-
-    stringstream select;
-    ccprintf(select, "SELECT * FROM stats WHERE st_name=\"%s\"", name);
-
-    mysql.query(select);
-    MySQL::Result result = mysql.store_result();
-    if (!result)
-        panic("could not find stat\n%s\n", mysql.error);
-
-    assert(result.num_fields() == 16);
-    MySQL::Row row = result.fetch_row();
-    if (!row)
-        panic("could not get stat row\n%s\n", mysql.error);
-
-    bool tb;
-    int8_t ti8;
-    uint16_t tu16;
-    int64_t ti64;
-    uint64_t tu64;
-
-    if (name != (char *)row[1])
-        panic("failed stat check on %s:name. %s != %s\n",
-              name, name, row[1]);
-
-    if (descr != (char *)row[2])
-        panic("failed stat check on %s:descr. %s != %s\n",
-              name, descr, row[2]);
-
-    if (type != (char *)row[3])
-        panic("failed stat check on %s:type. %s != %s\n",
-              name, type, row[3]);
-
-    if (!to_number(row[4], tb) || print != tb)
-        panic("failed stat check on %s:print. %d != %d\n",
-              name, print, tb);
-
-    if (!to_number(row[6], ti8) || prec != ti8)
-        panic("failed stat check on %s:prec. %d != %d\n",
-              name, prec, ti8);
-
-    if (!to_number(row[7], tb) || nozero != tb)
-        panic("failed stat check on %s:nozero. %d != %d\n",
-              name, nozero, tb);
-
-    if (!to_number(row[8], tb) || nonan != tb)
-        panic("failed stat check on %s:nonan. %d != %d\n",
-              name, nonan, tb);
-
-    if (!to_number(row[9], tb) || total != tb)
-        panic("failed stat check on %s:total. %d != %d\n",
-              name, total, tb);
-
-    if (!to_number(row[10], tb) || pdf != tb)
-        panic("failed stat check on %s:pdf. %d != %d\n",
-              name, pdf, tb);
-
-    if (!to_number(row[11], tb) || cdf != tb)
-        panic("failed stat check on %s:cdf. %d != %d\n",
-              name, cdf, tb);
-
-    if (!to_number(row[12], ti64) || min != ti64)
-        panic("failed stat check on %s:min. %d != %d\n",
-              name, min, ti64);
-
-    if (!to_number(row[13], ti64) || max != ti64)
-        panic("failed stat check on %s:max. %d != %d\n",
-              name, max, ti64);
-
-    if (!to_number(row[14], tu64) || bktsize != tu64)
-        panic("failed stat check on %s:bktsize. %d != %d\n",
-              name, bktsize, tu64);
-
-    if (!to_number(row[15], tu16) || size != tu16)
-        panic("failed stat check on %s:size. %d != %d\n",
-              name, size, tu16);
-
-    to_number(row[5], prereq);
-    uint16_t statid;
-    to_number(row[0], statid);
-    return statid;
-}
-
-InsertData::InsertData(MySqlRun *_run)
-    : run(_run)
-{
-    query = new char[maxsize + 1];
-    size = 0;
-    flush();
-}
-
-InsertData::~InsertData()
-{
-    delete [] query;
-}
-
-void
-InsertData::flush()
-{
-    if (size) {
-        MySQL::Connection &mysql = run->conn();
-        assert(mysql.connected());
-        mysql.query(query);
-        if (mysql.error)
-            panic("could not insert data\n%s\n", mysql.error);
-        if (mysql.commit())
-            panic("could not commit transaction\n%s\n", mysql.error);
-    }
-
-    query[0] = '\0';
-    size = 0;
-    first = true;
-    strcpy(query, "INSERT INTO "
-           "data(dt_stat,dt_x,dt_y,dt_run,dt_tick,dt_data) "
-           "values");
-    size = strlen(query);
-}
-
-void
-InsertData::insert()
-{
-    if (size + 1024 > maxsize)
-        flush();
-
-    if (!first) {
-        query[size++] = ',';
-        query[size] = '\0';
-    }
-
-    first = false;
-
-    size += sprintf(query + size, "(%u,%d,%d,%u,%llu,\"%f\")",
-                    stat, x, y, run->run(), (unsigned long long)tick,
-                    data);
-}
-
-struct InsertSubData
-{
-    uint16_t stat;
-    int16_t x;
-    int16_t y;
-    string name;
-    string descr;
-
-    void setup(MySqlRun *run);
-};
-
-void
-InsertSubData::setup(MySqlRun *run)
-{
-    MySQL::Connection &mysql = run->conn();
-    assert(mysql.connected());
-    stringstream insert;
-    ccprintf(insert,
-             "INSERT INTO subdata(sd_stat,sd_x,sd_y,sd_name,sd_descr) "
-             "values(%d,%d,%d,\"%s\",\"%s\")",
-             stat, x, y, name, descr);
-
-    mysql.query(insert);
-//    if (mysql.error)
-//      panic("could not insert subdata\n%s\n", mysql.error);
-
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
-}
-
-MySql::MySql()
-    : run(new MySqlRun), newdata(run)
-{}
-
-MySql::~MySql()
-{
-    delete run;
-}
-
-void
-MySql::connect(const string &host, const string &user, const string &passwd,
-               const string &db, const string &name, const string &sample,
-               const string &project)
-{
-    run->connect(host, user, passwd, db, name, sample, project);
-}
-
-bool
-MySql::connected() const
-{
-    return run->connected();
-}
-
-void
-MySql::configure()
-{
-    /*
-     * set up all stats!
-     */
-    MySQL::Connection &mysql = run->conn();
-
-    list<Info *>::const_iterator i, end = statsList().end();
-    for (i = statsList().begin(); i != end; ++i) {
-        Info *info = *i;
-        info->visit(*this);
-    }
-
-    for (i = statsList().begin(); i != end; ++i) {
-        Info *info = *i;
-        if (info->prereq) {
-            // update the prerequisite
-            uint16_t stat_id = find(info->id);
-            uint16_t prereq_id = find(info->prereq->id);
-            assert(stat_id && prereq_id);
-
-            stringstream update;
-            ccprintf(update, "UPDATE stats SET st_prereq=%d WHERE st_id=%d",
-                     prereq_id, stat_id);
-            mysql.query(update);
-            if (mysql.error)
-                panic("could not update prereq\n%s\n", mysql.error);
-
-            if (mysql.commit())
-                panic("could not commit transaction\n%s\n", mysql.error);
-        }
-    }
-
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
-
-    configured = true;
-}
-
-bool
-MySql::configure(const Info &info, string type)
-{
-    stat.init();
-    stat.name = info.name;
-    stat.descr = info.desc;
-    stat.type = type;
-    stat.print = info.flags & display;
-    stat.prec = info.precision;
-    stat.nozero = info.flags & nozero;
-    stat.nonan = info.flags & nonan;
-    stat.total = info.flags & total;
-    stat.pdf = info.flags & pdf;
-    stat.cdf = info.flags & cdf;
-
-    return stat.print;
-}
-
-void
-MySql::configure(const ScalarInfo &info)
-{
-    if (!configure(info, "SCALAR"))
-        return;
-
-    insert(info.id, stat.setup(run));
-}
-
-void
-MySql::configure(const VectorInfo &info)
-{
-    if (!configure(info, "VECTOR"))
-        return;
-
-    uint16_t statid = stat.setup(run);
-
-    if (!info.subnames.empty()) {
-        InsertSubData subdata;
-        subdata.stat = statid;
-        subdata.y = 0;
-        for (off_type i = 0; i < info.subnames.size(); ++i) {
-            subdata.x = i;
-            subdata.name = info.subnames[i];
-            subdata.descr = info.subdescs.empty() ? "" : info.subdescs[i];
-
-            if (!subdata.name.empty() || !subdata.descr.empty())
-                subdata.setup(run);
-        }
-    }
-
-    insert(info.id, statid);
-}
-
-void
-MySql::configure(const DistInfo &info)
-{
-    if (!configure(info, "DIST"))
-        return;
-
-    const DistStor::Params *params =
-        dynamic_cast<const DistStor::Params *>(info.storageParams);
-    if (params) {
-        assert(params->type == Dist);
-        stat.size = params->buckets;
-        stat.min = params->min;
-        stat.max = params->max;
-        stat.bktsize = params->bucket_size;
-    }
-    insert(info.id, stat.setup(run));
-}
-
-void
-MySql::configure(const VectorDistInfo &info)
-{
-    if (!configure(info, "VECTORDIST"))
-        return;
-
-    const DistStor::Params *params =
-        dynamic_cast<const DistStor::Params *>(info.storageParams);
-    if (params) {
-        assert(params->type == Dist);
-        stat.size = params->buckets;
-        stat.min = params->min;
-        stat.max = params->max;
-        stat.bktsize = params->bucket_size;
-    }
-
-    uint16_t statid = stat.setup(run);
-
-    if (!info.subnames.empty()) {
-        InsertSubData subdata;
-        subdata.stat = statid;
-        subdata.y = 0;
-        for (off_type i = 0; i < info.subnames.size(); ++i) {
-            subdata.x = i;
-            subdata.name = info.subnames[i];
-            subdata.descr = info.subdescs.empty() ? "" : info.subdescs[i];
-            if (!subdata.name.empty() || !subdata.descr.empty())
-                subdata.setup(run);
-        }
-    }
-
-    insert(info.id, statid);
-}
-
-void
-MySql::configure(const Vector2dInfo &info)
-{
-    if (!configure(info, "VECTOR2D"))
-        return;
-
-    uint16_t statid = stat.setup(run);
-
-    if (!info.subnames.empty()) {
-        InsertSubData subdata;
-        subdata.stat = statid;
-        subdata.y = -1;
-        for (off_type i = 0; i < info.subnames.size(); ++i) {
-            subdata.x = i;
-            subdata.name = info.subnames[i];
-            subdata.descr = info.subdescs.empty() ? "" : info.subdescs[i];
-            if (!subdata.name.empty() || !subdata.descr.empty())
-                subdata.setup(run);
-        }
-    }
-
-    if (!info.y_subnames.empty()) {
-        InsertSubData subdata;
-        subdata.stat = statid;
-        subdata.x = -1;
-        subdata.descr = "";
-        for (off_type i = 0; i < info.y_subnames.size(); ++i) {
-            subdata.y = i;
-            subdata.name = info.y_subnames[i];
-            if (!subdata.name.empty())
-                subdata.setup(run);
-        }
-    }
-
-    insert(info.id, statid);
-}
-
-void
-MySql::configure(const FormulaInfo &info)
-{
-    MySQL::Connection &mysql = run->conn();
-    assert(mysql.connected());
-
-    configure(info, "FORMULA");
-    insert(info.id, stat.setup(run));
-
-    uint16_t stat = find(info.id);
-    string formula = info.str();
-
-    stringstream insert_formula;
-    ccprintf(insert_formula,
-             "INSERT INTO formulas(fm_stat,fm_formula) values(%d, \"%s\")",
-             stat, formula);
-
-    mysql.query(insert_formula);
-//    if (mysql.error)
-//      panic("could not insert formula\n%s\n", mysql.error);
-
-    stringstream insert_ref;
-    ccprintf(insert_ref,
-             "INSERT INTO formula_ref(fr_stat,fr_run) values(%d, %d)",
-             stat, run->run());
-
-    mysql.query(insert_ref);
-//    if (mysql.error)
-//      panic("could not insert formula reference\n%s\n", mysql.error);
-
-    if (mysql.commit())
-        panic("could not commit transaction\n%s\n", mysql.error);
-}
-
-bool
-MySql::valid() const
-{
-    return run->connected();
-}
-
-void
-MySql::begin()
-{
-    assert(valid());
-
-    if (!configured)
-        configure();
-
-    // store sample #
-    newdata.tick = curTick();
-}
-
-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))
-        return;
-
-    newdata.stat = find(info.id);
-    newdata.x = 0;
-    newdata.y = 0;
-    newdata.data = info.value();
-
-    newdata.insert();
-
-    commit();
-}
-
-void
-MySql::output(const VectorInfo &info)
-{
-    if (!(info.flags & display))
-        return;
-
-    newdata.stat = find(info.id);
-    newdata.y = 0;
-
-    const VCounter &cvec = info.value();
-    size_type size = info.size();
-    for (off_type x = 0; x < size; x++) {
-        newdata.x = x;
-        newdata.data = cvec[x];
-        newdata.insert();
-    }
-
-    commit();
-}
-
-void
-MySql::output(const DistData &data, const DistParams *params)
-{
-    const int db_sum = -1;
-    const int db_squares = -2;
-    const int db_samples = -3;
-    const int db_min_val = -4;
-    const int db_max_val = -5;
-    const int db_underflow = -6;
-    const int db_overflow = -7;
-
-    newdata.x = db_sum;
-    newdata.data = data.sum;
-    newdata.insert();
-
-    newdata.x = db_squares;
-    newdata.data = data.squares;
-    newdata.insert();
-
-    newdata.x = db_samples;
-    newdata.data = data.samples;
-    newdata.insert();
-
-    if (data.samples && params->type == Dist) {
-        newdata.x = db_min_val;
-        newdata.data = data.min_val;
-        newdata.insert();
-
-        newdata.x = db_max_val;
-        newdata.data = data.max_val;
-        newdata.insert();
-
-        newdata.x = db_underflow;
-        newdata.data = data.underflow;
-        newdata.insert();
-
-        newdata.x = db_overflow;
-        newdata.data = data.overflow;
-        newdata.insert();
-
-        size_type size = data.cvec.size();
-        for (off_type x = 0; x < size; x++) {
-            newdata.x = x;
-            newdata.data = data.cvec[x];
-            newdata.insert();
-        }
-    }
-
-    commit();
-}
-
-void
-MySql::output(const DistInfo &info)
-{
-    if (!(info.flags & display))
-        return;
-
-    newdata.stat = find(info.id);
-    newdata.y = 0;
-    output(info.data, safe_cast<const DistParams *>(info.storageParams));
-
-    commit();
-}
-
-void
-MySql::output(const VectorDistInfo &info)
-{
-    if (!(info.flags & display))
-        return;
-
-    newdata.stat = find(info.id);
-
-    size_type size = info.data.size();
-    for (off_type y = 0; y < size; ++y) {
-        newdata.y = y;
-        output(info.data[y],
-               safe_cast<const DistParams *>(info.storageParams));
-    }
-
-    commit();
-}
-
-void
-MySql::output(const Vector2dInfo &info)
-{
-    if (!(info.flags & display))
-        return;
-
-    newdata.stat = find(info.id);
-
-    off_type index = 0;
-    for (off_type x = 0; x < info.x; x++) {
-        newdata.x = x;
-        for (off_type y = 0; y < info.y; y++) {
-            newdata.y = y;
-            newdata.data = info.cvec[index++];
-            newdata.insert();
-        }
-    }
-
-    commit();
-}
-
-void
-MySql::output(const FormulaInfo &info)
-{
-}
-
-/*
- * Implement the visitor
- */
-void
-MySql::visit(const ScalarInfo &info)
-{
-    if (!configured)
-        configure(info);
-    else
-        output(info);
-}
-
-void
-MySql::visit(const VectorInfo &info)
-{
-    if (!configured)
-        configure(info);
-    else
-        output(info);
-}
-
-void
-MySql::visit(const DistInfo &info)
-{
-    return;
-    if (!configured)
-        configure(info);
-    else
-        output(info);
-}
-
-void
-MySql::visit(const VectorDistInfo &info)
-{
-    return;
-    if (!configured)
-        configure(info);
-    else
-        output(info);
-}
-
-void
-MySql::visit(const Vector2dInfo &info)
-{
-    return;
-    if (!configured)
-        configure(info);
-    else
-        output(info);
-}
-
-void
-MySql::visit(const FormulaInfo &info)
-{
-    if (!configured)
-        configure(info);
-    else
-        output(info);
-}
-
-Output *
-initMySQL(string host, string user, string password, string database,
-    string project, string name, string sample)
-{
-    static MySql mysql;
-
-    if (mysql.connected()) {
-        mysql.connect(host, user, password, database, name, sample, project);
-    }
-
-    return &mysql;
-}
-
-} // namespace Stats
diff --git a/src/base/stats/mysql.hh b/src/base/stats/mysql.hh
deleted file mode 100644 (file)
index a305304..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2004-2005 The Regents of The University of Michigan
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met: redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer;
- * redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution;
- * neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Authors: Nathan Binkert
- */
-
-#ifndef __BASE_STATS_MYSQL_HH__
-#define __BASE_STATS_MYSQL_HH__
-
-#include <cstdio>
-#include <list>
-#include <map>
-#include <string>
-
-#include "base/stats/output.hh"
-#include "base/types.hh"
-#include "config/use_mysql.hh"
-
-namespace MySQL { class Connection; }
-namespace Stats {
-
-class DistData;
-class DistParams;
-class MySqlRun;
-
-struct SetupStat
-{
-    std::string name;
-    std::string descr;
-    std::string type;
-    bool print;
-    uint16_t prereq;
-    int8_t prec;
-    bool nozero;
-    bool nonan;
-    bool total;
-    bool pdf;
-    bool cdf;
-
-    double min;
-    double max;
-    double bktsize;
-    uint16_t size;
-
-    void init();
-    unsigned setup(MySqlRun *run);
-};
-
-class InsertData
-{
-  private:
-    char *query;
-    std::size_t size;
-    bool first;
-    static const std::size_t maxsize = 1024*1024;
-
-  public:
-    MySqlRun *run;
-
-  public:
-    uint64_t tick;
-    double data;
-    uint16_t stat;
-    int16_t x;
-    int16_t y;
-
-  public:
-    InsertData(MySqlRun *_run);
-    ~InsertData();
-
-    void flush();
-    void insert();
-};
-
-class MySql : public Output
-{
-  protected:
-    MySqlRun *run; /* Hide the implementation so we don't have a
-                      #include mess */
-
-    SetupStat stat;
-    InsertData newdata;
-    std::list<FormulaInfo *> formulas;
-    bool configured;
-
-  protected:
-    std::map<int, int> idmap;
-
-    void
-    insert(int sim_id, int db_id)
-    {
-        using namespace std;
-        idmap.insert(make_pair(sim_id, db_id));
-    }
-
-    int
-    find(int sim_id)
-    {
-        using namespace std;
-        map<int,int>::const_iterator i = idmap.find(sim_id);
-        assert(i != idmap.end());
-        return (*i).second;
-    }
-
-  public:
-    MySql();
-    ~MySql();
-
-    void connect(const std::string &host, const std::string &user,
-        const std::string &passwd, const std::string &db,
-        const std::string &name, const std::string &sample,
-        const std::string &project);
-    bool connected() const;
-
-  public:
-    // Implement Visit
-    virtual void visit(const ScalarInfo &info);
-    virtual void visit(const VectorInfo &info);
-    virtual void visit(const DistInfo &info);
-    virtual void visit(const VectorDistInfo &info);
-    virtual void visit(const Vector2dInfo &info);
-    virtual void visit(const FormulaInfo &info);
-
-    // Implement Output
-    virtual bool valid() const;
-    virtual void begin();
-    virtual void end();
-
-  protected:
-    // Output helper
-    void commit();
-    void output(const ScalarInfo &info);
-    void output(const VectorInfo &info);
-    void output(const DistInfo &info);
-    void output(const VectorDistInfo &info);
-    void output(const Vector2dInfo &info);
-    void output(const FormulaInfo &info);
-    void output(const DistData &data, const DistParams *params);
-
-    void configure();
-    bool configure(const Info &info, std::string type);
-    void configure(const ScalarInfo &info);
-    void configure(const VectorInfo &info);
-    void configure(const DistInfo &info);
-    void configure(const VectorDistInfo &info);
-    void configure(const Vector2dInfo &info);
-    void configure(const FormulaInfo &info);
-};
-
-Output *initMySQL(std::string host, std::string database, std::string user,
-    std::string passwd, std::string project, std::string name,
-    std::string sample);
-
-#if !USE_MYSQL
-inline Output *
-initMySQL(std::string host, std::string user, std::string password,
-    std::string database, std::string project, std::string name,
-    std::string sample)
-{
-    return NULL;
-}
-#endif
-
-} // namespace Stats
-
-#endif // __BASE_STATS_MYSQL_HH__
diff --git a/src/base/stats/mysql_run.hh b/src/base/stats/mysql_run.hh
deleted file mode 100644 (file)
index 29ca168..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2004-2005 The Regents of The University of Michigan
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met: redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer;
- * redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution;
- * neither the name of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Authors: Nathan Binkert
- */
-
-#ifndef __BASE_STATS_MYSQL_RUN_HH__
-#define __BASE_STATS_MYSQL_RUN_HH__
-
-#include <string>
-
-#include "base/mysql.hh"
-#include "base/types.hh"
-
-namespace Stats {
-
-struct MySqlRun
-{
-  private:
-    MySQL::Connection mysql;
-    uint16_t run_id;
-
-  protected:
-    void setup(const std::string &name, const std::string &sample,
-        const std::string &user, const std::string &project);
-
-    void remove(const std::string &name);
-    void cleanup();
-
-  public:
-    bool connected() const { return mysql.connected(); }
-    void connect(const std::string &host, const std::string &user,
-        const std::string &passwd, const std::string &db,
-        const std::string &name, const std::string &sample,
-        const std::string &project);
-
-    MySQL::Connection &conn() { return mysql; }
-    uint16_t run() const { return run_id; }
-};
-
-} // namespace Stats
-
-#endif // __BASE_STATS_MYSQL_RUN_HH__
index f6da096f0fb35b6e72663af7be7763f2d6a03fa4..9b5af84fbae3a5e6450e0cf81ca54852b9ef2aa0 100644 (file)
@@ -39,16 +39,6 @@ def initText(filename, desc=True):
     output = internal.stats.initText(filename, desc)
     outputList.append(output)
 
-def initMySQL(host, database, user='', passwd='', project='test', name='test',
-              sample='0'):
-    if not user:
-        import getpass
-        user = getpass.getuser()
-
-    output = internal.stats.initMySQL(host, database, user, passwd,
-                                      project, name, sample)
-    outputList.append(output)
-
 def initSimStats():
     internal.stats.initSimStats()
 
index 0633a8c2752b5362c00108543ee4168ad1c0af0e..0213d5c01389ce2c8fe5c96bb85811da2de87ae7 100644 (file)
@@ -36,7 +36,6 @@
 %include <stdint.i>
 
 %{
-#include "base/stats/mysql.hh"
 #include "base/stats/text.hh"
 #include "base/stats/types.hh"
 #include "base/callback.hh"
@@ -141,9 +140,6 @@ template <class T> T cast_info(Info *info);
 
 void initSimStats();
 Output *initText(const std::string &filename, bool desc);
-Output *initMySQL(std::string host, std::string database, std::string user,
-    std::string passwd, std::string project, std::string name,
-    std::string sample);
 
 void schedStatEvent(bool dump, bool reset,
                     Tick when = curTick(), Tick repeat = 0);