mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-31 08:02:43 +02:00
2018-07-17 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in rddgmgr(8) that would cause an abort if a '_STACK' table was found missing when updating to schema 293.
This commit is contained in:
parent
3c9e8ccb9b
commit
7e9aa59c94
@ -17133,3 +17133,6 @@
|
||||
2018-07-16 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Cleaned up SQL quieries in 'rdcatch/' ensure UTF-8
|
||||
compatibility.
|
||||
2018-07-17 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed a bug in rddgmgr(8) that would cause an abort if a '_STACK'
|
||||
table was found missing when updating to schema 293.
|
||||
|
@ -371,6 +371,22 @@ void MainObject::WriteSchemaVersion(int ver) const
|
||||
}
|
||||
|
||||
|
||||
bool MainObject::TableExists(const QString &tbl_name) const
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
bool ret=false;
|
||||
|
||||
sql=QString("show tables where ")+
|
||||
"Tables_in_"+db_config->mysqlDbname()+"=\""+RDEscapeString(tbl_name)+"\"";
|
||||
q=new RDSqlQuery(sql,false);
|
||||
ret=q->first();
|
||||
delete q;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
bool MainObject::DropTable(const QString &tbl_name,QString *err_msg) const
|
||||
{
|
||||
QString sql;
|
||||
|
@ -113,6 +113,7 @@ class MainObject : public QObject
|
||||
bool PrintStatus(QString *err_msg) const;
|
||||
|
||||
void WriteSchemaVersion(int ver) const;
|
||||
bool TableExists(const QString &tbl_name) const;
|
||||
bool DropTable(const QString &tbl_name,QString *err_msg=NULL) const;
|
||||
Command db_command;
|
||||
QString db_mysql_hostname;
|
||||
|
@ -7742,40 +7742,43 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg) co
|
||||
while(q->next()) {
|
||||
QString tablename=q->value(0).toString()+"_STACK";
|
||||
tablename.replace(" ","_");
|
||||
//
|
||||
// 9/14/1752 is the earliest valid QDate
|
||||
//
|
||||
sql=QString("update `")+tablename+"` set "+
|
||||
"SCHEDULED_AT=\"1752-09-14 00:00:00\" where "+
|
||||
"SCHEDULED_AT<\"1752-09-14 00:00:00\"";
|
||||
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||
return false;
|
||||
}
|
||||
sql=QString("select ")+
|
||||
"SCHED_STACK_ID,"+ // 00
|
||||
"CART,"+ // 01
|
||||
"ARTIST,"+ // 02
|
||||
"SCHED_CODES,"+ // 03
|
||||
"SCHEDULED_AT "+ // 04
|
||||
"from `"+tablename+"` "+
|
||||
"order by SCHEDULED_AT";
|
||||
q1=new RDSqlQuery(sql,false);
|
||||
while(q1->next()) {
|
||||
sql=QString("insert into STACK_LINES set ")+
|
||||
"SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\","+
|
||||
QString().sprintf("SCHED_STACK_ID=%u,",q1->value(0).toUInt())+
|
||||
QString().sprintf("CART=%u,",q1->value(1).toUInt())+
|
||||
"ARTIST=\""+RDEscapeString(q1->value(2).toString())+"\","+
|
||||
"SCHED_CODES=\""+RDEscapeString(q1->value(3).toString())+"\","+
|
||||
"SCHEDULED_AT=\""+RDEscapeString(q1->value(4).toDateTime().
|
||||
toString("yyyy-MM-dd hh:mm:ss"))+"\"";
|
||||
|
||||
if(TableExists(tablename)) {
|
||||
//
|
||||
// 9/14/1752 is the earliest valid QDate
|
||||
//
|
||||
sql=QString("update `")+tablename+"` set "+
|
||||
"SCHEDULED_AT=\"1752-09-14 00:00:00\" where "+
|
||||
"SCHEDULED_AT<\"1752-09-14 00:00:00\"";
|
||||
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
delete q1;
|
||||
if(!DropTable(tablename,err_msg)) {
|
||||
return false;
|
||||
sql=QString("select ")+
|
||||
"SCHED_STACK_ID,"+ // 00
|
||||
"CART,"+ // 01
|
||||
"ARTIST,"+ // 02
|
||||
"SCHED_CODES,"+ // 03
|
||||
"SCHEDULED_AT "+ // 04
|
||||
"from `"+tablename+"` "+
|
||||
"order by SCHEDULED_AT";
|
||||
q1=new RDSqlQuery(sql,false);
|
||||
while(q1->next()) {
|
||||
sql=QString("insert into STACK_LINES set ")+
|
||||
"SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\","+
|
||||
QString().sprintf("SCHED_STACK_ID=%u,",q1->value(0).toUInt())+
|
||||
QString().sprintf("CART=%u,",q1->value(1).toUInt())+
|
||||
"ARTIST=\""+RDEscapeString(q1->value(2).toString())+"\","+
|
||||
"SCHED_CODES=\""+RDEscapeString(q1->value(3).toString())+"\","+
|
||||
"SCHEDULED_AT=\""+RDEscapeString(q1->value(4).toDateTime().
|
||||
toString("yyyy-MM-dd hh:mm:ss"))+"\"";
|
||||
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
delete q1;
|
||||
if(!DropTable(tablename,err_msg)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
delete q;
|
||||
|
Loading…
x
Reference in New Issue
Block a user