// @(#)root/mysql:$Id$
// Author: Fons Rademakers   15/02/2000

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TMySQLServer                                                         //
//                                                                      //
// MySQL server plugin implementing the TSQLServer interface.           //
//                                                                      //
// To open a connection to a server use the static method Connect().    //
// The db argument of Connect() is of the form:                         //
//    mysql://<host>[:<port>][/<database>], e.g.                        //
// mysql://pcroot.cern.ch:3456/test                                     //
//                                                                      //
// As an example of connecting to mysql we assume that the server is    //
// running on the local host and that you have access to a database     //
// named "test" by connecting using an account that has a username and  //
// password of "tuser" and "tpass". You can set up this account         //
// by using the "mysql" program to connect to the server as the MySQL   //
// root user and issuing the following statement:                       //
//                                                                      //
// mysql> GRANT ALL ON test.* TO 'tuser'@'localhost' IDENTIFIED BY 'tpass';
//                                                                      //
// If the test database does not exist, create it with this statement:  //
//                                                                      //
// mysql> CREATE DATABASE test;                                         //
//                                                                      //
// If you want to use a different server host, username, password,      //
// or database name, just substitute the appropriate values.            //
// To connect do:                                                       //
//                                                                      //
// TSQLServer *db = TSQLServer::Connect("mysql://localhost/test", "tuser", "tpass");
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TMySQLServer.h"
#include "TMySQLResult.h"
#include "TMySQLStatement.h"
#include "TSQLColumnInfo.h"
#include "TSQLTableInfo.h"
#include "TSQLRow.h"
#include "TUrl.h"
#include "TList.h"
#include "TObjString.h"
#include "TObjArray.h"

#include <my_global.h>


ClassImp(TMySQLServer)

//______________________________________________________________________________
TMySQLServer::TMySQLServer(const char *db, const char *uid, const char *pw)
{
   // Open a connection to a MySQL DB server. The db arguments should be
   // of the form "mysql://<host>[:<port>][/<database>]", e.g.:
   // "mysql://pcroot.cern.ch:3456/test". The uid is the username and pw
   // the password that should be used for the connection.
   //
   // In addition, several parameters can be specified in url after "?" symbol:
   //    timeout=N           n is connect timeout is seconds
   //    socket=socketname   socketname should be name of Unix socket, used
   //                        for connection
   //    multi_statements    tell the server that the client may send multiple
   //                        statements in a single string (separated by ;);
   //    multi_results       tell the server that the client can handle multiple
   //                        result sets from multiple-statement executions or
   //                        stored procedures
   //    reconnect=0|1       enable or disable automatic reconnection to the server
   //                        if the connection is found to have been lost
   //    compress            use the compressed client/server protocol
   //    cnf_file=filename   Read options from the named option file instead of
   //                        from my.cnf
   //    cnf_group=groupname Read options from the named group from my.cnf or the
   //                        file specified with cnf_file option
   // If several parameters are specified, they should be separated by "&" symbol
   // Example of connection argument:
   //    TSQLServer::Connect("mysql://host.domain/test?timeout=10&multi_statements");

   fMySQL = 0;
   fInfo = "MySQL";

   TUrl url(db);

   if (!url.IsValid()) {
      TString errmsg("malformed db argument ");
      errmsg += db;
      SetError(-1, errmsg.Data(), "TMySQLServer");
      MakeZombie();
      return;
   }

   if (strncmp(url.GetProtocol(), "mysql", 5)) {
      SetError(-1, "protocol in db argument should be mysql://", "TMySQLServer");
      MakeZombie();
      return;
   }

   const char* dbase = url.GetFile();
   if (dbase!=0)
      if (*dbase=='/') dbase++; //skip leading "/" if appears

   fMySQL = new MYSQL;
   mysql_init(fMySQL);

   ULong_t client_flag = 0;
   TString socket;

   TString optstr = url.GetOptions();
   TObjArray* optarr = optstr.Tokenize("&");
   if (optarr!=0) {
      TIter next(optarr);
      TObject *obj = 0;
      while ((obj = next()) != 0) {
         TString opt = obj->GetName();
         opt.ToLower();
         opt.ReplaceAll(" ","");
         if (opt.Contains("timeout=")) {
            opt.Remove(0, 8);
            Int_t timeout = opt.Atoi();
            if (timeout > 0) {
               UInt_t mysqltimeout = (UInt_t) timeout;
               mysql_options(fMySQL, MYSQL_OPT_CONNECT_TIMEOUT, (const char*) &mysqltimeout);
               if (gDebug) Info("TMySQLServer","Set timeout %d",timeout);
            }
         } else
         if (opt.Contains("read_timeout=")) {
           #if MYSQL_VERSION_ID >= 40101
            opt.Remove(0, 13);
            Int_t timeout = opt.Atoi();
            if (timeout > 0) {
               UInt_t mysqltimeout = (UInt_t) timeout;
               mysql_options(fMySQL, MYSQL_OPT_READ_TIMEOUT, (const char*) &mysqltimeout);
               if (gDebug) Info("TMySQLServer","Set read timeout %d", timeout);
            }
           #else
            Warning("TMySQLServer","MYSQL_OPT_READ_TIMEOUT option not supported by this version of MySql");
           #endif

         } else
         if (opt.Contains("write_timeout=")) {
           #if MYSQL_VERSION_ID >= 40101
            opt.Remove(0, 14);
            Int_t timeout = opt.Atoi();
            if (timeout > 0) {
               UInt_t mysqltimeout = (UInt_t) timeout;
               mysql_options(fMySQL, MYSQL_OPT_WRITE_TIMEOUT, (const char*) &mysqltimeout);
               if (gDebug) Info("TMySQLServer","Set write timeout %d", timeout);
            }
           #else
            Warning("TMySQLServer","MYSQL_OPT_WRITE_TIMEOUT option not supported by this version of MySql");
           #endif
         } else
         if (opt.Contains("reconnect=")) {
           #if MYSQL_VERSION_ID >= 50013
            opt.Remove(0, 10);
            my_bool reconnect_on = (opt=="1") || (opt=="true");
            mysql_options(fMySQL, MYSQL_OPT_RECONNECT, (const char*) &reconnect_on);
            if (gDebug) Info("TMySQLServer","Set reconnect options %s", (reconnect_on ? "ON" : "OFF"));
           #else
            Warning("TMySQLServer","MYSQL_OPT_RECONNECT option not supported by this version of MySql");
           #endif
         } else
         if (opt.Contains("socket=")) {
            socket = (obj->GetName()+7);
            if (gDebug) Info("TMySQLServer","Use socket %s", socket.Data());
         } else
         if (opt.Contains("multi_statements")) {
           #if MYSQL_VERSION_ID >= 40100
            client_flag = client_flag | CLIENT_MULTI_STATEMENTS;
            if (gDebug) Info("TMySQLServer","Use CLIENT_MULTI_STATEMENTS");
           #else
            Warning("TMySQLServer","CLIENT_MULTI_STATEMENTS not supported by this version of MySql");
           #endif
         } else
         if (opt.Contains("multi_results")) {
           #if MYSQL_VERSION_ID >= 40100
            client_flag = client_flag | CLIENT_MULTI_RESULTS;
            if (gDebug) Info("TMySQLServer","Use CLIENT_MULTI_RESULTS");
           #else
            Warning("TMySQLServer","CLIENT_MULTI_RESULTS not supported by this version of MySql");
           #endif
         } else
         if (opt.Contains("compress")) {
            mysql_options(fMySQL, MYSQL_OPT_COMPRESS, 0);
            if (gDebug) Info("TMySQLServer","Use compressed client/server protocol");
         } else
         if (opt.Contains("cnf_file=")) {
            const char* filename = (obj->GetName()+9);
            mysql_options(fMySQL, MYSQL_READ_DEFAULT_FILE, filename);
            if (gDebug) Info("TMySQLServer","Read mysql options from %s file", filename);
         } else
         if (opt.Contains("cnf_group=")) {
            const char* groupname = (obj->GetName()+10);
            mysql_options(fMySQL, MYSQL_READ_DEFAULT_GROUP, groupname);
            if (gDebug) Info("TMySQLServer","Read mysql options from %s group of my.cnf file", groupname);
         }
      }
      optarr->Delete();
      delete optarr;
   }

   Int_t port = 3306;
   if (url.GetPort()>0) port = url.GetPort();

   if (mysql_real_connect(fMySQL, url.GetHost(), uid, pw, dbase, port,
                         (socket.Length()>0) ? socket.Data() : 0 , client_flag)) {
      fType = "MySQL";
      fHost = url.GetHost();
      fDB   = dbase;
      fPort = port;
   } else {
      SetError(mysql_errno(fMySQL), mysql_error(fMySQL), "TMySQLServer");
      MakeZombie();
   }
}

