]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
gsql: stop hardcoding list-subzone-query
authorChristian Hofstaedtler <christian@hofstaedtler.name>
Fri, 31 Jan 2014 17:14:14 +0000 (18:14 +0100)
committerChristian Hofstaedtler <christian@hofstaedtler.name>
Mon, 3 Feb 2014 15:08:35 +0000 (16:08 +0100)
modules/gmysqlbackend/gmysqlbackend.cc
modules/goraclebackend/goraclebackend.cc
modules/gpgsqlbackend/gpgsqlbackend.cc
modules/gsqlite3backend/gsqlite3backend.cc
pdns/backends/gsql/gsqlbackend.cc
pdns/backends/gsql/gsqlbackend.hh

index 09b4e6ee4b9fd6b7ba328c344f01a9e9c63dbba2..30b1292794c603919a4521be14c918018f949628 100644 (file)
@@ -64,6 +64,7 @@ public:
     declare(suffix, "wildcard-any-id-query", "Wildcard ANY with ID query", record_query+" and name like '%s' and domain_id='%d'");
 
     declare(suffix, "list-query", "AXFR query", record_query+" and domain_id='%d'");
+    declare(suffix, "list-subzone-query", "Subzone listing", record_query+" and (name='%s' OR name like '%s') and domain_id='%d'");
 
     declare(suffix,"remove-empty-non-terminals-from-zone-query", "remove all empty non-terminals from zone", "delete from records where domain_id='%d' and type is null");
     declare(suffix,"insert-empty-non-terminal-query", "insert empty non-terminal in zone", "insert into records (domain_id,name,type) values ('%d','%s',null)");
@@ -81,6 +82,7 @@ public:
     declare(suffix, "wildcard-any-id-query-auth", "Wildcard ANY with ID query", record_auth_query+" and name like '%s' and domain_id='%d'");
 
     declare(suffix, "list-query-auth", "AXFR query", record_auth_query+" and domain_id='%d' order by name, type");
+    declare(suffix, "list-subzone-query-auth", "Subzone listing", record_auth_query+" and (name='%s' OR name like '%s') and domain_id='%d'");
 
     declare(suffix,"insert-empty-non-terminal-query-auth", "insert empty non-terminal in zone", "insert into records (domain_id,name,type,auth) values ('%d','%s',null,'1')");
 
index 97cb701cc5593c157692db494d83b6eee6dfba48..bb99d53f463d5bd51e6c841b09e85817b7639f4d 100644 (file)
@@ -71,6 +71,7 @@ public:
     declare(suffix, "wildcard-any-id-query", "Wildcard ANY with ID query", record_query+" and name like '%s' and domain_id='%d'");
 
     declare(suffix, "list-query", "AXFR query",  record_query+" and domain_id='%d'");
+    declare(suffix, "list-subzone-query", "Subzone listing", record_query+" and (name='%s' OR name like '%s') and domain_id='%d'");
 
     declare(suffix,"remove-empty-non-terminals-from-zone-query", "remove all empty non-terminals from zone", "delete from records where domain_id='%d' and type is null");
     declare(suffix,"insert-empty-non-terminal-query", "insert empty non-terminal in zone", "insert into records (id,domain_id,name,type) values (records_id_sequence.nextval,'%d','%s',null)");
@@ -87,7 +88,8 @@ public:
     declare(suffix, "wildcard-any-query-auth", "Wildcard ANY query", record_auth_query+" and name like '%s'");
     declare(suffix, "wildcard-any-id-query-auth", "Wildcard ANY with ID query", record_auth_query+" and name like '%s' and domain_id='%d'");
 
-    declare(suffix, "list-query-auth", "AXFR query",  record_auth_query+" and domain_id='%d' order by name, type");
+    declare(suffix, "list-query-auth", "AXFR query", record_auth_query+" and domain_id='%d' order by name, type");
+    declare(suffix, "list-subzone-query-auth", "Subzone listing", record_auth_query+" and (name='%s' OR name like '%s') and domain_id='%d'");
 
     declare(suffix,"insert-empty-non-terminal-query-auth", "insert empty non-terminal in zone", "insert into records (id,domain_id,name,type,auth) values (records_id_sequence.nextval,'%d','%s',null,'1')");
 
index e4f2bdb542ba1e23da25672a2dfe90a40f1b0d42..5f389a05e46da2ade18fe90d5030613797f61c4f 100644 (file)
@@ -60,6 +60,7 @@ public:
     declare(suffix, "wildcard-any-id-query", "Wildcard ANY with ID query", record_query+" and name like E'%s' and domain_id='%d'");
 
     declare(suffix, "list-query", "AXFR query", record_query+" and domain_id='%d'");
