diff options
-rw-r--r-- | mysql-test/r/ctype_many.result | 10 | ||||
-rw-r--r-- | mysql-test/r/ctype_recoding.result | 14 | ||||
-rw-r--r-- | mysql-test/t/ctype_many.test | 10 | ||||
-rw-r--r-- | mysql-test/t/ctype_recoding.test | 6 | ||||
-rw-r--r-- | sql/set_var.cc | 10 | ||||
-rw-r--r-- | sql/sql_db.cc | 1 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 2 |
7 files changed, 27 insertions, 26 deletions
diff --git a/mysql-test/r/ctype_many.result b/mysql-test/r/ctype_many.result index 4d31ab6c274..d6b6429d021 100644 --- a/mysql-test/r/ctype_many.result +++ b/mysql-test/r/ctype_many.result @@ -1,5 +1,5 @@ DROP TABLE IF EXISTS t1; -SET NAMES latin1; +SET CHARACTER SET latin1; CREATE TABLE t1 ( comment CHAR(32) ASCII NOT NULL, koi8_ru_f CHAR(32) CHARACTER SET koi8r NOT NULL @@ -158,7 +158,7 @@ INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'ψ','CYR CAPIT SOFT SIGN'); INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'ό','CYR CAPIT E'); INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'ΰ','CYR CAPIT YU'); INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'ρ','CYR CAPIT YA'); -SET NAMES utf8; +SET CHARACTER SET utf8; SELECT koi8_ru_f,MIN(comment),COUNT(*) FROM t1 GROUP BY 1; koi8_ru_f MIN(comment) COUNT(*) a LAT CAPIT A 2 @@ -221,7 +221,7 @@ z LAT CAPIT Z 2 Ρ CYR CAPIT YA 2 ALTER TABLE t1 ADD utf8_f CHAR(32) CHARACTER SET utf8 NOT NULL; UPDATE t1 SET utf8_f=CONVERT(koi8_ru_f USING utf8); -SET NAMES koi8r; +SET CHARACTER SET koi8r; SELECT * FROM t1; comment koi8_ru_f utf8_f LAT SMALL A a a @@ -1300,7 +1300,7 @@ CYR CAPIT YA CYR CAPIT YA CYR CAPIT YA CYR SMALL YA CYR SMALL YA CYR CAPIT YA CYR SMALL YA CYR SMALL YA -SET NAMES utf8; +SET CHARACTER SET utf8; ALTER TABLE t1 ADD ucs2_f CHAR(32) CHARACTER SET ucs2; ALTER TABLE t1 CHANGE ucs2_f ucs2_f CHAR(32) UNICODE NOT NULL; INSERT INTO t1 (ucs2_f,comment) VALUES (0x0391,'GREEK CAPIT ALPHA'); @@ -1471,7 +1471,7 @@ ARMENIAN SMALL GIM Υ£ Υ£ Υ£ ARMENIAN SMALL DA Υ€ Υ€ Υ€ ARMENIAN SMALL ECH Υ₯ Υ₯ Υ₯ ARMENIAN SMALL ZA Υ¦ Υ¦ Υ¦ -SET NAMES 'binary'; +SET CHARACTER SET 'binary'; SELECT * FROM t1; comment koi8_ru_f utf8_f bin_f ucs2_f armscii8_f greek_f LAT SMALL A a a a diff --git a/mysql-test/r/ctype_recoding.result b/mysql-test/r/ctype_recoding.result index ea4ec8d068c..99e4864bcf6 100644 --- a/mysql-test/r/ctype_recoding.result +++ b/mysql-test/r/ctype_recoding.result @@ -6,16 +6,16 @@ CREATE TABLE ΤΑΒΜΙΓΑ ); SHOW TABLES; Tables_in_test -ΤΑΒΜΙΓΑ +ΡΠ°Π±Π»ΠΈΡΠ° SHOW CREATE TABLE ΤΑΒΜΙΓΑ; Table Create Table -ΤΑΒΜΙΓΑ CREATE TABLE `ΤΑΒΜΙΓΑ` ( - `ΠΟΜΕ` char(32) character set koi8r NOT NULL default '' +ΡΠ°Π±Π»ΠΈΡΠ° CREATE TABLE `ΡΠ°Π±Π»ΠΈΡΠ°` ( + `ΠΏΠΎΠ»Π΅` char(32) character set koi8r NOT NULL default '' ) TYPE=MyISAM CHARSET=latin1 SHOW FIELDS FROM ΤΑΒΜΙΓΑ; Field Type Collation Null Key Default Extra -ΠΟΜΕ char(32) character set koi8r koi8r_general_ci -SET NAMES cp1251; +ΠΏΠΎΠ»Π΅ char(32) character set koi8r koi8r_general_ci +SET CHARACTER SET cp1251; SHOW TABLES; Tables_in_test ςΰαλθφΰ @@ -27,7 +27,7 @@ Table Create Table SHOW FIELDS FROM ςΰαλθφΰ; Field Type Collation Null Key Default Extra οξλε char(32) character set koi8r koi8r_general_ci -SET NAMES utf8; +SET CHARACTER SET utf8; SHOW TABLES; Tables_in_test ΡΠ°Π±Π»ΠΈΡΠ° @@ -39,5 +39,5 @@ Table Create Table SHOW FIELDS FROM ΡΠ°Π±Π»ΠΈΡΠ°; Field Type Collation Null Key Default Extra ΠΏΠΎΠ»Π΅ char(32) character set koi8r koi8r_general_ci -SET NAMES koi8r; +SET CHARACTER SET koi8r; DROP TABLE ΤΑΒΜΙΓΑ; diff --git a/mysql-test/t/ctype_many.test b/mysql-test/t/ctype_many.test index 05f3687d330..8378ef35685 100644 --- a/mysql-test/t/ctype_many.test +++ b/mysql-test/t/ctype_many.test @@ -2,7 +2,7 @@ DROP TABLE IF EXISTS t1; --enable_warnings -SET NAMES latin1; +SET CHARACTER SET latin1; CREATE TABLE t1 ( comment CHAR(32) ASCII NOT NULL, @@ -137,12 +137,12 @@ INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'ό','CYR CAPIT E'); INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'ΰ','CYR CAPIT YU'); INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'ρ','CYR CAPIT YA'); -SET NAMES utf8; +SET CHARACTER SET utf8; SELECT koi8_ru_f,MIN(comment),COUNT(*) FROM t1 GROUP BY 1; ALTER TABLE t1 ADD utf8_f CHAR(32) CHARACTER SET utf8 NOT NULL; UPDATE t1 SET utf8_f=CONVERT(koi8_ru_f USING utf8); -SET NAMES koi8r; +SET CHARACTER SET koi8r; SELECT * FROM t1; ALTER TABLE t1 ADD bin_f CHAR(32) BYTE NOT NULL; @@ -165,7 +165,7 @@ FROM t1 t11,t1 t12 WHERE t11.koi8_ru_f=CONVERT(t12.utf8_f USING koi8r) ORDER BY t12.utf8_f,t11.comment,t12.comment; -SET NAMES utf8; +SET CHARACTER SET utf8; ALTER TABLE t1 ADD ucs2_f CHAR(32) CHARACTER SET ucs2; ALTER TABLE t1 CHANGE ucs2_f ucs2_f CHAR(32) UNICODE NOT NULL; @@ -199,7 +199,7 @@ UPDATE t1 SET armscii8_f=CONVERT(ucs2_f USING armscii8) WHERE comment LIKE _lati UPDATE t1 SET utf8_f=CONVERT(ucs2_f USING utf8) WHERE utf8_f=_utf8''; UPDATE t1 SET ucs2_f=CONVERT(utf8_f USING ucs2) WHERE ucs2_f=_ucs2''; SELECT * FROM t1; -SET NAMES 'binary'; +SET CHARACTER SET 'binary'; SELECT * FROM t1; SELECT min(comment),count(*) FROM t1 GROUP BY ucs2_f; DROP TABLE t1; diff --git a/mysql-test/t/ctype_recoding.test b/mysql-test/t/ctype_recoding.test index c0b7139c791..cb5f4997000 100644 --- a/mysql-test/t/ctype_recoding.test +++ b/mysql-test/t/ctype_recoding.test @@ -13,16 +13,16 @@ SHOW TABLES; SHOW CREATE TABLE ΤΑΒΜΙΓΑ; SHOW FIELDS FROM ΤΑΒΜΙΓΑ; -SET NAMES cp1251; +SET CHARACTER SET cp1251; SHOW TABLES; SHOW CREATE TABLE ςΰαλθφΰ; SHOW FIELDS FROM ςΰαλθφΰ; -SET NAMES utf8; +SET CHARACTER SET utf8; SHOW TABLES; SHOW CREATE TABLE ΡΠ°Π±Π»ΠΈΡΠ°; SHOW FIELDS FROM ΡΠ°Π±Π»ΠΈΡΠ°; -SET NAMES koi8r; +SET CHARACTER SET koi8r; DROP TABLE ΤΑΒΜΙΓΑ; diff --git a/sql/set_var.cc b/sql/set_var.cc index ddebf47a25d..b5094e6403a 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1237,7 +1237,7 @@ void sys_var_client_collation::set_default(THD *thd, enum_var_type type) global_system_variables.client_collation= default_charset_info; else { - thd->variables.client_collation= thd->db_charset; + thd->variables.client_collation= global_system_variables.client_collation; } } @@ -1264,7 +1264,7 @@ void sys_var_literal_collation::set_default(THD *thd, enum_var_type type) if (type == OPT_GLOBAL) global_system_variables.literal_collation= default_charset_info; else - thd->variables.literal_collation= thd->db_charset; + thd->variables.literal_collation= global_system_variables.literal_collation; } @@ -1274,7 +1274,8 @@ void sys_var_literal_collation::set_default(THD *thd, enum_var_type type) int set_var_client_collation::check(THD *thd) { - client_charset= client_charset ? client_charset : thd->db_charset; + client_charset= client_charset ? + client_charset : global_system_variables.client_collation; client_collation= client_collation ? client_collation : client_charset; if (!my_charset_same(client_charset, client_collation)) { @@ -1288,7 +1289,8 @@ int set_var_client_collation::check(THD *thd) int set_var_client_collation::update(THD *thd) { thd->variables.client_collation= client_collation; - thd->variables.literal_collation= client_collation; + thd->variables.literal_collation= convert_result_charset ? + thd->db_charset: client_collation; thd->variables.convert_result_charset= convert_result_charset; thd->protocol_simple.init(thd); thd->protocol_prep.init(thd); diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 903fcce6350..fe8a945bff8 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -602,7 +602,6 @@ bool mysql_change_db(THD *thd, const char *name) strmov(path+unpack_dirname(path,path), MY_DB_OPT_FILE); load_db_opt(path, &create); thd->db_charset= create.table_charset ? create.table_charset : default_charset_info; - thd->variables.client_collation=thd->db_charset ? thd->db_charset : default_charset_info; DBUG_RETURN(0); } diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index a8c02bf86f2..bb6e445bfc2 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -4411,7 +4411,7 @@ option_value: | NAMES_SYM charset_name_or_default opt_collate { LEX *lex= Lex; - lex->var_list.push_back(new set_var_client_collation($2,$3,1)); + lex->var_list.push_back(new set_var_client_collation($2,$3,0)); } | PASSWORD equal text_or_password { |