• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

PowerDNS / pdns / 18709198868

22 Oct 2025 07:49AM UTC coverage: 73.016% (+0.01%) from 73.006%
18709198868

Pull #16338

github

web-flow
Merge 53c598698 into 8eda540cb
Pull Request #16338: rec: tighten delegation accept

38301 of 63162 branches covered (60.64%)

Branch coverage included in aggregate %.

30 of 35 new or added lines in 2 files covered. (85.71%)

31 existing lines in 8 files now uncovered.

127486 of 163895 relevant lines covered (77.79%)

6129150.01 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.77
/pdns/backends/gsql/gsqlbackend.hh
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
  ~GSQLBackend() override
40
  {
8,432✔
41
    freeStatements();
8,432✔
42
    d_db.reset();
8,432✔
43
  }
8,432✔
44

45
  void setDB(std::unique_ptr<SSql>&& database)
46
  {
8,942✔
47
    freeStatements();
8,942✔
48
    d_db = std::move(database);
8,942✔
49
    if (d_db) {
8,945✔
50
      d_db->setLog(::arg().mustDo("query-logging"));
8,943✔
51
    }
8,943✔
52
  }
8,942✔
53

54
protected:
55
  virtual void allocateStatements()
56
  {
8,937✔
57
    if (d_db) {
8,941✔
58
      d_NoIdQuery_stmt = d_db->prepare(d_NoIdQuery, 2);
8,940✔
59
      d_IdQuery_stmt = d_db->prepare(d_IdQuery, 3);
8,940✔
60
      d_ANYNoIdQuery_stmt = d_db->prepare(d_ANYNoIdQuery, 1);
8,940✔
61
      d_ANYIdQuery_stmt = d_db->prepare(d_ANYIdQuery, 2);
8,940✔
62
      d_APIIdQuery_stmt = d_db->prepare(d_APIIdQuery, 4);
8,940✔
63
      d_APIANYIdQuery_stmt = d_db->prepare(d_APIANYIdQuery, 3);
8,940✔
64
      d_listQuery_stmt = d_db->prepare(d_listQuery, 2);
8,940✔
65
      d_listSubZoneQuery_stmt = d_db->prepare(d_listSubZoneQuery, 3);
8,940✔
66
      d_PrimaryOfDomainsZoneQuery_stmt = d_db->prepare(d_PrimaryOfDomainsZoneQuery, 1);
8,940✔
67
      d_InfoOfDomainsZoneQuery_stmt = d_db->prepare(d_InfoOfDomainsZoneQuery, 1);
8,940✔
68
      d_InfoOfAllSecondaryDomainsQuery_stmt = d_db->prepare(d_InfoOfAllSecondaryDomainsQuery, 0);
8,940✔
69
      d_AutoPrimaryInfoQuery_stmt = d_db->prepare(d_AutoPrimaryInfoQuery, 2);
8,940✔
70
      d_GetAutoPrimaryIPs_stmt = d_db->prepare(d_GetAutoPrimaryIPs, 2);
8,940✔
71
      d_AddAutoPrimary_stmt = d_db->prepare(d_AddAutoPrimary, 3);
8,940✔
72
      d_RemoveAutoPrimary_stmt = d_db->prepare(d_RemoveAutoPrimaryQuery, 2);
8,940✔
73
      d_ListAutoPrimaries_stmt = d_db->prepare(d_ListAutoPrimariesQuery, 0);
8,940✔
74
      d_InsertZoneQuery_stmt = d_db->prepare(d_InsertZoneQuery, 4);
8,940✔
75
      d_InsertRecordQuery_stmt = d_db->prepare(d_InsertRecordQuery, 9);
8,940✔
76
      d_InsertEmptyNonTerminalOrderQuery_stmt = d_db->prepare(d_InsertEmptyNonTerminalOrderQuery, 4);
8,940✔
77
      d_UpdatePrimaryOfZoneQuery_stmt = d_db->prepare(d_UpdatePrimaryOfZoneQuery, 2);
8,940✔
78
      d_UpdateKindOfZoneQuery_stmt = d_db->prepare(d_UpdateKindOfZoneQuery, 2);
8,940✔
79
      d_UpdateOptionsOfZoneQuery_stmt = d_db->prepare(d_UpdateOptionsOfZoneQuery, 2);
8,940✔
80
      d_UpdateCatalogOfZoneQuery_stmt = d_db->prepare(d_UpdateCatalogOfZoneQuery, 2);
8,940✔
81
      d_UpdateAccountOfZoneQuery_stmt = d_db->prepare(d_UpdateAccountOfZoneQuery, 2);
8,940✔
82
      d_UpdateSerialOfZoneQuery_stmt = d_db->prepare(d_UpdateSerialOfZoneQuery, 2);
8,940✔
83
      d_UpdateLastCheckOfZoneQuery_stmt = d_db->prepare(d_UpdateLastCheckOfZoneQuery, 2);
8,940✔
84
      d_InfoOfAllPrimaryDomainsQuery_stmt = d_db->prepare(d_InfoOfAllPrimaryDomainsQuery, 0);
8,940✔
85
      d_InfoProducerMembersQuery_stmt = d_db->prepare(d_InfoProducerMembersQuery, 1);
8,940✔
86
      d_InfoConsumerMembersQuery_stmt = d_db->prepare(d_InfoConsumerMembersQuery, 1);
8,940✔
87
      d_DeleteDomainQuery_stmt = d_db->prepare(d_DeleteDomainQuery, 1);
8,940✔
88
      d_DeleteZoneQuery_stmt = d_db->prepare(d_DeleteZoneQuery, 1);
8,940✔
89
      d_DeleteRRSetQuery_stmt = d_db->prepare(d_DeleteRRSetQuery, 3);
8,940✔
90
      d_DeleteNamesQuery_stmt = d_db->prepare(d_DeleteNamesQuery, 2);
8,940✔
91
      d_firstOrderQuery_stmt = d_db->prepare(d_firstOrderQuery, 1);
8,940✔
92
      d_beforeOrderQuery_stmt = d_db->prepare(d_beforeOrderQuery, 2);
8,940✔
93
      d_afterOrderQuery_stmt = d_db->prepare(d_afterOrderQuery, 2);
8,940✔
94
      d_lastOrderQuery_stmt = d_db->prepare(d_lastOrderQuery, 1);
8,940✔
95
      d_updateOrderNameAndAuthQuery_stmt = d_db->prepare(d_updateOrderNameAndAuthQuery, 4);
8,940✔
96
      d_updateOrderNameAndAuthTypeQuery_stmt = d_db->prepare(d_updateOrderNameAndAuthTypeQuery, 5);
8,940✔
97
      d_nullifyOrderNameAndUpdateAuthQuery_stmt = d_db->prepare(d_nullifyOrderNameAndUpdateAuthQuery, 3);
8,940✔
98
      d_nullifyOrderNameAndUpdateAuthTypeQuery_stmt = d_db->prepare(d_nullifyOrderNameAndUpdateAuthTypeQuery, 4);
8,940✔
99
      d_RemoveEmptyNonTerminalsFromZoneQuery_stmt = d_db->prepare(d_RemoveEmptyNonTerminalsFromZoneQuery, 1);
8,940✔
100
      d_DeleteEmptyNonTerminalQuery_stmt = d_db->prepare(d_DeleteEmptyNonTerminalQuery, 2);
8,940✔
101
      d_AddDomainKeyQuery_stmt = d_db->prepare(d_AddDomainKeyQuery, 5);
8,940✔
102
      d_GetLastInsertedKeyIdQuery_stmt = d_db->prepare(d_GetLastInsertedKeyIdQuery, 0);
8,940✔
103
      d_ListDomainKeysQuery_stmt = d_db->prepare(d_ListDomainKeysQuery, 1);
8,940✔
104
      d_GetAllDomainMetadataQuery_stmt = d_db->prepare(d_GetAllDomainMetadataQuery, 1);
8,940✔
105
      d_GetDomainMetadataQuery_stmt = d_db->prepare(d_GetDomainMetadataQuery, 2);
8,940✔
106
      d_ClearDomainMetadataQuery_stmt = d_db->prepare(d_ClearDomainMetadataQuery, 2);
8,940✔
107
      d_ClearDomainAllMetadataQuery_stmt = d_db->prepare(d_ClearDomainAllMetadataQuery, 1);
8,940✔
108
      d_SetDomainMetadataQuery_stmt = d_db->prepare(d_SetDomainMetadataQuery, 3);
8,940✔
109
      d_RemoveDomainKeyQuery_stmt = d_db->prepare(d_RemoveDomainKeyQuery, 2);
8,940✔
110
      d_ActivateDomainKeyQuery_stmt = d_db->prepare(d_ActivateDomainKeyQuery, 2);
8,940✔
111
      d_DeactivateDomainKeyQuery_stmt = d_db->prepare(d_DeactivateDomainKeyQuery, 2);
8,940✔
112
      d_PublishDomainKeyQuery_stmt = d_db->prepare(d_PublishDomainKeyQuery, 2);
8,940✔
113
      d_UnpublishDomainKeyQuery_stmt = d_db->prepare(d_UnpublishDomainKeyQuery, 2);
8,940✔
114
      d_ClearDomainAllKeysQuery_stmt = d_db->prepare(d_ClearDomainAllKeysQuery, 1);
8,940✔
115
      d_getTSIGKeyQuery_stmt = d_db->prepare(d_getTSIGKeyQuery, 1);
8,940✔
116
      d_setTSIGKeyQuery_stmt = d_db->prepare(d_setTSIGKeyQuery, 3);
8,940✔
117
      d_deleteTSIGKeyQuery_stmt = d_db->prepare(d_deleteTSIGKeyQuery, 1);
8,940✔
118
      d_getTSIGKeysQuery_stmt = d_db->prepare(d_getTSIGKeysQuery, 0);
8,940✔
119
      d_getAllDomainsQuery_stmt = d_db->prepare(d_getAllDomainsQuery, 1);
8,940✔
120
      d_ListCommentsQuery_stmt = d_db->prepare(d_ListCommentsQuery, 1);
8,940✔
121
      d_InsertCommentQuery_stmt = d_db->prepare(d_InsertCommentQuery, 6);
8,940✔
122
      d_DeleteCommentRRsetQuery_stmt = d_db->prepare(d_DeleteCommentRRsetQuery, 3);
8,940✔
123
      d_DeleteCommentsQuery_stmt = d_db->prepare(d_DeleteCommentsQuery, 1);
8,940✔
124
      d_SearchRecordsQuery_stmt = d_db->prepare(d_SearchRecordsQuery, 3);
8,940✔
125
      d_SearchCommentsQuery_stmt = d_db->prepare(d_SearchCommentsQuery, 3);
8,940✔
126
    }
8,940✔
127
  }
