]>
Commit | Line | Data |
---|---|---|
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 | */ | |
22 | #pragma once | |
23 | #include <string> | |
24 | #include <map> | |
25 | #include "ssql.hh" | |
26 | #include "pdns/arguments.hh" | |
27 | ||
28 | #include "pdns/namespaces.hh" | |
29 | ||
30 | bool isDnssecDomainMetadata (const string& name); | |
31 | ||
32 | /* | |
33 | GSQLBackend is a generic backend used by other sql backends | |
34 | */ | |
35 | class GSQLBackend : public DNSBackend | |
36 | { | |
37 | public: | |
38 | GSQLBackend(const string &mode, const string &suffix); //!< Makes our connection to the database. Throws an exception if it fails. | |
39 | virtual ~GSQLBackend() | |
40 | { | |
41 | freeStatements(); | |
42 | d_db.reset(); | |
43 | } | |
44 | ||
45 | void setDB(SSql *db) | |
46 | { | |
47 | freeStatements(); | |
48 | d_db=std::unique_ptr<SSql>(db); | |
49 | if (d_db) { | |
50 | d_db->setLog(::arg().mustDo("query-logging")); | |
51 | allocateStatements(); | |
52 | } | |
53 | } | |
54 | ||
55 | void allocateStatements() | |
56 | { | |
57 | if (d_db) { | |
58 | d_NoIdQuery_stmt = d_db->prepare(d_NoIdQuery, 2); | |
59 | d_IdQuery_stmt = d_db->prepare(d_IdQuery, 3); | |
60 | d_ANYNoIdQuery_stmt = d_db->prepare(d_ANYNoIdQuery, 1); | |
61 | d_ANYIdQuery_stmt = d_db->prepare(d_ANYIdQuery, 2); | |
62 | d_listQuery_stmt = d_db->prepare(d_listQuery, 2); | |
63 | d_listSubZoneQuery_stmt = d_db->prepare(d_listSubZoneQuery, 3); | |
64 | d_MasterOfDomainsZoneQuery_stmt = d_db->prepare(d_MasterOfDomainsZoneQuery, 1); | |
65 | d_InfoOfDomainsZoneQuery_stmt = d_db->prepare(d_InfoOfDomainsZoneQuery, 1); | |
66 | d_InfoOfAllSlaveDomainsQuery_stmt = d_db->prepare(d_InfoOfAllSlaveDomainsQuery, 0); | |
67 | d_SuperMasterInfoQuery_stmt = d_db->prepare(d_SuperMasterInfoQuery, 2); | |
68 | d_GetSuperMasterIPs_stmt = d_db->prepare(d_GetSuperMasterIPs, 2); | |
69 | d_InsertZoneQuery_stmt = d_db->prepare(d_InsertZoneQuery, 4); | |
70 | d_InsertRecordQuery_stmt = d_db->prepare(d_InsertRecordQuery, 9); | |
71 | d_InsertEmptyNonTerminalOrderQuery_stmt = d_db->prepare(d_InsertEmptyNonTerminalOrderQuery, 4); | |
72 | d_UpdateMasterOfZoneQuery_stmt = d_db->prepare(d_UpdateMasterOfZoneQuery, 2); | |
73 | d_UpdateKindOfZoneQuery_stmt = d_db->prepare(d_UpdateKindOfZoneQuery, 2); | |
74 | d_UpdateAccountOfZoneQuery_stmt = d_db->prepare(d_UpdateAccountOfZoneQuery, 2); | |
75 | d_UpdateSerialOfZoneQuery_stmt = d_db->prepare(d_UpdateSerialOfZoneQuery, 2); | |
76 | d_UpdateLastCheckofZoneQuery_stmt = d_db->prepare(d_UpdateLastCheckofZoneQuery, 2); | |
77 | d_InfoOfAllMasterDomainsQuery_stmt = d_db->prepare(d_InfoOfAllMasterDomainsQuery, 0); | |
78 | d_DeleteDomainQuery_stmt = d_db->prepare(d_DeleteDomainQuery, 1); | |
79 | d_DeleteZoneQuery_stmt = d_db->prepare(d_DeleteZoneQuery, 1); | |
80 | d_DeleteRRSetQuery_stmt = d_db->prepare(d_DeleteRRSetQuery, 3); | |
81 | d_DeleteNamesQuery_stmt = d_db->prepare(d_DeleteNamesQuery, 2); | |
82 | d_firstOrderQuery_stmt = d_db->prepare(d_firstOrderQuery, 1); | |
83 | d_beforeOrderQuery_stmt = d_db->prepare(d_beforeOrderQuery, 2); | |
84 | d_afterOrderQuery_stmt = d_db->prepare(d_afterOrderQuery, 2); | |
85 | d_lastOrderQuery_stmt = d_db->prepare(d_lastOrderQuery, 1); | |
86 | d_updateOrderNameAndAuthQuery_stmt = d_db->prepare(d_updateOrderNameAndAuthQuery, 4); | |
87 | d_updateOrderNameAndAuthTypeQuery_stmt = d_db->prepare(d_updateOrderNameAndAuthTypeQuery, 5); | |
88 | d_nullifyOrderNameAndUpdateAuthQuery_stmt = d_db->prepare(d_nullifyOrderNameAndUpdateAuthQuery, 3); | |
89 | d_nullifyOrderNameAndUpdateAuthTypeQuery_stmt = d_db->prepare(d_nullifyOrderNameAndUpdateAuthTypeQuery, 4); | |
90 | d_RemoveEmptyNonTerminalsFromZoneQuery_stmt = d_db->prepare(d_RemoveEmptyNonTerminalsFromZoneQuery, 1); | |
91 | d_DeleteEmptyNonTerminalQuery_stmt = d_db->prepare(d_DeleteEmptyNonTerminalQuery, 2); | |
92 | d_AddDomainKeyQuery_stmt = d_db->prepare(d_AddDomainKeyQuery, 5); | |
93 | d_GetLastInsertedKeyIdQuery_stmt = d_db->prepare(d_GetLastInsertedKeyIdQuery, 0); | |
94 | d_ListDomainKeysQuery_stmt = d_db->prepare(d_ListDomainKeysQuery, 1); | |
95 | d_GetAllDomainMetadataQuery_stmt = d_db->prepare(d_GetAllDomainMetadataQuery, 1); | |
96 | d_GetDomainMetadataQuery_stmt = d_db->prepare(d_GetDomainMetadataQuery, 2); | |
97 | d_ClearDomainMetadataQuery_stmt = d_db->prepare(d_ClearDomainMetadataQuery, 2); | |
98 | d_ClearDomainAllMetadataQuery_stmt = d_db->prepare(d_ClearDomainAllMetadataQuery, 1); | |
99 | d_SetDomainMetadataQuery_stmt = d_db->prepare(d_SetDomainMetadataQuery, 3); | |
100 | d_RemoveDomainKeyQuery_stmt = d_db->prepare(d_RemoveDomainKeyQuery, 2); | |
101 | d_ActivateDomainKeyQuery_stmt = d_db->prepare(d_ActivateDomainKeyQuery, 2); | |
102 | d_DeactivateDomainKeyQuery_stmt = d_db->prepare(d_DeactivateDomainKeyQuery, 2); | |
103 | d_PublishDomainKeyQuery_stmt = d_db->prepare(d_PublishDomainKeyQuery, 2); | |
104 | d_UnpublishDomainKeyQuery_stmt = d_db->prepare(d_UnpublishDomainKeyQuery, 2); | |
105 | d_ClearDomainAllKeysQuery_stmt = d_db->prepare(d_ClearDomainAllKeysQuery, 1); | |
106 | d_getTSIGKeyQuery_stmt = d_db->prepare(d_getTSIGKeyQuery, 1); | |
107 | d_setTSIGKeyQuery_stmt = d_db->prepare(d_setTSIGKeyQuery, 3); | |
108 | d_deleteTSIGKeyQuery_stmt = d_db->prepare(d_deleteTSIGKeyQuery, 1); | |
109 | d_getTSIGKeysQuery_stmt = d_db->prepare(d_getTSIGKeysQuery, 0); | |
110 | d_getAllDomainsQuery_stmt = d_db->prepare(d_getAllDomainsQuery, 1); | |
111 | d_ListCommentsQuery_stmt = d_db->prepare(d_ListCommentsQuery, 1); | |
112 | d_InsertCommentQuery_stmt = d_db->prepare(d_InsertCommentQuery, 6); | |
113 | d_DeleteCommentRRsetQuery_stmt = d_db->prepare(d_DeleteCommentRRsetQuery, 3); | |
114 | d_DeleteCommentsQuery_stmt = d_db->prepare(d_DeleteCommentsQuery, 1); | |
115 | d_SearchRecordsQuery_stmt = d_db->prepare(d_SearchRecordsQuery, 3); | |
116 | d_SearchCommentsQuery_stmt = d_db->prepare(d_SearchCommentsQuery, 3); | |
117 | } | |
118 | } | |
119 | ||
120 | void freeStatements() { | |
121 | d_NoIdQuery_stmt.reset(); | |
122 | d_IdQuery_stmt.reset(); | |
123 | d_ANYNoIdQuery_stmt.reset(); | |
124 | d_ANYIdQuery_stmt.reset(); | |
125 | d_listQuery_stmt.reset(); | |
126 | d_listSubZoneQuery_stmt.reset(); | |
127 | d_MasterOfDomainsZoneQuery_stmt.reset(); | |
128 | d_InfoOfDomainsZoneQuery_stmt.reset(); | |
129 | d_InfoOfAllSlaveDomainsQuery_stmt.reset(); | |
130 | d_SuperMasterInfoQuery_stmt.reset(); | |
131 | d_GetSuperMasterIPs_stmt.reset(); | |
132 | d_InsertZoneQuery_stmt.reset(); | |
133 | d_InsertRecordQuery_stmt.reset(); | |
134 | d_InsertEmptyNonTerminalOrderQuery_stmt.reset(); | |
135 | d_UpdateMasterOfZoneQuery_stmt.reset(); | |
136 | d_UpdateKindOfZoneQuery_stmt.reset(); | |
137 | d_UpdateAccountOfZoneQuery_stmt.reset(); | |
138 | d_UpdateSerialOfZoneQuery_stmt.reset(); | |
139 | d_UpdateLastCheckofZoneQuery_stmt.reset(); | |
140 | d_InfoOfAllMasterDomainsQuery_stmt.reset(); | |
141 | d_DeleteDomainQuery_stmt.reset(); | |
142 | d_DeleteZoneQuery_stmt.reset(); | |
143 | d_DeleteRRSetQuery_stmt.reset(); | |
144 | d_DeleteNamesQuery_stmt.reset(); | |
145 | d_firstOrderQuery_stmt.reset(); | |
146 | d_beforeOrderQuery_stmt.reset(); | |
147 | d_afterOrderQuery_stmt.reset(); | |
148 | d_lastOrderQuery_stmt.reset(); | |
149 | d_updateOrderNameAndAuthQuery_stmt.reset(); | |
150 | d_updateOrderNameAndAuthTypeQuery_stmt.reset(); | |
151 | d_nullifyOrderNameAndUpdateAuthQuery_stmt.reset(); | |
152 | d_nullifyOrderNameAndUpdateAuthTypeQuery_stmt.reset(); | |
153 | d_RemoveEmptyNonTerminalsFromZoneQuery_stmt.reset(); | |
154 | d_DeleteEmptyNonTerminalQuery_stmt.reset(); | |
155 | d_AddDomainKeyQuery_stmt.reset(); | |
156 | d_GetLastInsertedKeyIdQuery_stmt.reset(); | |
157 | d_ListDomainKeysQuery_stmt.reset(); | |
158 | d_GetAllDomainMetadataQuery_stmt.reset(); | |
159 | d_GetDomainMetadataQuery_stmt.reset(); | |
160 | d_ClearDomainMetadataQuery_stmt.reset(); | |
161 | d_ClearDomainAllMetadataQuery_stmt.reset(); | |
162 | d_SetDomainMetadataQuery_stmt.reset(); | |
163 | d_RemoveDomainKeyQuery_stmt.reset(); | |
164 | d_ActivateDomainKeyQuery_stmt.reset(); | |
165 | d_DeactivateDomainKeyQuery_stmt.reset(); | |
166 | d_PublishDomainKeyQuery_stmt.reset(); | |
167 | d_UnpublishDomainKeyQuery_stmt.reset(); | |
168 | d_ClearDomainAllKeysQuery_stmt.reset(); | |
169 | d_getTSIGKeyQuery_stmt.reset(); | |
170 | d_setTSIGKeyQuery_stmt.reset(); | |
171 | d_deleteTSIGKeyQuery_stmt.reset(); | |
172 | d_getTSIGKeysQuery_stmt.reset(); | |
173 | d_getAllDomainsQuery_stmt.reset(); | |
174 | d_ListCommentsQuery_stmt.reset(); | |
175 | d_InsertCommentQuery_stmt.reset(); | |
176 | d_DeleteCommentRRsetQuery_stmt.reset(); | |
177 | d_DeleteCommentsQuery_stmt.reset(); | |
178 | d_SearchRecordsQuery_stmt.reset(); | |
179 | d_SearchCommentsQuery_stmt.reset(); | |
180 | } | |
181 | ||
182 | void lookup(const QType &, const DNSName &qdomain, int zoneId, DNSPacket *p=nullptr) override; | |
183 | bool list(const DNSName &target, int domain_id, bool include_disabled=false) override; | |
184 | bool get(DNSResourceRecord &r) override; | |
185 | void getAllDomains(vector<DomainInfo> *domains, bool include_disabled=false) override; | |
186 | void alsoNotifies(const DNSName &domain, set<string> *ips) override; | |
187 | bool startTransaction(const DNSName &domain, int domain_id=-1) override; | |
188 | bool commitTransaction() override; | |
189 | bool abortTransaction() override; | |
190 | bool feedRecord(const DNSResourceRecord &r, const DNSName &ordername, bool ordernameIsNSEC3=false) override; | |
191 | bool feedEnts(int domain_id, map<DNSName,bool>& nonterm) override; | |
192 | bool feedEnts3(int domain_id, const DNSName &domain, map<DNSName,bool> &nonterm, const NSEC3PARAMRecordContent& ns3prc, bool narrow) override; | |
193 | bool createDomain(const DNSName &domain) override { | |
194 | return createDomain(domain, "NATIVE", "", ""); | |
195 | }; | |
196 | bool createSlaveDomain(const string &ip, const DNSName &domain, const string &nameserver, const string &account) override; | |
197 | bool deleteDomain(const DNSName &domain) override; | |
198 | bool superMasterBackend(const string &ip, const DNSName &domain, const vector<DNSResourceRecord>&nsset, string *nameserver, string *account, DNSBackend **db) override; | |
199 | void setFresh(uint32_t domain_id) override; | |
200 | void getUnfreshSlaveInfos(vector<DomainInfo> *domains) override; | |
201 | void getUpdatedMasters(vector<DomainInfo> *updatedDomains) override; | |
202 | bool getDomainInfo(const DNSName &domain, DomainInfo &di, bool getSerial=true) override; | |
203 | void setNotified(uint32_t domain_id, uint32_t serial) override; | |
204 | bool setMaster(const DNSName &domain, const string &ip) override; | |
205 | bool setKind(const DNSName &domain, const DomainInfo::DomainKind kind) override; | |
206 | bool setAccount(const DNSName &domain, const string &account) override; | |
207 | ||
208 | bool getBeforeAndAfterNamesAbsolute(uint32_t id, const DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after) override; | |
209 | bool updateDNSSECOrderNameAndAuth(uint32_t domain_id, const DNSName& qname, const DNSName& ordername, bool auth, const uint16_t=QType::ANY) override; | |
210 | ||
211 | bool updateEmptyNonTerminals(uint32_t domain_id, set<DNSName>& insert ,set<DNSName>& erase, bool remove) override; | |
212 | bool doesDNSSEC() override; | |
213 | ||
214 | bool replaceRRSet(uint32_t domain_id, const DNSName& qname, const QType& qt, const vector<DNSResourceRecord>& rrset) override; | |
215 | bool listSubZone(const DNSName &zone, int domain_id) override; | |
216 | bool addDomainKey(const DNSName& name, const KeyData& key, int64_t& id) override; | |
217 | bool getDomainKeys(const DNSName& name, std::vector<KeyData>& keys) override; | |
218 | bool getAllDomainMetadata(const DNSName& name, std::map<std::string, std::vector<std::string> >& meta) override; | |
219 | bool getDomainMetadata(const DNSName& name, const std::string& kind, std::vector<std::string>& meta) override; | |
220 | bool setDomainMetadata(const DNSName& name, const std::string& kind, const std::vector<std::string>& meta) override; | |
221 | ||
222 | bool removeDomainKey(const DNSName& name, unsigned int id) override; | |
223 | bool activateDomainKey(const DNSName& name, unsigned int id) override; | |
224 | bool deactivateDomainKey(const DNSName& name, unsigned int id) override; | |
225 | bool publishDomainKey(const DNSName& name, unsigned int id) override; | |
226 | bool unpublishDomainKey(const DNSName& name, unsigned int id) override; | |
227 | ||
228 | bool getTSIGKey(const DNSName& name, DNSName* algorithm, string* content) override; | |
229 | bool setTSIGKey(const DNSName& name, const DNSName& algorithm, const string& content) override; | |
230 | bool deleteTSIGKey(const DNSName& name) override; | |
231 | bool getTSIGKeys(std::vector< struct TSIGKey > &keys) override; | |
232 | ||
233 | bool listComments(const uint32_t domain_id) override; | |
234 | bool getComment(Comment& comment) override; | |
235 | void feedComment(const Comment& comment) override; | |
236 | bool replaceComments(const uint32_t domain_id, const DNSName& qname, const QType& qt, const vector<Comment>& comments) override; | |
237 | string directBackendCmd(const string &query) override; | |
238 | bool searchRecords(const string &pattern, int maxResults, vector<DNSResourceRecord>& result) override; | |
239 | bool searchComments(const string &pattern, int maxResults, vector<Comment>& result) override; | |
240 | ||
241 | protected: | |
242 | bool createDomain(const DNSName &domain, const string &type, const string &masters, const string &account); | |
243 | string pattern2SQLPattern(const string& pattern); | |
244 | void extractRecord(SSqlStatement::row_t& row, DNSResourceRecord& rr); | |
245 | void extractComment(SSqlStatement::row_t& row, Comment& c); | |
246 | bool isConnectionUsable() { | |
247 | if (d_db) { | |
248 | return d_db->isConnectionUsable(); | |
249 | } | |
250 | return false; | |
251 | } | |
252 | void reconnectIfNeeded() | |
253 | { | |
254 | if (inTransaction() || isConnectionUsable()) { | |
255 | return; | |
256 | } | |
257 | ||
258 | reconnect(); | |
259 | } | |
260 | virtual void reconnect() { } | |
261 | virtual bool inTransaction() | |
262 | { | |
263 | return d_inTransaction; | |
264 | } | |
265 | ||
266 | private: | |
267 | string d_query_name; | |
268 | DNSName d_qname; | |
269 | SSqlStatement::result_t d_result; | |
270 | ||
271 | string d_NoIdQuery; | |
272 | string d_IdQuery; | |
273 | string d_ANYNoIdQuery; | |
274 | string d_ANYIdQuery; | |
275 | ||
276 | string d_listQuery; | |
277 | string d_listSubZoneQuery; | |
278 | string d_logprefix; | |
279 | ||
280 | string d_MasterOfDomainsZoneQuery; | |
281 | string d_InfoOfDomainsZoneQuery; | |
282 | string d_InfoOfAllSlaveDomainsQuery; | |
283 | string d_SuperMasterInfoQuery; | |
284 | string d_GetSuperMasterName; | |
285 | string d_GetSuperMasterIPs; | |
286 | ||
287 | string d_InsertZoneQuery; | |
288 | string d_InsertRecordQuery; | |
289 | string d_InsertEmptyNonTerminalOrderQuery; | |
290 | string d_UpdateMasterOfZoneQuery; | |
291 | string d_UpdateKindOfZoneQuery; | |
292 | string d_UpdateAccountOfZoneQuery; | |
293 | string d_UpdateSerialOfZoneQuery; | |
294 | string d_UpdateLastCheckofZoneQuery; | |
295 | string d_InfoOfAllMasterDomainsQuery; | |
296 | string d_DeleteDomainQuery; | |
297 | string d_DeleteZoneQuery; | |
298 | string d_DeleteRRSetQuery; | |
299 | string d_DeleteNamesQuery; | |
300 | ||
301 | string d_firstOrderQuery; | |
302 | string d_beforeOrderQuery; | |
303 | string d_afterOrderQuery; | |
304 | string d_lastOrderQuery; | |
305 | ||
306 | string d_updateOrderNameAndAuthQuery; | |
307 | string d_updateOrderNameAndAuthTypeQuery; | |
308 | string d_nullifyOrderNameAndUpdateAuthQuery; | |
309 | string d_nullifyOrderNameAndUpdateAuthTypeQuery; | |
310 | ||
311 | string d_RemoveEmptyNonTerminalsFromZoneQuery; | |
312 | string d_DeleteEmptyNonTerminalQuery; | |
313 | ||
314 | string d_AddDomainKeyQuery; | |
315 | string d_GetLastInsertedKeyIdQuery; | |
316 | string d_ListDomainKeysQuery; | |
317 | string d_GetAllDomainMetadataQuery; | |
318 | string d_GetDomainMetadataQuery; | |
319 | string d_ClearDomainMetadataQuery; | |
320 | string d_ClearDomainAllMetadataQuery; | |
321 | string d_SetDomainMetadataQuery; | |
322 | ||
323 | string d_RemoveDomainKeyQuery; | |
324 | string d_ActivateDomainKeyQuery; | |
325 | string d_DeactivateDomainKeyQuery; | |
326 | string d_PublishDomainKeyQuery; | |
327 | string d_UnpublishDomainKeyQuery; | |
328 | string d_ClearDomainAllKeysQuery; | |
329 | ||
330 | string d_getTSIGKeyQuery; | |
331 | string d_setTSIGKeyQuery; | |
332 | string d_deleteTSIGKeyQuery; | |
333 | string d_getTSIGKeysQuery; | |
334 | ||
335 | string d_getAllDomainsQuery; | |
336 | ||
337 | string d_ListCommentsQuery; | |
338 | string d_InsertCommentQuery; | |
339 | string d_DeleteCommentRRsetQuery; | |
340 | string d_DeleteCommentsQuery; | |
341 | ||
342 | string d_SearchRecordsQuery; | |
343 | string d_SearchCommentsQuery; | |
344 | ||
345 | unique_ptr<SSqlStatement>* d_query_stmt; | |
346 | ||
347 | unique_ptr<SSqlStatement> d_NoIdQuery_stmt; | |
348 | unique_ptr<SSqlStatement> d_IdQuery_stmt; | |
349 | unique_ptr<SSqlStatement> d_ANYNoIdQuery_stmt; | |
350 | unique_ptr<SSqlStatement> d_ANYIdQuery_stmt; | |
351 | unique_ptr<SSqlStatement> d_listQuery_stmt; | |
352 | unique_ptr<SSqlStatement> d_listSubZoneQuery_stmt; | |
353 | unique_ptr<SSqlStatement> d_MasterOfDomainsZoneQuery_stmt; | |
354 | unique_ptr<SSqlStatement> d_InfoOfDomainsZoneQuery_stmt; | |
355 | unique_ptr<SSqlStatement> d_InfoOfAllSlaveDomainsQuery_stmt; | |
356 | unique_ptr<SSqlStatement> d_SuperMasterInfoQuery_stmt; | |
357 | unique_ptr<SSqlStatement> d_GetSuperMasterIPs_stmt; | |
358 | unique_ptr<SSqlStatement> d_InsertZoneQuery_stmt; | |
359 | unique_ptr<SSqlStatement> d_InsertRecordQuery_stmt; | |
360 | unique_ptr<SSqlStatement> d_InsertEmptyNonTerminalOrderQuery_stmt; | |
361 | unique_ptr<SSqlStatement> d_UpdateMasterOfZoneQuery_stmt; | |
362 | unique_ptr<SSqlStatement> d_UpdateKindOfZoneQuery_stmt; | |
363 | unique_ptr<SSqlStatement> d_UpdateAccountOfZoneQuery_stmt; | |
364 | unique_ptr<SSqlStatement> d_UpdateSerialOfZoneQuery_stmt; | |
365 | unique_ptr<SSqlStatement> d_UpdateLastCheckofZoneQuery_stmt; | |
366 | unique_ptr<SSqlStatement> d_InfoOfAllMasterDomainsQuery_stmt; | |
367 | unique_ptr<SSqlStatement> d_DeleteDomainQuery_stmt; | |
368 | unique_ptr<SSqlStatement> d_DeleteZoneQuery_stmt; | |
369 | unique_ptr<SSqlStatement> d_DeleteRRSetQuery_stmt; | |
370 | unique_ptr<SSqlStatement> d_DeleteNamesQuery_stmt; | |
371 | unique_ptr<SSqlStatement> d_firstOrderQuery_stmt; | |
372 | unique_ptr<SSqlStatement> d_beforeOrderQuery_stmt; | |
373 | unique_ptr<SSqlStatement> d_afterOrderQuery_stmt; | |
374 | unique_ptr<SSqlStatement> d_lastOrderQuery_stmt; | |
375 | unique_ptr<SSqlStatement> d_updateOrderNameAndAuthQuery_stmt; | |
376 | unique_ptr<SSqlStatement> d_updateOrderNameAndAuthTypeQuery_stmt; | |
377 | unique_ptr<SSqlStatement> d_nullifyOrderNameAndUpdateAuthQuery_stmt; | |
378 | unique_ptr<SSqlStatement> d_nullifyOrderNameAndUpdateAuthTypeQuery_stmt; | |
379 | unique_ptr<SSqlStatement> d_RemoveEmptyNonTerminalsFromZoneQuery_stmt; | |
380 | unique_ptr<SSqlStatement> d_DeleteEmptyNonTerminalQuery_stmt; | |
381 | unique_ptr<SSqlStatement> d_AddDomainKeyQuery_stmt; | |
382 | unique_ptr<SSqlStatement> d_GetLastInsertedKeyIdQuery_stmt; | |
383 | unique_ptr<SSqlStatement> d_ListDomainKeysQuery_stmt; | |
384 | unique_ptr<SSqlStatement> d_GetAllDomainMetadataQuery_stmt; | |
385 | unique_ptr<SSqlStatement> d_GetDomainMetadataQuery_stmt; | |
386 | unique_ptr<SSqlStatement> d_ClearDomainMetadataQuery_stmt; | |
387 | unique_ptr<SSqlStatement> d_ClearDomainAllMetadataQuery_stmt; | |
388 | unique_ptr<SSqlStatement> d_SetDomainMetadataQuery_stmt; | |
389 | unique_ptr<SSqlStatement> d_RemoveDomainKeyQuery_stmt; | |
390 | unique_ptr<SSqlStatement> d_ActivateDomainKeyQuery_stmt; | |
391 | unique_ptr<SSqlStatement> d_DeactivateDomainKeyQuery_stmt; | |
392 | unique_ptr<SSqlStatement> d_PublishDomainKeyQuery_stmt; | |
393 | unique_ptr<SSqlStatement> d_UnpublishDomainKeyQuery_stmt; | |
394 | unique_ptr<SSqlStatement> d_ClearDomainAllKeysQuery_stmt; | |
395 | unique_ptr<SSqlStatement> d_getTSIGKeyQuery_stmt; | |
396 | unique_ptr<SSqlStatement> d_setTSIGKeyQuery_stmt; | |
397 | unique_ptr<SSqlStatement> d_deleteTSIGKeyQuery_stmt; | |
398 | unique_ptr<SSqlStatement> d_getTSIGKeysQuery_stmt; | |
399 | unique_ptr<SSqlStatement> d_getAllDomainsQuery_stmt; | |
400 | unique_ptr<SSqlStatement> d_ListCommentsQuery_stmt; | |
401 | unique_ptr<SSqlStatement> d_InsertCommentQuery_stmt; | |
402 | unique_ptr<SSqlStatement> d_DeleteCommentRRsetQuery_stmt; | |
403 | unique_ptr<SSqlStatement> d_DeleteCommentsQuery_stmt; | |
404 | unique_ptr<SSqlStatement> d_SearchRecordsQuery_stmt; | |
405 | unique_ptr<SSqlStatement> d_SearchCommentsQuery_stmt; | |
406 | ||
407 | protected: | |
408 | std::unique_ptr<SSql> d_db{nullptr}; | |
409 | bool d_dnssecQueries; | |
410 | bool d_inTransaction{false}; | |
411 | }; |