+    declare(suffix, "list-subzone-query", "Subzone listing", record_query+" and (name=E'%s' OR name like E'%s') and domain_id='%d'");
 
     declare(suffix,"remove-empty-non-terminals-from-zone-query", "remove all empty non-terminals from zone", "delete from records where domain_id='%d' and type is null");
     declare(suffix,"insert-empty-non-terminal-query", "insert empty non-terminal in zone", "insert into records (domain_id,name,type) values ('%d','%s',null)");
@@ -77,6 +78,7 @@ public:
     declare(suffix, "wildcard-any-id-query-auth", "Wildcard ANY with ID query", record_auth_query+" and name like E'%s' and domain_id='%d'");
 
     declare(suffix, "list-query-auth", "AXFR query", record_auth_query+" and domain_id='%d' order by name, type");
+    declare(suffix, "list-subzone-query-auth", "Subzone listing", record_auth_query+" and (name=E'%s' OR name like E'%s') and domain_id='%d'");
 
     declare(suffix,"insert-empty-non-terminal-query-auth", "insert empty non-terminal in zone", "insert into records (domain_id,name,type,auth) values ('%d','%s',null,true)");
 
index bdaa5faa4e7248506290a0b64e02733c227003fa..f1de2080b84b7e5ca6456ba61a22d2131f265c1d 100644 (file)
@@ -72,6 +72,7 @@ public:
     declare(suffix, "wildcard-any-id-query", "Wildcard ANY with ID query", record_query+" and name like '%s' and domain_id=%d");
 
     declare(suffix, "list-query", "AXFR query", record_query+" and domain_id=%d");
+    declare(suffix, "list-subzone-query", "Subzone listing", record_query+" and (name='%s' OR name like '%s') and domain_id=%d");
 
     declare(suffix,"remove-empty-non-terminals-from-zone-query", "remove all empty non-terminals from zone", "delete from records where domain_id='%d' and type is null");
     declare(suffix,"insert-empty-non-terminal-query", "insert empty non-terminal in zone", "insert into records (domain_id,name,type) values ('%d','%s',null)");
@@ -89,6 +90,7 @@ public:
     declare(suffix, "wildcard-any-id-query-auth", "Wildcard ANY with ID query", record_auth_query+" and name like '%s' and domain_id='%d'");
 
     declare(suffix, "list-query-auth", "AXFR query", record_auth_query+" and domain_id='%d' order by name, type");
+    declare(suffix, "list-subzone-query-auth", "Subzone listing", record_auth_query+" and (name='%s' OR name like '%s') and domain_id=%d");
 
     declare(suffix,"insert-empty-non-terminal-query-auth", "insert empty non-terminal in zone", "insert into records (domain_id,name,type,auth) values ('%d','%s',null,'1')");
     
index c1405507d507007ad3de7cee65fbbe9ee4a3057a..2c84899e27252fc1fa9aab9fe0a156b8f0f8d4e4 100644 (file)
@@ -285,6 +285,7 @@ GSQLBackend::GSQLBackend(const string &mode, const string &suffix)
   d_wildCardANYIDQuery=getArg("wildcard-any-id-query"+authswitch);
   
   d_listQuery=getArg("list-query"+authswitch);
+  d_listSubZoneQuery=getArg("list-subzone-query"+authswitch);
 
   d_MasterOfDomainsZoneQuery=getArg("master-zone-query");
   d_InfoOfDomainsZoneQuery=getArg("info-zone-query");
@@ -860,12 +861,13 @@ bool GSQLBackend::list(const string &target, int domain_id )
 
 bool GSQLBackend::listSubZone(const string &zone, int domain_id) {
   string wildzone = "%." + zone;
-  string listSubZone = "select content,ttl,prio,type,domain_id,name from records where (name='%s' OR name like '%s') and domain_id=%d";
-  if (d_dnssecQueries)
-    listSubZone = "select content,ttl,prio,type,domain_id,name,auth from records where (name='%s' OR name like '%s') and domain_id=%d";
-  string output = (boost::format(listSubZone) % sqlEscape(zone) % sqlEscape(wildzone) % domain_id).str();
+  string query = (boost::format(d_listSubZoneQuery)
+                  % sqlEscape(zone)
+                  % sqlEscape(wildzone)
+                  % domain_id
+    ).str();
   try {
-    d_db->doQuery(output.c_str());
+    d_db->doQuery(query);
   }
   catch(SSqlException &e) {
     throw PDNSException("GSQLBackend listSubZone query: "+e.txtReason());
index 831308558690a7bec1422aed465042d580a60674..7b2da843df0629553a864dc31aab4eb4e54fe505 100644 (file)
@@ -89,6 +89,7 @@ private:
   string d_noWildCardANYIDQuery;
   string d_wildCardANYIDQuery;
   string d_listQuery;
+  string d_listSubZoneQuery;
   string d_logprefix;
 
   string d_MasterOfDomainsZoneQuery;