8,937✔
128

129
  virtual void freeStatements() {
17,341✔
130
    d_NoIdQuery_stmt.reset();
17,341✔
131
    d_IdQuery_stmt.reset();
17,341✔
132
    d_ANYNoIdQuery_stmt.reset();
17,341✔
133
    d_ANYIdQuery_stmt.reset();
17,341✔
134
    d_APIIdQuery_stmt.reset();
17,341✔
135
    d_APIANYIdQuery_stmt.reset();
17,341✔
136
    d_listQuery_stmt.reset();
17,341✔
137
    d_listSubZoneQuery_stmt.reset();
17,341✔
138
    d_PrimaryOfDomainsZoneQuery_stmt.reset();
17,341✔
139
    d_InfoOfDomainsZoneQuery_stmt.reset();
17,341✔
140
    d_InfoOfAllSecondaryDomainsQuery_stmt.reset();
17,341✔
141
    d_AutoPrimaryInfoQuery_stmt.reset();
17,341✔
142
    d_GetAutoPrimaryIPs_stmt.reset();
17,341✔
143
    d_AddAutoPrimary_stmt.reset();
17,341✔
144
    d_RemoveAutoPrimary_stmt.reset();
17,341✔
145
    d_ListAutoPrimaries_stmt.reset();
17,341✔
146
    d_InsertZoneQuery_stmt.reset();
17,341✔
147
    d_InsertRecordQuery_stmt.reset();
17,341✔
148
    d_InsertEmptyNonTerminalOrderQuery_stmt.reset();
17,341✔
149
    d_UpdatePrimaryOfZoneQuery_stmt.reset();
17,341✔
150
    d_UpdateKindOfZoneQuery_stmt.reset();
17,341✔
151
    d_UpdateOptionsOfZoneQuery_stmt.reset();
17,341✔
152
    d_UpdateCatalogOfZoneQuery_stmt.reset();
17,341✔
153
    d_UpdateAccountOfZoneQuery_stmt.reset();
17,341✔
154
    d_UpdateSerialOfZoneQuery_stmt.reset();
17,341✔
155
    d_UpdateLastCheckOfZoneQuery_stmt.reset();
17,341✔
156
    d_InfoOfAllPrimaryDomainsQuery_stmt.reset();
17,341✔
157
    d_InfoProducerMembersQuery_stmt.reset();
17,341✔
158
    d_InfoConsumerMembersQuery_stmt.reset();
17,341✔
159
    d_DeleteDomainQuery_stmt.reset();
17,341✔
160
    d_DeleteZoneQuery_stmt.reset();
17,341✔
161
    d_DeleteRRSetQuery_stmt.reset();
17,341✔
162
    d_DeleteNamesQuery_stmt.reset();
17,341✔
163
    d_firstOrderQuery_stmt.reset();
17,341✔
164
    d_beforeOrderQuery_stmt.reset();
17,341✔
165
    d_afterOrderQuery_stmt.reset();
17,341✔
166
    d_lastOrderQuery_stmt.reset();
17,341✔
167
    d_updateOrderNameAndAuthQuery_stmt.reset();
17,341✔
168
    d_updateOrderNameAndAuthTypeQuery_stmt.reset();
17,341✔
169
    d_nullifyOrderNameAndUpdateAuthQuery_stmt.reset();
17,341✔
170
    d_nullifyOrderNameAndUpdateAuthTypeQuery_stmt.reset();
17,341✔
171
    d_RemoveEmptyNonTerminalsFromZoneQuery_stmt.reset();
17,341✔
172
    d_DeleteEmptyNonTerminalQuery_stmt.reset();
17,341✔
173
    d_AddDomainKeyQuery_stmt.reset();
17,341✔
174
    d_GetLastInsertedKeyIdQuery_stmt.reset();
17,341✔
175
    d_ListDomainKeysQuery_stmt.reset();
17,341✔
176
    d_GetAllDomainMetadataQuery_stmt.reset();
17,341✔
177
    d_GetDomainMetadataQuery_stmt.reset();
17,341✔
178
    d_ClearDomainMetadataQuery_stmt.reset();
17,341✔
179
    d_ClearDomainAllMetadataQuery_stmt.reset();
17,341✔
180
    d_SetDomainMetadataQuery_stmt.reset();
17,341✔
181
    d_RemoveDomainKeyQuery_stmt.reset();
17,341✔
182
    d_ActivateDomainKeyQuery_stmt.reset();
17,341✔
183
    d_DeactivateDomainKeyQuery_stmt.reset();
17,341✔
184
    d_PublishDomainKeyQuery_stmt.reset();
17,341✔
185
    d_UnpublishDomainKeyQuery_stmt.reset();
17,341✔
186
    d_ClearDomainAllKeysQuery_stmt.reset();
17,341✔
187
    d_getTSIGKeyQuery_stmt.reset();
17,341✔
188
    d_setTSIGKeyQuery_stmt.reset();
17,341✔
189
    d_deleteTSIGKeyQuery_stmt.reset();
17,341✔
190
    d_getTSIGKeysQuery_stmt.reset();
17,341✔
191
    d_getAllDomainsQuery_stmt.reset();
17,341✔
192
    d_ListCommentsQuery_stmt.reset();
17,341✔
193
    d_InsertCommentQuery_stmt.reset();
17,341✔
194
    d_DeleteCommentRRsetQuery_stmt.reset();
17,341✔
195
    d_DeleteCommentsQuery_stmt.reset();
17,341✔
196
    d_SearchRecordsQuery_stmt.reset();
17,341✔
197
    d_SearchCommentsQuery_stmt.reset();
17,341✔
198
  }
