Ticket #4151: myth_dbcon_r14813.diff

File myth_dbcon_r14813.diff, 6.2 KB (added by Mark Buechler <Mark.Buechler@…>, 16 years ago)

The patch.

  • libs/libmyth/mythdbcon.cpp

    diff -rup mythtv.old/libs/libmyth/mythdbcon.cpp mythtv/libs/libmyth/mythdbcon.cpp
    old new MSqlDatabase::MSqlDatabase(const QString 
    1717               "Unable to init db connection.");
    1818        return;
    1919    }
     20
     21    (void)getParams();
     22
    2023    m_lastDBKick = QDateTime::currentDateTime().addSecs(-60);
    2124}
    2225
    bool MSqlDatabase::isOpen() 
    3437{
    3538    if (m_db)
    3639    {
    37         if (!m_db->hostName().length())  // Bootstrapping without a database?
    38             return true;                 // Pretend its open to reduce errors
     40        if (!m_dbHostName.length())  // Bootstrapping without a database?
     41            return true;           // Pretend its open to reduce errors
    3942
    4043        if (m_db->isOpen())
    4144            return true;
    bool MSqlDatabase::OpenDatabase() 
    5659   
    5760    if (!m_db->isOpen())
    5861    {
    59         DatabaseParams dbparms = gContext->GetDatabaseParams();
    60         m_db->setDatabaseName(dbparms.dbName);
    61         m_db->setUserName(dbparms.dbUserName);
    62         m_db->setPassword(dbparms.dbPassword);
    63         m_db->setHostName(dbparms.dbHostName);
     62        DatabaseParams dbparms = getParams();
     63        m_db->setDatabaseName(m_dbName);
     64        m_db->setUserName(m_dbUserName);
     65        m_db->setPassword(m_dbPassword);
     66        m_db->setHostName(m_dbHostName);
    6467
    65         if (!dbparms.dbHostName.length())  // Bootstrapping without a database?
     68        if (!m_dbHostName.length())  // Bootstrapping without a database?
    6669        {
    6770            connected = true;              // Pretend to be connected
    6871            return true;                   // to reduce errors
    6972        }
    7073
    71         if (dbparms.dbPort)
    72             m_db->setPort(dbparms.dbPort);
     74        if (m_dbPort)
     75            m_db->setPort(m_dbPort);
    7376
    74         if (dbparms.dbPort && dbparms.dbHostName == "localhost")
     77        if (m_dbPort && m_dbHostName == "localhost")
    7578            m_db->setHostName("127.0.0.1");
    7679
    7780        connected = m_db->open();
    bool MSqlDatabase::OpenDatabase() 
    100103        {
    101104            VERBOSE(VB_GENERAL,
    102105                    QString("Connected to database '%1' at host: %2")
    103                             .arg(m_db->databaseName()).arg(m_db->hostName()));
     106                            .arg(m_db->databaseName()).arg(m_dbHostName));
    104107        }
    105108    }
    106109
    bool MSqlDatabase::KickDatabase() 
    127130    // mdz, 2003/08/11
    128131
    129132
    130     if (!m_db->hostName().length())  // Bootstrapping without a database?
    131     {                                // Pretend we kicked, to reduce errors
     133    if (!m_dbHostName.length())  // Bootstrapping without a database?
     134    {                          // Pretend we kicked, to reduce errors
    132135        m_lastDBKick = QDateTime::currentDateTime();
    133136        return true;
    134137    }
    bool MSqlDatabase::KickDatabase() 
    162165    return false;
    163166}
    164167
     168DatabaseParams MSqlDatabase::getParams()
     169{
     170    DatabaseParams dbparms;
     171
     172    if (gContext)
     173    {
     174        dbparms = gContext->GetDatabaseParams();
     175
     176        m_dbName     = dbparms.dbName;
     177        m_dbPort     = dbparms.dbPort;
     178        m_dbUserName = dbparms.dbUserName;
     179        m_dbPassword = dbparms.dbPassword;
     180        m_dbHostName = dbparms.dbHostName;
     181    }
     182    else
     183    {
     184        m_dbName     = "";
     185        m_dbPort     = 0;
     186        m_dbUserName = "";
     187        m_dbPassword = "";
     188        m_dbHostName = "";
     189
     190        VERBOSE(VB_IMPORTANT, "MSqlDatabase::MSqlDatabase gContext null");
     191    }
     192
     193    return dbparms;
     194}
    165195
    166196// -----------------------------------------------------------------------
    167197
    MSqlQuery::MSqlQuery(const MSqlQueryInfo 
    279309{
    280310    m_isConnected = false;
    281311    m_db = qi.db;
     312    m_dbHostName = m_db->m_db->hostName();
     313
    282314    m_returnConnection = qi.returnConnection;
    283315
    284316    m_isConnected = m_db && m_db->isOpen();
    MSqlQueryInfo MSqlQuery::DDCon() 
    381413// by this one method.
    382414bool MSqlQuery::exec(const QString &query)
    383415{
    384     if (!m_db->m_db->hostName().length())  // Bootstrapping without a database?
    385         return true;                       // Pretend success, to reduce errors
     416    if (!m_dbHostName.length())  // Bootstrapping without a database?
     417        return true;             // Pretend success, to reduce errors
    386418
    387419    bool result = QSqlQuery::exec(query);
    388420
    bool MSqlQuery::exec(const QString &quer 
    407439
    408440bool MSqlQuery::prepare(const QString& query)
    409441{
    410     if (!m_db->m_db->hostName().length())  // Bootstrapping without a database?
    411         return true;                       // Pretend success, to reduce errors
     442    if (!m_dbHostName.length())  // Bootstrapping without a database?
     443        return true;             // Pretend success, to reduce errors
    412444
    413445    static QMutex prepareLock;
    414446    QMutexLocker lock(&prepareLock);
    void MSqlQuery::bindValues(MSqlBindings  
    432464
    433465QVariant MSqlQuery::lastInsertId()
    434466{
    435     if (!m_db->m_db->hostName().length())  // Bootstrapping without a database?
    436         return value(0);                   // Pretend success, to reduce errors
     467    if (!m_dbHostName.length())  // Bootstrapping without a database?
     468        return value(0);       // Pretend success, to reduce errors
    437469
    438470    exec("SELECT LAST_INSERT_ID();");
    439471    if (!isActive() || size() < 1)
    void MSqlEscapeAsAQuery(QString &query,  
    498530                              result.driver()->formatValue(&f));
    499531    }
    500532}
    501 
  • libs/libmyth/mythdbcon.h

    diff -rup mythtv.old/libs/libmyth/mythdbcon.h mythtv/libs/libmyth/mythdbcon.h
    old new class MPUBLIC MSqlDatabase 
    2525    bool isOpen(void);
    2626    bool OpenDatabase(void);
    2727    bool KickDatabase(void);
     28    DatabaseParams getParams(void);
    2829    QSqlDatabase *db(void) { return m_db; }
    2930
    3031  private:
    3132    QString m_name;
     33    QString m_dbName;
     34    QString m_dbUserName;
     35    QString m_dbPassword;
     36    QString m_dbHostName;
     37    int m_dbPort;
     38
    3239    QSqlDatabase *m_db;
    3340    QDateTime m_lastDBKick;
    3441};
    class MPUBLIC MSqlQuery : public QSqlQue 
    143150
    144151  private:
    145152    MSqlDatabase *m_db;
     153    QString m_dbHostName;
    146154    bool m_isConnected;
    147155    bool m_returnConnection;
    148156};