From: Tomek Mrugalski Date: Thu, 1 Jul 2021 14:23:03 +0000 (+0200) Subject: [#1848] Small fixes in PgSqlConfigBackendImpl X-Git-Tag: Kea-2.1.1~63 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=219117f5aa021599cfee478ab7e6640dc0ba3164;p=thirdparty%2Fkea.git [#1848] Small fixes in PgSqlConfigBackendImpl --- diff --git a/src/hooks/dhcp/pgsql_cb/pgsql_cb_impl.cc b/src/hooks/dhcp/pgsql_cb/pgsql_cb_impl.cc index 70ed23fe0b..433aaf8903 100644 --- a/src/hooks/dhcp/pgsql_cb/pgsql_cb_impl.cc +++ b/src/hooks/dhcp/pgsql_cb/pgsql_cb_impl.cc @@ -71,41 +71,45 @@ PgSqlConfigBackendImpl::~PgSqlConfigBackendImpl() { /// will take care of releasing the compiled statements and similar. } -#if 0 PsqlBindArrayPtr PgSqlConfigBackendImpl::createBinding(const Triplet& triplet) { PsqlBindArrayPtr bind(new PsqlBindArray()); +#if 0 if (triplet.unspecified()) { bind->addNull(); } else { bind->add(triplet.get()); } +#endif return (bind); } PsqlBindArrayPtr PgSqlConfigBackendImpl::createMinBinding(const Triplet& triplet) { PsqlBindArrayPtr bind(new PsqlBindArray()); +#if 0 if (triplet.unspecified() || (triplet.getMin() == triplet.get())) { bind->addNull(); } else { bind->add(triplet.getMin()); } +#endif return (bind); } PsqlBindArrayPtr PgSqlConfigBackendImpl::createMaxBinding(const Triplet& triplet) { PsqlBindArrayPtr bind(new PsqlBindArray()); +#if 0 if (triplet.unspecified() || (triplet.getMax() == triplet.get())) { bind->addNull(); } else { bind->add(triplet.getMax()); } +#endif return (bind); } -#endif /* Triplet PgSqlConfigBackendImpl::createTriplet(const PsqlBindArrayPtr& binding) { @@ -212,6 +216,15 @@ PgSqlConfigBackendImpl::deleteFromTable(const int index, return (deleteFromTable(index, server_selector, operation, in_bindings)); } +uint64_t +PgSqlConfigBackendImpl::deleteFromTable(const int index, + const db::ServerSelector& server_selector, + const std::string& operation, + db::PsqlBindArray& bindings) { + isc_throw(NotImplemented, "todo"); +} + + void PgSqlConfigBackendImpl::getGlobalParameters(const int index, const PsqlBindArray& in_bindings, diff --git a/src/hooks/dhcp/pgsql_cb/pgsql_cb_impl.h b/src/hooks/dhcp/pgsql_cb/pgsql_cb_impl.h index aad7b57887..57a114fa5f 100644 --- a/src/hooks/dhcp/pgsql_cb/pgsql_cb_impl.h +++ b/src/hooks/dhcp/pgsql_cb/pgsql_cb_impl.h @@ -115,16 +115,37 @@ public: virtual ~PgSqlConfigBackendImpl(); /// @todo: implement condCreateInteger(const util::Optional& value) -#if 0 static db::PsqlBindArrayPtr createBinding(const Triplet& triplet); static db::PsqlBindArrayPtr createMaxBinding(const Triplet& triplet); static db::PsqlBindArrayPtr createMinBinding(const Triplet& triplet); +#if 0 static Triplet createTriplet(const db::PsqlBindArrayPtr& binding); static Triplet createTriplet(const db::PsqlBindArrayPtr& def_binding, const db::PsqlBindArrayPtr& min_binding, const db::PsqlBindArrayPtr& max_binding); #endif + + /// @brief Returns server tag associated with the particular selector. + /// + /// This method expects that there is exactly one server tag associated with + /// the server selector. + /// + /// @param server_selector Server selector. + /// @param operation Operation which results in calling this function. This is + /// used for error reporting purposes. + /// @return Server tag. + /// @throw InvalidOperation if the server selector is unassigned or if there + /// is more than one server tag associated with the selector. std::string getServerTag(const db::ServerSelector& server_selector, - const std::string& operation ); + const std::string& operation) const { + auto tags = server_selector.getTags(); + if (tags.size() != 1) { + isc_throw(InvalidOperation, "expected exactly one server tag to be specified" + " while " << operation << ". Got: " + << getServerTagsAsText(server_selector)); + } + + return (tags.begin()->get()); + } /// @brief Returns server tags associated with the particular selector /// as text. @@ -143,8 +164,6 @@ public: return (s.str()); } - - /// @brief Invokes the corresponding stored procedure in MySQL. /// /// The @c createAuditRevision stored procedure creates new audit