17,341✔
199

200
public:
201
  unsigned int getCapabilities() override;
202
  void lookup(const QType& qtype, const DNSName& qname, domainid_t domain_id, DNSPacket *p=nullptr) override;
203
  void APILookup(const QType &qtype, const DNSName &qname, domainid_t domain_id, bool include_disabled = false) override;
204
  bool list(const ZoneName &target, domainid_t domain_id, bool include_disabled=false) override;
205
  bool get(DNSResourceRecord &r) override;
206
  void getAllDomains(vector<DomainInfo>* domains, bool getSerial, bool include_disabled) override;
207
  bool startTransaction(const ZoneName &domain, domainid_t domain_id=UnknownDomainID) override;
208
  bool commitTransaction() override;
209
  bool abortTransaction() override;
210
  bool feedRecord(const DNSResourceRecord &r, const DNSName &ordername, bool ordernameIsNSEC3=false) override;
211
  bool feedEnts(domainid_t domain_id, map<DNSName,bool>& nonterm) override;
212
  bool feedEnts3(domainid_t domain_id, const DNSName &domain, map<DNSName,bool> &nonterm, const NSEC3PARAMRecordContent& ns3prc, bool narrow) override;
213
  bool createDomain(const ZoneName& domain, const DomainInfo::DomainKind kind, const vector<ComboAddress>& primaries, const string& account) override;
