Skip to content

Commit 2cdc21d

Browse files
author
bar@bar.mysql.r18.ru
committed
SET NAMES doesn't start recoding
SET CHARACTER SET does
1 parent 06febc8 commit 2cdc21d

File tree

7 files changed

+27
-26
lines changed

7 files changed

+27
-26
lines changed

mysql-test/r/ctype_many.result

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
DROP TABLE IF EXISTS t1;
2-
SET NAMES latin1;
2+
SET CHARACTER SET latin1;
33
CREATE TABLE t1 (
44
comment CHAR(32) ASCII NOT NULL,
55
koi8_ru_f CHAR(32) CHARACTER SET koi8r NOT NULL
@@ -158,7 +158,7 @@ INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'
158158
INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'�','CYR CAPIT E');
159159
INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'�','CYR CAPIT YU');
160160
INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'�','CYR CAPIT YA');
161-
SET NAMES utf8;
161+
SET CHARACTER SET utf8;
162162
SELECT koi8_ru_f,MIN(comment),COUNT(*) FROM t1 GROUP BY 1;
163163
koi8_ru_f MIN(comment) COUNT(*)
164164
a LAT CAPIT A 2
@@ -221,7 +221,7 @@ z LAT CAPIT Z 2
221221
я CYR CAPIT YA 2
222222
ALTER TABLE t1 ADD utf8_f CHAR(32) CHARACTER SET utf8 NOT NULL;
223223
UPDATE t1 SET utf8_f=CONVERT(koi8_ru_f USING utf8);
224-
SET NAMES koi8r;
224+
SET CHARACTER SET koi8r;
225225
SELECT * FROM t1;
226226
comment koi8_ru_f utf8_f
227227
LAT SMALL A a a
@@ -1300,7 +1300,7 @@ CYR CAPIT YA CYR CAPIT YA
13001300
CYR CAPIT YA CYR SMALL YA
13011301
CYR SMALL YA CYR CAPIT YA
13021302
CYR SMALL YA CYR SMALL YA
1303-
SET NAMES utf8;
1303+
SET CHARACTER SET utf8;
13041304
ALTER TABLE t1 ADD ucs2_f CHAR(32) CHARACTER SET ucs2;
13051305
ALTER TABLE t1 CHANGE ucs2_f ucs2_f CHAR(32) UNICODE NOT NULL;
13061306
INSERT INTO t1 (ucs2_f,comment) VALUES (0x0391,'GREEK CAPIT ALPHA');
@@ -1471,7 +1471,7 @@ ARMENIAN SMALL GIM գ գ գ
14711471
ARMENIAN SMALL DA դ դ դ
14721472
ARMENIAN SMALL ECH ե ե ե
14731473
ARMENIAN SMALL ZA զ զ զ
1474-
SET NAMES 'binary';
1474+
SET CHARACTER SET 'binary';
14751475
SELECT * FROM t1;
14761476
comment koi8_ru_f utf8_f bin_f ucs2_f armscii8_f greek_f
14771477
LAT SMALL A a a a a