//______________________________________________________________________________
TMySQLServer::~TMySQLServer()
{
   // Close connection to MySQL DB server.

   if (IsConnected())
      Close();
   delete fMySQL;
}

// Reset error and check that server connected
#define CheckConnect(method, res)                       \
   {                                                    \
      ClearError();                                     \
      if (!IsConnected()) {                             \
         SetError(-1,"MySQL server is not connected",method); \
         return res;                                    \
      }                                                 \
   }


// check last mysql error code
#define CheckErrNo(method, force, res)                  \
   {                                                    \
      unsigned int sqlerrno = mysql_errno(fMySQL);         \
      if ((sqlerrno!=0) || force) {                        \
         const char* sqlerrmsg = mysql_error(fMySQL);      \
         if (sqlerrno==0) { sqlerrno = 11111; sqlerrmsg = "MySQL error"; } \
         SetError(sqlerrno, sqlerrmsg, method);               \
         return res;                                    \
      }                                                 \
   }


//______________________________________________________________________________
void TMySQLServer::Close(Option_t *)
{
   // Close connection to MySQL DB server.

   ClearError();

   if (!fMySQL)
      return;

   mysql_close(fMySQL);
   fPort = -1;
}

//______________________________________________________________________________
TSQLResult *TMySQLServer::Query(const char *sql)
{
   // Execute SQL command. Result object must be deleted by the user.
   // Returns a pointer to a TSQLResult object if successful, 0 otherwise.
   // The result object must be deleted by the user.

   CheckConnect("Query", 0);

   if (mysql_query(fMySQL, sql))
      CheckErrNo("Query",kTRUE,0);

   MYSQL_RES *res = mysql_store_result(fMySQL);
   CheckErrNo("Query", kFALSE, 0);

   return new TMySQLResult(res);
}

//______________________________________________________________________________
Bool_t TMySQLServer::Exec(const char* sql)
{
   // Execute SQL command which does not produce any result sets.
   // Returns kTRUE if successful.

   CheckConnect("Exec", kFALSE);

   if (mysql_query(fMySQL, sql))
      CheckErrNo("Exec",kTRUE,kFALSE);

   return !IsError();
}

//______________________________________________________________________________
Int_t TMySQLServer::SelectDataBase(const char *dbname)
{
   // Select a database. Returns 0 if successful, non-zero otherwise.

   CheckConnect("SelectDataBase", -1);

   Int_t res = mysql_select_db(fMySQL, dbname);
   if (res==0) fDB = dbname;
          else CheckErrNo("SelectDataBase", kTRUE, res);

   return res;
}

//______________________________________________________________________________
TSQLResult *TMySQLServer::GetDataBases(const char *wild)
{
   // List all available databases. Wild is for wildcarding "t%" list all
   // databases starting with "t".
   // Returns a pointer to a TSQLResult object if successful, 0 otherwise.
   // The result object must be deleted by the user.

   CheckConnect("GetDataBases", 0);

   MYSQL_RES *res = mysql_list_dbs(fMySQL, wild);

   CheckErrNo("GetDataBases", kFALSE, 0);

   return new TMySQLResult(res);
}

//______________________________________________________________________________
TSQLResult *TMySQLServer::GetTables(const char *dbname, const char *wild)
{
   // List all tables in the specified database. Wild is for wildcarding
   // "t%" list all tables starting with "t".
   // Returns a pointer to a TSQLResult object if successful, 0 otherwise.
   // The result object must be deleted by the user.

   CheckConnect("GetTables", 0);

   if (SelectDataBase(dbname) != 0) return 0;

   MYSQL_RES *res = mysql_list_tables(fMySQL, wild);

   CheckErrNo("GetTables", kFALSE, 0);

   return new TMySQLResult(res);
}


//______________________________________________________________________________
TList* TMySQLServer::GetTablesList(const char* wild)
{
   // Return list of tables with specified wildcard.

   CheckConnect("GetTablesList", 0);

   MYSQL_RES *res = mysql_list_tables(fMySQL, wild);

   CheckErrNo("GetTablesList", kFALSE, 0);

   MYSQL_ROW row = mysql_fetch_row(res);

   TList* lst = 0;

   while (row!=0) {
      CheckErrNo("GetTablesList", kFALSE, lst);

      const char* tablename = row[0];

      if (tablename!=0) {
         if (lst==0) {
            lst = new TList();
            lst->SetOwner(kTRUE);
         }
         lst->Add(new TObjString(tablename));
      }

      row = mysql_fetch_row(res);
   }

   mysql_free_result(res);

   return lst;
}

