Created
May 11, 2021 20:44
-
-
Save Habbie/f21d5b4cf87f2f3b9f85134eaf40c812 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/modules/gpgsqlbackend/gpgsqlbackend.cc b/modules/gpgsqlbackend/gpgsqlbackend.cc | |
index de4de76ff..4b3275e3e 100644 | |
--- a/modules/gpgsqlbackend/gpgsqlbackend.cc | |
+++ b/modules/gpgsqlbackend/gpgsqlbackend.cc | |
@@ -141,7 +141,7 @@ public: | |
declare(suffix, "delete-rrset-query", "", "delete from records where domain_id=$1 and name=$2 and type=$3"); | |
declare(suffix, "delete-names-query", "", "delete from records where domain_id=$1 and name=$2"); | |
- declare(suffix, "add-domain-key-query", "", "insert into cryptokeys (domain_id, flags, active, published, content) select id, $1, $2, $3, $4 from domains where name=$5"); | |
+ declare(suffix, "add-domain-key-query", "", "insert into cryptokeys (domain_id, flags, active, published, content) select id, $1, $2, $3, $4 from domains where name=$5 returning id"); | |
declare(suffix, "get-last-inserted-key-id-query", "", "select lastval()"); | |
declare(suffix, "list-domain-keys-query", "", "select cryptokeys.id, flags, case when active then 1 else 0 end as active, case when published then 1 else 0 end as published, content from domains, cryptokeys where cryptokeys.domain_id=domains.id and name=$1"); | |
declare(suffix, "get-all-domain-metadata-query", "", "select kind,content from domains, domainmetadata where domainmetadata.domain_id=domains.id and name=$1"); | |
diff --git a/pdns/backends/gsql/gsqlbackend.cc b/pdns/backends/gsql/gsqlbackend.cc | |
index 5f55bd48a..e8d1c41f1 100644 | |
--- a/pdns/backends/gsql/gsqlbackend.cc | |
+++ b/pdns/backends/gsql/gsqlbackend.cc | |
@@ -734,8 +734,15 @@ bool GSQLBackend::addDomainKey(const DNSName& name, const KeyData& key, int64_t& | |
bind("published", key.published)-> | |
bind("content", key.content)-> | |
bind("domain", name)-> | |
- execute()-> | |
- reset(); | |
+ execute(); | |
+ | |
+ if (d_AddDomainKeyQuery_stmt->hasNextRow()) { | |
+ SSqlStatement::row_t row; | |
+ d_AddDomainKeyQuery_stmt->nextRow(row); | |
+ id = std::stoi(row[0]); | |
+ d_AddDomainKeyQuery_stmt->reset(); | |
+ return true; | |
+ } | |
} | |
catch (SSqlException &e) { | |
throw PDNSException("GSQLBackend unable to store key for domain '"+ name.toLogString() + "': "+e.txtReason()); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment