mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
alter_table.result, alter_table.test, field_conv.cc:
Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns Fix: use do_conv_blob rather than do_copy_blob if the column's character sets are different. sql/field_conv.cc: Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns Fix: use do_conv_blob rather than do_copy_blob if the column's character sets are different. mysql-test/t/alter_table.test: Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns Fix: use do_conv_blob rather than do_copy_blob if the column's character sets are different. mysql-test/r/alter_table.result: Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns Fix: use do_conv_blob rather than do_copy_blob if the column's character sets are different.
This commit is contained in:
@ -483,3 +483,13 @@ ERROR 42000: Incorrect table name 't1\\'
|
|||||||
rename table t1 to `t1\\`;
|
rename table t1 to `t1\\`;
|
||||||
ERROR 42000: Incorrect table name 't1\\'
|
ERROR 42000: Incorrect table name 't1\\'
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a text) character set koi8r;
|
||||||
|
insert into t1 values (_koi8r'<27><><EFBFBD><EFBFBD>');
|
||||||
|
select hex(a) from t1;
|
||||||
|
hex(a)
|
||||||
|
D4C5D3D4
|
||||||
|
alter table t1 convert to character set cp1251;
|
||||||
|
select hex(a) from t1;
|
||||||
|
hex(a)
|
||||||
|
F2E5F1F2
|
||||||
|
drop table t1;
|
||||||
|
@ -324,3 +324,15 @@ alter table t1 rename to `t1\\`;
|
|||||||
rename table t1 to `t1\\`;
|
rename table t1 to `t1\\`;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns
|
||||||
|
#
|
||||||
|
# The column's character set was changed but the actual data was not
|
||||||
|
# modified. In other words, the values were reinterpreted
|
||||||
|
# as UTF8 instead of being converted.
|
||||||
|
create table t1 (a text) character set koi8r;
|
||||||
|
insert into t1 values (_koi8r'<27><><EFBFBD><EFBFBD>');
|
||||||
|
select hex(a) from t1;
|
||||||
|
alter table t1 convert to character set cp1251;
|
||||||
|
select hex(a) from t1;
|
||||||
|
drop table t1;
|
||||||
|
@ -475,6 +475,8 @@ void (*Copy_field::get_copy_func(Field *to,Field *from))(Copy_field*)
|
|||||||
{
|
{
|
||||||
if (!(from->flags & BLOB_FLAG))
|
if (!(from->flags & BLOB_FLAG))
|
||||||
return do_conv_blob;
|
return do_conv_blob;
|
||||||
|
if (from->charset() != to->charset())
|
||||||
|
return do_conv_blob;
|
||||||
if (from_length != to_length ||
|
if (from_length != to_length ||
|
||||||
to->table->db_low_byte_first != from->table->db_low_byte_first)
|
to->table->db_low_byte_first != from->table->db_low_byte_first)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user