2018-05-31 Fred Gleason <fredg@paravelsystems.com>

* Fixed a bug in rdadmin(1) that caused 'Length' parameters in
	custom log import settings to fail to be copied correctly when
	cloning a new service.
	* Dropped the 'SERVICES.TFC_LENGTH_OFFSET' field from the database.
	* Dropped the 'SERVICES.TFC_LENGTH_LENGTH' field from the database.
	* Dropped the 'SERVICES.MUS_LENGTH_OFFSET' field from the database.
	* Dropped the 'SERVICES.MUS_LENGTH_LENGTH' field from the database.
	* Incremented the database version to 286.
This commit is contained in:
Fred Gleason 2018-05-31 16:48:33 +00:00
parent 5d187d1e38
commit 415878a9a3
7 changed files with 161 additions and 77 deletions

View File

@ -16983,3 +16983,12 @@
2018-05-31 Fred Gleason <fredg@paravelsystems.com> 2018-05-31 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in rdrevert(8) that threw SQL errors when reverting * Fixed a bug in rdrevert(8) that threw SQL errors when reverting
schema change 278. schema change 278.
2018-05-31 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in rdadmin(1) that caused 'Length' parameters in
custom log import settings to fail to be copied correctly when
cloning a new service.
* Dropped the 'SERVICES.TFC_LENGTH_OFFSET' field from the database.
* Dropped the 'SERVICES.TFC_LENGTH_LENGTH' field from the database.
* Dropped the 'SERVICES.MUS_LENGTH_OFFSET' field from the database.
* Dropped the 'SERVICES.MUS_LENGTH_LENGTH' field from the database.
* Incremented the database version to 286.

View File

@ -35,8 +35,8 @@ TFC_MINUTES_OFFSET int(11)
TFC_MINUTES_LENGTH int(11) TFC_MINUTES_LENGTH int(11)
TFC_SECONDS_OFFSET int(11) TFC_SECONDS_OFFSET int(11)
TFC_SECONDS_LENGTH int(11) TFC_SECONDS_LENGTH int(11)
TFC_LENGTH_OFFSET int(11) TFC_LENGTH_OFFSET int(11) RETIRED
TFC_LENGTH_LENGTH int(11) TFC_LENGTH_LENGTH int(11) RETIRED
TFC_LEN_HOURS_OFFSET int(11) TFC_LEN_HOURS_OFFSET int(11)
TFC_LEN_HOURS_LENGTH int(11) TFC_LEN_HOURS_LENGTH int(11)
TFC_LEN_MINUTES_OFFSET int(11) TFC_LEN_MINUTES_OFFSET int(11)
@ -74,8 +74,8 @@ MUS_LEN_MINUTES_OFFSET int(11)
MUS_LEN_MINUTES_LENGTH int(11) MUS_LEN_MINUTES_LENGTH int(11)
MUS_LEN_SECONDS_OFFSET int(11) MUS_LEN_SECONDS_OFFSET int(11)
MUS_LEN_SECONDS_LENGTH int(11) MUS_LEN_SECONDS_LENGTH int(11)
MUS_LENGTH_OFFSET int(11) MUS_LENGTH_OFFSET int(11) RETIRED
MUS_LENGTH_LENGTH int(11) MUS_LENGTH_LENGTH int(11) RETIRED
MUS_DATA_OFFSET int(11) MUS_DATA_OFFSET int(11)
MUS_DATA_LENGTH int(11) MUS_DATA_LENGTH int(11)
MUS_EVENT_ID_OFFSET int(11) MUS_EVENT_ID_OFFSET int(11)

View File

@ -24,7 +24,7 @@
/* /*
* Current Database Version * Current Database Version
*/ */
#define RD_VERSION_DATABASE 285 #define RD_VERSION_DATABASE 286
#endif // DBVERSION_H #endif // DBVERSION_H

View File

