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

* Dropped the 'RDAIRPLAY.INSTANCE' field from the database.
	* Dropped the 'RDAIRPLAY.CARD<n>' fields from the database.
	* Dropped the 'RDAIRPLAY.PORT<n>' fields from the database.
	* Dropped the 'RDAIRPLAY.START_RML<n>' fields from the database.
	* Dropped the 'RDAIRPLAY.STOP_RML<n>' fields from the database.
	* Dropped the 'RDAIRPLAY.OP_MODE' field from the database.
	* Dropped the 'RDAIRPLAY.START_MODE' field from the database.
	* Dropped the 'RDPANEL.INSTANCE' field from the database.
	* Dropped the 'RDPANEL.CARD<n>' fields from the database.
	* Dropped the 'RDPANEL.PORT<n>' fields from the database.
	* Dropped the 'RDPANEL.START_RML<n>' fields from the database.
	* Dropped the 'RDPANEL.STOP_RML<n>' fields from the database.
	* Altered the default value of the 'MATRICES.PORT field to 0.
	* Altered the default value of the 'MATRICES.PORT_2 field to 0.
	* Altered the default value of the 'MATRICES.INPUTS field to 0.
	* Altered the default value of the 'MATRICES.OUTPUTS field to 0.
	* Altered the default value of the 'MATRICES.GPIS field to 0.
	* Altered the default value of the 'MATRICES.GPOS field to 0.
	* Incremented the database version to 284.
	* Fixed bugs in rdcatch(1) that incorrectly escaped host
	names in SQL calls.
	* Fixed a bug in 'RDLog::create()' that failed to initialize
	the modified datetime correctly.
This commit is contained in:
Fred Gleason 2018-05-29 21:39:22 +00:00
parent b97f158435
commit f831241638
8 changed files with 309 additions and 102 deletions

View File

@ -16920,3 +16920,27 @@
2018-05-29 Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression that caused meters to fail when rdvairplayd(8)
was operated with invalid channel assignments.
2018-05-29 Fred Gleason <fredg@paravelsystems.com>
* Dropped the 'RDAIRPLAY.INSTANCE' field from the database.
* Dropped the 'RDAIRPLAY.CARD<n>' fields from the database.
* Dropped the 'RDAIRPLAY.PORT<n>' fields from the database.
* Dropped the 'RDAIRPLAY.START_RML<n>' fields from the database.
* Dropped the 'RDAIRPLAY.STOP_RML<n>' fields from the database.
* Dropped the 'RDAIRPLAY.OP_MODE' field from the database.
* Dropped the 'RDAIRPLAY.START_MODE' field from the database.
* Dropped the 'RDPANEL.INSTANCE' field from the database.
* Dropped the 'RDPANEL.CARD<n>' fields from the database.
* Dropped the 'RDPANEL.PORT<n>' fields from the database.
* Dropped the 'RDPANEL.START_RML<n>' fields from the database.
* Dropped the 'RDPANEL.STOP_RML<n>' fields from the database.
* Altered the default value of the 'MATRICES.PORT field to 0.
* Altered the default value of the 'MATRICES.PORT_2 field to 0.
* Altered the default value of the 'MATRICES.INPUTS field to 0.
* Altered the default value of the 'MATRICES.OUTPUTS field to 0.
* Altered the default value of the 'MATRICES.GPIS field to 0.
* Altered the default value of the 'MATRICES.GPOS field to 0.
* Incremented the database version to 284.
* Fixed bugs in rdcatch(1) that incorrectly escaped host
names in SQL calls.
* Fixed a bug in 'RDLog::create()' that failed to initialize
the modified datetime correctly.

View File

@ -6,11 +6,8 @@ Following is the layout of a record in the RDAIRPLAY table:
FIELD NAME TYPE REMARKS
------------------------------------------------------------------------------
ID int(10) unsigned * Primary key, Auto Increment
STATION char(40) Workstation, Indexed
SEGUE_LENGTH int(11)
TRANS_LENGTH int(11)
OP_MODE int(11) *** RETIRED @ DB v233 ***
START_MODE int(11) *** RETIRED @ DB v233 ***
LOG_MODE_STYLE int(11) 0=Unified, 1=Independent
PIE_COUNT_LENGTH int(11)
PIE_COUNT_ENDPOINT int(11) 0=EOF, 1=Segue Point

View File

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

View File