214
  bool createSecondaryDomain(const string& ipAddress, const ZoneName& domain, const string& nameserver, const string& account) override;
215
  bool deleteDomain(const ZoneName &domain) override;
216
  bool autoPrimaryAdd(const AutoPrimary& primary) override;
217
  bool autoPrimaryRemove(const AutoPrimary& primary) override;
218
  bool autoPrimariesList(std::vector<AutoPrimary>& primaries) override;
219
  bool autoPrimaryBackend(const string& ipAddress, const ZoneName& domain, const vector<DNSResourceRecord>& nsset, string* nameserver, string* account, DNSBackend** db) override;
220
  void setStale(domainid_t domain_id) override;
221
  void setFresh(domainid_t domain_id) override;
222
  void getUnfreshSecondaryInfos(vector<DomainInfo>* domains) override;
223
  void getUpdatedPrimaries(vector<DomainInfo>& updatedDomains, std::unordered_set<DNSName>& catalogs, CatalogHashMap& catalogHashes) override;
224
  bool getCatalogMembers(const ZoneName& catalog, vector<CatalogInfo>& members, CatalogInfo::CatalogType type) override;
225
  bool getDomainInfo(const ZoneName &domain, DomainInfo &info, bool getSerial=true) override;
226
  void setNotified(domainid_t domain_id, uint32_t serial) override;