@ -1155,39 +1155,51 @@ bool RDSvc::create(const QString &name,QString *err_msg,
"TFC_WIN_PATH,"+ // 11 "TFC_WIN_PATH,"+ // 11
"TFC_CART_OFFSET,"+ // 12 "TFC_CART_OFFSET,"+ // 12
"TFC_CART_LENGTH,"+ // 13 "TFC_CART_LENGTH,"+ // 13
"TFC_LENGTH_OFFSET,"+ // 14 "TFC_TITLE_OFFSET," // 14
"TFC_LENGTH_LENGTH,"+ // 15 "TFC_TITLE_LENGTH,"+ // 15
"TFC_HOURS_OFFSET,"+ // 16 "TFC_LEN_HOURS_OFFSET," // 16
"TFC_HOURS_LENGTH,"+ // 17 "TFC_LEN_HOURS_LENGTH," // 17
"TFC_MINUTES_OFFSET,"+ // 18 "TFC_LEN_MINUTES_OFFSET," // 18
"TFC_MINUTES_LENGTH,"+ // 19 "TFC_LEN_MINUTES_LENGTH," // 19
"TFC_SECONDS_OFFSET,"+ // 20 "TFC_LEN_SECONDS_OFFSET," // 20
"TFC_SECONDS_LENGTH,"+ // 21 "TFC_LEN_SECONDS_LENGTH," // 21
"TFC_DATA_OFFSET,"+ // 22 "TFC_HOURS_OFFSET,"+ // 22
"TFC_DATA_LENGTH,"+ // 23 "TFC_HOURS_LENGTH,"+ // 23
"TFC_EVENT_ID_OFFSET,"+ // 24 "TFC_MINUTES_OFFSET,"+ // 24
"TFC_EVENT_ID_LENGTH,"+ // 25 "TFC_MINUTES_LENGTH,"+ // 25
"TFC_ANNC_TYPE_OFFSET,"+ // 26 "TFC_SECONDS_OFFSET,"+ // 26
"TFC_ANNC_TYPE_LENGTH,"+ // 27 "TFC_SECONDS_LENGTH,"+ // 27
"MUS_IMPORT_TEMPLATE,"+ // 28 "TFC_DATA_OFFSET,"+ // 28
"MUS_PATH,"+ // 29 "TFC_DATA_LENGTH,"+ // 29
"MUS_WIN_PATH,"+ // 30 "TFC_EVENT_ID_OFFSET,"+ // 30
"MUS_CART_OFFSET,"+ // 31 "TFC_EVENT_ID_LENGTH,"+ // 31
"MUS_CART_LENGTH,"+ // 32 "TFC_ANNC_TYPE_OFFSET,"+ // 32
"MUS_LENGTH_OFFSET,"+ // 33 "TFC_ANNC_TYPE_LENGTH,"+ // 33
"MUS_LENGTH_LENGTH,"+ // 34 "MUS_IMPORT_TEMPLATE,"+ // 34
"MUS_HOURS_OFFSET,"+ // 35 "MUS_PATH,"+ // 35
"MUS_HOURS_LENGTH,"+ // 36 "MUS_WIN_PATH,"+ // 36
"MUS_MINUTES_OFFSET,"+ // 37 "MUS_CART_OFFSET,"+ // 37
"MUS_MINUTES_LENGTH,"+ // 38 "MUS_CART_LENGTH,"+ // 38
"MUS_SECONDS_OFFSET,"+ // 39 "MUS_TITLE_OFFSET," // 39
"MUS_SECONDS_LENGTH,"+ // 40 "MUS_TITLE_LENGTH,"+ // 40
"MUS_DATA_OFFSET,"+ // 41 "MUS_LEN_HOURS_OFFSET," // 41
"MUS_DATA_LENGTH,"+ // 42 "MUS_LEN_HOURS_LENGTH," // 42
"MUS_EVENT_ID_OFFSET,"+ // 43 "MUS_LEN_MINUTES_OFFSET," // 43
"MUS_EVENT_ID_LENGTH,"+ // 44 "MUS_LEN_MINUTES_LENGTH," // 44
"MUS_ANNC_TYPE_OFFSET,"+ // 46 "MUS_LEN_SECONDS_OFFSET," // 45
"MUS_ANNC_TYPE_LENGTH "+ // 47 "MUS_LEN_SECONDS_LENGTH," // 46
"MUS_HOURS_OFFSET,"+ // 47
"MUS_HOURS_LENGTH,"+ // 48
"MUS_MINUTES_OFFSET,"+ // 49
"MUS_MINUTES_LENGTH,"+ // 50
"MUS_SECONDS_OFFSET,"+ // 51
"MUS_SECONDS_LENGTH,"+ // 52
"MUS_DATA_OFFSET,"+ // 53
"MUS_DATA_LENGTH,"+ // 54
"MUS_EVENT_ID_OFFSET,"+ // 55
"MUS_EVENT_ID_LENGTH,"+ // 56
"MUS_ANNC_TYPE_OFFSET,"+ // 57
"MUS_ANNC_TYPE_LENGTH "+ // 58
" from SERVICES where NAME=\""+RDEscapeString(exemplar)+"\""; " from SERVICES where NAME=\""+RDEscapeString(exemplar)+"\"";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
if(q->first()) { if(q->first()) {
@ -1206,39 +1218,51 @@ bool RDSvc::create(const QString &name,QString *err_msg,
"TFC_WIN_PATH=\""+RDEscapeString(q->value(11).toString())+"\","+ "TFC_WIN_PATH=\""+RDEscapeString(q->value(11).toString())+"\","+
QString().sprintf("TFC_CART_OFFSET=%d,",q->value(12).toInt())+ QString().sprintf("TFC_CART_OFFSET=%d,",q->value(12).toInt())+
QString().sprintf("TFC_CART_LENGTH=%d,",q->value(13).toInt())+ QString().sprintf("TFC_CART_LENGTH=%d,",q->value(13).toInt())+
QString().sprintf("TFC_LENGTH_OFFSET=%d,",q->value(14).toInt())+ QString().sprintf("TFC_TITLE_OFFSET=%d,",q->value(14).toInt())+
QString().sprintf("TFC_LENGTH_LENGTH=%d,",q->value(15).toInt())+ QString().sprintf("TFC_TITLE_LENGTH=%d,",q->value(15).toInt())+
QString().sprintf("TFC_HOURS_OFFSET=%d,",q->value(16).toInt())+ QString().sprintf("TFC_LEN_HOURS_OFFSET=%d,",q->value(16).toInt())+
QString().sprintf("TFC_HOURS_LENGTH=%d,",q->value(17).toInt())+ QString().sprintf("TFC_LEN_HOURS_LENGTH=%d,",q->value(17).toInt())+
QString().sprintf("TFC_MINUTES_OFFSET=%d,",q->value(18).toInt())+ QString().sprintf("TFC_LEN_MINUTES_OFFSET=%d,",q->value(18).toInt())+
QString().sprintf("TFC_MINUTES_LENGTH=%d,",q->value(19).toInt())+ QString().sprintf("TFC_LEN_MINUTES_LENGTH=%d,",q->value(19).toInt())+
QString().sprintf("TFC_SECONDS_OFFSET=%d,",q->value(20).toInt())+ QString().sprintf("TFC_LEN_SECONDS_OFFSET=%d,",q->value(20).toInt())+
QString().sprintf("TFC_SECONDS_LENGTH=%d,",q->value(21).toInt())+ QString().sprintf("TFC_LEN_SECONDS_LENGTH=%d,",q->value(21).toInt())+
QString().sprintf("TFC_DATA_OFFSET=%d,",q->value(22).toInt())+ QString().sprintf("TFC_HOURS_OFFSET=%d,",q->value(22).toInt())+
QString().sprintf("TFC_DATA_LENGTH=%d,",q->value(23).toInt())+ QString().sprintf("TFC_HOURS_LENGTH=%d,",q->value(23).toInt())+
QString().sprintf("TFC_EVENT_ID_OFFSET=%d,",q->value(24).toInt())+ QString().sprintf("TFC_MINUTES_OFFSET=%d,",q->value(24).toInt())+
QString().sprintf("TFC_EVENT_ID_LENGTH=%d,",q->value(25).toInt())+ QString().sprintf("TFC_MINUTES_LENGTH=%d,",q->value(25).toInt())+
QString().sprintf("TFC_ANNC_TYPE_OFFSET=%d,",q->value(26).toInt())+ QString().sprintf("TFC_SECONDS_OFFSET=%d,",q->value(26).toInt())+
QString().sprintf("TFC_ANNC_TYPE_LENGTH=%d,",q->value(27).toInt())+ QString().sprintf("TFC_SECONDS_LENGTH=%d,",q->value(27).toInt())+
"MUS_IMPORT_TEMPLATE=\""+RDEscapeString(q->value(28).toString())+"\","+ QString().sprintf("TFC_DATA_OFFSET=%d,",q->value(28).toInt())+
"MUS_PATH=\""+RDEscapeString(q->value(29).toString())+"\","+ QString().sprintf("TFC_DATA_LENGTH=%d,",q->value(29).toInt())+
"MUS_WIN_PATH=\""+RDEscapeString(q->value(30).toString())+"\","+ QString().sprintf("TFC_EVENT_ID_OFFSET=%d,",q->value(30).toInt())+
QString().sprintf("MUS_CART_OFFSET=%d,",q->value(31).toInt())+ QString().sprintf("TFC_EVENT_ID_LENGTH=%d,",q->value(31).toInt())+
QString().sprintf("MUS_CART_LENGTH=%d,",q->value(32).toInt())+ QString().sprintf("TFC_ANNC_TYPE_OFFSET=%d,",q->value(32).toInt())+
QString().sprintf("MUS_LENGTH_OFFSET=%d,",q->value(33).toInt())+ QString().sprintf("TFC_ANNC_TYPE_LENGTH=%d,",q->value(33).toInt())+
QString().sprintf("MUS_LENGTH_LENGTH=%d,",q->value(34).toInt())+ "MUS_IMPORT_TEMPLATE=\""+RDEscapeString(q->value(34).toString())+"\","+
QString().sprintf("MUS_HOURS_OFFSET=%d,",q->value(35).toInt())+ "MUS_PATH=\""+RDEscapeString(q->value(35).toString())+"\","+
QString().sprintf("MUS_HOURS_LENGTH=%d,",q->value(36).toInt())+ "MUS_WIN_PATH=\""+RDEscapeString(q->value(36).toString())+"\","+
QString().sprintf("MUS_MINUTES_OFFSET=%d,",q->value(37).toInt())+ QString().sprintf("MUS_CART_OFFSET=%d,",q->value(37).toInt())+
QString().sprintf("MUS_MINUTES_LENGTH=%d,",q->value(39).toInt())+ QString().sprintf("MUS_CART_LENGTH=%d,",q->value(38).toInt())+
QString().sprintf("MUS_SECONDS_OFFSET=%d,",q->value(39).toInt())+ QString().sprintf("MUS_TITLE_OFFSET=%d,",q->value(39).toInt())+
QString().sprintf("MUS_SECONDS_LENGTH=%d,",q->value(40).toInt())+ QString().sprintf("MUS_TITLE_LENGTH=%d,",q->value(40).toInt())+
QString().sprintf("MUS_DATA_OFFSET=%d,",q->value(41).toInt())+ QString().sprintf("MUS_LEN_HOURS_OFFSET=%d,",q->value(41).toInt())+
QString().sprintf("MUS_DATA_LENGTH=%d,",q->value(42).toInt())+ QString().sprintf("MUS_LEN_HOURS_LENGTH=%d,",q->value(42).toInt())+
QString().sprintf("MUS_EVENT_ID_OFFSET=%d,",q->value(43).toInt())+ QString().sprintf("MUS_LEN_MINUTES_OFFSET=%d,",q->value(43).toInt())+
QString().sprintf("MUS_EVENT_ID_LENGTH=%d,",q->value(44).toInt())+ QString().sprintf("MUS_LEN_MINUTES_LENGTH=%d,",q->value(44).toInt())+
QString().sprintf("MUS_ANNC_TYPE_OFFSET=%d,",q->value(45).toInt())+ QString().sprintf("MUS_LEN_SECONDS_OFFSET=%d,",q->value(45).toInt())+
QString().sprintf("MUS_ANNC_TYPE_LENGTH=%d,",q->value(46).toInt())+ QString().sprintf("MUS_LEN_SECONDS_LENGTH=%d,",q->value(46).toInt())+
QString().sprintf("MUS_HOURS_OFFSET=%d,",q->value(47).toInt())+
QString().sprintf("MUS_HOURS_LENGTH=%d,",q->value(48).toInt())+
QString().sprintf("MUS_MINUTES_OFFSET=%d,",q->value(49).toInt())+
QString().sprintf("MUS_MINUTES_LENGTH=%d,",q->value(50).toInt())+
QString().sprintf("MUS_SECONDS_OFFSET=%d,",q->value(51).toInt())+
QString().sprintf("MUS_SECONDS_LENGTH=%d,",q->value(52).toInt())+
QString().sprintf("MUS_DATA_OFFSET=%d,",q->value(53).toInt())+
QString().sprintf("MUS_DATA_LENGTH=%d,",q->value(54).toInt())+
QString().sprintf("MUS_EVENT_ID_OFFSET=%d,",q->value(55).toInt())+
QString().sprintf("MUS_EVENT_ID_LENGTH=%d,",q->value(56).toInt())+
QString().sprintf("MUS_ANNC_TYPE_OFFSET=%d,",q->value(57).toInt())+
QString().sprintf("MUS_ANNC_TYPE_LENGTH=%d,",q->value(58).toInt())+
"NAME=\""+RDEscapeString(name)+"\""; "NAME=\""+RDEscapeString(name)+"\"";
delete q; delete q;
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);

View File

@ -623,8 +623,8 @@ bool CreateDb(QString name,QString pwd,RDConfig *config)
"TFC_LEN_MINUTES_LENGTH int,"+ "TFC_LEN_MINUTES_LENGTH int,"+
"TFC_LEN_SECONDS_OFFSET int,"+ "TFC_LEN_SECONDS_OFFSET int,"+
"TFC_LEN_SECONDS_LENGTH int,"+ "TFC_LEN_SECONDS_LENGTH int,"+
"TFC_LENGTH_OFFSET int,"+ // "TFC_LENGTH_OFFSET int,"+
"TFC_LENGTH_LENGTH int,"+ // "TFC_LENGTH_LENGTH int,"+
"TFC_DATA_OFFSET int,"+ "TFC_DATA_OFFSET int,"+
"TFC_DATA_LENGTH int,"+ "TFC_DATA_LENGTH int,"+
"TFC_EVENT_ID_OFFSET int,"+ "TFC_EVENT_ID_OFFSET int,"+
@ -656,8 +656,8 @@ bool CreateDb(QString name,QString pwd,RDConfig *config)
"MUS_LEN_MINUTES_LENGTH int,"+ "MUS_LEN_MINUTES_LENGTH int,"+
"MUS_LEN_SECONDS_OFFSET int,"+ "MUS_LEN_SECONDS_OFFSET int,"+
"MUS_LEN_SECONDS_LENGTH int,"+ "MUS_LEN_SECONDS_LENGTH int,"+
"MUS_LENGTH_OFFSET int,"+ // "MUS_LENGTH_OFFSET int,"+
"MUS_LENGTH_LENGTH int,"+ // "MUS_LENGTH_LENGTH int,"+
"MUS_DATA_OFFSET int,"+ "MUS_DATA_OFFSET int,"+
"MUS_DATA_LENGTH int,"+ "MUS_DATA_LENGTH int,"+
"MUS_EVENT_ID_OFFSET int,"+ "MUS_EVENT_ID_OFFSET int,"+
@ -8484,6 +8484,23 @@ int UpdateDb(int ver,RDConfig *config)
delete q; delete q;
} }
if(ver<286) {
sql=QString("alter table SERVICES drop column TFC_LENGTH_OFFSET");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table SERVICES drop column TFC_LENGTH_LENGTH");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table SERVICES drop column MUS_LENGTH_OFFSET");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table SERVICES drop column MUS_LENGTH_LENGTH");
q=new RDSqlQuery(sql,false);
delete q;
}
// //