@ -520,6 +520,7 @@ bool RDLog::create(const QString &name,const QString &svc_name,
"DESCRIPTION=\""+RDEscapeString(name)+" log \","+
"ORIGIN_USER=\""+RDEscapeString(user_name)+"\","+
"ORIGIN_DATETIME=now(),"+
"MODIFIED_DATETIME=now(),"+
"LINK_DATETIME=now(),"+
"SERVICE=\""+RDEscapeString(svc_name)+"\"";
if(shelflife>=0) {

View File

@ -991,50 +991,8 @@ bool CreateDb(QString name,QString pwd,RDConfig *config)
sql=QString("create table if not exists RDAIRPLAY (")+
"ID int not null primary key auto_increment,"+
"STATION char(40) not null,"+
"CARD0 int default 0,"+
"PORT0 int default 0,"+
"START_RML0 char(255),"+
"STOP_RML0 char(255),"+
"CARD1 int default 0,"+
"PORT1 int default 0,"+
"START_RML1 char(255),"+
"STOP_RML1 char(255),"+
"CARD2 int default 0,"+
"PORT2 int default 0,"+
"START_RML2 char(255),"+
"STOP_RML2 char(255),"+
"CARD3 int default 0,"+
"PORT3 int default 0,"+
"START_RML3 char(255),"+
"STOP_RML3 char(255),"+
"CARD4 int default 0,"+
"PORT4 int default 0,"+
"START_RML4 char(255),"+
"STOP_RML4 char(255),"+
"CARD5 int default 0,"+
"PORT5 int default 0,"+
"START_RML5 char(255),"+
"STOP_RML5 char(255),"+
"CARD6 int default 0,"+
"PORT6 int default 0,"+
"START_RML6 char(255),"+
"STOP_RML6 char(255),"+
"CARD7 int default 0,"+
"PORT7 int default 0,"+
"START_RML7 char(255),"+
"STOP_RML7 char(255),"+
"CARD8 int default 0,"+
"PORT8 int default 0,"+
"START_RML8 char(255),"+
"STOP_RML8 char(255),"+
"CARD9 int default 0,"+
"PORT9 int default 0,"+
"START_RML9 char(255),"+
"STOP_RML9 char(255),"+
"SEGUE_LENGTH int default 250,"+
"TRANS_LENGTH int default 50,"+
"OP_MODE int default 2,"+
"START_MODE int default 0,"+
"LOG_MODE_STYLE int default 0,"+
"PIE_COUNT_LENGTH int default 15000,"+
"PIE_COUNT_ENDPOINT int default 0,"+
@ -1102,8 +1060,8 @@ bool CreateDb(QString name,QString pwd,RDConfig *config)
"PORT_TYPE int default 0,"+
"PORT_TYPE_2 int default 0,"+
"CARD int default -1,"+
"PORT int not null,"+
"PORT_2 int not null,"+
"PORT int not null default 0,"+
"PORT_2 int not null default 0,"+
"IP_ADDRESS char(16),"+
"IP_ADDRESS_2 char(16),"+
"IP_PORT int,"+
@ -1117,10 +1075,10 @@ bool CreateDb(QString name,QString pwd,RDConfig *config)
"START_CART_2 int unsigned,"+
"STOP_CART_2 int unsigned,"+
"GPIO_DEVICE char(255),"+
"INPUTS int not null,"+
"OUTPUTS int not null,"+
"GPIS int not null,"+
"GPOS int not null,"+
"INPUTS int not null default 0,"+
"OUTPUTS int not null default 0,"+
"GPIS int not null default 0,"+
"GPOS int not null default 0,"+
"FADERS int default 0,"+
"DISPLAYS int default 0,"+
"index MATRIX_IDX (STATION_NAME,MATRIX))"+
@ -1509,31 +1467,6 @@ bool CreateDb(QString name,QString pwd,RDConfig *config)
sql=QString("create table if not exists RDPANEL (")+
"ID int not null primary key auto_increment,"+
"STATION char(40) not null,"+
"INSTANCE int unsigned not null,"+
"CARD2 int default 0,"+
"PORT2 int default 0,"+
"START_RML2 char(255),"+
"STOP_RML2 char(255),"+
"CARD3 int default 0,"+
"PORT3 int default 0,"+
"START_RML3 char(255),"+
"STOP_RML3 char(255),"+
"CARD6 int default 0,"+
"PORT6 int default 0,"+
"START_RML6 char(255),"+
"STOP_RML6 char(255),"+
"CARD7 int default 0,"+
"PORT7 int default 0,"+
"START_RML7 char(255),"+
"STOP_RML7 char(255),"+
"CARD8 int default 0,"+
"PORT8 int default 0,"+
"START_RML8 char(255),"+
"STOP_RML8 char(255),"+
"CARD9 int default 0,"+
"PORT9 int default 0,"+
"START_RML9 char(255),"+
"STOP_RML9 char(255),"+
"STATION_PANELS int default 3,"+
"USER_PANELS int default 3,"+
"CLEAR_FILTER enum('N','Y') default 'N',"+
@ -8397,6 +8330,122 @@ int UpdateDb(int ver,RDConfig *config)
delete q;
}
if(ver<284) {
sql=QString("alter table RDAIRPLAY drop column INSTANCE");
q=new RDSqlQuery(sql,false);
delete q;
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;
}
sql=QString("alter table RDAIRPLAY drop column OP_MODE");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDAIRPLAY drop column START_MODE");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL drop column INSTANCE");
q=new RDSqlQuery(sql,false);
delete q;
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;
}
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;
}
sql=QString("alter table MATRICES alter column PORT set default 0");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table MATRICES alter column PORT_2 set default 0");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table MATRICES alter column INPUTS set default 0");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table MATRICES alter column OUTPUTS set default 0");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table MATRICES alter column GPIS set default 0");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table MATRICES alter column GPOS set default 0");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table REPLICATORS alter column TYPE_ID set default 0");
q=new RDSqlQuery(sql,false);
delete q;
}
//