227
  bool setPrimaries(const ZoneName& domain, const vector<ComboAddress>& primaries) override;
228
  bool setKind(const ZoneName &domain, const DomainInfo::DomainKind kind) override;
229
  bool setOptions(const ZoneName& domain, const string& options) override;
230
  bool setCatalog(const ZoneName& domain, const ZoneName& catalog) override;
231
  bool setAccount(const ZoneName &domain, const string &account) override;
232

233
  bool getBeforeAndAfterNamesAbsolute(domainid_t id, const DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after) override;
234
  bool updateDNSSECOrderNameAndAuth(domainid_t domain_id, const DNSName& qname, const DNSName& ordername, bool auth, const uint16_t, bool isNsec3) override;
235

236
  bool updateEmptyNonTerminals(domainid_t domain_id, set<DNSName>& insert ,set<DNSName>& erase, bool remove) override;
237

238
  bool replaceRRSet(domainid_t domain_id, const DNSName& qname, const QType& qt, const vector<DNSResourceRecord>& rrset) override;
239
  bool listSubZone(const ZoneName &zone, domainid_t domain_id) override;
240
  bool addDomainKey(const ZoneName& name, const KeyData& key, int64_t& id) override;
241
  bool getDomainKeys(const ZoneName& name, std::vector<KeyData>& keys) override;
242
  bool getAllDomainMetadata(const ZoneName& name, std::map<std::string, std::vector<std::string> >& meta) override;
243
  bool getDomainMetadata(const ZoneName& name, const std::string& kind, std::vector<std::string>& meta) override;
244
  bool setDomainMetadata(const ZoneName& name, const std::string& kind, const std::vector<std::string>& meta) override;
245

246
  bool removeDomainKey(const ZoneName& name, unsigned int keyId) override;
247
  bool activateDomainKey(const ZoneName& name, unsigned int keyId) override;
248
  bool deactivateDomainKey(const ZoneName& name, unsigned int keyId) override;
249
  bool publishDomainKey(const ZoneName& name, unsigned int keyId) override;
250
  bool unpublishDomainKey(const ZoneName& name, unsigned int keyId) override;
251

252
  bool getTSIGKey(const DNSName& name, DNSName& algorithm, string& content) override;
