[MDEV-16261] server collation in initial handshake packet doesn't change after changing character_set_server Created: 2018-05-23  Updated: 2023-04-27

Status: Confirmed
Project: MariaDB Server
Component/s: Server
Affects Version/s: 5.5, 10.0, 10.1, 10.2, 10.3
Fix Version/s: 10.4

Type: Bug Priority: Major
Reporter: Georg Richter Assignee: Oleksandr Byelkin
Resolution: Unresolved Votes: 0
Labels: None


 Description   

After setting the global variable character_set_server to utf16, the server collation in initial handshake packet (sent from server to client) is sending old collation.

static int test_server_language(MYSQL *unused __attribute__((unused)))
{
  MYSQL *mysql= mysql_init(NULL);
  MYSQL_RES *res;
  MYSQL_ROW row;
 
  if (!mysql_real_connect(mysql, hostname, username, password, schema, port, socketname, 0))
  {
    diag("Connection failed. Error: %s", mysql_error(mysql));
    mysql_close(mysql);
    return FAIL;
  }
 
  mysql_query(mysql, "SET global character_set_server=utf16");
 
  mysql_query(mysql, "SELECT @@character_set_server");
 
  res= mysql_store_result(mysql);
  row= mysql_fetch_row(res);
 
  diag("character_set_server=%s", row[0]);
  diag("server collation in initial handshake packet=%d", mysql->server_language);
  mysql_free_result(res);
 
  mysql_close(mysql);
 
  diag("-- New connection --");
  mysql= mysql_init(NULL);
  if (!mysql_real_connect(mysql, hostname, username, password, schema, port, socketname, 0))
  {
    diag("Connection failed. Error: %s", mysql_error(mysql));
    mysql_close(mysql);
    return FAIL;
  }
 
  mysql_query(mysql, "SELECT @@character_set_server");
 
  res= mysql_store_result(mysql);
  row= mysql_fetch_row(res);
 
  diag("character_set_server=%s", row[0]);
  diag("server collation in initial handshake packet=%d", mysql->server_language);
  mysql_free_result(res);
 
  mysql_close(mysql);
  return OK;
}

Output (Server was started with character_set_server=latin1):

# character_set_server=latin1
# server collation in initial handshake packet=8
# -- New connection --
# character_set_server=utf16
# server collation in initial handshake packet=8


Generated at Thu Feb 08 08:27:35 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.