View File

@ -48,6 +48,7 @@
#include <rddb.h>
#include <rddeck.h>
#include <rdedit_audio.h>
#include <rdescape_string.h>
#include <rdmixer.h>
#include <rdripc.h>
#include <rdsettings.h>
@ -291,9 +292,13 @@ MainWidget::MainWidget(QWidget *parent)
catch_connect.back()->connector()->
connectHost(q->value(1).toString(),RDCATCHD_TCP_PORT,
rda->config()->password());
sql=QString().sprintf("select CHANNEL,MON_PORT_NUMBER from DECKS \
where (CARD_NUMBER!=-1)&&(PORT_NUMBER!=-1)&&(CHANNEL>0)&&(STATION_NAME=\"%s\") \
order by CHANNEL",(const char *)q->value(0).toString().lower());
sql=QString("select ")+
"CHANNEL,"+ // 00
"MON_PORT_NUMBER "+ // 01
"from DECKS where "+
"(CARD_NUMBER!=-1)&&(PORT_NUMBER!=-1)&&(CHANNEL>0)&&"+
"(STATION_NAME=\""+RDEscapeString(q->value(0).toString().lower())+"\") "+
"order by CHANNEL";
q1=new RDSqlQuery(sql);
while(q1->next()) {
catch_connect.back()->chan.push_back(q1->value(0).toUInt());
@ -1585,7 +1590,9 @@ int MainWidget::AddRecord()
n=1;
}
delete q;
sql=QString().sprintf("insert into RECORDINGS set ID=%d",n);
sql=QString("insert into RECORDINGS set ")+
QString().sprintf("ID=%d,",n)+
"STATION_NAME=\""+RDEscapeString(rda->station()->name())+"\"";
q=new RDSqlQuery(sql);
delete q;
return n;
@ -1846,11 +1853,12 @@ void MainWidget::RefreshList()
l->setText(6,QString().
sprintf("%s %s",(const char *)str,
(const char *)q->value(5).toString()));
sql=QString().sprintf("select SWITCH_STATION,SWITCH_MATRIX\
from DECKS where \
(STATION_NAME=\"%s\")&&(CHANNEL=%d)",
(const char *)q->value(2).toString(),
q->value(23).toInt());
sql=QString("select ")+
"SWITCH_STATION,"+ // 00
"SWITCH_MATRIX "+ // 01
"from DECKS where "+
"(STATION_NAME=\""+RDEscapeString(q->value(2).toString())+"\")&&"+
QString().sprintf("(CHANNEL=%d)",q->value(23).toInt());
q1=new RDSqlQuery(sql);
if(q1->first()) { // Source
l->setText(5,GetSourceName(q1->value(0).toString(),
@ -2224,11 +2232,12 @@ void MainWidget::RefreshLine(RDListViewItem *item)
q->value(38).toInt()));
break;
}
sql=QString().sprintf("select SWITCH_STATION,SWITCH_MATRIX\
from DECKS where \
(STATION_NAME=\"%s\")&&(CHANNEL=%d)",
(const char *)q->value(2).toString(),
q->value(23).toInt());
sql=QString("select ")+
"SWITCH_STATION,"+ // 00
"SWITCH_MATRIX "+ // 01
"from DECKS where "+
"(STATION_NAME=\""+RDEscapeString(q->value(2).toString())+"\")&&"+
QString().sprintf("(CHANNEL=%d)",q->value(23).toInt());
q1=new RDSqlQuery(sql);
if(q1->first()) {
item->setText(5,GetSourceName(q1->value(0).toString(),
@ -2481,11 +2490,10 @@ void MainWidget::DisplayExitCode(RDListViewItem *item,
QString MainWidget::GetSourceName(QString station,int matrix,int input)
{
QString input_name;
QString sql=QString().sprintf("select NAME from INPUTS where \
(STATION_NAME=\"%s\")&&\
(MATRIX=%d)&&(NUMBER=%d)",
(const char *)station,
matrix,input);
QString sql=QString("select NAME from INPUTS where ")+
"(STATION_NAME=\""+RDEscapeString(station)+"\")&&"+
QString().sprintf("(MATRIX=%d)&&",matrix)+
QString().sprintf("(NUMBER=%d)",input);
RDSqlQuery *q=new RDSqlQuery(sql);
if(q->first()) {
input_name=q->value(0).toString();
@ -2498,11 +2506,10 @@ QString MainWidget::GetSourceName(QString station,int matrix,int input)
QString MainWidget::GetDestinationName(QString station,int matrix,int output)
{
QString output_name;
QString sql=QString().sprintf("select NAME from OUTPUTS where \
(STATION_NAME=\"%s\")&&\
(MATRIX=%d)&&(NUMBER=%d)",
(const char *)station,
matrix,output);
QString sql=QString("select NAME from OUTPUTS where ")+
"(STATION_NAME=\""+RDEscapeString(station)+"\")&&"+
QString().sprintf("(MATRIX=%d)&&",matrix)+
QString().sprintf("(NUMBER=%d)",output);
RDSqlQuery *q=new RDSqlQuery(sql);
if(q->first()) {
output_name=q->value(0).toString();

View File

@ -291,6 +291,10 @@ void MainObject::Revert(int schema) const
case 283:
Revert283();
break;
case 284:
Revert284();
break;
}
}
@ -1228,6 +1232,130 @@ void MainObject::Revert283() const
}
void MainObject::Revert284() const
{
QString sql;
RDSqlQuery *q;
sql=QString("alter table RDAIRPLAY add column INSTANCE int unsigned ")+
"not null default 0 after STATION";
q=new RDSqlQuery(sql,false);
delete q;
for(int i=9;i>=0;i--) {
sql=QString("alter table RDAIRPLAY add column ")+
QString().sprintf("STOP_RML%d char(255) after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDAIRPLAY add column ")+
QString().sprintf("START_RML%d char(255) after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDAIRPLAY add column ")+
QString().sprintf("PORT%d int default 0 after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDAIRPLAY add column ")+
QString().sprintf("CARD%d int default 0 after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
}
sql=QString("alter table RDAIRPLAY add column ")+
"OP_MODE int default 2 after TRANS_LENGTH";
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDAIRPLAY add column ")+
"START_MODE int default 0 after OP_MODE";
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL add column INSTANCE int unsigned ")+
"not null default 0 after STATION";
q=new RDSqlQuery(sql,false);
delete q;
for(int i=9;i>=6;i--) {
sql=QString("alter table RDPANEL add column ")+
QString().sprintf("STOP_RML%d char(255) after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL add column ")+
QString().sprintf("START_RML%d char(255) after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL add column ")+
QString().sprintf("PORT%d int default 0 after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL add column ")+
QString().sprintf("CARD%d int default 0 after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
}
for(int i=3;i>=2;i--) {
sql=QString("alter table RDPANEL add column ")+
QString().sprintf("STOP_RML%d char(255) after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL add column ")+
QString().sprintf("START_RML%d char(255) after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL add column ")+
QString().sprintf("PORT%d int default 0 after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table RDPANEL add column ")+
QString().sprintf("CARD%d int default 0 after INSTANCE",i);
q=new RDSqlQuery(sql,false);
delete q;
}
sql=QString("alter table MATRICES alter column PORT drop default");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table MATRICES alter column PORT_2 drop default");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table MATRICES alter column INPUTS drop default");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table MATRICES alter column OUTPUTS drop default");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table MATRICES alter column GPIS drop default");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table MATRICES alter column GPOS drop default");
q=new RDSqlQuery(sql,false);
delete q;
sql=QString("alter table REPLICATORS alter column TYPE_ID drop default");
q=new RDSqlQuery(sql,false);
delete q;
SetVersion(283);
}
int MainObject::GetVersion() const
{
QString sql;
@ -1274,7 +1402,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"]=283;
version_map["2.20"]=284;
//
// Normalize String

View File

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