]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/backends/gsql/gsqlbackend.hh
Standardize license text in all PDNS files
[thirdparty/pdns.git] / pdns / backends / gsql / gsqlbackend.hh
CommitLineData
12471842
PL
1/*
2 * This file is part of PowerDNS or dnsdist.
3 * Copyright -- PowerDNS.COM B.V. and its contributors
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
8 *
9 * In addition, for the avoidance of any doubt, permission is granted to
10 * link this program with OpenSSL and to (re)distribute the binaries
11 * produced as the result of such linking.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 */
680f25f8
RK
22#ifndef PDNS_GSQLBACKEND_HH
23#define PDNS_GSQLBACKEND_HH
24
b4ce8b4e
BH
25#include <string>
26#include <map>
27#include "ssql.hh"
eb743bba 28#include "pdns/arguments.hh"
b4ce8b4e 29
9ad7641b 30#include "pdns/namespaces.hh"
b4ce8b4e 31
ad34750d
KM
32bool isDnssecDomainMetadata (const string& name);
33
1325e8a2
PD
34/*
35GSQLBackend is a generic backend used by other sql backends
36*/
b4ce8b4e
BH
37class GSQLBackend : public DNSBackend
38{
39public:
40 GSQLBackend(const string &mode, const string &suffix); //!< Makes our connection to the database. Throws an exception if it fails.
41 virtual ~GSQLBackend()
42 {
0f310932 43 freeStatements();
b4ce8b4e 44 if(d_db)
0f310932 45 delete d_db;
b4ce8b4e
BH
46 }
47
48 void setDB(SSql *db)
49 {
0f310932
AT
50 freeStatements();
51 delete d_db;
b4ce8b4e 52 d_db=db;
eb743bba
CH
53 if (d_db) {
54 d_db->setLog(::arg().mustDo("query-logging"));
0f310932
AT
55 d_NoIdQuery_stmt = d_db->prepare(d_NoIdQuery, 2);
56 d_IdQuery_stmt = d_db->prepare(d_IdQuery, 3);
57 d_ANYNoIdQuery_stmt = d_db->prepare(d_ANYNoIdQuery, 1);
58 d_ANYIdQuery_stmt = d_db->prepare(d_ANYIdQuery, 2);
59 d_listQuery_stmt = d_db->prepare(d_listQuery, 2);
60 d_listSubZoneQuery_stmt = d_db->prepare(d_listSubZoneQuery, 3);
61 d_MasterOfDomainsZoneQuery_stmt = d_db->prepare(d_MasterOfDomainsZoneQuery, 1);
62 d_InfoOfDomainsZoneQuery_stmt = d_db->prepare(d_InfoOfDomainsZoneQuery, 1);
63 d_InfoOfAllSlaveDomainsQuery_stmt = d_db->prepare(d_InfoOfAllSlaveDomainsQuery, 0);
64 d_SuperMasterInfoQuery_stmt = d_db->prepare(d_SuperMasterInfoQuery, 2);
65 d_GetSuperMasterIPs_stmt = d_db->prepare(d_GetSuperMasterIPs, 2);
aa09fa3b 66 d_InsertZoneQuery_stmt = d_db->prepare(d_InsertZoneQuery, 4);
08536840 67 d_InsertRecordQuery_stmt = d_db->prepare(d_InsertRecordQuery, 9);
09070ce7 68 d_InsertEmptyNonTerminalOrderQuery_stmt = d_db->prepare(d_InsertEmptyNonTerminalOrderQuery, 4);
0f310932
AT
69 d_UpdateMasterOfZoneQuery_stmt = d_db->prepare(d_UpdateMasterOfZoneQuery, 2);
70 d_UpdateKindOfZoneQuery_stmt = d_db->prepare(d_UpdateKindOfZoneQuery, 2);
79532aa7 71 d_UpdateAccountOfZoneQuery_stmt = d_db->prepare(d_UpdateAccountOfZoneQuery, 2);
0f310932
AT
72 d_UpdateSerialOfZoneQuery_stmt = d_db->prepare(d_UpdateSerialOfZoneQuery, 2);
73 d_UpdateLastCheckofZoneQuery_stmt = d_db->prepare(d_UpdateLastCheckofZoneQuery, 2);
74 d_InfoOfAllMasterDomainsQuery_stmt = d_db->prepare(d_InfoOfAllMasterDomainsQuery, 0);
75 d_DeleteDomainQuery_stmt = d_db->prepare(d_DeleteDomainQuery, 1);
76 d_DeleteZoneQuery_stmt = d_db->prepare(d_DeleteZoneQuery, 1);
77 d_DeleteRRSetQuery_stmt = d_db->prepare(d_DeleteRRSetQuery, 3);
78 d_DeleteNamesQuery_stmt = d_db->prepare(d_DeleteNamesQuery, 2);
79 d_ZoneLastChangeQuery_stmt = d_db->prepare(d_ZoneLastChangeQuery, 1);
80 d_firstOrderQuery_stmt = d_db->prepare(d_firstOrderQuery, 1);
81 d_beforeOrderQuery_stmt = d_db->prepare(d_beforeOrderQuery, 2);
82 d_afterOrderQuery_stmt = d_db->prepare(d_afterOrderQuery, 2);
83 d_lastOrderQuery_stmt = d_db->prepare(d_lastOrderQuery, 1);
79de0a80
KM
84 d_updateOrderNameAndAuthQuery_stmt = d_db->prepare(d_updateOrderNameAndAuthQuery, 4);
85 d_updateOrderNameAndAuthTypeQuery_stmt = d_db->prepare(d_updateOrderNameAndAuthTypeQuery, 5);
0f310932 86 d_nullifyOrderNameAndUpdateAuthQuery_stmt = d_db->prepare(d_nullifyOrderNameAndUpdateAuthQuery, 3);
79de0a80 87 d_nullifyOrderNameAndUpdateAuthTypeQuery_stmt = d_db->prepare(d_nullifyOrderNameAndUpdateAuthTypeQuery, 4);
09070ce7
PL
88 d_RemoveEmptyNonTerminalsFromZoneQuery_stmt = d_db->prepare(d_RemoveEmptyNonTerminalsFromZoneQuery, 1);
89 d_DeleteEmptyNonTerminalQuery_stmt = d_db->prepare(d_DeleteEmptyNonTerminalQuery, 2);
0f310932
AT
90 d_AddDomainKeyQuery_stmt = d_db->prepare(d_AddDomainKeyQuery, 4);
91 d_ListDomainKeysQuery_stmt = d_db->prepare(d_ListDomainKeysQuery, 1);
92 d_GetAllDomainMetadataQuery_stmt = d_db->prepare(d_GetAllDomainMetadataQuery, 1);
93 d_GetDomainMetadataQuery_stmt = d_db->prepare(d_GetDomainMetadataQuery, 2);
94 d_ClearDomainMetadataQuery_stmt = d_db->prepare(d_ClearDomainMetadataQuery, 2);
95 d_ClearDomainAllMetadataQuery_stmt = d_db->prepare(d_ClearDomainAllMetadataQuery, 1);
96 d_SetDomainMetadataQuery_stmt = d_db->prepare(d_SetDomainMetadataQuery, 3);
97 d_RemoveDomainKeyQuery_stmt = d_db->prepare(d_RemoveDomainKeyQuery, 2);
98 d_ActivateDomainKeyQuery_stmt = d_db->prepare(d_ActivateDomainKeyQuery, 2);
99 d_DeactivateDomainKeyQuery_stmt = d_db->prepare(d_DeactivateDomainKeyQuery, 2);
100 d_ClearDomainAllKeysQuery_stmt = d_db->prepare(d_ClearDomainAllKeysQuery, 1);
101 d_getTSIGKeyQuery_stmt = d_db->prepare(d_getTSIGKeyQuery, 1);
102 d_setTSIGKeyQuery_stmt = d_db->prepare(d_setTSIGKeyQuery, 3);
103 d_deleteTSIGKeyQuery_stmt = d_db->prepare(d_deleteTSIGKeyQuery, 1);
104 d_getTSIGKeysQuery_stmt = d_db->prepare(d_getTSIGKeysQuery, 0);
105 d_getAllDomainsQuery_stmt = d_db->prepare(d_getAllDomainsQuery, 1);
106 d_ListCommentsQuery_stmt = d_db->prepare(d_ListCommentsQuery, 1);
107 d_InsertCommentQuery_stmt = d_db->prepare(d_InsertCommentQuery, 6);
108 d_DeleteCommentRRsetQuery_stmt = d_db->prepare(d_DeleteCommentRRsetQuery, 3);
109 d_DeleteCommentsQuery_stmt = d_db->prepare(d_DeleteCommentsQuery, 1);
474cacfa
AT
110 d_SearchRecordsQuery_stmt = d_db->prepare(d_SearchRecordsQuery, 3);
111 d_SearchCommentsQuery_stmt = d_db->prepare(d_SearchCommentsQuery, 3);
eb743bba 112 }
b4ce8b4e 113 }
0f310932
AT
114
115 void release(SSqlStatement **stmt) {
116 delete *stmt;
117 *stmt = NULL;
118 }
b4ce8b4e 119
0f310932
AT
120 void freeStatements() {
121 release(&d_NoIdQuery_stmt);
122 release(&d_IdQuery_stmt);
123 release(&d_ANYNoIdQuery_stmt);
124 release(&d_ANYIdQuery_stmt);
125 release(&d_listQuery_stmt);
126 release(&d_listSubZoneQuery_stmt);
127 release(&d_MasterOfDomainsZoneQuery_stmt);
128 release(&d_InfoOfDomainsZoneQuery_stmt);
129 release(&d_InfoOfAllSlaveDomainsQuery_stmt);
130 release(&d_SuperMasterInfoQuery_stmt);
131 release(&d_GetSuperMasterIPs_stmt);
132 release(&d_InsertZoneQuery_stmt);
0f310932 133 release(&d_InsertRecordQuery_stmt);
09070ce7 134 release(&d_InsertEmptyNonTerminalOrderQuery_stmt);
0f310932
AT
135 release(&d_UpdateMasterOfZoneQuery_stmt);
136 release(&d_UpdateKindOfZoneQuery_stmt);
79532aa7 137 release(&d_UpdateAccountOfZoneQuery_stmt);
0f310932
AT
138 release(&d_UpdateSerialOfZoneQuery_stmt);
139 release(&d_UpdateLastCheckofZoneQuery_stmt);
140 release(&d_InfoOfAllMasterDomainsQuery_stmt);
141 release(&d_DeleteDomainQuery_stmt);
142 release(&d_DeleteZoneQuery_stmt);
143 release(&d_DeleteRRSetQuery_stmt);
144 release(&d_DeleteNamesQuery_stmt);
145 release(&d_ZoneLastChangeQuery_stmt);
146 release(&d_firstOrderQuery_stmt);
147 release(&d_beforeOrderQuery_stmt);
148 release(&d_afterOrderQuery_stmt);
149 release(&d_lastOrderQuery_stmt);
79de0a80
KM
150 release(&d_updateOrderNameAndAuthQuery_stmt);
151 release(&d_updateOrderNameAndAuthTypeQuery_stmt);
0f310932 152 release(&d_nullifyOrderNameAndUpdateAuthQuery_stmt);
79de0a80 153 release(&d_nullifyOrderNameAndUpdateAuthTypeQuery_stmt);
09070ce7
PL
154 release(&d_RemoveEmptyNonTerminalsFromZoneQuery_stmt);
155 release(&d_DeleteEmptyNonTerminalQuery_stmt);
0f310932
AT
156 release(&d_AddDomainKeyQuery_stmt);
157 release(&d_ListDomainKeysQuery_stmt);
158 release(&d_GetAllDomainMetadataQuery_stmt);
159 release(&d_GetDomainMetadataQuery_stmt);
160 release(&d_ClearDomainMetadataQuery_stmt);
161 release(&d_ClearDomainAllMetadataQuery_stmt);
162 release(&d_SetDomainMetadataQuery_stmt);
163 release(&d_RemoveDomainKeyQuery_stmt);
164 release(&d_ActivateDomainKeyQuery_stmt);
165 release(&d_DeactivateDomainKeyQuery_stmt);
166 release(&d_ClearDomainAllKeysQuery_stmt);
167 release(&d_getTSIGKeyQuery_stmt);
168 release(&d_setTSIGKeyQuery_stmt);
169 release(&d_deleteTSIGKeyQuery_stmt);
170 release(&d_getTSIGKeysQuery_stmt);
171 release(&d_getAllDomainsQuery_stmt);
172 release(&d_ListCommentsQuery_stmt);
173 release(&d_InsertCommentQuery_stmt);
174 release(&d_DeleteCommentRRsetQuery_stmt);
175 release(&d_DeleteCommentsQuery_stmt);
474cacfa
AT
176 release(&d_SearchRecordsQuery_stmt);
177 release(&d_SearchCommentsQuery_stmt);
0f310932
AT
178 }
179
f1d06abf
KM
180 void lookup(const QType &, const DNSName &qdomain, DNSPacket *p=0, int zoneId=-1);
181 bool list(const DNSName &target, int domain_id, bool include_disabled=false);
b4ce8b4e 182 bool get(DNSResourceRecord &r);
cea26350 183 void getAllDomains(vector<DomainInfo> *domains, bool include_disabled=false);
223d3559 184 bool isMaster(const DNSName &domain, const string &ip);
8f126bc1 185 void alsoNotifies(const DNSName &domain, set<string> *ips);
223d3559 186 bool startTransaction(const DNSName &domain, int domain_id=-1);
b4ce8b4e
BH
187 bool commitTransaction();
188 bool abortTransaction();
f9cf6d92 189 bool feedRecord(const DNSResourceRecord &r, string *ordername=0);
223d3559 190 bool feedEnts(int domain_id, map<DNSName,bool>& nonterm);
28e2e78e 191 bool feedEnts3(int domain_id, const DNSName &domain, map<DNSName,bool> &nonterm, const NSEC3PARAMRecordContent& ns3prc, bool narrow);
aa09fa3b
PL
192 bool createDomain(const DNSName &domain, const string &type, const string &masters, const string &account);
193 bool createDomain(const DNSName &domain) {
194 return createDomain(domain, "NATIVE", "", "");
195 };
223d3559
KM
196 bool createSlaveDomain(const string &ip, const DNSName &domain, const string &nameserver, const string &account);
197 bool deleteDomain(const DNSName &domain);
198 bool superMasterBackend(const string &ip, const DNSName &domain, const vector<DNSResourceRecord>&nsset, string *nameserver, string *account, DNSBackend **db);
092f210a 199 void setFresh(uint32_t domain_id);
b4ce8b4e
BH
200 void getUnfreshSlaveInfos(vector<DomainInfo> *domains);
201 void getUpdatedMasters(vector<DomainInfo> *updatedDomains);
8f126bc1 202 bool getDomainInfo(const DNSName &domain, DomainInfo &di);
092f210a 203 void setNotified(uint32_t domain_id, uint32_t serial);
223d3559
KM
204 bool setMaster(const DNSName &domain, const string &ip);
205 bool setKind(const DNSName &domain, const DomainInfo::DomainKind kind);
206 bool setAccount(const DNSName &domain, const string &account);
c02f13ef 207
223d3559 208 virtual bool getBeforeAndAfterNamesAbsolute(uint32_t id, const string& qname, DNSName& unhashed, std::string& before, std::string& after);
79de0a80
KM
209 virtual bool updateDNSSECOrderNameAndAuth(uint32_t domain_id, const DNSName& zonename, const DNSName& qname, const DNSName& ordername, bool auth, const uint16_t=QType::ANY);
210
675fa24c 211 virtual bool updateEmptyNonTerminals(uint32_t domain_id, const DNSName& zonename, set<DNSName>& insert ,set<DNSName>& erase, bool remove);
ece45ffb 212 virtual bool doesDNSSEC();
5c3bf2db 213
223d3559 214 virtual bool calculateSOASerial(const DNSName& domain, const SOAData& sd, time_t& serial);
d07fc616 215
8f126bc1
KM
216 bool replaceRRSet(uint32_t domain_id, const DNSName& qname, const QType& qt, const vector<DNSResourceRecord>& rrset);
217 bool listSubZone(const DNSName &zone, int domain_id);
218 int addDomainKey(const DNSName& name, const KeyData& key);
219 bool getDomainKeys(const DNSName& name, unsigned int kind, std::vector<KeyData>& keys);
220 bool getAllDomainMetadata(const DNSName& name, std::map<std::string, std::vector<std::string> >& meta);
221 bool getDomainMetadata(const DNSName& name, const std::string& kind, std::vector<std::string>& meta);
222 bool setDomainMetadata(const DNSName& name, const std::string& kind, const std::vector<std::string>& meta);
223 bool clearDomainAllMetadata(const DNSName& domain);
4496f66f 224
8f126bc1
KM
225 bool removeDomainKey(const DNSName& name, unsigned int id);
226 bool activateDomainKey(const DNSName& name, unsigned int id);
227 bool deactivateDomainKey(const DNSName& name, unsigned int id);
4496f66f 228
8f126bc1
KM
229 bool getTSIGKey(const DNSName& name, DNSName* algorithm, string* content);
230 bool setTSIGKey(const DNSName& name, const DNSName& algorithm, const string& content);
231 bool deleteTSIGKey(const DNSName& name);
9a72349d
AT
232 bool getTSIGKeys(std::vector< struct TSIGKey > &keys);
233
6cc98ddf
CH
234 bool listComments(const uint32_t domain_id);
235 bool getComment(Comment& comment);
236 void feedComment(const Comment& comment);
8f126bc1 237 bool replaceComments(const uint32_t domain_id, const DNSName& qname, const QType& qt, const vector<Comment>& comments);
f641c3b7
PD
238 bool replaceComments(const uint32_t domain_id, const string& qname, const QType& qt, const vector<Comment>& comments);
239 string directBackendCmd(const string &query);
474cacfa
AT
240 bool searchRecords(const string &pattern, int maxResults, vector<DNSResourceRecord>& result);
241 bool searchComments(const string &pattern, int maxResults, vector<Comment>& result);
512eafef 242
474cacfa
AT
243protected:
244 string pattern2SQLPattern(const string& pattern);
245 void extractRecord(const SSqlStatement::row_t& row, DNSResourceRecord& rr);
512ad04f 246 void extractComment(const SSqlStatement::row_t& row, Comment& c);
6cc98ddf 247
b4ce8b4e 248private:
7c779a31 249 string d_query_name;
f1d06abf 250 DNSName d_qname;
b4ce8b4e 251 SSql *d_db;
0f310932 252 SSqlStatement::result_t d_result;
b4ce8b4e 253
75f02b56
KM
254 string d_NoIdQuery;
255 string d_IdQuery;
256 string d_ANYNoIdQuery;
257 string d_ANYIdQuery;
258
b4ce8b4e 259 string d_listQuery;
c69120f2 260 string d_listSubZoneQuery;
b4ce8b4e 261 string d_logprefix;
770e6a9c 262
36d772ab
BH
263 string d_MasterOfDomainsZoneQuery;
264 string d_InfoOfDomainsZoneQuery;
265 string d_InfoOfAllSlaveDomainsQuery;
266 string d_SuperMasterInfoQuery;
5805615b
AT
267 string d_GetSuperMasterName;
268 string d_GetSuperMasterIPs;
269
487cf033 270 string d_InsertZoneQuery;
36d772ab 271 string d_InsertRecordQuery;
09070ce7 272 string d_InsertEmptyNonTerminalOrderQuery;
c02f13ef
CH
273 string d_UpdateMasterOfZoneQuery;
274 string d_UpdateKindOfZoneQuery;
79532aa7 275 string d_UpdateAccountOfZoneQuery;
36d772ab
BH
276 string d_UpdateSerialOfZoneQuery;
277 string d_UpdateLastCheckofZoneQuery;
278 string d_InfoOfAllMasterDomainsQuery;
09d6667a
CH
279 string d_DeleteDomainQuery;
280 string d_DeleteZoneQuery;
98d47e2e
CH
281 string d_DeleteRRSetQuery;
282 string d_DeleteNamesQuery;
d07fc616 283 string d_ZoneLastChangeQuery;
770e6a9c 284
5697411b 285 string d_firstOrderQuery;
136efa2f
BH
286 string d_beforeOrderQuery;
287 string d_afterOrderQuery;
bc74a078 288 string d_lastOrderQuery;
79de0a80
KM
289
290 string d_updateOrderNameAndAuthQuery;
291 string d_updateOrderNameAndAuthTypeQuery;
c2df797e 292 string d_nullifyOrderNameAndUpdateAuthQuery;
79de0a80
KM
293 string d_nullifyOrderNameAndUpdateAuthTypeQuery;
294
09070ce7
PL
295 string d_RemoveEmptyNonTerminalsFromZoneQuery;
296 string d_DeleteEmptyNonTerminalQuery;
136efa2f 297
c0273500
BH
298 string d_AddDomainKeyQuery;
299 string d_ListDomainKeysQuery;
df0cc941 300 string d_GetAllDomainMetadataQuery;
c0273500 301 string d_GetDomainMetadataQuery;
f7bcc763 302 string d_ClearDomainMetadataQuery;
09d6667a 303 string d_ClearDomainAllMetadataQuery;
c0273500 304 string d_SetDomainMetadataQuery;
4496f66f
BH
305
306 string d_RemoveDomainKeyQuery;
307 string d_ActivateDomainKeyQuery;
308 string d_DeactivateDomainKeyQuery;
09d6667a 309 string d_ClearDomainAllKeysQuery;
770e6a9c 310
78bcb858 311 string d_getTSIGKeyQuery;
9a72349d
AT
312 string d_setTSIGKeyQuery;
313 string d_deleteTSIGKeyQuery;
314 string d_getTSIGKeysQuery;
1325e8a2
PD
315
316 string d_getAllDomainsQuery;
317
6cc98ddf
CH
318 string d_ListCommentsQuery;
319 string d_InsertCommentQuery;
320 string d_DeleteCommentRRsetQuery;
321 string d_DeleteCommentsQuery;
322
474cacfa
AT
323 string d_SearchRecordsQuery;
324 string d_SearchCommentsQuery;
325
0f310932
AT
326 SSqlStatement* d_query_stmt;
327
328 SSqlStatement* d_NoIdQuery_stmt;
329 SSqlStatement* d_IdQuery_stmt;
330 SSqlStatement* d_ANYNoIdQuery_stmt;
331 SSqlStatement* d_ANYIdQuery_stmt;
332 SSqlStatement* d_listQuery_stmt;
333 SSqlStatement* d_listSubZoneQuery_stmt;
334 SSqlStatement* d_MasterOfDomainsZoneQuery_stmt;
335 SSqlStatement* d_InfoOfDomainsZoneQuery_stmt;
336 SSqlStatement* d_InfoOfAllSlaveDomainsQuery_stmt;
337 SSqlStatement* d_SuperMasterInfoQuery_stmt;
338 SSqlStatement* d_GetSuperMasterIPs_stmt;
339 SSqlStatement* d_InsertZoneQuery_stmt;
0f310932 340 SSqlStatement* d_InsertRecordQuery_stmt;
09070ce7 341 SSqlStatement* d_InsertEmptyNonTerminalOrderQuery_stmt;
0f310932
AT
342 SSqlStatement* d_UpdateMasterOfZoneQuery_stmt;
343 SSqlStatement* d_UpdateKindOfZoneQuery_stmt;
79532aa7 344 SSqlStatement* d_UpdateAccountOfZoneQuery_stmt;
0f310932
AT
345 SSqlStatement* d_UpdateSerialOfZoneQuery_stmt;
346 SSqlStatement* d_UpdateLastCheckofZoneQuery_stmt;
347 SSqlStatement* d_InfoOfAllMasterDomainsQuery_stmt;
348 SSqlStatement* d_DeleteDomainQuery_stmt;
349 SSqlStatement* d_DeleteZoneQuery_stmt;
350 SSqlStatement* d_DeleteRRSetQuery_stmt;
351 SSqlStatement* d_DeleteNamesQuery_stmt;
352 SSqlStatement* d_ZoneLastChangeQuery_stmt;
353 SSqlStatement* d_firstOrderQuery_stmt;
354 SSqlStatement* d_beforeOrderQuery_stmt;
355 SSqlStatement* d_afterOrderQuery_stmt;
356 SSqlStatement* d_lastOrderQuery_stmt;
79de0a80
KM
357 SSqlStatement* d_updateOrderNameAndAuthQuery_stmt;
358 SSqlStatement* d_updateOrderNameAndAuthTypeQuery_stmt;
0f310932 359 SSqlStatement* d_nullifyOrderNameAndUpdateAuthQuery_stmt;
79de0a80 360 SSqlStatement* d_nullifyOrderNameAndUpdateAuthTypeQuery_stmt;
09070ce7
PL
361 SSqlStatement* d_RemoveEmptyNonTerminalsFromZoneQuery_stmt;
362 SSqlStatement* d_DeleteEmptyNonTerminalQuery_stmt;
0f310932
AT
363 SSqlStatement* d_AddDomainKeyQuery_stmt;
364 SSqlStatement* d_ListDomainKeysQuery_stmt;
365 SSqlStatement* d_GetAllDomainMetadataQuery_stmt;
366 SSqlStatement* d_GetDomainMetadataQuery_stmt;
367 SSqlStatement* d_ClearDomainMetadataQuery_stmt;
368 SSqlStatement* d_ClearDomainAllMetadataQuery_stmt;
369 SSqlStatement* d_SetDomainMetadataQuery_stmt;
370 SSqlStatement* d_RemoveDomainKeyQuery_stmt;
371 SSqlStatement* d_ActivateDomainKeyQuery_stmt;
372 SSqlStatement* d_DeactivateDomainKeyQuery_stmt;
373 SSqlStatement* d_ClearDomainAllKeysQuery_stmt;
374 SSqlStatement* d_getTSIGKeyQuery_stmt;
375 SSqlStatement* d_setTSIGKeyQuery_stmt;
376 SSqlStatement* d_deleteTSIGKeyQuery_stmt;
377 SSqlStatement* d_getTSIGKeysQuery_stmt;
378 SSqlStatement* d_getAllDomainsQuery_stmt;
379 SSqlStatement* d_ListCommentsQuery_stmt;
380 SSqlStatement* d_InsertCommentQuery_stmt;
381 SSqlStatement* d_DeleteCommentRRsetQuery_stmt;
382 SSqlStatement* d_DeleteCommentsQuery_stmt;
474cacfa
AT
383 SSqlStatement* d_SearchRecordsQuery_stmt;
384 SSqlStatement* d_SearchCommentsQuery_stmt;
512eafef 385
770e6a9c 386protected:
136efa2f 387 bool d_dnssecQueries;
b4ce8b4e 388};
680f25f8
RK
389
390#endif /* PDNS_GSQLBACKEND_HH */