mysql-test/r/ctype_recoding.result

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ CREATE TABLE
66
);
77
SHOW TABLES;
88
Tables_in_test
9-
�������
9+
таблица
1010
SHOW CREATE TABLE �������;
1111
Table Create Table
12-
������� CREATE TABLE `�������` (
13-
`����` char(32) character set koi8r NOT NULL default ''
12+
таблица CREATE TABLE `таблица` (
13+
`поле` char(32) character set koi8r NOT NULL default ''
1414
) TYPE=MyISAM CHARSET=latin1
1515
SHOW FIELDS FROM �������;
1616
Field Type Collation Null Key Default Extra
17-
���� char(32) character set koi8r koi8r_general_ci
18-
SET NAMES cp1251;
17+
поле char(32) character set koi8r koi8r_general_ci
18+
SET CHARACTER SET cp1251;
1919
SHOW TABLES;
2020
Tables_in_test
2121
�������
@@ -27,7 +27,7 @@ Table Create Table
2727
SHOW FIELDS FROM �������;
2828
Field Type Collation Null Key Default Extra
2929
���� char(32) character set koi8r koi8r_general_ci
30-
SET NAMES utf8;
30+
SET CHARACTER SET utf8;
3131
SHOW TABLES;
3232
Tables_in_test
3333
таблица
@@ -39,5 +39,5 @@ Table Create Table
3939
SHOW FIELDS FROM таблица;
4040
Field Type Collation Null Key Default Extra
4141
поле char(32) character set koi8r koi8r_general_ci
42-
SET NAMES koi8r;
42+
SET CHARACTER SET koi8r;
4343
DROP TABLE �������;

mysql-test/t/ctype_many.test

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
DROP TABLE IF EXISTS t1;
33
--enable_warnings
44

5-
SET NAMES latin1;
5+
SET CHARACTER SET latin1;
66

77
CREATE TABLE t1 (
88
comment CHAR(32) ASCII NOT NULL,
@@ -137,12 +137,12 @@ INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'
137137
INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'�','CYR CAPIT YU');
138138
INSERT INTO t1 (koi8_ru_f,comment) VALUES (_koi8r'�','CYR CAPIT YA');
139139

140-
SET NAMES utf8;
140+
SET CHARACTER SET utf8;
141141
SELECT koi8_ru_f,MIN(comment),COUNT(*) FROM t1 GROUP BY 1;
142142

143143
ALTER TABLE t1 ADD utf8_f CHAR(32) CHARACTER SET utf8 NOT NULL;
144144
UPDATE t1 SET utf8_f=CONVERT(koi8_ru_f USING utf8);
145-
SET NAMES koi8r;
145+
SET CHARACTER SET koi8r;
146146
SELECT * FROM t1;
147147

148148
ALTER TABLE t1 ADD bin_f CHAR(32) BYTE NOT NULL;
@@ -165,7 +165,7 @@ FROM t1 t11,t1 t12
165165
WHERE t11.koi8_ru_f=CONVERT(t12.utf8_f USING koi8r)
166166
ORDER BY t12.utf8_f,t11.comment,t12.comment;
167167

168-
SET NAMES utf8;
168+
SET CHARACTER SET utf8;
169169
ALTER TABLE t1 ADD ucs2_f CHAR(32) CHARACTER SET ucs2;
170170
ALTER TABLE t1 CHANGE ucs2_f ucs2_f CHAR(32) UNICODE NOT NULL;
171171

@@ -199,7 +199,7 @@ UPDATE t1 SET armscii8_f=CONVERT(ucs2_f USING armscii8) WHERE comment LIKE _lati
199199
UPDATE t1 SET utf8_f=CONVERT(ucs2_f USING utf8) WHERE utf8_f=_utf8'';
200200
UPDATE t1 SET ucs2_f=CONVERT(utf8_f USING ucs2) WHERE ucs2_f=_ucs2'';
201201
SELECT * FROM t1;
202-
SET NAMES 'binary';
202+
SET CHARACTER SET 'binary';
203203
SELECT * FROM t1;
204204
SELECT min(comment),count(*) FROM t1 GROUP BY ucs2_f;
205205
DROP TABLE t1;

mysql-test/t/ctype_recoding.test

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ SHOW TABLES;
1313
SHOW CREATE TABLE �������;
1414
SHOW FIELDS FROM �������;
1515

16-
SET NAMES cp1251;
16+
SET CHARACTER SET cp1251;
1717
SHOW TABLES;
1818
SHOW CREATE TABLE �������;
1919
SHOW FIELDS FROM �������;
2020

2121

22-
SET NAMES utf8;
22+
SET CHARACTER SET utf8;
2323
SHOW TABLES;
2424
SHOW CREATE TABLE таблица;
2525
SHOW FIELDS FROM таблица;
2626

27-
SET NAMES koi8r;
27+
SET CHARACTER SET koi8r;
2828
DROP TABLE �������;

sql/set_var.cc

+6-4
Original file line numberDiff line numberDiff line change
@@ -1237,7 +1237,7 @@ void sys_var_client_collation::set_default(THD *thd, enum_var_type type)
12371237
global_system_variables.client_collation= default_charset_info;
12381238
else
12391239
{
1240-
thd->variables.client_collation= thd->db_charset;
1240+
thd->variables.client_collation= global_system_variables.client_collation;
12411241
}
12421242
}
12431243

@@ -1264,7 +1264,7 @@ void sys_var_literal_collation::set_default(THD *thd, enum_var_type type)
12641264
if (type == OPT_GLOBAL)
12651265
global_system_variables.literal_collation= default_charset_info;
12661266
else
1267-
thd->variables.literal_collation= thd->db_charset;
1267+
thd->variables.literal_collation= global_system_variables.literal_collation;
12681268
}
12691269

12701270

@@ -1274,7 +1274,8 @@ void sys_var_literal_collation::set_default(THD *thd, enum_var_type type)
12741274

12751275
int set_var_client_collation::check(THD *thd)
12761276
{
1277-
client_charset= client_charset ? client_charset : thd->db_charset;
1277+
client_charset= client_charset ?
1278+
client_charset : global_system_variables.client_collation;
12781279
client_collation= client_collation ? client_collation : client_charset;
12791280
if (!my_charset_same(client_charset, client_collation))
12801281
{
@@ -1288,7 +1289,8 @@ int set_var_client_collation::check(THD *thd)
12881289
int set_var_client_collation::update(THD *thd)
12891290
{
12901291
thd->variables.client_collation= client_collation;
1291-
thd->variables.literal_collation= client_collation;
1292+
thd->variables.literal_collation= convert_result_charset ?
1293+
thd->db_charset: client_collation;
12921294
thd->variables.convert_result_charset= convert_result_charset;
12931295
thd->protocol_simple.init(thd);
12941296
thd->protocol_prep.init(thd);

sql/sql_db.cc

-1
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,6 @@ bool mysql_change_db(THD *thd, const char *name)
602602
strmov(path+unpack_dirname(path,path), MY_DB_OPT_FILE);
603603
load_db_opt(path, &create);
604604
thd->db_charset= create.table_charset ? create.table_charset : default_charset_info;
605-
thd->variables.client_collation=thd->db_charset ? thd->db_charset : default_charset_info;
606605
DBUG_RETURN(0);
607606
}
608607

sql/sql_yacc.yy

+1-1
Original file line numberDiff line numberDiff line change
@@ -4411,7 +4411,7 @@ option_value:
44114411
| NAMES_SYM charset_name_or_default opt_collate
44124412
{
44134413
LEX *lex= Lex;
4414-
lex->var_list.push_back(new set_var_client_collation($2,$3,1));
4414+
lex->var_list.push_back(new set_var_client_collation($2,$3,0));
44154415
}
44164416
| PASSWORD equal text_or_password
44174417
{

0 commit comments

Comments
 (0)