// revertschema.cpp // // Revert Rivendell DB schema // // (C) Copyright 2018-2021 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 // published by the Free Software Foundation. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // #include #include #include "rddbmgr.h" bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg) { QString sql; RDSqlQuery *q; RDSqlQuery *q1; QString tablename; // // Maintainer's Note: // // When adding a schema reversion here, be sure also to implement the // corresponding update in updateschema.cpp! // // NEW SCHEMA REVERSIONS GO HERE... // // Revert 353 // if((cur_schema==353)&&(set_schemanext()) { QString password(QByteArray::fromBase64(q->value(1).toString().toUtf8())); sql=QString("update `FEEDS` set ")+ "`PURGE_PASSWORD`='"+RDEscapeString(password)+"' where "+ "`KEY_NAME`='"+RDEscapeString(q->value(0).toString())+"'"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q; sql=QString("alter table `FEEDS` modify column ")+ "`PURGE_PASSWORD` varchar(64)"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 333 // if((cur_schema==333)&&(set_schemamysqlCollation()+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("create table if not exists `ENCODER_BITRATES` (")+ "`ID` int not null auto_increment primary key,"+ "`ENCODER_ID` int not null,"+ "`BITRATES` int not null,"+ "index `ENCODER_ID_IDX` (`ENCODER_ID`))"+ " charset utf8mb4 collate "+db_config->mysqlCollation()+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("create table if not exists `ENCODER_SAMPLERATES` (")+ "`ID` int not null auto_increment primary key,"+ "`ENCODER_ID` int not null,"+ "`SAMPLERATES` int not null,"+ "index `ENCODER_ID_IDX` (`ENCODER_ID`))"+ " charset utf8mb4 collate "+db_config->mysqlCollation()+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("create table if not exists `ENCODERS` (")+ "`ID` int not null auto_increment primary key,"+ "`NAME` char(32) not null,"+ "`STATION_NAME` char(64),"+ "`COMMAND_LINE` char(255),"+ "`DEFAULT_EXTENSION` char(16),"+ "index `NAME_IDX` (`NAME`,`STATION_NAME`))"+ " charset utf8mb4 collate "+db_config->mysqlCollation()+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } // Ensure that dynamic format IDs start after 100 sql=QString("insert into `ENCODERS` set `ID`=100,`NAME`='dummy'"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("delete from `ENCODERS` where `ID`=100"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 330 // if((cur_schema==330)&&(set_schemanext()) { if(q->value(2).isNull()) { sql=QString("update `PODCASTS` set ")+ "`SHELF_LIFE`=0 where "+ QString().sprintf("`ID`=%u",q->value(0).toUInt()); } else { sql=QString("update `PODCASTS` set ")+ QString().sprintf("`SHELF_LIFE`=%lld where ", q->value(1).toDateTime(). daysTo(q->value(2).toDateTime()))+ QString().sprintf("`ID`=%u",q->value(0).toUInt()); } if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } DropColumn("PODCASTS","EXPIRATION_DATETIME"); DropColumn("SYSTEM","RSS_PROCESSOR_STATION"); WriteSchemaVersion(--cur_schema); } // // Revert 328 // if((cur_schema==328)&&(set_schemamysqlCollation()+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `FEEDS` add column ")+ "`AUDIENCE_METRICS` enum('N','Y') default 'N' after `IS_SUPERFEED`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("update `FEEDS` set `AUDIENCE_METRICS`='Y'"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `FEEDS` add column ")+ "`KEEP_METADATA` enum('N','Y') default 'Y' after `ENABLE_AUTOPOST`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `FEEDS` add column ")+ "`REDIRECT_PATH` varchar(191) after `NORMALIZE_LEVEL`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `FEEDS` add column ")+ "`MEDIA_LINK_MODE` int default 0 after `REDIRECT_PATH`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 327 // if((cur_schema==327)&&(set_schemamysqlCollation()+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 324 // if((cur_schema==324)&&(set_schemanext()) { sql=QString("select ")+ "`HEADER_XML`,"+ // 00 "`CHANNEL_XML`,"+ // 01 "`ITEM_XML` "+ // 02 "from `RSS_SCHEMAS` where "+ QString().sprintf("ID=%u",q->value(1).toUInt()); q1=new RDSqlQuery(sql); if(q1->first()) { QString("update `FEEDS` set ")+ "`HEADER_XML`='"+RDEscapeString(q1->value(0).toString())+"',"+ "`CHANNEL_XML`='"+RDEscapeString(q1->value(1).toString())+"',"+ "`ITEM_XML`='"+RDEscapeString(q1->value(2).toString())+"' "+ "where "+ QString().sprintf("`ID`=%u",q->value(0).toUInt()); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q1; } delete q; DropColumn("FEEDS","RSS_SCHEMA"); DropTable("RSS_SCHEMAS"); WriteSchemaVersion(--cur_schema); } // // Revert 321 // if((cur_schema==321)&&(set_schemanext()) { sql=QString("select ")+ "`SCHED_CODE` " // 00 "from `STACK_SCHED_CODES` where "+ QString().sprintf("`STACK_LINES_ID`=%u",q->value(0).toUInt()); q1=new RDSqlQuery(sql,false); while(q1->next()) { codes+=q1->value(0).toString(); while((codes.length()%10)!=0) { codes+=" "; } } delete q1; codes+="."; sql=QString("update `STACK_LINES` set ")+ "`SCHED_CODES`='"+RDEscapeString(codes)+"' where "+ QString().sprintf("`ID`=%u",q->value(0).toUInt()); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } codes=""; } delete q; DropTable("STACK_SCHED_CODES",err_msg); WriteSchemaVersion(--cur_schema); } // // Revert 307 // if((cur_schema==307)&&(set_schemanext()) { schedcode=QString().sprintf("%-11s", q->value(1).toString().toUtf8().constData()); q1=new RDSqlQuery(QString().sprintf("update `CART` set `SCHED_CODES`=CONCAT('%s',`SCHED_CODES`) where `NUMBER`=%d",schedcode.toUtf8().constData(), q->value(0).toUInt()),false); delete q1; } delete q; q=new RDSqlQuery("drop table `CART_SCHED_CODES`",false); delete q; WriteSchemaVersion(--cur_schema); } // // Revert 298 // if((cur_schema==298)&&(set_schemanext()) { QString tablename=q->value(0).toString()+"_FLG"; tablename.replace(" ","_"); sql=QString("create table if not exists `")+tablename+"` ("+ "`ID` int unsigned primary key auto_increment,"+ "`CAST_ID` int unsigned,"+ "`ACCESS_DATE` date,"+ "`ACCESS_COUNT` int unsigned default 0,"+ "index `CAST_ID_IDX` (`CAST_ID`,`ACCESS_DATE`))"+ " charset latin1 collate latin1_swedish_ci"+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("select ")+ "`CAST_ID`,"+ // 00 "`ACCESS_DATE`,"+ // 01 "`ACCESS_COUNT` "+ // 02 "from `CAST_DOWNLOADS` where "+ "`FEED_KEY_NAME`='"+RDEscapeString(q->value(0).toString())+"' "+ "order by `CAST_ID`,`ACCESS_DATE`"; q1=new RDSqlQuery(sql,false); while(q1->next()) { sql=QString("insert into `")+tablename+"` set "+ QString().sprintf("`CAST_ID`=%u,",q1->value(0).toUInt())+ "`ACCESS_DATE`='"+ RDEscapeString(q1->value(1).toDate().toString("yyyy-MM-dd"))+"',"+ QString().sprintf("`ACCESS_COUNT`=%u",q1->value(2).toUInt()); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q1; } if(!DropTable("CAST_DOWNLOADS",err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 293 // if((cur_schema==293)&&(set_schemanext()) { QString tablename=q->value(0).toString()+"_STACK"; tablename.replace(" ","_"); sql=QString("create table `")+tablename+"` ("+ "`SCHED_STACK_ID` int unsigned not null primary key,"+ "`CART` int unsigned not null,"+ "`ARTIST` varchar(255),"+ "`SCHED_CODES` varchar(255),"+ "`SCHEDULED_AT` datetime default '1000-01-01 00:00:00')"+ " charset latin1 collate latin1_swedish_ci"+ db_table_create_postfix; 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 `STACK_LINES` where "+ "`SERVICE_NAME`='"+RDEscapeString(q->value(0).toString())+"'"; q1=new RDSqlQuery(sql,false); while(q1->next()) { sql=QString("insert into `")+tablename+"` set "+ 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; } } sql=QString("update `")+tablename+"` set "+ "`SCHEDULED_AT`='1000-01-01 00:00:00' where "+ "`SCHEDULED_AT`='1752-09-14 00:00:00'"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q; if(!DropTable("STACK_LINES",err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 292 // if((cur_schema==292)&&(set_schemanext()) { QString tablename=q->value(0).toString()+"_RULES"; tablename.replace(" ","_"); sql=QString("create table `")+tablename+"` ("+ "`CODE` varchar(10) not null primary key,"+ "`MAX_ROW` int unsigned,"+ "`MIN_WAIT` int unsigned,"+ "`NOT_AFTER` varchar(10),"+ "`OR_AFTER` varchar(10),"+ "`OR_AFTER_II` varchar(10))"+ " charset latin1 collate latin1_swedish_ci"+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("select ")+ "`CODE`,"+ // 00 "`MAX_ROW`,"+ // 01 "`MIN_WAIT`,"+ // 02 "`NOT_AFTER`,"+ // 03 "`OR_AFTER`,"+ // 04 "`OR_AFTER_II` "+ // 05 "from RULE_LINES where "+ "`CLOCK_NAME`='"+RDEscapeString(q->value(0).toString())+"' "+ "order by `CODE`"; q1=new RDSqlQuery(sql,false); while(q1->next()) { sql=QString("insert into `")+tablename+"` set "+ "`CODE`='"+RDEscapeString(q1->value(0).toString())+"',"+ QString().sprintf("`MAX_ROW`=%u,",q1->value(1).toUInt())+ QString().sprintf("`MIN_WAIT`=%u,",q1->value(2).toUInt())+ "`NOT_AFTER`='"+RDEscapeString(q1->value(3).toString())+"',"+ "`OR_AFTER`='"+RDEscapeString(q1->value(4).toString())+"',"+ "`OR_AFTER_II`='"+RDEscapeString(q1->value(5).toString())+"'"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q1; } if(!DropTable("RULE_LINES",err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 291 // if((cur_schema==291)&&(set_schemanext()) { QString tablename=q->value(0).toString()+"_CLK"; tablename.replace(" ","_"); sql=QString("create table `")+tablename+"` ("+ "`ID` int unsigned auto_increment not null primary key,"+ "`EVENT_NAME` char(64) not null,"+ "`START_TIME` int not null,"+ "`LENGTH` int not null,"+ "index `EVENT_NAME_IDX` (`EVENT_NAME`))"+ " charset latin1 collate latin1_swedish_ci"+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("select ")+ "`EVENT_NAME`,"+ // 00 "`START_TIME`,"+ // 01 "`LENGTH` "+ // 02 "from `CLOCK_LINES` where "+ "`CLOCK_NAME`='"+RDEscapeString(q->value(0).toString())+"' "+ "order by `START_TIME`"; q1=new RDSqlQuery(sql); while(q1->next()) { sql=QString("insert into `")+tablename+"` set "+ "`EVENT_NAME`='"+RDEscapeString(q1->value(0).toString())+"',"+ QString().sprintf("`START_TIME`=%d,",q1->value(1).toInt())+ QString().sprintf("`LENGTH`=%d",q1->value(2).toInt()); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q1; } delete q; if(!DropTable("CLOCK_LINES",err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 290 // if((cur_schema==290)&&(set_schemanext()) { // // PreImport Events // QString tablename=q->value(0).toString()+"_PRE"; tablename.replace(" ","_"); sql=QString("create table if not exists `")+tablename+"` ("+ "`ID` int not null primary key,"+ "`COUNT` int not null,"+ "`TYPE` int default 0,"+ "`SOURCE` int not null,"+ "`START_TIME` int,"+ "`GRACE_TIME` int default 0,"+ "`CART_NUMBER` int UNSIGNED not null default 0,"+ "`TIME_TYPE` int not null,"+ "`POST_POINT` enum('N','Y') default 'N',"+ "`TRANS_TYPE` int not null,"+ "`START_POINT` int not null default -1,"+ "`END_POINT` int not null default -1,"+ "`FADEUP_POINT` int default -1,"+ QString().sprintf("`FADEUP_GAIN` int default %d,",RD_FADE_DEPTH)+ "`FADEDOWN_POINT` int default -1,"+ QString().sprintf("`FADEDOWN_GAIN` int default %d,",RD_FADE_DEPTH)+ "`SEGUE_START_POINT` int not null default -1,"+ "`SEGUE_END_POINT` int not null default -1,"+ QString().sprintf("`SEGUE_GAIN` int default %d,",RD_FADE_DEPTH)+ "`DUCK_UP_GAIN` int default 0,"+ "`DUCK_DOWN_GAIN` int default 0,"+ "`COMMENT` CHAR(255),"+ "`LABEL` CHAR(64),"+ "`ORIGIN_USER` char(255),"+ "`ORIGIN_DATETIME` datetime,"+ "`EVENT_LENGTH` int default -1,"+ "`LINK_EVENT_NAME` char(64),"+ "`LINK_START_TIME` int,"+ "`LINK_LENGTH` int default 0,"+ "`LINK_START_SLOP` int default 0,"+ "`LINK_END_SLOP` int default 0,"+ "`LINK_ID` int default -1,"+ "`LINK_EMBEDDED` enum('N','Y') default 'N',"+ "`EXT_START_TIME` time,"+ "`EXT_LENGTH` int,"+ "`EXT_CART_NAME` char(32),"+ "`EXT_DATA` char(32),"+ "`EXT_EVENT_ID` char(32),"+ "`EXT_ANNC_TYPE` char(8),"+ "index `COUNT_IDX` (`COUNT`),"+ "index `CART_NUMBER_IDX` (`CART_NUMBER`),"+ "index `LABEL_IDX` (`LABEL`))"+ " charset latin1 collate latin1_swedish_ci"+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("select ")+ "`COUNT`,"+ // 00 "`EVENT_TYPE`,"+ // 01 "`CART_NUMBER`,"+ // 02 "`TRANS_TYPE`,"+ // 03 "`MARKER_COMMENT` "+ // 04 "from `EVENT_LINES` where "+ "`EVENT_NAME`='"+RDEscapeString(q->value(0).toString())+"' && "+ "`TYPE`=0"; q1=new RDSqlQuery(sql,false); while(q1->next()) { sql=QString("insert into `")+tablename+"` set "+ "`SOURCE`=0,"+ "`TIME_TYPE`=0,"+ QString().sprintf("`ID`=%d,",1+q1->value(0).toInt())+ QString().sprintf("`COUNT`=%d,",q1->value(0).toInt())+ QString().sprintf("`TYPE`=%d,",q1->value(1).toInt())+ QString().sprintf("`CART_NUMBER`=%u,",q1->value(2).toUInt())+ QString().sprintf("`TRANS_TYPE`=%d,",q1->value(3).toInt())+ "`COMMENT`='"+RDEscapeString(q1->value(4).toString())+"'"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q1; // // PostImport Events // tablename=q->value(0).toString()+"_POST"; tablename.replace(" ","_"); sql=QString("create table if not exists `")+tablename+"` ("+ "`ID` int not null primary key,"+ "`COUNT` int not null,"+ "`TYPE` int default 0,"+ "`SOURCE` int not null,"+ "`START_TIME` int,"+ "`GRACE_TIME` int default 0,"+ "`CART_NUMBER` int UNSIGNED not null default 0,"+ "`TIME_TYPE` int not null,"+ "`POST_POINT` enum('N','Y') default 'N',"+ "`TRANS_TYPE` int not null,"+ "`START_POINT` int not null default -1,"+ "`END_POINT` int not null default -1,"+ "`FADEUP_POINT` int default -1,"+ QString().sprintf("`FADEUP_GAIN` int default %d,",RD_FADE_DEPTH)+ "`FADEDOWN_POINT` int default -1,"+ QString().sprintf("`FADEDOWN_GAIN` int default %d,",RD_FADE_DEPTH)+ "`SEGUE_START_POINT` int not null default -1,"+ "`SEGUE_END_POINT` int not null default -1,"+ QString().sprintf("`SEGUE_GAIN` int default %d,",RD_FADE_DEPTH)+ "`DUCK_UP_GAIN` int default 0,"+ "`DUCK_DOWN_GAIN` int default 0,"+ "`COMMENT` CHAR(255),"+ "`LABEL` CHAR(64),"+ "`ORIGIN_USER` char(255),"+ "`ORIGIN_DATETIME` datetime,"+ "`EVENT_LENGTH` int default -1,"+ "`LINK_EVENT_NAME` char(64),"+ "`LINK_START_TIME` int,"+ "`LINK_LENGTH` int default 0,"+ "`LINK_START_SLOP` int default 0,"+ "`LINK_END_SLOP` int default 0,"+ "`LINK_ID` int default -1,"+ "`LINK_EMBEDDED` enum('N','Y') default 'N',"+ "`EXT_START_TIME` time,"+ "`EXT_LENGTH` int,"+ "`EXT_CART_NAME` char(32),"+ "`EXT_DATA` char(32),"+ "`EXT_EVENT_ID` char(32),"+ "`EXT_ANNC_TYPE` char(8),"+ "index `COUNT_IDX` (`COUNT`),"+ "index `CART_NUMBER_IDX` (`CART_NUMBER`),"+ "index `LABEL_IDX` (`LABEL`))"+ " charset latin1 collate latin1_swedish_ci"+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("select ")+ "`COUNT`,"+ // 00 "`EVENT_TYPE`,"+ // 01 "`CART_NUMBER`,"+ // 02 "`TRANS_TYPE`,"+ // 03 "`MARKER_COMMENT` "+ // 04 "from `EVENT_LINES` where "+ "`EVENT_NAME`='"+RDEscapeString(q->value(0).toString())+"' && "+ "`TYPE`=1"; q1=new RDSqlQuery(sql,false); while(q1->next()) { sql=QString("insert into `")+tablename+"` set "+ "`SOURCE`=0,"+ "`TIME_TYPE`=0,"+ QString().sprintf("`ID`=%d,",1+q1->value(0).toInt())+ QString().sprintf("`COUNT`=%d,",q1->value(0).toInt())+ QString().sprintf("`TYPE`=%d,",q1->value(1).toInt())+ QString().sprintf("`CART_NUMBER`=%u,",q1->value(2).toUInt())+ QString().sprintf("`TRANS_TYPE`=%d,",q1->value(3).toInt())+ "`COMMENT`='"+RDEscapeString(q1->value(4).toString())+"'"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q1; } delete q; if(!DropTable("EVENT_LINES",err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 289 // if((cur_schema==289)&&(set_schemanext()) { QString tablename=q->value(0).toString()+"_SRT"; tablename.replace(" ","_"); sql=QString("create table if not exists `")+tablename+"` ("+ "`ID` int unsigned auto_increment primary key,"+ "`LENGTH` int,"+ "`LOG_NAME` char(64),"+ "`LOG_ID` int,"+ "`CART_NUMBER` int unsigned,"+ "`CUT_NUMBER` int,"+ "`TITLE` char(255),"+ "`ARTIST` char(255),"+ "`PUBLISHER` char(64),"+ "`COMPOSER` char(64),"+ "`USER_DEFINED` char(255),"+ "`SONG_ID` char(32),"+ "`ALBUM` char(255),"+ "`LABEL` char(64),"+ "`CONDUCTOR` char(64),"+ "`USAGE_CODE` int,"+ "`DESCRIPTION` char(64),"+ "`OUTCUE` char(64),"+ "`ISRC` char(12),"+ "`ISCI` char(32),"+ "`STATION_NAME` char(64),"+ "`EVENT_DATETIME` datetime,"+ "`SCHEDULED_TIME` time,"+ "`EVENT_TYPE` int,"+ "`EVENT_SOURCE` int,"+ "`PLAY_SOURCE` int,"+ "`START_SOURCE` int default 0,"+ "`ONAIR_FLAG` enum('N','Y') default 'N',"+ "`EXT_START_TIME` time,"+ "`EXT_LENGTH` int,"+ "`EXT_CART_NAME` char(32),"+ "`EXT_DATA` char(32),"+ "`EXT_EVENT_ID` char(8),"+ "`EXT_ANNC_TYPE` char(8),"+ "index `EVENT_DATETIME_IDX` (`EVENT_DATETIME`))"+ " charset latin1 collate latin1_swedish_ci"+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("select ")+ "`LENGTH`,"+ // 00 "`LOG_NAME`,"+ // 01 "`LOG_ID`,"+ // 02 "`CART_NUMBER`,"+ // 03 "`CUT_NUMBER`,"+ // 04 "`TITLE`,"+ // 05 "`ARTIST`,"+ // 06 "`PUBLISHER`,"+ // 07 "`COMPOSER`,"+ // 08 "`USER_DEFINED`,"+ // 09 "`SONG_ID`,"+ // 10 "`ALBUM`,"+ // 11 "`LABEL`,"+ // 12 "`CONDUCTOR`,"+ // 13 "`USAGE_CODE`,"+ // 14 "`DESCRIPTION`,"+ // 15 "`OUTCUE`,"+ // 16 "`ISRC`,"+ // 17 "`ISCI`,"+ // 18 "`STATION_NAME`,"+ // 19 "`EVENT_DATETIME`,"+ // 20 "`SCHEDULED_TIME`,"+ // 21 "`EVENT_TYPE`,"+ // 22 "`EVENT_SOURCE`,"+ // 23 "`PLAY_SOURCE`,"+ // 24 "`START_SOURCE`,"+ // 25 "`ONAIR_FLAG`,"+ // 26 "`EXT_START_TIME`,"+ // 27 "`EXT_LENGTH`,"+ // 28 "`EXT_CART_NAME`,"+ // 29 "`EXT_DATA`,"+ // 30 "`EXT_EVENT_ID`,"+ // 31 "`EXT_ANNC_TYPE` "+ // 32 "from `ELR_LINES` where "+ "`SERVICE_NAME`='"+RDEscapeString(q->value(0).toString())+"'"; q1=new RDSqlQuery(sql,false); while(q1->next()) { sql=QString("insert into `")+tablename+"` set "+ QString().sprintf("`LENGTH`=%d,",q1->value(0).toInt())+ "`LOG_NAME`='"+RDEscapeString(q1->value(1).toString())+"',"+ QString().sprintf("`LOG_ID`=%d,",q1->value(2).toInt())+ QString().sprintf("`CART_NUMBER`=%u,",q1->value(3).toUInt())+ QString().sprintf("`CUT_NUMBER`=%d,",q1->value(4).toInt())+ "`TITLE`='"+RDEscapeString(q1->value(5).toString())+"',"+ "`ARTIST`='"+RDEscapeString(q1->value(6).toString())+"',"+ "`PUBLISHER`='"+RDEscapeString(q1->value(7).toString())+"',"+ "`COMPOSER`='"+RDEscapeString(q1->value(8).toString())+"',"+ "`USER_DEFINED`='"+RDEscapeString(q1->value(9).toString())+"',"+ "`SONG_ID`='"+RDEscapeString(q1->value(10).toString())+"',"+ "`ALBUM`='"+RDEscapeString(q1->value(11).toString())+"',"+ "`LABEL`='"+RDEscapeString(q1->value(12).toString())+"',"+ "`CONDUCTOR`='"+RDEscapeString(q1->value(13).toString())+"',"+ "`USAGE_CODE`='"+RDEscapeString(q1->value(14).toString())+"',"+ "`DESCRIPTION`='"+RDEscapeString(q1->value(15).toString())+"',"+ "`OUTCUE`='"+RDEscapeString(q1->value(16).toString())+"',"+ "`ISRC`='"+RDEscapeString(q1->value(17).toString())+"',"+ "`ISCI`='"+RDEscapeString(q1->value(18).toString())+"',"+ "`STATION_NAME`='"+RDEscapeString(q1->value(19).toString())+"',"+ "`EVENT_DATETIME`="+ RDCheckDateTime(q1->value(20).toDateTime(),"yyyy-MM-dd hh:mm:ss")+","+ "`SCHEDULED_TIME`="+ RDCheckDateTime(q1->value(21).toTime(),"hh:mm:ss")+","+ QString().sprintf("`EVENT_TYPE`=%d,",q1->value(22).toInt())+ QString().sprintf("`EVENT_SOURCE`=%d,",q1->value(23).toInt())+ QString().sprintf("`PLAY_SOURCE`=%d,",q1->value(24).toInt())+ QString().sprintf("`START_SOURCE`=%d,",q1->value(25).toInt())+ "`ONAIR_FLAG`='"+RDEscapeString(q1->value(26).toString())+"',"+ "`EXT_START_TIME`="+ RDCheckDateTime(q1->value(27).toTime(),"hh:mm:ss")+","+ QString().sprintf("`EXT_LENGTH`=%d,",q1->value(28).toInt())+ "`EXT_CART_NAME`='"+RDEscapeString(q1->value(29).toString())+"',"+ "`EXT_DATA`='"+RDEscapeString(q1->value(30).toString())+"',"+ "`EXT_EVENT_ID`='"+RDEscapeString(q1->value(31).toString())+"',"+ "`EXT_ANNC_TYPE`='"+RDEscapeString(q1->value(32).toString())+"'"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q1; } delete q; if(!DropTable("ELR_LINES",err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 288 // if((cur_schema==288)&&(set_schemanext()) { QString tablename=q->value(0).toString()+"_LOG"; tablename.replace(" ","_"); sql=QString("create table if not exists `")+tablename+"` ("+ "`ID` int not null primary key,"+ "`COUNT` int not null,"+ "`TYPE` int default 0,"+ "`SOURCE` int not null,"+ "`START_TIME` int,"+ "`GRACE_TIME` int default 0,"+ "`CART_NUMBER` int UNSIGNED not null default 0,"+ "`TIME_TYPE` int not null,"+ "`POST_POINT` enum('N','Y') default 'N',"+ "`TRANS_TYPE` int not null,"+ "`START_POINT` int not null default -1,"+ "`END_POINT` int not null default -1,"+ "`FADEUP_POINT` int default -1,"+ QString().sprintf("`FADEUP_GAIN` int default %d,",RD_FADE_DEPTH)+ "`FADEDOWN_POINT` int default -1,"+ QString().sprintf("`FADEDOWN_GAIN` int default %d,",RD_FADE_DEPTH)+ "`SEGUE_START_POINT` int not null default -1,"+ "`SEGUE_END_POINT` int not null default -1,"+ QString().sprintf("`SEGUE_GAIN` int default %d,",RD_FADE_DEPTH)+ "`DUCK_UP_GAIN` int default 0,"+ "`DUCK_DOWN_GAIN` int default 0,"+ "`COMMENT` char(255),"+ "`LABEL` char(64),"+ "`ORIGIN_USER` char(255),"+ "`ORIGIN_DATETIME` datetime,"+ "`EVENT_LENGTH` int default -1,"+ "`LINK_EVENT_NAME` char(64),"+ "`LINK_START_TIME` int,"+ "`LINK_LENGTH` int default 0,"+ "`LINK_START_SLOP` int default 0,"+ "`LINK_END_SLOP` int default 0,"+ "`LINK_ID` int default -1,"+ "`LINK_EMBEDDED` enum('N','Y') default 'N',"+ "`EXT_START_TIME` time,"+ "`EXT_LENGTH` int,"+ "`EXT_CART_NAME` char(32),"+ "`EXT_DATA` char(32),"+ "`EXT_EVENT_ID` char(32),"+ "`EXT_ANNC_TYPE` char(8),"+ "index `COUNT_IDX` (`COUNT`),"+ "index `CART_NUMBER_IDX` (`CART_NUMBER`),"+ "index `LABEL_IDX` (`LABEL`))"+ " charset latin1 collate latin1_swedish_ci"+ db_table_create_postfix; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("select ")+ "`LINE_ID`,"+ // 00 "`COUNT`,"+ // 01 "`TYPE`,"+ // 02 "`SOURCE`,"+ // 03 "`START_TIME`,"+ // 04 "`GRACE_TIME`,"+ // 05 "`CART_NUMBER`,"+ // 06 "`TIME_TYPE`,"+ // 07 "`POST_POINT`,"+ // 08 "`TRANS_TYPE`,"+ // 09 "`START_POINT`,"+ // 10 "`END_POINT`,"+ // 11 "`FADEUP_POINT`,"+ // 12 "`FADEUP_GAIN`,"+ // 13 "`FADEDOWN_POINT`,"+ // 14 "`FADEDOWN_GAIN`,"+ // 15 "`SEGUE_START_POINT`,"+ // 16 "`SEGUE_END_POINT`,"+ // 17 "`SEGUE_GAIN`,"+ // 18 "`DUCK_UP_GAIN`,"+ // 19 "`DUCK_DOWN_GAIN`,"+ // 20 "`COMMENT`,"+ // 21 "`LABEL`,"+ // 22 "`ORIGIN_USER`,"+ // 23 "`ORIGIN_DATETIME`,"+ // 24 "`EVENT_LENGTH`,"+ // 25 "`LINK_EVENT_NAME`,"+ // 26 "`LINK_START_TIME`,"+ // 27 "`LINK_LENGTH`,"+ // 28 "`LINK_START_SLOP`,"+ // 29 "`LINK_END_SLOP`,"+ // 30 "`LINK_ID`,"+ // 31 "`LINK_EMBEDDED`,"+ // 32 "`EXT_START_TIME`,"+ // 33 "`EXT_LENGTH`,"+ // 34 "`EXT_CART_NAME`,"+ // 35 "`EXT_DATA`,"+ // 36 "`EXT_EVENT_ID`,"+ // 37 "`EXT_ANNC_TYPE` "+ // 38 "from `LOG_LINES` where "+ "`LOG_NAME`='"+RDEscapeString(q->value(0).toString())+"' "+ "order by `COUNT`"; q1=new RDSqlQuery(sql); while(q1->next()) { sql=QString("insert into `")+tablename+"` set "+ QString().sprintf("`ID`=%d,",q1->value(0).toInt())+ QString().sprintf("`COUNT`=%d,",q1->value(1).toInt())+ QString().sprintf("`TYPE`=%d,",q1->value(2).toInt())+ QString().sprintf("`SOURCE`=%d,",q1->value(3).toInt())+ QString().sprintf("`START_TIME`=%d,",q1->value(4).toInt())+ QString().sprintf("`GRACE_TIME`=%d,",q1->value(5).toInt())+ QString().sprintf("`CART_NUMBER`=%u,",q1->value(6).toUInt())+ QString().sprintf("`TIME_TYPE`=%d,",q1->value(7).toInt())+ "`POST_POINT`='"+RDEscapeString(q1->value(8).toString())+"',"+ QString().sprintf("`TRANS_TYPE`=%d,",q1->value(9).toInt())+ QString().sprintf("`START_POINT`=%d,",q1->value(10).toInt())+ QString().sprintf("`END_POINT`=%d,",q1->value(11).toInt())+ QString().sprintf("`FADEUP_POINT`=%d,",q1->value(12).toInt())+ QString().sprintf("`FADEUP_GAIN`=%d,",q1->value(13).toInt())+ QString().sprintf("`FADEDOWN_POINT`=%d,",q1->value(14).toInt())+ QString().sprintf("`FADEDOWN_GAIN`=%d,",q1->value(15).toInt())+ QString().sprintf("`SEGUE_START_POINT`=%d,",q1->value(16).toInt())+ QString().sprintf("`SEGUE_END_POINT`=%d,",q1->value(17).toInt())+ QString().sprintf("`SEGUE_GAIN`=%d,",q1->value(18).toInt())+ QString().sprintf("`DUCK_UP_GAIN`=%d,",q1->value(19).toInt())+ QString().sprintf("`DUCK_DOWN_GAIN`=%d,",q1->value(20).toInt())+ "`COMMENT`='"+RDEscapeString(q1->value(21).toString())+"',"+ "`LABEL`='"+RDEscapeString(q1->value(22).toString())+"',"+ "`ORIGIN_USER`='"+RDEscapeString(q1->value(23).toString())+"',"+ "`ORIGIN_DATETIME`="+ RDCheckDateTime(q1->value(24).toDateTime(),"yyyy-MM-dd hh:mm:ss")+","+ QString().sprintf("`EVENT_LENGTH`=%d,",q1->value(25).toInt())+ "`LINK_EVENT_NAME`='"+RDEscapeString(q1->value(26).toString())+"',"+ QString().sprintf("`LINK_START_TIME`=%d,",q1->value(27).toInt())+ QString().sprintf("`LINK_LENGTH`=%d,",q1->value(28).toInt())+ QString().sprintf("`LINK_START_SLOP`=%d,",q1->value(29).toInt())+ QString().sprintf("`LINK_END_SLOP`=%d,",q1->value(30).toInt())+ QString().sprintf("`LINK_ID`=%d,",q1->value(31).toInt())+ "`LINK_EMBEDDED`='"+RDEscapeString(q1->value(32).toString())+"',"+ "`EXT_START_TIME`="+ RDCheckDateTime(q1->value(33).toTime(),"hh:mm:ss")+","+ QString().sprintf("`EXT_LENGTH`=%d,",q1->value(34).toInt())+ "`EXT_CART_NAME`='"+RDEscapeString(q1->value(35).toString())+"',"+ "`EXT_DATA`='"+RDEscapeString(q1->value(36).toString())+"',"+ "`EXT_EVENT_ID`='"+RDEscapeString(q1->value(37).toString())+"',"+ "`EXT_ANNC_TYPE`='"+RDEscapeString(q1->value(38).toString())+"'"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q1; } delete q; if(!DropTable("LOG_LINES",err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 287 // if((cur_schema==287)&&(set_schema=0;i--) { sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`STOP_RML%d` char(255) after `STATION`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`START_RML%d` char(255) after `STATION`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`PORT%d` int default 0 after `STATION`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`CARD%d` int default 0 after `STATION`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } sql=QString("alter table `RDAIRPLAY` add column ")+ "`OP_MODE` int default 2 after `TRANS_LENGTH`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ "`START_MODE` int default 0 after `OP_MODE`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDPANEL` add column `INSTANCE` int unsigned ")+ "not null default 0 after `STATION`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } for(int i=9;i>=6;i--) { sql=QString("alter table `RDPANEL` add column ")+ QString().sprintf("`STOP_RML%d` char(255) after `INSTANCE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDPANEL` add column ")+ QString().sprintf("`START_RML%d` char(255) after `INSTANCE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDPANEL` add column ")+ QString().sprintf("`PORT%d` int default 0 after `INSTANCE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDPANEL` add column ")+ QString().sprintf("`CARD%d` int default 0 after `INSTANCE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } for(int i=3;i>=2;i--) { sql=QString("alter table `RDPANEL` add column ")+ QString().sprintf("`STOP_RML%d` char(255) after `INSTANCE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDPANEL` add column ")+ QString().sprintf("`START_RML%d` char(255) after `INSTANCE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDPANEL` add column ")+ QString().sprintf("`PORT%d` int default 0 after `INSTANCE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDPANEL` add column ")+ QString().sprintf("`CARD%d` int default 0 after `INSTANCE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } sql=QString("alter table `MATRICES` alter column `PORT` drop default"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `MATRICES` alter column `PORT_2` drop default"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `MATRICES` alter column `INPUTS` drop default"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `MATRICES` alter column `OUTPUTS` drop default"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `MATRICES` alter column `GPIS` drop default"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `MATRICES` alter column `GPOS` drop default"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `REPLICATORS` alter column `TYPE_ID` drop default"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 283 // if((cur_schema==283)&&(set_schemanext()) { for(int i=0;i<8;i++) { sql=QString("insert into `AUDIO_PORTS` set ")+ "`STATION_NAME`='"+RDEscapeString(q->value(0).toString())+"',"+ QString().sprintf("`CARD_NUMBER`=%d",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } } delete q; sql=QString("select ")+ "`STATION_NAME`,"+ // 00 "`CARD_NUMBER`,"+ // 01 "`PORT_NUMBER`,"+ // 02 "`LEVEL`,"+ // 03 "`TYPE`,"+ // 04 "`MODE` "+ // 05 "from `AUDIO_INPUTS` where `PORT_NUMBER`<8"; q=new RDSqlQuery(sql,false); while(q->next()) { sql=QString("update `AUDIO_PORTS` set ")+ QString().sprintf("`INPUT_%d_LEVEL`=%d,", q->value(2).toInt(),q->value(3).toInt())+ QString().sprintf("`INPUT_%d_TYPE`=%d,", q->value(2).toInt(),q->value(4).toInt())+ QString().sprintf("`INPUT_%d_MODE`=%d where ", q->value(2).toInt(),q->value(5).toInt())+ "STATION_NAME='"+RDEscapeString(q->value(0).toString())+"' && "+ QString().sprintf("`CARD_NUMBER`=%d",q->value(1).toInt()); } delete q; if(!DropTable("AUDIO_INPUTS",err_msg)) { return false; } sql=QString("select ")+ "`STATION_NAME`,"+ // 00 "`CARD_NUMBER`,"+ // 01 "`PORT_NUMBER`,"+ // 02 "`LEVEL` "+ // 03 "from `AUDIO_OUTPUTS` where `PORT_NUMBER`<8"; q=new RDSqlQuery(sql,false); while(q->next()) { sql=QString("update `AUDIO_PORTS` set ")+ QString().sprintf("`OUTPUT_%d_LEVEL`=%d where ", q->value(2).toInt(),q->value(3).toInt())+ "`STATION_NAME`='"+RDEscapeString(q->value(0).toString())+"' && "+ QString().sprintf("`CARD_NUMBER`=%d",q->value(1).toInt()); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q; if(!DropTable("AUDIO_OUTPUTS",err_msg)) { return false; } sql=QString("select ")+ "`STATION_NAME`,"+ // 00 "`CARD_NUMBER`,"+ // 01 "`CLOCK_SOURCE` "+ // 02 "from `AUDIO_CARDS` where `CARD_NUMBER`<8"; q=new RDSqlQuery(sql,false); while(q->next()) { sql=QString("update `AUDIO_PORTS` set ")+ QString().sprintf("`CLOCK_SOURCE`=%d where ",q->value(2).toInt())+ "`STATION_NAME`='"+RDEscapeString(q->value(0).toString())+"' && "+ QString().sprintf("`CARD_NUMBER`=%d",q->value(1).toInt()); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q; DropColumn("AUDIO_CARDS","CLOCK_SOURCE"); WriteSchemaVersion(--cur_schema); } // // Revert 282 // if((cur_schema==282)&&(set_schema=0;i--) { sql=QString("alter table `STATIONS` add column ")+ QString().sprintf("`CARD%d_OUTPUTS` int default -1 after `ALSA_VERSION`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `STATIONS` add column ")+ QString().sprintf("`CARD%d_INPUTS` int default -1 after `ALSA_VERSION`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `STATIONS` add column ")+ QString().sprintf("`CARD%d_NAME` char(64) after `ALSA_VERSION`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `STATIONS` add column ")+ QString().sprintf("`CARD%d_DRIVER` int default 0 after `ALSA_VERSION`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } if(!DropTable("AUDIO_CARDS",err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 281 // if((cur_schema==281)&&(set_schema=100"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 279 // if((cur_schema==279)&&(set_schema=100"); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 278 // if((cur_schema==278)&&(set_schema=0;i--) { sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`LOG_RML%d` char(255) after `DESCRIPTION_TEMPLATE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`UDP_STRING%d` char(255) after `DESCRIPTION_TEMPLATE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`UDP_PORT%d` int unsigned after `DESCRIPTION_TEMPLATE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`UDP_ADDR%d` char(255) after `DESCRIPTION_TEMPLATE`",i); if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`LOG%d_START_MODE` int default 0 ",i)+ "after `AUDITION_PREROLL`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`LOG%d_NEXT_CART` int unsigned default 0 ",i)+ "after `AUDITION_PREROLL`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`LOG%d_NOW_CART` int unsigned default 0 ",i)+ "after `AUDITION_PREROLL`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`LOG%d_LOG_LINE` int default -1 ",i)+ "after `AUDITION_PREROLL`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`LOG%d_LOG_ID` int default -1 ",i)+ "after `AUDITION_PREROLL`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`LOG%d_RUNNING` enum('N','Y') default 'N' ",i)+ "after `AUDITION_PREROLL`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`LOG%d_CURRENT_LOG` char(64) ",i)+ "after `AUDITION_PREROLL`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`LOG%d_LOG_NAME` char(64) ",i)+ "after `AUDITION_PREROLL`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } sql=QString("alter table `RDAIRPLAY` add column ")+ QString().sprintf("`LOG%d_AUTO_RESTART` enum('N','Y') default 'N' ",i)+ "after `AUDITION_PREROLL`"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } sql=QString("select ")+ "`STATION_NAME`,"+ // 00 "`MACHINE`,"+ // 01 "`START_MODE`,"+ // 02 "`AUTO_RESTART`,"+ // 03 "`LOG_NAME`,"+ // 04 "`CURRENT_LOG`,"+ // 05 "`RUNNING`,"+ // 06 "`LOG_ID`,"+ // 07 "`LOG_LINE`,"+ // 08 "`NOW_CART`,"+ // 09 "`NEXT_CART`,"+ // 10 "`UDP_ADDR`,"+ // 11 "`UDP_PORT`,"+ // 12 "`UDP_STRING`,"+ // 13 "`LOG_RML` "+ // 14 "from `LOG_MACHINES` where "+ "`MACHINE`<3"; q=new RDSqlQuery(sql,false); while(q->next()) { sql=QString("update `RDAIRPLAY` set ")+ QString().sprintf("`UDP_ADDR%d`='",q->value(1).toInt())+ RDEscapeString(q->value(11).toString())+"',"+ QString().sprintf("`UDP_PORT%d`=%u,", q->value(1).toInt(),q->value(12).toUInt())+ QString().sprintf("`UDP_STRING%d`='",q->value(1).toInt())+ RDEscapeString(q->value(13).toString())+"',"+ QString().sprintf("`LOG_RML%d`='",q->value(1).toInt())+ RDEscapeString(q->value(14).toString())+"',"+ QString().sprintf("`LOG%d_START_MODE`=%d,", q->value(1).toInt(),q->value(2).toInt())+ QString().sprintf("`LOG%d_AUTO_RESTART`='",q->value(1).toInt())+ RDEscapeString(q->value(3).toString())+"',"+ QString().sprintf("`LOG%d_LOG_NAME`='",q->value(1).toInt())+ RDEscapeString(q->value(4).toString())+"',"+ QString().sprintf("`LOG%d_CURRENT_LOG`='",q->value(1).toInt())+ RDEscapeString(q->value(5).toString())+"',"+ QString().sprintf("`LOG%d_RUNNING`='",q->value(1).toInt())+ RDEscapeString(q->value(6).toString())+"',"+ QString().sprintf("`LOG%d_LOG_ID`=%d,", q->value(1).toInt(),q->value(7).toInt())+ QString().sprintf("`LOG%d_LOG_LINE`=%d,", q->value(1).toInt(),q->value(8).toInt())+ QString().sprintf("`LOG%d_NOW_CART`=%d,", q->value(1).toInt(),q->value(9).toInt())+ QString().sprintf("`LOG%d_NEXT_CART`=%d ", q->value(1).toInt(),q->value(10).toInt())+ "where `STATION`='"+RDEscapeString(q->value(0).toString())+"'"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q; if(!DropTable("LOG_MACHINES")) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 277 // if((cur_schema==277)&&(set_schemanext()) { sql=QString("update `SERVICES` set ")+ QString().sprintf("`CLOCK%d`=",q->value(1).toInt()); if(q->value(2).isNull()) { sql+="null "; } else { sql+="'"+RDEscapeString(q->value(2).toString())+"' "; } sql+="where `NAME`='"+RDEscapeString(q->value(0).toString())+"'"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q; if(!DropTable("SERVICE_CLOCKS",err_msg)) { return false; } WriteSchemaVersion(--cur_schema); } // // Revert 258 // if((cur_schema==258)&&(set_schemanext()) { tablename=q->value(0).toString(); tablename.replace(" ","_"); sql=QString("alter table ")+ "`"+tablename+"_LOG` "+ "modify column `CART_NUMBER` int unsigned not null"; if(!RDSqlQuery::apply(sql,err_msg)) { return false; } } delete q; WriteSchemaVersion(--cur_schema); } // // Revert 257 // if((cur_schema==257)&&(set_schemanext()) { tablename=q->value(0).toString(); tablename.replace(" ","_"); DropColumn(tablename+"_SRT","DESCRIPTION"); DropColumn(tablename+"_SRT","OUTCUE"); } delete q; WriteSchemaVersion(--cur_schema); } // // Revert 254 // if((cur_schema==254)&&(set_schema