From: Christian Hofstaedtler Date: Fri, 31 Jan 2014 14:50:23 +0000 (+0100) Subject: gsqlbackend: remove hardcoded replaceRRSet queries X-Git-Tag: rec-3.6.0-rc1~210^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=98d47e2e5f94305781e3a4a5ec394b1ff242fa62;p=thirdparty%2Fpdns.git gsqlbackend: remove hardcoded replaceRRSet queries --- diff --git a/modules/gmysqlbackend/gmysqlbackend.cc b/modules/gmysqlbackend/gmysqlbackend.cc index 3e080a7d00..566438077f 100644 --- a/modules/gmysqlbackend/gmysqlbackend.cc +++ b/modules/gmysqlbackend/gmysqlbackend.cc @@ -118,6 +118,7 @@ public: declare(suffix,"delete-domain-query","", "delete from domains where name='%s'"); declare(suffix,"delete-zone-query","", "delete from records where domain_id=%d"); declare(suffix,"delete-rrset-query","","delete from records where domain_id=%d and name='%s' and type='%s'"); + declare(suffix,"delete-names-query","","delete from records where domain_id = %d and name='%s'"); declare(suffix,"add-domain-key-query","", "insert into cryptokeys (domain_id, flags, active, content) select id, %d, %d, '%s' from domains where name='%s'"); declare(suffix,"list-domain-keys-query","", "select cryptokeys.id, flags, active, content from domains, cryptokeys where cryptokeys.domain_id=domains.id and name='%s'"); diff --git a/modules/goraclebackend/goraclebackend.cc b/modules/goraclebackend/goraclebackend.cc index 05ba467939..61d86f901a 100644 --- a/modules/goraclebackend/goraclebackend.cc +++ b/modules/goraclebackend/goraclebackend.cc @@ -124,6 +124,7 @@ public: declare(suffix,"delete-domain-query","", "delete from domains where name='%s'"); declare(suffix,"delete-zone-query","", "delete from records where domain_id=%d"); declare(suffix,"delete-rrset-query","","delete from records where domain_id=%d and name='%s' and type='%s'"); + declare(suffix,"delete-names-query","","delete from records where domain_id=%d and name='%s'"); declare(suffix,"add-domain-key-query","", "insert into cryptokeys (id, domain_id, flags, active, content) select cryptokeys_id_sequence.nextval, id, %d, %d, '%s' from domains where name='%s'"); declare(suffix,"list-domain-keys-query","", "select cryptokeys.id, flags, active, content from domains, cryptokeys where cryptokeys.domain_id=domains.id and name='%s'"); diff --git a/modules/gpgsqlbackend/gpgsqlbackend.cc b/modules/gpgsqlbackend/gpgsqlbackend.cc index 0619b64310..a2125b14f4 100644 --- a/modules/gpgsqlbackend/gpgsqlbackend.cc +++ b/modules/gpgsqlbackend/gpgsqlbackend.cc @@ -113,6 +113,7 @@ public: declare(suffix,"delete-domain-query","", "delete from domains where name=E'%s'"); declare(suffix,"delete-zone-query","", "delete from records where domain_id=%d"); declare(suffix,"delete-rrset-query","","delete from records where domain_id=%d and name=E'%s' and type=E'%s'"); + declare(suffix,"delete-names-query","","delete from records where domain_id=%d and name=E'%s'"); declare(suffix,"add-domain-key-query","", "insert into cryptokeys (domain_id, flags, active, content) select id, %d, (%d = 1), '%s' from domains where name=E'%s'"); declare(suffix,"list-domain-keys-query","", "select cryptokeys.id, flags, case when active then 1 else 0 end as active, content from domains, cryptokeys where cryptokeys.domain_id=domains.id and name=E'%s'"); diff --git a/modules/gsqlite3backend/gsqlite3backend.cc b/modules/gsqlite3backend/gsqlite3backend.cc index 3f51a90ea3..7415e3ed02 100644 --- a/modules/gsqlite3backend/gsqlite3backend.cc +++ b/modules/gsqlite3backend/gsqlite3backend.cc @@ -125,6 +125,7 @@ public: declare(suffix,"delete-domain-query","", "delete from domains where name='%s'"); declare( suffix, "delete-zone-query", "", "delete from records where domain_id=%d"); declare( suffix, "delete-rrset-query", "", "delete from records where domain_id = %d and name='%s' and type='%s'"); + declare( suffix, "delete-names-query", "", "delete from records where domain_id = %d and name='%s'"); declare(suffix, "dnssec", "Assume DNSSEC Schema is in place","no"); declare(suffix,"add-domain-key-query","", "insert into cryptokeys (domain_id, flags, active, content) select id, %d, %d, '%s' from domains where name='%s'"); diff --git a/pdns/backends/gsql/gsqlbackend.cc b/pdns/backends/gsql/gsqlbackend.cc index ecd3203c59..0654b80eb2 100644 --- a/pdns/backends/gsql/gsqlbackend.cc +++ b/pdns/backends/gsql/gsqlbackend.cc @@ -303,7 +303,8 @@ GSQLBackend::GSQLBackend(const string &mode, const string &suffix) d_InfoOfAllMasterDomainsQuery=getArg("info-all-master-query"); d_DeleteDomainQuery=getArg("delete-domain-query"); d_DeleteZoneQuery=getArg("delete-zone-query"); - d_DeleteRRSet=getArg("delete-rrset-query"); + d_DeleteRRSetQuery=getArg("delete-rrset-query"); + d_DeleteNamesQuery=getArg("delete-names-query"); d_getAllDomainsQuery=getArg("get-all-domains-query"); d_removeEmptyNonTerminalsFromZoneQuery = getArg("remove-empty-non-terminals-from-zone-query"); @@ -1051,16 +1052,20 @@ bool GSQLBackend::get(DNSResourceRecord &r) bool GSQLBackend::replaceRRSet(uint32_t domain_id, const string& qname, const QType& qt, const vector& rrset) { - string deleteQuery; - string deleteRRSet; + string query; if (qt != QType::ANY) { - deleteRRSet = "delete from records where domain_id = %d and name='%s' and type='%s'"; - deleteQuery = (boost::format(deleteRRSet) % domain_id % sqlEscape(qname) % sqlEscape(qt.getName())).str(); + query = (boost::format(d_DeleteRRSetQuery) + % domain_id + % sqlEscape(qname) + % sqlEscape(qt.getName()) + ).str(); } else { - deleteRRSet = "delete from records where domain_id = %d and name='%s'"; - deleteQuery = (boost::format(deleteRRSet) % domain_id % sqlEscape(qname)).str(); + query = (boost::format(d_DeleteNamesQuery) + % domain_id + % sqlEscape(qname) + ).str(); } - d_db->doCommand(deleteQuery); + d_db->doCommand(query); BOOST_FOREACH(const DNSResourceRecord& rr, rrset) { feedRecord(rr); } diff --git a/pdns/backends/gsql/gsqlbackend.hh b/pdns/backends/gsql/gsqlbackend.hh index 21f0caa66e..8313085586 100644 --- a/pdns/backends/gsql/gsqlbackend.hh +++ b/pdns/backends/gsql/gsqlbackend.hh @@ -111,7 +111,8 @@ private: string d_InfoOfAllMasterDomainsQuery; string d_DeleteDomainQuery; string d_DeleteZoneQuery; - string d_DeleteRRSet; + string d_DeleteRRSetQuery; + string d_DeleteNamesQuery; string d_ZoneLastChangeQuery; string d_firstOrderQuery;