diff --git a/ChangeLog b/ChangeLog index 5e7faaea..1e66defd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16983,3 +16983,12 @@ 2018-05-31 Fred Gleason * Fixed a bug in rdrevert(8) that threw SQL errors when reverting schema change 278. +2018-05-31 Fred Gleason + * 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. diff --git a/docs/tables/services.txt b/docs/tables/services.txt index 677c2787..e9e9fc75 100644 --- a/docs/tables/services.txt +++ b/docs/tables/services.txt @@ -35,8 +35,8 @@ TFC_MINUTES_OFFSET int(11) TFC_MINUTES_LENGTH int(11) TFC_SECONDS_OFFSET int(11) TFC_SECONDS_LENGTH int(11) -TFC_LENGTH_OFFSET int(11) -TFC_LENGTH_LENGTH int(11) +TFC_LENGTH_OFFSET int(11) RETIRED +TFC_LENGTH_LENGTH int(11) RETIRED TFC_LEN_HOURS_OFFSET int(11) TFC_LEN_HOURS_LENGTH 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_SECONDS_OFFSET int(11) MUS_LEN_SECONDS_LENGTH int(11) -MUS_LENGTH_OFFSET int(11) -MUS_LENGTH_LENGTH int(11) +MUS_LENGTH_OFFSET int(11) RETIRED +MUS_LENGTH_LENGTH int(11) RETIRED MUS_DATA_OFFSET int(11) MUS_DATA_LENGTH int(11) MUS_EVENT_ID_OFFSET int(11) diff --git a/lib/dbversion.h b/lib/dbversion.h index c401de1d..d9687287 100644 --- a/lib/dbversion.h +++ b/lib/dbversion.h @@ -24,7 +24,7 @@ /* * Current Database Version */ -#define RD_VERSION_DATABASE 285 +#define RD_VERSION_DATABASE 286 #endif // DBVERSION_H diff --git a/lib/rdsvc.cpp b/lib/rdsvc.cpp index 22b2c857..ce4f2782 100644 --- a/lib/rdsvc.cpp +++ b/lib/rdsvc.cpp @@ -1155,39 +1155,51 @@ bool RDSvc::create(const QString &name,QString *err_msg, "TFC_WIN_PATH,"+ // 11 "TFC_CART_OFFSET,"+ // 12 "TFC_CART_LENGTH,"+ // 13 - "TFC_LENGTH_OFFSET,"+ // 14 - "TFC_LENGTH_LENGTH,"+ // 15 - "TFC_HOURS_OFFSET,"+ // 16 - "TFC_HOURS_LENGTH,"+ // 17 - "TFC_MINUTES_OFFSET,"+ // 18 - "TFC_MINUTES_LENGTH,"+ // 19 - "TFC_SECONDS_OFFSET,"+ // 20 - "TFC_SECONDS_LENGTH,"+ // 21 - "TFC_DATA_OFFSET,"+ // 22 - "TFC_DATA_LENGTH,"+ // 23 - "TFC_EVENT_ID_OFFSET,"+ // 24 - "TFC_EVENT_ID_LENGTH,"+ // 25 - "TFC_ANNC_TYPE_OFFSET,"+ // 26 - "TFC_ANNC_TYPE_LENGTH,"+ // 27 - "MUS_IMPORT_TEMPLATE,"+ // 28 - "MUS_PATH,"+ // 29 - "MUS_WIN_PATH,"+ // 30 - "MUS_CART_OFFSET,"+ // 31 - "MUS_CART_LENGTH,"+ // 32 - "MUS_LENGTH_OFFSET,"+ // 33 - "MUS_LENGTH_LENGTH,"+ // 34 - "MUS_HOURS_OFFSET,"+ // 35 - "MUS_HOURS_LENGTH,"+ // 36 - "MUS_MINUTES_OFFSET,"+ // 37 - "MUS_MINUTES_LENGTH,"+ // 38 - "MUS_SECONDS_OFFSET,"+ // 39 - "MUS_SECONDS_LENGTH,"+ // 40 - "MUS_DATA_OFFSET,"+ // 41 - "MUS_DATA_LENGTH,"+ // 42 - "MUS_EVENT_ID_OFFSET,"+ // 43 - "MUS_EVENT_ID_LENGTH,"+ // 44 - "MUS_ANNC_TYPE_OFFSET,"+ // 46 - "MUS_ANNC_TYPE_LENGTH "+ // 47 + "TFC_TITLE_OFFSET," // 14 + "TFC_TITLE_LENGTH,"+ // 15 + "TFC_LEN_HOURS_OFFSET," // 16 + "TFC_LEN_HOURS_LENGTH," // 17 + "TFC_LEN_MINUTES_OFFSET," // 18 + "TFC_LEN_MINUTES_LENGTH," // 19 + "TFC_LEN_SECONDS_OFFSET," // 20 + "TFC_LEN_SECONDS_LENGTH," // 21 + "TFC_HOURS_OFFSET,"+ // 22 + "TFC_HOURS_LENGTH,"+ // 23 + "TFC_MINUTES_OFFSET,"+ // 24 + "TFC_MINUTES_LENGTH,"+ // 25 + "TFC_SECONDS_OFFSET,"+ // 26 + "TFC_SECONDS_LENGTH,"+ // 27 + "TFC_DATA_OFFSET,"+ // 28 + "TFC_DATA_LENGTH,"+ // 29 + "TFC_EVENT_ID_OFFSET,"+ // 30 + "TFC_EVENT_ID_LENGTH,"+ // 31 + "TFC_ANNC_TYPE_OFFSET,"+ // 32 + "TFC_ANNC_TYPE_LENGTH,"+ // 33 + "MUS_IMPORT_TEMPLATE,"+ // 34 + "MUS_PATH,"+ // 35 + "MUS_WIN_PATH,"+ // 36 + "MUS_CART_OFFSET,"+ // 37 + "MUS_CART_LENGTH,"+ // 38 + "MUS_TITLE_OFFSET," // 39 + "MUS_TITLE_LENGTH,"+ // 40 + "MUS_LEN_HOURS_OFFSET," // 41 + "MUS_LEN_HOURS_LENGTH," // 42 + "MUS_LEN_MINUTES_OFFSET," // 43 + "MUS_LEN_MINUTES_LENGTH," // 44 + "MUS_LEN_SECONDS_OFFSET," // 45 + "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)+"\""; q=new RDSqlQuery(sql); if(q->first()) { @@ -1206,39 +1218,51 @@ bool RDSvc::create(const QString &name,QString *err_msg, "TFC_WIN_PATH=\""+RDEscapeString(q->value(11).toString())+"\","+ QString().sprintf("TFC_CART_OFFSET=%d,",q->value(12).toInt())+ QString().sprintf("TFC_CART_LENGTH=%d,",q->value(13).toInt())+ - QString().sprintf("TFC_LENGTH_OFFSET=%d,",q->value(14).toInt())+ - QString().sprintf("TFC_LENGTH_LENGTH=%d,",q->value(15).toInt())+ - QString().sprintf("TFC_HOURS_OFFSET=%d,",q->value(16).toInt())+ - QString().sprintf("TFC_HOURS_LENGTH=%d,",q->value(17).toInt())+ - QString().sprintf("TFC_MINUTES_OFFSET=%d,",q->value(18).toInt())+ - QString().sprintf("TFC_MINUTES_LENGTH=%d,",q->value(19).toInt())+ - QString().sprintf("TFC_SECONDS_OFFSET=%d,",q->value(20).toInt())+ - QString().sprintf("TFC_SECONDS_LENGTH=%d,",q->value(21).toInt())+ - QString().sprintf("TFC_DATA_OFFSET=%d,",q->value(22).toInt())+ - QString().sprintf("TFC_DATA_LENGTH=%d,",q->value(23).toInt())+ - QString().sprintf("TFC_EVENT_ID_OFFSET=%d,",q->value(24).toInt())+ - QString().sprintf("TFC_EVENT_ID_LENGTH=%d,",q->value(25).toInt())+ - QString().sprintf("TFC_ANNC_TYPE_OFFSET=%d,",q->value(26).toInt())+ - QString().sprintf("TFC_ANNC_TYPE_LENGTH=%d,",q->value(27).toInt())+ - "MUS_IMPORT_TEMPLATE=\""+RDEscapeString(q->value(28).toString())+"\","+ - "MUS_PATH=\""+RDEscapeString(q->value(29).toString())+"\","+ - "MUS_WIN_PATH=\""+RDEscapeString(q->value(30).toString())+"\","+ - QString().sprintf("MUS_CART_OFFSET=%d,",q->value(31).toInt())+ - QString().sprintf("MUS_CART_LENGTH=%d,",q->value(32).toInt())+ - QString().sprintf("MUS_LENGTH_OFFSET=%d,",q->value(33).toInt())+ - QString().sprintf("MUS_LENGTH_LENGTH=%d,",q->value(34).toInt())+ - QString().sprintf("MUS_HOURS_OFFSET=%d,",q->value(35).toInt())+ - QString().sprintf("MUS_HOURS_LENGTH=%d,",q->value(36).toInt())+ - QString().sprintf("MUS_MINUTES_OFFSET=%d,",q->value(37).toInt())+ - QString().sprintf("MUS_MINUTES_LENGTH=%d,",q->value(39).toInt())+ - QString().sprintf("MUS_SECONDS_OFFSET=%d,",q->value(39).toInt())+ - QString().sprintf("MUS_SECONDS_LENGTH=%d,",q->value(40).toInt())+ - QString().sprintf("MUS_DATA_OFFSET=%d,",q->value(41).toInt())+ - QString().sprintf("MUS_DATA_LENGTH=%d,",q->value(42).toInt())+ - QString().sprintf("MUS_EVENT_ID_OFFSET=%d,",q->value(43).toInt())+ - QString().sprintf("MUS_EVENT_ID_LENGTH=%d,",q->value(44).toInt())+ - QString().sprintf("MUS_ANNC_TYPE_OFFSET=%d,",q->value(45).toInt())+ - QString().sprintf("MUS_ANNC_TYPE_LENGTH=%d,",q->value(46).toInt())+ + QString().sprintf("TFC_TITLE_OFFSET=%d,",q->value(14).toInt())+ + QString().sprintf("TFC_TITLE_LENGTH=%d,",q->value(15).toInt())+ + QString().sprintf("TFC_LEN_HOURS_OFFSET=%d,",q->value(16).toInt())+ + QString().sprintf("TFC_LEN_HOURS_LENGTH=%d,",q->value(17).toInt())+ + QString().sprintf("TFC_LEN_MINUTES_OFFSET=%d,",q->value(18).toInt())+ + QString().sprintf("TFC_LEN_MINUTES_LENGTH=%d,",q->value(19).toInt())+ + QString().sprintf("TFC_LEN_SECONDS_OFFSET=%d,",q->value(20).toInt())+ + QString().sprintf("TFC_LEN_SECONDS_LENGTH=%d,",q->value(21).toInt())+ + QString().sprintf("TFC_HOURS_OFFSET=%d,",q->value(22).toInt())+ + QString().sprintf("TFC_HOURS_LENGTH=%d,",q->value(23).toInt())+ + QString().sprintf("TFC_MINUTES_OFFSET=%d,",q->value(24).toInt())+ + QString().sprintf("TFC_MINUTES_LENGTH=%d,",q->value(25).toInt())+ + QString().sprintf("TFC_SECONDS_OFFSET=%d,",q->value(26).toInt())+ + QString().sprintf("TFC_SECONDS_LENGTH=%d,",q->value(27).toInt())+ + QString().sprintf("TFC_DATA_OFFSET=%d,",q->value(28).toInt())+ + QString().sprintf("TFC_DATA_LENGTH=%d,",q->value(29).toInt())+ + QString().sprintf("TFC_EVENT_ID_OFFSET=%d,",q->value(30).toInt())+ + QString().sprintf("TFC_EVENT_ID_LENGTH=%d,",q->value(31).toInt())+ + QString().sprintf("TFC_ANNC_TYPE_OFFSET=%d,",q->value(32).toInt())+ + QString().sprintf("TFC_ANNC_TYPE_LENGTH=%d,",q->value(33).toInt())+ + "MUS_IMPORT_TEMPLATE=\""+RDEscapeString(q->value(34).toString())+"\","+ + "MUS_PATH=\""+RDEscapeString(q->value(35).toString())+"\","+ + "MUS_WIN_PATH=\""+RDEscapeString(q->value(36).toString())+"\","+ + QString().sprintf("MUS_CART_OFFSET=%d,",q->value(37).toInt())+ + QString().sprintf("MUS_CART_LENGTH=%d,",q->value(38).toInt())+ + QString().sprintf("MUS_TITLE_OFFSET=%d,",q->value(39).toInt())+ + QString().sprintf("MUS_TITLE_LENGTH=%d,",q->value(40).toInt())+ + QString().sprintf("MUS_LEN_HOURS_OFFSET=%d,",q->value(41).toInt())+ + QString().sprintf("MUS_LEN_HOURS_LENGTH=%d,",q->value(42).toInt())+ + QString().sprintf("MUS_LEN_MINUTES_OFFSET=%d,",q->value(43).toInt())+ + QString().sprintf("MUS_LEN_MINUTES_LENGTH=%d,",q->value(44).toInt())+ + QString().sprintf("MUS_LEN_SECONDS_OFFSET=%d,",q->value(45).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)+"\""; delete q; q=new RDSqlQuery(sql); diff --git a/rdadmin/createdb.cpp b/rdadmin/createdb.cpp index 9fda48c0..12ea46fc 100644 --- a/rdadmin/createdb.cpp +++ b/rdadmin/createdb.cpp @@ -623,8 +623,8 @@ bool CreateDb(QString name,QString pwd,RDConfig *config) "TFC_LEN_MINUTES_LENGTH int,"+ "TFC_LEN_SECONDS_OFFSET int,"+ "TFC_LEN_SECONDS_LENGTH int,"+ - "TFC_LENGTH_OFFSET int,"+ - "TFC_LENGTH_LENGTH int,"+ + // "TFC_LENGTH_OFFSET int,"+ + // "TFC_LENGTH_LENGTH int,"+ "TFC_DATA_OFFSET int,"+ "TFC_DATA_LENGTH 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_SECONDS_OFFSET int,"+ "MUS_LEN_SECONDS_LENGTH int,"+ - "MUS_LENGTH_OFFSET int,"+ - "MUS_LENGTH_LENGTH int,"+ + // "MUS_LENGTH_OFFSET int,"+ + // "MUS_LENGTH_LENGTH int,"+ "MUS_DATA_OFFSET int,"+ "MUS_DATA_LENGTH int,"+ "MUS_EVENT_ID_OFFSET int,"+ @@ -8484,6 +8484,23 @@ int UpdateDb(int ver,RDConfig *config) 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; + } // diff --git a/utils/rdrevert/rdrevert.cpp b/utils/rdrevert/rdrevert.cpp index bfafdf8b..f09f744c 100644 --- a/utils/rdrevert/rdrevert.cpp +++ b/utils/rdrevert/rdrevert.cpp @@ -2,7 +2,7 @@ // // Revert the Rivendell database schema to an earlier version. // -// (C) Copyright 2016-2017 Fred Gleason +// (C) Copyright 2016-2018 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 @@ -299,6 +299,10 @@ void MainObject::Revert(int schema) const case 285: Revert285(); 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 { QString sql; @@ -1478,7 +1511,7 @@ int MainObject::MapSchema(const QString &ver) version_map["2.17"]=268; version_map["2.18"]=272; version_map["2.19"]=275; - version_map["2.20"]=285; + version_map["2.20"]=286; // // Normalize String diff --git a/utils/rdrevert/rdrevert.h b/utils/rdrevert/rdrevert.h index 4aa0a605..12ff64fc 100644 --- a/utils/rdrevert/rdrevert.h +++ b/utils/rdrevert/rdrevert.h @@ -81,6 +81,7 @@ class MainObject : public QObject void Revert283() const; void Revert284() const; void Revert285() const; + void Revert286() const; int GetVersion() const; void SetVersion(int schema) const; int MapSchema(const QString &ver);