Skip to content

Commit 5b76d98

Browse files
committed
This is an automated cherry-pick of pingcap#61080
Signed-off-by: ti-chi-bot <[email protected]> Signed-off-by: xhe <[email protected]>
1 parent 5840bb8 commit 5b76d98

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

cmd/explaintest/r/new_character_set.result

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,14 @@ set @@character_set_connection=gbk;
9191
select hex('一a'), '一a';
9292
hex('涓?') 涓?
9393
E4B83F 涓?
94+
set character_set_results = "gbk";
95+
select cast(0x414141E280A9424242 as char charset utf8mb4);
96+
cast(0x414141E280A9424242 as char charset utf8mb4)
97+
AAA?BBB
98+
SET character_set_results = @undefined_var;
99+
create table t61085 (a char(255) charset gbk);
100+
insert into t61085 values ('AAA');
101+
set SESSION sql_mode = '';
102+
select * from t61085 where a = cast(0x41414180424242 as char charset gbk);
103+
Error 1105: Cannot convert string 'AAA\x80BB...' from binary to gbk
104+
DROP TABLE t61085;

cmd/explaintest/t/new_character_set.test

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,14 @@ set names utf8mb4;
6767
set @@character_set_client=gbk;
6868
set @@character_set_connection=gbk;
6969
select hex('一a'), '一a';
70+
71+
-- Bug#61085: https://github.com/pingcap/tidb/issues/61085 should replace instead of truncation for result charset
72+
set character_set_results = "gbk";
73+
select cast(0x414141E280A9424242 as char charset utf8mb4);
74+
SET character_set_results = @undefined_var;
75+
create table t61085 (a char(255) charset gbk);
76+
insert into t61085 values ('AAA');
77+
set SESSION sql_mode = '';
78+
--error 1105
79+
select * from t61085 where a = cast(0x41414180424242 as char charset gbk);
80+
DROP TABLE t61085;

server/util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ func (d *resultEncoder) encodeData(src []byte) []byte {
385385
}
386386

387387
func (d *resultEncoder) encodeWith(src []byte, enc charset.Encoding) []byte {
388-
data, err := enc.Transform(d.buffer, src, charset.OpEncode)
388+
data, err := enc.Transform(d.buffer, src, charset.OpEncodeReplace)
389389
if err != nil {
390390
logutil.BgLogger().Debug("encode error", zap.Error(err))
391391
}

0 commit comments

Comments
 (0)