mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-19 22:48:01 +02:00
2021-04-22 Fred Gleason <fredg@paravelsystems.com>
* Escaped all SQL identifiers in 'utils/rddbmgr/'. * Replaced " with ' delimiters in all SQL literal strings in 'utils/rddbmgr/'. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
c2fcc23cfd
commit
7f44ad5780
@ -21559,3 +21559,7 @@
|
||||
* Escaped all SQL identifiers in 'utils/rddbconfig/'.
|
||||
* Replaced " with ' delimiters in all SQL literal strings in
|
||||
'utils/rddbconfig/'.
|
||||
2021-04-22 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Escaped all SQL identifiers in 'utils/rddbmgr/'.
|
||||
* Replaced " with ' delimiters in all SQL literal strings in
|
||||
'utils/rddbmgr/'.
|
||||
|
@ -158,32 +158,32 @@ void MainObject::CheckTableAttributes()
|
||||
// Per-table Attributes
|
||||
//
|
||||
sql=QString("select ")+
|
||||
"TABLE_NAME,"+ // 00
|
||||
"ENGINE,"+ // 01
|
||||
"TABLE_COLLATION "+ // 02
|
||||
"from information_schema.TABLES where "+
|
||||
"TABLE_SCHEMA='"+RDEscapeString(db_mysql_database)+"'";
|
||||
"`TABLE_NAME`,"+ // 00
|
||||
"`ENGINE`,"+ // 01
|
||||
"`TABLE_COLLATION` "+ // 02
|
||||
"from `information_schema`.`TABLES` where "+
|
||||
"`TABLE_SCHEMA`='"+RDEscapeString(db_mysql_database)+"'";
|
||||
q=new RDSqlQuery(sql,false);
|
||||
while(q->next()) {
|
||||
QStringList f0=q->value(2).toString().split("_");
|
||||
QString charset=f0.at(0);
|
||||
if(q->value(1).toString().toLower()!=db_mysql_engine.toLower()) {
|
||||
printf(" Table \"%s\" uses engine type %s, should be %s. Fix? (y/N) ",
|
||||
(const char *)q->value(0).toString().toUtf8(),
|
||||
(const char *)q->value(1).toString().toUtf8(),
|
||||
(const char *)db_mysql_engine.toUtf8());
|
||||
q->value(0).toString().toUtf8().constData(),
|
||||
q->value(1).toString().toUtf8().constData(),
|
||||
db_mysql_engine.toUtf8().constData());
|
||||
fflush(NULL);
|
||||
if(UserResponse()) {
|
||||
sql=QString("alter table `")+q->value(0).toString()+"` "+
|
||||
"ENGINE="+db_mysql_engine;
|
||||
"`ENGINE`="+db_mysql_engine;
|
||||
RDSqlQuery::apply(sql);
|
||||
}
|
||||
}
|
||||
if(q->value(2).toString().toLower()!="utf8mb4_general_ci") {
|
||||
printf(" Table \"%s\" uses charset/collation %s/%s, should be utf8mb4/utf8mb4_general_ci. Fix? (y/N) ",
|
||||
(const char *)q->value(0).toString().toUtf8(),
|
||||
(const char *)charset.toUtf8(),
|
||||
(const char *)q->value(2).toString().toUtf8());
|
||||
q->value(0).toString().toUtf8().constData(),
|
||||
charset.toUtf8().constData(),
|
||||
q->value(2).toString().toUtf8().constData());
|
||||
fflush(NULL);
|
||||
if(UserResponse()) {
|
||||
RewriteTable(q->value(0).toString(),
|
||||
@ -198,18 +198,18 @@ void MainObject::CheckTableAttributes()
|
||||
// Database Attributes
|
||||
//
|
||||
sql=QString("select ")+
|
||||
"SCHEMA_NAME,"+ // 00
|
||||
"DEFAULT_CHARACTER_SET_NAME,"+ // 01
|
||||
"DEFAULT_COLLATION_NAME "+ // 02
|
||||
"from information_schema.SCHEMATA";
|
||||
"`SCHEMA_NAME`,"+ // 00
|
||||
"`DEFAULT_CHARACTER_SET_NAME`,"+ // 01
|
||||
"`DEFAULT_COLLATION_NAME` "+ // 02
|
||||
"from `information_schema`.`SCHEMATA`";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
if(q->value(0).toString()==db_mysql_database) {
|
||||
if((q->value(1).toString().toLower()!="utf8mb4")||
|
||||
(q->value(2).toString().toLower()!="utf8mb4_general_ci")) {
|
||||
printf(" Database uses default charset/collation %s/%s, should be utf8mb4/utf8mb4_general_ci. Fix? (y/N) ",
|
||||
(const char *)q->value(1).toString().toUtf8(),
|
||||
(const char *)q->value(2).toString().toUtf8());
|
||||
q->value(1).toString().toUtf8().constData(),
|
||||
q->value(2).toString().toUtf8().constData());
|
||||
fflush(NULL);
|
||||
if(UserResponse()) {
|
||||
sql=QString("alter database `")+db_mysql_database+"` "+
|
||||
@ -397,10 +397,12 @@ void MainObject::RelinkAudio(const QString &srcdir) const
|
||||
//
|
||||
// Check against audio cuts
|
||||
//
|
||||
sql=QString("select CUTS.CUT_NAME,CART.TITLE from ")+
|
||||
"CUTS left join CART "+
|
||||
"on CUTS.CART_NUMBER=CART.NUMBER where "+
|
||||
"CUTS.SHA1_HASH=\""+RDEscapeString(hash)+"\"";
|
||||
sql=QString("select ")+
|
||||
"`CUTS`.`CUT_NAME`,"+ // 00
|
||||
"`CART`.`TITLE` "+ // 01
|
||||
"from `CUTS` left join `CART` "+
|
||||
"on `CUTS`.`CART_NUMBER`=`CART`.`NUMBER` where "+
|
||||
"`CUTS`.`SHA1_HASH`='"+RDEscapeString(hash)+"'";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
RelinkCut(filename,q->value(0).toString(),q->value(1).toString(),
|
||||
@ -411,13 +413,13 @@ void MainObject::RelinkAudio(const QString &srcdir) const
|
||||
// Check against RSS posts
|
||||
//
|
||||
sql=QString("select ")+
|
||||
"FEEDS.KEY_NAME,"+ // 00
|
||||
"PODCASTS.ID,"+ // 01
|
||||
"PODCASTS.ITEM_TITLE,"+ // 02
|
||||
"PODCASTS.AUDIO_FILENAME "+ // 03
|
||||
"from PODCASTS left join FEEDS "+
|
||||
"on FEEDS.ID=PODCASTS.FEED_ID where "+
|
||||
"PODCASTS.SHA1_HASH=\""+RDEscapeString(hash)+"\"";
|
||||
"`FEEDS`.`KEY_NAME`,"+ // 00
|
||||
"`PODCASTS`.`ID`,"+ // 01
|
||||
"`PODCASTS`.`ITEM_TITLE`,"+ // 02
|
||||
"`PODCASTS`.`AUDIO_FILENAME` "+ // 03
|
||||
"from `PODCASTS` left join `FEEDS` "+
|
||||
"on `FEEDS`.`ID`=`PODCASTS`.`FEED_ID` where "+
|
||||
"`PODCASTS`.`SHA1_HASH`='"+RDEscapeString(hash)+"'";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
RelinkCast(filename,q->value(0).toString(),q->value(1).toUInt(),
|
||||
@ -558,14 +560,20 @@ void MainObject::RelinkCast(const QString &src_filename,const QString &keyname,
|
||||
|
||||
void MainObject::CheckOrphanedTracks() const
|
||||
{
|
||||
QString sql="select NUMBER,TITLE,OWNER from CART where OWNER!=\"\"";
|
||||
QString sql=QString("select ")+
|
||||
"`NUMBER`,"+ // 00
|
||||
"`TITLE`,"+ // 01
|
||||
"`OWNER` "+ // 02
|
||||
"from `CART` where "+
|
||||
"(`OWNER`!='')&&"+
|
||||
"(`OWNER` is not null)";
|
||||
QSqlQuery *q=new QSqlQuery(sql);
|
||||
QSqlQuery *q1;
|
||||
|
||||
while(q->next()) {
|
||||
sql=QString("select LINE_ID from LOG_LINES where ")+
|
||||
"LOG_NAME=\""+RDEscapeString(q->value(2).toString())+"\" && "+
|
||||
QString().sprintf("CART_NUMBER=%u",q->value(0).toUInt());
|
||||
sql=QString("select `LINE_ID` from `LOG_LINES` where ")+
|
||||
"`LOG_NAME`='"+RDEscapeString(q->value(2).toString())+"' && "+
|
||||
QString().sprintf("`CART_NUMBER`=%u",q->value(0).toUInt());
|
||||
q1=new QSqlQuery(sql);
|
||||
if(!q1->first()) {
|
||||
printf(" Found orphaned track %u - \"%s\". Delete? (y/N) ",
|
||||
@ -594,12 +602,16 @@ void MainObject::CheckCutCounts() const
|
||||
QSqlQuery *q;
|
||||
QSqlQuery *q1;
|
||||
|
||||
sql="select NUMBER,CUT_QUANTITY,TITLE from CART";
|
||||
sql=QString("select ")+
|
||||
"`NUMBER`,"+ // 00
|
||||
"`CUT_QUANTITY`,"+ // 01
|
||||
"`TITLE` "+ // 02
|
||||
"from `CART`";
|
||||
q=new QSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
sql=QString().sprintf("select CUT_NAME from CUTS \
|
||||
where (CART_NUMBER=%u)&&(LENGTH>0)",
|
||||
q->value(0).toUInt());
|
||||
sql=QString("select `CUT_NAME` from `CUTS` where ")+
|
||||
QString().sprintf("(`CART_NUMBER`=%u)&&",q->value(0).toUInt())+
|
||||
"(`LENGTH`>0)";
|
||||
q1=new QSqlQuery(sql);
|
||||
if(q1->size()!=q->value(1).toInt()) {
|
||||
printf(" Cart %u [%s] has invalid cut count, fix (y/N)?",
|
||||
@ -623,10 +635,10 @@ void MainObject::CheckPendingCarts() const
|
||||
QSqlQuery *q;
|
||||
QDateTime now(QDate::currentDate(),QTime::currentTime());
|
||||
|
||||
sql=QString("select NUMBER from CART where ")+
|
||||
"(PENDING_STATION is not null)&&"+
|
||||
"(PENDING_DATETIME<\""+now.addDays(-1).
|
||||
toString("yyyy-MM-dd hh:mm:ss")+"\")";
|
||||
sql=QString("select `NUMBER` from `CART` where ")+
|
||||
"(`PENDING_STATION` is not null)&&"+
|
||||
"(`PENDING_DATETIME`<'"+now.addDays(-1).
|
||||
toString("yyyy-MM-dd hh:mm:ss")+"')";
|
||||
q=new QSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
printf(" Cart %06u has stale reservation, delete cart(y/N)?",
|
||||
@ -645,8 +657,12 @@ void MainObject::CheckOrphanedCarts() const
|
||||
QSqlQuery *q;
|
||||
QSqlQuery *q1;
|
||||
|
||||
sql="select CART.NUMBER,CART.TITLE from CART left join GROUPS \
|
||||
on CART.GROUP_NAME=GROUPS.NAME where GROUPS.NAME is null";
|
||||
sql=QString("select ")+
|
||||
"`CART`.`NUMBER`,"+
|
||||
"`CART`.`TITLE` "+
|
||||
"from `CART` left join `GROUPS` "+
|
||||
"on `CART`.`GROUP_NAME`=`GROUPS`.`NAME` where "+
|
||||
"`GROUPS`.`NAME` is null";
|
||||
q=new QSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
printf(" Cart %06u [%s] has missing/invalid group.\n",
|
||||
@ -658,10 +674,9 @@ void MainObject::CheckOrphanedCarts() const
|
||||
printf(" Assign to group \"%s\" (y/N)?",
|
||||
db_orphan_group_name.toUtf8().constData());
|
||||
if(UserResponse()) {
|
||||
sql=QString().
|
||||
sprintf("update CART set GROUP_NAME=\"%s\" where NUMBER=%u",
|
||||
RDEscapeString(db_orphan_group_name).toUtf8().constData(),
|
||||
q->value(0).toUInt());
|
||||
sql=QString("update `CART` set ")+
|
||||
"`GROUP_NAME`='"+RDEscapeString(db_orphan_group_name)+"' "+
|
||||
QString().sprintf("where `NUMBER`=%u",q->value(0).toUInt());
|
||||
q1=new QSqlQuery(sql);
|
||||
delete q1;
|
||||
}
|
||||
@ -680,8 +695,12 @@ void MainObject::CheckOrphanedCuts() const
|
||||
QSqlQuery *q2;
|
||||
QFileInfo *file=NULL;
|
||||
|
||||
sql="select CUTS.CUT_NAME,CUTS.DESCRIPTION from CUTS left join CART \
|
||||
on CUTS.CART_NUMBER=CART.NUMBER where CART.NUMBER is null";
|
||||
sql=QString("select ")+
|
||||
"`CUTS`.`CUT_NAME`,"+ // 00
|
||||
"`CUTS`.`DESCRIPTION` "+ // 01
|
||||
"from `CUTS` left join `CART` "+
|
||||
"on `CUTS`.`CART_NUMBER`=`CART`.`NUMBER` "+
|
||||
"where `CART`.`NUMBER` is null";
|
||||
q=new QSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
printf(" Cut %s [%s] is orphaned.\n",
|
||||
@ -690,7 +709,7 @@ void MainObject::CheckOrphanedCuts() const
|
||||
//
|
||||
// Try to repair it
|
||||
//
|
||||
sql=QString().sprintf("select NUMBER from CART where NUMBER=%d",
|
||||
sql=QString().sprintf("select `NUMBER` from `CART` where `NUMBER`=%d",
|
||||
q->value(0).toString().left(6).toUInt());
|
||||
q1=new QSqlQuery(sql);
|
||||
if(q1->first()) {
|
||||
@ -700,7 +719,7 @@ void MainObject::CheckOrphanedCuts() const
|
||||
// FIXME: Regen Cart Data
|
||||
//
|
||||
sql=QString().
|
||||
sprintf("update CUTS set CART_NUMBER=%u where CUT_NAME=\"%s\"",
|
||||
sprintf("update `CUTS` set `CART_NUMBER`=%u where `CUT_NAME`='%s'",
|
||||
q1->value(0).toUInt(),
|
||||
q->value(0).toString().toUtf8().constData());
|
||||
q2=new QSqlQuery(sql);
|
||||
@ -720,7 +739,7 @@ void MainObject::CheckOrphanedCuts() const
|
||||
if(!file->exists()) {
|
||||
printf(" Clear it (y/N)?");
|
||||
if(UserResponse()) {
|
||||
sql=QString().sprintf("delete from CUTS where CUT_NAME=\"%s\"",
|
||||
sql=QString().sprintf("delete from `CUTS` where `CUT_NAME`='%s'",
|
||||
q->value(0).toString().toUtf8().constData());
|
||||
q1=new QSqlQuery(sql);
|
||||
delete q1;
|
||||
@ -734,7 +753,7 @@ void MainObject::CheckOrphanedCuts() const
|
||||
printf(" Clear it (y/N)?");
|
||||
if(UserResponse()) {
|
||||
system(("mv "+file->filePath()+" "+db_dump_cuts_dir+"/").toUtf8());
|
||||
sql=QString().sprintf("delete from CUTS where CUT_NAME=\"%s\"",
|
||||
sql=QString().sprintf("delete from `CUTS` where `CUT_NAME`='%s'",
|
||||
q->value(0).toString().toUtf8().constData());
|
||||
q1=new QSqlQuery(sql);
|
||||
delete q1;
|
||||
@ -765,9 +784,9 @@ void MainObject::CheckOrphanedAudio() const
|
||||
list[i].mid(7,3).toInt(&ok);
|
||||
if(ok) {
|
||||
QString sql=QString("select ")+
|
||||
"CUT_NAME "+
|
||||
"from CUTS where "+
|
||||
"CUT_NAME=\""+RDEscapeString(list.at(i).left(10))+"\"";
|
||||
"`CUT_NAME` "+
|
||||
"from `CUTS` where "+
|
||||
"`CUT_NAME`='"+RDEscapeString(list.at(i).left(10))+"'";
|
||||
QSqlQuery *q=new QSqlQuery(sql);
|
||||
if(!q->first()) {
|
||||
printf(" File \"%s/%s\" is orphaned.\n",
|
||||
@ -806,7 +825,11 @@ void MainObject::ValidateAudioLengths() const
|
||||
QSqlQuery *q;
|
||||
RDWaveFile *wave=NULL;
|
||||
|
||||
sql="select CUT_NAME,CART_NUMBER,LENGTH from CUTS order by CART_NUMBER";
|
||||
sql=QString("select ")+
|
||||
"`CUT_NAME`,"+
|
||||
"`CART_NUMBER`,"+
|
||||
"`LENGTH` "+
|
||||
"from `CUTS` order by `CART_NUMBER`";
|
||||
q=new QSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
if(q->value(2).toInt()>0) {
|
||||
@ -834,9 +857,9 @@ void MainObject::Rehash(const QString &arg) const
|
||||
bool ok=false;
|
||||
|
||||
if(arg.toLower()=="all") {
|
||||
sql=QString("select NUMBER from CART where ")+
|
||||
QString().sprintf("TYPE=%d ",RDCart::Audio)+
|
||||
"order by NUMBER";
|
||||
sql=QString("select `NUMBER` from `CART` where ")+
|
||||
QString().sprintf("`TYPE`=%d ",RDCart::Audio)+
|
||||
"order by `NUMBER`";
|
||||
q=new QSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
RehashCart(q->value(0).toUInt());
|
||||
@ -862,9 +885,9 @@ void MainObject::RehashCart(unsigned cartnum) const
|
||||
RDCart *cart=new RDCart(cartnum);
|
||||
if(cart->exists()) {
|
||||
if(cart->type()==RDCart::Audio) {
|
||||
QString sql=QString("select CUT_NAME from CUTS where ")+
|
||||
QString().sprintf("CART_NUMBER=%u ",cartnum)+
|
||||
"order by CUT_NAME";
|
||||
QString sql=QString("select `CUT_NAME` from `CUTS` where ")+
|
||||
QString().sprintf("`CART_NUMBER`=%u ",cartnum)+
|
||||
"order by `CUT_NAME`";
|
||||
QSqlQuery *q=new QSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
RehashCut(q->value(0).toString());
|
||||
@ -930,20 +953,20 @@ void MainObject::SetCutLength(const QString &cutname,int len) const
|
||||
fflush(NULL);
|
||||
if(UserResponse()) {
|
||||
fflush(NULL);
|
||||
sql=QString("update CUTS set ")+
|
||||
"START_POINT=0,"+
|
||||
QString().sprintf("END_POINT=%d,",len)+
|
||||
"FADEUP_POINT=-1,"+
|
||||
"FADEDOWN_POINT=-1,"+
|
||||
"SEGUE_START_POINT=-1,"+
|
||||
"SEGUE_END_POINT=-1,"+
|
||||
"TALK_START_POINT=-1,"+
|
||||
"TALK_END_POINT=-1,"+
|
||||
"HOOK_START_POINT=-1,"+
|
||||
"HOOK_END_POINT=-1,"+
|
||||
"PLAY_GAIN=0,"+
|
||||
QString().sprintf("LENGTH=%d where ",len)+
|
||||
"CUT_NAME=\""+RDEscapeString(cutname)+"\"";
|
||||
sql=QString("update `CUTS` set ")+
|
||||
"`START_POINT`=0,"+
|
||||
QString().sprintf("`END_POINT`=%d,",len)+
|
||||
"`FADEUP_POINT`=-1,"+
|
||||
"`FADEDOWN_POINT`=-1,"+
|
||||
"`SEGUE_START_POINT`=-1,"+
|
||||
"`SEGUE_END_POINT`=-1,"+
|
||||
"`TALK_START_POINT`=-1,"+
|
||||
"`TALK_END_POINT`=-1,"+
|
||||
"`HOOK_START_POINT`=-1,"+
|
||||
"`HOOK_END_POINT`=-1,"+
|
||||
"`PLAY_GAIN`=0,"+
|
||||
QString().sprintf("`LENGTH`=%d where ",len)+
|
||||
"`CUT_NAME`='"+RDEscapeString(cutname)+"'";
|
||||
q=new QSqlQuery(sql);
|
||||
delete q;
|
||||
cart->updateLength();
|
||||
@ -1031,8 +1054,8 @@ void MainObject::CheckSchedCodeRules(bool prompt_user) const
|
||||
// Check that we have at least one schedule code
|
||||
//
|
||||
sql=QString("select ")+
|
||||
"CODE "+ // 00
|
||||
"from SCHED_CODES";
|
||||
"`CODE` "+ // 00
|
||||
"from `SCHED_CODES`";
|
||||
q=new RDSqlQuery(sql);
|
||||
if(!q->first()) {
|
||||
delete q;
|
||||
@ -1044,19 +1067,19 @@ void MainObject::CheckSchedCodeRules(bool prompt_user) const
|
||||
// Check for orphaned rules
|
||||
//
|
||||
sql=QString("select ")+
|
||||
"NAME "+ // 00
|
||||
"from CLOCKS order by NAME";
|
||||
"`NAME` "+ // 00
|
||||
"from `CLOCKS` order by `NAME`";
|
||||
q=new RDSqlQuery(sql);
|
||||
QString where_sql="";
|
||||
while(q->next()) {
|
||||
where_sql+="(CLOCK_NAME!=\""+RDEscapeString(q->value(0).toString())+"\")&&";
|
||||
where_sql+="(`CLOCK_NAME`!='"+RDEscapeString(q->value(0).toString())+"')&&";
|
||||
}
|
||||
where_sql=where_sql.left(where_sql.length()-2);
|
||||
delete q;
|
||||
|
||||
sql=QString("select ")+
|
||||
"ID " // 00
|
||||
"from RULE_LINES where "+
|
||||
"`ID` " // 00
|
||||
"from `RULE_LINES` where "+
|
||||
where_sql;
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
@ -1076,27 +1099,27 @@ void MainObject::CheckSchedCodeRules(bool prompt_user) const
|
||||
// Check for missing rules
|
||||
//
|
||||
sql=QString("select ")+
|
||||
"NAME "+ // 00
|
||||
"from CLOCKS order by NAME";
|
||||
"`NAME` "+ // 00
|
||||
"from `CLOCKS` order by `NAME`";
|
||||
RDSqlQuery *clock_q=new RDSqlQuery(sql);
|
||||
while(clock_q->next()) {
|
||||
QString clkname=clock_q->value(0).toString();
|
||||
sql=QString("select ")+
|
||||
"CODE "+ // 00
|
||||
"from SCHED_CODES order by CODE";
|
||||
"`CODE` "+ // 00
|
||||
"from `SCHED_CODES` order by CODE";
|
||||
RDSqlQuery *code_q=new RDSqlQuery(sql);
|
||||
while(code_q->next()) {
|
||||
QString code=code_q->value(0).toString();
|
||||
sql=QString("select ")+
|
||||
"ID "+ // 00
|
||||
"from RULE_LINES where "+
|
||||
"CLOCK_NAME=\""+RDEscapeString(clkname)+"\" && "+
|
||||
"CODE=\""+RDEscapeString(code)+"\"";
|
||||
"`ID` "+ // 00
|
||||
"from `RULE_LINES` where "+
|
||||
"`CLOCK_NAME`='"+RDEscapeString(clkname)+"' && "+
|
||||
"`CODE`='"+RDEscapeString(code)+"'";
|
||||
q=new RDSqlQuery(sql);
|
||||
if(!q->first()) {
|
||||
sql=QString("insert into RULE_LINES set ")+
|
||||
"CLOCK_NAME=\""+RDEscapeString(clkname)+"\","+
|
||||
"CODE=\""+RDEscapeString(code)+"\"";
|
||||
sql=QString("insert into `RULE_LINES` set ")+
|
||||
"`CLOCK_NAME`='"+RDEscapeString(clkname)+"',"+
|
||||
"`CODE`='"+RDEscapeString(code)+"'";
|
||||
RDSqlQuery::apply(sql);
|
||||
}
|
||||
delete q;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@
|
||||
//
|
||||
// Routines for --modify for rddbmgr(8)
|
||||
//
|
||||
// (C) Copyright 2018 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2018-2021 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// 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
|
||||
@ -20,8 +20,6 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <qstringlist.h>
|
||||
|
||||
#include <dbversion.h>
|
||||
#include <rddb.h>
|
||||
#include <rdescape_string.h>
|
||||
@ -79,10 +77,10 @@ bool MainObject::ModifyCharset(const QString &charset,
|
||||
// Per-table Attributes
|
||||
//
|
||||
sql=QString("select ")+
|
||||
"TABLE_NAME,"+ // 00
|
||||
"TABLE_COLLATION "+ // 01
|
||||
"from information_schema.TABLES where "+
|
||||
"TABLE_SCHEMA='"+RDEscapeString(db_mysql_database)+"'";
|
||||
"`TABLE_NAME`,"+ // 00
|
||||
"`TABLE_COLLATION` "+ // 01
|
||||
"from `information_schema`.`TABLES` where "+
|
||||
"`TABLE_SCHEMA`='"+RDEscapeString(db_mysql_database)+"'";
|
||||
q=new RDSqlQuery(sql,false);
|
||||
while(q->next()) {
|
||||
QStringList f0=q->value(1).toString().split("_");
|
||||
@ -98,10 +96,10 @@ bool MainObject::ModifyCharset(const QString &charset,
|
||||
// Database Attributes
|
||||
//
|
||||
sql=QString("select ")+
|
||||
"SCHEMA_NAME,"+ // 00
|
||||
"DEFAULT_CHARACTER_SET_NAME,"+ // 01
|
||||
"DEFAULT_COLLATION_NAME "+ // 02
|
||||
"from information_schema.SCHEMATA";
|
||||
"`SCHEMA_NAME`,"+ // 00
|
||||
"`DEFAULT_CHARACTER_SET_NAME`,"+ // 01
|
||||
"`DEFAULT_COLLATION_NAME` "+ // 02
|
||||
"from `information_schema`.`SCHEMATA`";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
if(q->value(0).toString()==db_mysql_database) {
|
||||
@ -116,4 +114,3 @@ bool MainObject::ModifyCharset(const QString &charset,
|
||||
delete q;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -277,8 +277,8 @@ MainObject::MainObject(QObject *parent)
|
||||
|
||||
// Check that Orphan group exists
|
||||
if(!db_orphan_group_name.isEmpty()) {
|
||||
QString sql=QString("select NAME from GROUPS where ")+
|
||||
"NAME=\""+RDEscapeString(db_orphan_group_name)+"\"";
|
||||
QString sql=QString("select `NAME` from `GROUPS` where ")+
|
||||
"NAME='"+RDEscapeString(db_orphan_group_name)+"'";
|
||||
RDSqlQuery *q=new RDSqlQuery(sql,false);
|
||||
if(!q->first()) {
|
||||
fprintf(stderr,"rddbmgr: invalid group \"%s\"\n",
|
||||
@ -380,8 +380,8 @@ MainObject::MainObject(QObject *parent)
|
||||
|
||||
void MainObject::WriteSchemaVersion(int ver) const
|
||||
{
|
||||
QString sql=QString("update VERSION set ")+
|
||||
QString().sprintf("DB=%d",ver);
|
||||
QString sql=QString("update `VERSION` set ")+
|
||||
QString().sprintf("`DB`=%d",ver);
|
||||
RDSqlQuery::apply(sql);
|
||||
}
|
||||
|
||||
@ -393,7 +393,7 @@ bool MainObject::TableExists(const QString &tbl_name) const
|
||||
bool ret=false;
|
||||
|
||||
sql=QString("show tables where ")+
|
||||
"Tables_in_"+db_config->mysqlDbname()+"=\""+RDEscapeString(tbl_name)+"\"";
|
||||
"`Tables_in_"+db_config->mysqlDbname()+"`='"+RDEscapeString(tbl_name)+"'";
|
||||
q=new RDSqlQuery(sql,false);
|
||||
ret=q->first();
|
||||
delete q;
|
||||
@ -409,7 +409,7 @@ bool MainObject::DropTable(const QString &tbl_name,QString *err_msg) const
|
||||
bool ret=false;
|
||||
|
||||
sql=QString("show tables where ")+
|
||||
"Tables_in_"+db_config->mysqlDbname()+"=\""+RDEscapeString(tbl_name)+"\"";
|
||||
"`Tables_in_"+db_config->mysqlDbname()+"`='"+RDEscapeString(tbl_name)+"'";
|
||||
q=new RDSqlQuery(sql,false);
|
||||
if(q->first()) {
|
||||
sql=QString("drop table `")+q->value(0).toString()+"`";
|
||||
@ -432,10 +432,10 @@ bool MainObject::ColumnExists(const QString &tbl_name,
|
||||
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+"\"";
|
||||
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;
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user