mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
New syntax to change client collation:
SET COLLATION latin1 SET COLLATION 'latin1' SET COLLATION DEFAULT
This commit is contained in:
@ -511,16 +511,55 @@ SHOW FIELDS FROM t1;
|
||||
Field Type Collation Null Key Default Extra
|
||||
latin1_f char(32) latin1_bin YES NULL
|
||||
SET NAMES 'latin1';
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
Variable_name Value
|
||||
client_collation latin1
|
||||
SET NAMES latin1;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
Variable_name Value
|
||||
client_collation latin1
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
Variable_name Value
|
||||
client_collation latin1
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
charset('a') collation('a') coercibility('a') 'a'='A'
|
||||
latin1 latin1 2 1
|
||||
SET NAMES latin1 COLLATE latin1_bin;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
Variable_name Value
|
||||
client_collation latin1_bin
|
||||
SET NAMES 'latin1' COLLATE 'latin1_bin';
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
Variable_name Value
|
||||
client_collation latin1_bin
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
charset('a') collation('a') coercibility('a') 'a'='A'
|
||||
latin1 latin1_bin 2 0
|
||||
SET NAMES koi8r;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
Variable_name Value
|
||||
client_collation koi8r
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
charset('a') collation('a') coercibility('a') 'a'='A'
|
||||
koi8r koi8r 2 1
|
||||
SET COLLATION koi8r_bin;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
Variable_name Value
|
||||
client_collation koi8r_bin
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
charset('a') collation('a') coercibility('a') 'a'='A'
|
||||
koi8r koi8r_bin 2 0
|
||||
SET COLLATION DEFAULT;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
Variable_name Value
|
||||
client_collation koi8r
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
charset('a') collation('a') coercibility('a') 'a'='A'
|
||||
koi8r koi8r 2 1
|
||||
SET NAMES DEFAULT;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
Variable_name Value
|
||||
client_collation latin1
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
charset('a') collation('a') coercibility('a') 'a'='A'
|
||||
latin1 latin1 2 1
|
||||
|
@ -128,12 +128,27 @@ SHOW CREATE TABLE t1;
|
||||
SHOW FIELDS FROM t1;
|
||||
|
||||
SET NAMES 'latin1';
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
SET NAMES latin1;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
SET NAMES latin1 COLLATE latin1_bin;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
SET NAMES 'latin1' COLLATE 'latin1_bin';
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
SET NAMES koi8r;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
SET COLLATION koi8r_bin;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
SET COLLATION DEFAULT;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
SET NAMES DEFAULT;
|
||||
SHOW VARIABLES LIKE 'client_collation';
|
||||
SELECT charset('a'),collation('a'),coercibility('a'),'a'='A';
|
||||
--error 1251
|
||||
SET NAMES latin1 COLLATE koi8r;
|
||||
|
@ -4224,7 +4224,6 @@ option_value:
|
||||
{
|
||||
THD* thd= YYTHD;
|
||||
LEX *lex= &thd->lex;
|
||||
system_variables vars= thd->variables;
|
||||
CHARSET_INFO *cs= $2 ? $2 : thd->db_charset;
|
||||
CHARSET_INFO *cl= $3 ? $3 : cs;
|
||||
|
||||
@ -4241,6 +4240,35 @@ option_value:
|
||||
find_sys_var("client_collation"),
|
||||
csname));
|
||||
}
|
||||
| COLLATION_SYM collation_name_or_default
|
||||
{
|
||||
THD* thd= YYTHD;
|
||||
LEX *lex= &thd->lex;
|
||||
system_variables *vars= &thd->variables;
|
||||
CHARSET_INFO *cs= vars->thd_charset;
|
||||
CHARSET_INFO *cl= $2;
|
||||
|
||||
if (!cl)
|
||||
{
|
||||
if (!(cl=get_charset_by_csname(cs->csname,MY_CS_PRIMARY,MYF(0))))
|
||||
{
|
||||
net_printf(YYTHD,ER_UNKNOWN_CHARACTER_SET,"DEFAULT");
|
||||
YYABORT;
|
||||
}
|
||||
}
|
||||
else if ((cl != cs) && strcmp(cs->csname,cl->csname))
|
||||
{
|
||||
net_printf(YYTHD,ER_COLLATION_CHARSET_MISMATCH,
|
||||
cl->name,cs->csname);
|
||||
YYABORT;
|
||||
}
|
||||
Item_string *csname= new Item_string(cl->name,
|
||||
strlen(cl->name),
|
||||
&my_charset_latin1);
|
||||
lex->var_list.push_back(new set_var(lex->option_type,
|
||||
find_sys_var("client_collation"),
|
||||
csname));
|
||||
}
|
||||
| PASSWORD equal text_or_password
|
||||
{
|
||||
THD *thd=YYTHD;
|
||||
|
Reference in New Issue
Block a user