253
  bool setTSIGKey(const DNSName& name, const DNSName& algorithm, const string& content) override;
254
  bool deleteTSIGKey(const DNSName& name) override;
255
  bool getTSIGKeys(std::vector< struct TSIGKey > &keys) override;
256

257
  bool listComments(const domainid_t domain_id) override;
258
  bool getComment(Comment& comment) override;
259
  bool feedComment(const Comment& comment) override;
260
  bool replaceComments(const domainid_t domain_id, const DNSName& qname, const QType& qt, const vector<Comment>& comments) override;
261
  string directBackendCmd(const string &query) override;
262
  bool searchRecords(const string &pattern, size_t maxResults, vector<DNSResourceRecord>& result) override;
263
  bool searchComments(const string &pattern, size_t maxResults, vector<Comment>& result) override;
264
  bool get_unsafe(DNSResourceRecord& rec, std::vector<std::pair<std::string, std::string>>& invalid) override;
265

266
protected:
267
  string pattern2SQLPattern(const string& pattern);
268
  void extractRecord(SSqlStatement::row_t& row, DNSResourceRecord& rr);
269
  void extractRecord_unsafe(SSqlStatement::row_t& row, DNSResourceRecord& rec, std::vector<std::pair<std::string, std::string>>& invalid);
270
  void extractComment(SSqlStatement::row_t& row, Comment& c);
271
  void setLastCheck(domainid_t domain_id, time_t lastcheck);
272
  bool isConnectionUsable() {
141,445✔
273
    if (d_db) {
141,445!
274
      return d_db->isConnectionUsable();
141,445✔
275
    }
141,445✔
UNCOV
276
    return false;
×
277
  }
141,445✔
278
  void reconnectIfNeeded()
279
  {
1,357,539✔
280
    if (inTransaction() || isConnectionUsable()) {
1,357,542!
281
      return;
1,357,540✔
282
    }
1,357,540✔
283

284
    reconnect();
4,294,967,296✔
285
  }
4,294,967,296✔
286
  virtual void reconnect() { }
×
287
  bool inTransaction() override
288
  {
1,030,045✔
289
    return d_inTransaction;
1,030,045✔
290
  }
1,030,045✔
291

292
  bool d_list{false};
293
  string d_query_name;
294
  DNSName d_qname;
295
  SSqlStatement::result_t d_result;
296
  unique_ptr<SSqlStatement>* d_query_stmt;
297

298
private:
299
  string d_NoIdQuery;
300
  string d_IdQuery;
301
  string d_ANYNoIdQuery;
302
  string d_ANYIdQuery;
303

304
  string d_APIIdQuery;
305
  string d_APIANYIdQuery;
306

307
  string d_listQuery;
308
  string d_listSubZoneQuery;
309
  string d_logprefix;
310

311
  string d_PrimaryOfDomainsZoneQuery;
312
  string d_InfoOfDomainsZoneQuery;
313
  string d_InfoOfAllSecondaryDomainsQuery;
314
  string d_AutoPrimaryInfoQuery;
315
  string d_GetAutoPrimaryName;
316
  string d_GetAutoPrimaryIPs;
317
  string d_AddAutoPrimary;
318
  string d_RemoveAutoPrimaryQuery;
319
  string d_ListAutoPrimariesQuery;
320

321
  string d_InsertZoneQuery;
322
  string d_InsertRecordQuery;
323
  string d_InsertEmptyNonTerminalOrderQuery;
324
  string d_UpdatePrimaryOfZoneQuery;
325
  string d_UpdateKindOfZoneQuery;
326
  string d_UpdateOptionsOfZoneQuery;
327
  string d_UpdateCatalogOfZoneQuery;
328
  string d_UpdateAccountOfZoneQuery;
329
  string d_UpdateSerialOfZoneQuery;
330
  string d_UpdateLastCheckOfZoneQuery;
331
  string d_InfoOfAllPrimaryDomainsQuery;
332
  string d_InfoProducerMembersQuery;
333
  string d_InfoConsumerMembersQuery;
334
  string d_DeleteDomainQuery;
335
  string d_DeleteZoneQuery;
336
  string d_DeleteRRSetQuery;
337
  string d_DeleteNamesQuery;
338

339
  string d_firstOrderQuery;
340
  string d_beforeOrderQuery;
