diff --git a/lib/db_ido/dbconnection.hpp b/lib/db_ido/dbconnection.hpp index 715f2bdab..517a8a40e 100644 --- a/lib/db_ido/dbconnection.hpp +++ b/lib/db_ido/dbconnection.hpp @@ -12,9 +12,6 @@ #include #include -#define IDO_CURRENT_SCHEMA_VERSION "1.14.3" -#define IDO_COMPAT_SCHEMA_VERSION "1.14.3" - namespace icinga { @@ -30,6 +27,9 @@ public: static void InitializeDbTimer(); + virtual const char * GetLatestSchemaVersion() const noexcept = 0; + virtual const char * GetCompatSchemaVersion() const noexcept = 0; + void SetConfigHash(const DbObject::Ptr& dbobj, const String& hash); void SetConfigHash(const DbType::Ptr& type, const DbReference& objid, const String& hash); String GetConfigHash(const DbObject::Ptr& dbobj) const; diff --git a/lib/db_ido/idochecktask.cpp b/lib/db_ido/idochecktask.cpp index 66c5076c6..6a7f0d363 100644 --- a/lib/db_ido/idochecktask.cpp +++ b/lib/db_ido/idochecktask.cpp @@ -140,9 +140,9 @@ void IdoCheckTask::ScriptFunc(const Checkable::Ptr& checkable, const CheckResult String schema_version = conn->GetSchemaVersion(); std::ostringstream msgbuf; - if (Utility::CompareVersion(IDO_CURRENT_SCHEMA_VERSION, schema_version) < 0) { + if (Utility::CompareVersion(conn->GetLatestSchemaVersion(), schema_version) < 0) { msgbuf << "Outdated schema version: '" << schema_version << "'. Latest version: '" - << IDO_CURRENT_SCHEMA_VERSION << "'." + << conn->GetLatestSchemaVersion() << "'." << " Queries per second: " << std::fixed << std::setprecision(3) << qps << " Pending queries: " << std::fixed << std::setprecision(3) << pendingQueries << "."; diff --git a/lib/db_ido_mysql/idomysqlconnection.cpp b/lib/db_ido_mysql/idomysqlconnection.cpp index bd184db27..c5c1f8e28 100644 --- a/lib/db_ido_mysql/idomysqlconnection.cpp +++ b/lib/db_ido_mysql/idomysqlconnection.cpp @@ -21,6 +21,16 @@ using namespace icinga; REGISTER_TYPE(IdoMysqlConnection); REGISTER_STATSFUNCTION(IdoMysqlConnection, &IdoMysqlConnection::StatsFunc); +const char * IdoMysqlConnection::GetLatestSchemaVersion() const noexcept +{ + return "1.15.0"; +} + +const char * IdoMysqlConnection::GetCompatSchemaVersion() const noexcept +{ + return "1.14.3"; +} + void IdoMysqlConnection::OnConfigLoaded() { ObjectImpl::OnConfigLoaded(); @@ -303,13 +313,13 @@ void IdoMysqlConnection::Reconnect() SetSchemaVersion(version); - if (Utility::CompareVersion(IDO_COMPAT_SCHEMA_VERSION, version) < 0) { + if (Utility::CompareVersion(GetCompatSchemaVersion(), version) < 0) { m_Mysql->close(&m_Connection); SetConnected(false); Log(LogCritical, "IdoMysqlConnection") << "Schema version '" << version << "' does not match the required version '" - << IDO_COMPAT_SCHEMA_VERSION << "' (or newer)! Please check the upgrade documentation at " + << GetCompatSchemaVersion() << "' (or newer)! Please check the upgrade documentation at " << "https://icinga.com/docs/icinga2/latest/doc/16-upgrading-icinga-2/#upgrading-mysql-db"; BOOST_THROW_EXCEPTION(std::runtime_error("Schema version mismatch.")); diff --git a/lib/db_ido_mysql/idomysqlconnection.hpp b/lib/db_ido_mysql/idomysqlconnection.hpp index ce0f36f1b..5a5c12008 100644 --- a/lib/db_ido_mysql/idomysqlconnection.hpp +++ b/lib/db_ido_mysql/idomysqlconnection.hpp @@ -37,6 +37,9 @@ public: static void StatsFunc(const Dictionary::Ptr& status, const Array::Ptr& perfdata); + const char * GetLatestSchemaVersion() const noexcept override; + const char * GetCompatSchemaVersion() const noexcept override; + int GetPendingQueryCount() const override; protected: diff --git a/lib/db_ido_mysql/schema/mysql.sql b/lib/db_ido_mysql/schema/mysql.sql index 7f1cce3ca..d75b85aa3 100644 --- a/lib/db_ido_mysql/schema/mysql.sql +++ b/lib/db_ido_mysql/schema/mysql.sql @@ -1660,7 +1660,7 @@ CREATE INDEX idx_comments_remove ON icinga_comments (object_id, entry_time); -- ----------------------------------------- -- set dbversion -- ----------------------------------------- -INSERT INTO icinga_dbversion (name, version, create_time, modify_time) VALUES ('idoutils', '1.14.3', NOW(), NOW()) -ON DUPLICATE KEY UPDATE version='1.14.3', modify_time=NOW(); +INSERT INTO icinga_dbversion (name, version, create_time, modify_time) VALUES ('idoutils', '1.15.0', NOW(), NOW()) +ON DUPLICATE KEY UPDATE version='1.15.0', modify_time=NOW(); diff --git a/lib/db_ido_pgsql/idopgsqlconnection.cpp b/lib/db_ido_pgsql/idopgsqlconnection.cpp index 452343d7c..a2a5c4531 100644 --- a/lib/db_ido_pgsql/idopgsqlconnection.cpp +++ b/lib/db_ido_pgsql/idopgsqlconnection.cpp @@ -23,6 +23,16 @@ REGISTER_TYPE(IdoPgsqlConnection); REGISTER_STATSFUNCTION(IdoPgsqlConnection, &IdoPgsqlConnection::StatsFunc); +const char * IdoPgsqlConnection::GetLatestSchemaVersion() const noexcept +{ + return "1.14.3"; +} + +const char * IdoPgsqlConnection::GetCompatSchemaVersion() const noexcept +{ + return "1.14.3"; +} + IdoPgsqlConnection::IdoPgsqlConnection() { m_QueryQueue.SetName("IdoPgsqlConnection, " + GetName()); @@ -270,13 +280,13 @@ void IdoPgsqlConnection::Reconnect() SetSchemaVersion(version); - if (Utility::CompareVersion(IDO_COMPAT_SCHEMA_VERSION, version) < 0) { + if (Utility::CompareVersion(GetCompatSchemaVersion(), version) < 0) { m_Pgsql->finish(m_Connection); SetConnected(false); Log(LogCritical, "IdoPgsqlConnection") << "Schema version '" << version << "' does not match the required version '" - << IDO_COMPAT_SCHEMA_VERSION << "' (or newer)! Please check the upgrade documentation at " + << GetCompatSchemaVersion() << "' (or newer)! Please check the upgrade documentation at " << "https://icinga.com/docs/icinga2/latest/doc/16-upgrading-icinga-2/#upgrading-postgresql-db"; BOOST_THROW_EXCEPTION(std::runtime_error("Schema version mismatch.")); diff --git a/lib/db_ido_pgsql/idopgsqlconnection.hpp b/lib/db_ido_pgsql/idopgsqlconnection.hpp index 77bfe74c3..dc06a9384 100644 --- a/lib/db_ido_pgsql/idopgsqlconnection.hpp +++ b/lib/db_ido_pgsql/idopgsqlconnection.hpp @@ -30,6 +30,9 @@ public: static void StatsFunc(const Dictionary::Ptr& status, const Array::Ptr& perfdata); + const char * GetLatestSchemaVersion() const noexcept override; + const char * GetCompatSchemaVersion() const noexcept override; + int GetPendingQueryCount() const override; protected: