From: Christian Hofstaedtler Date: Fri, 31 Jan 2014 17:14:14 +0000 (+0100) Subject: gsql: stop hardcoding list-subzone-query X-Git-Tag: rec-3.6.0-rc1~210^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c69120f251ee49e9df98beb49393c2b7fbd27917;p=thirdparty%2Fpdns.git gsql: stop hardcoding list-subzone-query --- diff --git a/modules/gmysqlbackend/gmysqlbackend.cc b/modules/gmysqlbackend/gmysqlbackend.cc index 09b4e6ee4b..30b1292794 100644 --- a/modules/gmysqlbackend/gmysqlbackend.cc +++ b/modules/gmysqlbackend/gmysqlbackend.cc @@ -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')"); diff --git a/modules/goraclebackend/goraclebackend.cc b/modules/goraclebackend/goraclebackend.cc index 97cb701cc5..bb99d53f46 100644 --- a/modules/goraclebackend/goraclebackend.cc +++ b/modules/goraclebackend/goraclebackend.cc @@ -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')"); diff --git a/modules/gpgsqlbackend/gpgsqlbackend.cc b/modules/gpgsqlbackend/gpgsqlbackend.cc index e4f2bdb542..5f389a05e4 100644 --- a/modules/gpgsqlbackend/gpgsqlbackend.cc +++ b/modules/gpgsqlbackend/gpgsqlbackend.cc @@ -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)"); diff --git a/modules/gsqlite3backend/gsqlite3backend.cc b/modules/gsqlite3backend/gsqlite3backend.cc index bdaa5faa4e..f1de2080b8 100644 --- a/modules/gsqlite3backend/gsqlite3backend.cc +++ b/modules/gsqlite3backend/gsqlite3backend.cc @@ -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')"); diff --git a/pdns/backends/gsql/gsqlbackend.cc b/pdns/backends/gsql/gsqlbackend.cc index c1405507d5..2c84899e27 100644 --- a/pdns/backends/gsql/gsqlbackend.cc +++ b/pdns/backends/gsql/gsqlbackend.cc @@ -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()); diff --git a/pdns/backends/gsql/gsqlbackend.hh b/pdns/backends/gsql/gsqlbackend.hh index 8313085586..7b2da843df 100644 --- a/pdns/backends/gsql/gsqlbackend.hh +++ b/pdns/backends/gsql/gsqlbackend.hh @@ -89,6 +89,7 @@ private: string d_noWildCardANYIDQuery; string d_wildCardANYIDQuery; string d_listQuery; + string d_listSubZoneQuery; string d_logprefix; string d_MasterOfDomainsZoneQuery;