341
  string d_afterOrderQuery;
342
  string d_lastOrderQuery;
343

344
  string d_updateOrderNameAndAuthQuery;
345
  string d_updateOrderNameAndAuthTypeQuery;
346
  string d_nullifyOrderNameAndUpdateAuthQuery;
347
  string d_nullifyOrderNameAndUpdateAuthTypeQuery;
348

349
  string d_RemoveEmptyNonTerminalsFromZoneQuery;
350
  string d_DeleteEmptyNonTerminalQuery;
351

352
  string d_AddDomainKeyQuery;
353
  string d_GetLastInsertedKeyIdQuery;
354
  string d_ListDomainKeysQuery;
355
  string d_GetAllDomainMetadataQuery;
356
  string d_GetDomainMetadataQuery;
357
  string d_ClearDomainMetadataQuery;
358
  string d_ClearDomainAllMetadataQuery;
359
  string d_SetDomainMetadataQuery;
360

361
  string d_RemoveDomainKeyQuery;
362
  string d_ActivateDomainKeyQuery;
363
  string d_DeactivateDomainKeyQuery;
364
  string d_PublishDomainKeyQuery;
365
  string d_UnpublishDomainKeyQuery;
366
  string d_ClearDomainAllKeysQuery;
367

368
  string d_getTSIGKeyQuery;
369
  string d_setTSIGKeyQuery;
370
  string d_deleteTSIGKeyQuery;
371
  string d_getTSIGKeysQuery;
372

373
  string d_getAllDomainsQuery;
374

375
  string d_ListCommentsQuery;
376
  string d_InsertCommentQuery;
377
  string d_DeleteCommentRRsetQuery;
378
  string d_DeleteCommentsQuery;
379

380
  string d_SearchRecordsQuery;
381
  string d_SearchCommentsQuery;
382

383

384
  unique_ptr<SSqlStatement> d_NoIdQuery_stmt;
385
  unique_ptr<SSqlStatement> d_IdQuery_stmt;
386
  unique_ptr<SSqlStatement> d_ANYNoIdQuery_stmt;
387
  unique_ptr<SSqlStatement> d_ANYIdQuery_stmt;
388
  unique_ptr<SSqlStatement> d_APIIdQuery_stmt;
389
  unique_ptr<SSqlStatement> d_APIANYIdQuery_stmt;
390
  unique_ptr<SSqlStatement> d_listQuery_stmt;
391
  unique_ptr<SSqlStatement> d_listSubZoneQuery_stmt;
392
  unique_ptr<SSqlStatement> d_PrimaryOfDomainsZoneQuery_stmt;
393
  unique_ptr<SSqlStatement> d_InfoOfDomainsZoneQuery_stmt;
394
  unique_ptr<SSqlStatement> d_InfoOfAllSecondaryDomainsQuery_stmt;
395
  unique_ptr<SSqlStatement> d_AutoPrimaryInfoQuery_stmt;
396
  unique_ptr<SSqlStatement> d_GetAutoPrimaryIPs_stmt;
397
  unique_ptr<SSqlStatement> d_AddAutoPrimary_stmt;
398
  unique_ptr<SSqlStatement> d_RemoveAutoPrimary_stmt;
399
  unique_ptr<SSqlStatement> d_ListAutoPrimaries_stmt;
400
  unique_ptr<SSqlStatement> d_InsertZoneQuery_stmt;
401
  unique_ptr<SSqlStatement> d_InsertRecordQuery_stmt;
402
  unique_ptr<SSqlStatement> d_InsertEmptyNonTerminalOrderQuery_stmt;
403
  unique_ptr<SSqlStatement> d_UpdatePrimaryOfZoneQuery_stmt;
404
  unique_ptr<SSqlStatement> d_UpdateKindOfZoneQuery_stmt;
405
  unique_ptr<SSqlStatement> d_UpdateOptionsOfZoneQuery_stmt;
406
  unique_ptr<SSqlStatement> d_UpdateCatalogOfZoneQuery_stmt;
407
  unique_ptr<SSqlStatement> d_UpdateAccountOfZoneQuery_stmt;
408
  unique_ptr<SSqlStatement> d_UpdateSerialOfZoneQuery_stmt;
409
  unique_ptr<SSqlStatement> d_UpdateLastCheckOfZoneQuery_stmt;
