1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-10 23:02:54 +03:00
Files
mariadb/mysql-test/suite/sys_vars/r/character_set_client_basic.result
Alexander Barkov a923d6f49c MDEV-28769 Assertion `(m_ci->state & 32) || m_with_collate' failed in Lex_exact_charset_opt_extended_collate::Lex_exact_charset_opt_extended_collate on SET NAMES
These system variables:
  @@character_set_client
  @@character_set_connection
  @@character_set_database
  @@character_set_filesystem
  @@character_set_results
  @@character_set_server

can now be set in numeric format only to IDs of default collations, e.g.:

SET @@character_set_xxx=9;  -- OK    (latin2_general_ci  is default)
SET @@character_set_xxx=2;  -- ERROR (latin2_czech_cs is not default)
SET @@character_set_xxx=21; -- ERROR (latin2_hungarian_ci is not default)

Before this change the server accepted IDs of non-default collations
so all three examples above worked without errors,
but this could lead to unexpected behavior in later statements.
2022-06-16 10:38:35 +04:00

505 lines
15 KiB
Plaintext
Raw Blame History

SET @global_start_value = @@global.character_set_client;
SET @@global.character_set_client=@@character_set_client;
SET @session_start_value = @@character_set_client;
SELECT @session_start_value;
@session_start_value
latin1
SET @session_start_value = @@local.character_set_client;
SELECT @session_start_value;
@session_start_value
latin1
SET @session_start_value = @@session.character_set_client;
SELECT @session_start_value;
@session_start_value
latin1
'#--------------------FN_DYNVARS_010_01------------------#'
SELECT character_set_client;
ERROR 42S22: Unknown column 'character_set_client' in 'field list'
SET character_set_client=utf8;
SELECT @@session.character_set_client;
@@session.character_set_client
utf8mb3
SET session character_set_client=utf8;
SELECT session character_set_client;
ERROR 42S22: Unknown column 'session' in 'field list'
SET global character_set_client=utf8;
SELECT global character_set_client;
ERROR 42S22: Unknown column 'global' in 'field list'
'#--------------------FN_DYNVARS_010_02-------------------------#'
SET @@character_set_client = latin5;
SET @@character_set_client = DEFAULT;
SELECT @@character_set_client = @@global.character_set_client;
@@character_set_client = @@global.character_set_client
1
SET @@global.character_set_client = latin5;
SET @@global.character_set_client = DEFAULT;
SELECT @@global.character_set_client= @global_start_value;
@@global.character_set_client= @global_start_value
1
'#--------------------FN_DYNVARS_010_03-------------------------#'
SET @@session.character_set_client = utf8;
SELECT @@session.character_set_client;
@@session.character_set_client
utf8mb3
SET @@global.character_set_client = latin2;
SELECT @@global.character_set_client;
@@global.character_set_client
latin2
SELECT @@session.character_set_client AS res_is_utf8;
res_is_utf8
utf8mb3
SET @@session.character_set_client = latin5;
SELECT @@session.character_set_client;
@@session.character_set_client
latin5
SELECT @@global.character_set_client AS res_is_latin2;
res_is_latin2
latin2
SELECT @@global.character_set_client=@@session.character_set_client
AS res_is_false;
res_is_false
0
'#--------------------FN_DYNVARS_010_04-------------------------#'
SELECT @@character_set_client = @@session.character_set_client AS res;
res
1
SELECT @@character_set_client = @@local.character_set_client AS res;
res
1
'#--------------------FN_DYNVARS_010_05-------------------------#'
SET @@character_set_client = utf8 + latin2;
ERROR 42S22: Unknown column 'utf8' in 'field list'
'#--------------------FN_DYNVARS_010_06-------------------------#'
SET @@character_set_client = big5;
SELECT @@character_set_client;
@@character_set_client
big5
SET @@character_set_client = dec8;
SELECT @@character_set_client;
@@character_set_client
dec8
SET @@character_set_client = cp850;
SELECT @@character_set_client;
@@character_set_client
cp850
SET @@character_set_client = hp8;
SELECT @@character_set_client;
@@character_set_client
hp8
SET @@character_set_client = koi8r;
SELECT @@character_set_client;
@@character_set_client
koi8r
SET @@character_set_client = latin1;
SELECT @@character_set_client;
@@character_set_client
latin1
SET @@character_set_client = latin2;
SELECT @@character_set_client;
@@character_set_client
latin2
SET @@character_set_client = swe7;
SELECT @@character_set_client;
<EFBFBD><EFBFBD>character_set_client
swe7
SET @@character_set_client = ascii;
SELECT @@character_set_client;
@@character_set_client
ascii
SET @@character_set_client = ujis;
SELECT @@character_set_client;
@@character_set_client
ujis
SET @@character_set_client = sjis;
SELECT @@character_set_client;
@@character_set_client
sjis
SET @@character_set_client = hebrew;
SELECT @@character_set_client;
@@character_set_client
hebrew
SET @@character_set_client = tis620;
SELECT @@character_set_client;
@@character_set_client
tis620
SET @@character_set_client = euckr;
SELECT @@character_set_client;
@@character_set_client
euckr
SET @@character_set_client = koi8u;
SELECT @@character_set_client;
@@character_set_client
koi8u
SET @@character_set_client = gb2312;
SELECT @@character_set_client;
@@character_set_client
gb2312
SET @@character_set_client = greek;
SELECT @@character_set_client;
@@character_set_client
greek
SET @@character_set_client = cp1250;
SELECT @@character_set_client;
@@character_set_client
cp1250
SET @@character_set_client = gbk;
SELECT @@character_set_client;
@@character_set_client
gbk
SET @@character_set_client = latin5;
SELECT @@character_set_client;
@@character_set_client
latin5
SET @@character_set_client = armscii8;
SELECT @@character_set_client;
@@character_set_client
armscii8
SET @@character_set_client = utf8;
SELECT @@character_set_client;
@@character_set_client
utf8mb3
SET @@character_set_client = utf8mb4;
SELECT @@character_set_client;
@@character_set_client
utf8mb4
SET @@character_set_client = ucs2;
ERROR 42000: Variable 'character_set_client' can't be set to the value of 'ucs2'
SET @@character_set_client = utf16;
ERROR 42000: Variable 'character_set_client' can't be set to the value of 'utf16'
SET @@character_set_client = utf32;
ERROR 42000: Variable 'character_set_client' can't be set to the value of 'utf32'
SET @@character_set_client = cp866;
SELECT @@character_set_client;
@@character_set_client
cp866
SET @@character_set_client = keybcs2;
SELECT @@character_set_client;
@@character_set_client
keybcs2
SET @@character_set_client = macce;
SELECT @@character_set_client;
@@character_set_client
macce
SET @@character_set_client = macroman;
SELECT @@character_set_client;
@@character_set_client
macroman
SET @@character_set_client = cp852;
SELECT @@character_set_client;
@@character_set_client
cp852
SET @@character_set_client = latin7;
SELECT @@character_set_client;
@@character_set_client
latin7
SET @@character_set_client = cp1251;
SELECT @@character_set_client;
@@character_set_client
cp1251
SET @@character_set_client = cp1256;
SELECT @@character_set_client;
@@character_set_client
cp1256
SET @@character_set_client = cp1257;
SELECT @@character_set_client;
@@character_set_client
cp1257
SET @@character_set_client = binary;
SELECT @@character_set_client;
@@character_set_client
binary
SET @@character_set_client = geostd8;
SELECT @@character_set_client;
@@character_set_client
geostd8
SET @@character_set_client = cp932;
SELECT @@character_set_client;
@@character_set_client
cp932
SET @@character_set_client = eucjpms;
SELECT @@character_set_client;
@@character_set_client
eucjpms
'#--------------------FN_DYNVARS_010_07-------------------------#'
SET @@global.character_set_client = big5;
SELECT @@global.character_set_client;
@@global.character_set_client
big5
SET @@global.character_set_client = dec8;
SELECT @@global.character_set_client;
@@global.character_set_client
dec8
SET @@global.character_set_client = cp850;
SELECT @@global.character_set_client;
@@global.character_set_client
cp850
SET @@global.character_set_client = hp8;
SELECT @@global.character_set_client;
@@global.character_set_client
hp8
SET @@global.character_set_client = koi8r;
SELECT @@global.character_set_client;
@@global.character_set_client
koi8r
SET @@global.character_set_client = latin1;
SELECT @@global.character_set_client;
@@global.character_set_client
latin1
SET @@global.character_set_client = latin2;
SELECT @@global.character_set_client;
@@global.character_set_client
latin2
SET @@global.character_set_client = swe7;
SELECT @@global.character_set_client;
@@global.character_set_client
swe7
SET @@global.character_set_client = ascii;
SELECT @@global.character_set_client;
@@global.character_set_client
ascii
SET @@global.character_set_client = ujis;
SELECT @@global.character_set_client;
@@global.character_set_client
ujis
SET @@global.character_set_client = sjis;
SELECT @@global.character_set_client;
@@global.character_set_client
sjis
SET @@global.character_set_client = hebrew;
SELECT @@global.character_set_client;
@@global.character_set_client
hebrew
SET @@global.character_set_client = tis620;
SELECT @@global.character_set_client;
@@global.character_set_client
tis620
SET @@global.character_set_client = euckr;
SELECT @@global.character_set_client;
@@global.character_set_client
euckr
SET @@global.character_set_client = koi8u;
SELECT @@global.character_set_client;
@@global.character_set_client
koi8u
SET @@global.character_set_client = gb2312;
SELECT @@global.character_set_client;
@@global.character_set_client
gb2312
SET @@global.character_set_client = greek;
SELECT @@global.character_set_client;
@@global.character_set_client
greek
SET @@global.character_set_client = cp1250;
SELECT @@global.character_set_client;
@@global.character_set_client
cp1250
SET @@global.character_set_client = gbk;
SELECT @@global.character_set_client;
@@global.character_set_client
gbk
SET @@global.character_set_client = latin5;
SELECT @@global.character_set_client;
@@global.character_set_client
latin5
SET @@global.character_set_client = armscii8;
SELECT @@global.character_set_client;
@@global.character_set_client
armscii8
SET @@global.character_set_client = utf8;
SELECT @@global.character_set_client;
@@global.character_set_client
utf8mb3
SET @@global.character_set_client = ucs2;
SELECT @@global.character_set_client;
@@global.character_set_client
utf8mb3
SET @@global.character_set_client = cp866;
SELECT @@global.character_set_client;
@@global.character_set_client
cp866
SET @@global.character_set_client = keybcs2;
SELECT @@global.character_set_client;
@@global.character_set_client
keybcs2
SET @@global.character_set_client = macce;
SELECT @@global.character_set_client;
@@global.character_set_client
macce
SET @@global.character_set_client = macroman;
SELECT @@global.character_set_client;
@@global.character_set_client
macroman
SET @@global.character_set_client = cp852;
SELECT @@global.character_set_client;
@@global.character_set_client
cp852
SET @@global.character_set_client = latin7;
SELECT @@global.character_set_client;
@@global.character_set_client
latin7
SET @@global.character_set_client = cp1251;
SELECT @@global.character_set_client;
@@global.character_set_client
cp1251
SET @@global.character_set_client = cp1256;
SELECT @@global.character_set_client;
@@global.character_set_client
cp1256
SET @@global.character_set_client = cp1257;
SELECT @@global.character_set_client;
@@global.character_set_client
cp1257
SET @@global.character_set_client = binary;
SELECT @@global.character_set_client;
@@global.character_set_client
binary
SET @@global.character_set_client = geostd8;
SELECT @@global.character_set_client;
@@global.character_set_client
geostd8
SET @@global.character_set_client = cp932;
SELECT @@global.character_set_client;
@@global.character_set_client
cp932
SET @@global.character_set_client = eucjpms;
SELECT @@global.character_set_client;
@@global.character_set_client
eucjpms
'#--------------------FN_DYNVARS_010_08-------------------------#'
SET @@character_set_client = UTF8;
SELECT @@character_set_client;
@@character_set_client
utf8mb3
SET @@character_set_client = utf8;
SELECT @@character_set_client;
@@character_set_client
utf8mb3
SET @@global.character_set_client = uTf8;
SELECT @@global.character_set_client;
@@global.character_set_client
utf8mb3
'#--------------------FN_DYNVARS_010_09-------------------------#'
SET @@character_set_client = 1;
SELECT @@character_set_client;
@@character_set_client
big5
# latin2_czech_cs is not a default collation
SET @@character_set_client = 2;
ERROR 42000: Unknown character set: '2'
SET @@character_set_client = 3;
SELECT @@character_set_client;
@@character_set_client
dec8
SET @@character_set_client = 36;
SELECT @@character_set_client;
@@character_set_client
cp866
# cp1250_polish_ci is not a default collation
SET @@character_set_client = 99;
ERROR 42000: Unknown character set: '99'
# Collation ID 100 does not exist
SET @@character_set_client = 100;
ERROR 42000: Unknown character set: '100'
SET @@global.character_set_client = 1;
SELECT @@global.character_set_client;
@@global.character_set_client
big5
# latin2_czech_cs is not a default collation
SET @@global.character_set_client = 2;
ERROR 42000: Unknown character set: '2'
SET @@global.character_set_client = 3;
SELECT @@global.character_set_client;
@@global.character_set_client
dec8
SET @@global.character_set_client = 36;
SELECT @@global.character_set_client;
@@global.character_set_client
cp866
# cp1250_polish_ci is not a default collation
SET @@global.character_set_client = 99;
ERROR 42000: Unknown character set: '99'
# Collation ID 100 does not exist
SET @@global.character_set_client = 100;
ERROR 42000: Unknown character set: '100'
SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS);
SELECT @total_charset;
@total_charset
40
'#--------------------FN_DYNVARS_010_10-------------------------#'
SET @@character_set_client = abc;
ERROR 42000: Unknown character set: 'abc'
SET @@character_set_client = 1utf8;
ERROR 42000: Unknown character set: '1utf8'
SET @@character_set_client = 0;
ERROR 42000: Unknown character set: '0'
SET @@character_set_client = 1.1;
ERROR 42000: Incorrect argument type to variable 'character_set_client'
SET @@character_set_client = -1;
ERROR 42000: Unknown character set: '-1'
SET @@character_set_client = '';
ERROR 42000: Unknown character set: ''
SET @@character_set_client = 'utf';
ERROR 42000: Unknown character set: 'utf'
SET @@character_set_client = true;
SELECT @@character_set_client AS res_with_true;
res_with_true
big5
SET @@character_set_client = ON;
ERROR 42000: Unknown character set: 'ON'
'#--------------------FN_DYNVARS_010_11-------------------------#'
SET @@global.character_set_client = abc;
ERROR 42000: Unknown character set: 'abc'
SET @@global.character_set_client = 1utf8;
ERROR 42000: Unknown character set: '1utf8'
SET @@global.character_set_client = 0;
ERROR 42000: Unknown character set: '0'
SET @@global.character_set_client = 1.1;
ERROR 42000: Incorrect argument type to variable 'character_set_client'
SET @@global.character_set_client = -1;
ERROR 42000: Unknown character set: '-1'
SET @@global.character_set_client = '';
ERROR 42000: Unknown character set: ''
SET @@global.character_set_client = 'utf';
ERROR 42000: Unknown character set: 'utf'
SET @@global.character_set_client = true;
SET @@global.character_set_client = ON;
ERROR 42000: Unknown character set: 'ON'
'#--------------------FN_DYNVARS_010_12-------------------------#'
SELECT @@global.character_set_client =
(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='character_set_client') AS res;
res
1
SET @@global.character_set_client = 1;
SELECT @@global.character_set_client;
@@global.character_set_client
big5
SELECT @@global.character_set_client =
(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='character_set_client') AS res;
res
1
'#--------------------FN_DYNVARS_010_13-------------------------#'
SELECT @@character_set_client =
(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='character_set_client') AS res;
res
1
SELECT @@local.character_set_client =
(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='character_set_client') AS res;
res
1
SELECT @@session.character_set_client =
(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES
WHERE VARIABLE_NAME='character_set_client') AS res;
res
1
#
# MDEV-28769 Assertion `(m_ci->state & 32) || m_with_collate' failed in Lex_exact_charset_opt_extended_collate::Lex_exact_charset_opt_extended_collate on SET NAMES
#
SET GLOBAL character_set_client=2;
ERROR 42000: Unknown character set: '2'
SET @@global.character_set_client = @global_start_value;
SET @@session.character_set_client = @session_start_value;