From 557a108940c3485ea8c1e788934995527314fc42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Wed, 25 Mar 2020 15:33:15 +0200 Subject: [PATCH] MXS-2943: Add ColumnStore-as-a-plugin support The version of the ColumnStore that is distributed as a plugin with MariaDB is now correctly detected. --- server/modules/monitor/csmon/csmon.cc | 32 +++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/server/modules/monitor/csmon/csmon.cc b/server/modules/monitor/csmon/csmon.cc index 472c79f7a..7eb95d169 100644 --- a/server/modules/monitor/csmon/csmon.cc +++ b/server/modules/monitor/csmon/csmon.cc @@ -63,17 +63,31 @@ int get_cs_version(MonitorServer* srv) std::string result = do_query(srv, "SELECT @@version_comment"); auto pos = result.find(prefix); + auto to_version = [](std::string str) { + std::istringstream os(str); + int major = 0, minor = 0, patch = 0; + char dot; + os >> major; + os >> dot; + os >> minor; + os >> dot; + os >> patch; + return major * 10000 + minor * 100 + patch; + }; + if (pos != std::string::npos) { - std::istringstream os(result.substr(pos + prefix.length())); - int major = 0, minor = 0, patch = 0; - char dot; - os >> major; - os >> dot; - os >> minor; - os >> dot; - os >> patch; - rval = major * 10000 + minor * 100 + patch; + rval = to_version(result.substr(pos + prefix.length())); + } + else + { + auto cs_version = do_query(srv, "SELECT VARIABLE_VALUE FROM information_schema.GLOBAL_STATUS " + "WHERE VARIABLE_NAME = 'Columnstore_version'"); + + if (!cs_version.empty()) + { + rval = to_version(result.substr(pos + prefix.length())); + } } return rval;