410
  unique_ptr<SSqlStatement> d_InfoOfAllPrimaryDomainsQuery_stmt;
411
  unique_ptr<SSqlStatement> d_InfoProducerMembersQuery_stmt;
412
  unique_ptr<SSqlStatement> d_InfoConsumerMembersQuery_stmt;
413
  unique_ptr<SSqlStatement> d_DeleteDomainQuery_stmt;
414
  unique_ptr<SSqlStatement> d_DeleteZoneQuery_stmt;
415
  unique_ptr<SSqlStatement> d_DeleteRRSetQuery_stmt;
416
  unique_ptr<SSqlStatement> d_DeleteNamesQuery_stmt;
417
  unique_ptr<SSqlStatement> d_firstOrderQuery_stmt;
418
  unique_ptr<SSqlStatement> d_beforeOrderQuery_stmt;
419
  unique_ptr<SSqlStatement> d_afterOrderQuery_stmt;
420
  unique_ptr<SSqlStatement> d_lastOrderQuery_stmt;
421
  unique_ptr<SSqlStatement> d_updateOrderNameAndAuthQuery_stmt;
422
  unique_ptr<SSqlStatement> d_updateOrderNameAndAuthTypeQuery_stmt;
423
  unique_ptr<SSqlStatement> d_nullifyOrderNameAndUpdateAuthQuery_stmt;
424
  unique_ptr<SSqlStatement> d_nullifyOrderNameAndUpdateAuthTypeQuery_stmt;
425
  unique_ptr<SSqlStatement> d_RemoveEmptyNonTerminalsFromZoneQuery_stmt;
426
  unique_ptr<SSqlStatement> d_DeleteEmptyNonTerminalQuery_stmt;
427
  unique_ptr<SSqlStatement> d_AddDomainKeyQuery_stmt;
428
  unique_ptr<SSqlStatement> d_GetLastInsertedKeyIdQuery_stmt;
429
  unique_ptr<SSqlStatement> d_ListDomainKeysQuery_stmt;
430
  unique_ptr<SSqlStatement> d_GetAllDomainMetadataQuery_stmt;
431
  unique_ptr<SSqlStatement> d_GetDomainMetadataQuery_stmt;
432
  unique_ptr<SSqlStatement> d_ClearDomainMetadataQuery_stmt;
433
  unique_ptr<SSqlStatement> d_ClearDomainAllMetadataQuery_stmt;
434
  unique_ptr<SSqlStatement> d_SetDomainMetadataQuery_stmt;
435
  unique_ptr<SSqlStatement> d_RemoveDomainKeyQuery_stmt;
436
  unique_ptr<SSqlStatement> d_ActivateDomainKeyQuery_stmt;
437
  unique_ptr<SSqlStatement> d_DeactivateDomainKeyQuery_stmt;
438
  unique_ptr<SSqlStatement> d_PublishDomainKeyQuery_stmt;
439
  unique_ptr<SSqlStatement> d_UnpublishDomainKeyQuery_stmt;
440
  unique_ptr<SSqlStatement> d_ClearDomainAllKeysQuery_stmt;
441
  unique_ptr<SSqlStatement> d_getTSIGKeyQuery_stmt;
442
  unique_ptr<SSqlStatement> d_setTSIGKeyQuery_stmt;
443
  unique_ptr<SSqlStatement> d_deleteTSIGKeyQuery_stmt;
444
  unique_ptr<SSqlStatement> d_getTSIGKeysQuery_stmt;
445
  unique_ptr<SSqlStatement> d_getAllDomainsQuery_stmt;
446
  unique_ptr<SSqlStatement> d_ListCommentsQuery_stmt;
447
  unique_ptr<SSqlStatement> d_InsertCommentQuery_stmt;
448
  unique_ptr<SSqlStatement> d_DeleteCommentRRsetQuery_stmt;
449
  unique_ptr<SSqlStatement> d_DeleteCommentsQuery_stmt;
450
  unique_ptr<SSqlStatement> d_SearchRecordsQuery_stmt;
451
  unique_ptr<SSqlStatement> d_SearchCommentsQuery_stmt;
452

453
protected:
454
  std::unique_ptr<SSql> d_db{nullptr};
455
  bool d_dnssecQueries;
456
  bool d_inTransaction{false};
457
  bool d_upgradeContent{false};
458
};
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc