mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
MDEV-28910 remove the 5.5.5- version hack
no longer needed, MySQL replication was fixed meanwhile. client code still can recognize and strip the prefix though.
This commit is contained in:
parent
986d39c3f5
commit
6252a281b5
5 changed files with 4 additions and 32 deletions
|
@ -41,27 +41,6 @@
|
||||||
#define MYSQL50_TABLE_NAME_PREFIX_LENGTH (sizeof(MYSQL50_TABLE_NAME_PREFIX)-1)
|
#define MYSQL50_TABLE_NAME_PREFIX_LENGTH (sizeof(MYSQL50_TABLE_NAME_PREFIX)-1)
|
||||||
#define SAFE_NAME_LEN (NAME_LEN + MYSQL50_TABLE_NAME_PREFIX_LENGTH)
|
#define SAFE_NAME_LEN (NAME_LEN + MYSQL50_TABLE_NAME_PREFIX_LENGTH)
|
||||||
|
|
||||||
/*
|
|
||||||
MDEV-4088
|
|
||||||
|
|
||||||
MySQL (and MariaDB 5.x before the fix) was using the first character of the
|
|
||||||
server version string (as sent in the first handshake protocol packet) to
|
|
||||||
decide on the replication event formats. And for 10.x the first character
|
|
||||||
is "1", which the slave thought comes from some ancient 1.x version
|
|
||||||
(ignoring the fact that the first ever MySQL version was 3.x).
|
|
||||||
|
|
||||||
To support replication to these old clients, we fake the version in the
|
|
||||||
first handshake protocol packet to start from "5.5.5-" (for example,
|
|
||||||
it might be "5.5.5-10.0.1-MariaDB-debug-log".
|
|
||||||
|
|
||||||
On the client side we remove this fake version prefix to restore the
|
|
||||||
correct server version. The version "5.5.5" did not support
|
|
||||||
pluggable authentication, so any version starting from "5.5.5-" and
|
|
||||||
claiming to support pluggable auth, must be using this fake prefix.
|
|
||||||
*/
|
|
||||||
/* this version must be the one that *does not* support pluggable auth */
|
|
||||||
#define RPL_VERSION_HACK "5.5.5-"
|
|
||||||
|
|
||||||
#define SERVER_VERSION_LENGTH 60
|
#define SERVER_VERSION_LENGTH 60
|
||||||
#define SQLSTATE_LENGTH 5
|
#define SQLSTATE_LENGTH 5
|
||||||
#define LIST_PROCESS_HOST_LEN 64
|
#define LIST_PROCESS_HOST_LEN 64
|
||||||
|
|
|
@ -3070,9 +3070,10 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||||
mysql->port=port;
|
mysql->port=port;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
remove the rpl hack from the version string,
|
remove the rpl hack from the version string, in case we're connecting
|
||||||
see RPL_VERSION_HACK comment
|
to a pre-11.0 server
|
||||||
*/
|
*/
|
||||||
|
#define RPL_VERSION_HACK "5.5.5-"
|
||||||
if ((mysql->server_capabilities & CLIENT_PLUGIN_AUTH) &&
|
if ((mysql->server_capabilities & CLIENT_PLUGIN_AUTH) &&
|
||||||
strncmp(mysql->server_version, RPL_VERSION_HACK,
|
strncmp(mysql->server_version, RPL_VERSION_HACK,
|
||||||
sizeof(RPL_VERSION_HACK) - 1) == 0)
|
sizeof(RPL_VERSION_HACK) - 1) == 0)
|
||||||
|
|
|
@ -594,7 +594,6 @@ extern "C" {
|
||||||
char server_version[SERVER_VERSION_LENGTH];
|
char server_version[SERVER_VERSION_LENGTH];
|
||||||
}
|
}
|
||||||
char *server_version_ptr;
|
char *server_version_ptr;
|
||||||
bool using_custom_server_version= false;
|
|
||||||
char *mysqld_unix_port, *opt_mysql_tmpdir;
|
char *mysqld_unix_port, *opt_mysql_tmpdir;
|
||||||
ulong thread_handling;
|
ulong thread_handling;
|
||||||
|
|
||||||
|
@ -8051,7 +8050,6 @@ mysqld_get_one_option(const struct my_option *opt, const char *argument,
|
||||||
strmake(server_version, argument, sizeof(server_version) - 1);
|
strmake(server_version, argument, sizeof(server_version) - 1);
|
||||||
set_sys_var_value_origin(&server_version_ptr,
|
set_sys_var_value_origin(&server_version_ptr,
|
||||||
*filename ? sys_var::CONFIG : sys_var::COMMAND_LINE, filename);
|
*filename ? sys_var::CONFIG : sys_var::COMMAND_LINE, filename);
|
||||||
using_custom_server_version= true;
|
|
||||||
}
|
}
|
||||||
#ifndef EMBEDDED_LIBRARY
|
#ifndef EMBEDDED_LIBRARY
|
||||||
else
|
else
|
||||||
|
|
|
@ -740,7 +740,6 @@ extern const char *mysql_real_data_home_ptr;
|
||||||
extern ulong thread_handling;
|
extern ulong thread_handling;
|
||||||
extern "C" MYSQL_PLUGIN_IMPORT char server_version[SERVER_VERSION_LENGTH];
|
extern "C" MYSQL_PLUGIN_IMPORT char server_version[SERVER_VERSION_LENGTH];
|
||||||
extern char *server_version_ptr;
|
extern char *server_version_ptr;
|
||||||
extern bool using_custom_server_version;
|
|
||||||
extern MYSQL_PLUGIN_IMPORT char mysql_real_data_home[];
|
extern MYSQL_PLUGIN_IMPORT char mysql_real_data_home[];
|
||||||
extern char mysql_unpacked_real_data_home[];
|
extern char mysql_unpacked_real_data_home[];
|
||||||
extern MYSQL_PLUGIN_IMPORT struct system_variables global_system_variables;
|
extern MYSQL_PLUGIN_IMPORT struct system_variables global_system_variables;
|
||||||
|
|
|
@ -13307,12 +13307,7 @@ static bool send_server_handshake_packet(MPVIO_EXT *mpvio,
|
||||||
data_len= SCRAMBLE_LENGTH;
|
data_len= SCRAMBLE_LENGTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* When server version is specified in config file, don't include
|
end= strnmov(end, server_version, SERVER_VERSION_LENGTH) + 1;
|
||||||
the replication hack prefix. */
|
|
||||||
if (using_custom_server_version)
|
|
||||||
end= strnmov(end, server_version, SERVER_VERSION_LENGTH) + 1;
|
|
||||||
else
|
|
||||||
end= strxnmov(end, SERVER_VERSION_LENGTH, RPL_VERSION_HACK, server_version, NullS) + 1;
|
|
||||||
|
|
||||||
int4store((uchar*) end, mpvio->auth_info.thd->thread_id);
|
int4store((uchar*) end, mpvio->auth_info.thd->thread_id);
|
||||||
end+= 4;
|
end+= 4;
|
||||||
|
|
Loading…
Reference in a new issue