From 0120221326b252835c02c7dabc7aed1d7929d744 Mon Sep 17 00:00:00 2001 From: Patrick Linstruth Date: Wed, 30 May 2018 13:59:12 -0700 Subject: [PATCH 1/2] Implemented purging of STACK_* tables --- ChangeLog | 3 +++ utils/rdmaint/rdmaint.cpp | 54 +++++++++++++++++++++++++++++++++++++++ utils/rdmaint/rdmaint.h | 1 + 3 files changed, 58 insertions(+) diff --git a/ChangeLog b/ChangeLog index f90e2c99..c303a192 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16965,3 +16965,6 @@ the STACK". 2018-05-30 Fred Gleason * Implemented '%v/%V' metadata wildcards for event length (seconds). +2018-05-30 Patrick Linstruth + * Implemented purging of STACK_* tables for RDMaint(1) in + 'utils/rdmaint/rdmaint.cpp' and 'utils/rdmaint/rdmaint.h'. diff --git a/utils/rdmaint/rdmaint.cpp b/utils/rdmaint/rdmaint.cpp index ebe1ed03..68de4ec7 100644 --- a/utils/rdmaint/rdmaint.cpp +++ b/utils/rdmaint/rdmaint.cpp @@ -127,6 +127,7 @@ void MainObject::RunSystemMaintenance() PurgeElr(); PurgeGpioEvents(); PurgeWebapiAuths(); + PurgeStacks(); RehashCuts(); } @@ -286,6 +287,59 @@ void MainObject::PurgeWebapiAuths() } +void MainObject::PurgeStacks() +{ + QString sql; + RDSqlQuery *q; + RDSqlQuery *q1; + RDSqlQuery *q2; + int stackid; + int stacksize; + int artistsep=50000; + int titlesep=50000; + + sql="select MAX(ARTISTSEP) from CLOCKS"; + q=new RDSqlQuery(sql); + if(q->next()) { + artistsep=q->value(0).toInt(); + } + delete q; + + sql="select MAX(TITLE_SEP) from EVENTS"; + q=new RDSqlQuery(sql); + if(q->next()) { + titlesep=q->value(0).toInt(); + } + delete q; + + stacksize=(artistsepnext()) { + QString tablename=q->value(0).toString()+"_STACK"; + tablename.replace(" ","_"); + sql=QString().sprintf("SELECT MAX(SCHED_STACK_ID) from %s",(const char*)tablename); + q1=new RDSqlQuery(sql); + if (q1->next()) + { + stackid=q1->value(0).toUInt(); + if (stackid-stacksize > 0) { + sql=QString().sprintf("DELETE from `%s` where SCHED_STACK_ID <= %d", (const char*)tablename, stackid-stacksize); + q2=new RDSqlQuery(sql); + delete q2; + + sql=QString().sprintf("UPDATE `%s` SET SCHED_STACK_ID=SCHED_STACK_ID-%d", (const char*)tablename, stacksize-1); + q2=new RDSqlQuery(sql); + delete q2; + } + } + delete q1; + } + delete q; +} + + void MainObject::RehashCuts() { QString sql; diff --git a/utils/rdmaint/rdmaint.h b/utils/rdmaint/rdmaint.h index c75f939c..4ef8c7cf 100644 --- a/utils/rdmaint/rdmaint.h +++ b/utils/rdmaint/rdmaint.h @@ -39,6 +39,7 @@ class MainObject : public QObject void PurgeDropboxes(); void PurgeGpioEvents(); void PurgeWebapiAuths(); + void PurgeStacks(); void RehashCuts(); bool maint_verbose; bool maint_system; From 60b397a981abbb0347be502c4a1937d1e22fc3df Mon Sep 17 00:00:00 2001 From: Patrick Linstruth Date: Wed, 30 May 2018 14:33:07 -0700 Subject: [PATCH 2/2] Update --- utils/rdmaint/rdmaint.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/rdmaint/rdmaint.cpp b/utils/rdmaint/rdmaint.cpp index 68de4ec7..8ce157ac 100644 --- a/utils/rdmaint/rdmaint.cpp +++ b/utils/rdmaint/rdmaint.cpp @@ -329,7 +329,7 @@ void MainObject::PurgeStacks() q2=new RDSqlQuery(sql); delete q2; - sql=QString().sprintf("UPDATE `%s` SET SCHED_STACK_ID=SCHED_STACK_ID-%d", (const char*)tablename, stacksize-1); + sql=QString().sprintf("UPDATE `%s` SET SCHED_STACK_ID=SCHED_STACK_ID-%d", (const char*)tablename, stackid-stacksize); q2=new RDSqlQuery(sql); delete q2; }