diff options
author | petr@mysql.com <> | 2006-02-10 03:35:07 +0300 |
---|---|---|
committer | petr@mysql.com <> | 2006-02-10 03:35:07 +0300 |
commit | 8488498545a109affd83dd99b8f79e96245baec9 (patch) | |
tree | c9dc6a0d1d49261bdc304f29814b85fe7d7aa473 /server-tools/instance-manager | |
parent | 01ef1d13f854157b7912e4f1bf8d945e7af49776 (diff) | |
download | mariadb-git-8488498545a109affd83dd99b8f79e96245baec9.tar.gz |
IM changes by GUI team: add a version_no column to the
SHOW INSTANCE STATUS output
Diffstat (limited to 'server-tools/instance-manager')
-rw-r--r-- | server-tools/instance-manager/commands.cc | 46 | ||||
-rw-r--r-- | server-tools/instance-manager/instance_options.cc | 9 |
2 files changed, 50 insertions, 5 deletions
diff --git a/server-tools/instance-manager/commands.cc b/server-tools/instance-manager/commands.cc index b4dd1b469f1..cde0f784f39 100644 --- a/server-tools/instance-manager/commands.cc +++ b/server-tools/instance-manager/commands.cc @@ -25,6 +25,7 @@ #include "options.h" #include <m_string.h> +#include <m_ctype.h> #include <mysql.h> #include <my_dir.h> @@ -62,6 +63,31 @@ static inline int put_to_buff(Buffer *buff, const char *str, uint *position) } +static int parse_version_number(const char *version_str, char *version, + uint version_size) +{ + const char *start= version_str; + const char *end; + + // skip garbage + while (!my_isdigit(default_charset_info, *start)) + start++; + + end= start; + // skip digits and dots + while (my_isdigit(default_charset_info, *end) || *end == '.') + end++; + + if ((uint)(end - start) >= version_size) + return -1; + + strncpy(version, start, end-start); + version[end-start]= '\0'; + + return 0; +} + + /* implementation for Show_instances: */ @@ -174,9 +200,10 @@ int Show_instance_status::execute(struct st_net *net, { enum { MAX_VERSION_LENGTH= 40 }; Buffer send_buff; /* buffer for packets */ - LIST name, status, version; + LIST name, status, version, version_number; LIST *field_list; - NAME_WITH_LENGTH name_field, status_field, version_field; + NAME_WITH_LENGTH name_field, status_field, version_field, + version_number_field; uint position=0; if (!instance_name) @@ -192,7 +219,11 @@ int Show_instance_status::execute(struct st_net *net, version_field.name= (char*) "version"; version_field.length= MAX_VERSION_LENGTH; version.data= &version_field; + version_number_field.name= (char*) "version_number"; + version_number_field.length= MAX_VERSION_LENGTH; + version_number.data= &version_number_field; field_list= list_add(NULL, &version); + field_list= list_add(field_list, &version_number); field_list= list_add(field_list, &status); field_list= list_add(field_list, &name); @@ -210,10 +241,21 @@ int Show_instance_status::execute(struct st_net *net, store_to_protocol_packet(&send_buff, (char*) "offline", &position); if (instance->options.mysqld_version) + { + char parsed_version[MAX_VERSION_LENGTH]; + + parse_version_number(instance->options.mysqld_version, parsed_version, + sizeof(parsed_version)); + store_to_protocol_packet(&send_buff, parsed_version, &position); + store_to_protocol_packet(&send_buff, instance->options.mysqld_version, &position); + } else + { store_to_protocol_packet(&send_buff, (char*) "unknown", &position); + store_to_protocol_packet(&send_buff, (char*) "unknown", &position); + } if (send_buff.is_error() || diff --git a/server-tools/instance-manager/instance_options.cc b/server-tools/instance-manager/instance_options.cc index 83f13b34aa2..d2946270b9e 100644 --- a/server-tools/instance-manager/instance_options.cc +++ b/server-tools/instance-manager/instance_options.cc @@ -138,9 +138,14 @@ int Instance_options::fill_instance_version() if (*result != '\0') { + char *start; /* chop the newline from the end of the version string */ result[strlen(result) - NEWLINE_LEN]= '\0'; - mysqld_version= strdup_root(&alloc, result); + /* trim leading whitespaces */ + start= result; + while (my_isspace(default_charset_info, *start)) + ++start; + mysqld_version= strdup_root(&alloc, start); } err: return rc; @@ -167,8 +172,6 @@ err: int Instance_options::fill_log_options() { Buffer buff; - uint position= 0; - char **tmp_argv= argv; enum { MAX_LOG_OPTION_LENGTH= 256 }; char datadir[MAX_LOG_OPTION_LENGTH]; char hostname[MAX_LOG_OPTION_LENGTH]; |