MXS-1249: Server version stored as uint64_t value

That allows the version to be updated and read atomically. If
major/minor/patch are stored as separate variables, you can get an
inconsistent set. Now it may be out of date by the time it is used,
but it will never be internally inconsistent.
This commit is contained in:
Johan Wikman
2017-06-19 14:52:47 +03:00
parent 4e73aecdef
commit 997416ab82
5 changed files with 56 additions and 48 deletions

View File

@ -288,16 +288,12 @@ mxs_mysql_name_kind_t mxs_mysql_name_to_pcre(char *pcre,
void mxs_mysql_set_server_version(MYSQL* mysql, SERVER* server)
{
const char* s = mysql_get_server_info(mysql);
const char* version_string = mysql_get_server_info(mysql);
if (s)
if (version_string)
{
unsigned long v = mysql_get_server_version(mysql);
unsigned long version = mysql_get_server_version(mysql);
unsigned long major = v / 10000;
unsigned long minor = (v - major * 10000) / 100;
unsigned long patch = v - major * 10000 - minor * 100;
server_set_version(server, s, major, minor, patch);
server_set_version(server, version_string, version);
}
}