Below is the list of changes that have just been committed into a local
5.0 repository of bar. When bar does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-06-15 11:19:35+05:00, bar@stripped +3 -0
Bug#28862 Extended Latin1 characters get lost in CVS engine
Problem: Temporary buffer which is used for quoting and escaping
was initialized to character set utf8, and thus didn't allow
to store data in other character sets.
Fix: changing character set of the buffer to be able to
store any arbitrary sequence of bytes.
mysql-test/r/csv.result@stripped, 2007-06-15 11:19:33+05:00, bar@stripped +21 -0
Adding test case
mysql-test/t/csv.test@stripped, 2007-06-15 11:19:34+05:00, bar@stripped +18 -0
Adding test case
sql/examples/ha_tina.cc@stripped, 2007-06-15 11:19:34+05:00, bar@stripped +2 -2
Changing character set of the buffer to "binary".
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: bar
# Host: bar.myoffice.izhnet.ru
# Root: /home/bar/mysql-work/mysql-5.0.b28862
--- 1.7/mysql-test/r/csv.result 2006-10-14 22:53:12 +05:00
+++ 1.8/mysql-test/r/csv.result 2007-06-15 11:19:33 +05:00
@@ -5009,3 +5009,24 @@ select * from bug15205;
val
drop table bug15205;
drop table bug15205_2;
+set names latin1;
+create table t1 (
+c varchar(1),
+name varchar(64)
+) character set latin1 engine=csv;
+insert into t1 values (0xC0,'LATIN CAPITAL LETTER A WITH GRAVE');
+insert into t1 values (0xE0,'LATIN SMALL LETTER A WITH GRAVE');
+insert into t1 values (0xEE,'LATIN SMALL LETTER I WITH CIRCUMFLEX');
+insert into t1 values (0xFE,'LATIN SMALL LETTER THORN');
+insert into t1 values (0xF7,'DIVISION SIGN');
+insert into t1 values (0xFF,'LATIN SMALL LETTER Y WITH DIAERESIS');
+select hex(c), c, name from t1 order by 1;
+hex(c) c name
+C0 À LATIN CAPITAL LETTER A WITH GRAVE
+E0 à LATIN SMALL LETTER A WITH GRAVE
+EE î LATIN SMALL LETTER I WITH CIRCUMFLEX
+F7 ÷ DIVISION SIGN
+FE þ LATIN SMALL LETTER THORN
+FF ÿ LATIN SMALL LETTER Y WITH DIAERESIS
+drop table t1;
+End of 5.0 tests
--- 1.10/mysql-test/t/csv.test 2007-02-19 18:46:30 +04:00
+++ 1.11/mysql-test/t/csv.test 2007-06-15 11:19:34 +05:00
@@ -1410,3 +1410,21 @@ select * from bug15205;
drop table bug15205;
drop table bug15205_2;
+#
+# Bug#28862 "Extended Latin1 characters get lost in CVS engine"
+#
+set names latin1;
+create table t1 (
+ c varchar(1),
+ name varchar(64)
+) character set latin1 engine=csv;
+insert into t1 values (0xC0,'LATIN CAPITAL LETTER A WITH GRAVE');
+insert into t1 values (0xE0,'LATIN SMALL LETTER A WITH GRAVE');
+insert into t1 values (0xEE,'LATIN SMALL LETTER I WITH CIRCUMFLEX');
+insert into t1 values (0xFE,'LATIN SMALL LETTER THORN');
+insert into t1 values (0xF7,'DIVISION SIGN');
+insert into t1 values (0xFF,'LATIN SMALL LETTER Y WITH DIAERESIS');
+select hex(c), c, name from t1 order by 1;
+drop table t1;
+
+--echo End of 5.0 tests
--- 1.28/sql/examples/ha_tina.cc 2007-02-03 12:26:08 +04:00
+++ 1.29/sql/examples/ha_tina.cc 2007-06-15 11:19:34 +05:00
@@ -301,7 +301,7 @@ ha_tina::ha_tina(TABLE *table_arg)
chain_size(DEFAULT_CHAIN_LENGTH), records_is_known(0)
{
/* Set our original buffers from pre-allocated memory */
- buffer.set(byte_buffer, IO_SIZE, system_charset_info);
+ buffer.set(byte_buffer, IO_SIZE, &my_charset_bin);
chain= chain_buffer;
}
@@ -447,7 +447,7 @@ int ha_tina::find_current_row(byte *buf)
else
buffer.append(*mapped_ptr);
}
- (*field)->store(buffer.ptr(), buffer.length(), system_charset_info);
+ (*field)->store(buffer.ptr(), buffer.length(), buffer.charset());
}
next_position= (end_ptr - share->mapped_file)+1;
/* Maybe use \N for null? */
| Thread |
|---|
| • bk commit into 5.0 tree (bar:1.2521) BUG#28862 | bar | 15 Jun |