2022-02-21 Fred Gleason <fredg@paravelsystems.com>

* Added a '--print-progress' switch to rddbmgr(8).

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2022-02-21 17:57:39 -05:00
parent a59712a5bf
commit bc5c4de9db
5 changed files with 66 additions and 4 deletions

View File

@ -20836,3 +20836,5 @@
2022-02-12 Fred Gleason <fredg@paravelsystems.com>
* Rewrote the 'Cart Data Dump (CSV)' report in rdlibrary(1) to
use the CSV generation routines in 'lib/rdcsv.[cpp|h]'.
2022-02-21 Fred Gleason <fredg@paravelsystems.com>
* Added a '--print-progress' switch to rddbmgr(8).

View File

@ -151,6 +151,18 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>--print-progress</option>
</term>
<listitem>
<para>
Print a message to standard error giving current and elapsed
time whenever the database schema version is altered. Useful only
for debugging.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>

View File

@ -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)) {
@ -379,8 +383,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 [%d 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().sprintf("DB=%d",ver);
RDSqlQuery::apply(sql);

View File

@ -124,7 +124,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;
@ -152,6 +152,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;
};

View File

@ -2,7 +2,7 @@
//
// Update Rivendell DB schema.
//
// (C) Copyright 2018-2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2018-2022 Fred Gleason <fredg@paravelsystems.com>
//
// 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
@ -38,6 +38,14 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
RDCart *cart;
bool length_update_required=false;
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
@ -10443,8 +10451,9 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
}
if((cur_schema<347)&&(set_schema>cur_schema)) {
// Set a default value so the "alter" operation succeeds
sql=QString("alter table STACK_LINES add column ")+
"TITLE varchar(191) not null after ARTIST";
"TITLE varchar(191) not null default '' after ARTIST";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
@ -10453,6 +10462,13 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
return false;
}
// Remove the default attribute
sql=QString("alter table STACK_LINES alter column ")+
"TITLE varchar(191) not null";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
WriteSchemaVersion(++cur_schema);
}
@ -10475,6 +10491,15 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
sql=QString().sprintf("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 [%d 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();
@ -10484,6 +10509,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 [%d secs]\n",
now.toString("yyyy-MM-dd hh:mm:ss").toUtf8().constData(),
db_start_datetime.secsTo(now));
db_start_datetime=now;
}
return true;
}