From c6bbac726769e0b601b46def0435cac9f3cef5cc Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Thu, 31 May 2018 18:31:56 +0000 Subject: [PATCH] 2018-05-31 Fred Gleason * Cleaned up SQL errors in rdadmin(1). --- ChangeLog | 2 ++ lib/rdapplication.cpp | 19 +++++++++++++++++++ lib/rdapplication.h | 1 + lib/rddb.cpp | 2 ++ lib/rddb.h | 3 +-- lib/rdsvc.cpp | 9 +++------ 6 files changed, 28 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index bd6b318f..cc5dbba3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16998,3 +16998,5 @@ 2018-05-31 Fred Gleason * Fixed a regression in rdcatchd(8) that caused Upload events to be generated with the incorrect sample rate. +2018-05-31 Fred Gleason + * Cleaned up SQL errors in rdadmin(1). diff --git a/lib/rdapplication.cpp b/lib/rdapplication.cpp index 2dedc0a0..de0e12ea 100644 --- a/lib/rdapplication.cpp +++ b/lib/rdapplication.cpp @@ -225,6 +225,25 @@ void RDApplication::log(RDConfig::LogPriority prio,const QString &msg) } +bool RDApplication::dropTable(const QString &tbl_name) +{ + bool ret=false; + + QString sql=QString("show tables where ")+ + "Tables_in_"+config()->mysqlDbname()+"=\""+tbl_name+"\""; + RDSqlQuery *q=new RDSqlQuery(sql); + if(q->first()) { + sql=QString("drop table `")+tbl_name+"`"; + RDSqlQuery *q1=new RDSqlQuery(sql); + delete q1; + ret=true; + } + delete q; + + return ret; +} + + void RDApplication::userChangedData() { app_user->setName(app_ripc->user()); diff --git a/lib/rdapplication.h b/lib/rdapplication.h index f98a6e85..2ee236e9 100644 --- a/lib/rdapplication.h +++ b/lib/rdapplication.h @@ -56,6 +56,7 @@ class RDApplication : public QObject RDSystem *system(); RDUser *user(); void log(RDConfig::LogPriority prio,const QString &msg); + bool dropTable(const QString &tbl_name); private slots: void userChangedData(); diff --git a/lib/rddb.cpp b/lib/rddb.cpp index 594eaa7b..561d52d2 100644 --- a/lib/rddb.cpp +++ b/lib/rddb.cpp @@ -118,6 +118,8 @@ RDSqlQuery::RDSqlQuery(const QString &query,bool reconnect): } } } + + void RDSqlDatabaseStatus::sendRecon() { if (discon){ diff --git a/lib/rddb.h b/lib/rddb.h index fe9e8e26..d03db1aa 100644 --- a/lib/rddb.h +++ b/lib/rddb.h @@ -48,8 +48,7 @@ class RDSqlDatabaseStatus : public QObject class RDSqlQuery : public QSqlQuery { public: - // RDSqlQuery(const QString &query=QString::null, QSqlDatabase * db = 0 ); - RDSqlQuery(const QString &query=QString::null,bool reconnect=true); + RDSqlQuery(const QString &query=QString::null,bool reconnect=true); }; // Setup the default database, returns true on success. diff --git a/lib/rdsvc.cpp b/lib/rdsvc.cpp index ce4f2782..b5312b86 100644 --- a/lib/rdsvc.cpp +++ b/lib/rdsvc.cpp @@ -20,6 +20,7 @@ #include +#include #include #include #include @@ -1464,13 +1465,9 @@ void RDSvc::remove(const QString &name) QString tablename=name; tablename.replace(" ","_"); - sql=QString().sprintf("drop table `%s_SRT`",(const char *)tablename); - q=new RDSqlQuery(sql); - delete q; - sql=QString().sprintf("drop table `%s_STACK`",(const char *)tablename); - q=new RDSqlQuery(sql); - delete q; + rda->dropTable(tablename+"_SRT"); + rda->dropTable(tablename+"_STACK"); sql=QString("delete from LOGS where ")+ "SERVICE=\""+RDEscapeString(name)+"\"";