//______________________________________________________________________________
TSQLTableInfo *TMySQLServer::GetTableInfo(const char* tablename)
{
   // Produces SQL table info.
   // Object must be deleted by user.

   CheckConnect("GetTableInfo", 0);

   if ((tablename==0) || (*tablename==0)) return 0;

   TString sql;
   sql.Form("SELECT * FROM `%s` LIMIT 1", tablename);

   if (mysql_query(fMySQL, sql.Data()) != 0)
      CheckErrNo("GetTableInfo", kTRUE, 0);

   MYSQL_RES *res = mysql_store_result(fMySQL);
   CheckErrNo("GetTableInfo", kFALSE, 0);

   unsigned int numfields = mysql_num_fields(res);

   MYSQL_FIELD* fields = mysql_fetch_fields(res);

   sql.Form("SHOW COLUMNS FROM `%s`", tablename);
   TSQLResult* showres = Query(sql.Data());

   if (showres==0) {
      mysql_free_result(res);
      return 0;
   }

   TList* lst = 0;

   unsigned int nfield = 0;

   TSQLRow* row = 0;

   while ((row = showres->Next()) != 0) {
      const char* column_name = row->GetField(0);
      const char* type_name = row->GetField(1);

      if ((nfield>=numfields) ||
          (strcmp(column_name, fields[nfield].name)!=0))
      {
         SetError(-1,"missmatch in column names","GetTableInfo");
         break;
      }

      Int_t sqltype = kSQL_NONE;

      Int_t data_size = -1;    // size in bytes
      Int_t data_length = -1;  // declaration like VARCHAR(n) or NUMERIC(n)
      Int_t data_scale = -1;   // second argument in declaration
      Int_t data_sign = -1; // signed type or not

      if (IS_NUM(fields[nfield].type)) {
         if (fields[nfield].flags & UNSIGNED_FLAG)
            data_sign = 0;
         else
            data_sign = 1;
      }

      Bool_t nullable = (fields[nfield].flags & NOT_NULL_FLAG) == 0;

      data_length = fields[nfield].length;
      if (data_length==0) data_length = -1;

#if MYSQL_VERSION_ID >= 40100

      switch (fields[nfield].type) {
         case MYSQL_TYPE_TINY:
         case MYSQL_TYPE_SHORT:
         case MYSQL_TYPE_LONG:
         case MYSQL_TYPE_INT24:
         case MYSQL_TYPE_LONGLONG:
            sqltype = kSQL_INTEGER;
            break;
         case MYSQL_TYPE_DECIMAL:
            sqltype = kSQL_NUMERIC;
            data_scale = fields[nfield].decimals;
            break;
         case MYSQL_TYPE_FLOAT:
            sqltype = kSQL_FLOAT;
            break;
         case MYSQL_TYPE_DOUBLE:
            sqltype = kSQL_DOUBLE;
            break;
         case MYSQL_TYPE_TIMESTAMP:
            sqltype = kSQL_TIMESTAMP;
            break;
         case MYSQL_TYPE_DATE:
         case MYSQL_TYPE_TIME:
         case MYSQL_TYPE_DATETIME:
         case MYSQL_TYPE_YEAR:
            break;
         case MYSQL_TYPE_STRING:
            if (fields[nfield].charsetnr==63)
               sqltype = kSQL_BINARY;
            else
               sqltype = kSQL_CHAR;
            data_size = data_length;
            break;
         case MYSQL_TYPE_VAR_STRING:
            if (fields[nfield].charsetnr==63)
               sqltype = kSQL_BINARY;
            else
               sqltype = kSQL_VARCHAR;
            data_size = data_length;
            break;
         case MYSQL_TYPE_BLOB:
            if (fields[nfield].charsetnr==63)
               sqltype = kSQL_BINARY;
            else
               sqltype = kSQL_VARCHAR;
            data_size = data_length;
            break;
         case MYSQL_TYPE_SET:
         case MYSQL_TYPE_ENUM:
         case MYSQL_TYPE_GEOMETRY:
         case MYSQL_TYPE_NULL:
            break;
         default:
            if (IS_NUM(fields[nfield].type))
               sqltype = kSQL_NUMERIC;
      }

#endif

      if (!lst)
         lst = new TList;
      lst->Add(new TSQLColumnInfo(column_name,
                                  type_name,
                                  nullable,
                                  sqltype,
                                  data_size,
                                  data_length,
                                  data_scale,
                                  data_sign));

      nfield++;
      delete row;
   }

   mysql_free_result(res);
   delete showres;

   sql.Form("SHOW TABLE STATUS LIKE '%s'", tablename);

   TSQLTableInfo* info = 0;

   TSQLResult* stats = Query(sql.Data());

   if (stats!=0) {
      row = 0;

      while ((row = stats->Next()) != 0) {
         if (strcmp(row->GetField(0), tablename)!=0) {
            delete row;
            continue;
         }
         const char* comments = 0;
         const char* engine = 0;
         const char* create_time = 0;
         const char* update_time = 0;

         for (int n=1;n<stats->GetFieldCount();n++) {
            TString fname = stats->GetFieldName(n);
            fname.ToLower();
            if (fname=="engine") engine = row->GetField(n); else
            if (fname=="comment") comments = row->GetField(n); else
            if (fname=="create_time") create_time = row->GetField(n); else
            if (fname=="update_time") update_time = row->GetField(n);
         }

         info = new TSQLTableInfo(tablename,
                                  lst,
                                  comments,
                                  engine,
                                  create_time,
                                  update_time);

         delete row;
         break;
      }
      delete stats;
   }

   if (info==0)
      info = new TSQLTableInfo(tablename, lst);

   return info;
}

//______________________________________________________________________________
TSQLResult *TMySQLServer::GetColumns(const char *dbname, const char *table,
                                     const char *wild)
{
   // List all columns in specified table in the specified database.
   // Wild is for wildcarding "t%" list all columns starting with "t".
   // Returns a pointer to a TSQLResult object if successful, 0 otherwise.
   // The result object must be deleted by the user.

   CheckConnect("GetColumns", 0);

   if (SelectDataBase(dbname) != 0) return 0;

   TString sql;
   if (wild)
      sql.Form("SHOW COLUMNS FROM %s LIKE '%s'", table, wild);
   else
      sql.Form("SHOW COLUMNS FROM %s", table);

   return Query(sql.Data());
}

//______________________________________________________________________________
Int_t TMySQLServer::CreateDataBase(const char *dbname)
{
   // Create a database. Returns 0 if successful, non-zero otherwise.

   CheckConnect("CreateDataBase", -1);

   Int_t res = mysql_query(fMySQL, Form("CREATE DATABASE %s",dbname));

   CheckErrNo("CreateDataBase", kFALSE, res);

   return res;
}

//______________________________________________________________________________
Int_t TMySQLServer::DropDataBase(const char *dbname)
{
   // Drop (i.e. delete) a database. Returns 0 if successful, non-zero
   // otherwise.

   CheckConnect("DropDataBase", -1);

   Int_t res = mysql_query(fMySQL, Form("DROP DATABASE %s",dbname));

   CheckErrNo("DropDataBase", kFALSE, res);

   return res;
}

//______________________________________________________________________________
Int_t TMySQLServer::Reload()
{
   // Reload permission tables. Returns 0 if successful, non-zero
   // otherwise. User must have reload permissions.

   CheckConnect("Reload", -1);

   Int_t res = mysql_reload(fMySQL);

   CheckErrNo("Reload", kFALSE, res);

   return res;
}

