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