Use the backend server charset
The default character set should be copied from the server so that MaxScale appears to be the same. This fixes problems where utf8mb4 couldn't be taken into use because MaxScale would always send latin1 as the server charset.
This commit is contained in:
@ -2612,6 +2612,11 @@ static bool check_server_permissions(SERVICE *service, SERVER* server,
|
||||
return my_errno != ER_ACCESS_DENIED_ERROR;
|
||||
}
|
||||
|
||||
/** Copy the server charset */
|
||||
MY_CHARSET_INFO cs_info;
|
||||
mysql_get_character_set_info(mysql, &cs_info);
|
||||
server->charset = cs_info.number;
|
||||
|
||||
if (server->server_string == NULL)
|
||||
{
|
||||
const char *server_string = mysql_get_server_info(mysql);
|
||||
|
@ -44,6 +44,9 @@
|
||||
#include <log_manager.h>
|
||||
#include <gw_ssl.h>
|
||||
|
||||
/** The latin1 charset */
|
||||
#define SERVER_DEFAULT_CHARSET 0x08
|
||||
|
||||
static SPINLOCK server_spin = SPINLOCK_INIT;
|
||||
static SERVER *allServers = NULL;
|
||||
|
||||
@ -89,6 +92,7 @@ server_alloc(char *servname, char *protocol, unsigned short port)
|
||||
server->persistmaxtime = 0;
|
||||
server->persistpoolmax = 0;
|
||||
server->slave_configured = false;
|
||||
server->charset = SERVER_DEFAULT_CHARSET;
|
||||
spinlock_init(&server->persistlock);
|
||||
|
||||
spinlock_acquire(&server_spin);
|
||||
|
Reference in New Issue
Block a user