diff --git a/server/core/dbusers.c b/server/core/dbusers.c index 0ebd8f8cd..04d4b8f04 100644 --- a/server/core/dbusers.c +++ b/server/core/dbusers.c @@ -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); diff --git a/server/core/server.c b/server/core/server.c index a29198791..8de58eb5d 100644 --- a/server/core/server.c +++ b/server/core/server.c @@ -44,6 +44,9 @@ #include #include +/** 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); diff --git a/server/include/server.h b/server/include/server.h index 5dfe79cfc..674a19370 100644 --- a/server/include/server.h +++ b/server/include/server.h @@ -109,6 +109,7 @@ typedef struct server long persistpoolmax; /**< Maximum size of persistent connections pool */ long persistmaxtime; /**< Maximum number of seconds connection can live */ int persistmax; /**< Maximum pool size actually achieved since startup */ + uint8_t charset; /**< Default server character set */ #if defined(SS_DEBUG) skygw_chk_t server_chk_tail; #endif diff --git a/server/modules/protocol/mysql_client.c b/server/modules/protocol/mysql_client.c index e7663308d..0146e819e 100644 --- a/server/modules/protocol/mysql_client.c +++ b/server/modules/protocol/mysql_client.c @@ -277,6 +277,11 @@ int MySQLSendHandshake(DCB* dcb) int len_version_string = 0; int id_num; + if (dcb->service->dbref) + { + mysql_server_language = dcb->service->dbref->server->charset; + } + MySQLProtocol *protocol = DCB_PROTOCOL(dcb, MySQLProtocol); GWBUF *buf;