//______________________________________________________________________________
Int_t TMySQLServer::Shutdown()
{
   // Shutdown the database server. Returns 0 if successful, non-zero
   // otherwise. User must have shutdown permissions.

   CheckConnect("Shutdown", -1);

   Int_t res;

#if MYSQL_VERSION_ID >= 50001 || \
    (MYSQL_VERSION_ID < 50000 && MYSQL_VERSION_ID >= 40103)
   res = mysql_shutdown(fMySQL, SHUTDOWN_DEFAULT);
#else
   res = mysql_shutdown(fMySQL);
#endif

   CheckErrNo("Shutdown", kFALSE, res);

   return res;
}

//______________________________________________________________________________
const char *TMySQLServer::ServerInfo()
{
   // Return server info in form "MySQL <vesrion>".

   CheckConnect("ServerInfo", 0);

   const char* res = mysql_get_server_info(fMySQL);

   CheckErrNo("ServerInfo", kFALSE, res);

   fInfo = "MySQL ";
   fInfo += res;

   return fInfo.Data();
}

//______________________________________________________________________________
Bool_t TMySQLServer::HasStatement() const
{
   // Return kTRUE if TSQLStatement class is supported.
   // Starts from MySQL 4.1.

#if MYSQL_VERSION_ID < 40100
   return kFALSE;
#else
   return kTRUE;
#endif
}


//______________________________________________________________________________
TSQLStatement *TMySQLServer::Statement(const char *sql, Int_t)
{
   // Produce TMySQLStatement.

#if MYSQL_VERSION_ID < 40100
   ClearError();
   SetError(-1, "Statement class does not supported by MySQL version < 4.1", "Statement");
   return 0;
#else

   CheckConnect("Statement", 0);

   if (!sql || !*sql) {
      SetError(-1, "no query string specified","Statement");
      return 0;
   }

   MYSQL_STMT *stmt = mysql_stmt_init(fMySQL);
   if (!stmt)
      CheckErrNo("Statement", kTRUE, 0);

   if (mysql_stmt_prepare(stmt, sql, strlen(sql))) {
      SetError(mysql_errno(fMySQL), mysql_error(fMySQL), "Statement");
      mysql_stmt_close(stmt);
      return 0;
   }

   return new TMySQLStatement(stmt, fErrorOut);

#endif
}

//______________________________________________________________________________
Bool_t TMySQLServer::StartTransaction()
{
   // Start transaction

   CheckConnect("StartTransaction", kFALSE);

   return TSQLServer::StartTransaction();
}

//______________________________________________________________________________
Bool_t TMySQLServer::Commit()
{
   // Commit changes

   CheckConnect("Commit", kFALSE);

#if MYSQL_VERSION_ID >= 40100

   if (mysql_commit(fMySQL))
      CheckErrNo("Commit", kTRUE, kFALSE);

   return kTRUE;

#else

   return TSQLServer::Commit();

#endif

}

//______________________________________________________________________________
Bool_t TMySQLServer::Rollback()
{
   // Rollback changes

   CheckConnect("Rollback", kFALSE);

#if MYSQL_VERSION_ID >= 40100

   if (mysql_rollback(fMySQL))
      CheckErrNo("Rollback", kTRUE, kFALSE);

   return kTRUE;

#else

   return TSQLServer::Rollback();

#endif

}

//______________________________________________________________________________
Bool_t TMySQLServer::PingVerify()
{
   // Execute Ping to SQL Connection.
   // Since mysql_ping tries to reconnect by itself,
   // a double call to the mysql function is implemented.
   // Returns kTRUE if successful

   CheckConnect("Ping", kFALSE);

   if (mysql_ping(fMySQL)) {
      if (mysql_ping(fMySQL)) {
         Error("PingVerify", "not able to automatically reconnect a second time");
         CheckErrNo("Ping", kTRUE, kFALSE);
      } else
         Info("PingVerify", "connection was lost, but could automatically reconnect");
   }

   return !IsError();
}