View File

@ -2,7 +2,7 @@
// //
// Revert the Rivendell database schema to an earlier version. // Revert the Rivendell database schema to an earlier version.
// //
// (C) Copyright 2016-2017 Fred Gleason <fredg@paravelsystems.com> // (C) Copyright 2016-2018 Fred Gleason <fredg@paravelsystems.com>
// //
// This program is free software; you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License version 2 as
@ -299,6 +299,10 @@ void MainObject::Revert(int schema) const
case 285: case 285:
Revert285(); Revert285();
break; break;
case 286:
Revert286();
break;
} }
} }
@ -1432,6 +1436,35 @@ void MainObject::Revert285() const
} }
void MainObject::Revert286() const
{
QString sql;
RDSqlQuery *q;
sql=QString("alter table SERVICES add ")+
"column TFC_LENGTH_OFFSET int after TFC_LEN_SECONDS_LENGTH";
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table SERVICES add ")+
"column TFC_LENGTH_LENGTH int after TFC_LENGTH_OFFSET";
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table SERVICES add ")+
"column MUS_LENGTH_OFFSET int after MUS_LEN_SECONDS_LENGTH";
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table SERVICES add ")+
"column MUS_LENGTH_LENGTH int after MUS_LENGTH_OFFSET";
q=new RDSqlQuery(sql,false);
delete q;
SetVersion(285);
}
int MainObject::GetVersion() const int MainObject::GetVersion() const
{ {
QString sql; QString sql;
@ -1478,7 +1511,7 @@ int MainObject::MapSchema(const QString &ver)
version_map["2.17"]=268; version_map["2.17"]=268;
version_map["2.18"]=272; version_map["2.18"]=272;
version_map["2.19"]=275; version_map["2.19"]=275;
version_map["2.20"]=285; version_map["2.20"]=286;
// //
// Normalize String // Normalize String

View File

@ -81,6 +81,7 @@ class MainObject : public QObject
void Revert283() const; void Revert283() const;
void Revert284() const; void Revert284() const;
void Revert285() const; void Revert285() const;
void Revert286() const;
int GetVersion() const; int GetVersion() const;
void SetVersion(int schema) const; void SetVersion(int schema) const;
int MapSchema(const QString &ver); int MapSchema(const QString &ver);