2018-07-17 Fred Gleason <fredg@paravelsystems.com>

* Cleaned up SQL quieries in 'rdrepld/' to ensure UTF-8
	compatibility.
This commit is contained in:
Fred Gleason 2018-07-17 23:13:16 +00:00
parent cbec82b0d4
commit 6e2b2a7e0b
3 changed files with 60 additions and 71 deletions

View File

@ -17158,3 +17158,6 @@
2018-07-17 Fred Gleason <fredg@paravelsystems.com> 2018-07-17 Fred Gleason <fredg@paravelsystems.com>
* Cleaned up SQL quieries in 'rdlogmanager/' to ensure UTF-8 * Cleaned up SQL quieries in 'rdlogmanager/' to ensure UTF-8
compatibility. compatibility.
2018-07-17 Fred Gleason <fredg@paravelsystems.com>
* Cleaned up SQL quieries in 'rdrepld/' to ensure UTF-8
compatibility.

View File

@ -264,55 +264,41 @@ void CitadelXds::CheckCarts()
where (LATEST_DATE>=now())&&((TYPE=\"R\")||(TYPE=\"B\"))"; where (LATEST_DATE>=now())&&((TYPE=\"R\")||(TYPE=\"B\"))";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
sql=QString().sprintf("select REPL_CART_STATE.ID from \ sql=QString("select REPL_CART_STATE.ID from ")+
REPL_CART_STATE left join CUTS \ "REPL_CART_STATE left join CUTS "+
on REPL_CART_STATE.CART_NUMBER=CUTS.CART_NUMBER \ "on REPL_CART_STATE.CART_NUMBER=CUTS.CART_NUMBER where "+
where (CUTS.ORIGIN_DATETIME<REPL_CART_STATE.ITEM_DATETIME)&&\ "(CUTS.ORIGIN_DATETIME<REPL_CART_STATE.ITEM_DATETIME)&&"+
(REPL_CART_STATE.REPLICATOR_NAME=\"%s\")&&\ "(REPL_CART_STATE.REPLICATOR_NAME=\""+
(REPL_CART_STATE.CART_NUMBER=%u)&&\ RDEscapeString(config()->name())+"\")&&"+
(REPL_CART_STATE.POSTED_FILENAME=\"%s\")&&\ QString().sprintf("(REPL_CART_STATE.CART_NUMBER=%u)&&",q->value(0).toUInt())+
(REPL_CART_STATE.ITEM_DATETIME>\"%s\")&&\ "(REPL_CART_STATE.POSTED_FILENAME=\""+
(REPL_CART_STATE.REPOST=\"N\")", RDEscapeString(q->value(1).toString())+"\")&&"+
(const char *)RDEscapeString(config()->name()), "(REPL_CART_STATE.ITEM_DATETIME>\""+RDEscapeString(now)+"\")&&"+
q->value(0).toUInt(), "(REPL_CART_STATE.REPOST=\"N\")";
(const char *)RDEscapeString(q->value(1).toString()),
(const char *)now);
q1=new RDSqlQuery(sql); q1=new RDSqlQuery(sql);
if(!q1->first()) { if(!q1->first()) {
if(PostCut(RDCut::cutName(q->value(0).toUInt(),1), if(PostCut(RDCut::cutName(q->value(0).toUInt(),1),
q->value(1).toString())) { q->value(1).toString())) {
sql=QString().sprintf("select ID from REPL_CART_STATE where \ sql=QString("select ID from REPL_CART_STATE where ")+
(REPLICATOR_NAME=\"%s\")&&\ "(REPLICATOR_NAME=\""+RDEscapeString(config()->name())+"\")&&"+
(CART_NUMBER=%u)&&\ QString().sprintf("(CART_NUMBER=%u)&&",q->value(0).toUInt())+
(POSTED_FILENAME=\"%s\")", "(POSTED_FILENAME=\""+RDEscapeString(q->value(1).toString())+"\")";
(const char *)RDEscapeString(config()->name()),
q->value(0).toUInt(),
(const char *)RDEscapeString(q->value(1).
toString()));
q2=new RDSqlQuery(sql); q2=new RDSqlQuery(sql);
if(q2->first()) { if(q2->first()) {
sql=QString().sprintf("update REPL_CART_STATE set\ sql=QString("update REPL_CART_STATE set ")+
ITEM_DATETIME=now(),\ "ITEM_DATETIME=now(),"+
REPOST=\"N\" where \ "REPOST=\"N\" where "+
(REPLICATOR_NAME=\"%s\")&&\ "(REPLICATOR_NAME=\""+RDEscapeString(config()->name())+"\")&&"+
(CART_NUMBER=%u)&&\ QString().sprintf("(CART_NUMBER=%u)&&",q->value(0).toUInt())+
(POSTED_FILENAME=\"%s\")", "(POSTED_FILENAME=\""+RDEscapeString(q->value(1).toString())+"\")";
(const char *)RDEscapeString(config()->name()),
q->value(0).toUInt(),
(const char *)RDEscapeString(q->value(1).
toString()));
} }
else { else {
sql=QString().sprintf("insert into REPL_CART_STATE set \ sql=QString("insert into REPL_CART_STATE set ")+
ITEM_DATETIME=now(),\ "ITEM_DATETIME=now(),"+
REPOST=\"N\",\ "REPOST=\"N\","+
REPLICATOR_NAME=\"%s\",\ "REPLICATOR_NAME=\""+RDEscapeString(config()->name())+"\","+
CART_NUMBER=%u,\ QString().sprintf("CART_NUMBER=%u,",q->value(0).toUInt())+
POSTED_FILENAME=\"%s\"", "POSTED_FILENAME=\""+RDEscapeString(q->value(1).toString())+"\"";
(const char *)RDEscapeString(config()->name()),
q->value(0).toUInt(),
(const char *)RDEscapeString(q->value(1).
toString()));
} }
delete q2; delete q2;
q2=new RDSqlQuery(sql); q2=new RDSqlQuery(sql);
@ -419,14 +405,15 @@ void CitadelXds::PurgeCuts()
RDDelete *conv; RDDelete *conv;
RDDelete::ErrorCode conv_err; RDDelete::ErrorCode conv_err;
sql=QString().sprintf("select ID,POSTED_FILENAME from REPL_CART_STATE \ sql=QString("select ")+
where REPLICATOR_NAME=\"%s\"", "ID,"+ // 00
(const char *)RDEscapeString(config()->name())); "POSTED_FILENAME "+ // 01
"from REPL_CART_STATE where "+
"REPLICATOR_NAME=\""+RDEscapeString(config()->name())+"\"";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
sql=QString(). sql=QString("select ID from ISCI_XREFERENCE where ")+
sprintf("select ID from ISCI_XREFERENCE where FILENAME=\"%s\"", "FILENAME=\""+RDEscapeString(q->value(1).toString())+"\"";
(const char *)RDEscapeString(q->value(1).toString()));
q1=new RDSqlQuery(sql); q1=new RDSqlQuery(sql);
if(!q1->first()) { if(!q1->first()) {
QString path=config()->url(); QString path=config()->url();

View File

@ -163,28 +163,29 @@ void MainObject::ProcessCarts()
for(unsigned i=0;i<repl_replicators.size();i++) { for(unsigned i=0;i<repl_replicators.size();i++) {
where=""; where="";
repl_name=repl_replicators[i]->config()->name(); repl_name=repl_replicators[i]->config()->name();
sql=QString(). sql=QString("select GROUP_NAME from REPLICATOR_MAP where ")+
sprintf("select GROUP_NAME from REPLICATOR_MAP \ "REPLICATOR_NAME=\""+RDEscapeString(repl_name)+"\"";
where REPLICATOR_NAME=\"%s\"",
(const char *)RDEscapeString(repl_name));
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
where+=QString(). where+=QString("(GROUP_NAME=\"")+
sprintf("(GROUP_NAME=\"%s\")||", RDEscapeString(q->value(0).toString())+"\")||";
(const char *)RDEscapeString(q->value(0).toString()));
} }
delete q; delete q;
where=where.left(where.length()-2); where=where.left(where.length()-2);
sql=QString().sprintf("select NUMBER,TYPE,METADATA_DATETIME \ sql=QString("select ")+
from CART where %s", "NUMBER,"+ // 00
(const char *)where); "TYPE,"+ // 01
"METADATA_DATETIME "+ // 02
"from CART where "+
where;
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
sql=QString().sprintf("select ID,ITEM_DATETIME from REPL_CART_STATE \ sql=QString("select ")+
where (REPLICATOR_NAME=\"%s\")&&\ "ID,"+ // 00
(CART_NUMBER=%u)", "ITEM_DATETIME "+ // 01
(const char *)RDEscapeString(repl_name), "from REPL_CART_STATE where "+
q->value(0).toUInt()); "(REPLICATOR_NAME=\""+RDEscapeString(repl_name)+"\")&&"+
QString().sprintf("(CART_NUMBER=%u)",q->value(0).toUInt());
q1=new RDSqlQuery(sql); q1=new RDSqlQuery(sql);
if(q1->first()) { if(q1->first()) {
stale=q->value(2).toDateTime()>q1->value(1).toDateTime(); stale=q->value(2).toDateTime()>q1->value(1).toDateTime();
@ -195,17 +196,15 @@ void MainObject::ProcessCarts()
if(stale) { if(stale) {
if(repl_replicators[i]->processCart(q->value(0).toUInt())) { if(repl_replicators[i]->processCart(q->value(0).toUInt())) {
if(q1->isValid()) { if(q1->isValid()) {
sql=QString().sprintf("update REPL_CART_STATE set \ sql=QString("update REPL_CART_STATE set ")+
ITEM_DATETIME=now() where ID=%u", "ITEM_DATETIME=now() where "+
q1->value(0).toUInt()); QString().sprintf("ID=%u",q1->value(0).toUInt());
} }
else { else {
sql=QString().sprintf("insert into REPL_CART_STATE set \ sql=QString("insert into REPL_CART_STATE set ")+
REPLICATOR_NAME=\"%s\",\ "REPLICATOR_NAME=\""+RDEscapeString(repl_name)+"\","+
CART_NUMBER=%u,\ QString().sprintf("CART_NUMBER=%u,",q->value(0).toUInt())+
ITEM_DATETIME=now()", "ITEM_DATETIME=now()";
(const char *)RDEscapeString(repl_name),
q->value(0).toUInt());
} }
q2=new RDSqlQuery(sql); q2=new RDSqlQuery(sql);
delete q2; delete q2;