//______________________________________________________________________________
Int_t TMySQLServer::Ping()
{
   // Execute Ping to SQL Connection using the mysql_ping function.
   // Returns 0 if successful, non-zero in case an error occured.

   CheckConnect("PingInt", kFALSE);

   return mysql_ping(fMySQL);
}
 TMySQLServer.cxx:1
 TMySQLServer.cxx:2
 TMySQLServer.cxx:3
 TMySQLServer.cxx:4
 TMySQLServer.cxx:5
 TMySQLServer.cxx:6
 TMySQLServer.cxx:7
 TMySQLServer.cxx:8
 TMySQLServer.cxx:9
 TMySQLServer.cxx:10
 TMySQLServer.cxx:11
 TMySQLServer.cxx:12
 TMySQLServer.cxx:13
 TMySQLServer.cxx:14
 TMySQLServer.cxx:15
 TMySQLServer.cxx:16
 TMySQLServer.cxx:17
 TMySQLServer.cxx:18
 TMySQLServer.cxx:19
 TMySQLServer.cxx:20
 TMySQLServer.cxx:21
 TMySQLServer.cxx:22
 TMySQLServer.cxx:23
 TMySQLServer.cxx:24
 TMySQLServer.cxx:25
 TMySQLServer.cxx:26
 TMySQLServer.cxx:27
 TMySQLServer.cxx:28
 TMySQLServer.cxx:29
 TMySQLServer.cxx:30
 TMySQLServer.cxx:31
 TMySQLServer.cxx:32
 TMySQLServer.cxx:33
 TMySQLServer.cxx:34
 TMySQLServer.cxx:35
 TMySQLServer.cxx:36
 TMySQLServer.cxx:37
 TMySQLServer.cxx:38
 TMySQLServer.cxx:39
 TMySQLServer.cxx:40
 TMySQLServer.cxx:41
 TMySQLServer.cxx:42
 TMySQLServer.cxx:43
 TMySQLServer.cxx:44
 TMySQLServer.cxx:45
 TMySQLServer.cxx:46
 TMySQLServer.cxx:47
 TMySQLServer.cxx:48
 TMySQLServer.cxx:49
 TMySQLServer.cxx:50
 TMySQLServer.cxx:51
 TMySQLServer.cxx:52
 TMySQLServer.cxx:53
 TMySQLServer.cxx:54
 TMySQLServer.cxx:55
 TMySQLServer.cxx:56
 TMySQLServer.cxx:57
 TMySQLServer.cxx:58
 TMySQLServer.cxx:59
 TMySQLServer.cxx:60
 TMySQLServer.cxx:61
 TMySQLServer.cxx:62
 TMySQLServer.cxx:63
 TMySQLServer.cxx:64
 TMySQLServer.cxx:65
 TMySQLServer.cxx:66
 TMySQLServer.cxx:67
 TMySQLServer.cxx:68
 TMySQLServer.cxx:69
 TMySQLServer.cxx:70
 TMySQLServer.cxx:71
 TMySQLServer.cxx:72
 TMySQLServer.cxx:73
 TMySQLServer.cxx:74
 TMySQLServer.cxx:75
 TMySQLServer.cxx:76
 TMySQLServer.cxx:77
 TMySQLServer.cxx:78
 TMySQLServer.cxx:79
 TMySQLServer.cxx:80
 TMySQLServer.cxx:81
 TMySQLServer.cxx:82
 TMySQLServer.cxx:83
 TMySQLServer.cxx:84
 TMySQLServer.cxx:85
 TMySQLServer.cxx:86
 TMySQLServer.cxx:87
 TMySQLServer.cxx:88
 TMySQLServer.cxx:89
 TMySQLServer.cxx:90
 TMySQLServer.cxx:91
 TMySQLServer.cxx:92
 TMySQLServer.cxx:93
 TMySQLServer.cxx:94
 TMySQLServer.cxx:95
 TMySQLServer.cxx:96
 TMySQLServer.cxx:97
 TMySQLServer.cxx:98
 TMySQLServer.cxx:99
 TMySQLServer.cxx:100
 TMySQLServer.cxx:101
 TMySQLServer.cxx:102
 TMySQLServer.cxx:103
 TMySQLServer.cxx:104
 TMySQLServer.cxx:105
 TMySQLServer.cxx:106
 TMySQLServer.cxx:107
 TMySQLServer.cxx:108
 TMySQLServer.cxx:109
 TMySQLServer.cxx:110
 TMySQLServer.cxx:111
 TMySQLServer.cxx:112
 TMySQLServer.cxx:113
 TMySQLServer.cxx:114
 TMySQLServer.cxx:115
 TMySQLServer.cxx:116
 TMySQLServer.cxx:117
 TMySQLServer.cxx:118
 TMySQLServer.cxx:119
 TMySQLServer.cxx:120
 TMySQLServer.cxx:121
 TMySQLServer.cxx:122
 TMySQLServer.cxx:123
 TMySQLServer.cxx:124
 TMySQLServer.cxx:125
 TMySQLServer.cxx:126
 TMySQLServer.cxx:127
 TMySQLServer.cxx:128
 TMySQLServer.cxx:129
 TMySQLServer.cxx:130
 TMySQLServer.cxx:131
 TMySQLServer.cxx:132
 TMySQLServer.cxx:133
 TMySQLServer.cxx:134
 TMySQLServer.cxx:135
 TMySQLServer.cxx:136
 TMySQLServer.cxx:137
 TMySQLServer.cxx:138
 TMySQLServer.cxx:139
 TMySQLServer.cxx:140
 TMySQLServer.cxx:141
 TMySQLServer.cxx:142
 TMySQLServer.cxx:143
 TMySQLServer.cxx:144
 TMySQLServer.cxx:145
 TMySQLServer.cxx:146
 TMySQLServer.cxx:147
 TMySQLServer.cxx:148
 TMySQLServer.cxx:149
 TMySQLServer.cxx:150
 TMySQLServer.cxx:151
 TMySQLServer.cxx:152
 TMySQLServer.cxx:153
 TMySQLServer.cxx:154
 TMySQLServer.cxx:155
 TMySQLServer.cxx:156
 TMySQLServer.cxx:157
 TMySQLServer.cxx:158
 TMySQLServer.cxx:159
 TMySQLServer.cxx:160
 TMySQLServer.cxx:161
 TMySQLServer.cxx:162
 TMySQLServer.cxx:163
 TMySQLServer.cxx:164
 TMySQLServer.cxx:165
 TMySQLServer.cxx:166
 TMySQLServer.cxx:167
 TMySQLServer.cxx:168
 TMySQLServer.cxx:169
 TMySQLServer.cxx:170
 TMySQLServer.cxx:171
 TMySQLServer.cxx:172
 TMySQLServer.cxx:173
 TMySQLServer.cxx:174
 TMySQLServer.cxx:175
 TMySQLServer.cxx:176
 TMySQLServer.cxx:177
 TMySQLServer.cxx:178
 TMySQLServer.cxx:179
 TMySQLServer.cxx:180
 TMySQLServer.cxx:181
 TMySQLServer.cxx:182
 TMySQLServer.cxx:183
 TMySQLServer.cxx:184
 TMySQLServer.cxx:185
 TMySQLServer.cxx:186
 TMySQLServer.cxx:187
 TMySQLServer.cxx:188
 TMySQLServer.cxx:189
 TMySQLServer.cxx:190
 TMySQLServer.cxx:191
 TMySQLServer.cxx:192
 TMySQLServer.cxx:193
 TMySQLServer.cxx:194
 TMySQLServer.cxx:195
 TMySQLServer.cxx:196
 TMySQLServer.cxx:197
 TMySQLServer.cxx:198
 TMySQLServer.cxx:199
 TMySQLServer.cxx:200
 TMySQLServer.cxx:201
 TMySQLServer.cxx:202
 TMySQLServer.cxx:203
 TMySQLServer.cxx:204
 TMySQLServer.cxx:205
 TMySQLServer.cxx:206
 TMySQLServer.cxx:207
 TMySQLServer.cxx:208
 TMySQLServer.cxx:209
 TMySQLServer.cxx:210
 TMySQLServer.cxx:211
 TMySQLServer.cxx:212
 TMySQLServer.cxx:213
 TMySQLServer.cxx:214
 TMySQLServer.cxx:215
 TMySQLServer.cxx:216
 TMySQLServer.cxx:217
 TMySQLServer.cxx:218
 TMySQLServer.cxx:219
 TMySQLServer.cxx:220
 TMySQLServer.cxx:221
 TMySQLServer.cxx:222
 TMySQLServer.cxx:223
 TMySQLServer.cxx:224
 TMySQLServer.cxx:225
 TMySQLServer.cxx:226
 TMySQLServer.cxx:227
 TMySQLServer.cxx:228
 TMySQLServer.cxx:229
 TMySQLServer.cxx:230
 TMySQLServer.cxx:231
 TMySQLServer.cxx:232
 TMySQLServer.cxx:233
 TMySQLServer.cxx:234
 TMySQLServer.cxx:235
 TMySQLServer.cxx:236
 TMySQLServer.cxx:237
 TMySQLServer.cxx:238
 TMySQLServer.cxx:239
 TMySQLServer.cxx:240
 TMySQLServer.cxx:241
 TMySQLServer.cxx:242
 TMySQLServer.cxx:243
 TMySQLServer.cxx:244
 TMySQLServer.cxx:245
 TMySQLServer.cxx:246
 TMySQLServer.cxx:247
 TMySQLServer.cxx:248
 TMySQLServer.cxx:249
 TMySQLServer.cxx:250
 TMySQLServer.cxx:251
 TMySQLServer.cxx:252
 TMySQLServer.cxx:253
 TMySQLServer.cxx:254
 TMySQLServer.cxx:255
 TMySQLServer.cxx:256
 TMySQLServer.cxx:257
 TMySQLServer.cxx:258
 TMySQLServer.cxx:259
 TMySQLServer.cxx:260
 TMySQLServer.cxx:261
 TMySQLServer.cxx:262
 TMySQLServer.cxx:263
 TMySQLServer.cxx:264
 TMySQLServer.cxx:265
 TMySQLServer.cxx:266
 TMySQLServer.cxx:267
 TMySQLServer.cxx:268
 TMySQLServer.cxx:269
 TMySQLServer.cxx:270
 TMySQLServer.cxx:271
 TMySQLServer.cxx:272
 TMySQLServer.cxx:273
 TMySQLServer.cxx:274
 TMySQLServer.cxx:275
 TMySQLServer.cxx:276
 TMySQLServer.cxx:277
 TMySQLServer.cxx:278
 TMySQLServer.cxx:279
 TMySQLServer.cxx:280
 TMySQLServer.cxx:281
 TMySQLServer.cxx:282
 TMySQLServer.cxx:283
 TMySQLServer.cxx:284
 TMySQLServer.cxx:285
 TMySQLServer.cxx:286
 TMySQLServer.cxx:287
 TMySQLServer.cxx:288
 TMySQLServer.cxx:289
 TMySQLServer.cxx:290
 TMySQLServer.cxx:291
 TMySQLServer.cxx:292
 TMySQLServer.cxx:293
 TMySQLServer.cxx:294
 TMySQLServer.cxx:295
 TMySQLServer.cxx:296
 TMySQLServer.cxx:297
 TMySQLServer.cxx:298
 TMySQLServer.cxx:299
 TMySQLServer.cxx:300
 TMySQLServer.cxx:301
 TMySQLServer.cxx:302
 TMySQLServer.cxx:303
 TMySQLServer.cxx:304
 TMySQLServer.cxx:305
 TMySQLServer.cxx:306
 TMySQLServer.cxx:307
 TMySQLServer.cxx:308
 TMySQLServer.cxx:309
 TMySQLServer.cxx:310
 TMySQLServer.cxx:311
 TMySQLServer.cxx:312
 TMySQLServer.cxx:313
 TMySQLServer.cxx:314
 TMySQLServer.cxx:315
 TMySQLServer.cxx:316
 TMySQLServer.cxx:317
 TMySQLServer.cxx:318
 TMySQLServer.cxx:319
 TMySQLServer.cxx:320
 TMySQLServer.cxx:321
 TMySQLServer.cxx:322
 TMySQLServer.cxx:323
 TMySQLServer.cxx:324
 TMySQLServer.cxx:325
 TMySQLServer.cxx:326
 TMySQLServer.cxx:327
 TMySQLServer.cxx:328
 TMySQLServer.cxx:329
 TMySQLServer.cxx:330
 TMySQLServer.cxx:331
 TMySQLServer.cxx:332
 TMySQLServer.cxx:333
 TMySQLServer.cxx:334
 TMySQLServer.cxx:335
 TMySQLServer.cxx:336
 TMySQLServer.cxx:337
 TMySQLServer.cxx:338
 TMySQLServer.cxx:339
 TMySQLServer.cxx:340
 TMySQLServer.cxx:341
 TMySQLServer.cxx:342
 TMySQLServer.cxx:343
 TMySQLServer.cxx:344
 TMySQLServer.cxx:345
 TMySQLServer.cxx:346
 TMySQLServer.cxx:347
 TMySQLServer.cxx:348
 TMySQLServer.cxx:349
 TMySQLServer.cxx:350
 TMySQLServer.cxx:351
 TMySQLServer.cxx:352
 TMySQLServer.cxx:353
 TMySQLServer.cxx:354
 TMySQLServer.cxx:355
 TMySQLServer.cxx:356
 TMySQLServer.cxx:357
 TMySQLServer.cxx:358
 TMySQLServer.cxx:359
 TMySQLServer.cxx:360
 TMySQLServer.cxx:361
 TMySQLServer.cxx:362
 TMySQLServer.cxx:363
 TMySQLServer.cxx:364
 TMySQLServer.cxx:365
 TMySQLServer.cxx:366
 TMySQLServer.cxx:367
 TMySQLServer.cxx:368
 TMySQLServer.cxx:369
 TMySQLServer.cxx:370
 TMySQLServer.cxx:371
 TMySQLServer.cxx:372
 TMySQLServer.cxx:373
 TMySQLServer.cxx:374
 TMySQLServer.cxx:375
 TMySQLServer.cxx:376
 TMySQLServer.cxx:377
 TMySQLServer.cxx:378
 TMySQLServer.cxx:379
 TMySQLServer.cxx:380
 TMySQLServer.cxx:381
 TMySQLServer.cxx:382
 TMySQLServer.cxx:383
 TMySQLServer.cxx:384
 TMySQLServer.cxx:385
 TMySQLServer.cxx:386
 TMySQLServer.cxx:387
 TMySQLServer.cxx:388
 TMySQLServer.cxx:389
 TMySQLServer.cxx:390
 TMySQLServer.cxx:391
 TMySQLServer.cxx:392
 TMySQLServer.cxx:393
 TMySQLServer.cxx:394
 TMySQLServer.cxx:395
 TMySQLServer.cxx:396
 TMySQLServer.cxx:397
 TMySQLServer.cxx:398
 TMySQLServer.cxx:399
 TMySQLServer.cxx:400
 TMySQLServer.cxx:401
 TMySQLServer.cxx:402
 TMySQLServer.cxx:403
 TMySQLServer.cxx:404
 TMySQLServer.cxx:405
 TMySQLServer.cxx:406
 TMySQLServer.cxx:407
 TMySQLServer.cxx:408
 TMySQLServer.cxx:409
 TMySQLServer.cxx:410
 TMySQLServer.cxx:411
 TMySQLServer.cxx:412
 TMySQLServer.cxx:413
 TMySQLServer.cxx:414
 TMySQLServer.cxx:415
 TMySQLServer.cxx:416
 TMySQLServer.cxx:417
 TMySQLServer.cxx:418
 TMySQLServer.cxx:419
 TMySQLServer.cxx:420
 TMySQLServer.cxx:421
 TMySQLServer.cxx:422
 TMySQLServer.cxx:423
 TMySQLServer.cxx:424
 TMySQLServer.cxx:425
 TMySQLServer.cxx:426
 TMySQLServer.cxx:427
 TMySQLServer.cxx:428
 TMySQLServer.cxx:429
 TMySQLServer.cxx:430
 TMySQLServer.cxx:431
 TMySQLServer.cxx:432
 TMySQLServer.cxx:433
 TMySQLServer.cxx:434
 TMySQLServer.cxx:435
 TMySQLServer.cxx:436
 TMySQLServer.cxx:437
 TMySQLServer.cxx:438
 TMySQLServer.cxx:439
 TMySQLServer.cxx:440
 TMySQLServer.cxx:441
 TMySQLServer.cxx:442
 TMySQLServer.cxx:443
 TMySQLServer.cxx:444
 TMySQLServer.cxx:445
 TMySQLServer.cxx:446
 TMySQLServer.cxx:447
 TMySQLServer.cxx:448
 TMySQLServer.cxx:449
 TMySQLServer.cxx:450
 TMySQLServer.cxx:451
 TMySQLServer.cxx:452
 TMySQLServer.cxx:453
 TMySQLServer.cxx:454
 TMySQLServer.cxx:455
 TMySQLServer.cxx:456
 TMySQLServer.cxx:457
 TMySQLServer.cxx:458
 TMySQLServer.cxx:459
 TMySQLServer.cxx:460
 TMySQLServer.cxx:461
 TMySQLServer.cxx:462
 TMySQLServer.cxx:463
 TMySQLServer.cxx:464
 TMySQLServer.cxx:465
 TMySQLServer.cxx:466
 TMySQLServer.cxx:467
 TMySQLServer.cxx:468
 TMySQLServer.cxx:469
 TMySQLServer.cxx:470
 TMySQLServer.cxx:471
 TMySQLServer.cxx:472
 TMySQLServer.cxx:473
 TMySQLServer.cxx:474
 TMySQLServer.cxx:475
 TMySQLServer.cxx:476
 TMySQLServer.cxx:477
 TMySQLServer.cxx:478
 TMySQLServer.cxx:479
 TMySQLServer.cxx:480
 TMySQLServer.cxx:481
 TMySQLServer.cxx:482
 TMySQLServer.cxx:483
 TMySQLServer.cxx:484
 TMySQLServer.cxx:485
 TMySQLServer.cxx:486
 TMySQLServer.cxx:487
 TMySQLServer.cxx:488
 TMySQLServer.cxx:489
 TMySQLServer.cxx:490
 TMySQLServer.cxx:491
 TMySQLServer.cxx:492
 TMySQLServer.cxx:493
 TMySQLServer.cxx:494
 TMySQLServer.cxx:495
 TMySQLServer.cxx:496
 TMySQLServer.cxx:497
 TMySQLServer.cxx:498
 TMySQLServer.cxx:499
 TMySQLServer.cxx:500
 TMySQLServer.cxx:501
 TMySQLServer.cxx:502
 TMySQLServer.cxx:503
 TMySQLServer.cxx:504
 TMySQLServer.cxx:505
 TMySQLServer.cxx:506
 TMySQLServer.cxx:507
 TMySQLServer.cxx:508
 TMySQLServer.cxx:509
 TMySQLServer.cxx:510
 TMySQLServer.cxx:511
 TMySQLServer.cxx:512
 TMySQLServer.cxx:513
 TMySQLServer.cxx:514
 TMySQLServer.cxx:515
 TMySQLServer.cxx:516
 TMySQLServer.cxx:517
 TMySQLServer.cxx:518
 TMySQLServer.cxx:519
 TMySQLServer.cxx:520
 TMySQLServer.cxx:521
 TMySQLServer.cxx:522
 TMySQLServer.cxx:523
 TMySQLServer.cxx:524
 TMySQLServer.cxx:525
 TMySQLServer.cxx:526
 TMySQLServer.cxx:527
 TMySQLServer.cxx:528
 TMySQLServer.cxx:529
 TMySQLServer.cxx:530
 TMySQLServer.cxx:531
 TMySQLServer.cxx:532
 TMySQLServer.cxx:533
 TMySQLServer.cxx:534
 TMySQLServer.cxx:535
 TMySQLServer.cxx:536
 TMySQLServer.cxx:537
 TMySQLServer.cxx:538
 TMySQLServer.cxx:539
 TMySQLServer.cxx:540
 TMySQLServer.cxx:541
 TMySQLServer.cxx:542
 TMySQLServer.cxx:543
 TMySQLServer.cxx:544
 TMySQLServer.cxx:545
 TMySQLServer.cxx:546
 TMySQLServer.cxx:547
 TMySQLServer.cxx:548
 TMySQLServer.cxx:549
 TMySQLServer.cxx:550
 TMySQLServer.cxx:551
 TMySQLServer.cxx:552
 TMySQLServer.cxx:553
 TMySQLServer.cxx:554
 TMySQLServer.cxx:555
 TMySQLServer.cxx:556
 TMySQLServer.cxx:557
 TMySQLServer.cxx:558
 TMySQLServer.cxx:559
 TMySQLServer.cxx:560
 TMySQLServer.cxx:561
 TMySQLServer.cxx:562
 TMySQLServer.cxx:563
 TMySQLServer.cxx:564
 TMySQLServer.cxx:565
 TMySQLServer.cxx:566
 TMySQLServer.cxx:567
 TMySQLServer.cxx:568
 TMySQLServer.cxx:569
 TMySQLServer.cxx:570
 TMySQLServer.cxx:571
 TMySQLServer.cxx:572
 TMySQLServer.cxx:573
 TMySQLServer.cxx:574
 TMySQLServer.cxx:575
 TMySQLServer.cxx:576
 TMySQLServer.cxx:577
 TMySQLServer.cxx:578
 TMySQLServer.cxx:579
 TMySQLServer.cxx:580
 TMySQLServer.cxx:581
 TMySQLServer.cxx:582
 TMySQLServer.cxx:583
 TMySQLServer.cxx:584
 TMySQLServer.cxx:585
 TMySQLServer.cxx:586
 TMySQLServer.cxx:587
 TMySQLServer.cxx:588
 TMySQLServer.cxx:589
 TMySQLServer.cxx:590
 TMySQLServer.cxx:591
 TMySQLServer.cxx:592
 TMySQLServer.cxx:593
 TMySQLServer.cxx:594
 TMySQLServer.cxx:595
 TMySQLServer.cxx:596
 TMySQLServer.cxx:597
 TMySQLServer.cxx:598
 TMySQLServer.cxx:599
 TMySQLServer.cxx:600
 TMySQLServer.cxx:601
 TMySQLServer.cxx:602
 TMySQLServer.cxx:603
 TMySQLServer.cxx:604
 TMySQLServer.cxx:605
 TMySQLServer.cxx:606
 TMySQLServer.cxx:607
 TMySQLServer.cxx:608
 TMySQLServer.cxx:609
 TMySQLServer.cxx:610
 TMySQLServer.cxx:611
 TMySQLServer.cxx:612
 TMySQLServer.cxx:613
 TMySQLServer.cxx:614
 TMySQLServer.cxx:615
 TMySQLServer.cxx:616
 TMySQLServer.cxx:617
 TMySQLServer.cxx:618
 TMySQLServer.cxx:619
 TMySQLServer.cxx:620
 TMySQLServer.cxx:621
 TMySQLServer.cxx:622
 TMySQLServer.cxx:623
 TMySQLServer.cxx:624
 TMySQLServer.cxx:625
 TMySQLServer.cxx:626
 TMySQLServer.cxx:627
 TMySQLServer.cxx:628
 TMySQLServer.cxx:629
 TMySQLServer.cxx:630
 TMySQLServer.cxx:631
 TMySQLServer.cxx:632
 TMySQLServer.cxx:633
 TMySQLServer.cxx:634
 TMySQLServer.cxx:635
 TMySQLServer.cxx:636
 TMySQLServer.cxx:637
 TMySQLServer.cxx:638
 TMySQLServer.cxx:639
 TMySQLServer.cxx:640
 TMySQLServer.cxx:641
 TMySQLServer.cxx:642
 TMySQLServer.cxx:643
 TMySQLServer.cxx:644
 TMySQLServer.cxx:645
 TMySQLServer.cxx:646
 TMySQLServer.cxx:647
 TMySQLServer.cxx:648
 TMySQLServer.cxx:649
 TMySQLServer.cxx:650
 TMySQLServer.cxx:651
 TMySQLServer.cxx:652
 TMySQLServer.cxx:653
 TMySQLServer.cxx:654
 TMySQLServer.cxx:655
 TMySQLServer.cxx:656
 TMySQLServer.cxx:657
 TMySQLServer.cxx:658
 TMySQLServer.cxx:659
 TMySQLServer.cxx:660
 TMySQLServer.cxx:661
 TMySQLServer.cxx:662
 TMySQLServer.cxx:663
 TMySQLServer.cxx:664
 TMySQLServer.cxx:665
 TMySQLServer.cxx:666
 TMySQLServer.cxx:667
 TMySQLServer.cxx:668
 TMySQLServer.cxx:669
 TMySQLServer.cxx:670
 TMySQLServer.cxx:671
 TMySQLServer.cxx:672
 TMySQLServer.cxx:673
 TMySQLServer.cxx:674
 TMySQLServer.cxx:675
 TMySQLServer.cxx:676
 TMySQLServer.cxx:677
 TMySQLServer.cxx:678
 TMySQLServer.cxx:679
 TMySQLServer.cxx:680
 TMySQLServer.cxx:681
 TMySQLServer.cxx:682
 TMySQLServer.cxx:683
 TMySQLServer.cxx:684
 TMySQLServer.cxx:685
 TMySQLServer.cxx:686
 TMySQLServer.cxx:687
 TMySQLServer.cxx:688
 TMySQLServer.cxx:689
 TMySQLServer.cxx:690
 TMySQLServer.cxx:691
 TMySQLServer.cxx:692
 TMySQLServer.cxx:693
 TMySQLServer.cxx:694
 TMySQLServer.cxx:695
 TMySQLServer.cxx:696
 TMySQLServer.cxx:697
 TMySQLServer.cxx:698
 TMySQLServer.cxx:699
 TMySQLServer.cxx:700
 TMySQLServer.cxx:701
 TMySQLServer.cxx:702
 TMySQLServer.cxx:703
 TMySQLServer.cxx:704
 TMySQLServer.cxx:705
 TMySQLServer.cxx:706
 TMySQLServer.cxx:707
 TMySQLServer.cxx:708
 TMySQLServer.cxx:709
 TMySQLServer.cxx:710
 TMySQLServer.cxx:711
 TMySQLServer.cxx:712
 TMySQLServer.cxx:713
 TMySQLServer.cxx:714
 TMySQLServer.cxx:715
 TMySQLServer.cxx:716
 TMySQLServer.cxx:717
 TMySQLServer.cxx:718
 TMySQLServer.cxx:719
 TMySQLServer.cxx:720
 TMySQLServer.cxx:721
 TMySQLServer.cxx:722
 TMySQLServer.cxx:723
 TMySQLServer.cxx:724
 TMySQLServer.cxx:725
 TMySQLServer.cxx:726
 TMySQLServer.cxx:727
 TMySQLServer.cxx:728
 TMySQLServer.cxx:729
 TMySQLServer.cxx:730
 TMySQLServer.cxx:731
 TMySQLServer.cxx:732
 TMySQLServer.cxx:733
 TMySQLServer.cxx:734
 TMySQLServer.cxx:735
 TMySQLServer.cxx:736
 TMySQLServer.cxx:737
 TMySQLServer.cxx:738
 TMySQLServer.cxx:739
 TMySQLServer.cxx:740
 TMySQLServer.cxx:741
 TMySQLServer.cxx:742
 TMySQLServer.cxx:743
 TMySQLServer.cxx:744
 TMySQLServer.cxx:745
 TMySQLServer.cxx:746
 TMySQLServer.cxx:747
 TMySQLServer.cxx:748
 TMySQLServer.cxx:749
 TMySQLServer.cxx:750
 TMySQLServer.cxx:751
 TMySQLServer.cxx:752
 TMySQLServer.cxx:753
 TMySQLServer.cxx:754
 TMySQLServer.cxx:755
 TMySQLServer.cxx:756
 TMySQLServer.cxx:757
 TMySQLServer.cxx:758
 TMySQLServer.cxx:759
 TMySQLServer.cxx:760
 TMySQLServer.cxx:761
 TMySQLServer.cxx:762
 TMySQLServer.cxx:763
 TMySQLServer.cxx:764
 TMySQLServer.cxx:765
 TMySQLServer.cxx:766
 TMySQLServer.cxx:767
 TMySQLServer.cxx:768
 TMySQLServer.cxx:769
 TMySQLServer.cxx:770
 TMySQLServer.cxx:771
 TMySQLServer.cxx:772
 TMySQLServer.cxx:773
 TMySQLServer.cxx:774
 TMySQLServer.cxx:775
 TMySQLServer.cxx:776
 TMySQLServer.cxx:777
 TMySQLServer.cxx:778
 TMySQLServer.cxx:779
 TMySQLServer.cxx:780
 TMySQLServer.cxx:781
 TMySQLServer.cxx:782
 TMySQLServer.cxx:783
 TMySQLServer.cxx:784
 TMySQLServer.cxx:785
 TMySQLServer.cxx:786
 TMySQLServer.cxx:787
 TMySQLServer.cxx:788
 TMySQLServer.cxx:789
 TMySQLServer.cxx:790
 TMySQLServer.cxx:791
 TMySQLServer.cxx:792
 TMySQLServer.cxx:793
 TMySQLServer.cxx:794
 TMySQLServer.cxx:795
 TMySQLServer.cxx:796
 TMySQLServer.cxx:797
 TMySQLServer.cxx:798
 TMySQLServer.cxx:799
 TMySQLServer.cxx:800
 TMySQLServer.cxx:801
 TMySQLServer.cxx:802
 TMySQLServer.cxx:803
 TMySQLServer.cxx:804
 TMySQLServer.cxx:805
 TMySQLServer.cxx:806
 TMySQLServer.cxx:807
 TMySQLServer.cxx:808
 TMySQLServer.cxx:809
 TMySQLServer.cxx:810
 TMySQLServer.cxx:811
 TMySQLServer.cxx:812
 TMySQLServer.cxx:813
 TMySQLServer.cxx:814
 TMySQLServer.cxx:815
 TMySQLServer.cxx:816
 TMySQLServer.cxx:817
 TMySQLServer.cxx:818
 TMySQLServer.cxx:819
 TMySQLServer.cxx:820
 TMySQLServer.cxx:821
 TMySQLServer.cxx:822