summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbar@mysql.com <>2004-08-19 11:59:33 +0500
committerbar@mysql.com <>2004-08-19 11:59:33 +0500
commit7f92905954b94ac17d0775f2e06b04f7db0cc949 (patch)
tree9747318c80887ffa3c93f999b16dee054c87c437
parent3f75d2bd3eff347f105e1eea11c7395376e6d005 (diff)
downloadmariadb-git-7f92905954b94ac17d0775f2e06b04f7db0cc949.tar.gz
Bug#5081: UCS2 fields are filled with '0x2020' after extending field length
-rw-r--r--mysql-test/r/ctype_ucs.result10
-rw-r--r--mysql-test/t/ctype_ucs.test11
-rw-r--r--sql/field_conv.cc4
3 files changed, 24 insertions, 1 deletions
diff --git a/mysql-test/r/ctype_ucs.result b/mysql-test/r/ctype_ucs.result
index 811696ef052..1d3deb0b09a 100644
--- a/mysql-test/r/ctype_ucs.result
+++ b/mysql-test/r/ctype_ucs.result
@@ -470,3 +470,13 @@ select s1 from t1 where s1 > 'a' order by s1;
s1
b
c
+drop table t1;
+create table t1(a char(1)) default charset = ucs2;
+insert into t1 values ('a'),('b'),('c');
+alter table t1 modify a char(5);
+select a, hex(a) from t1;
+a hex(a)
+a 0061
+b 0062
+c 0063
+drop table t1;
diff --git a/mysql-test/t/ctype_ucs.test b/mysql-test/t/ctype_ucs.test
index 188ef571f7e..d9ef91496e9 100644
--- a/mysql-test/t/ctype_ucs.test
+++ b/mysql-test/t/ctype_ucs.test
@@ -303,4 +303,15 @@ DROP TABLE t1;
create table t1 (s1 char character set `ucs2` collate `ucs2_czech_ci`);
insert into t1 values ('0'),('1'),('2'),('a'),('b'),('c');
select s1 from t1 where s1 > 'a' order by s1;
+drop table t1;
+
+#
+# Bug #5081 : UCS2 fields are filled with '0x2020'
+# after extending field length
+#
+create table t1(a char(1)) default charset = ucs2;
+insert into t1 values ('a'),('b'),('c');
+alter table t1 modify a char(5);
+select a, hex(a) from t1;
+drop table t1;
diff --git a/sql/field_conv.cc b/sql/field_conv.cc
index e98068ef974..d7993939092 100644
--- a/sql/field_conv.cc
+++ b/sql/field_conv.cc
@@ -340,8 +340,10 @@ static void do_cut_string(Copy_field *copy)
static void do_expand_string(Copy_field *copy)
{
+ CHARSET_INFO *cs= copy->from_field->charset();
memcpy(copy->to_ptr,copy->from_ptr,copy->from_length);
- bfill(copy->to_ptr+copy->from_length,copy->to_length-copy->from_length,' ');
+ cs->cset->fill(cs, copy->to_ptr+copy->from_length,
+ copy->to_length-copy->from_length, ' ');
}
static void do_varstring(Copy_field *copy)