" get_hashed_prev_next(:zoneid, :hash, :unhashed, :prev, :next);\n"
"END;";
+static const char *getAllZoneMetadataQueryKey = "PDNS_Get_All_Zone_Metadata";
+static const char *getAllZoneMetadataQueryDefaultSQL =
+ "SELECT md.meta_key, md.meta_content "
+ "FROM Zones z JOIN ZoneMetadata md ON z.id = md.zone_id "
+ "WHERE z.name = lower(:name)"
+ "ORDER BY md.meta_ind";
+
static const char *getZoneMetadataQueryKey = "PDNS_Get_Zone_Metadata";
static const char *getZoneMetadataQueryDefaultSQL =
"SELECT md.meta_content "
return true;
}
+bool
+OracleBackend::getAllDomainMetadata (const string& name, std::map<string, vector<string> >& meta)
+{
+ if(!d_dnssecQueries)
+ return -1;
+
+ DomainInfo di;
+ if (getDomainInfo(name, di) == false) return false;
+
+ sword rc;
+ OCIStmt *stmt;
+
+ stmt = prepare_query(pooledSvcCtx, getAllZoneMetadataQuerySQL, getAllZoneMetadataQueryKey);
+ bind_str_failokay(stmt, ":nsname", myServerName, sizeof(myServerName));
+ bind_str(stmt, ":name", mQueryName, sizeof(mQueryName));
+ define_output_str(stmt, 1, &mResultContentInd, mResultContent, sizeof(mResultContent));
+
+ string_to_cbuf(mQueryName, name, sizeof(mQueryName));
+
+ rc = OCIStmtExecute(pooledSvcCtx, stmt, oraerr, 1, 0, NULL, NULL, OCI_DEFAULT);
+
+ while (rc != OCI_NO_DATA) {
+ if (rc == OCI_ERROR) {
+ throw OracleException("Oracle getAllDomainMetadata", oraerr);
+ }
+ check_indicator(mResultKindInd, true);
+ check_indicator(mResultContentInd, true);
+
+ string kind = mResultKind;
+ string content = mResultContent;
+ meta[kind].push_back(content);
+
+ rc = OCIStmtFetch2(stmt, oraerr, 1, OCI_FETCH_NEXT, 0, OCI_DEFAULT);
+ }
+
+ release_query(stmt, getAllZoneMetadataQueryKey);
+ return true;
+}
+
bool
OracleBackend::getDomainMetadata (const string& name, const string& kind,
vector<string>& meta)
bool createSlaveDomain(const string &ip, const string &domain,
const string &nameserver, const string &account);
+ bool getAllDomainMetadata(const string& name, std::map<std::string, std::vector<std::string> >& meta);
bool getDomainMetadata(const string& name, const std::string& kind, std::vector<std::string>& meta);
bool setDomainMetadata(const string& name, const std::string& kind, const std::vector<std::string>& meta);
string prevNextNameQuerySQL;
string prevNextHashQuerySQL;
+ string getAllZoneMetadataQuerySQL;
string getZoneMetadataQuerySQL;
string delZoneMetadataQuerySQL;
string setZoneMetadataQuerySQL;
sb2 mResultTTLInd;
char mResultType[64];
sb2 mResultTypeInd;
+ char mResultKind[64];
+ sb2 mResultKindInd;
char mResultContent[4001];
sb2 mResultContentInd;
int mResultZoneId;