]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/backends/gsql/gsqlbackend.hh
auth: Prevent temporary objects in the DNSBackend::get() overrides
[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 */
e8c59f2d 22#pragma once
b4ce8b4e
BH
23#include <string>
24#include <map>
25#include "ssql.hh"
eb743bba 26#include "pdns/arguments.hh"
b4ce8b4e 27
9ad7641b 28#include "pdns/namespaces.hh"
b4ce8b4e 29
ad34750d
KM
30bool isDnssecDomainMetadata (const string& name);
31
1325e8a2
PD
32/*
33GSQLBackend is a generic backend used by other sql backends
34*/
b4ce8b4e
BH
35class GSQLBackend : public DNSBackend
36{
37public:
38 GSQLBackend(const string &mode, const string &suffix); //!< Makes our connection to the database. Throws an exception if it fails.
39 virtual ~GSQLBackend()
40 {
0f310932 41 freeStatements();
c2826d2e 42 d_db.reset();
b4ce8b4e
BH
43 }
44
45 void setDB(SSql *db)
46 {
0f310932 47 freeStatements();
c2826d2e 48 d_db=std::unique_ptr<SSql>(db);
eb743bba
CH
49 if (d_db) {
50 d_db->setLog(::arg().mustDo("query-logging"));
db737018
RG
51 allocateStatements();
52 }
53 }
54
55 void allocateStatements()
56 {
57 if (d_db) {
0f310932
AT
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);
aa09fa3b 69 d_InsertZoneQuery_stmt = d_db->prepare(d_InsertZoneQuery, 4);
08536840 70 d_InsertRecordQuery_stmt = d_db->prepare(d_InsertRecordQuery, 9);
09070ce7 71 d_InsertEmptyNonTerminalOrderQuery_stmt = d_db->prepare(d_InsertEmptyNonTerminalOrderQuery, 4);
0f310932
AT
72 d_UpdateMasterOfZoneQuery_stmt = d_db->prepare(d_UpdateMasterOfZoneQuery, 2);
73 d_UpdateKindOfZoneQuery_stmt = d_db->prepare(d_UpdateKindOfZoneQuery, 2);
79532aa7 74 d_UpdateAccountOfZoneQuery_stmt = d_db->prepare(d_UpdateAccountOfZoneQuery, 2);
0f310932
AT
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);
0f310932
AT
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);
79de0a80
KM
86 d_updateOrderNameAndAuthQuery_stmt = d_db->prepare(d_updateOrderNameAndAuthQuery, 4);
87 d_updateOrderNameAndAuthTypeQuery_stmt = d_db->prepare(d_updateOrderNameAndAuthTypeQuery, 5);
0f310932 88 d_nullifyOrderNameAndUpdateAuthQuery_stmt = d_db->prepare(d_nullifyOrderNameAndUpdateAuthQuery, 3);
79de0a80 89 d_nullifyOrderNameAndUpdateAuthTypeQuery_stmt = d_db->prepare(d_nullifyOrderNameAndUpdateAuthTypeQuery, 4);
09070ce7
PL
90 d_RemoveEmptyNonTerminalsFromZoneQuery_stmt = d_db->prepare(d_RemoveEmptyNonTerminalsFromZoneQuery, 1);
91 d_DeleteEmptyNonTerminalQuery_stmt = d_db->prepare(d_DeleteEmptyNonTerminalQuery, 2);
33918299 92 d_AddDomainKeyQuery_stmt = d_db->prepare(d_AddDomainKeyQuery, 5);
63de5311 93 d_GetLastInsertedKeyIdQuery_stmt = d_db->prepare(d_GetLastInsertedKeyIdQuery, 0);
0f310932
AT
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);
33918299
RG
103 d_PublishDomainKeyQuery_stmt = d_db->prepare(d_PublishDomainKeyQuery, 2);
104 d_UnpublishDomainKeyQuery_stmt = d_db->prepare(d_UnpublishDomainKeyQuery, 2);
0f310932
AT
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);
474cacfa
AT
115 d_SearchRecordsQuery_stmt = d_db->prepare(d_SearchRecordsQuery, 3);
116 d_SearchCommentsQuery_stmt = d_db->prepare(d_SearchCommentsQuery, 3);
eb743bba 117 }
b4ce8b4e 118 }
0f310932 119
0f310932 120 void freeStatements() {
a59a9c23
AT
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();
a59a9c23
AT
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();
33918299
RG
166 d_PublishDomainKeyQuery_stmt.reset();
167 d_UnpublishDomainKeyQuery_stmt.reset();
a59a9c23
AT
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();
0f310932
AT
180 }
181
acb61e0a 182 void lookup(const QType &, const DNSName &qdomain, int zoneId, DNSPacket *p=nullptr) override;
d57d7155
KM
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;
d57d7155
KM
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;
3bb3f561 190 bool feedRecord(const DNSResourceRecord &r, const DNSName &ordername, bool ordernameIsNSEC3=false) override;
d57d7155
KM
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 {
aa09fa3b
PL
194 return createDomain(domain, "NATIVE", "", "");
195 };
d57d7155
KM
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;
47bddbb7 202 bool getDomainInfo(const DNSName &domain, DomainInfo &di, bool getSerial=true) override;
d57d7155
KM
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;
c02f13ef 207
d57d7155
KM
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;
79de0a80 210
d57d7155
KM
211 bool updateEmptyNonTerminals(uint32_t domain_id, set<DNSName>& insert ,set<DNSName>& erase, bool remove) override;
212 bool doesDNSSEC() override;
5c3bf2db 213
d57d7155
KM
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;
4496f66f 221
d57d7155
KM
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;
33918299
RG
225 bool publishDomainKey(const DNSName& name, unsigned int id) override;
226 bool unpublishDomainKey(const DNSName& name, unsigned int id) override;
4496f66f 227
d57d7155
KM
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;
9a72349d 232
d57d7155
KM
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;
512eafef 240
474cacfa 241protected:
d57d7155 242 bool createDomain(const DNSName &domain, const string &type, const string &masters, const string &account);
474cacfa 243 string pattern2SQLPattern(const string& pattern);
2ea3d25e
RG
244 void extractRecord(SSqlStatement::row_t& row, DNSResourceRecord& rr);
245 void extractComment(SSqlStatement::row_t& row, Comment& c);
45d36933
RG
246 bool isConnectionUsable() {
247 if (d_db) {
248 return d_db->isConnectionUsable();
249 }
250 return false;
251 }
bfa196c0 252 void reconnectIfNeeded()
45d36933 253 {
8fc3a46d 254 if (inTransaction() || isConnectionUsable()) {
aacd07ce
RG
255 return;
256 }
257
bfa196c0
RG
258 reconnect();
259 }
260 virtual void reconnect() { }
261 virtual bool inTransaction()
262 {
263 return d_inTransaction;
45d36933 264 }
6cc98ddf 265
b4ce8b4e 266private:
7c779a31 267 string d_query_name;
f1d06abf 268 DNSName d_qname;
0f310932 269 SSqlStatement::result_t d_result;
b4ce8b4e 270
75f02b56
KM
271 string d_NoIdQuery;
272 string d_IdQuery;
273 string d_ANYNoIdQuery;
274 string d_ANYIdQuery;
275
b4ce8b4e 276 string d_listQuery;
c69120f2 277 string d_listSubZoneQuery;
b4ce8b4e 278 string d_logprefix;
770e6a9c 279
36d772ab
BH
280 string d_MasterOfDomainsZoneQuery;
281 string d_InfoOfDomainsZoneQuery;
282 string d_InfoOfAllSlaveDomainsQuery;
283 string d_SuperMasterInfoQuery;
5805615b
AT
284 string d_GetSuperMasterName;
285 string d_GetSuperMasterIPs;
286
487cf033 287 string d_InsertZoneQuery;
36d772ab 288 string d_InsertRecordQuery;
09070ce7 289 string d_InsertEmptyNonTerminalOrderQuery;
c02f13ef
CH
290 string d_UpdateMasterOfZoneQuery;
291 string d_UpdateKindOfZoneQuery;
79532aa7 292 string d_UpdateAccountOfZoneQuery;
36d772ab
BH
293 string d_UpdateSerialOfZoneQuery;
294 string d_UpdateLastCheckofZoneQuery;
295 string d_InfoOfAllMasterDomainsQuery;
09d6667a
CH
296 string d_DeleteDomainQuery;
297 string d_DeleteZoneQuery;
98d47e2e
CH
298 string d_DeleteRRSetQuery;
299 string d_DeleteNamesQuery;
770e6a9c 300
5697411b 301 string d_firstOrderQuery;
136efa2f
BH
302 string d_beforeOrderQuery;
303 string d_afterOrderQuery;
bc74a078 304 string d_lastOrderQuery;
79de0a80
KM
305
306 string d_updateOrderNameAndAuthQuery;
307 string d_updateOrderNameAndAuthTypeQuery;
c2df797e 308 string d_nullifyOrderNameAndUpdateAuthQuery;
79de0a80
KM
309 string d_nullifyOrderNameAndUpdateAuthTypeQuery;
310
09070ce7
PL
311 string d_RemoveEmptyNonTerminalsFromZoneQuery;
312 string d_DeleteEmptyNonTerminalQuery;
136efa2f 313
c0273500 314 string d_AddDomainKeyQuery;
63de5311 315 string d_GetLastInsertedKeyIdQuery;
c0273500 316 string d_ListDomainKeysQuery;
df0cc941 317 string d_GetAllDomainMetadataQuery;
c0273500 318 string d_GetDomainMetadataQuery;
f7bcc763 319 string d_ClearDomainMetadataQuery;
09d6667a 320 string d_ClearDomainAllMetadataQuery;
c0273500 321 string d_SetDomainMetadataQuery;
4496f66f
BH
322
323 string d_RemoveDomainKeyQuery;
324 string d_ActivateDomainKeyQuery;
325 string d_DeactivateDomainKeyQuery;
33918299
RG
326 string d_PublishDomainKeyQuery;
327 string d_UnpublishDomainKeyQuery;
09d6667a 328 string d_ClearDomainAllKeysQuery;
770e6a9c 329
78bcb858 330 string d_getTSIGKeyQuery;
9a72349d
AT
331 string d_setTSIGKeyQuery;
332 string d_deleteTSIGKeyQuery;
333 string d_getTSIGKeysQuery;
1325e8a2
PD
334
335 string d_getAllDomainsQuery;
336
6cc98ddf
CH
337 string d_ListCommentsQuery;
338 string d_InsertCommentQuery;
339 string d_DeleteCommentRRsetQuery;
340 string d_DeleteCommentsQuery;
341
474cacfa
AT
342 string d_SearchRecordsQuery;
343 string d_SearchCommentsQuery;
344
a59a9c23 345 unique_ptr<SSqlStatement>* d_query_stmt;
0f310932 346
a59a9c23
AT
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;
a59a9c23
AT
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;
33918299
RG
392 unique_ptr<SSqlStatement> d_PublishDomainKeyQuery_stmt;
393 unique_ptr<SSqlStatement> d_UnpublishDomainKeyQuery_stmt;
a59a9c23
AT
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;
512eafef 406
770e6a9c 407protected:
c2826d2e 408 std::unique_ptr<SSql> d_db{nullptr};
136efa2f 409 bool d_dnssecQueries;
bfa196c0 410 bool d_inTransaction{false};
b4ce8b4e 411};