2018-11-16 Fred Gleason <fredg@paravelsystems.com>

* Refactored schema modification routines in rddbmgr(8) to check
	for existence of a field before dropping it.
This commit is contained in:
Fred Gleason 2018-11-16 09:17:11 -05:00
parent fa7918d158
commit c1ba5c92a9
5 changed files with 426 additions and 726 deletions

View File

@ -18015,3 +18015,6 @@
2018-11-15 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in rdadmin(1) that prevented login from a system with
no host record in the database.
2018-11-16 Fred Gleason <fredg@paravelsystems.com>
* Refactored schema modification routines in rddbmgr(8) to check
for existence of a field before dropping it.

View File

@ -400,6 +400,40 @@ bool MainObject::DropTable(const QString &tbl_name,QString *err_msg) const
}
bool MainObject::ColumnExists(const QString &tbl_name,
const QString &col_name) const
{
QString sql;
RDSqlQuery *q;
bool ret=false;
sql=QString("select * from INFORMATION_SCHEMA.COLUMNS where ")+
"TABLE_SCHEMA=\""+db_config->mysqlDbname()+"\" && "+
"TABLE_NAME=\""+tbl_name+"\" && "+
"COLUMN_NAME=\""+col_name+"\"";
q=new RDSqlQuery(sql,false);
ret=q->first();
delete q;
return ret;
}
bool MainObject::DropColumn(const QString &tbl_name,const QString &col_name,
QString *err_msg) const
{
QString sql;
bool ret=false;
if(ColumnExists(tbl_name,col_name)) {
sql=QString("alter table `")+tbl_name+"` drop column "+col_name;
ret=RDSqlQuery::apply(sql,err_msg);
}
return ret;
}
int main(int argc,char *argv[])
{
QApplication a(argc,argv,false);

View File

@ -114,6 +114,9 @@ class MainObject : public QObject
void WriteSchemaVersion(int ver) const;
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;
bool DropColumn(const QString &tbl_name,const QString &col_name,
QString *err_msg=NULL) const;
Command db_command;
QString db_mysql_hostname;
QString db_mysql_loginname;

View File

@ -2560,10 +2560,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 287
//
if((cur_schema==287)&&(set_schema<cur_schema)) {
sql=QString("alter table STATIONS drop column JACK_PORTS");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("STATIONS","JACK_PORTS");
WriteSchemaVersion(--cur_schema);
}
@ -2945,10 +2942,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
}
}
delete q;
sql=QString("alter table AUDIO_CARDS drop column CLOCK_SOURCE");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("AUDIO_CARDS","CLOCK_SOURCE");
WriteSchemaVersion(--cur_schema);
}
@ -2994,10 +2988,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 281
//
if((cur_schema==281)&&(set_schema<cur_schema)) {
sql=QString("alter table RDAIRPLAY drop column VIRTUAL_EXIT_CODE");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("RDAIRPLAY","VIRTUAL_EXIT_CODE");
WriteSchemaVersion(--cur_schema);
}
@ -3184,10 +3175,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 277
//
if((cur_schema==277)&&(set_schema<cur_schema)) {
sql=QString("alter table USERS drop column WEBGET_LOGIN_PRIV");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("USERS","WEBGET_LOGIN_PRIV");
WriteSchemaVersion(--cur_schema);
}
@ -3196,10 +3184,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 276
//
if((cur_schema==276)&&(set_schema<cur_schema)) {
sql=QString("alter table SYSTEM drop column NOTIFICATION_ADDRESS");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("SYSTEM","NOTIFICATION_ADDRESS");
WriteSchemaVersion(--cur_schema);
}
@ -3208,10 +3193,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 275
//
if((cur_schema==275)&&(set_schema<cur_schema)) {
sql=QString("alter table SERVICES drop column LOG_SHELFLIFE_ORIGIN");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("SERVICES","LOG_SHELFLIFE_ORIGIN");
WriteSchemaVersion(--cur_schema);
}
@ -3224,11 +3206,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table LOGS drop column LOCK_GUID");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("LOGS","LOCK_GUID");
WriteSchemaVersion(--cur_schema);
}
@ -3237,25 +3215,10 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 273
//
if((cur_schema==273)&&(set_schema<cur_schema)) {
sql=QString("alter table LOGS drop column LOCK_DATETIME");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table LOGS drop column LOCK_IPV4_ADDRESS");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table LOGS drop column LOCK_STATION_NAME");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table LOGS drop column LOCK_USER_NAME");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("LOGS","LOCK_DATETIME");
DropColumn("LOGS","LOCK_IPV4_ADDRESS");
DropColumn("LOGS","LOCK_STATION_NAME");
DropColumn("LOGS","LOCK_USER_NAME");
WriteSchemaVersion(--cur_schema);
}
@ -3275,11 +3238,8 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 271
//
if((cur_schema==271)&&(set_schema<cur_schema)) {
sql=QString("alter table DROPBOXES drop column SEGUE_LEVEL, ")+
"drop column SEGUE_LENGTH";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("DROPBOXES","SEGUE_LEVEL");
DropColumn("DROPBOXES","SEGUE_LENGTH");
WriteSchemaVersion(--cur_schema);
}
@ -3288,10 +3248,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 270
//
if((cur_schema==270)&&(set_schema<cur_schema)) {
sql="alter table STATIONS drop column SHORT_NAME";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("STATIONS","SHORT_NAME");
WriteSchemaVersion(--cur_schema);
}
@ -3300,10 +3257,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 269
//
if((cur_schema==269)&&(set_schema<cur_schema)) {
sql="alter table GROUPS drop column DEFAULT_CUT_LIFE";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("GROUPS","DEFAULT_CUT_LIFE");
WriteSchemaVersion(--cur_schema);
}
@ -3312,10 +3266,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 268
//
if((cur_schema==268)&&(set_schema<cur_schema)) {
sql="alter table DROPBOXES drop column FORCE_TO_MONO";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("DROPBOXES","FORCE_TO_MONO");
WriteSchemaVersion(--cur_schema);
}
@ -3324,15 +3275,8 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 267
//
if((cur_schema==267)&&(set_schema<cur_schema)) {
sql="alter table CUTS drop column ORIGIN_LOGIN_NAME";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql="alter table CUTS drop column SOURCE_HOSTNAME";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("CUTS","ORIGIN_LOGIN_NAME");
DropColumn("CUTS","SOURCE_HOSTNAME");
WriteSchemaVersion(--cur_schema);
}
@ -3350,10 +3294,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 265
//
if((cur_schema==265)&&(set_schema<cur_schema)) {
sql="alter table SYSTEM drop column SHOW_USER_LIST";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("SYSTEM","SHOW_USER_LIST");
WriteSchemaVersion(--cur_schema);
}
@ -3362,10 +3303,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 264
//
if((cur_schema==264)&&(set_schema<cur_schema)) {
sql="alter table SYSTEM drop column FIX_DUP_CART_TITLES";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("SYSTEM","FIX_DUP_CART_TITLES");
WriteSchemaVersion(--cur_schema);
}
@ -3383,15 +3321,8 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 262
//
if((cur_schema==262)&&(set_schema<cur_schema)) {
sql=QString("alter table USERS drop column LOCAL_AUTH");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table USERS drop column PAM_SERVICE");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("USERS","LOCAL_AUTH");
DropColumn("USERS","PAM_SERVICE");
sql=QString("drop index IPV4_ADDRESS_IDX on STATIONS");
if(!RDSqlQuery::apply(sql,err_msg)) {
@ -3405,10 +3336,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 261
//
if((cur_schema==261)&&(set_schema<cur_schema)) {
sql=QString("alter table CUTS drop column SHA1_HASH");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("CUTS","SHA1_HASH");
WriteSchemaVersion(--cur_schema);
}
@ -3417,11 +3345,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 260
//
if((cur_schema==260)&&(set_schema<cur_schema)) {
sql=QString("alter table USERS drop column WEBAPI_AUTH_TIMEOUT");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("USERS","WEBAPI_AUTH_TIMEOUT");
if(!DropTable("WEBAPI_AUTHS",err_msg)) {
return false;
}
@ -3532,15 +3456,8 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
while(q->next()) {
tablename=q->value(0).toString();
tablename.replace(" ","_");
sql=QString("alter table `")+tablename+"_SRT` drop column DESCRIPTION";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table `")+tablename+"_SRT` drop column OUTCUE";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn(tablename+"_SRT","DESCRIPTION");
DropColumn(tablename+"_SRT","OUTCUE");
}
delete q;
@ -3551,15 +3468,8 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 254
//
if((cur_schema==254)&&(set_schema<cur_schema)) {
sql=QString("alter table CUTS drop column PLAY_ORDER");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table CART drop column USE_WEIGHTING");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("CUTS","PLAY_ORDER");
DropColumn("CART","USE_WEIGHTING");
WriteSchemaVersion(--cur_schema);
}
@ -3640,10 +3550,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 245
//
if((cur_schema==245)&&(set_schema<cur_schema)) {
sql=QString("alter table RDLIBRARY drop column READ_ISRC");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("RDLIBRARY","READ_ISRC");
WriteSchemaVersion(--cur_schema);
}
@ -3665,10 +3572,7 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// Revert 243
//
if((cur_schema==243)&&(set_schema<cur_schema)) {
sql=QString("alter table STATIONS drop column HAVE_MP4_DECODE");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("STATIONS","HAVE_MP4_DECODE");
WriteSchemaVersion(--cur_schema);
}

View File

@ -152,55 +152,14 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column AUTO_CARD0");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
for(int i=0;i<2;i++) {
DropColumn("RDAIRPLAY",QString().sprintf("AUTO_CARD%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("AUTO_STREAM%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("AUTO_PORT%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("PANEL_CARD%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("PANEL_STREAM%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("PANEL_PORT%d",i));
}
sql=QString("alter table RDAIRPLAY drop column AUTO_CARD1");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column AUTO_STREAM0");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column AUTO_STREAM1");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column AUTO_PORT0");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column AUTO_PORT1");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column PANEL_CARD0");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column PANEL_CARD1");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column PANEL_STREAM0");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column PANEL_STREAM1");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column PANEL_PORT0");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column PANEL_PORT1");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
WriteSchemaVersion(++cur_schema);
}
@ -379,9 +338,7 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
}
if((cur_schema<15)&&(set_schema>cur_schema)) {
q=new RDSqlQuery("alter table PANELS drop column DEFAULT_COLOR",false);
delete q;
DropColumn("PANELS","DEFAULT_COLOR");
q=new RDSqlQuery("alter table PANELS add column DEFAULT_COLOR char(7)",
false);
delete q;
@ -514,10 +471,8 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
}
if((cur_schema<22)&&(set_schema>cur_schema)) {
q=new RDSqlQuery("alter table DECKS drop column SWITCH_TYPE",false);
delete q;
q=new RDSqlQuery("alter table DECKS drop column TTY_ID",false);
delete q;
DropColumn("DECKS","SWITCH_TYPE");
DropColumn("DECKS","TTY_ID");
q=new RDSqlQuery("alter table DECKS add column SWITCH_STATION char(64)",
false);
delete q;
@ -538,8 +493,7 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
}
if((cur_schema<23)&&(set_schema>cur_schema)) {
q=new RDSqlQuery("alter table RECORDINGS drop column SOURCE_NAME",false);
delete q;
DropColumn("RECORDINGS","SOURCE_NAME");
q=new
RDSqlQuery("alter table RECORDINGS add column SWITCH_INPUT int default -1",false);
delete q;
@ -2862,11 +2816,7 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table `")+tablename+"_LOG` drop column ORIGIN_NAME";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn(tablename+"_LOG","ORIGIN_NAME");
}
delete q;
@ -2897,16 +2847,8 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
return false;
}
sql=QString("alter table `")+tablename+"_PRE` "+
"drop column ORIGIN_NAME";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table `")+tablename+"_POST` "+
"drop column ORIGIN_NAME";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn(tablename+"_PRE","ORIGIN_NAME");
DropColumn(tablename+"_POST","ORIGIN_NAME");
}
delete q;
@ -4754,10 +4696,7 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
return false;
}
sql="alter table PANELS drop column SKIN_PATH";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("PANELS","SKIN_PATH");
WriteSchemaVersion(++cur_schema);
}
@ -5234,11 +5173,7 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
}
if((cur_schema<203)&&(set_schema>cur_schema)) {
sql=
"alter table REPLICATORS drop column NORMALIZATION_LEVEL";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("REPLICATORS","NORMALIZATION_LEVEL");
sql=
"alter table REPLICATORS add column NORMALIZATION_LEVEL int default 0 after ENABLE_METADATA";
if(!RDSqlQuery::apply(sql,err_msg)) {
@ -5627,52 +5562,24 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
//
// Clean Up RDAirPlay
//
sql="alter table RDAIRPLAY drop column INSTANCE";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("RDAIRPLAY","INSTANCE");
for(unsigned i=0;i<10;i++) {
sql=QString().sprintf("alter table RDAIRPLAY drop column CARD%u",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column PORT%u",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column START_RML%u",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column STOP_RML%u",i);
q=new RDSqlQuery(sql,false);
delete q;
DropColumn("RDAIRPLAY",QString().sprintf("CARD%u",i));
DropColumn("RDAIRPLAY",QString().sprintf("PORT%u",i));
DropColumn("RDAIRPLAY",QString().sprintf("START_RML%u",i));
DropColumn("RDAIRPLAY",QString().sprintf("STOP%u",i));
}
//
// Clean Up RDPanel
//
sql="alter table RDPANEL drop column INSTANCE";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("RDPANEL","INSTANCE");
for(unsigned i=0;i<10;i++) {
if((i==2)||(i==3)||(i==6)||(i==7)||(i==8)||(i==9)) {
sql=QString().sprintf("alter table RDPANEL drop column CARD%u",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDPANEL drop column PORT%u",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDPANEL drop column START_RML%u",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDPANEL drop column STOP_RML%u",i);
q=new RDSqlQuery(sql,false);
delete q;
DropColumn("RDPANEL",QString().sprintf("CARD%u",i));
DropColumn("RDPANEL",QString().sprintf("PORT%u",i));
DropColumn("RDPANEL",QString().sprintf("START_RML%u",i));
DropColumn("RDPANEL",QString().sprintf("STOP_RML%u",i));
}
}
@ -6314,9 +6221,7 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
delete q;
for(int i=0;i<168;i++) {
sql=QString().sprintf("alter table SERVICES drop column CLOCK%d",i);
q=new RDSqlQuery(sql,false);
delete q;
DropColumn("SERVICES",QString().sprintf("CLOCK%d",i));
}
WriteSchemaVersion(++cur_schema);
@ -6720,57 +6625,19 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
delete q;
for(int i=0;i<3;i++) {
sql=QString().sprintf("alter table RDAIRPLAY drop column UDP_ADDR%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column UDP_PORT%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column UDP_STRING%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column LOG_RML%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column LOG%d_START_MODE",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column LOG%d_AUTO_RESTART",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column LOG%d_LOG_NAME",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column LOG%d_CURRENT_LOG",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column LOG%d_RUNNING",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column LOG%d_LOG_ID",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column LOG%d_LOG_LINE",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column LOG%d_NOW_CART",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString().sprintf("alter table RDAIRPLAY drop column LOG%d_NEXT_CART",i);
q=new RDSqlQuery(sql,false);
delete q;
DropColumn("RDAIRPLAY",QString().sprintf("UDP_ADDR%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("UDP_PORT%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("UDP_STRING%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("LOG_RML%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("LOG%d_START_MODE",i));
DropColumn("RDAIRPLAY",QString().sprintf("LOG%d_AUTO_RESTART",i));
DropColumn("RDAIRPLAY",QString().sprintf("LOG%d_LOG_NAME",i));
DropColumn("RDAIRPLAY",QString().sprintf("LOG%d_CURRENT_LOG",i));
DropColumn("RDAIRPLAY",QString().sprintf("LOG%d_RUNNING",i));
DropColumn("RDAIRPLAY",QString().sprintf("LOG%d_LOG_ID",i));
DropColumn("RDAIRPLAY",QString().sprintf("LOG%d_LOG_LINE",i));
DropColumn("RDAIRPLAY",QString().sprintf("LOG%d_NOW_CART",i));
DropColumn("RDAIRPLAY",QString().sprintf("LOG%d_NEXT_CART",i));
}
WriteSchemaVersion(++cur_schema);
@ -6852,25 +6719,10 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
delete q;
for(int i=0;i<8;i++) {
sql=QString("alter table STATIONS drop column ")+
QString().sprintf("CARD%d_DRIVER",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table STATIONS drop column ")+
QString().sprintf("CARD%d_NAME",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table STATIONS drop column ")+
QString().sprintf("CARD%d_INPUTS",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table STATIONS drop column ")+
QString().sprintf("CARD%d_OUTPUTS",i);
q=new RDSqlQuery(sql,false);
delete q;
DropColumn("STATIONS",QString().sprintf("CARD%d_DRIVER",i));
DropColumn("STATIONS",QString().sprintf("CARD%d_NAME",i));
DropColumn("STATIONS",QString().sprintf("CARD%d_INPUTS",i));
DropColumn("STATIONS",QString().sprintf("CARD%d_OUTPUTS",i));
}
WriteSchemaVersion(++cur_schema);
@ -7009,85 +6861,26 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
if((cur_schema<284)&&(set_schema>cur_schema)) {
for(int i=0;i<10;i++) {
sql=QString("alter table RDAIRPLAY ")+
QString().sprintf("drop column CARD%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDAIRPLAY ")+
QString().sprintf("drop column PORT%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDAIRPLAY ")+
QString().sprintf("drop column START_RML%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDAIRPLAY ")+
QString().sprintf("drop column STOP_RML%d",i);
q=new RDSqlQuery(sql,false);
delete q;
DropColumn("RDAIRPLAY",QString().sprintf("CARD%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("PORT%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("START_RML%d",i));
DropColumn("RDAIRPLAY",QString().sprintf("STOP_RML%d",i));
}
sql=QString("alter table RDAIRPLAY drop column OP_MODE");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDAIRPLAY drop column START_MODE");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDPANEL drop column INSTANCE");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("RDAIRPLAY","OP_MODE");
DropColumn("RDAIRPLAY","START_MODE");
DropColumn("RDPANEL","INSTANCE");
for(int i=2;i<4;i++) {
sql=QString("alter table RDPANEL ")+
QString().sprintf("drop column CARD%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL ")+
QString().sprintf("drop column PORT%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL ")+
QString().sprintf("drop column START_RML%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL ")+
QString().sprintf("drop column STOP_RML%d",i);
q=new RDSqlQuery(sql,false);
delete q;
DropColumn("RDPANEL",QString().sprintf("CARD%d",i));
DropColumn("RDPANEL",QString().sprintf("PORT%d",i));
DropColumn("RDPANEL",QString().sprintf("START_RML%d",i));
DropColumn("RDPANEL",QString().sprintf("STOP_RML%d",i));
}
for(int i=6;i<10;i++) {
sql=QString("alter table RDPANEL ")+
QString().sprintf("drop column CARD%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL ")+
QString().sprintf("drop column PORT%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL ")+
QString().sprintf("drop column START_RML%d",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL ")+
QString().sprintf("drop column STOP_RML%d",i);
q=new RDSqlQuery(sql,false);
delete q;
DropColumn("RDPANEL",QString().sprintf("CARD%d",i));
DropColumn("RDPANEL",QString().sprintf("PORT%d",i));
DropColumn("RDPANEL",QString().sprintf("START_RML%d",i));
DropColumn("RDPANEL",QString().sprintf("STOP_RML%d",i));
}
sql=QString("alter table MATRICES alter column PORT set default 0");
@ -7129,94 +6922,28 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
}
if((cur_schema<285)&&(set_schema>cur_schema)) {
sql=QString("alter table CART drop column ISRC");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table DECKS drop column DEFAULT_SAMPRATE");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDLIBRARY drop column INPUT_STREAM");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDLIBRARY drop column OUTPUT_STREAM");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDLIBRARY drop column RECORD_GPI");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDLIBRARY drop column PLAY_GPI");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDLIBRARY drop column STOP_GPI");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDLIBRARY drop column DEFAULT_SAMPRATE");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table RDLOGEDIT drop column SAMPRATE");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table SERVICES drop column TFC_START_OFFSET");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table SERVICES drop column TFC_START_LENGTH");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table SERVICES drop column MUS_START_OFFSET");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table SERVICES drop column MUS_START_LENGTH");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("CART","ISRC");
DropColumn("DECKS","DEFAULT_SAMPRATE");
DropColumn("RDLIBRARY","INPUT_STREAM");
DropColumn("RDLIBRARY","OUTPUT_STREAM");
DropColumn("RDLIBRARY","RECORD_GPI");
DropColumn("RDLIBRARY","PLAY_GPI");
DropColumn("RDLIBRARY","STOP_GPI");
DropColumn("RDLIBRARY","DEFAULT_SAMPRATE");
DropColumn("RDLOGEDIT","SAMPRATE");
DropColumn("SERVICES","TFC_START_OFFSET");
DropColumn("SERVICES","TFC_START_LENGTH");
DropColumn("SERVICES","MUS_START_OFFSET");
DropColumn("SERVICES","MUS_START_LENGTH");
WriteSchemaVersion(++cur_schema);
}
if((cur_schema<286)&&(set_schema>cur_schema)) {
sql=QString("alter table SERVICES drop column TFC_LENGTH_OFFSET");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table SERVICES drop column TFC_LENGTH_LENGTH");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table SERVICES drop column MUS_LENGTH_OFFSET");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table SERVICES drop column MUS_LENGTH_LENGTH");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("SERVICES","TFC_LENGTH_OFFSET");
DropColumn("SERVICES","TFC_LENGTH_LENGTH");
DropColumn("SERVICES","MUS_LENGTH_OFFSET");
DropColumn("SERVICES","MUS_LENGTH_LENGTH");
WriteSchemaVersion(++cur_schema);
}
@ -7288,6 +7015,11 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
while(q->next()) {
QString tablename=q->value(0).toString()+"_LOG";
tablename.replace(" ","_");
if(!TableExists(tablename)) {
fprintf(stderr,"rddbmgr: missing LOG table for log \"%s\"\n",
(const char *)q->value(0).toString().toUtf8());
}
else {
sql=QString("select ")+
"ID,"+ // 00
"COUNT,"+ // 01
@ -7382,6 +7114,7 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
return false;
}
}
}
delete q;
//
@ -7578,6 +7311,11 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
//
QString tablename=q->value(0).toString()+"_PRE";
tablename.replace(" ","_");
if(!TableExists(tablename)) {
fprintf(stderr,"rddbmgr: missing PRE table for event \"%s\"\n",
(const char *)q->value(0).toString().toUtf8());
}
else {
sql=QString("select ")+
"COUNT,"+ // 00
"TYPE,"+ // 01
@ -7604,12 +7342,18 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
if(!DropTable(tablename)) {
return false;
}
}
//
// PostImport Events
//
tablename=q->value(0).toString()+"_POST";
tablename.replace(" ","_");
if(!TableExists(tablename)) {
fprintf(stderr,"rddbmgr: missing POST table for event \"%s\"\n",
(const char *)q->value(0).toString().toUtf8());
}
else {
sql=QString("select ")+
"COUNT,"+ // 00
"TYPE,"+ // 01
@ -7637,6 +7381,7 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
return false;
}
}
}
delete q;
//
@ -7686,7 +7431,11 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
while(q->next()) {
QString tablename=q->value(0).toString()+"_CLK";
tablename.replace(" ","_");
if(!TableExists(tablename)) {
fprintf(stderr,"rddbmgr: missing CLK table for clock \"%s\"\n",
(const char *)q->value(0).toString().toUtf8());
}
else {
/* *** HACK WARNING *** HACK WARNING ***
*
* This check works around a bug in Rivendell v2.x that permitted
@ -7751,6 +7500,7 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
return false;
}
}
}
delete q;
sql=QString("show tables where ")+
@ -7789,6 +7539,11 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
while(q->next()) {
QString tablename=q->value(0).toString()+"_RULES";
tablename.replace(" ","_");
if(!TableExists(tablename)) {
fprintf(stderr,"rddbmgr: missing RULES table for clock \"%s\"\n",
(const char *)q->value(0).toString().toUtf8());
}
else {
sql=QString("select ")+
"CODE,"+ // 00
"MAX_ROW,"+ // 01
@ -7817,6 +7572,7 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
return false;
}
}
}
delete q;
sql=QString("show tables where ")+
@ -7928,6 +7684,11 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
while(q->next()) {
QString tablename=q->value(0).toString()+"_FLG";
tablename.replace(" ","_");
if(!TableExists(tablename)) {
fprintf(stderr,"rddbmgr: missing FLG table for feed \"%s\"\n",
(const char *)q->value(0).toString().toUtf8());
}
else {
sql=QString("select ")+
"CAST_ID,"+ // 00
"ACCESS_DATE,"+ // 01
@ -7951,6 +7712,7 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
return false;
}
}
}
delete q;
WriteSchemaVersion(++cur_schema);
@ -7990,14 +7752,8 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
}
if((cur_schema<296)&&(set_schema>cur_schema)) {
sql=QString("alter table STATIONS drop column BACKUP_DIR");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table STATIONS drop column BACKUP_LIFE");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
DropColumn("STATIONS","BACKUP_DIR");
DropColumn("STATIONS","BACKUP_LIFE");
WriteSchemaVersion(++cur_schema);
}
@ -9778,6 +9534,13 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
WriteSchemaVersion(++cur_schema);
}
//
// Maintainer's Note:
//
// All tables created below this point should use a character set
// of 'utf8mb4' and a collation of 'utf8mb4_general_ci'.
//
if((cur_schema<298)&&(set_schema>cur_schema)) {
sql=QString("alter table RDLOGEDIT ")+
"modify column INPUT_CARD int(11) default 0";
@ -9794,13 +9557,6 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
WriteSchemaVersion(++cur_schema);
}
//
// Maintainer's Note:
//
// All tables created below this point should use a character set
// of 'utf8mb4' and a collation of 'utf8mb4_general_ci'.
//
// NEW SCHEMA UPDATES GO HERE...