From a2f8ddd9bca302651617abc6855eb0ef20d136d9 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 22 Feb 2022 08:44:22 -0500 Subject: [PATCH] 2022-02-22 Fred Gleason * Added a '--print-progress' switch to rddbmgr(8). Signed-off-by: Fred Gleason --- ChangeLog | 2 ++ docs/manpages/rddbmgr.xml | 12 ++++++++++++ utils/rddbmgr/rddbmgr.cpp | 16 ++++++++++++++-- utils/rddbmgr/rddbmgr.h | 5 +++-- utils/rddbmgr/updateschema.cpp | 31 +++++++++++++++++++++++++++++-- 5 files changed, 60 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 49ac09fb..4b138a20 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22887,3 +22887,5 @@ 2022-02-12 Fred Gleason * Rewrote the 'Cart Data Dump (CSV)' report in rdlibrary(1) to use the CSV generation routines in 'lib/rdcsv.[cpp|h]'. +2022-02-22 Fred Gleason + * Added a '--print-progress' switch to rddbmgr(8). diff --git a/docs/manpages/rddbmgr.xml b/docs/manpages/rddbmgr.xml index c39fab15..200d284b 100644 --- a/docs/manpages/rddbmgr.xml +++ b/docs/manpages/rddbmgr.xml @@ -151,6 +151,18 @@ + + + + + + + Print a message to standard error giving current and elapsed + time whenever the database schema version is altered. Useful only + for debugging. + + + diff --git a/utils/rddbmgr/rddbmgr.cpp b/utils/rddbmgr/rddbmgr.cpp index 4c08cbcf..4f61cbc0 100644 --- a/utils/rddbmgr/rddbmgr.cpp +++ b/utils/rddbmgr/rddbmgr.cpp @@ -2,7 +2,7 @@ // // Rivendell database management utility // -// (C) Copyright 2018-2021 Fred Gleason +// (C) Copyright 2018-2022 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -146,6 +146,10 @@ MainObject::MainObject(QObject *parent) db_mysql_engine=cmd->value(i); cmd->setProcessed(i,true); } + if(cmd->key(i)=="--print-progress") { + db_start_datetime=QDateTime::currentDateTime(); + cmd->setProcessed(i,true); + } if(cmd->key(i)=="--set-schema") { set_schema=cmd->value(i).toInt(&ok); if((!ok)||(set_schema<=0)) { @@ -384,8 +388,16 @@ MainObject::MainObject(QObject *parent) } -void MainObject::WriteSchemaVersion(int ver) const +void MainObject::WriteSchemaVersion(int ver) { + if(!db_start_datetime.isNull()) { + QDateTime now=QDateTime::currentDateTime(); + fprintf(stderr,"%s : setting schema version %d [%lld secs]\n", + now.toString("yyyy-MM-dd hh:mm:ss").toUtf8().constData(), + ver, + db_start_datetime.secsTo(now)); + db_start_datetime=now; + } QString sql=QString("update `VERSION` set ")+ QString::asprintf("`DB`=%d",ver); RDSqlQuery::apply(sql); diff --git a/utils/rddbmgr/rddbmgr.h b/utils/rddbmgr/rddbmgr.h index 10985c02..e32af1bd 100644 --- a/utils/rddbmgr/rddbmgr.h +++ b/utils/rddbmgr/rddbmgr.h @@ -2,7 +2,7 @@ // // Rivendell database management utility // -// (C) Copyright 2018-2021 Fred Gleason +// (C) Copyright 2018-2022 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -131,7 +131,7 @@ class MainObject : public QObject // bool PrintStatus(QString *err_msg) const; - void WriteSchemaVersion(int ver) const; + void WriteSchemaVersion(int ver); bool TableExists(const QString &tbl_name) const; bool DropTable(const QString &tbl_name,QString *err_msg=NULL) const; bool ColumnExists(const QString &tbl_name,const QString &col_name) const; @@ -160,6 +160,7 @@ class MainObject : public QObject QString db_rehash; QString db_relink_audio; bool db_relink_audio_move; + QDateTime db_start_datetime; QString db_table_create_postfix; RDConfig *db_config; }; diff --git a/utils/rddbmgr/updateschema.cpp b/utils/rddbmgr/updateschema.cpp index cc4e4b62..328ae80c 100644 --- a/utils/rddbmgr/updateschema.cpp +++ b/utils/rddbmgr/updateschema.cpp @@ -2,7 +2,7 @@ // // Update Rivendell DB schema. // -// (C) Copyright 2018-2021 Fred Gleason +// (C) Copyright 2018-2022 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -36,7 +36,15 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg) RDCart *cart; bool length_update_required=false; - if((cur_schema<3)&&(set_schema>=3)) { + if(!db_start_datetime.isNull()) { + QDateTime now=QDateTime::currentDateTime(); + fprintf(stderr, + "%s : starting\n", + now.toString("yyyy-MM-dd hh:mm:ss").toUtf8().constData()); + db_start_datetime=now; + } + + if((cur_schema<3)&&(set_schema>=3)) { // // Create RDAIRPLAY Table // @@ -10978,6 +10986,15 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg) sql=QString::asprintf("select `NUMBER` from `CART` where `TYPE`=%u", RDCart::Audio); q=new RDSqlQuery(sql,false); + if(!db_start_datetime.isNull()) { + QDateTime now=QDateTime::currentDateTime(); + fprintf(stderr, + "%s : beginning cart length updates, %d carts to process [%lld secs]\n", + now.toString("yyyy-MM-dd hh:mm:ss").toUtf8().constData(), + q->size(), + db_start_datetime.secsTo(now)); + db_start_datetime=now; + } while(q->next()) { cart=new RDCart(q->value(0).toUInt()); cart->updateLength(); @@ -10987,6 +11004,16 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg) } *err_msg="ok"; + + if(!db_start_datetime.isNull()) { + QDateTime now=QDateTime::currentDateTime(); + fprintf(stderr, + "%s : finished [%lld secs]\n", + now.toString("yyyy-MM-dd hh:mm:ss").toUtf8().constData(), + db_start_datetime.secsTo(now)); + db_start_datetime=now; + } + return true; }